Changeset 6200
- Timestamp:
- Apr 23, 2026, 8:17:40 PM (11 days ago)
- File:
-
- 1 edited
-
LMDZ6/trunk/libf/phylmd/conf_phys_m.f90 (modified) (23 diffs)
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/conf_phys_m.f90
r6198 r6200 6 6 MODULE conf_phys_m 7 7 8 USE clesphys_mod_h9 IMPLICIT NONE10 11 ! Récupéré de physiq_mod mars 2026. Faire le tri de ce qui doit être réintégré dans12 ! des modules spécifiques13 LOGICAL, SAVE, PROTECTED :: ok_journe, ok_mensuel, ok_instan, ok_hf, ok_LES14 !$OMP THREADPRIVATE(ok_journe, ok_mensuel, ok_instan, ok_hf, ok_LES)15 LOGICAL, SAVE, PROTECTED :: ok_volcan ! pour activer les diagnostics volcaniques16 !$OMP THREADPRIVATE(ok_volcan)17 INTEGER, SAVE, PROTECTED :: flag_volc_surfstrat ! pour imposer le cool/heat rate à la surf/strato18 !$OMP THREADPRIVATE(flag_volc_surfstrat)19 INTEGER, SAVE, PROTECTED :: iflag_radia ! active ou non le rayonnement (MPL)20 !$OMP THREADPRIVATE(iflag_radia)21 REAL, SAVE, PROTECTED :: facttemps, fact_cldcon22 !$OMP THREADPRIVATE(facttemps,fact_cldcon)23 INTEGER, SAVE, PROTECTED :: iflag_cld_th24 !$OMP THREADPRIVATE(iflag_cld_th)25 LOGICAL ok_ade, ok_aie ! Apply aerosol (in)direct effects or not26 LOGICAL ok_alw ! Apply aerosol LW effect or not27 LOGICAL ok_cdnc ! ok cloud droplet number concentration (O. Boucher 01-2013)28 REAL bl95_b0, bl95_b1 ! Parameter in Boucher and Lohmann (1995)29 SAVE ok_ade, ok_aie, ok_alw, ok_cdnc, bl95_b0, bl95_b130 !$OMP THREADPRIVATE(ok_ade, ok_aie, ok_alw, ok_cdnc, bl95_b0, bl95_b1)31 LOGICAL, SAVE :: aerosol_couple ! true : calcul des aerosols dans INCA32 ! false : lecture des aerosol dans un fichier33 !$OMP THREADPRIVATE(aerosol_couple)34 LOGICAL, SAVE :: chemistry_couple ! true : use INCA chemistry O335 ! false : use offline chemistry O336 !$OMP THREADPRIVATE(chemistry_couple)37 INTEGER, SAVE :: flag_aerosol38 !$OMP THREADPRIVATE(flag_aerosol)39 LOGICAL, SAVE :: flag_bc_internal_mixture40 !$OMP THREADPRIVATE(flag_bc_internal_mixture)41 !42 !--STRAT AEROSOL43 INTEGER, SAVE :: flag_aerosol_strat44 !$OMP THREADPRIVATE(flag_aerosol_strat)45 !46 !--INTERACTIVE AEROSOL FEEDBACK ON RADIATION47 LOGICAL, SAVE :: flag_aer_feedback48 !$OMP THREADPRIVATE(flag_aer_feedback)49 50 REAL,SAVE :: solarlong051 !$OMP THREADPRIVATE(solarlong0)52 53 REAL, SAVE :: alp_offset54 !$OMP THREADPRIVATE(alp_offset)55 56 INTEGER, SAVE, protected:: read_climoz = 0 ! read ozone climatology57 ! Allowed values are 0, 1 and 258 ! 0: do not read an ozone climatology59 ! 1: read a single ozone climatology that will be used day and night60 ! 2: read two ozone climatologies, the average day and night61 ! climatology and the daylight climatology62 !$OMP THREADPRIVATE(read_climoz)63 64 LOGICAL, SAVE, protected:: ok_daily_climoz65 ! TRUE => daily interpolation66 ! FALSE => no interpolation (14 months)67 ! calendar dependent number of days68 !$OMP THREADPRIVATE(ok_daily_climoz)69 70 LOGICAL, SAVE, protected:: adjust_tropopause71 ! tropopause adjustement required72 !$OMP THREADPRIVATE(adjust_tropopause)8 USE clesphys_mod_h 9 IMPLICIT NONE 10 11 ! Récupéré de physiq_mod mars 2026. Faire le tri de ce qui doit être réintégré dans 12 ! des modules spécifiques 13 LOGICAL, SAVE, PROTECTED :: ok_journe, ok_mensuel, ok_instan, ok_hf, ok_LES 14 !$OMP THREADPRIVATE(ok_journe, ok_mensuel, ok_instan, ok_hf, ok_LES) 15 LOGICAL, SAVE, PROTECTED :: ok_volcan ! pour activer les diagnostics volcaniques 16 !$OMP THREADPRIVATE(ok_volcan) 17 INTEGER, SAVE, PROTECTED :: flag_volc_surfstrat ! pour imposer le cool/heat rate à la surf/strato 18 !$OMP THREADPRIVATE(flag_volc_surfstrat) 19 INTEGER, SAVE, PROTECTED :: iflag_radia ! active ou non le rayonnement (MPL) 20 !$OMP THREADPRIVATE(iflag_radia) 21 REAL, SAVE, PROTECTED :: facttemps, fact_cldcon 22 !$OMP THREADPRIVATE(facttemps,fact_cldcon) 23 INTEGER, SAVE, PROTECTED :: iflag_cld_th 24 !$OMP THREADPRIVATE(iflag_cld_th) 25 LOGICAL ok_ade, ok_aie ! Apply aerosol (in)direct effects or not 26 LOGICAL ok_alw ! Apply aerosol LW effect or not 27 LOGICAL ok_cdnc ! ok cloud droplet number concentration (O. Boucher 01-2013) 28 REAL bl95_b0, bl95_b1 ! Parameter in Boucher and Lohmann (1995) 29 SAVE ok_ade, ok_aie, ok_alw, ok_cdnc, bl95_b0, bl95_b1 30 !$OMP THREADPRIVATE(ok_ade, ok_aie, ok_alw, ok_cdnc, bl95_b0, bl95_b1) 31 LOGICAL, SAVE :: aerosol_couple ! true : calcul des aerosols dans INCA 32 ! false : lecture des aerosol dans un fichier 33 !$OMP THREADPRIVATE(aerosol_couple) 34 LOGICAL, SAVE :: chemistry_couple ! true : use INCA chemistry O3 35 ! false : use offline chemistry O3 36 !$OMP THREADPRIVATE(chemistry_couple) 37 INTEGER, SAVE :: flag_aerosol 38 !$OMP THREADPRIVATE(flag_aerosol) 39 LOGICAL, SAVE :: flag_bc_internal_mixture 40 !$OMP THREADPRIVATE(flag_bc_internal_mixture) 41 ! 42 !--STRAT AEROSOL 43 INTEGER, SAVE :: flag_aerosol_strat 44 !$OMP THREADPRIVATE(flag_aerosol_strat) 45 ! 46 !--INTERACTIVE AEROSOL FEEDBACK ON RADIATION 47 LOGICAL, SAVE :: flag_aer_feedback 48 !$OMP THREADPRIVATE(flag_aer_feedback) 49 50 REAL,SAVE :: solarlong0 51 !$OMP THREADPRIVATE(solarlong0) 52 53 REAL, SAVE :: alp_offset 54 !$OMP THREADPRIVATE(alp_offset) 55 56 INTEGER, SAVE, protected:: read_climoz = 0 ! read ozone climatology 57 ! Allowed values are 0, 1 and 2 58 ! 0: do not read an ozone climatology 59 ! 1: read a single ozone climatology that will be used day and night 60 ! 2: read two ozone climatologies, the average day and night 61 ! climatology and the daylight climatology 62 !$OMP THREADPRIVATE(read_climoz) 63 64 LOGICAL, SAVE, protected:: ok_daily_climoz 65 ! TRUE => daily interpolation 66 ! FALSE => no interpolation (14 months) 67 ! calendar dependent number of days 68 !$OMP THREADPRIVATE(ok_daily_climoz) 69 70 LOGICAL, SAVE, protected:: adjust_tropopause 71 ! tropopause adjustement required 72 !$OMP THREADPRIVATE(adjust_tropopause) 73 73 74 74 CONTAINS … … 76 76 SUBROUTINE conf_phys 77 77 78 USE compbl_mod_h79 USE ioipsl_getin_p_mod, ONLY : getin_p78 USE compbl_mod_h 79 USE ioipsl_getin_p_mod, ONLY : getin_p 80 80 USE alpale_mod 81 81 USE yomcst_mod_h … … 84 84 USE phys_cal_mod 85 85 USE carbon_cycle_mod, ONLY: carbon_cycle_tr, carbon_cycle_cpl, carbon_cycle_rad, level_coupling_esm 86 ! << PC86 ! << PC 87 87 USE carbon_cycle_mod, ONLY: read_daily_co2ff 88 88 USE carbon_cycle_mod, ONLY: carbon_cycle_conc_driven 89 ! >> PC 89 ! >> PC 90 90 USE carbon_cycle_mod, ONLY: read_fco2_ocean_cor,var_fco2_ocean_cor 91 91 USE carbon_cycle_mod, ONLY: read_fco2_land_cor,var_fco2_land_cor … … 100 100 USE comsoil_mod_h 101 101 USE ch4n2o_correction_mod, ONLY: ok_CH4_eff_ppb, ok_N2O_eff_ppb 102 102 103 103 104 104 ! … … 137 137 !----------------------------------------------------------------- 138 138 139 CHARACTER (len = 6) :: ocean140 REAL co2_ppm_per139 CHARACTER (len = 6) :: ocean 140 REAL co2_ppm_per 141 141 print*,'CONFPHYS ENTREE' 142 142 ! … … 270 270 271 271 !================================================================== 272 272 273 273 ! journalieres 274 274 ! … … 659 659 ok_suntime_rrtm = .FALSE. 660 660 IF (iflag_rrtm==1) THEN 661 CALL getin_p('ok_suntime_rrtm',ok_suntime_rrtm)662 ENDIF 663 661 CALL getin_p('ok_suntime_rrtm',ok_suntime_rrtm) 662 ENDIF 663 664 664 ! - 0 = no stratospheric aerosols 665 665 ! - 1 = stratospheric aerosols scaled from 550 nm AOD … … 830 830 CALL getin_p('iflag_physiq',iflag_physiq) 831 831 832 !FC832 !FC 833 833 ! 834 834 ifl_pbltree = 0 835 835 CALL getin_p('ifl_pbltree',ifl_pbltree) 836 !FC836 !FC 837 837 ! 838 838 Cd_frein = 7.5E-02 839 839 CALL getin_p('Cd_frein',Cd_frein) 840 !AM840 !AM 841 841 ! 842 842 iflag_hetero_surf = 0 … … 1090 1090 1091 1091 1092 ! PARAMETERS FOR SNOW AND ICE MELTING1092 ! PARAMETERS FOR SNOW AND ICE MELTING 1093 1093 chasno_tun=0.15 1094 1094 CALL getin_p('chasno_tun',chasno_tun) … … 1126 1126 ! .TRUE. if backward compatibility is needed. 1127 1127 ! and lighter monthly climoz files, inetrpolated in time at gcm run time. 1128 1128 1129 1129 ok_new_lscp = .FALSE. 1130 1130 CALL getin_p('ok_new_lscp', ok_new_lscp) … … 1174 1174 read_fco2_ocean_cor_2d=.FALSE. 1175 1175 CALL getin_p('read_fco2_ocean_cor_2d',read_fco2_ocean_cor_2d) 1176 1176 1177 1177 read_fco2_land_cor_2d=.FALSE. 1178 1178 CALL getin_p('read_fco2_land_cor_2d',read_fco2_land_cor_2d) … … 1208 1208 END IF 1209 1209 1210 1210 1211 1211 dms_cycle_cpl=.FALSE. 1212 1212 CALL getin_p('transm_dms_oa',dms_cycle_cpl) … … 1217 1217 CALL getin_p('transm_n2o_oa',n2o_cycle_cpl) 1218 1218 ! 1219 1219 1220 1220 ndp_cycle_cpl=.FALSE. 1221 1221 CALL getin_p('transm_ndp_ao',ndp_cycle_cpl) 1222 1222 ! 1223 1223 1224 1224 1225 1225 nh3_cycle_cpl=.FALSE. 1226 1226 CALL getin_p('transm_nh3_oa',nh3_cycle_cpl) … … 1238 1238 1239 1239 1240 !FC1241 !AM1240 !FC 1241 !AM 1242 1242 1243 1243 … … 1275 1275 !--test on radiative scheme 1276 1276 IF (iflag_rrtm .EQ. 0) THEN 1277 IF (NSW.NE.2) THEN1278 WRITE(lunout,*) 'conf_phys : ERROR iflag_rrtm=0 and NSW<>2 not possible'1279 CALL abort_physic('conf_phys','choice NSW not valid',1)1280 ENDIF1277 IF (NSW.NE.2) THEN 1278 WRITE(lunout,*) 'conf_phys : ERROR iflag_rrtm=0 and NSW<>2 not possible' 1279 CALL abort_physic('conf_phys','choice NSW not valid',1) 1280 ENDIF 1281 1281 ELSE IF (iflag_rrtm .EQ. 1) THEN 1282 IF (NSW.NE.2.AND.NSW.NE.4.AND.NSW.NE.6) THEN1283 WRITE(lunout,*) 'conf_phys : ERROR iflag_rrtm=1 and NSW<>2,4,6 not possible'1284 CALL abort_physic('conf_phys','choice NSW not valid',1)1285 ENDIF1286 ELSE IF (iflag_rrtm .EQ. 2) THEN1287 IF (NSW.NE.2.AND.NSW.NE.4.AND.NSW.NE.6) THEN1288 WRITE(lunout,*) 'conf_phys : ERROR iflag_rrtm=1 and NSW<>2,4,6 not possible'1289 CALL abort_physic('conf_phys','choice NSW not valid',1)1290 ENDIF1282 IF (NSW.NE.2.AND.NSW.NE.4.AND.NSW.NE.6) THEN 1283 WRITE(lunout,*) 'conf_phys : ERROR iflag_rrtm=1 and NSW<>2,4,6 not possible' 1284 CALL abort_physic('conf_phys','choice NSW not valid',1) 1285 ENDIF 1286 ELSE IF (iflag_rrtm .EQ. 2) THEN 1287 IF (NSW.NE.2.AND.NSW.NE.4.AND.NSW.NE.6) THEN 1288 WRITE(lunout,*) 'conf_phys : ERROR iflag_rrtm=1 and NSW<>2,4,6 not possible' 1289 CALL abort_physic('conf_phys','choice NSW not valid',1) 1290 ENDIF 1291 1291 ELSE 1292 1292 WRITE(lunout,*) 'conf_phys : ERROR iflag_rrtm<>0,1' … … 1294 1294 ENDIF 1295 1295 !--here we test that solaire has not been changed if ok_suntime_rrtm is activated 1296 ! WRITE(lunout,*) 'conf_phys : ERROR ok_suntime_rrtm=y and solaire is provided in def file'1297 ! CALL abort_physic('conf_phys','ok_suntime_rrtm=y and solaire is provided',1)1298 ! ENDIF1299 IF (CPPKEY_STRATAER) THEN1300 IF (iflag_rrtm .NE. 1) THEN1301 WRITE(lunout,*) 'conf_phys : ERROR iflag_rrtm<>1 but StratAer activated'1302 CALL abort_physic('conf_phys','iflag_rrtm not valid for StratAer',1)1303 ENDIF1304 IF (NSW .NE. 6) THEN1305 WRITE(lunout,*) 'conf_phys : ERROR NSW<>6 but StratAer activated'1306 CALL abort_physic('conf_phys','NSW not valid for StratAer',1)1307 ENDIF1308 END IF1296 ! WRITE(lunout,*) 'conf_phys : ERROR ok_suntime_rrtm=y and solaire is provided in def file' 1297 ! CALL abort_physic('conf_phys','ok_suntime_rrtm=y and solaire is provided',1) 1298 ! ENDIF 1299 IF (CPPKEY_STRATAER) THEN 1300 IF (iflag_rrtm .NE. 1) THEN 1301 WRITE(lunout,*) 'conf_phys : ERROR iflag_rrtm<>1 but StratAer activated' 1302 CALL abort_physic('conf_phys','iflag_rrtm not valid for StratAer',1) 1303 ENDIF 1304 IF (NSW .NE. 6) THEN 1305 WRITE(lunout,*) 'conf_phys : ERROR NSW<>6 but StratAer activated' 1306 CALL abort_physic('conf_phys','NSW not valid for StratAer',1) 1307 ENDIF 1308 END IF 1309 1309 1310 1310 !--test on ocean surface albedo … … 1363 1363 IF (flag_volc_surfstrat.LT.0.OR.flag_volc_surfstrat.GT.2) THEN 1364 1364 CALL abort_physic('conf_phys', 'flag_volc_surfstrat can only be 0 1 or 2',1) 1365 ENDIF 1365 ENDIF 1366 1366 IF ((.NOT.ok_volcan.OR..NOT.ok_ade.OR..NOT.ok_aie).AND.flag_volc_surfstrat.GT.0) THEN 1367 1367 CALL abort_physic('conf_phys', 'ok_ade, ok_aie, ok_volcan need to be activated if flag_volc_surfstrat is 1 or 2',1) 1368 ENDIF 1368 ENDIF 1369 1369 1370 1370 ! Test on carbon cycle … … 1376 1376 ENDIF 1377 1377 1378 ! << PC1378 ! << PC 1379 1379 ! Consistency checks for CO2 driving philosophy 1380 1380 ! If CO2 is concentration-driven for the surface components, the radiation … … 1385 1385 WRITE(lunout,*) 'CO2 concentration-driven: radiation uses prescribed co2_ppm: atmospheric tracer is diagnostic only.' 1386 1386 ENDIF 1387 ! >> PC1387 ! >> PC 1388 1388 1389 1389 ! Test on chemistry cycle … … 1391 1391 CALL abort_physic('conf_phys', 'transm_dms_oa, transm_n2o_oa, transm_ndp_ao or transm_nh3_oa can be TRUE only with INCA coupling model',1) 1392 1392 ENDIF 1393 1393 1394 1394 ! ORCHIDEE must be activated for ifl_pbltree=1 1395 1395 IF (.NOT. ok_veget .AND. ifl_pbltree==1) THEN … … 1491 1491 WRITE(lunout,*) 'conf_phys : iflag_pbl = ', iflag_pbl 1492 1492 WRITE(lunout,*) 'conf_phys : iflag_physiq = ', iflag_physiq 1493 !FC1493 !FC 1494 1494 WRITE(lunout,*) 'conf_phys : ifl_pbltree = ', ifl_pbltree 1495 1495 WRITE(lunout,*) 'conf_phys : Cd_frein = ', Cd_frein 1496 !AM1496 !AM 1497 1497 WRITE(lunout,*) 'conf_phys : iflag_hetero_surf = ', iflag_hetero_surf 1498 1498 WRITE(lunout,*) 'conf_phys : iflag_pbl_split = ', iflag_pbl_split … … 1589 1589 WRITE(lunout,*) 'conf_phys : fseaN = ', fseaN 1590 1590 WRITE(lunout,*) 'conf_phys : fseaS = ', fseaS 1591 1591 1592 1592 WRITE(lunout,*) 'conf_phys : n2o_cycle_cpl = ', n2o_cycle_cpl 1593 1593 WRITE(lunout,*) 'conf_phys : ndp_cycle_cpl = ', ndp_cycle_cpl … … 1626 1626 1627 1627 SUBROUTINE conf_interface(tau_calv) 1628 USE ioipsl_getin_p_mod, ONLY : getin_p1628 USE ioipsl_getin_p_mod, ONLY : getin_p 1629 1629 1630 1630 USE IOIPSL
Note: See TracChangeset
for help on using the changeset viewer.
