Ignore:
Timestamp:
Jul 2, 2025, 12:00:08 PM (3 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/dyn3d/check_isotopes.f90

    r5271 r5748  
    11SUBROUTINE check_isotopes_seq(q, ip1jmp1, err_msg)
    2    USE strings_mod, ONLY: maxlen, msg, strIdx, strStack, int2str, real2str
     2   USE strings_mod, ONLY: maxlen, msg, strIdx, strStack, num2str
    33   USE infotrac,    ONLY: nqtot, niso, nphas, isotope, isoCheck, iqIsoPha, isoSelect, &
    44                          ntiso, iH2O, nzone, tracers, isoName,  itZonIso
     
    8080                  CYCLE
    8181               END IF
    82                CALL msg('ixt, iq = '//TRIM(strStack(int2str([ixt,iq]))), modname)
    83                msg1 = '('//TRIM(strStack(int2str([i,k])))//')'
    84                CALL msg(TRIM(tracers(iqpar)%name)//TRIM(msg1)//' = '//TRIM(real2str(q1)), modname)
    85                CALL msg(TRIM(tracers(iq   )%name)//TRIM(msg1)//' = '//TRIM(real2str(q2)), modname)
     82               CALL msg('ixt, iq = '//TRIM(strStack(num2str([ixt,iq]))), modname)
     83               msg1 = '('//TRIM(strStack(num2str([i,k])))//')'
     84               CALL msg(TRIM(tracers(iqpar)%name)//TRIM(msg1)//' = '//TRIM(num2str(q1)), modname)
     85               CALL msg(TRIM(tracers(iq   )%name)//TRIM(msg1)//' = '//TRIM(num2str(q2)), modname)
    8686               CALL abort_gcm(modname, 'Error with isotopes: '//TRIM(err_msg), 1)
    8787            END DO
     
    111111               deltaD = (q2/q1/tnat(ixt)-1.)*1000.
    112112               IF(deltaD <= deltaDmax .AND. deltaD >= deltaDmin) CYCLE
    113                CALL msg('ixt, iq = '//TRIM(strStack(int2str([ixt,iq]))), modname)
    114                msg1 = '('//TRIM(strStack(int2str([i,k])))//')'
    115                CALL msg(TRIM(tracers(iqpar)%name)//TRIM(msg1)//' = '//TRIM(real2str(q1)), modname)
    116                CALL msg(TRIM(tracers(iq   )%name)//TRIM(msg1)//' = '//TRIM(real2str(q2)), modname)
    117                CALL msg(TRIM(nm(iiso))//TRIM(real2str(deltaD)), modname)
     113               CALL msg('ixt, iq = '//TRIM(strStack(num2str([ixt,iq]))), modname)
     114               msg1 = '('//TRIM(strStack(num2str([i,k])))//')'
     115               CALL msg(TRIM(tracers(iqpar)%name)//TRIM(msg1)//' = '//TRIM(num2str(q1)), modname)
     116               CALL msg(TRIM(tracers(iq   )%name)//TRIM(msg1)//' = '//TRIM(num2str(q2)), modname)
     117               CALL msg(TRIM(nm(iiso))//TRIM(num2str(deltaD)), modname)
    118118               CALL abort_gcm(modname, 'Error with isotopes: '//TRIM(err_msg), 1)
    119119            END DO
     
    140140                  deltaD = (q2/q1/tnat(iso_HDO)-1.)*1000.
    141141                  IF(deltaD <= deltaDmax .AND. deltaD >= deltaDmin) CYCLE
    142                   CALL msg('izon, ipha = '//TRIM(strStack(int2str([izon, ipha]))), modname)
    143                   CALL msg( 'ixt, ieau = '//TRIM(strStack(int2str([ ixt, ieau]))), modname)
    144                   msg1 = '('//TRIM(strStack(int2str([i,k])))//')'
    145                   CALL msg(TRIM(tracers(iqeau)%name)//TRIM(msg1)//' = '//TRIM(real2str(q1)), modname)
    146                   CALL msg(TRIM(tracers(iq   )%name)//TRIM(msg1)//' = '//TRIM(real2str(q2)), modname)
    147                   CALL msg('deltaD = '//TRIM(real2str(deltaD)), modname)
     142                  CALL msg('izon, ipha = '//TRIM(strStack(num2str([izon, ipha]))), modname)
     143                  CALL msg( 'ixt, ieau = '//TRIM(strStack(num2str([ ixt, ieau]))), modname)
     144                  msg1 = '('//TRIM(strStack(num2str([i,k])))//')'
     145                  CALL msg(TRIM(tracers(iqeau)%name)//TRIM(msg1)//' = '//TRIM(num2str(q1)), modname)
     146                  CALL msg(TRIM(tracers(iq   )%name)//TRIM(msg1)//' = '//TRIM(num2str(q2)), modname)
     147                  CALL msg('deltaD = '//TRIM(num2str(deltaD)), modname)
    148148                  CALL abort_gcm(modname, 'Error with isotopes: '//TRIM(err_msg), 1)
    149149               END DO
     
    163163               IF(ABS(xtractot-xiiso) > errmax .AND. ABS(xtractot-xiiso)/MAX(MAX(ABS(xtractot),ABS(xiiso)),1e-18) > errmaxrel) THEN
    164164                  CALL msg('Error in iso_verif_aberrant trac: '//TRIM(err_msg))
    165                   CALL msg('iiso, ipha = '//TRIM(strStack(int2str([iiso, ipha]))), modname)
    166                   CALL msg('q('//TRIM(strStack(int2str([i,k])))//',:) = '//TRIM(strStack(real2str(q(i,k,:)))), modname)
     165                  CALL msg('iiso, ipha = '//TRIM(strStack(num2str([iiso, ipha]))), modname)
     166                  CALL msg('q('//TRIM(strStack(num2str([i,k])))//',:) = '//TRIM(strStack(num2str(q(i,k,:)))), modname)
    167167                  CALL abort_gcm(modname, 'Error with isotopes: '//TRIM(err_msg), 1)
    168168               END IF
Note: See TracChangeset for help on using the changeset viewer.