Changeset 4170 for LMDZ6/trunk/libf/phylmd
- Timestamp:
- Jun 16, 2022, 8:16:59 PM (2 years ago)
- Location:
- LMDZ6/trunk/libf/phylmd
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/infotrac_phy.F90
r4154 r4170 4 4 MODULE infotrac_phy 5 5 6 USE strings_mod, ONLY: msg, maxlen, strStack, strHead, str Idx, int2str6 USE strings_mod, ONLY: msg, maxlen, strStack, strHead, strParse, strIdx, int2str 7 7 USE readTracFiles_mod, ONLY: trac_type, isot_type, keys_type, delPhase, getKey, tnom_iso => newH2OIso 8 8 … … 13 13 !=== FOR TRACERS: 14 14 PUBLIC :: init_infotrac_phy !--- Initialization of the tracers 15 PUBLIC :: tracers, type_trac 15 PUBLIC :: tracers, type_trac, types_trac !--- Full tracers database, tracers type keyword 16 16 PUBLIC :: nqtot, nbtr, nqo, nqCO2, nqtottr !--- Main dimensions 17 17 PUBLIC :: conv_flg, pbl_flg !--- Convection & boundary layer activation keys … … 105 105 nqCO2 !--- Number of tracers of CO2 (ThL) 106 106 CHARACTER(LEN=maxlen), SAVE :: type_trac !--- Keyword for tracers type 107 !$OMP THREADPRIVATE(nqtot, nbtr, nqo, nbIso, nqtottr, nqCO2, type_trac) 107 CHARACTER(LEN=maxlen), SAVE, ALLOCATABLE :: types_trac(:) !--- Keyword for tracers type 108 109 !$OMP THREADPRIVATE(nqtot, nbtr, nqo, nbIso, nqtottr, nqCO2, type_trac, types_trac) 108 110 109 111 !=== DERIVED TYPES EMBEDDING MOST INFORMATIONS ABOUT TRACERS AND ISOTOPES FAMILIES … … 161 163 162 164 type_trac = type_trac_ 165 IF(strParse(type_trac, '|', types_trac)) CALL abort_gcm(modname,'can''t parse "type_trac = '//TRIM(type_trac)//'"',1) 163 166 tracers = tracers_ 164 167 isotopes = isotopes_ … … 186 189 187 190 #ifdef CPP_StratAer 188 IF ( type_trac == 'coag') THEN191 IF (ANY(types_trac == 'coag')) THEN 189 192 nbtr_bin = COUNT([(tracers(iq)%name(1:3)=='BIN', iq=1, nqtot)]) 190 193 nbtr_sulgas = COUNT([(tracers(iq)%name(1:3)=='GAS', iq=1, nqtot)]) -
LMDZ6/trunk/libf/phylmd/phyetat0.F90
r4089 r4170 23 23 USE geometry_mod, ONLY: longitude_deg, latitude_deg 24 24 USE iostart, ONLY: close_startphy, get_field, get_var, open_startphy 25 USE infotrac_phy, ONLY: nqtot, nbtr, type _trac, tracers25 USE infotrac_phy, ONLY: nqtot, nbtr, types_trac, tracers 26 26 USE traclmdz_mod, ONLY: traclmdz_from_restart 27 27 USE carbon_cycle_mod, ONLY: carbon_cycle_tr, carbon_cycle_cpl, co2_send … … 449 449 !=========================================== 450 450 451 IF (type_trac == 'lmdz') THEN 451 !--OB now this is for co2i - ThL: and therefore also for inco 452 IF (ANY(types_trac == 'co2i') .OR. ANY(types_trac == 'inco')) THEN 453 IF (carbon_cycle_cpl) THEN 454 ALLOCATE(co2_send(klon), stat=ierr) 455 IF (ierr /= 0) CALL abort_physic('phyetat0', 'pb allocation co2_send', 1) 456 found=phyetat0_get(1,co2_send,"co2_send","co2 send",co2_ppm) 457 ENDIF 458 ELSE IF (ANY(types_trac == 'lmdz')) THEN 452 459 it = 0 453 460 DO iq = 1, nqtot … … 460 467 ENDIF 461 468 462 !--OB now this is for co2i - ThL: and therefore also for inco463 IF (type_trac == 'co2i' .OR. type_trac == 'inco') THEN464 IF (carbon_cycle_cpl) THEN465 ALLOCATE(co2_send(klon), stat=ierr)466 IF (ierr /= 0) CALL abort_physic('phyetat0', 'pb allocation co2_send', 1)467 found=phyetat0_get(1,co2_send,"co2_send","co2 send",co2_ppm)468 ENDIF469 ENDIF470 469 471 470 !=========================================== -
LMDZ6/trunk/libf/phylmd/phyredem.F90
r4089 r4170 35 35 USE iostart, ONLY: open_restartphy, close_restartphy, enddef_restartphy, put_field, put_var 36 36 USE traclmdz_mod, ONLY : traclmdz_to_restart 37 USE infotrac_phy, ONLY: type _trac, nqtot, tracers, nbtr37 USE infotrac_phy, ONLY: types_trac, nqtot, tracers, nbtr 38 38 USE carbon_cycle_mod, ONLY : carbon_cycle_cpl, co2_send 39 39 USE indice_sol_mod, ONLY: nbsrf, is_oce, is_sic, is_ter, is_lic, epsfra … … 325 325 326 326 327 ! trs from traclmdz_mod 328 IF (type_trac == 'lmdz') THEN 329 CALL traclmdz_to_restart(trs) 330 it = 0 331 DO iq = 1, nqtot 332 IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE 333 it = it+1 334 CALL put_field(pass,"trs_"//tracers(iq)%name, "", trs(:, it)) 335 END DO 336 END IF 337 338 IF (type_trac == 'co2i' .OR. type_trac == 'inco') THEN 327 IF (ANY(types_trac == 'co2i') .OR. ANY(types_trac == 'inco')) THEN 339 328 IF (carbon_cycle_cpl) THEN 340 329 IF (.NOT. ALLOCATED(co2_send)) THEN … … 345 334 CALL put_field(pass,"co2_send", "co2_ppm for coupling", co2_send) 346 335 END IF 336 337 ! trs from traclmdz_mod 338 ELSE IF (ANY(types_trac == 'lmdz')) THEN 339 CALL traclmdz_to_restart(trs) 340 it = 0 341 DO iq = 1, nqtot 342 IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE 343 it = it+1 344 CALL put_field(pass,"trs_"//tracers(iq)%name, "", trs(:, it)) 345 END DO 347 346 END IF 348 347 -
LMDZ6/trunk/libf/phylmd/phys_output_mod.F90
r4143 r4170 35 35 USE iophy 36 36 USE dimphy 37 USE infotrac_phy, ONLY: nqtot, tracers, type_trac,niso37 USE infotrac_phy, ONLY: nqtot, tracers, niso 38 38 USE strings_mod, ONLY: maxlen 39 39 USE ioipsl -
LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90
r4143 r4170 25 25 26 26 USE dimphy, ONLY: klon, klev, klevp1 27 USE infotrac_phy, ONLY: nbtr, nqtot, nqo, type _trac, tracers, niso, ntiso27 USE infotrac_phy, ONLY: nbtr, nqtot, nqo, types_trac, tracers, niso, ntiso 28 28 USE strings_mod, ONLY: maxlen 29 29 USE mod_phys_lmdz_para, ONLY: is_north_pole_phy,is_south_pole_phy … … 942 942 CALL histwrite_phy(o_SWupTOAclr, zx_tmp_fi2d) 943 943 944 IF ( (type_trac/='inca') .OR. (config_inca=='aeNP')) THEN944 IF (ALL(types_trac/='inca') .OR. config_inca=='aeNP') THEN 945 945 IF (vars_defined) THEN 946 946 zx_tmp_fi2d(:) = swupc0(:,klevp1)*swradcorr(:) … … 1014 1014 CALL histwrite_phy(o_SWupSFCclr, zx_tmp_fi2d) 1015 1015 1016 IF ( (type_trac/='inca') .OR. (config_inca=='aeNP')) THEN1016 IF (ALL(types_trac/='inca') .OR. config_inca=='aeNP') THEN 1017 1017 IF (vars_defined) THEN 1018 1018 zx_tmp_fi2d(:) = swupc0(:,1)*swradcorr(:) … … 1031 1031 CALL histwrite_phy(o_SWdnSFCclr, zx_tmp_fi2d) 1032 1032 1033 IF ( (type_trac/='inca') .OR. (config_inca=='aeNP')) THEN1033 IF (ALL(types_trac/='inca') .OR. config_inca=='aeNP') THEN 1034 1034 IF (vars_defined) THEN 1035 1035 zx_tmp_fi2d(:) = swdnc0(:,1)*swradcorr(:) … … 1053 1053 CALL histwrite_phy(o_LWdnSFCclr, sollwdownclr) 1054 1054 1055 IF ( (type_trac/='inca') .OR. (config_inca=='aeNP')) THEN1055 IF (ALL(types_trac/='inca') .OR. config_inca=='aeNP') THEN 1056 1056 IF (vars_defined) THEN 1057 1057 zx_tmp_fi2d(:) = lwupc0(:,klevp1) … … 1060 1060 ENDIF 1061 1061 1062 IF ( (type_trac/='inca') .OR. (config_inca=='aeNP')) THEN1062 IF (ALL(types_trac/='inca') .OR. config_inca=='aeNP') THEN 1063 1063 IF (vars_defined) THEN 1064 1064 zx_tmp_fi2d(:) = -1.*lwdnc0(:,1) … … 1569 1569 !This is warranted by treating INCA aerosols as offline aerosols 1570 1570 IF (flag_aerosol.GT.0) THEN 1571 IF ( (type_trac/='inca') .OR. (config_inca=='aeNP')) THEN1571 IF (ALL(types_trac/='inca') .OR. config_inca=='aeNP') THEN 1572 1572 1573 1573 CALL histwrite_phy(o_od443aer, od443aer) … … 1633 1633 1634 1634 #ifdef CPP_StratAer 1635 IF ( type_trac=='coag') THEN1635 IF (ANY(types_trac=='coag')) THEN 1636 1636 CALL histwrite_phy(o_R2SO4, R2SO4) 1637 1637 CALL histwrite_phy(o_OCS_lifetime, OCS_lifetime) … … 1692 1692 CALL histwrite_phy(o_solswad0, zx_tmp_fi2d) 1693 1693 1694 IF ( (type_trac/='inca') .OR. (config_inca=='aeNP')) THEN1694 IF (ALL(types_trac/='inca') .OR. config_inca=='aeNP') THEN 1695 1695 1696 1696 CALL histwrite_phy(o_toplwad, toplwad_aero) … … 1769 1769 ! Champs 3D: 1770 1770 IF (ok_ade .OR. ok_aie) then 1771 IF ( (type_trac/='inca') .OR. (config_inca=='aeNP')) THEN1771 IF (ALL(types_trac/='inca') .OR. config_inca=='aeNP') THEN 1772 1772 CALL histwrite_phy(o_ec550aer, ec550aer) 1773 1773 ENDIF … … 2228 2228 CALL histwrite_phy(o_rsucs, zx_tmp_fi3d1) 2229 2229 2230 IF ( (type_trac/='inca') .OR. (config_inca=='aeNP')) THEN2230 IF (ALL(types_trac/='inca') .OR. config_inca=='aeNP') THEN 2231 2231 IF (vars_defined) THEN 2232 2232 DO k=1, klevp1 … … 2244 2244 CALL histwrite_phy(o_rsdcs, zx_tmp_fi3d1) 2245 2245 2246 IF ( (type_trac/='inca') .OR. (config_inca=='aeNP')) THEN2246 IF (ALL(types_trac/='inca') .OR. config_inca=='aeNP') THEN 2247 2247 IF (vars_defined) THEN 2248 2248 DO k=1, klevp1 … … 2489 2489 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2490 2490 IF (iflag_phytrac == 1 ) then 2491 IF (type_trac == 'lmdz' .OR. type_trac == 'coag') THEN 2491 ! 2492 IF (ANY(types_trac == 'co2i')) THEN 2493 itr = 0 2494 DO iq = 1, nqtot 2495 IF(.NOT.tracers(iq)%isInPhysics) CYCLE 2496 itr = itr + 1 2497 ! write(*,*) 'phys_output_write_mod 2370: itr=',itr 2498 !--3D fields 2499 CALL histwrite_phy(o_trac(itr), tr_seri(:,:,itr)) 2500 CALL histwrite_phy(o_dtr_vdf(itr),d_tr_cl(:,:,itr)) 2501 CALL histwrite_phy(o_dtr_the(itr),d_tr_th(:,:,itr)) 2502 CALL histwrite_phy(o_dtr_con(itr),d_tr_cv(:,:,itr)) 2503 !--2D fields 2504 !--CO2 burden 2505 zx_tmp_fi2d=0. 2506 IF (vars_defined) THEN 2507 DO k=1,klev 2508 zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,itr) 2509 ENDDO 2510 ENDIF 2511 CALL histwrite_phy(o_trac_cum(itr), zx_tmp_fi2d) 2512 ENDDO !--iq 2513 !--CO2 net fluxes 2514 CALL histwrite_phy(o_flx_co2_land, fco2_land) 2515 CALL histwrite_phy(o_flx_co2_ocean, fco2_ocean) 2516 CALL histwrite_phy(o_flx_co2_ocean_cor, fco2_ocean_cor) 2517 CALL histwrite_phy(o_flx_co2_land_cor, fco2_land_cor) 2518 CALL histwrite_phy(o_flx_co2_ff, fco2_ff) 2519 CALL histwrite_phy(o_flx_co2_bb, fco2_bb) 2520 2521 ELSE IF (ANY(types_trac == 'inco')) THEN 2522 itr = 0 2523 DO iq = 1, nqtot 2524 IF(.NOT.tracers(iq)%isInPhysics) CYCLE 2525 itr = itr+1 2526 IF(tracers(iq)%component /= 'co2i') CYCLE 2527 !--3D fields 2528 CALL histwrite_phy(o_trac (itr),tr_seri(:,:,itr)) 2529 CALL histwrite_phy(o_dtr_vdf(itr),d_tr_cl(:,:,itr)) 2530 CALL histwrite_phy(o_dtr_the(itr),d_tr_th(:,:,itr)) 2531 CALL histwrite_phy(o_dtr_con(itr),d_tr_cv(:,:,itr)) 2532 !--2D fields 2533 !--CO2 burden 2534 zx_tmp_fi2d=0. 2535 IF (vars_defined) THEN 2536 DO k=1,klev 2537 zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,itr) 2538 ENDDO 2539 ENDIF 2540 CALL histwrite_phy(o_trac_cum(itr), zx_tmp_fi2d) 2541 ENDDO !--iq 2542 !--CO2 net fluxes 2543 CALL histwrite_phy(o_flx_co2_land, fco2_land) 2544 CALL histwrite_phy(o_flx_co2_ocean, fco2_ocean) 2545 CALL histwrite_phy(o_flx_co2_ocean_cor, fco2_ocean_cor) 2546 CALL histwrite_phy(o_flx_co2_land_cor, fco2_land_cor) 2547 CALL histwrite_phy(o_flx_co2_ff, fco2_ff) 2548 CALL histwrite_phy(o_flx_co2_bb, fco2_bb) 2549 2550 ELSE IF (ANY(types_trac=='lmdz') .OR. ANY(types_trac=='coag')) THEN 2492 2551 itr = 0 2493 2552 DO iq = 1, nqtot … … 2521 2580 ENDDO !--iq 2522 2581 ENDIF !--type_trac 2523 !2524 IF (type_trac == 'co2i') THEN2525 itr = 02526 DO iq = 1, nqtot2527 IF(.NOT.tracers(iq)%isInPhysics) CYCLE2528 itr = itr + 12529 ! write(*,*) 'phys_output_write_mod 2370: itr=',itr2530 !--3D fields2531 CALL histwrite_phy(o_trac(itr), tr_seri(:,:,itr))2532 CALL histwrite_phy(o_dtr_vdf(itr),d_tr_cl(:,:,itr))2533 CALL histwrite_phy(o_dtr_the(itr),d_tr_th(:,:,itr))2534 CALL histwrite_phy(o_dtr_con(itr),d_tr_cv(:,:,itr))2535 !--2D fields2536 !--CO2 burden2537 zx_tmp_fi2d=0.2538 IF (vars_defined) THEN2539 DO k=1,klev2540 zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,itr)2541 ENDDO2542 ENDIF2543 CALL histwrite_phy(o_trac_cum(itr), zx_tmp_fi2d)2544 ENDDO !--iq2545 !--CO2 net fluxes2546 CALL histwrite_phy(o_flx_co2_land, fco2_land)2547 CALL histwrite_phy(o_flx_co2_ocean, fco2_ocean)2548 CALL histwrite_phy(o_flx_co2_ocean_cor, fco2_ocean_cor)2549 CALL histwrite_phy(o_flx_co2_land_cor, fco2_land_cor)2550 CALL histwrite_phy(o_flx_co2_ff, fco2_ff)2551 CALL histwrite_phy(o_flx_co2_bb, fco2_bb)2552 ENDIF !--type_trac co2i2553 2554 IF (type_trac == 'inco') THEN2555 itr = 02556 DO iq = 1, nqtot2557 IF(.NOT.tracers(iq)%isInPhysics) CYCLE2558 itr = itr+12559 IF(tracers(iq)%component /= 'co2i') CYCLE2560 !--3D fields2561 CALL histwrite_phy(o_trac (itr),tr_seri(:,:,itr))2562 CALL histwrite_phy(o_dtr_vdf(itr),d_tr_cl(:,:,itr))2563 CALL histwrite_phy(o_dtr_the(itr),d_tr_th(:,:,itr))2564 CALL histwrite_phy(o_dtr_con(itr),d_tr_cv(:,:,itr))2565 !--2D fields2566 !--CO2 burden2567 zx_tmp_fi2d=0.2568 IF (vars_defined) THEN2569 DO k=1,klev2570 zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,itr)2571 ENDDO2572 ENDIF2573 CALL histwrite_phy(o_trac_cum(itr), zx_tmp_fi2d)2574 ENDDO !--iq2575 !--CO2 net fluxes2576 CALL histwrite_phy(o_flx_co2_land, fco2_land)2577 CALL histwrite_phy(o_flx_co2_ocean, fco2_ocean)2578 CALL histwrite_phy(o_flx_co2_ocean_cor, fco2_ocean_cor)2579 CALL histwrite_phy(o_flx_co2_land_cor, fco2_land_cor)2580 CALL histwrite_phy(o_flx_co2_ff, fco2_ff)2581 CALL histwrite_phy(o_flx_co2_bb, fco2_bb)2582 ENDIF !--type_trac inco2583 2584 2582 ENDIF !(iflag_phytrac==1) 2585 2583 -
LMDZ6/trunk/libf/phylmd/physiq_mod.F90
r4143 r4170 40 40 USE ioipsl_getin_p_mod, ONLY : getin_p 41 41 USE indice_sol_mod 42 USE infotrac_phy, ONLY: nqtot, nbtr, nqo, tracers, type _trac, nqCO242 USE infotrac_phy, ONLY: nqtot, nbtr, nqo, tracers, types_trac, nqCO2 43 43 USE readTracFiles_mod, ONLY: addPhase 44 44 USE strings_mod, ONLY: strIdx … … 1454 1454 tau_overturning_th(:)=0. 1455 1455 1456 IF ( type_trac == 'inca' .OR. type_trac == 'inco') THEN1456 IF (ANY(types_trac == 'inca') .OR. ANY(types_trac == 'inco')) THEN 1457 1457 ! jg : initialisation jusqu'au ces variables sont dans restart 1458 1458 ccm(:,:,:) = 0. … … 2021 2021 !c ENDDO 2022 2022 ! 2023 IF ( type_trac == 'inca' .OR. type_trac == 'inco') THEN! ModThL2023 IF (ANY(types_trac == 'inca') .OR. ANY(types_trac == 'inco')) THEN ! ModThL 2024 2024 #ifdef INCA 2025 2025 CALL VTe(VTphysiq) … … 2078 2078 ENDIF 2079 2079 ! 2080 IF ( type_trac == 'repr') THEN2080 IF (ANY(types_trac == 'repr')) THEN 2081 2081 #ifdef REPROBUS 2082 2082 CALL chemini_rep( & … … 2191 2191 2192 2192 ! Update time and other variables in Reprobus 2193 IF ( type_trac == 'repr') THEN2193 IF (ANY(types_trac == 'repr')) THEN 2194 2194 #ifdef REPROBUS 2195 2195 CALL Init_chem_rep_xjour(jD_cur-jD_ref+day_ref) … … 2982 2982 ! 2983 2983 !>jyg 2984 IF ( type_trac == 'repr') THEN2984 IF (ANY(types_trac == 'repr')) THEN 2985 2985 nbtr_tmp=ntra 2986 2986 ELSE … … 3887 3887 ENDDO 3888 3888 3889 IF ( type_trac == 'inca' .OR. type_trac == 'inco') THEN! ModThL3889 IF (ANY(types_trac == 'inca') .OR. ANY(types_trac == 'inco')) THEN ! ModThL 3890 3890 #ifdef INCA 3891 3891 CALL VTe(VTphysiq) … … 3943 3943 #endif 3944 3944 ENDIF !type_trac = inca or inco 3945 IF ( type_trac == 'repr') THEN3945 IF (ANY(types_trac == 'repr')) THEN 3946 3946 #ifdef REPROBUS 3947 3947 !CALL chemtime_rep(itap+itau_phy-1, date0, dtime, itap) … … 4920 4920 ! 4921 4921 4922 IF ( type_trac=='repr') THEN4922 IF (ANY(types_trac=='repr')) THEN 4923 4923 !MM pas d'impact, car on recupere q_seri,tr_seri,t_seri via phys_local_var_mod 4924 4924 !MM dans Reprobus … … 5074 5074 ENDDO 5075 5075 ! 5076 IF ( type_trac == 'inca' .OR. type_trac == 'inco') THEN5076 IF (ANY(types_trac == 'inca') .OR. ANY(types_trac == 'inco')) THEN 5077 5077 #ifdef INCA 5078 5078 CALL VTe(VTphysiq) … … 5098 5098 ENDIF 5099 5099 5100 IF ( type_trac == 'repr') THEN5100 IF (ANY(types_trac == 'repr')) THEN 5101 5101 #ifdef REPROBUS 5102 5102 CALL coord_hyb_rep(paprs, pplay, aps, bps, ap, bp, cell_area) … … 5360 5360 5361 5361 #ifdef INCA 5362 if ( type_trac == 'inca') then5362 if (ANY(types_trac == 'inca' )) then 5363 5363 IF (is_omp_master .and. grid_type==unstructured) THEN 5364 5364 CALL finalize_inca -
LMDZ6/trunk/libf/phylmd/phytrac_mod.F90
r4124 r4170 56 56 SUBROUTINE phytrac_init() 57 57 USE dimphy 58 USE infotrac_phy, ONLY: nbtr, type _trac58 USE infotrac_phy, ONLY: nbtr, types_trac 59 59 USE tracco2i_mod, ONLY: tracco2i_init 60 60 IMPLICIT NONE … … 78 78 ! 79 79 !=============================================================================== 80 SELECT CASE(type_trac) 81 CASE('co2i') 82 ! -- CO2 interactif -- 83 CALL tracco2i_init() 84 CASE('inco') 85 CALL tracco2i_init() 86 END SELECT 80 ! -- CO2 interactif -- 81 IF(ANY(types_trac == 'co2i') .OR. ANY(types_trac == 'inco')) CALL tracco2i_init() 87 82 88 83 … … 124 119 USE phys_cal_mod, only : hour 125 120 USE dimphy 126 USE infotrac_phy, ONLY: nbtr, nqCO2, type _trac, conv_flg, pbl_flg121 USE infotrac_phy, ONLY: nbtr, nqCO2, types_trac, type_trac, conv_flg, pbl_flg 127 122 USE strings_mod, ONLY: int2str 128 123 USE mod_grid_phy_lmdz … … 491 486 492 487 ! Initialize module for specific tracers 493 SELECT CASE(type_trac) 494 CASE('lmdz') 495 CALL traclmdz_init(pctsrf,xlat,xlon,ftsol,tr_seri,t_seri,pplay,sh,pdtphys,aerosol,lessivage) 496 CASE('inca') 488 IF(ANY(types_trac == 'inca')) THEN 497 489 source(:,:)=init_source(:,:) 498 490 CALL tracinca_init(aerosol,lessivage) 499 CASE('repr')491 ELSE IF(ANY(types_trac == 'repr')) THEN 500 492 source(:,:)=0. 501 CASE('co2i')493 ELSE IF(ANY(types_trac == 'co2i')) THEN 502 494 source(:,:)=0. 503 495 lessivage = .FALSE. … … 507 499 iflag_vdf_trac= 1 508 500 iflag_con_trac= 1 509 CASE('inco')501 ELSE IF(ANY(types_trac == 'inco')) THEN 510 502 source(:,1:nqCO2) = 0. ! from CO2i ModThL 511 503 source(:,nqCO2+1:nbtr)=init_source(:,:) ! from INCA ModThL … … 517 509 iflag_con_trac = 1 ! From CO2i 518 510 #ifdef CPP_StratAer 519 CASE('coag')511 ELSE IF(ANY(types_trac == 'coag')) THEN 520 512 source(:,:)=0. 521 513 DO it= 1, nbtr_sulgas … … 527 519 ENDDO 528 520 #endif 529 END SELECT 521 ELSE IF(ANY(types_trac == 'lmdz')) THEN 522 CALL traclmdz_init(pctsrf,xlat,xlon,ftsol,tr_seri,t_seri,pplay,sh,pdtphys,aerosol,lessivage) 523 END IF 530 524 531 525 ! … … 540 534 ! 541 535 DO it=1, nbtr 542 SELECT CASE(type_trac) 543 CASE('lmdz') 544 IF (convscav.and.aerosol(it)) THEN 545 flag_cvltr(it)=.TRUE. 546 ccntrAA(it) =ccntrAA_in !--a modifier par JYG a lire depuis fichier 547 ccntrENV(it)=ccntrENV_in 548 coefcoli(it)=coefcoli_in 549 ELSE 550 flag_cvltr(it)=.FALSE. 551 ENDIF 552 553 CASE('repr') 536 IF(ANY(types_trac == 'repr')) THEN 554 537 flag_cvltr(it)=.FALSE. 555 556 CASE('inca') 538 ELSE IF(ANY(types_trac == 'inca')) THEN 557 539 ! IF ((it.EQ.id_Rn222) .OR. ((it.GE.id_SO2) .AND. (it.LE.id_NH3)) ) THEN 558 540 ! !--gas-phase species … … 578 560 !--for now we do not scavenge in cvltr 579 561 flag_cvltr(it)=.FALSE. 580 581 CASE('co2i') 562 ELSE IF(ANY(types_trac == 'co2i')) THEN 582 563 !--co2 tracers are not scavenged 583 564 flag_cvltr(it)=.FALSE. 584 CASE('inco')! Add ThL565 ELSE IF(ANY(types_trac == 'inco')) THEN ! Add ThL 585 566 flag_cvltr(it)=.FALSE. 586 567 #ifdef CPP_StratAer 587 CASE('coag')568 ELSE IF(ANY(types_trac == 'coag')) THEN 588 569 IF (convscav.and.aerosol(it)) THEN 589 570 flag_cvltr(it)=.TRUE. … … 595 576 ENDIF 596 577 #endif 597 598 END SELECT 578 ELSE IF(ANY(types_trac == 'lmdz')) THEN 579 IF (convscav.and.aerosol(it)) THEN 580 flag_cvltr(it)=.TRUE. 581 ccntrAA(it) =ccntrAA_in !--a modifier par JYG a lire depuis fichier 582 ccntrENV(it)=ccntrENV_in 583 coefcoli(it)=coefcoli_in 584 ELSE 585 flag_cvltr(it)=.FALSE. 586 ENDIF 587 END IF 599 588 ENDDO 600 589 ! … … 620 609 write(lunout,*) 'flag_cvltr = ', flag_cvltr 621 610 622 IF (lessivage .AND. ( type_trac .EQ. 'inca' .OR. type_trac .EQ. 'inco')) THEN ! Mod ThL611 IF (lessivage .AND. (ANY(types_trac == 'inca') .OR. ANY(types_trac=='inco'))) THEN ! Mod ThL 623 612 CALL abort_physic('phytrac', 'lessivage=T config_inca=inca impossible',1) 624 613 ! STOP … … 646 635 ! 647 636 !=============================================================================== 648 SELECT CASE(type_trac) 649 CASE('lmdz') 650 ! -- Traitement des traceurs avec traclmdz 651 CALL traclmdz(nstep, julien, gmtime, pdtphys, t_seri, paprs, pplay, & 652 cdragh, coefh, yu1, yv1, ftsol, pctsrf, xlat, xlon,iflag_vdf_trac>=0,sh, & 653 rh, pphi, ustar, wstar, ale_bl, ale_wake, u10m, v10m, & 654 tr_seri, source, d_tr_cl,d_tr_dec, zmasse) !RomP 655 656 CASE('inca') 637 IF(ANY(types_trac == 'inca')) THEN 657 638 ! -- CHIMIE INCA config_inca = aero or chem -- 658 639 ! Appel fait en fin de phytrac pour avoir les emissions modifiees par 659 640 ! la couche limite et la convection avant le calcul de la chimie 660 641 661 CASE('repr')642 ELSE IF(ANY(types_trac == 'repr')) THEN 662 643 ! -- CHIMIE REPROBUS -- 663 644 CALL tracreprobus(pdtphys, gmtime, debutphy, julien, & … … 666 647 tr_seri) 667 648 668 CASE('co2i')649 ELSE IF(ANY(types_trac == 'co2i')) THEN 669 650 ! -- CO2 interactif -- 670 651 ! -- source is updated with FF and BB emissions … … 675 656 xlat, xlon, pphis, pphi, & 676 657 t_seri, pplay, paprs, tr_seri, source) 677 CASE('inco')! Add ThL658 ELSE IF(ANY(types_trac == 'inco')) THEN ! Add ThL 678 659 CALL tracco2i(pdtphys, debutphy, & 679 660 xlat, xlon, pphis, pphi, & … … 681 662 682 663 #ifdef CPP_StratAer 683 CASE('coag')664 ELSE IF(ANY(types_trac == 'coag')) THEN 684 665 ! --STRATOSPHERIC AER IN THE STRAT -- 685 666 CALL traccoag(pdtphys, gmtime, debutphy, julien, & … … 688 669 tr_seri) 689 670 #endif 690 691 END SELECT 671 ELSE IF(ANY(types_trac == 'lmdz')) THEN 672 ! -- Traitement des traceurs avec traclmdz 673 CALL traclmdz(nstep, julien, gmtime, pdtphys, t_seri, paprs, pplay, & 674 cdragh, coefh, yu1, yv1, ftsol, pctsrf, xlat, xlon,iflag_vdf_trac>=0,sh, & 675 rh, pphi, ustar, wstar, ale_bl, ale_wake, u10m, v10m, & 676 tr_seri, source, d_tr_cl,d_tr_dec, zmasse) !RomP 677 END IF 692 678 !====================================================================== 693 679 ! -- Calcul de l'effet de la convection -- … … 759 745 760 746 #ifdef CPP_StratAer 761 IF ( type_trac=='coag') THEN747 IF (ANY(types_trac=='coag')) THEN 762 748 ! initialize wet deposition flux of sulfur 763 749 budg_dep_wet_ocs(:)=0.0 … … 840 826 ! 841 827 #ifdef CPP_StratAer 842 IF ( type_trac=='coag') THEN828 IF (ANY(types_trac=='coag')) THEN 843 829 844 830 ! initialize dry deposition flux of sulfur … … 877 863 ! 878 864 #ifdef CPP_StratAer 879 IF ( type_trac=='coag') THEN865 IF (ANY(types_trac=='coag')) THEN 880 866 ! compute dry deposition flux of sulfur (sum over gases and particles) 881 867 IF (it==id_OCS_strat) THEN … … 962 948 963 949 #ifdef CPP_StratAer 964 IF ( type_trac=='coag') THEN950 IF (ANY(types_trac=='coag')) THEN 965 951 ! compute wet deposition flux of sulfur (sum over gases and 966 952 ! particles) and convert to kg(S)/m2/s … … 1102 1088 1103 1089 ! -- CHIMIE INCA config_inca = aero or chem -- 1104 IF ( type_trac == 'inca' .OR. type_trac == 'inco') THEN ! ModThL1090 IF (ANY(types_trac == 'inca') .OR. ANY(types_trac == 'inco')) THEN ! ModThL 1105 1091 1106 1092 CALL tracinca(& -
LMDZ6/trunk/libf/phylmd/radiation_AR4.F90
r3666 r4170 479 479 USE dimphy 480 480 USE radiation_ar4_param, ONLY: rsun, rray 481 USE infotrac_phy, ONLY: type _trac481 USE infotrac_phy, ONLY: types_trac 482 482 #ifdef REPROBUS 483 483 USE chem_rep, ONLY: rsuntime, ok_suntime … … 571 571 ! If running with Reporbus, overwrite default values of RSUN. 572 572 ! Otherwise keep default values from radiation_AR4_param module. 573 IF ( type_trac=='repr') THEN573 IF (ANY(types_trac=='repr')) THEN 574 574 #ifdef REPROBUS 575 575 IF (ok_suntime) THEN … … 701 701 USE dimphy 702 702 USE radiation_ar4_param, ONLY: rsun, rray 703 USE infotrac_phy, ONLY: type _trac703 USE infotrac_phy, ONLY: types_trac 704 704 #ifdef REPROBUS 705 705 USE chem_rep, ONLY: rsuntime, ok_suntime … … 825 825 ! If running with Reporbus, overwrite default values of RSUN. 826 826 ! Otherwise keep default values from radiation_AR4_param module. 827 IF ( type_trac=='repr') THEN827 IF (ANY(types_trac=='repr')) THEN 828 828 #ifdef REPROBUS 829 829 IF (ok_suntime) THEN … … 2313 2313 USE dimphy 2314 2314 USE radiation_ar4_param, ONLY: tref, rt1, raer, at, bt, oct 2315 USE infotrac_phy, ONLY: type _trac2315 USE infotrac_phy, ONLY: types_trac 2316 2316 #ifdef REPROBUS 2317 2317 USE chem_rep, ONLY: rch42d, rn2o2d, rcfc112d, rcfc122d, ok_rtime2d … … 2621 2621 2622 2622 2623 IF ( type_trac=='repr') THEN2623 IF (ANY(types_trac=='repr')) THEN 2624 2624 #ifdef REPROBUS 2625 2625 IF (ok_rtime2d) THEN -
LMDZ6/trunk/libf/phylmd/radlwsw_m.F90
r4116 r4170 48 48 USE DIMPHY 49 49 USE assert_m, ONLY : assert 50 USE infotrac_phy, ONLY : type _trac50 USE infotrac_phy, ONLY : types_trac 51 51 USE write_field_phy 52 52 … … 550 550 PSCT = solaire/zdist/zdist 551 551 552 IF ( type_trac == 'repr') THEN552 IF (ANY(types_trac == 'repr')) THEN 553 553 #ifdef REPROBUS 554 554 IF (iflag_rrtm==0) THEN … … 634 634 ENDDO 635 635 636 IF ( type_trac == 'repr') THEN636 IF (ANY(types_trac == 'repr')) THEN 637 637 #ifdef REPROBUS 638 638 ndimozon = size(wo, 3)
Note: See TracChangeset
for help on using the changeset viewer.