Changeset 4263


Ignore:
Timestamp:
Sep 21, 2022, 9:35:28 AM (20 months ago)
Author:
dcugnet
Message:

Fixes for INCO, CO2i AND REPROBUS, mostly because some sections are specific to type_trac=="lmdz",
which is not always equivalent to ANY(types_trac=='lmdz).
Also force the water phases to get tracers(*)%component='lmdz' so that nqo can be correctly computed.

Location:
LMDZ6/trunk/libf
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/dyn3dmem/dynetat0_loc.F90

    r4143 r4263  
    4646  REAL,             ALLOCATABLE :: ucov_glo(:,:),    q_glo(:,:), phis_glo(:)
    4747  REAL,             ALLOCATABLE :: teta_glo(:,:)
     48  LOGICAL :: lOldHNO3
    4849!-------------------------------------------------------------------------------
    4950  modname="dynetat0_loc"
     
    151152!--- Tracers
    152153  ALLOCATE(q_glo(ip1jmp1,llm))
     154#ifdef REPROBUS
     155!--- Old convention: HNO3 = g+l and HNO3_g = g ; new convention: HNO3tot = g+l and HNO3 = g
     156  lOldHNO3 = NF90_INQ_VARID(fID,var,vID), "inq", 'HNO3tot') /= NF90_NoErr
     157#endif
    153158  DO iq=1,nqtot
    154159    var = tracers(iq)%name
     
    166171      CALL msg('Tracer <O3> is missing => initialized to <OX>', modname)
    167172      CALL get_var2( 'OX' , q_glo); q(ijb_u:ije_u,:,iq)=q_glo(ijb_u:ije_u,:)
    168     !--------------------------------------------------------------------------------------------------------------------------
     173#endif
     174    !--------------------------------------------------------------------------------------------------------------------------
     175#ifdef REPROBUS
     176    ELSE IF(lOldHNO3 .AND. var == 'HNO3') THEN                                           !=== REPROBUS: HNO3_g INSTEAD OF HNO3
     177      CALL msg('Tracer <HNO3_g> is used for <HNO3> (old convention)', modname)
     178      CALL get_var2( 'HNO3_g', q_glo); q(ijb_u:ije_u,:,iq)=q_glo(ijb_u:ije_u,:)
     179    ELSE IF(lOldHNO3 .AND. var == 'HNO3tot') THEN                                        !=== REPROBUS: HNO3 INSTEAD OF HNO3tot
     180      CALL msg('Tracer <HNO3> is used for <HNO3tot> (old convention)', modname)
     181      CALL get_var2( 'HNO3', q_glo); q(ijb_u:ije_u,:,iq)=q_glo(ijb_u:ije_u,:)
    169182#endif
    170183    ELSE IF(tracers(iq)%iso_iGroup == iH2O .AND. niso > 0) THEN                          !=== WATER ISOTOPES
  • LMDZ6/trunk/libf/misc/readTracFiles_mod.f90

    r4233 r4263  
    158158        tracs(it)%phase = known_phases(ip:ip)                        !--- Set %phase:  tracer phase (default: "g"azeous)
    159159        tracs(it)%component = TRIM(type_trac)                        !--- Set %component: model component name
     160        IF(ANY([(addPhase('H2O', ip), ip=1, nphases)] == tracs(it)%name)) tracs(it)%component = 'lmdz'
    160161        tracs(it)%keys%key = ['hadv', 'vadv']                        !--- Set %keys%key
    161162        tracs(it)%keys%val = s(1:2)                                  !--- Set %keys%val
  • LMDZ6/trunk/libf/phy_common/physics_distribution_mod.F90

    r4172 r4263  
    4040! Initialization of Reprobus
    4141    IF (ANY(types_trac == 'repr')) CALL Init_chem_rep_phys(klon_omp,nbp_lev)
    42     END IF
    4342#endif
    4443
  • LMDZ6/trunk/libf/phylmd/phyetat0.F90

    r4170 r4263  
    2323  USE geometry_mod,     ONLY: longitude_deg, latitude_deg
    2424  USE iostart,          ONLY: close_startphy, get_field, get_var, open_startphy
    25   USE infotrac_phy,     ONLY: nqtot, nbtr, types_trac, tracers
     25  USE infotrac_phy,     ONLY: nqtot, nbtr, type_trac, types_trac, tracers
    2626  USE traclmdz_mod,     ONLY: traclmdz_from_restart
    2727  USE carbon_cycle_mod, ONLY: carbon_cycle_tr, carbon_cycle_cpl, co2_send
     
    456456        found=phyetat0_get(1,co2_send,"co2_send","co2 send",co2_ppm)
    457457     ENDIF
    458   ELSE IF (ANY(types_trac == 'lmdz')) THEN
     458  ELSE IF (type_trac == 'lmdz') THEN
    459459     it = 0
    460460     DO iq = 1, nqtot
  • LMDZ6/trunk/libf/phylmd/phyredem.F90

    r4170 r4263  
    3535  USE iostart, ONLY: open_restartphy, close_restartphy, enddef_restartphy, put_field, put_var
    3636  USE traclmdz_mod, ONLY : traclmdz_to_restart
    37   USE infotrac_phy, ONLY: types_trac, nqtot, tracers, nbtr
     37  USE infotrac_phy, ONLY: type_trac, types_trac, nqtot, tracers, nbtr
    3838  USE carbon_cycle_mod, ONLY : carbon_cycle_cpl, co2_send
    3939  USE indice_sol_mod, ONLY: nbsrf, is_oce, is_sic, is_ter, is_lic, epsfra
     
    336336
    337337    ! trs from traclmdz_mod
    338     ELSE IF (ANY(types_trac == 'lmdz')) THEN
     338    ELSE IF (type_trac == 'lmdz') THEN
    339339       CALL traclmdz_to_restart(trs)
    340340       it = 0
  • LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90

    r4187 r4263  
    2525
    2626    USE dimphy, ONLY: klon, klev, klevp1
    27     USE infotrac_phy, ONLY: nbtr, nqtot, nqo, types_trac, tracers, niso, ntiso
     27    USE infotrac_phy, ONLY: nbtr, nqtot, nqo, type_trac, types_trac, tracers, niso, ntiso
    2828    USE strings_mod,  ONLY: maxlen
    2929    USE mod_phys_lmdz_para, ONLY: is_north_pole_phy,is_south_pole_phy
     
    25482548           CALL histwrite_phy(o_flx_co2_bb,    fco2_bb)
    25492549
    2550          ELSE IF ((ANY(types_trac=='lmdz') .OR. ANY(types_trac=='coag')) .AND. ALL(types_trac /= 'inca')) THEN
     2550         ELSE IF (ANY(type_trac==['lmdz|coag','lmdz     ','coag     '])) THEN
    25512551           itr = 0
    25522552           DO iq = 1, nqtot
Note: See TracChangeset for help on using the changeset viewer.