Ignore:
Timestamp:
Oct 20, 2022, 1:57:21 PM (21 months ago)
Author:
dcugnet
Message:
  • for REPROBUS: simplify (and fix) the handling of exceptions for old HNO3 convention.
  • cleaning + comments added in readTracFiles_mod.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/dyn3d/dynetat0.F90

    r4270 r4301  
    1010  USE netcdf,      ONLY: NF90_OPEN,  NF90_NOWRITE, NF90_INQ_VARID, &
    1111                         NF90_CLOSE, NF90_GET_VAR, NF90_NoErr
    12   USE readTracFiles_mod, ONLY: new2oldName
     12  USE readTracFiles_mod, ONLY: new2oldH2O, newHNO3, oldHNO3
    1313  USE control_mod, ONLY: planet_type
    1414  USE assert_eq_m, ONLY: assert_eq
     
    4242  INTEGER :: iq, fID, vID, idecal, iqParent, iName, iZone, iPhase
    4343  REAL    :: time, tab_cntrl(length)               !--- RUN PARAMS TABLE
    44   LOGICAL :: lOldHNO3, ll
     44  LOGICAL :: lSkip, ll
    4545!-------------------------------------------------------------------------------
    4646  modname="dynetat0"
     
    130130  ll=.FALSE.
    131131#ifdef REPROBUS
    132   !--- .TRUE. for old convention: HNO3 = g+l and HNO3_g = g (new convention: HNO3tot = g+l and HNO3 = g)
    133   ll = NF90_INQ_VARID(fID, 'HNO3tot', vID) /= NF90_NoErr
     132  ll = NF90_INQ_VARID(fID, 'HNO3tot', vID) /= NF90_NoErr                                 !--- DETECT OLD REPRO start.nc FILE
    134133#endif
    135134  DO iq=1,nqtot
    136135    var = tracers(iq)%name
    137     oldVar = new2oldName(var)
    138     lOldHNO3 = ll .AND. (var == 'HNO3' .OR. var == 'HNO3_g')
    139     !--------------------------------------------------------------------------------------------------------------------------
    140     IF(NF90_INQ_VARID(fID, var, vID) == NF90_NoErr .AND. .NOT.lOldHNO3) THEN             !=== REGULAR CASE
     136    oldVar = new2oldH2O(var)
     137    lSkip = ll .AND. var == 'HNO3'                                                       !--- FORCE "HNO3_g" READING FOR "HNO3"
     138#ifdef REPROBUS
     139    ix = strIdx(newHNO3, var); IF(ix /= 0) oldVar = oldHNO3(ix)                          !--- REPROBUS HNO3 exceptions
     140#endif
     141#ifdef INCA
     142    IF(var == 'O3') oldVar = 'OX'                                                        !--- DEAL WITH INCA OZONE EXCEPTION
     143#endif
     144    !--------------------------------------------------------------------------------------------------------------------------
     145    IF(NF90_INQ_VARID(fID, var, vID) == NF90_NoErr .AND. .NOT.lSkip) THEN                !=== REGULAR CASE: AVAILABLE VARIABLE
    141146      CALL err(NF90_GET_VAR(fID,vID,q(:,:,:,iq)),"get",var)
    142147    !--------------------------------------------------------------------------------------------------------------------------
    143     ELSE IF(NF90_INQ_VARID(fID, oldVar, vID) == NF90_NoErr) THEN                         !=== OLD NAME
     148    ELSE IF(NF90_INQ_VARID(fID, oldVar, vID) == NF90_NoErr) THEN                         !=== TRY WITH ALTERNATE NAME
    144149      CALL msg('Tracer <'//TRIM(var)//'> is missing => initialized to <'//TRIM(oldVar)//'>', modname)
    145150      CALL err(NF90_GET_VAR(fID,vID,q(:,:,:,iq)),"get",oldVar)
    146151    !--------------------------------------------------------------------------------------------------------------------------
    147 #ifdef REPROBUS
    148     ELSE IF(NF90_INQ_VARID(fID, 'HNO3_g', vID) == NF90_NoErr .AND. lOldHNO3 .AND. var == 'HNO3'   ) THEN
    149       CALL msg('Tracer <HNO3_g> is used for <HNO3> (old convention)', modname)           !=== REPROBUS: HNO3_g INSTEAD OF HNO3
    150       CALL err(NF90_GET_VAR(fID,vID,q(:,:,:,iq)),"get",var)
    151     ELSE IF(NF90_INQ_VARID(fID, 'HNO3',   vID) == NF90_NoErr .AND. lOldHNO3 .AND. var == 'HNO3tot') THEN
    152       CALL msg('Tracer <HNO3> is used for <HNO3tot> (old convention)', modname)          !=== REPROBUS: HNO3 INSTEAD OF HNO3tot
    153       CALL err(NF90_GET_VAR(fID,vID,q(:,:,:,iq)),"get",var)
    154 #endif
    155     !--------------------------------------------------------------------------------------------------------------------------
    156 #ifdef INCA
    157     ELSE IF(NF90_INQ_VARID(fID, 'OX',   vID) == NF90_NoErr .AND. var == 'O3') THEN       !=== INCA: OX INSTEAD OF O3
    158       CALL msg('Tracer <O3> is missing => initialized to <OX>', modname)
    159       CALL err(NF90_GET_VAR(fID,vID,q(:,:,:,iq)),"get",'OX')
    160     !--------------------------------------------------------------------------------------------------------------------------
    161 #endif
    162152    ELSE IF(tracers(iq)%iso_iGroup == iH2O .AND. niso > 0) THEN                          !=== WATER ISOTOPES
    163153      iName    = tracers(iq)%iso_iName
Note: See TracChangeset for help on using the changeset viewer.