Changeset 3989 for trunk/LMDZ.COMMON/libf/evolution/config_pem.F90
- Timestamp:
- Dec 11, 2025, 12:56:05 PM (3 months ago)
- File:
-
- 1 moved
-
trunk/LMDZ.COMMON/libf/evolution/config_pem.F90 (moved) (moved from trunk/LMDZ.COMMON/libf/evolution/conf_pem.F90) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.COMMON/libf/evolution/config_pem.F90
r3988 r3989 1 MODULE conf _pem_mod1 MODULE config_pem 2 2 3 3 !======================================================================= … … 14 14 !======================================================================= 15 15 16 SUBROUTINE conf_pem(i_myear,n_myears)16 SUBROUTINE read_rundef(i_myear,nyears_tots) 17 17 18 18 #ifdef CPP_IOIPSL … … 23 23 #endif 24 24 25 use time_evol_mod, only: year_bp_ini, dt, h2o_ice_crit, co2_ice_crit, ps_criterion, Max_iter_pem, & 26 evol_orbit_pem, var_obl, var_ecc, var_lsp, convert_years, ecritpem 27 use comsoil_h_pem, only: soil_pem, fluxgeo, ini_huge_h2oice, depth_breccia, depth_bedrock, reg_thprop_dependp 28 use adsorption_mod, only: adsorption_pem 29 use glaciers_mod, only: h2oice_flow, co2ice_flow, inf_h2oice_threshold 30 use ice_table_mod, only: icetable_equilibrium, icetable_dynamic 31 use layering_mod, only: layering_algo, d_dust, impose_dust_ratio, dust2ice_ratio 32 use info_PEM_mod, only: iPCM, iPEM, nPCM, nPCM_ini 25 use evolution, only: year_bp_ini, dt, nyears_max, evol_orbit, var_obl, var_ecc, var_lsp, convert_years 26 use stopping_crit, only: h2oice_crit, co2ice_crit, ps_crit 27 use soil, only: do_soil, fluxgeo, h2oice_huge_ini, depth_breccia, depth_bedrock, reg_thprop_dependp 28 use sorption, only: do_sorption 29 use glaciers, only: h2oice_flow, co2ice_flow 30 use surf_ice, only: h2oice_cap_threshold 31 use ice_table, only: icetable_equilibrium, icetable_dynamic 32 use layered_deposits, only: layering_algo, d_dust, impose_dust_ratio, dust2ice_ratio 33 use info_pem, only: iPCM, iPEM, nPCM, nPCM_ini 34 use outputs, only: output_rate 33 35 34 36 implicit none 35 37 36 real, intent(out) :: i_myear, n _myears ! Current simulated Martian year and maximum number of Martian years to be simulated38 real, intent(out) :: i_myear, nyears_tots ! Current simulated Martian year and maximum number of Martian years to be simulated 37 39 38 character(20), parameter :: modname =' conf_pem'40 character(20), parameter :: modname ='read_rundef' 39 41 integer :: ierr 40 42 integer :: year_earth_bp_ini ! Initial year (in Earth years) of the simulation of the PEM defined in run.def … … 49 51 stop 50 52 else 51 read(100,*) i_myear, n _myears, convert_years, iPCM, iPEM, nPCM, nPCM_ini53 read(100,*) i_myear, nyears_tots, convert_years, iPCM, iPEM, nPCM, nPCM_ini 52 54 endif 53 55 close(100) … … 55 57 !#---------- Output parameters ----------# 56 58 ! Frequency of outputs for the PEM 57 ecritpem= 1 ! Default value: every year58 call getin(' ecritpem',ecritpem)59 output_rate = 1 ! Default value: every year 60 call getin('output_rate',output_rate) 59 61 60 62 !#---------- Orbital parameters ----------# 61 evol_orbit _pem= .false.62 call getin('evol_orbit _pem',evol_orbit_pem)63 evol_orbit = .false. 64 call getin('evol_orbit',evol_orbit) 63 65 64 66 year_earth_bp_ini = 0. … … 79 81 80 82 !#---------- Stopping criteria parameters ----------# 81 Max_iter_pem = 100000000 82 call getin(' Max_iter_pem',Max_iter_pem)83 write(*,*) ' Max_iter_pem =',Max_iter_pem83 nyears_max = 100000000. 84 call getin('nyears_max',nyears_max) 85 write(*,*) 'nyears_max =',nyears_max 84 86 85 h2o _ice_crit = 0.286 call getin('h2o _ice_crit',h2o_ice_crit)87 write(*,*) 'h2o _ice_crit =',h2o_ice_crit87 h2oice_crit = 0.2 88 call getin('h2oice_crit',h2oice_crit) 89 write(*,*) 'h2oice_crit =',h2oice_crit 88 90 89 co2 _ice_crit = 0.290 call getin('co2 _ice_crit',co2_ice_crit)91 write(*,*) 'co2 _ice_crit =',co2_ice_crit91 co2ice_crit = 0.2 92 call getin('co2ice_crit',co2ice_crit) 93 write(*,*) 'co2ice_crit =',co2ice_crit 92 94 93 ps_crit erion= 0.1594 call getin('ps_crit erion',ps_criterion)95 write(*,*) 'ps_crit erion =',ps_criterion95 ps_crit = 0.15 96 call getin('ps_crit',ps_crit) 97 write(*,*) 'ps_crit =',ps_crit 96 98 97 99 dt = 1. … … 99 101 100 102 !#---------- Subsurface parameters ----------# 101 soil_pem= .true.102 call getin(' soil_pem',soil_pem)103 do_soil = .true. 104 call getin('do_soil',do_soil) 103 105 104 adsorption_pem= .false.105 call getin(' adsorption_pem',adsorption_pem)106 do_sorption = .false. 107 call getin('do_sorption',do_sorption) 106 108 107 109 reg_thprop_dependp = .false. … … 128 130 call getin('icetable_dynamic',icetable_dynamic) 129 131 write(*,*) 'Is the ice table computed with the dynamic method?', icetable_dynamic 130 if ((.not. soil_pem) .and. (icetable_equilibrium .or. icetable_dynamic)) then131 write(*,*) 'Ice table (equilibrium or dynamic method) must be used when soil_pem= T'132 call abort_physic(modname,"Ice table must be used when soil_pem= T",1)132 if ((.not. do_soil) .and. (icetable_equilibrium .or. icetable_dynamic)) then 133 write(*,*) 'Ice table (equilibrium or dynamic method) must be used when do_soil = T' 134 call abort_physic(modname,"Ice table must be used when do_soil = T",1) 133 135 endif 134 136 if (icetable_equilibrium .and. icetable_dynamic) then … … 138 140 endif 139 141 140 if ((.not. soil_pem) .and. adsorption_pem) then141 write(*,*) 'Adsorption must be used when soil_pem= T'142 call abort_physic(modname,"Adsorption must be used when soil_pem= T",1)142 if ((.not. do_soil) .and. do_sorption) then 143 write(*,*) 'Adsorption must be used when do_soil = T' 144 call abort_physic(modname,"Adsorption must be used when do_soil = T",1) 143 145 endif 144 146 145 if ((.not. soil_pem) .and. (fluxgeo > 0.)) then147 if ((.not. do_soil) .and. (fluxgeo > 0.)) then 146 148 write(*,*) 'Soil is not activated but Flux Geo > 0.' 147 149 call abort_physic(modname,"Soil is not activated but Flux Geo > 0.",1) 148 150 endif 149 151 150 if ((.not. soil_pem) .and. reg_thprop_dependp) then152 if ((.not. do_soil) .and. reg_thprop_dependp) then 151 153 write(*,*) 'Regolith properties vary with Ps only when soil is set to true' 152 154 call abort_physic(modname,'Regolith properties vary with Ps only when soil is set to true',1) 153 155 endif 154 156 155 if (evol_orbit _pem.and. abs(year_bp_ini) < 1.e-10) then157 if (evol_orbit .and. abs(year_bp_ini) < 1.e-10) then 156 158 write(*,*) 'You want to follow the file "obl_ecc_lsp.asc" for changing orbital parameters,' 157 159 write(*,*) 'but you did not specify from which year to start.' 158 call abort_physic(modname,"evol_orbit _pem=.true. but year_bp_ini = 0",1)160 call abort_physic(modname,"evol_orbit=.true. but year_bp_ini = 0",1) 159 161 endif 160 162 161 163 !#---------- Ice management parameters ----------# 162 ini_huge_h2oice= 9200. ! kg.m-2 (= 10 m)163 call getin(' ini_huge_h2oice',ini_huge_h2oice)164 h2oice_huge_ini = 9200. ! kg.m-2 (= 10 m) 165 call getin('h2oice_huge_ini',h2oice_huge_ini) 164 166 165 inf_h2oice_threshold = 460. ! kg.m-2 (= 0.5 m)166 call getin(' inf_h2oice_threshold',inf_h2oice_threshold)167 h2oice_cap_threshold = 460. ! kg.m-2 (= 0.5 m) 168 call getin('h2oice_cap_threshold',h2oice_cap_threshold) 167 169 168 170 h2oice_flow = .true. … … 185 187 call getin('dust2ice_ratio',dust2ice_ratio) 186 188 187 END SUBROUTINE conf_pem189 END SUBROUTINE read_rundef 188 190 189 END MODULE conf _pem_mod191 END MODULE config_pem
Note: See TracChangeset
for help on using the changeset viewer.
