Changeset 5754 for LMDZ6/trunk/libf/phylmdiso
- Timestamp:
- Jul 2, 2025, 4:26:06 PM (5 weeks ago)
- Location:
- LMDZ6/trunk/libf/phylmdiso
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmdiso/isotopes_mod.F90
r5748 r5754 6 6 USE infotrac_phy, ONLY: isoName, niso, ntiso 7 7 USE iso_params_mod 8 USE ioipsl_getin_p_mod, ONLY : getin_p 8 9 IMPLICIT NONE 9 INTERFACE get_in; MODULE PROCEDURE getinp_s, getinp_i, getinp_r, getinp_l; END INTERFACE get_in10 10 11 11 !--- Contains all isotopic variables + their initialization … … 187 187 188 188 !--- Initialisation: reading the isotopic parameters. 189 CALL get _in('lambda', lambda_sursat, 0.004); IF(ok_nocinsat) lambda_sursat = 0.190 CALL get _in('thumxt1', thumxt1, 0.75*1.2)191 CALL get _in('ntot', ntot, 20,.FALSE.)192 CALL get _in('h_land_ice', h_land_ice, 20.,.FALSE.)193 CALL get _in('P_veg', P_veg, 1.0,.FALSE.)194 CALL get _in('bidouille_anti_divergence', bidouille_anti_divergence, .FALSE.)195 CALL get _in('essai_convergence', essai_convergence, .FALSE.)196 CALL get _in('initialisation_iso', initialisation_iso, 0)189 CALL getin_p('lambda', lambda_sursat, 0.004); IF(ok_nocinsat) lambda_sursat = 0. 190 CALL getin_p('thumxt1', thumxt1, 0.75*1.2) 191 CALL getin_p('ntot', ntot, 20, lDisp=.FALSE.) 192 CALL getin_p('h_land_ice', h_land_ice, 20., lDisp=.FALSE.) 193 CALL getin_p('P_veg', P_veg, 1.0, lDisp=.FALSE.) 194 CALL getin_p('bidouille_anti_divergence', bidouille_anti_divergence, .FALSE.) 195 CALL getin_p('essai_convergence', essai_convergence, .FALSE.) 196 CALL getin_p('initialisation_iso', initialisation_iso, 0) 197 197 198 198 ! IF(nzone>0 .AND. initialisation_iso==0) & 199 ! CALL get _in('initialisation_isotrac',initialisation_isotrac)200 CALL get _in('modif_sst', modif_sst, 0)201 CALL get _in('deltaTtest', deltaTtest, 0.0) !--- For modif_sst>=1202 CALL get _in('deltaTtestpoles',deltaTtestpoles, 0.0) !--- For modif_sst>=2203 CALL get _in( 'sstlatcrit', sstlatcrit, 30.0) !--- For modif_sst>=3204 CALL get _in('dsstlatcrit', dsstlatcrit, 0.0) !--- For modif_sst>=3199 ! CALL getin_p('initialisation_isotrac',initialisation_isotrac) 200 CALL getin_p('modif_sst', modif_sst, 0) 201 CALL getin_p('deltaTtest', deltaTtest, 0.0) !--- For modif_sst>=1 202 CALL getin_p('deltaTtestpoles',deltaTtestpoles, 0.0) !--- For modif_sst>=2 203 CALL getin_p( 'sstlatcrit', sstlatcrit, 30.0) !--- For modif_sst>=3 204 CALL getin_p('dsstlatcrit', dsstlatcrit, 0.0) !--- For modif_sst>=3 205 205 #ifdef ISOVERIF 206 206 CALL msg('iso_init 270: sstlatcrit='//num2str( sstlatcrit), modname, sstlatcrit < 0.0) !--- For modif_sst>=2 … … 209 209 #endif 210 210 211 CALL get _in('modif_sic', modif_sic, 0)211 CALL getin_p('modif_sic', modif_sic, 0) 212 212 IF(modif_sic >= 1) & 213 CALL get _in('deltasic', deltasic, 0.1)214 215 CALL get _in('albedo_prescrit', albedo_prescrit, 0)213 CALL getin_p('deltasic', deltasic, 0.1) 214 215 CALL getin_p('albedo_prescrit', albedo_prescrit, 0) 216 216 IF(albedo_prescrit == 1) THEN 217 CALL get _in('lon_min_albedo', lon_min_albedo, -200.)218 CALL get _in('lon_max_albedo', lon_max_albedo, 200.)219 CALL get _in('lat_min_albedo', lat_min_albedo, -100.)220 CALL get _in('lat_max_albedo', lat_max_albedo, 100.)221 END IF 222 CALL get _in('deltaO18_oce', deltaO18_oce, 0.0)223 CALL get _in('deltaP_BL', deltaP_BL, 10.0)224 CALL get _in('ruissellement_pluie', ruissellement_pluie, 0)225 CALL get _in('alphak_stewart', alphak_stewart, 1)226 CALL get _in('tdifexp_sol', tdifexp_sol, 0.67)227 CALL get _in('calendrier_guide', calendrier_guide, 0)228 CALL get _in('cste_surf_cond', cste_surf_cond, 0)229 CALL get _in('mixlen', mixlen, 35.0)230 CALL get _in('evap_cont_cste', evap_cont_cste, 0)231 CALL get _in('deltaO18_evap_cont', deltaO18_evap_cont,0.0)232 CALL get _in('d_evap_cont', d_evap_cont, 0.0)233 CALL get _in('nudge_qsol', nudge_qsol, 0)234 CALL get _in('region_nudge_qsol', region_nudge_qsol, 1)217 CALL getin_p('lon_min_albedo', lon_min_albedo, -200.) 218 CALL getin_p('lon_max_albedo', lon_max_albedo, 200.) 219 CALL getin_p('lat_min_albedo', lat_min_albedo, -100.) 220 CALL getin_p('lat_max_albedo', lat_max_albedo, 100.) 221 END IF 222 CALL getin_p('deltaO18_oce', deltaO18_oce, 0.0) 223 CALL getin_p('deltaP_BL', deltaP_BL, 10.0) 224 CALL getin_p('ruissellement_pluie', ruissellement_pluie, 0) 225 CALL getin_p('alphak_stewart', alphak_stewart, 1) 226 CALL getin_p('tdifexp_sol', tdifexp_sol, 0.67) 227 CALL getin_p('calendrier_guide', calendrier_guide, 0) 228 CALL getin_p('cste_surf_cond', cste_surf_cond, 0) 229 CALL getin_p('mixlen', mixlen, 35.0) 230 CALL getin_p('evap_cont_cste', evap_cont_cste, 0) 231 CALL getin_p('deltaO18_evap_cont', deltaO18_evap_cont,0.0) 232 CALL getin_p('d_evap_cont', d_evap_cont, 0.0) 233 CALL getin_p('nudge_qsol', nudge_qsol, 0) 234 CALL getin_p('region_nudge_qsol', region_nudge_qsol, 1) 235 235 nlevmaxO17 = 50 236 236 CALL msg('nlevmaxO17='//TRIM(num2str(nlevmaxO17))) 237 CALL get _in('no_pce', no_pce, 0)238 CALL get _in('A_satlim', A_satlim, 1.0)239 CALL get _in('ok_restrict_A_satlim', ok_restrict_A_satlim, 0)237 CALL getin_p('no_pce', no_pce, 0) 238 CALL getin_p('A_satlim', A_satlim, 1.0) 239 CALL getin_p('ok_restrict_A_satlim', ok_restrict_A_satlim, 0) 240 240 #ifdef ISOVERIF 241 CALL msg(' 315: A_satlim='// num2str(A_satlim), modname, A_satlim > 1.0)241 CALL msg(' 315: A_satlim='//TRIM(num2str(A_satlim)), modname, A_satlim > 1.0) 242 242 IF(A_satlim > 1.0) STOP 243 243 #endif 244 ! CALL get _in('slope_limiterxy', slope_limiterxy, 2.0)245 ! CALL get _in('slope_limiterz', slope_limiterz, 2.0)246 CALL get _in('modif_ratqs', modif_ratqs, 0)247 CALL get _in('Pcrit_ratqs', Pcrit_ratqs, 500.0)248 CALL get _in('ratqsbasnew', ratqsbasnew, 0.05)249 CALL get _in('fac_modif_evaoce', fac_modif_evaoce, 1.0)250 CALL get _in('ok_bidouille_wake', ok_bidouille_wake, 0)244 ! CALL getin_p('slope_limiterxy', slope_limiterxy, 2.0) 245 ! CALL getin_p('slope_limiterz', slope_limiterz, 2.0) 246 CALL getin_p('modif_ratqs', modif_ratqs, 0) 247 CALL getin_p('Pcrit_ratqs', Pcrit_ratqs, 500.0) 248 CALL getin_p('ratqsbasnew', ratqsbasnew, 0.05) 249 CALL getin_p('fac_modif_evaoce', fac_modif_evaoce, 1.0) 250 CALL getin_p('ok_bidouille_wake', ok_bidouille_wake, 0) 251 251 ! si oui, la temperature de cond est celle de l'environnement, pour eviter 252 252 ! bugs quand temperature dans ascendances convs est mal calculee 253 CALL get _in('cond_temp_env', cond_temp_env, .FALSE.)253 CALL getin_p('cond_temp_env', cond_temp_env, .FALSE.) 254 254 IF(ANY(isoName == 'HTO')) & 255 CALL get _in('ok_prod_nucl_tritium', ok_prod_nucl_tritium, .FALSE.,.FALSE.)256 CALL get _in('tnateq1', ltnat1, .TRUE.)255 CALL getin_p('ok_prod_nucl_tritium', ok_prod_nucl_tritium, .FALSE., lDisp=.FALSE.) 256 CALL getin_p('tnateq1', ltnat1, .TRUE.) 257 257 258 258 CALL msg('iso_O18, iso_HDO, iso_eau = '//TRIM(strStack(num2str([iso_O18, iso_HDO, iso_eau]))), modname) -
LMDZ6/trunk/libf/phylmdiso/isotrac_mod.F90
r5748 r5754 4 4 MODULE isotrac_mod 5 5 USE infotrac_phy, ONLY: niso, ntiso, nzone, delPhase 6 USE isotopes_mod, ONLY: ridicule , get_in7 6 USE isotopes_mod, ONLY: ridicule 7 USE ioipsl_getin_p_mod, ONLY : getin_p 8 8 IMPLICIT NONE 9 9 SAVE … … 148 148 USE isotopes_mod, ONLY: iso_eau, ntracisoOR, initialisation_iso 149 149 USE dimphy, ONLY: klon, klev 150 USE strings_mod, ONLY: num2str, strStack, strTail, strHead, strIdx 150 USE strings_mod, ONLY: num2str, strStack, strTail, strHead, strIdx, maxlen 151 151 152 152 IMPLICIT NONE … … 156 156 INTEGER :: izone_pres, izone_lat 157 157 INTEGER :: nzone_opt 158 159 CALL msg("traceurs_init 18: isotrac ne marche que si on met l'eau comme isotope", 'iso_traceurs_init', iso_eau==0) 160 IF(lerr) STOP 158 LOGICAL :: lerr 159 CHARACTER(LEN=maxlen) :: modname 160 161 modname = 'iso_traceurs_init' 162 lerr = iso_eau == 0 163 IF(lerr) CALL abort_physics(TRIM(modname)//' 18', 'isotrac does not work without H216O isotope', 1) 161 164 162 165 !--- Initialize … … 172 175 ALLOCATE( boite_map(klon,klev)) 173 176 174 IF(initialisation_iso == 0) CALL get _in('initialisation_isotrac', initialisation_isotrac)177 IF(initialisation_iso == 0) CALL getin_p('initialisation_isotrac', initialisation_isotrac) 175 178 176 179 !--- Read tracing option 177 CALL get _in('option_traceurs', option_traceurs)180 CALL getin_p('option_traceurs', option_traceurs) 178 181 179 182 !--- Genral case: no traceurs in ORCHIDEE … … 215 218 !======================================================================================================================== 216 219 ! lire les use_bassin 217 CALL get _in('use_bassin_Atlantic', use_bassin_Atlantic)218 CALL get _in('use_bassin_Medit', use_bassin_Medit)219 CALL get _in('use_bassin_Indian', use_bassin_Indian)220 CALL get _in('use_bassin_Austral', use_bassin_Austral)221 CALL get _in('use_bassin_Pacific', use_bassin_Pacific)222 CALL get _in('use_bassin_MerArabie', use_bassin_MerArabie)223 CALL get _in('use_bassin_BengalGolf', use_bassin_BengalGolf)224 CALL get _in('use_bassin_SouthIndian',use_bassin_SouthIndian)225 CALL get _in('use_bassin_Tropics', use_bassin_Tropics)226 CALL get _in('use_bassin_Midlats', use_bassin_Midlats)227 CALL get _in('use_bassin_HighLats', use_bassin_HighLats)220 CALL getin_p('use_bassin_Atlantic', use_bassin_Atlantic) 221 CALL getin_p('use_bassin_Medit', use_bassin_Medit) 222 CALL getin_p('use_bassin_Indian', use_bassin_Indian) 223 CALL getin_p('use_bassin_Austral', use_bassin_Austral) 224 CALL getin_p('use_bassin_Pacific', use_bassin_Pacific) 225 CALL getin_p('use_bassin_MerArabie', use_bassin_MerArabie) 226 CALL getin_p('use_bassin_BengalGolf', use_bassin_BengalGolf) 227 CALL getin_p('use_bassin_SouthIndian',use_bassin_SouthIndian) 228 CALL getin_p('use_bassin_Tropics', use_bassin_Tropics) 229 CALL getin_p('use_bassin_Midlats', use_bassin_Midlats) 230 CALL getin_p('use_bassin_HighLats', use_bassin_HighLats) 228 231 nzone_opt = 2 + COUNT([use_bassin_Atlantic, use_bassin_Medit, use_bassin_Indian, & 229 232 use_bassin_Austral, use_bassin_Pacific, use_bassin_MerArabie, use_bassin_BengalGolf, & … … 353 356 ! 1 par defaut pour colorier a la fois condensat LS et condensat convectif. 354 357 ! Mais on peut mettre 2 si on ne veut que colorier que le condensat convectif. 355 CALL get _in('option_cond',option_cond)358 CALL getin_p('option_cond',option_cond) 356 359 strtrac(izone_poubelle)='res' 357 360 strtrac(izone_cond)='con' … … 587 590 CASE(20) !=== TRACING TROPICAL/EXTRATROPICAL/EXTRATROPICAL RECYCLING TO STUDY HUMIDITY AND SUBTROPICAL ISOTOPES CONTROL 588 591 !======================================================================================================================== 589 CALL get _in('lim_tag20', lim_tag20, 35.0)592 CALL getin_p('lim_tag20', lim_tag20, 35.0) 590 593 nzone_opt=3 591 594 izone_cont=1 … … 622 625 CASE(22) !=== TRACING WATER VAPOUR PROCESSED IN THE 3-LEVELS SCONVECTION ZONES BT, MT AND UT 623 626 !======================================================================================================================== 624 CALL get _in('lim_precip_tag22', lim_precip_tag22, 20.0)627 CALL getin_p('lim_precip_tag22', lim_precip_tag22, 20.0) 625 628 nzone_opt=3 626 629 izone_cont=1 … … 650 653 IF(option_tmin == 1) THEN 651 654 seuil_tag_tmin = 0.01 652 CALL get _in('seuil_tag_tmin', seuil_tag_tmin, 0.01)653 CALL get _in('seuil_tag_tmin_ls', seuil_tag_tmin_ls, seuil_tag_tmin)654 CALL get _in('option_seuil_tag_tmin', option_seuil_tag_tmin, 1)655 CALL getin_p('seuil_tag_tmin', seuil_tag_tmin, 0.01) 656 CALL getin_p('seuil_tag_tmin_ls', seuil_tag_tmin_ls, seuil_tag_tmin) 657 CALL getin_p('option_seuil_tag_tmin', option_seuil_tag_tmin, 1) 655 658 END IF 656 659
Note: See TracChangeset
for help on using the changeset viewer.