*IF DEF,A03_7A SFSTOM7A.2
C *****************************COPYRIGHT****************************** SFSTOM7A.3
C (c) CROWN COPYRIGHT 1997, METEOROLOGICAL OFFICE, All Rights Reserved. SFSTOM7A.4
C SFSTOM7A.5
C Use, duplication or disclosure of this code is subject to the SFSTOM7A.6
C restrictions as set forth in the contract. SFSTOM7A.7
C SFSTOM7A.8
C Meteorological Office SFSTOM7A.9
C London Road SFSTOM7A.10
C BRACKNELL SFSTOM7A.11
C Berkshire UK SFSTOM7A.12
C RG12 2SZ SFSTOM7A.13
C SFSTOM7A.14
C If no contract has been raised with this copy of the code, the use, SFSTOM7A.15
C duplication or disclosure of it is strictly prohibited. Permission SFSTOM7A.16
C to do so must first be obtained in writing from the Head of Numerical SFSTOM7A.17
C Modelling at the above address. SFSTOM7A.18
C ******************************COPYRIGHT****************************** SFSTOM7A.19
!********************************************************************** SFSTOM7A.20
! Routine to calculate the bulk stomatal resistance and the canopy SFSTOM7A.21
! CO2 fluxes SFSTOM7A.22
! SFSTOM7A.23
! Written by Peter Cox (June 1997) SFSTOM7A.24
! Adapted for MOSES II tile model by Richard Essery (July 1997) SFSTOM7A.25
!********************************************************************** SFSTOM7A.26
SUBROUTINE SF_STOM (LAND_FIELD,LAND_INDEX,P_FIELD 3,10SFSTOM7A.27
&, VEG_PTS,VEG_INDEX SFSTOM7A.28
&, FT,CO2,CO2_3D,CO2_DIM,L_CO2_INTERACTIVE ACN1F405.127
&, FSMC,HT,IPAR,LAI,PSTAR ACN1F405.128
&, Q1,RA,TSTAR SFSTOM7A.30
&, GPP,NPP,RESP_P,RESP_W,GC) SFSTOM7A.31
SFSTOM7A.32
SFSTOM7A.33
IMPLICIT NONE SFSTOM7A.34
SFSTOM7A.35
INTEGER SFSTOM7A.36
& LAND_FIELD ! IN Total number of land points. SFSTOM7A.37
&,LAND_INDEX(LAND_FIELD) ! IN Index of land points on the SFSTOM7A.38
! ! P-grid. SFSTOM7A.39
&,P_FIELD ! IN Total number of P-gridpoints. SFSTOM7A.40
&,VEG_PTS ! IN Number of vegetated points. SFSTOM7A.41
&,VEG_INDEX(LAND_FIELD) ! IN Index of vegetated points SFSTOM7A.42
! ! on the land grid. SFSTOM7A.43
&,CO2_DIM ! dimension of CO2 field ACN1F405.129
SFSTOM7A.44
INTEGER SFSTOM7A.45
& FT ! IN Plant functional type. SFSTOM7A.46
LOGICAL L_CO2_INTERACTIVE ! switch for 3D CO2 field ACN1F405.130
SFSTOM7A.47
REAL SFSTOM7A.48
& CO2 ! IN Atmospheric CO2 concentration SFSTOM7A.49
&,CO2_3D(CO2_DIM) ! IN 3D atmos CO2 concentration ACN1F405.131
! ! (kg CO2/kg air). SFSTOM7A.50
&,FSMC(LAND_FIELD) ! IN Soil water factor. SFSTOM7A.51
&,HT(LAND_FIELD) ! IN Canopy height (m). SFSTOM7A.52
&,IPAR(P_FIELD) ! IN Incident PAR (W/m2). SFSTOM7A.53
&,LAI(LAND_FIELD) ! IN Leaf area index. SFSTOM7A.54
&,PSTAR(LAND_FIELD) ! IN Surface pressure (Pa). SFSTOM7A.55
&,Q1(P_FIELD) ! IN Specific humidity of level 1 SFSTOM7A.56
! ! (kg H2O/kg air). SFSTOM7A.57
&,RA(LAND_FIELD) ! IN Aerodynamic resistance (s/m). SFSTOM7A.58
&,TSTAR(LAND_FIELD) ! IN Surface temperature (K). SFSTOM7A.59
&,GPP(LAND_FIELD) ! OUT Gross Primary Productivity SFSTOM7A.60
! ! (kg C/m2/s). SFSTOM7A.61
&,NPP(LAND_FIELD) ! OUT Net Primary Productivity SFSTOM7A.62
! ! (kg C/m2/s). SFSTOM7A.63
&,RESP_P(LAND_FIELD) ! OUT Plant respiration rate SFSTOM7A.64
! ! (kg C/m2/sec). SFSTOM7A.65
&,RESP_W(LAND_FIELD) ! OUT Wood respiration rate SFSTOM7A.66
! ! (kg C/m2/sec). SFSTOM7A.67
&,GC(LAND_FIELD) ! INOUT Canopy resistance to H2O SFSTOM7A.68
! ! (m/s). SFSTOM7A.69
SFSTOM7A.70
REAL SFSTOM7A.71
& ANETC(LAND_FIELD) ! WORK Net canopy photosynthesis SFSTOM7A.72
! ! (mol CO2/m2/s). SFSTOM7A.73
&,CO2C(LAND_FIELD) ! WORK Canopy level CO2 concentration SFSTOM7A.74
! ! (kg CO2/kg air). SFSTOM7A.75
&,CI(LAND_FIELD) ! WORK Internal CO2 pressure (Pa). SFSTOM7A.76
&,DQ(LAND_FIELD) ! WORK Specific humidity deficit SFSTOM7A.77
! ! (kg H2O/kg air). SFSTOM7A.78
&,DQC(LAND_FIELD) ! WORK Canopy level specific humidity SFSTOM7A.79
! ! deficit (kg H2O/kg air). SFSTOM7A.80
&,FPAR(LAND_FIELD) ! WORK PAR absorption factor. SFSTOM7A.81
&,LAI_BAL(LAND_FIELD) ! WORK Leaf area index in balanced SFSTOM7A.82
! ! growth state. SFSTOM7A.83
&,NL(LAND_FIELD) ! WORK Mean leaf nitrogen SFSTOM7A.84
! ! concentration (kg N/kg C). SFSTOM7A.85
&,NL_BAL(LAND_FIELD) ! WORK Mean leaf nitrogen SFSTOM7A.86
! ! concentration in balanced SFSTOM7A.87
! ! growth state (kg N/kg C). SFSTOM7A.88
&,N_LEAF(LAND_FIELD) ! WORK Nitrogen contents of the leaf, SFSTOM7A.89
&,N_ROOT(LAND_FIELD) ! root, SFSTOM7A.90
&,N_STEM(LAND_FIELD) ! and stem (kg N/m2). SFSTOM7A.91
&,QS(LAND_FIELD) ! WORK Saturated specific humidity SFSTOM7A.92
! ! (kg H2O/kg air). SFSTOM7A.93
&,RA_RC(LAND_FIELD) ! WORK Ratio of aerodynamic resistance SFSTOM7A.94
! ! to canopy resistance. SFSTOM7A.95
&,RDC(LAND_FIELD) ! WORK Canopy dark respiration, SFSTOM7A.96
! ! without soil water dependence SFSTOM7A.97
! ! (mol CO2/m2/s). SFSTOM7A.98
&,RESP_P_G(LAND_FIELD) ! WORK Plant growth respiration rate SFSTOM7A.99
! ! (kg C/m2/sec). SFSTOM7A.100
&,RESP_P_M(LAND_FIELD) ! WORK Plant maintenance respiration SFSTOM7A.101
! ! rate (kg C/m2/sec). SFSTOM7A.102
&,ROOT(LAND_FIELD) ! WORK Root carbon (kg C/m2). SFSTOM7A.103
SFSTOM7A.104
INTEGER SFSTOM7A.105
& I,J,K,L ! WORK Loop counters. SFSTOM7A.106
SFSTOM7A.107
!----------------------------------------------------------------------- SFSTOM7A.108
! Parameters SFSTOM7A.109
!----------------------------------------------------------------------- SFSTOM7A.110
REAL SFSTOM7A.111
& RAIR ! Gas constant for dry air (J/kg/K). SFSTOM7A.112
PARAMETER (RAIR = 287.05) SFSTOM7A.113
SFSTOM7A.114
REAL SFSTOM7A.115
& O2 ! Atmospheric concentration of SFSTOM7A.116
! ! oxygen (kg O2/kg air). SFSTOM7A.117
PARAMETER (O2 = 0.23) SFSTOM7A.118
SFSTOM7A.119
INTEGER SFSTOM7A.120
& ITER ! Number of iterations to SFSTOM7A.121
! ! determine the canopy climate. SFSTOM7A.122
PARAMETER (ITER = 1) SFSTOM7A.123
SFSTOM7A.124
*CALL NSTYPES
SFSTOM7A.125
*CALL TRIF
SFSTOM7A.126
SFSTOM7A.127
!----------------------------------------------------------------------- SFSTOM7A.128
! Calculate the surface to level 1 humidity deficit and the surface SFSTOM7A.129
! density of the air SFSTOM7A.130
!----------------------------------------------------------------------- SFSTOM7A.131
CALL QSAT
(QS,TSTAR,PSTAR,LAND_FIELD) SFSTOM7A.132
DO J=1,VEG_PTS SFSTOM7A.133
L = VEG_INDEX(J) SFSTOM7A.134
I = LAND_INDEX(L) SFSTOM7A.135
DQ(L) = MAX(0.0,(QS(L) - Q1(I))) SFSTOM7A.136
ENDDO SFSTOM7A.137
SFSTOM7A.138
!----------------------------------------------------------------------- SFSTOM7A.139
! Calculate the PAR absorption factor SFSTOM7A.140
!----------------------------------------------------------------------- SFSTOM7A.141
DO J=1,VEG_PTS SFSTOM7A.142
L = VEG_INDEX(J) SFSTOM7A.143
SFSTOM7A.144
FPAR(L) = (1 - EXP(-KPAR(FT)*LAI(L))) / KPAR(FT) SFSTOM7A.145
SFSTOM7A.146
ENDDO SFSTOM7A.147
SFSTOM7A.148
SFSTOM7A.149
!----------------------------------------------------------------------- SFSTOM7A.150
! Iterate to ensure that the canopy humidity deficit is consistent with SFSTOM7A.151
! the H2O flux. Ignore the (small) difference between the canopy and SFSTOM7A.152
! reference level CO2 concentration. Intially set the canopy humidity SFSTOM7A.153
! deficit using the previous value of GC. SFSTOM7A.154
!----------------------------------------------------------------------- SFSTOM7A.155
DO K=1,ITER SFSTOM7A.156
SFSTOM7A.157
!----------------------------------------------------------------------- SFSTOM7A.158
! Diagnose the canopy level humidity deficit and CO2 concentration SFSTOM7A.159
!----------------------------------------------------------------------- SFSTOM7A.160
DO J=1,VEG_PTS SFSTOM7A.161
L = VEG_INDEX(J) SFSTOM7A.162
RA_RC(L) = RA(L) * GC(L) SFSTOM7A.163
DQC(L) = DQ(L) / (1 + RA_RC(L)) SFSTOM7A.164
ENDDO SFSTOM7A.166
IF (L_CO2_INTERACTIVE) THEN ACN1F405.132
! use full 3D CO2 field ACN1F405.133
DO J=1,VEG_PTS ACN1F405.134
L = VEG_INDEX(J) ACN1F405.135
I = LAND_INDEX(L) ACN1F405.136
CO2C(L) = CO2_3D(I) ACN1F405.137
ENDDO ACN1F405.138
ELSE ACN1F405.139
! just use single CO2_MMR value ACN1F405.140
DO J=1,VEG_PTS ACN1F405.141
L = VEG_INDEX(J) ACN1F405.142
CO2C(L) = CO2 ACN1F405.143
ENDDO ACN1F405.144
ENDIF ACN1F405.145
SFSTOM7A.167
!----------------------------------------------------------------------- SFSTOM7A.168
! Call CANOPY to calculate the canopy resistance and photosynthesis SFSTOM7A.169
!----------------------------------------------------------------------- SFSTOM7A.170
CALL CANOPY
(LAND_FIELD,LAND_INDEX,P_FIELD SFSTOM7A.171
&, VEG_PTS,VEG_INDEX SFSTOM7A.172
&, FT,DQC,IPAR,TSTAR,CO2C,O2,PSTAR SFSTOM7A.173
&, FPAR,FSMC,LAI SFSTOM7A.174
&, GC,ANETC,CI,RDC) SFSTOM7A.175
SFSTOM7A.176
ENDDO SFSTOM7A.177
SFSTOM7A.178
DO J=1,VEG_PTS SFSTOM7A.179
L = VEG_INDEX(J) SFSTOM7A.180
SFSTOM7A.181
!----------------------------------------------------------------------- SFSTOM7A.182
! Assume that root biomass is equal to balanced growth leaf biomass SFSTOM7A.183
!----------------------------------------------------------------------- SFSTOM7A.184
LAI_BAL(L) = (A_WS(FT)*ETA_SL(FT)*HT(L)/A_WL(FT)) SFSTOM7A.185
& **(1.0/(B_WL(FT)-1)) SFSTOM7A.186
ROOT(L) = SIGL(FT) * LAI_BAL(L) SFSTOM7A.187
SFSTOM7A.188
!----------------------------------------------------------------------- SFSTOM7A.189
! Calculate the actual and balanced mean leaf nitrogen concentration SFSTOM7A.190
! assuming perfect light acclimation SFSTOM7A.191
!----------------------------------------------------------------------- SFSTOM7A.192
NL(L) = (FPAR(L) / LAI(L)) * NL0(FT) SFSTOM7A.193
NL_BAL(L) = (1 - EXP(-KPAR(FT)*LAI_BAL(L))) SFSTOM7A.194
& / (KPAR(FT)*LAI_BAL(L)) * NL0(FT) SFSTOM7A.195
SFSTOM7A.196
!----------------------------------------------------------------------- SFSTOM7A.197
! Calculate the total nitrogen content of the leaf, root and stem SFSTOM7A.198
!----------------------------------------------------------------------- SFSTOM7A.199
N_LEAF(L) = NL(L) * SIGL(FT) * LAI(L) SFSTOM7A.200
N_ROOT(L) = NR_NL(FT) * NL_BAL(L) * ROOT(L) SFSTOM7A.201
N_STEM(L) = NS_NL(FT) * NL_BAL(L) * ETA_SL(FT) * HT(L) * LAI(L) SFSTOM7A.202
SFSTOM7A.203
!----------------------------------------------------------------------- SFSTOM7A.204
! Calculate the Gross Primary Productivity, the plant maintenance SFSTOM7A.205
! respiration rate, and the wood maintenance respiration rate SFSTOM7A.206
! in kg C/m2/sec SFSTOM7A.207
!----------------------------------------------------------------------- SFSTOM7A.208
GPP(L) = 12.0E-3 * (ANETC(L) + RDC(L)*FSMC(L)) SFSTOM7A.209
RESP_P_M(L) = 12.0E-3 * RDC(L) SFSTOM7A.210
& * (N_LEAF(L)*FSMC(L) + N_STEM(L) + N_ROOT(L)) / N_LEAF(L) SFSTOM7A.211
RESP_W(L) = 12.0E-3 * RDC(L) * N_STEM(L) / N_LEAF(L) SFSTOM7A.212
SFSTOM7A.213
!----------------------------------------------------------------------- SFSTOM7A.214
! Calculate the total plant respiration and the Net Primary Productivity SFSTOM7A.215
!----------------------------------------------------------------------- SFSTOM7A.216
RESP_P_G(L) = R_GROW(FT) * (GPP(L) - RESP_P_M(L)) SFSTOM7A.217
RESP_P(L) = RESP_P_M(L) + RESP_P_G(L) SFSTOM7A.218
NPP(L) = GPP(L) - RESP_P(L) SFSTOM7A.219
SFSTOM7A.220
ENDDO SFSTOM7A.221
SFSTOM7A.222
RETURN SFSTOM7A.223
END SFSTOM7A.224
SFSTOM7A.225
!*********************************************************************** SFSTOM7A.226
! Calculates the canopy resistance, net photosynthesis and transpiration SFSTOM7A.227
! by scaling-up the leaf level response using the "Big-Leaf" approach SFSTOM7A.228
! of Sellers et al. (1994) SFSTOM7A.229
! SFSTOM7A.230
! Written by Peter Cox (May 1995) SFSTOM7A.231
!*********************************************************************** SFSTOM7A.232
SUBROUTINE CANOPY (LAND_FIELD,LAND_INDEX,P_FIELD 3,10SFSTOM7A.233
&, VEG_PTS,VEG_INDEX SFSTOM7A.234
&, FT,DQC,IPAR,TSTAR,CO2C,O2,PSTAR SFSTOM7A.235
&, FPAR,FSMC,LAI SFSTOM7A.236
&, GC,ANETC,CI,RDC) SFSTOM7A.237
SFSTOM7A.238
IMPLICIT NONE SFSTOM7A.239
SFSTOM7A.240
INTEGER SFSTOM7A.241
& LAND_FIELD ! IN Total number of land points. SFSTOM7A.242
&,LAND_INDEX(LAND_FIELD) ! IN Index of land points on the SFSTOM7A.243
! ! P-grid. SFSTOM7A.244
&,P_FIELD ! IN Total number of P-gridpoints. SFSTOM7A.245
&,VEG_PTS ! IN Number of vegetated points. SFSTOM7A.246
&,VEG_INDEX(LAND_FIELD) ! IN Index of vegetated points SFSTOM7A.247
! ! on the land grid. SFSTOM7A.248
SFSTOM7A.249
INTEGER SFSTOM7A.250
& FT ! IN Plant functional type. SFSTOM7A.251
SFSTOM7A.252
REAL SFSTOM7A.253
& CO2C(LAND_FIELD) ! IN Canopy level CO2 concentration SFSTOM7A.254
! ! (kg CO2/kg air). SFSTOM7A.255
&,DQC(LAND_FIELD) ! IN Canopy level specific humidity SFSTOM7A.256
! ! deficit (kg H2O/kg air). SFSTOM7A.257
&,O2 ! IN Atmospheric O2 concentration SFSTOM7A.258
! ! (kg O2/kg air). SFSTOM7A.259
&,PSTAR(LAND_FIELD) ! IN Surface pressure (Pa). SFSTOM7A.260
&,IPAR(P_FIELD) ! IN Incident PAR (W/m2). SFSTOM7A.261
&,TSTAR(LAND_FIELD) ! IN Surface temperature (K). SFSTOM7A.262
&,FPAR(LAND_FIELD) ! IN PAR absorption factor. SFSTOM7A.263
&,FSMC(LAND_FIELD) ! IN Soil water factor. SFSTOM7A.264
&,LAI(LAND_FIELD) ! IN Leaf area index SFSTOM7A.265
! ! (m2 leaf/m2 ground). SFSTOM7A.266
SFSTOM7A.267
SFSTOM7A.268
REAL SFSTOM7A.269
& ANETC(LAND_FIELD) ! OUT Net canopy photosynthesis SFSTOM7A.270
! ! (mol CO2/m2/s). SFSTOM7A.271
&,CI(LAND_FIELD) ! OUT Internal CO2 concentration SFSTOM7A.272
! ! (mol CO2/m3). SFSTOM7A.273
&,GC(LAND_FIELD) ! OUT Canopy conductance for H2O SFSTOM7A.274
! ! (m/s). SFSTOM7A.275
&,RDC(LAND_FIELD) ! OUT Canopy dark respiration SFSTOM7A.276
! ! (mol CO2/m2/s). SFSTOM7A.277
&,ANETL(LAND_FIELD) ! WORK Net leaf photosynthesis SFSTOM7A.278
! ! (mol CO2/m2/s/LAI). SFSTOM7A.279
&,APAR(LAND_FIELD) ! WORK PAR absorbed by the top leaf SFSTOM7A.280
! ! (W/m2). SFSTOM7A.281
&,CA(LAND_FIELD) ! WORK Canopy level CO2 pressure SFSTOM7A.282
! ! (Pa). SFSTOM7A.283
&,DQM(LAND_FIELD) ! WORK Canopy level humidity SFSTOM7A.284
! ! deficit (mol H2O/m3). SFSTOM7A.285
&,GL(LAND_FIELD) ! WORK Leaf conductance for H2O SFSTOM7A.286
! ! (m/s). SFSTOM7A.287
&,OA(LAND_FIELD) ! WORK Atmospheric O2 pressure SFSTOM7A.288
! ! (Pa). SFSTOM7A.289
&,RD(LAND_FIELD) ! WORK Dark respiration of top leaf SFSTOM7A.290
! ! (mol CO2/m2/s). SFSTOM7A.291
SFSTOM7A.292
INTEGER SFSTOM7A.293
& I,J,L ! WORK Loop counters. SFSTOM7A.294
SFSTOM7A.295
*CALL NSTYPES
SFSTOM7A.296
*CALL TRIF
SFSTOM7A.297
SFSTOM7A.298
!----------------------------------------------------------------------- SFSTOM7A.299
! Parameters SFSTOM7A.300
!----------------------------------------------------------------------- SFSTOM7A.301
REAL SFSTOM7A.302
& R ! Gas constant (J/K/mol) SFSTOM7A.303
PARAMETER (R = 8.3144) SFSTOM7A.304
*CALL CCARBON
ACN1F405.1
SFSTOM7A.314
!----------------------------------------------------------------------- SFSTOM7A.315
! Calculate the atmospheric pressures of CO2 and O2 SFSTOM7A.316
!----------------------------------------------------------------------- SFSTOM7A.317
DO J=1,VEG_PTS SFSTOM7A.318
L = VEG_INDEX(J) SFSTOM7A.319
I = LAND_INDEX(L) SFSTOM7A.320
SFSTOM7A.321
CA(L) = CO2C(L) / EPCO2 * PSTAR(L) SFSTOM7A.322
OA(L) = O2 / EPO2 * PSTAR(L) SFSTOM7A.323
DQM(L) = DQC(L) / EPSILON * PSTAR(L) / (R * TSTAR(L)) SFSTOM7A.324
SFSTOM7A.325
!----------------------------------------------------------------------- SFSTOM7A.326
! Calculate the PAR absorbed by the top leaf SFSTOM7A.327
!----------------------------------------------------------------------- SFSTOM7A.328
APAR(L) = (1 - OMEGA(FT)) * IPAR(I) SFSTOM7A.329
SFSTOM7A.330
ENDDO SFSTOM7A.331
SFSTOM7A.332
!----------------------------------------------------------------------- SFSTOM7A.333
! Call the leaf level model for the top leaf of the C3 and C4 plants SFSTOM7A.334
!----------------------------------------------------------------------- SFSTOM7A.335
SFSTOM7A.336
IF ( C3(FT) .EQ. 1 ) THEN SFSTOM7A.337
SFSTOM7A.338
CALL LEAF_C3
(LAND_FIELD,VEG_PTS,VEG_INDEX,FT SFSTOM7A.339
&, DQC,APAR,TSTAR,CA,OA,PSTAR,FSMC SFSTOM7A.340
&, GL,ANETL,CI,RD) SFSTOM7A.341
SFSTOM7A.342
ELSE SFSTOM7A.343
SFSTOM7A.344
CALL LEAF_C4
(LAND_FIELD,VEG_PTS,VEG_INDEX,FT SFSTOM7A.345
&, DQC,APAR,TSTAR,CA,OA,PSTAR,FSMC SFSTOM7A.346
&, GL,ANETL,CI,RD) SFSTOM7A.347
SFSTOM7A.348
ENDIF SFSTOM7A.349
SFSTOM7A.350
!----------------------------------------------------------------------- SFSTOM7A.351
! Scale-up to the canopy level SFSTOM7A.352
!----------------------------------------------------------------------- SFSTOM7A.353
DO J=1,VEG_PTS SFSTOM7A.354
L = VEG_INDEX(J) SFSTOM7A.355
SFSTOM7A.356
ANETC(L) = ANETL(L) * FPAR(L) SFSTOM7A.357
GC(L) = FPAR(L) * GL(L) SFSTOM7A.358
RDC(L) = RD(L) * FPAR(L) SFSTOM7A.359
SFSTOM7A.360
ENDDO SFSTOM7A.361
SFSTOM7A.362
RETURN SFSTOM7A.363
SFSTOM7A.364
END SFSTOM7A.365
*ENDIF SFSTOM7A.366