Ignore:
Timestamp:
Jul 2, 2025, 12:00:08 PM (2 days ago)
Author:
dcugnet
Message:
  • Use REAL(KIND=REAL32) and REAL(KIND=REAL64) Iinstead of REAL and DOUBLE PRECISION

to avoid ambiguity problems in generic procedure when reals are promoted to doubles.

  • generic "num2str" replaces "str2int", "str2real", "str2dble" and "str2bool" functions.
File:
1 edited

Legend:

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

    r5271 r5748  
    11SUBROUTINE check_isotopes(q, ijb, ije, err_msg)
    22   USE parallel_lmdz
    3    USE strings_mod, ONLY: maxlen, msg, strIdx, strStack, int2str, real2str
     3   USE strings_mod, ONLY: maxlen, msg, strIdx, strStack, num2str
    44   USE infotrac,    ONLY: nqtot, niso, nphas, isotope, isoCheck, iqIsoPha, isoSelect, &
    55                          ntiso, iH2O, nzone, tracers, isoName,  itZonIso
     
    8989                  CYCLE
    9090               END IF
    91                CALL msg('ixt, iq = '//TRIM(strStack(int2str([ixt,iq]))), modname)
    92                msg1 = '('//TRIM(strStack(int2str([i,k])))//')'
    93                CALL msg(TRIM(tracers(iqpar)%name)//TRIM(msg1)//' = '//TRIM(real2str(q1)), modname)
    94                CALL msg(TRIM(tracers(iq   )%name)//TRIM(msg1)//' = '//TRIM(real2str(q2)), modname)
     91               CALL msg('ixt, iq = '//TRIM(strStack(num2str([ixt,iq]))), modname)
     92               msg1 = '('//TRIM(strStack(num2str([i,k])))//')'
     93               CALL msg(TRIM(tracers(iqpar)%name)//TRIM(msg1)//' = '//TRIM(num2str(q1)), modname)
     94               CALL msg(TRIM(tracers(iq   )%name)//TRIM(msg1)//' = '//TRIM(num2str(q2)), modname)
    9595               CALL abort_gcm(modname, 'Error with isotopes: '//TRIM(err_msg), 1)
    9696            END DO
     
    122122               deltaD = (q2/q1/tnat(ixt)-1.)*1000.
    123123               IF(deltaD <= deltaDmax .AND. deltaD >= deltaDmin) CYCLE
    124                CALL msg('ixt, iq = '//TRIM(strStack(int2str([ixt,iq]))), modname)
    125                msg1 = '('//TRIM(strStack(int2str([i,k])))//')'
    126                CALL msg(TRIM(tracers(iqpar)%name)//TRIM(msg1)//' = '//TRIM(real2str(q1)), modname)
    127                CALL msg(TRIM(tracers(iq   )%name)//TRIM(msg1)//' = '//TRIM(real2str(q2)), modname)
    128                CALL msg(TRIM(nm(iiso))//TRIM(real2str(deltaD)), modname)
     124               CALL msg('ixt, iq = '//TRIM(strStack(num2str([ixt,iq]))), modname)
     125               msg1 = '('//TRIM(strStack(num2str([i,k])))//')'
     126               CALL msg(TRIM(tracers(iqpar)%name)//TRIM(msg1)//' = '//TRIM(num2str(q1)), modname)
     127               CALL msg(TRIM(tracers(iq   )%name)//TRIM(msg1)//' = '//TRIM(num2str(q2)), modname)
     128               CALL msg(TRIM(nm(iiso))//TRIM(num2str(deltaD)), modname)
    129129               CALL abort_gcm(modname, 'Error with isotopes: '//TRIM(err_msg), 1)
    130130            END DO
     
    153153                  deltaD = (q2/q1/tnat(iso_HDO)-1.)*1000.
    154154                  IF(deltaD <= deltaDmax .AND. deltaD >= deltaDmin) CYCLE
    155                   CALL msg('izon, ipha = '//TRIM(strStack(int2str([izon, ipha]))), modname)
    156                   CALL msg( 'ixt, ieau = '//TRIM(strStack(int2str([ ixt, ieau]))), modname)
    157                   msg1 = '('//TRIM(strStack(int2str([i,k])))//')'
    158                   CALL msg(TRIM(tracers(iqeau)%name)//TRIM(msg1)//' = '//TRIM(real2str(q1)), modname)
    159                   CALL msg(TRIM(tracers(iq   )%name)//TRIM(msg1)//' = '//TRIM(real2str(q2)), modname)
    160                   CALL msg('deltaD = '//TRIM(real2str(deltaD)), modname)
     155                  CALL msg('izon, ipha = '//TRIM(strStack(num2str([izon, ipha]))), modname)
     156                  CALL msg( 'ixt, ieau = '//TRIM(strStack(num2str([ ixt, ieau]))), modname)
     157                  msg1 = '('//TRIM(strStack(num2str([i,k])))//')'
     158                  CALL msg(TRIM(tracers(iqeau)%name)//TRIM(msg1)//' = '//TRIM(num2str(q1)), modname)
     159                  CALL msg(TRIM(tracers(iq   )%name)//TRIM(msg1)//' = '//TRIM(num2str(q2)), modname)
     160                  CALL msg('deltaD = '//TRIM(num2str(deltaD)), modname)
    161161                  CALL abort_gcm(modname, 'Error with isotopes: '//TRIM(err_msg), 1)
    162162               END DO
     
    178178               IF(ABS(xtractot-xiiso) > errmax .AND. ABS(xtractot-xiiso)/MAX(MAX(ABS(xtractot),ABS(xiiso)),1e-18) > errmaxrel) THEN
    179179                  CALL msg('Error in iso_verif_aberrant trac: '//TRIM(err_msg))
    180                   CALL msg('iiso, ipha = '//TRIM(strStack(int2str([iiso, ipha]))), modname)
    181                   CALL msg('q('//TRIM(strStack(int2str([i,k])))//',:) = '//TRIM(strStack(real2str(q(i,k,:)))), modname)
     180                  CALL msg('iiso, ipha = '//TRIM(strStack(num2str([iiso, ipha]))), modname)
     181                  CALL msg('q('//TRIM(strStack(num2str([i,k])))//',:) = '//TRIM(strStack(num2str(q(i,k,:)))), modname)
    182182                  CALL abort_gcm(modname, 'Error with isotopes: '//TRIM(err_msg), 1)
    183183               END IF
Note: See TracChangeset for help on using the changeset viewer.