Ignore:
Timestamp:
Sep 23, 2024, 4:45:12 PM (4 months ago)
Author:
abarral
Message:

Merge r5200

Location:
LMDZ6/branches/Amaury_dev
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/Amaury_dev

  • LMDZ6/branches/Amaury_dev/libf/dyn3d/iniacademic.F90

    r5221 r5223  
    7676
    7777  REAL zdtvr, tnat, alpha_ideal
    78   LOGICAL, PARAMETER :: tnat1 = .TRUE.
    79 
    80   CHARACTER(LEN = *), parameter :: modname = "iniacademic"
    81   CHARACTER(LEN = 80) :: abort_message
     78  LOGICAL :: ltnat1
     79 
     80  character(len=*),parameter :: modname="iniacademic"
     81  character(len=80) :: abort_message
    8282
    8383  ! Sanity check: verify that options selected by user are not incompatible
     
    305305      ! bulk initialization of tracers
    306306      IF (planet_type=="earth") THEN
    307         ! Earth: first two tracers will be water
     307        ltnat1 = .TRUE.; CALL getin('tnateq1', ltnat1)! Earth: first two tracers will be water
    308308        DO iq = 1, nqtot
    309309          q(:, :, iq) = 0.
     
    311311          IF(tracers(iq)%name == addPhase('H2O', 'l')) q(:, :, iq) = 1.e-15
    312312
    313           ! CRisi: init des isotopes
    314           ! distill de Rayleigh très simplifiée
    315           iName = tracers(iq)%iso_iName
    316           IF (niso <= 0 .OR. iName <= 0) CYCLE
    317           iPhase = tracers(iq)%iso_iPhase
    318           iqParent = tracers(iq)%iqParent
    319           IF(tracers(iq)%iso_iZone == 0) THEN
    320             IF (tnat1) THEN
    321               tnat = 1.0
    322               alpha_ideal = 1.0
    323               WRITE(*, *) 'Attention dans iniacademic: alpha_ideal=1'
    324             else
    325               IF(getKey('tnat', tnat, isoName(iName)) .OR. getKey('alpha', alpha_ideal, isoName(iName))) &
    326                       CALL abort_gcm(TRIM(modname), 'missing isotopic parameters', 1)
    327             endif
    328             q(:, :, iq) = q(:, :, iqParent) * tnat * (q(:, :, iqParent) / 30.e-3)**(alpha_ideal - 1.)
    329           ELSE !IF(tracers(iq)%iso_iZone == 0) THEN
    330             IF(tracers(iq)%iso_iZone == 1) THEN
    331               ! correction le 14 mai 2024 pour que tous les traceurs soient de la couleur 1.
    332               ! Sinon, on va avoir des porblèmes de conservation de masse de traceurs.
    333               q(:, :, iq) = q(:, :, iqIsoPha(iName, iPhase))
    334             else !IF(tracers(iq)%iso_iZone == 1) THEN
    335               q(:, :, iq) = 0.
    336             endif !IF(tracers(iq)%iso_iZone == 1) THEN
    337           END IF !IF(tracers(iq)%iso_iZone == 0) THEN
    338         enddo
    339       else
    340         q(:, :, :) = 0
    341       endif ! of if (planet_type=="earth")
     313              ! CRisi: init des isotopes
     314              ! distill de Rayleigh très simplifiée
     315              iName    = tracers(iq)%iso_iName
     316              if (niso <= 0 .OR. iName <= 0) CYCLE
     317              iPhase  = tracers(iq)%iso_iPhase
     318              iqParent = tracers(iq)%iqParent
     319              IF(tracers(iq)%iso_iZone == 0) THEN
     320                 IF(ltnat1) THEN
     321                    tnat = 1.0
     322                    alpha_ideal = 1.0
     323                    WRITE(lunout, *)'In '//TRIM(modname)//': !!!  Beware: alpha_ideal put to 1  !!!'
     324                 ELSE
     325                    IF(getKey('tnat', tnat, isoName(iName)) .OR. getKey('alpha', alpha_ideal, isoName(iName))) &
     326                    CALL abort_gcm(TRIM(modname), 'missing isotopic parameters', 1)
     327                 END IF
     328                 q(:,:,iq) = q(:,:,iqParent)*tnat*(q(:,:,iqParent)/30.e-3)**(alpha_ideal-1.)
     329              ELSE !IF(tracers(iq)%iso_iZone == 0) THEN
     330                 IF(tracers(iq)%iso_iZone == 1) THEN
     331                    ! correction le 14 mai 2024 pour que tous les traceurs soient de la couleur 1.
     332                    ! Sinon, on va avoir des porblèmes de conservation de masse de traceurs.
     333                    q(:,:,iq) = q(:,:,iqIsoPha(iName,iPhase))
     334                 else !IF(tracers(iq)%iso_iZone == 1) THEN
     335                    q(:,:,iq) = 0.
     336                 endif !IF(tracers(iq)%iso_iZone == 1) THEN
     337              END IF !IF(tracers(iq)%iso_iZone == 0) THEN
     338           enddo
     339        else
     340           q(:,:,:)=0
     341        endif ! of if (planet_type=="earth")
    342342
    343343      CALL check_isotopes_seq(q, ip1jmp1, 'iniacademic_loc')
  • LMDZ6/branches/Amaury_dev/libf/dyn3d/lmdz_check_isotopes.f90

    r5186 r5223  
    2929            deltaDmin = -999.0, &
    3030            ridicule = 1e-12
    31     INTEGER, SAVE :: iso_eau, iso_HDO, iso_O18, &
    32             iso_O17, iso_HTO
    33     LOGICAL, SAVE :: first = .TRUE.
    34     LOGICAL, PARAMETER :: tnat1 = .TRUE.
     31    INTEGER, SAVE :: iso_eau, iso_O17, iso_O18, iso_HDO, iso_HTO
     32    LOGICAL, SAVE :: ltnat1, first = .TRUE.
    3533
    3634    modname = 'check_isotopes'
     
    3937    IF(niso == 0)        RETURN                   !--- No isotopes => finished
    4038    IF(first) THEN
     39      ltnat1 = .TRUE.; CALL getin('tnateq1', ltnat1)
     40      ALLOCATE(tnat(niso))
    4141      iso_eau = strIdx(isoName, 'H216O')
     42      iso_O17 = strIdx(isoName, 'H217O')
     43      iso_O18 = strIdx(isoName, 'H218O')
    4244      iso_HDO = strIdx(isoName, 'HDO')
    43       iso_O18 = strIdx(isoName, 'H218O')
    44       iso_O17 = strIdx(isoName, 'H217O')
    4545      iso_HTO = strIdx(isoName, 'HTO')
    46       IF (tnat1) THEN
     46      IF(ltnat1) THEN
    4747        tnat(:) = 1.0
    48       else
     48      ELSE
    4949        IF(getKey('tnat', tnat)) CALL abort_gcm(modname, 'missing isotopic parameter', 1)
    50       endif
     50      END IF
    5151      first = .FALSE.
    5252    END IF
     
    6060        DO k = 1, llm
    6161          DO i = 1, ip1jmp1
    62             IF(ABS(q(i, k, iq)) < borne) CYCLE
     62            IF(ABS(q(i, k, iq)) <= borne) CYCLE
    6363            WRITE(msg1, '(s,"(",i0,",",i0,",",i0,") = ",ES12.4)')TRIM(isoName(ixt)), i, k, iq, q(i, k, iq)
    6464            CALL msg(msg1, modname)
  • LMDZ6/branches/Amaury_dev/libf/dyn3d/lmdz_dynetat0.f90

    r5222 r5223  
    1212    !-------------------------------------------------------------------------------
    1313    USE lmdz_infotrac, ONLY: nqtot, tracers, niso, iqIsoPha, iH2O, isoName, &
    14                          new2oldH2O, newHNO3, oldHNO3, getKey
     14            new2oldH2O, newHNO3, oldHNO3, getKey
    1515    USE lmdz_strings, ONLY: maxlen, msg, strStack, real2str, int2str
    1616    USE netcdf, ONLY: nf90_open, nf90_nowrite, nf90_inq_varid, nf90_close, nf90_get_var, nf90_noerr
     
    4949    INTEGER :: iq, fID, vID, idecal, iqParent, iName, iZone, iPhase, ix
    5050    REAL :: time, tnat, alpha_ideal, tab_cntrl(length)    !--- RUN PARAMS TABLE
    51     LOGICAL :: lSkip, ll
    52     LOGICAL, PARAMETER :: tnat1 = .TRUE.
     51    LOGICAL :: lSkip, ll, ltnat1
    5352    !-------------------------------------------------------------------------------
    5453    modname = "dynetat0"
     
    140139      ll = nf90_inq_varid(fID, 'HNO3tot', vID) /= nf90_noerr                                 !--- DETECT OLD REPRO start.nc FILE
    141140    END IF
     141    ltnat1 = .TRUE.; CALL getin('tnateq1', ltnat1)
    142142    DO iq = 1, nqtot
    143143      var = tracers(iq)%name
     
    163163        iqParent = tracers(iq)%iqParent
    164164        IF(tracers(iq)%iso_iZone == 0) THEN
    165           IF (tnat1) THEN
     165          IF(ltnat1) THEN
    166166            tnat = 1.0
    167167            alpha_ideal = 1.0
    168             WRITE(*, *) 'attention dans dynetat0: les alpha_ideal sont a 1'
    169           else
     168            CALL msg(' !!!  Beware: alpha_ideal put to 1  !!!', modname)
     169          ELSE
    170170            IF(getKey('tnat', tnat, isoName(iName)) .OR. getKey('alpha', alpha_ideal, isoName(iName))) &
    171171                    CALL abort_gcm(TRIM(modname), 'missing isotopic parameters', 1)
    172           endif
     172          END IF
    173173          CALL msg('Missing tracer <' // TRIM(var) // '> => initialized with a simplified Rayleigh distillation law.', modname)
    174174          q(:, :, :, iq) = q(:, :, :, iqParent) * tnat * (q(:, :, :, iqParent) / 30.e-3)**(alpha_ideal - 1.)
Note: See TracChangeset for help on using the changeset viewer.