Changeset 3126 for trunk/LMDZ.MARS/libf/phymars/soilwater.F90
- Timestamp:
- Nov 15, 2023, 3:13:25 PM (13 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/libf/phymars/soilwater.F90
r3121 r3126 5 5 6 6 7 use comsoil_h, only: igcm_h2o_vap_soil, igcm_h2o_ice_soil, igcm_h2o_vap_ads, layer, mlayer 7 use comsoil_h, only: igcm_h2o_vap_soil, igcm_h2o_ice_soil, igcm_h2o_vap_ads, layer, mlayer, choice_ads 8 8 use comcstfi_h 9 9 use tracer_mod … … 204 204 real*8, parameter:: Sm = 10.6D-20 ! Surface of the water molecule (m2) (only needed in the theoretical formula which is not used right now) 205 205 206 integer, parameter :: choice_ads = 1 ! Choice of adsorption - desorption constants 3: no adsorption207 206 208 207 ! Reference values for choice_ads = 2 … … 350 349 saturation_water_ice(ig, ik) = min(ice(ig, ik) / (rho_H2O_ice * porosity_ice_free(ig, ik)), 0.999D-0) 351 350 porosity(ig, ik) = porosity_ice_free(ig, ik) * (1.D0 - saturation_water_ice(ig, ik)) 352 351 353 352 if (choice_ads.eq.1) then 354 353 vth(ig, ik) = dsqrt(8.D0 * 8.314D0 * tsoil(ig, nsoil - 4) & … … 373 372 374 373 Ka(ig, ik) = kinetic_factor * k_ads_eq(ig, ik) / (1.D0 + k_ads_eq(ig, ik) / porosity(ig, ik)) 374 375 375 endif 376 376 377 adswater(ig, ik) = min(Ka(ig, ik) / Kd(ig, ik) * znsoil(ig, ik), adswater_sat)377 if(choice_ads .ne. 3) adswater(ig, ik) = min(Ka(ig, ik) / Kd(ig, ik) * znsoil(ig, ik), adswater_sat) 378 378 379 379 else ! in 3D simulations initialisation happens with newstart.F … … 381 381 ice(ig, ik) = pqsoil(ig, ik, igcm_h2o_ice_soil) 382 382 adswater(ig, ik) = pqsoil(ig, ik, igcm_h2o_vap_ads) 383 endif 384 385 if (choice_ads.eq.3) then ! no adsorption 386 387 Ka(:, :) = 0. 388 Kd(:, :) = 0. 389 adswater(:,:) = 0. 390 383 391 endif 384 392 … … 584 592 ! calculate the absorption coefficient 585 593 Ka(ig, ik) = kinetic_factor * k_ads_eq(ig, ik) / (1.D0 + k_ads_eq(ig, ik) / porosity(ig, ik)) 594 else ! no ads 595 596 Kd(ig, ik) = 0. 597 598 Ka(ig, ik) = 0. 586 599 endif 587 600 588 601 ! calculate the amount of water vapor at adorption saturation 589 nsat(ig, ik) = adswater_sat * Kd(ig, ik) / Ka(ig, ik) 602 603 if (choice_ads.ne.3) nsat(ig, ik) = adswater_sat * Kd(ig, ik) / Ka(ig, ik) 590 604 591 605 ! calculate C, E, and F coefficients for later calculations … … 1285 1299 1286 1300 ! calculate how close the water vapor content is to saturizing the adsorbed water 1287 preduite(ig, ik) = znsoil(ig, ik) / nsat(ig, ik)1301 if (choice_ads.ne.3) preduite(ig, ik) = znsoil(ig, ik) / nsat(ig, ik) 1288 1302 1289 1303 ! write the results to the return variable
Note: See TracChangeset
for help on using the changeset viewer.