Ignore:
Timestamp:
Sep 22, 2024, 10:07:56 PM (10 months ago)
Author:
dcugnet
Message:

The fortran parameters file "iso_params_mod.F90" is introduced so that "tnat" and "alpha_ideal" are defined in a single place but used in several.
The "getKey" routine is only used in "infotrac" and "infotrac_phy" routines, but could be used outside this scope to get tracers parameters (read from "tracer.def") or isotopic parameters (read from "isotopes_params.def" - disabled for now).

Location:
LMDZ6/trunk/libf/dyn3dmem
Files:
3 edited

Legend:

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

    r5200 r5214  
    33   USE strings_mod, ONLY: maxlen, msg, strIdx, strStack, int2str, real2str
    44   USE infotrac,    ONLY: nqtot, niso, nphas, isotope, isoCheck, iqIsoPha, isoSelect, &
    5                           ntiso, iH2O, nzone, tracers, isoName,  itZonIso, getKey
     5                          ntiso, iH2O, nzone, tracers, isoName,  itZonIso
     6   USE iso_params_mod, ONLY: tnat_H216O, tnat_H217O, tnat_H218O, tnat_HDO, tnat_HTO
    67#ifdef CPP_IOIPSL
    78   USE ioipsl,          ONLY: getin
     
    1617   CHARACTER(LEN=maxlen) :: modname, msg1, nm(2)
    1718   INTEGER :: ixt, ipha, k, i, iq, iiso, izon, ieau, iqeau, iqpar
    18    INTEGER, ALLOCATABLE ::   ix(:)
     19   INTEGER, ALLOCATABLE       ::   ix(:)
    1920   REAL,    ALLOCATABLE, SAVE :: tnat(:)         !--- OpenMP shared variable
    20    REAL    :: xtractot, xiiso, deltaD, q1, q2
     21   REAL :: xtractot, xiiso, deltaD, q1, q2
    2122   REAL, PARAMETER :: borne     = 1e19,  &
    2223                      errmax    = 1e-8,  &       !--- Max. absolute error
     
    4041      ltnat1 = .TRUE.; CALL getin('tnateq1', ltnat1)
    4142      ALLOCATE(tnat(niso))
    42       iso_eau = strIdx(isoName,'H216O')
    43       iso_O17 = strIdx(isoName,'H217O')
    44       iso_O18 = strIdx(isoName,'H218O')
    45       iso_HDO = strIdx(isoName,'HDO')
    46       iso_HTO = strIdx(isoName,'HTO')
    47       IF(ltnat1) THEN
    48          tnat(:)=1.0
    49       ELSE
    50          IF(getKey('tnat', tnat)) CALL abort_gcm(modname, 'missing isotopic parameter', 1)
    51       END IF
     43      iso_eau = strIdx(isoName,'H216O'); IF(iso_eau /= 0) tnat(iso_eau) = tnat_H216O
     44      iso_O17 = strIdx(isoName,'H217O'); IF(iso_O17 /= 0) tnat(iso_O17) = tnat_H217O
     45      iso_O18 = strIdx(isoName,'H218O'); IF(iso_O18 /= 0) tnat(iso_O18) = tnat_H218O
     46      iso_HDO = strIdx(isoName,'HDO');   IF(iso_HDO /= 0) tnat(iso_HDO) = tnat_HDO
     47      iso_HTO = strIdx(isoName,'HTO');   IF(iso_HTO /= 0) tnat(iso_HTO) = tnat_HTO
     48      IF(ltnat1) tnat(:) = 1.0
    5249!$OMP END MASTER
    5350!$OMP BARRIER
     
    6461         DO k = 1, llm
    6562            DO i = ijb, ije
    66                IF(ABS(q(i,k,iq)) <= borne) CYCLE
     63               IF(ABS(q(i,k,iq)) < borne) CYCLE
    6764               WRITE(msg1,'(s,"(",i0,",",i0,",",i0,") = ",ES12.4)')TRIM(isoName(ixt)),i,k,iq,q(i,k,iq)
    6865               CALL msg(msg1, modname)
  • LMDZ6/trunk/libf/dyn3dmem/dynetat0_loc.F90

    r5200 r5214  
    88  USE parallel_lmdz
    99  USE infotrac,    ONLY: nqtot, tracers, niso, iqIsoPha, iH2O, isoName, &
    10                          new2oldH2O, newHNO3, oldHNO3, getKey
     10                         new2oldH2O, newHNO3, oldHNO3
    1111  USE strings_mod, ONLY: maxlen, msg, strStack, real2str, int2str, strIdx
    1212  USE netcdf,      ONLY: NF90_OPEN,  NF90_NOWRITE, NF90_INQUIRE_DIMENSION, NF90_INQ_VARID, &
     
    2525  USE ioipsl_getincom, ONLY: getin
    2626#endif
     27  USE iso_params_mod   ! tnat_* and alpha_ideal_*
    2728
    2829  IMPLICIT NONE
     
    191192            CALL msg(' !!!  Beware: alpha_ideal put to 1  !!!', modname)
    192193         ELSE
    193           IF(getKey('tnat', tnat, isoName(iName)) .OR. getKey('alpha', alpha_ideal, isoName(iName))) &
    194             CALL abort_gcm(TRIM(modname), 'missing isotopic parameters', 1)
     194            SELECT CASE(isoName(iName))
     195              CASE('H216O'); tnat = tnat_H216O; alpha_ideal = alpha_ideal_H216O
     196              CASE('H217O'); tnat = tnat_H217O; alpha_ideal = alpha_ideal_H217O
     197              CASE('H218O'); tnat = tnat_H218O; alpha_ideal = alpha_ideal_H218O
     198              CASE('HDO');   tnat = tnat_HDO;   alpha_ideal = alpha_ideal_HDO
     199              CASE('HTO');   tnat = tnat_HTO;   alpha_ideal = alpha_ideal_HTO
     200              CASE DEFAULT; CALL abort_gcm(TRIM(modname),'unknown isotope "'//TRIM(isoName(iName))//'" ; check tracer.def file',1)
     201            END SELECT
    195202         END IF
    196203         CALL msg('Missing tracer <'//TRIM(var)//'> => initialized with a simplified Rayleigh distillation law.', modname)
  • LMDZ6/trunk/libf/dyn3dmem/iniacademic_loc.F90

    r5200 r5214  
    55
    66  USE filtreg_mod, ONLY: inifilr
    7   USE infotrac,    ONLY: nqtot, niso, iqIsoPha, tracers, getKey, isoName, addPhase
     7  USE infotrac,    ONLY: nqtot, niso, iqIsoPha, tracers, isoName, addPhase
    88  USE control_mod, ONLY: day_step,planet_type
    99  use exner_hyb_m, only: exner_hyb
     
    2424  use netcdf, only : NF90_NOWRITE,NF90_OPEN,NF90_NOERR,NF90_INQ_VARID
    2525  use netcdf, only : NF90_CLOSE, NF90_GET_VAR
     26  USE iso_params_mod   ! tnat_* and alpha_ideal_*
    2627
    2728
     
    329330                    WRITE(lunout, *) 'In '//TRIM(modname)//': !!!  Beware: alpha_ideal put to 1  !!!'
    330331                 ELSE
    331                     IF(getKey('tnat', tnat, isoName(iName)) .OR. getKey('alpha', alpha_ideal, isoName(iName))) &
    332                     CALL abort_gcm(TRIM(modname), 'missing isotopic parameters', 1)
     332                    SELECT CASE(isoName(iName))
     333                      CASE('H216O'); tnat = tnat_H216O; alpha_ideal = alpha_ideal_H216O
     334                      CASE('H217O'); tnat = tnat_H217O; alpha_ideal = alpha_ideal_H217O
     335                      CASE('H218O'); tnat = tnat_H218O; alpha_ideal = alpha_ideal_H218O
     336                      CASE('HDO');   tnat = tnat_HDO;   alpha_ideal = alpha_ideal_HDO
     337                      CASE('HTO');   tnat = tnat_HTO;   alpha_ideal = alpha_ideal_HTO
     338                      CASE DEFAULT
     339                         CALL abort_gcm(TRIM(modname),'unknown isotope "'//TRIM(isoName(iName))//'" ; check tracer.def file',1)
     340                    END SELECT
    333341                 END IF
    334342                 q(ijb_u:ije_u,:,iq) = q(ijb_u:ije_u,:,iqParent)*tnat*(q(ijb_u:ije_u,:,iqParent)/30.e-3)**(alpha_ideal-1.)
Note: See TracChangeset for help on using the changeset viewer.