Go to the documentation of this file.00001
00002 module cos
00003
00004 use kinds
00005 use sibtype
00006 use sib_const_module, only: &
00007 po2m, &
00008 pdb, &
00009 dtt, &
00010 dti, &
00011 denh2o
00012 use physical_parameters, only: &
00013 p0 => p0_sfc, &
00014 tice
00015
00016 implicit none
00017
00018
00019
00020
00021
00022
00023
00024 real(kind=dbl_kind) :: cosa
00025 real(kind=dbl_kind) :: cosm
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 real(kind=dbl_kind) :: rcos
00039 real(kind=dbl_kind) :: rcos2
00040
00041 real(kind=dbl_kind) :: gtcos
00042
00043
00044
00045
00046 contains
00047
00048 subroutine cos_calc(sib,co2cap,gah2o,gbh2o,gsh2o,co2m,co2a,xgco2m,qt,gmeso)
00049
00050 use kinds
00051 use sibtype
00052
00053 implicit none
00054
00055
00056 type(sib_t), intent(inout) :: sib
00057
00058
00059
00060 real(kind=dbl_kind) :: co2cap
00061 real(kind=dbl_kind) :: gah2o
00062 real(kind=dbl_kind) :: gbh2o
00063 real(kind=dbl_kind) :: gsh2o
00064 real(kind=dbl_kind) :: co2m
00065
00066 real(kind=dbl_kind) :: co2a
00067
00068 real(kind=dbl_kind) :: xgco2m
00069 real(kind=dbl_kind) :: qt
00070 real(kind=dbl_kind) :: gmeso
00071
00072
00073 integer(kind=int_kind) :: j
00074
00075 real(kind=dbl_kind) :: co2c
00076 real(kind=dbl_kind) :: cosa
00077 real(kind=dbl_kind) :: gcosm
00078
00079
00080 real(kind=dbl_kind) :: freeze
00081 real(kind=dbl_kind) :: moist
00082
00083 real(kind=dbl_kind) :: resp_rel
00084
00085
00086 real(kind=dbl_kind) :: root_tot
00087 real(kind=dbl_kind) :: wfract
00088
00089 real(kind=dbl_kind) :: wet_exp
00090
00091 real(kind=dbl_kind),dimension(3) :: cos_grnd
00092
00093
00094 real(kind=dbl_kind), parameter :: k_cos_soil = 1.2E4
00095
00096
00097 cosm = sib%prog%pcosm / (sib%prog%ps*100.)
00098 co2c = sib%diag%pco2c(6) / (sib%prog%ps*100.)
00099
00100 cosa = sib%prog%pcosap / (sib%prog%ps*100.)
00101
00102
00103
00104 gcosm = gmeso*sib%param%vmax0(1) * sib%diag%aparkk * sib%diag%rstfac(2) * 2.1**qt
00105
00106
00107
00108 gtcos = 1.0 / ((1.6/gsh2o*1.05758605008) + (1.4/gbh2o*1.03803136381) + &
00109 (1.0/gah2o) + 1.0/xgco2m + 1.0/gcosm)
00110
00111
00112
00113
00114 sib%diag%cosflux = gtcos * cosa
00115
00116
00117
00118
00119 sib%diag%assim2 = 0.97 * sib%diag%cosflux * (co2m - co2c) / cosm
00120
00121 sib%diag%rcos = (sib%diag%cosflux/sib%diag%cflux) * (co2m/cosm)
00122
00123 rcos2 = (sib%diag%cosflux/sib%diag%assimn(6)) * (co2m/cosm)
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135 cos_grnd(:) = 0.0
00136
00137
00138
00139 root_tot = sib%param%rootf(1) + sib%param%rootf(2) + sib%param%rootf(3)
00140
00141 resp_rel = sib%param%het_respfac(1) * sib%diag%soilscale(1) &
00142 + sib%param%het_respfac(2) * sib%diag%soilscale(2) &
00143 + sib%param%het_respfac(3) * sib%diag%soilscale(3)
00144
00145 do j=1,3
00146
00147 if(sib%prog%www_liq(j) == 0.0 .AND. sib%prog%www_ice(j) == 0.0) then
00148
00149
00150
00151
00152 freeze = 1.0
00153
00154 else
00155
00156 freeze = sib%prog%www_liq(j) / ( sib%prog%www_liq(j) + sib%prog%www_ice(j) )
00157
00158 endif
00159
00160
00161
00162 wfract = &
00163 ((sib%prog%www_liq(j) / (sib%prog%dz(j) * sib%param%poros * denh2o)) &
00164 * (sib%param%rootf(j) / root_tot ))
00165
00166 moist = 1.42 - (wfract * 1.42)
00167
00168 moist = MIN(1.0,moist)
00169
00170
00171
00172 wet_exp = ((wfract**sib%param%zm - sib%param%woptzm) / (1.0 - sib%param%woptzm))**2.0
00173 wet_exp = MIN(wet_exp,10.0_dbl_kind)
00174
00175 moist = moist * (0.8 * sib%param%wsat**wet_exp + 0.2)
00176
00177
00178 cos_grnd(j) = &
00179 (sib%param%het_respfac(j) * sib%diag%soilscale(j)) / resp_rel * &
00180 sib%diag%resp_het * cosa * k_cos_soil * &
00181 freeze * moist * sib%diag%soilq10(j)
00182
00183
00184
00185 enddo
00186
00187
00188
00189
00190
00191 sib%diag%cos_grnd = 0.0
00192
00193
00194 do j=1,3
00195
00196 sib%diag%cos_grnd = sib%diag%cos_grnd + cos_grnd(j)
00197
00198
00199
00200 enddo
00201
00202
00203
00204
00205
00206
00207 cosa = (cosa + dtt/co2cap*((cosm * gah2o) - sib%diag%cos_grnd - sib%diag%cosflux)) / &
00208 (1.0 + (dtt * gah2o)/co2cap)
00209
00210
00211
00212
00213
00214
00215
00216 sib%prog%pcosap = cosa * sib%prog%ps * 100.
00217
00218 sib%diag%coss = cosa - sib%diag%cosflux*(1.0/gah2o+1.4/gbh2o)
00219 sib%diag%cosi = sib%diag%coss - sib%diag%cosflux * (1.6/gsh2o * 1.057860)
00220 sib%diag%cosc = sib%diag%cosi - sib%diag%cosflux * (1.0/xgco2m)
00221
00222 sib%diag%cos_flux_pbl = gah2o * (cosa - cosm)
00223
00224 sib%diag%cos_temp = cos_grnd(1)
00225 sib%diag%cos_temp1 = cos_grnd(2) + cos_grnd(3)
00226
00227
00228
00229 end subroutine cos_calc
00230
00231 end module cos