! source file: /Users/nmengis/Documents/UVic_ESCM/2.10.backup/updates/02_CE_permafrost_merge_CMIP6forcing/source/mtlm/microbe.F subroutine MICROBE (POINTS,LAND_PTS,LAND_INDEX, NGND, DZ_GND &, NSOIL, CS_D, STH_SOIL, V_SAT, V_WILT, C_WEIGHT &, TGND, RESP_S, ZTOP, ZBOT, RESP_SD &, RESP_SP, CS_P, KAPSp, AFp, PPtm, AF_Ta &, iAF & ) !----------------------------------------------------------------------- ! Calculates the soil respiration based on a simplified version of the ! model of Raich et al. (1991). !********************************************************************** ! this file is based on code that may have had the following copyright: ! (c) CROWN COPYRIGHT 1997, U.K. METEOROLOGICAL OFFICE. ! Permission has been granted by the authors to the public to copy ! and use this software without charge, provided that this Notice and ! any statement of authorship are reproduced on all copies. Neither the ! Crown nor the U.K. Meteorological Office makes any warranty, express ! or implied, or assumes any liability or responsibility for the use of ! this software. !********************************************************************** !----------------------------------------------------------------------- implicit none ! POINTS = IN Total number of land points. ! LAND_PTS = IN Number of points on which TRIFFID may operate. ! LAND_INDEX = IN Indices of land points on which TRIFFID may operate. integer POINTS, LAND_PTS, LAND_INDEX(POINTS), I, L ! CS = IN Soil carbon (kg C/m2). ! STH_SOIL = IN Top layer soil moisture as a fraction of saturation ! (m3/m3). ! V_SAT = IN Volumetric soil moisture concentration at saturation ! (m3 H2O/m3 soil). ! V_WILT = IN Volumetric soil moisture concentration below which ! stomata close as a fraction of saturation ! (m3 H2O/m3 soil). ! TSOIL = IN Soil temperature (K). ! RESP_S = OUT Soil respiration (kg C/m2/s). ! FSTH,FTEMP = WORK Factors describing the influence of soil moisture ! and soil temperature respectively on soil respiration. ! STH_OPT = WORK Fractional soil moisture at which respiration is ! maximum. ! STH_WILT = WORK Wilting soil moisture as a fraction of saturation. integer NSOIL(POINTS), NGND, N ! CS_D = IN Soil carbon (kg C/m3). ! TRESP = IN Carbon weighted soil temperature (K). ! TGND = IN Soil temperature (K) ! RESP_SD = OUT Soil respiration layer (kg C/m3/s). real CS_D(POINTS,NGND), STH_SOIL(POINTS, NGND) real V_SAT(POINTS,NGND) real V_WILT(POINTS, NGND) real TGND(POINTS, NGND), RESP_S(POINTS), FSTH, FTEMP real STH_OPT, STH_WILT, ZBOT(NGND), ZTOP(NGND) real C_WEIGHT(POINTS,NGND), DZ_GND(NGND), RESP_SD(POINTS,NGND) ! RESP_SP = OUT permafrost carbon respiration layer (kg C/m3/s). ! KAPSp = Specific soil respiration rate at 25 deg and optimum soil ! moisture (/s) for permafrost carbon. ! Q10p = Q10p factor for permafrost carbon respiration. ! pFTEMP = Permafrost FTEMP ! CS_P = Depth varying permafrost carbon density (kg m-3) ! PPtm = passive pool transmutation rate ! AFp = Available fraction permafrost carbon ! AF_Ta = Available fraction transmutation rate real RESP_SP(POINTS,NGND),KAPSp, Q10p,pFTEMP,CS_P(POINTS,NGND) real PPtm, AFp(POINTS,NGND), AF_Ta(POINTS,NGND), iAF parameter (Q10p=2.0) ! Local parameters ! KAPS = Specific soil respiration rate at 25 deg and optimum soil ! moisture (/s). ! Q10 = Q10 factor for soil respiration. real KAPS, Q10 parameter (KAPS=0.35E-8, Q10=2.0) RESP_SD(:,:) = 0. RESP_S(:)=0.0 RESP_SP(:,:) =0. AF_Ta(:,:) =0. do I=1,LAND_PTS L = LAND_INDEX(I) do N=1,NGND if (V_SAT(L,N) .gt. 0.0) then STH_WILT = V_WILT(L,N) / V_SAT(L,N) STH_OPT = 0.5 * (1 + STH_WILT) if (STH_SOIL(L,N) .le. STH_WILT) then FSTH = 0.2 elseif (STH_SOIL(L,N) .gt. STH_WILT .and. & STH_SOIL(L,N) .le. STH_OPT) then FSTH = 0.2 + 0.8*((STH_SOIL(L,N) - STH_WILT) & /(STH_OPT - STH_WILT)) elseif (STH_SOIL(L,N) .gt. STH_OPT) then FSTH = 1 - 0.8 * (STH_SOIL(L,N) - STH_OPT) endif if(TGND(L,N) .ge. 273.15) then FTEMP = Q10 ** (0.1 * (TGND(L,N) - 298.15)) else FTEMP=0.0 endif RESP_SD(L,N) = KAPS* CS_D(L,N) * FSTH * FTEMP if(AFp(L,N) .eq. 0. .and. CS_P(L,N) .gt. 0.)then AFp(L,N)=iAF endif if(TGND(L,N) .ge. 273.15) then pFTEMP = Q10p ** (0.1 * (TGND(L,N) - 298.15)) else pFTEMP=0.0 endif RESP_SP(L,N) = KAPSp* CS_P(L,N)*AFp(L,N) * FSTH * pFTEMP ! AF_Ta(L,N) = PPtm* CS_P(L,N)*(1-AFp(L,N)) * FSTH * pFTEMP else RESP_SD(L,N) = 0. RESP_SP(L,N) = 0.0 endif RESP_S(L)=RESP_S(L)+(RESP_SD(L,N)*DZ_GND(N)) RESP_S(L)=RESP_S(L)+(RESP_SP(L,N)*DZ_GND(N)) enddo enddo return end