Changeset 3308 for trunk/LMDZ.COMMON
- Timestamp:
- Apr 19, 2024, 7:17:31 PM (7 months ago)
- Location:
- trunk/LMDZ.COMMON/libf/evolution
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.COMMON/libf/evolution/changelog.txt
r3300 r3308 277 277 == 15/04/2024 == JBC 278 278 Update of "output_layering.py" in the deftank. 279 280 == 19/04/2024 == JBC 281 Few small corrections to make the PEM work in 3D, in particular concerning the initialization of the planet type and the evolution of ice with slopes. -
trunk/LMDZ.COMMON/libf/evolution/deftank/run_PEM.def
r3256 r3308 1 # 2 #------------------------------------- 3 # Run control parameters for the PEM 4 #------------------------------------- 1 #------------------------------------# 2 # Run control parameters for the PEM # 3 #------------------------------------# 4 5 #---------- Planet type ----------# 6 planet_type=mars 5 7 6 8 #---------- Output parameters ----------# -
trunk/LMDZ.COMMON/libf/evolution/evol_ice_mod.F90
r3206 r3308 28 28 29 29 ! local: 30 ! ---- 30 ! ------ 31 31 32 32 !======================================================================= … … 105 105 enddo 106 106 enddo 107 ! We adapt the tendencies to conserve h2o and do only exchange between grid points 108 if (neg_tend > pos_tend .and. pos_tend > 0.) then ! More sublimation on the planet than condensation 109 where (tend_h2o_ice < 0.) ! We lower the sublimating rate by a coefficient 110 new_tendencies = tend_h2o_ice*pos_tend/neg_tend 111 elsewhere ! We don't change the condensing rate 112 new_tendencies = tend_h2o_ice 113 end where 114 else if (neg_tend < pos_tend .and. neg_tend > 0.) then ! More condensation on the planet than sublimation 115 where (tend_h2o_ice < 0.) ! We don't change the sublimating rate 116 new_tendencies = tend_h2o_ice 117 elsewhere ! We lower the condensing rate by a coefficient 118 new_tendencies = tend_h2o_ice*neg_tend/pos_tend 119 end where 120 else if (abs(pos_tend) < 1.e-10 .or. abs(neg_tend) == 1.e-10) then 121 write(*,*) "Reason of stopping: there is no sublimating or condensing h20 ice!" 107 108 if (abs(pos_tend) < 1.e-10 .or. abs(neg_tend) < 1.e-10) then 109 write(*,*) "Reason of stopping: there is no sublimating or condensing h2o ice!" 122 110 write(*,*) "Tendencies on ice sublimating =", neg_tend 123 111 write(*,*) "Tendencies on ice increasing =", pos_tend … … 125 113 stopPEM = 2 126 114 new_tendencies = 0. 115 else 116 ! We adapt the tendencies to conserve h2o and do only exchange between grid points 117 if (neg_tend > pos_tend .and. pos_tend > 0.) then ! More sublimation on the planet than condensation 118 where (tend_h2o_ice < 0.) ! We lower the sublimating rate by a coefficient 119 new_tendencies = tend_h2o_ice*pos_tend/neg_tend 120 elsewhere ! We don't change the condensing rate 121 new_tendencies = tend_h2o_ice 122 end where 123 else if (neg_tend < pos_tend .and. neg_tend > 0.) then ! More condensation on the planet than sublimation 124 where (tend_h2o_ice < 0.) ! We don't change the sublimating rate 125 new_tendencies = tend_h2o_ice 126 elsewhere ! We lower the condensing rate by a coefficient 127 new_tendencies = tend_h2o_ice*neg_tend/pos_tend 128 end where 129 endif 127 130 endif 128 131 … … 150 153 endif 151 154 ! In the place of accumulation of ice, we remove a bit of ice in order to conserve h2o 152 where (new_tendencies > 0.) h2o_ice = h2o_ice - new_tendencies*real_coefficient*dt_pem*cos(def_slope_mean(islope)*pi/180.) 155 do islope = 1,nslope 156 do i = 1,ngrid 157 if (new_tendencies(i,islope) > 0.) h2o_ice(i,islope) = h2o_ice(i,islope) - new_tendencies(i,islope)*real_coefficient*dt_pem*cos(def_slope_mean(islope)*pi/180.) 158 enddo 159 enddo 153 160 else ! ngrid == 1, i.e. in 1D 154 161 h2o_ice = h2o_ice + tend_h2o_ice*dt_pem -
trunk/LMDZ.COMMON/libf/evolution/glaciers_mod.F90
r3256 r3308 5 5 6 6 ! Flags for ice management 7 logical :: h2oice_flow ! True by default, to compute H2O ice flow. Read in "run_PEM.def"8 logical :: co2ice_flow ! True by default, to compute CO2 ice flow. Read in "run_PEM.def"7 logical :: h2oice_flow ! True by default, to compute H2O ice flow. Read in "run_PEM.def" 8 logical :: co2ice_flow ! True by default, to compute CO2 ice flow. Read in "run_PEM.def" 9 9 logical :: metam_h2oice ! False by default, to compute H2O ice metamorphism. Read in "run_PEM.def" 10 10 logical :: metam_co2ice ! False by default, to compute CO2 ice metamorphism. Read in "run_PEM.def" -
trunk/LMDZ.COMMON/libf/evolution/layering_mod.F90
r3297 r3308 536 536 537 537 !------ Sublimation of CO2 ice + Condensation of H2O ice 538 else if (htend_co2ice < 0. .and. htend_h2oice > = 0.) then538 else if (htend_co2ice < 0. .and. htend_h2oice > 0.) then 539 539 write(*,'(a)') ' Stratification -> Sublimation of CO2 ice + Condensation of H2O ice' 540 540 ! CO2 ice sublimation in the considered stratum + New stratum for dust lag … … 577 577 578 578 !------ Sublimation of CO2 ice + H2O ice 579 else if ( htend_co2ice < 0. .and. htend_h2oice < 0.) then579 else if ((htend_co2ice <= 0. .and. htend_h2oice < 0.) .or. (htend_co2ice < 0. .and. htend_h2oice <= 0.)) then 580 580 write(*,'(a)') ' Stratification -> Sublimation of CO2 and H2O ice' 581 581 ! CO2 ice sublimation in the considered stratum + New stratum for dust lag … … 633 633 634 634 !------ Condensation of CO2 ice + Sublimation of H2O ice 635 else if (htend_co2ice > =0. .and. htend_h2oice < 0.) then635 else if (htend_co2ice > 0. .and. htend_h2oice < 0.) then 636 636 error stop 'Impossible situation: CO2 ice condensation + H2O ice sublimation!' 637 637 endif -
trunk/LMDZ.COMMON/libf/evolution/pem.F90
r3297 r3308 351 351 status = nf90_close(ncid) 352 352 353 call iniphysiq( iim,jjm,llm,(jjm-1)*iim+2,comm_lmdz,daysec,day_ini,dtphys/nsplit_phys,rlatu,rlatv,rlonu,rlonv,aire,cu,cv,rad,g,r,cpp,iflag_phys)353 call iniphysiq('startfi_evol.nc',iim,jjm,llm,(jjm-1)*iim+2,comm_lmdz,daysec,day_ini,dtphys/nsplit_phys,rlatu,rlatv,rlonu,rlonv,aire,cu,cv,rad,g,r,cpp,iflag_phys) 354 354 #else 355 355 ps_start_PCM(1) = ps(1) … … 998 998 ! H2O ice metamorphism 999 999 if (metam_h2oice .and. sum(qsurf(ig,igcm_h2o_ice,:)*subslope_dist(ig,:)/cos(pi*def_slope_mean(:)/180.)) > metam_h2oice_threshold) then 1000 h2o_ice(ig,:) = h2o_ice(ig,:) + qsurf(ig,igcm_h2o_ice,:) - metam_h2oice_threshold /subslope_dist(ig,:)*cos(pi*def_slope_mean(:)*180.)1001 qsurf(ig,igcm_h2o_ice,:) = metam_h2oice_threshold /subslope_dist(ig,:)*cos(pi*def_slope_mean(:)*180.)1000 h2o_ice(ig,:) = h2o_ice(ig,:) + qsurf(ig,igcm_h2o_ice,:) - metam_h2oice_threshold 1001 qsurf(ig,igcm_h2o_ice,:) = metam_h2oice_threshold 1002 1002 endif 1003 1003 … … 1015 1015 ! CO2 ice metamorphism 1016 1016 if (metam_co2ice .and. sum(qsurf(ig,igcm_co2,:)*subslope_dist(ig,:)/cos(pi*def_slope_mean(:)/180.)) > metam_co2ice_threshold) then 1017 perennial_co2ice(ig,:) = perennial_co2ice(ig,:) + qsurf(ig,igcm_co2,:) - metam_co2ice_threshold /subslope_dist(ig,:)*cos(pi*def_slope_mean(:)*180.)1018 qsurf(ig,igcm_co2,:) = metam_co2ice_threshold /subslope_dist(ig,:)*cos(pi*def_slope_mean(:)*180.)1017 perennial_co2ice(ig,:) = perennial_co2ice(ig,:) + qsurf(ig,igcm_co2,:) - metam_co2ice_threshold 1018 qsurf(ig,igcm_co2,:) = metam_co2ice_threshold 1019 1019 endif 1020 1020 enddo -
trunk/LMDZ.COMMON/libf/evolution/pemetat0.F90
r3297 r3308 158 158 write(*,*)'with default value ''ini_huge_h2oice''' 159 159 do ig = 1,ngrid 160 if (watercaptag(ig)) h2o_ice(ig,:) = ini_huge_h2oice /subslope_dist(ig,:)*cos(pi*def_slope_mean(:)*180.)160 if (watercaptag(ig)) h2o_ice(ig,:) = ini_huge_h2oice 161 161 enddo 162 162 else … … 358 358 359 359 ! Stratification (layerings) 360 write(*,*)'So the stratification (layerings) is initialized with nothing more thanthe 3 sub-surface strata.'360 write(*,*)'So the stratification (layerings) is initialized with only the 3 sub-surface strata.' 361 361 nb_str_max = 3 362 362 … … 365 365 write(*,*)'So ''h2o_ice'' is initialized with default value ''ini_huge_h2oice'' where ''watercaptag'' is true.' 366 366 do ig = 1,ngrid 367 if (watercaptag(ig)) h2o_ice(ig,:) = ini_huge_h2oice /subslope_dist(ig,:)*cos(pi*def_slope_mean(:)*180.)367 if (watercaptag(ig)) h2o_ice(ig,:) = ini_huge_h2oice 368 368 enddo 369 369
Note: See TracChangeset
for help on using the changeset viewer.