Changeset 5748


Ignore:
Timestamp:
Jul 2, 2025, 12:00:08 PM (27 hours 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.
Location:
LMDZ6/trunk/libf
Files:
20 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/dyn3d/advtrac.f90

    r5324 r5748  
    1515   USE control_mod,  ONLY: iapp_tracvl, day_step
    1616   USE comconst_mod, ONLY: dtvr
    17    USE strings_mod, ONLY: int2str
    1817   USE dimensions_mod, ONLY: iim, jjm, llm, ndm
    1918   USE paramet_mod_h
  • 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
  • LMDZ6/trunk/libf/dyn3d/dynetat0.f90

    r5285 r5748  
    1010  USE infotrac,    ONLY: nqtot, tracers, niso, iqIsoPha, iH2O, isoName, &
    1111                         new2oldH2O, newHNO3, oldHNO3
    12   USE strings_mod, ONLY: maxlen, msg, strStack, real2str, int2str
     12  USE strings_mod, ONLY: maxlen, msg, strStack, num2str
    1313  USE netcdf,      ONLY: NF90_OPEN,  NF90_NOWRITE, NF90_INQ_VARID, &
    1414                         NF90_CLOSE, NF90_GET_VAR, NF90_NoErr
     
    107107
    108108!-------------------------------------------------------------------------------
    109   CALL msg('rad, omeg, g, cpp, kappa = '//TRIM(strStack(real2str([rad,omeg,g,cpp,kappa]))), modname)
     109  CALL msg('rad, omeg, g, cpp, kappa = '//TRIM(strStack(num2str([rad,omeg,g,cpp,kappa]))), modname)
    110110  CALL check_dim(im,iim,'im','im')
    111111  CALL check_dim(jm,jjm,'jm','jm')
     
    210210  CHARACTER(LEN=*), INTENT(IN) :: str1, str2
    211211  CHARACTER(LEN=maxlen) :: s1, s2
    212   IF(n1/=n2) CALL abort_gcm(TRIM(modname), 'value of "'//TRIM(str1)//'" = '//TRIM(int2str(n1))// &
    213    ' read in starting file differs from gcm value of "'//TRIM(str2)//'" = '//TRIM(int2str(n2)), 1)
     212  IF(n1/=n2) CALL abort_gcm(TRIM(modname), 'value of "'//TRIM(str1)//'" = '//TRIM(num2str(n1))// &
     213   ' read in starting file differs from gcm value of "'//TRIM(str2)//'" = '//TRIM(num2str(n2)), 1)
    214214END SUBROUTINE check_dim
    215215
  • LMDZ6/trunk/libf/dyn3d_common/infotrac.f90

    r5487 r5748  
    33MODULE infotrac
    44
    5    USE       strings_mod, ONLY: msg, maxlen, cat, dispTable, int2str, bool2str, strStack, strParse, strCount, strIdx
     5   USE       strings_mod, ONLY: msg, maxlen, cat, dispTable, num2str, strStack, strParse, strCount, strIdx
    66   USE readTracFiles_mod, ONLY: trac_type, readTracersFiles, tracers,  addPhase,  addKey, iH2O,  &
    77       isoSelect,  indexUpdate, isot_type, testTracersFiles, isotope,  delPhase,  getKey, tran0, &
     
    250250   IF( nqtot /= nqtrue ) THEN
    251251      CALL msg('The choice of advection scheme for one or more tracers makes it necessary to add tracers')
    252       CALL msg('The number of true tracers is '//TRIM(int2str(nqtrue)))
    253       CALL msg('The total number of tracers needed is '//TRIM(int2str(nqtot)))
     252      CALL msg('The number of true tracers is '//TRIM(num2str(nqtrue)))
     253      CALL msg('The total number of tracers needed is '//TRIM(num2str(nqtot)))
    254254   END IF
    255255
     
    313313      ig  = t1%iGeneration
    314314      nam = t1%name
    315       val = 'iadv='//TRIM(int2str(iad))
     315      val = 'iadv='//TRIM(num2str(iad))
    316316
    317317      !--- ONLY TESTED VALUES FOR TRACERS FOR NOW:               iadv = 14, 10 (and 0 for non-transported tracers)
     
    344344   !=== DISPLAY THE RESULTS
    345345   IF(.NOT..TRUE.) RETURN
    346    CALL msg('nqo    = '//TRIM(int2str(nqo)),    modname)
    347    CALL msg('nbtr   = '//TRIM(int2str(nbtr)),   modname)
    348    CALL msg('nqtrue = '//TRIM(int2str(nqtrue)), modname)
    349    CALL msg('nqtot  = '//TRIM(int2str(nqtot)),  modname)
    350    CALL msg('niso   = '//TRIM(int2str(niso)),   modname)
    351    CALL msg('ntiso  = '//TRIM(int2str(ntiso)),  modname)
    352    CALL msg('nqCO2  = '//TRIM(int2str(nqCO2)),  modname, CPPKEY_INCA)
    353    CALL msg('nqINCA = '//TRIM(int2str(nqINCA)), modname, CPPKEY_INCA)
     346   CALL msg('nqo    = '//TRIM(num2str(nqo)),    modname)
     347   CALL msg('nbtr   = '//TRIM(num2str(nbtr)),   modname)
     348   CALL msg('nqtrue = '//TRIM(num2str(nqtrue)), modname)
     349   CALL msg('nqtot  = '//TRIM(num2str(nqtot)),  modname)
     350   CALL msg('niso   = '//TRIM(num2str(niso)),   modname)
     351   CALL msg('ntiso  = '//TRIM(num2str(ntiso)),  modname)
     352   CALL msg('nqCO2  = '//TRIM(num2str(nqCO2)),  modname, CPPKEY_INCA)
     353   CALL msg('nqINCA = '//TRIM(num2str(nqINCA)), modname, CPPKEY_INCA)
    354354   t => tracers
    355355   CALL msg('Information stored in '//TRIM(modname)//': ', modname)
  • LMDZ6/trunk/libf/dyn3dmem/advtrac_loc.f90

    r5324 r5748  
    2121   USE times
    2222   USE advtrac_mod, ONLY: finmasse
    23    USE strings_mod, ONLY: int2str
    2423   USE dimensions_mod, ONLY: iim, jjm, llm, ndm
    2524USE paramet_mod_h
  • LMDZ6/trunk/libf/dyn3dmem/call_calfis_mod.f90

    r5324 r5748  
    9191  USE temps_mod, ONLY: day_ini, day_ref, jd_ref, jh_ref, start_time
    9292  USE lmdz_cppkeys_wrapper, ONLY: CPPKEY_PHYS
    93   USE strings_mod, ONLY: int2str
    9493  USE iniprint_mod_h
    9594  IMPLICIT NONE
  • 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
  • LMDZ6/trunk/libf/dyn3dmem/dynetat0_loc.f90

    r5285 r5748  
    1111  USE infotrac,    ONLY: nqtot, tracers, niso, iqIsoPha, iH2O, isoName, &
    1212                         new2oldH2O, newHNO3, oldHNO3
    13   USE strings_mod, ONLY: maxlen, msg, strStack, real2str, int2str, strIdx
     13  USE strings_mod, ONLY: maxlen, msg, strStack, num2str, strIdx
    1414  USE netcdf,      ONLY: NF90_OPEN,  NF90_NOWRITE, NF90_INQUIRE_DIMENSION, NF90_INQ_VARID, &
    1515                         NF90_CLOSE, NF90_GET_VAR, NF90_INQUIRE_VARIABLE,  NF90_NoErr
     
    111111
    112112!-------------------------------------------------------------------------------
    113   CALL msg('rad, omeg, g, cpp, kappa = '//TRIM(strStack(real2str([rad,omeg,g,cpp,kappa]))), modname)
     113  CALL msg('rad, omeg, g, cpp, kappa = '//TRIM(strStack(num2str([rad,omeg,g,cpp,kappa]))), modname)
    114114  CALL check_dim(im,iim,'im','im')
    115115  CALL check_dim(jm,jjm,'jm','jm')
     
    236236  CHARACTER(LEN=*), INTENT(IN) :: str1, str2
    237237  CHARACTER(LEN=maxlen) :: s1, s2
    238   IF(n1/=n2) CALL abort_gcm(TRIM(modname), 'value of "'//TRIM(str1)//'" = '//TRIM(int2str(n1))// &
    239    ' read in starting file differs from gcm value of "'//TRIM(str2)//'" = '//TRIM(int2str(n2)), 1)
     238  IF(n1/=n2) CALL abort_gcm(TRIM(modname), 'value of "'//TRIM(str1)//'" = '//TRIM(num2str(n1))// &
     239   ' read in starting file differs from gcm value of "'//TRIM(str2)//'" = '//TRIM(num2str(n2)), 1)
    240240END SUBROUTINE check_dim
    241241
  • LMDZ6/trunk/libf/dyn3dmem/integrd_loc.f90

    r5285 r5748  
    1717  USE comvert_mod, ONLY: ap, bp
    1818  USE temps_mod, ONLY: dt
    19   USE strings_mod, ONLY: int2str
     19  USE strings_mod, ONLY: num2str
    2020  USE dimensions_mod, ONLY: iim, jjm, llm, ndm
    2121USE paramet_mod_h
     
    184184     ! call WriteField_u('int_finvmaold',finvmaold)
    185185    do j=1,nq
    186       call WriteField_u('int_q'//trim(int2str(j)), &
     186      call WriteField_u('int_q'//trim(num2str(j)), &
    187187            q(:,:,j))
    188       call WriteField_u('int_dq'//trim(int2str(j)), &
     188      call WriteField_u('int_dq'//trim(num2str(j)), &
    189189            dq(:,:,j))
    190190    enddo
  • LMDZ6/trunk/libf/dyn3dmem/leapfrog_loc.f90

    r5659 r5748  
    4141         using_xios
    4242   USE lmdz_cppkeys_wrapper, ONLY: CPPKEY_INCA, CPPKEY_REPROBUS
    43    USE strings_mod, ONLY: int2str
     43   USE strings_mod, ONLY: num2str
    4444
    4545   USE dimensions_mod, ONLY: iim, jjm, llm, ndm
     
    642642    call WriteField_u('phis',phis)
    643643    do iq=1,nqtot
    644       call WriteField_u('q'//trim(int2str(iq)), &
     644      call WriteField_u('q'//trim(num2str(iq)), &
    645645            q(:,:,iq))
    646646    enddo
     
    708708
    709709   ! do j=1,nqtot
    710    !   call WriteField_u('qadv'//trim(int2str(j)),q(:,:,j))
     710   !   call WriteField_u('qadv'//trim(num2str(j)),q(:,:,j))
    711711   ! enddo
    712712
     
    743743
    744744   ! do j=1,nqtot
    745    !   call WriteField_p('q'//trim(int2str(j)),
     745   !   call WriteField_p('q'//trim(num2str(j)),
    746746  ! .                reshape(q(:,:,j),(/iip1,jmp1,llm/)))
    747   !    call WriteField_p('dq'//trim(int2str(j)),
     747  !    call WriteField_p('dq'//trim(num2str(j)),
    748748  ! .                reshape(dq(:,:,j),(/iip1,jmp1,llm/)))
    749749  !  enddo
     
    781781      ! call WriteField_u('pkfi',pk)
    782782      ! do j=1,nqtot
    783       !   call WriteField_u('qfi'//trim(int2str(j)),q(:,:,j))
     783      !   call WriteField_u('qfi'//trim(num2str(j)),q(:,:,j))
    784784      ! enddo
    785785  ! #endif
     
    887887  !   call WriteField_u('pkfi',pk)
    888888  !   do j=1,nqtot
    889   !     call WriteField_u('qfi'//trim(int2str(j)),q(:,:,j))
     889  !     call WriteField_u('qfi'//trim(num2str(j)),q(:,:,j))
    890890  !   enddo
    891891  ! #endif
     
    978978  !     call WriteField_u('dpfi',dpfi)
    979979  !     do j=1,nqtot
    980   !       call WriteField_u('dqfi'//trim(int2str(j)),dqfi(:,:,j))
     980  !       call WriteField_u('dqfi'//trim(num2str(j)),dqfi(:,:,j))
    981981  !    enddo
    982982  ! #endif
     
    992992  !         call WriteField_u('psfi',ps)
    993993  !     do j=1,nqtot
    994   !       call WriteField_u('qfi'//trim(int2str(j)),q(:,:,j))
     994  !       call WriteField_u('qfi'//trim(num2str(j)),q(:,:,j))
    995995  !    enddo
    996996  ! #endif
     
    10061006  !         call WriteField_u('psfi',ps)
    10071007  !     do j=1,nqtot
    1008   !       call WriteField_u('qfi'//trim(int2str(j)),q(:,:,j))
     1008  !       call WriteField_u('qfi'//trim(num2str(j)),q(:,:,j))
    10091009  !    enddo
    10101010  ! #endif
     
    10201020  !         call WriteField_u('psfi',ps)
    10211021  !     do j=1,nqtot
    1022   !       call WriteField_u('qfi'//trim(int2str(j)),q(:,:,j))
     1022  !       call WriteField_u('qfi'//trim(num2str(j)),q(:,:,j))
    10231023  !    enddo
    10241024  ! #endif
     
    10861086  !         call WriteField_u('psfi',ps)
    10871087  !     do j=1,nqtot
    1088   !       call WriteField_u('qfi'//trim(int2str(j)),q(:,:,j))
     1088  !       call WriteField_u('qfi'//trim(num2str(j)),q(:,:,j))
    10891089  !    enddo
    10901090  ! #endif
  • LMDZ6/trunk/libf/misc/readTracFiles_mod.f90

    r5746 r5748  
    33  USE strings_mod,    ONLY: msg, find, get_in, dispTable, strHead,  strReduce,  strFind, strStack, strIdx, &
    44             removeComment, cat,       maxlen, checkList, strParse, strReplace, strTail, strCount, reduceExpr, &
    5              int2str, str2int, real2str, str2real, bool2str, str2bool
     5             num2str, str2int, str2real, str2bool
    66
    77  IMPLICIT NONE
     
    993993  lerr = .FALSE.
    994994  IF(nam(1) == 'iq') THEN
    995     tmp2 = int2str([(iq, iq=1, nq)])
     995    tmp2 = num2str([(iq, iq=1, nq)])
    996996    tmp = tmp2
    997997  ELSE
     
    10861086      tr(iq)%nqChildren = SIZE(iqDescen)
    10871087    END DO
    1088     CALL addKey('iqDescen', strStack(int2str(iqDescen)), tr(iq)%keys)
     1088    CALL addKey('iqDescen', strStack(num2str(iqDescen)), tr(iq)%keys)
    10891089    CALL addKey('nqDescen',             SIZE(iqDescen),  tr(iq)%keys)
    10901090    tr(iq)%iqDescen =      iqDescen
     
    13281328      np = SUM([(COUNT(tracers(:)%name == addPhase(i%trac(it), i%phase(ip:ip))), ip=1, npha)])
    13291329      lerr = np /= npha
    1330       CALL msg(TRIM(int2str(np))//' phases instead of '//TRIM(int2str(npha))//' for '//TRIM(i%trac(it)), modname, lerr)
     1330      CALL msg(TRIM(num2str(np))//' phases instead of '//TRIM(num2str(npha))//' for '//TRIM(i%trac(it)), modname, lerr)
    13311331      IF(lerr) RETURN
    13321332    END DO
     
    13341334      nz = SUM([(COUNT(i%trac == TRIM(i%trac(it))//'_'//i%zone(iz)), iz=1, nzon)])
    13351335      lerr = nz /= nzon
    1336       CALL msg(TRIM(int2str(nz))//' tagging zones instead of '//TRIM(int2str(nzon))//' for '//TRIM(i%trac(it)), modname, lerr)
     1336      CALL msg(TRIM(num2str(nz))//' tagging zones instead of '//TRIM(num2str(nzon))//' for '//TRIM(i%trac(it)), modname, lerr)
    13371337      IF(lerr) RETURN
    13381338    END DO
     
    13751375   IF(iIso == ixIso) RETURN                                          !--- Nothing to do if the index is already OK
    13761376   lerr = iIso<=0 .OR. iIso>SIZE(isotopes)
    1377    CALL msg('Inconsistent isotopes family index '//TRIM(int2str(iIso))//': should be > 0 and <= '&
    1378           //TRIM(int2str(SIZE(isotopes)))//'"', ll = lerr .AND. lV)
     1377   CALL msg('Inconsistent isotopes family index '//TRIM(num2str(iIso))//': should be > 0 and <= '&
     1378          //TRIM(num2str(SIZE(isotopes)))//'"', ll = lerr .AND. lV)
    13791379   IF(lerr) RETURN
    13801380   ixIso = iIso                                                      !--- Update currently selected family index
     
    14241424  LOGICAL, OPTIONAL, INTENT(IN)    :: lOverWrite
    14251425!------------------------------------------------------------------------------------------------------------------------------
    1426   CALL addKey_s11(key, int2str(ival), ky, lOverWrite)
     1426  CALL addKey_s11(key, num2str(ival), ky, lOverWrite)
    14271427END SUBROUTINE addKey_i11
    14281428!==============================================================================================================================
     
    14331433  LOGICAL, OPTIONAL, INTENT(IN)    :: lOverWrite
    14341434!------------------------------------------------------------------------------------------------------------------------------
    1435   CALL addKey_s11(key, real2str(rval), ky, lOverWrite)
     1435  CALL addKey_s11(key, num2str(rval), ky, lOverWrite)
    14361436END SUBROUTINE addKey_r11
    14371437!==============================================================================================================================
     
    14421442  LOGICAL, OPTIONAL, INTENT(IN)    :: lOverWrite
    14431443!------------------------------------------------------------------------------------------------------------------------------
    1444   CALL addKey_s11(key, bool2str(lval), ky, lOverWrite)
     1444  CALL addKey_s11(key, num2str(lval), ky, lOverWrite)
    14451445END SUBROUTINE addKey_l11
    14461446!==============================================================================================================================
     
    14621462!------------------------------------------------------------------------------------------------------------------------------
    14631463  INTEGER :: itr
    1464   DO itr = 1, SIZE(ky); CALL addKey_s11(key, int2str(ival), ky(itr), lOverWrite); END DO
     1464  DO itr = 1, SIZE(ky); CALL addKey_s11(key, num2str(ival), ky(itr), lOverWrite); END DO
    14651465END SUBROUTINE addKey_i1m
    14661466!==============================================================================================================================
     
    14721472!------------------------------------------------------------------------------------------------------------------------------
    14731473  INTEGER :: itr
    1474   DO itr = 1, SIZE(ky); CALL addKey_s11(key, real2str(rval), ky(itr), lOverWrite); END DO
     1474  DO itr = 1, SIZE(ky); CALL addKey_s11(key, num2str(rval), ky(itr), lOverWrite); END DO
    14751475END SUBROUTINE addKey_r1m
    14761476!==============================================================================================================================
     
    14821482!------------------------------------------------------------------------------------------------------------------------------
    14831483  INTEGER :: itr
    1484   DO itr = 1, SIZE(ky); CALL addKey_s11(key, bool2str(lval), ky(itr), lOverWrite); END DO
     1484  DO itr = 1, SIZE(ky); CALL addKey_s11(key, num2str(lval), ky(itr), lOverWrite); END DO
    14851485END SUBROUTINE addKey_l1m
    14861486!==============================================================================================================================
     
    15021502!------------------------------------------------------------------------------------------------------------------------------
    15031503  INTEGER :: itr
    1504   DO itr = 1, SIZE(ky); CALL addKey_s11(key, int2str(ival(itr)), ky(itr), lOverWrite); END DO
     1504  DO itr = 1, SIZE(ky); CALL addKey_s11(key, num2str(ival(itr)), ky(itr), lOverWrite); END DO
    15051505END SUBROUTINE addKey_imm
    15061506!==============================================================================================================================
     
    15121512!------------------------------------------------------------------------------------------------------------------------------
    15131513  INTEGER :: itr
    1514   DO itr = 1, SIZE(ky); CALL addKey_s11(key, real2str(rval(itr)), ky(itr), lOverWrite); END DO
     1514  DO itr = 1, SIZE(ky); CALL addKey_s11(key, num2str(rval(itr)), ky(itr), lOverWrite); END DO
    15151515END SUBROUTINE addKey_rmm
    15161516!==============================================================================================================================
     
    15221522!------------------------------------------------------------------------------------------------------------------------------
    15231523  INTEGER :: itr
    1524   DO itr = 1, SIZE(ky); CALL addKey_s11(key, bool2str(lval(itr)), ky(itr), lOverWrite); END DO
     1524  DO itr = 1, SIZE(ky); CALL addKey_s11(key, num2str(lval(itr)), ky(itr), lOverWrite); END DO
    15251525END SUBROUTINE addKey_lmm
    15261526!==============================================================================================================================
     
    16761676  LOGICAL :: lD
    16771677  lD = .TRUE.; IF(PRESENT(lDisp)) lD = lDisp
    1678   s = 'key "'//TRIM(strStack(keyn, '/'))//'" for tracer nr. '//TRIM(int2str(itr))
     1678  s = 'key "'//TRIM(strStack(keyn, '/'))//'" for tracer nr. '//TRIM(num2str(itr))
    16791679  lerr = .TRUE.
    16801680  IF(lerr .AND. PRESENT(ky))         val = fgetKey(ky)                                   !--- "ky"
     
    17061706!------------------------------------------------------------------------------------------------------------------------------
    17071707  CHARACTER(LEN=maxlen) :: sval, s
    1708   IF(     PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, int2str(def), lDisp)
     1708  IF(     PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, num2str(def), lDisp)
    17091709  IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, lDisp=lDisp)
    17101710  IF(lerr) RETURN
    17111711  val = str2int(sval)
    17121712  lerr = val == -HUGE(1)
    1713   s = 'key "'//TRIM(strStack(keyn, '/'))//'" of tracer nr. '//TRIM(int2str(itr))//' is not'
     1713  s = 'key "'//TRIM(strStack(keyn, '/'))//'" of tracer nr. '//TRIM(num2str(itr))//' is not'
    17141714  CALL msg(TRIM(s)//' an integer: '//TRIM(sval), modname, lerr)
    17151715END FUNCTION getKeyByIndex_im11
     
    17241724!------------------------------------------------------------------------------------------------------------------------------
    17251725  CHARACTER(LEN=maxlen) :: sval, s
    1726   IF(     PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, real2str(def), lDisp)
     1726  IF(     PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, num2str(def), lDisp)
    17271727  IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, lDisp=lDisp)
    17281728  IF(lerr) RETURN
    17291729  val = str2real(sval)
    17301730  lerr = val == -HUGE(1.)
    1731   s = 'key "'//TRIM(strStack(keyn, '/'))//'" of tracer nr. '//TRIM(int2str(itr))//' is not'
     1731  s = 'key "'//TRIM(strStack(keyn, '/'))//'" of tracer nr. '//TRIM(num2str(itr))//' is not'
    17321732  CALL msg(TRIM(s)//' a real: '//TRIM(sval), modname, lerr)
    17331733END FUNCTION getKeyByIndex_rm11
     
    17431743  CHARACTER(LEN=maxlen) :: sval, s
    17441744  INTEGER               :: ival
    1745   IF(     PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, bool2str(def), lDisp)
     1745  IF(     PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, num2str(def), lDisp)
    17461746  IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, lDisp=lDisp)
    17471747  IF(lerr) RETURN
    17481748  ival = str2bool(sval)
    17491749  lerr = ival == -1
    1750   s = 'key "'//TRIM(strStack(keyn, '/'))//'" of tracer nr. '//TRIM(int2str(itr))//' is not'
     1750  s = 'key "'//TRIM(strStack(keyn, '/'))//'" of tracer nr. '//TRIM(num2str(itr))//' is not'
    17511751  CALL msg(TRIM(s)//' a boolean: '//TRIM(sval), modname, lerr)
    17521752  IF(.NOT.lerr) val = ival == 1
     
    17781778  CHARACTER(LEN=maxlen)              :: sval, s
    17791779  CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:)
    1780   IF(     PRESENT(def)) lerr = getKeyByIndex_sm11([keyn], sval, itr, ky, int2str(def), lDisp)
     1780  IF(     PRESENT(def)) lerr = getKeyByIndex_sm11([keyn], sval, itr, ky, num2str(def), lDisp)
    17811781  IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_sm11([keyn], sval, itr, ky, lDisp=lDisp)
    17821782  IF(lerr) RETURN
     
    17851785  val = str2int(svals)
    17861786  lerr = ANY(val == -HUGE(1))
    1787   s = 'key "'//TRIM(keyn)//'" of tracer nr. '//TRIM(int2str(itr))//' is not'
     1787  s = 'key "'//TRIM(keyn)//'" of tracer nr. '//TRIM(num2str(itr))//' is not'
    17881788  CALL msg(TRIM(s)//' an integer: '//TRIM(sval), modname, lerr)
    17891789END FUNCTION getKeyByIndex_i1m1
     
    17991799  CHARACTER(LEN=maxlen)              :: sval, s
    18001800  CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:)
    1801   IF(     PRESENT(def)) lerr = getKeyByIndex_sm11([keyn], sval, itr, ky, real2str(def), lDisp)
     1801  IF(     PRESENT(def)) lerr = getKeyByIndex_sm11([keyn], sval, itr, ky, num2str(def), lDisp)
    18021802  IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_sm11([keyn], sval, itr, ky, lDisp=lDisp)
    18031803  lerr = strParse(sval, ',', svals)
     
    18051805  val = str2real(svals)
    18061806  lerr = ANY(val == -HUGE(1.))
    1807   s = 'key "'//TRIM(keyn)//'" of tracer nr. '//TRIM(int2str(itr))//' is not'
     1807  s = 'key "'//TRIM(keyn)//'" of tracer nr. '//TRIM(num2str(itr))//' is not'
    18081808  CALL msg(TRIM(s)//' a real: '//TRIM(sval), modname, lerr)
    18091809END FUNCTION getKeyByIndex_r1m1
     
    18201820  CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:)
    18211821  INTEGER,               ALLOCATABLE :: ivals(:)
    1822   IF(     PRESENT(def)) lerr = getKeyByIndex_sm11([keyn], sval, itr, ky, bool2str(def), lDisp)
     1822  IF(     PRESENT(def)) lerr = getKeyByIndex_sm11([keyn], sval, itr, ky, num2str(def), lDisp)
    18231823  IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_sm11([keyn], sval, itr, ky, lDisp=lDisp)
    18241824  lerr = strParse(sval, ',', svals)
     
    18261826  ivals = str2bool(svals)
    18271827  lerr = ANY(ivals == -1)
    1828   s = 'key "'//TRIM(keyn)//'" of tracer nr. '//TRIM(int2str(itr))//' is not'
     1828  s = 'key "'//TRIM(keyn)//'" of tracer nr. '//TRIM(num2str(itr))//' is not'
    18291829  CALL msg(TRIM(s)//' a boolean: '//TRIM(sval), modname, lerr)
    18301830  IF(.NOT.lerr) val = ivals == 1
     
    18561856  CHARACTER(LEN=maxlen)              :: sval, s
    18571857  CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:)
    1858   IF(     PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, int2str(def), lDisp)
     1858  IF(     PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, num2str(def), lDisp)
    18591859  IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, lDisp=lDisp)
    18601860  IF(lerr) RETURN
     
    18631863  val = str2int(svals)
    18641864  lerr = ANY(val == -HUGE(1))
    1865   s = 'key "'//TRIM(strStack(keyn, '/'))//'" of tracer nr. '//TRIM(int2str(itr))//' is not'
     1865  s = 'key "'//TRIM(strStack(keyn, '/'))//'" of tracer nr. '//TRIM(num2str(itr))//' is not'
    18661866  CALL msg(TRIM(s)//' an integer: '//TRIM(sval), modname, lerr)
    18671867END FUNCTION getKeyByIndex_imm1
     
    18771877  CHARACTER(LEN=maxlen)              :: sval, s
    18781878  CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:)
    1879   IF(     PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, real2str(def), lDisp)
     1879  IF(     PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, num2str(def), lDisp)
    18801880  IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, lDisp=lDisp)
    18811881  IF(lerr) RETURN
     
    18841884  val = str2real(svals)
    18851885  lerr = ANY(val == -HUGE(1.))
    1886   s = 'key "'//TRIM(strStack(keyn, '/'))//'" of tracer nr. '//TRIM(int2str(itr))//' is not'
     1886  s = 'key "'//TRIM(strStack(keyn, '/'))//'" of tracer nr. '//TRIM(num2str(itr))//' is not'
    18871887  CALL msg(TRIM(s)//' a real: '//TRIM(sval), modname, lerr)
    18881888END FUNCTION getKeyByIndex_rmm1
     
    18991899  CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:)
    19001900  INTEGER,               ALLOCATABLE :: ivals(:)
    1901   IF(     PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, bool2str(def), lDisp)
     1901  IF(     PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, num2str(def), lDisp)
    19021902  IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, lDisp=lDisp)
    19031903  IF(lerr) RETURN
     
    19061906  ivals = str2bool(svals)
    19071907  lerr = ANY(ivals == -1)
    1908   s = 'key "'//TRIM(strStack(keyn, '/'))//'" of tracer nr. '//TRIM(int2str(itr))//' is not'
     1908  s = 'key "'//TRIM(strStack(keyn, '/'))//'" of tracer nr. '//TRIM(num2str(itr))//' is not'
    19091909  CALL msg(TRIM(s)//' a boolean: '//TRIM(sval), modname, lerr)
    19101910  IF(.NOT.lerr) val = ivals == 1
     
    20112011  CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:), tname(:)
    20122012  LOGICAL,               ALLOCATABLE ::    ll(:)
    2013   IF(     PRESENT(def)) lerr = getKeyByIndex_smmm(keyn, svals, ky, tname, int2str(def), lDisp)
     2013  IF(     PRESENT(def)) lerr = getKeyByIndex_smmm(keyn, svals, ky, tname, num2str(def), lDisp)
    20142014  IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_smmm(keyn, svals, ky, tname, lDisp=lDisp)
    20152015  IF(lerr) RETURN
     
    20332033  CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:), tname(:)
    20342034  LOGICAL,               ALLOCATABLE ::    ll(:)
    2035   IF(     PRESENT(def)) lerr = getKeyByIndex_smmm(keyn, svals, ky, tname, real2str(def), lDisp)
     2035  IF(     PRESENT(def)) lerr = getKeyByIndex_smmm(keyn, svals, ky, tname, num2str(def), lDisp)
    20362036  IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_smmm(keyn, svals, ky, tname, lDisp=lDisp)
    20372037  IF(lerr) RETURN
     
    20552055  LOGICAL,               ALLOCATABLE ::    ll(:)
    20562056  INTEGER,               ALLOCATABLE :: ivals(:)
    2057   IF(     PRESENT(def)) lerr = getKeyByIndex_smmm(keyn, svals, ky, tname, bool2str(def), lDisp)
     2057  IF(     PRESENT(def)) lerr = getKeyByIndex_smmm(keyn, svals, ky, tname, num2str(def), lDisp)
    20582058  IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_smmm(keyn, svals, ky, tname, lDisp=lDisp)
    20592059  IF(lerr) RETURN
     
    21642164!------------------------------------------------------------------------------------------------------------------------------
    21652165  CHARACTER(LEN=maxlen) :: sval, s
    2166   IF(     PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, int2str(def), lDisp)
     2166  IF(     PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, num2str(def), lDisp)
    21672167  IF(.NOT.PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, lDisp=lDisp)
    21682168  IF(lerr) RETURN
     
    21812181!------------------------------------------------------------------------------------------------------------------------------
    21822182  CHARACTER(LEN=maxlen) :: sval, s
    2183   IF(     PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, real2str(def), lDisp)
     2183  IF(     PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, num2str(def), lDisp)
    21842184  IF(.NOT.PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, lDisp=lDisp)
    21852185  IF(lerr) RETURN
     
    21992199  CHARACTER(LEN=maxlen) :: sval, s
    22002200  INTEGER               :: ival
    2201   IF(     PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, bool2str(def), lDisp)
     2201  IF(     PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, num2str(def), lDisp)
    22022202  IF(.NOT.PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, lDisp=lDisp)
    22032203  IF(lerr) RETURN
     
    22322232  CHARACTER(LEN=maxlen)              :: sval, s
    22332233  CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:)
    2234   IF(     PRESENT(def)) lerr = getKeyByName_sm11([keyn], sval, tname, ky, int2str(def), lDisp)
     2234  IF(     PRESENT(def)) lerr = getKeyByName_sm11([keyn], sval, tname, ky, num2str(def), lDisp)
    22352235  IF(.NOT.PRESENT(def)) lerr = getKeyByName_sm11([keyn], sval, tname, ky, lDisp=lDisp)
    22362236  IF(lerr) RETURN
     
    22522252  CHARACTER(LEN=maxlen)              :: sval, s
    22532253  CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:)
    2254   IF(     PRESENT(def)) lerr = getKeyByName_sm11([keyn], sval, tname, ky, real2str(def), lDisp)
     2254  IF(     PRESENT(def)) lerr = getKeyByName_sm11([keyn], sval, tname, ky, num2str(def), lDisp)
    22552255  IF(.NOT.PRESENT(def)) lerr = getKeyByName_sm11([keyn], sval, tname, ky, lDisp=lDisp)
    22562256  IF(lerr) RETURN
     
    22732273  CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:)
    22742274  INTEGER,               ALLOCATABLE :: ivals(:)
    2275   IF(     PRESENT(def)) lerr = getKeyByName_sm11([keyn], sval, tname, ky, bool2str(def), lDisp)
     2275  IF(     PRESENT(def)) lerr = getKeyByName_sm11([keyn], sval, tname, ky, num2str(def), lDisp)
    22762276  IF(.NOT.PRESENT(def)) lerr = getKeyByName_sm11([keyn], sval, tname, ky, lDisp=lDisp)
    22772277  IF(lerr) RETURN
     
    23082308  CHARACTER(LEN=maxlen)              :: sval, s
    23092309  CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:)
    2310   IF(     PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, int2str(def), lDisp)
     2310  IF(     PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, num2str(def), lDisp)
    23112311  IF(.NOT.PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, lDisp=lDisp)
    23122312  IF(lerr) RETURN
     
    23282328  CHARACTER(LEN=maxlen)              :: sval, s
    23292329  CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:)
    2330   IF(     PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, real2str(def), lDisp)
     2330  IF(     PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, num2str(def), lDisp)
    23312331  IF(.NOT.PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, lDisp=lDisp)
    23322332  IF(lerr) RETURN
     
    23492349  CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:)
    23502350  INTEGER,               ALLOCATABLE :: ivals(:)
    2351   IF(     PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, bool2str(def), lDisp)
     2351  IF(     PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, num2str(def), lDisp)
    23522352  IF(.NOT.PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, lDisp=lDisp)
    23532353  IF(lerr) RETURN
     
    24472447  CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:)
    24482448  LOGICAL,               ALLOCATABLE ::    ll(:)
    2449   IF(     PRESENT(def)) lerr = getKeyByName_smmm(keyn, svals, tname, ky, int2str(def), lDisp)
     2449  IF(     PRESENT(def)) lerr = getKeyByName_smmm(keyn, svals, tname, ky, num2str(def), lDisp)
    24502450  IF(.NOT.PRESENT(def)) lerr = getKeyByName_smmm(keyn, svals, tname, ky, lDisp=lDisp)
    24512451  IF(lerr) RETURN
     
    24672467  CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:)
    24682468  LOGICAL,               ALLOCATABLE ::    ll(:)
    2469   IF(     PRESENT(def)) lerr = getKeyByName_smmm(keyn, svals, tname, ky, real2str(def), lDisp)
     2469  IF(     PRESENT(def)) lerr = getKeyByName_smmm(keyn, svals, tname, ky, num2str(def), lDisp)
    24702470  IF(.NOT.PRESENT(def)) lerr = getKeyByName_smmm(keyn, svals, tname, ky, lDisp=lDisp)
    24712471  IF(lerr) RETURN
     
    24882488  LOGICAL,               ALLOCATABLE ::    ll(:)
    24892489  INTEGER,               ALLOCATABLE :: ivals(:)
    2490   IF(     PRESENT(def)) lerr = getKeyByName_smmm(keyn, svals, tname, ky, bool2str(def), lDisp)
     2490  IF(     PRESENT(def)) lerr = getKeyByName_smmm(keyn, svals, tname, ky, num2str(def), lDisp)
    24912491  IF(.NOT.PRESENT(def)) lerr = getKeyByName_smmm(keyn, svals, tname, ky, lDisp=lDisp)
    24922492  IF(lerr) RETURN
  • LMDZ6/trunk/libf/misc/strings_mod.f90

    r5747 r5748  
    11MODULE strings_mod
     2
     3  USE, INTRINSIC :: ISO_FORTRAN_ENV, ONLY: REAL64, REAL32
    24
    35  IMPLICIT NONE
     
    810  PUBLIC :: strUpper, strTail, strStackm, strParse, strReplace, strFind, find, duplicate, cat
    911  PUBLIC :: dispTable, dispOutliers, dispNameList
    10   PUBLIC :: is_numeric, bool2str, int2str, real2str, dble2str
    11   PUBLIC :: reduceExpr, str2bool, str2int, str2real, str2dble
    12   PUBLIC :: addQuotes, checkList, removeComment
     12  PUBLIC :: is_numeric, num2str, str2bool, str2int, str2real, str2dble
     13  PUBLIC :: reduceExpr, addQuotes, checkList, removeComment
    1314
    1415  INTERFACE get_in;     MODULE PROCEDURE getin_s,  getin_i,  getin_r,  getin_l;  END INTERFACE get_in
     16  INTERFACE num2str;    MODULE PROCEDURE bool2str, int2str, real2str, dble2str;  END INTERFACE num2str
    1517  INTERFACE  msg;       MODULE PROCEDURE        msg_1,                    msg_m; END INTERFACE  msg
    1618  INTERFACE strHead;    MODULE PROCEDURE    strHead_1,                strHead_m; END INTERFACE strHead
     
    2123  INTERFACE strCount;   MODULE PROCEDURE  strCount_m1, strCount_11, strCount_1m; END INTERFACE strCount
    2224  INTERFACE strReplace; MODULE PROCEDURE strReplace_1,             strReplace_m; END INTERFACE strReplace
    23   INTERFACE cat;        MODULE PROCEDURE  horzcat_s00, horzcat_i00, horzcat_r00,  & !horzcat_d00, &
    24                                           horzcat_s10, horzcat_i10, horzcat_r10,  & !horzcat_d10, &
    25                                           horzcat_s11, horzcat_i11, horzcat_r11,  & !horzcat_d11, &
    26                                           horzcat_s21, horzcat_i21, horzcat_r21; END INTERFACE cat !horzcat_d21
    27   INTERFACE strFind;      MODULE PROCEDURE strFind_1, strFind_m;                 END INTERFACE strFind
     25  INTERFACE cat; MODULE PROCEDURE  horzcat_s00, horzcat_i00, horzcat_r00, horzcat_d00, &
     26                                   horzcat_s10, horzcat_i10, horzcat_r10, horzcat_d10, &
     27                                   horzcat_s11, horzcat_i11, horzcat_r11, horzcat_d11, &
     28                                   horzcat_s21, horzcat_i21, horzcat_r21; END INTERFACE cat !horzcat_d21
     29  INTERFACE strFind;      MODULE PROCEDURE strFind_1, strFind_m;           END INTERFACE strFind
    2830  INTERFACE find;         MODULE PROCEDURE strFind_1, strFind_m, intFind_1, intFind_m, booFind; END INTERFACE find
    2931  INTERFACE duplicate;    MODULE PROCEDURE dupl_s, dupl_i, dupl_r, dupl_l; END INTERFACE duplicate
     
    6870  INTEGER,          INTENT(IN)    :: def
    6971  val = def; CALL getin(nam, val)
    70   IF(val/=def) WRITE(lunout,*)TRIM(nam)//' = '//TRIM(int2str(val))
     72  IF(val/=def) WRITE(lunout,*)TRIM(nam)//' = '//TRIM(num2str(val))
    7173END SUBROUTINE getin_i
    7274!==============================================================================================================================
     
    7880  REAL,             INTENT(IN)    :: def
    7981  val = def; CALL getin(nam, val)
    80   IF(val/=def) WRITE(lunout,*)TRIM(nam)//' = '//TRIM(real2str(val))
     82  IF(val/=def) WRITE(lunout,*)TRIM(nam)//' = '//TRIM(num2str(val))
    8183END SUBROUTINE getin_r
    8284!==============================================================================================================================
     
    8890  LOGICAL,          INTENT(IN)    :: def
    8991  val = def; CALL getin(nam, val)
    90   IF(val.NEQV.def) WRITE(lunout,*)TRIM(nam)//' = '//TRIM(bool2str(val))
     92  IF(val.NEQV.def) WRITE(lunout,*)TRIM(nam)//' = '//TRIM(num2str(val))
    9193END SUBROUTINE getin_l
    9294!==============================================================================================================================
     
    953955FUNCTION horzcat_r00(r0, r1, r2, r3, r4, r5, r6, r7, r8, r9) RESULT(out)
    954956  IMPLICIT NONE
    955   REAL,                   INTENT(IN) :: r0
    956   REAL, OPTIONAL, TARGET, INTENT(IN) :: r1, r2, r3, r4, r5, r6, r7, r8, r9
    957   REAL, ALLOCATABLE :: out(:)
    958   REAL, POINTER    :: r
     957  REAL(KIND=REAL32),                   INTENT(IN) :: r0
     958  REAL(KIND=REAL32), OPTIONAL, TARGET, INTENT(IN) :: r1, r2, r3, r4, r5, r6, r7, r8, r9
     959  REAL(KIND=REAL32), ALLOCATABLE :: out(:)
     960  REAL(KIND=REAL32), POINTER :: r
    959961  INTEGER           :: ncol, iv
    960962  LOGICAL           :: pre(9)
     
    975977FUNCTION horzcat_r10(r0, r1, r2, r3, r4, r5, r6, r7, r8, r9) RESULT(out)
    976978  IMPLICIT NONE
    977   REAL,           INTENT(IN) :: r0(:), r1
    978   REAL, OPTIONAL, INTENT(IN) :: r2, r3, r4, r5, r6, r7, r8, r9
    979   REAL, ALLOCATABLE :: out(:), tmp(:)
     979  REAL(KIND=REAL32),           INTENT(IN) :: r0(:), r1
     980  REAL(KIND=REAL32), OPTIONAL, INTENT(IN) :: r2, r3, r4, r5, r6, r7, r8, r9
     981  REAL(KIND=REAL32), ALLOCATABLE :: out(:), tmp(:)
    980982  INTEGER :: nc
    981983  nc  = SIZE(r0)
     
    987989FUNCTION horzcat_r11(r0, r1, r2, r3, r4, r5, r6, r7, r8, r9) RESULT(out)
    988990  IMPLICIT NONE
    989   REAL,                   INTENT(IN) :: r0(:)
    990   REAL, OPTIONAL, TARGET, INTENT(IN) :: r1(:), r2(:), r3(:), r4(:), r5(:), r6(:), r7(:), r8(:), r9(:)
    991   REAL, ALLOCATABLE :: out(:,:)
    992   REAL, POINTER     :: r(:)
    993   INTEGER           :: nrow, ncol, iv, n
    994   LOGICAL           :: pre(9)
     991  REAL(KIND=REAL32),                   INTENT(IN) :: r0(:)
     992  REAL(KIND=REAL32), OPTIONAL, TARGET, INTENT(IN) :: r1(:), r2(:), r3(:), r4(:), r5(:), r6(:), r7(:), r8(:), r9(:)
     993  REAL(KIND=REAL32), ALLOCATABLE :: out(:,:)
     994  REAL(KIND=REAL32), POINTER     :: r(:)
     995  INTEGER :: nrow, ncol, iv, n
     996  LOGICAL :: pre(9)
    995997!------------------------------------------------------------------------------------------------------------------------------
    996998  pre(:) = [PRESENT(r1),PRESENT(r2),PRESENT(r3),PRESENT(r4),PRESENT(r5),PRESENT(r6),PRESENT(r7),PRESENT(r8),PRESENT(r9)]
     
    10121014FUNCTION horzcat_r21(r0, r1, r2, r3, r4, r5, r6, r7, r8, r9) RESULT(out)
    10131015  IMPLICIT NONE
    1014   REAL,           INTENT(IN) :: r0(:,:), r1(:)
    1015   REAL, OPTIONAL, INTENT(IN) :: r2(:), r3(:), r4(:), r5(:), r6(:), r7(:), r8(:), r9(:)
    1016   REAL, ALLOCATABLE :: out(:,:), tmp(:,:)
     1016  REAL(KIND=REAL32),           INTENT(IN) :: r0(:,:), r1(:)
     1017  REAL(KIND=REAL32), OPTIONAL, INTENT(IN) :: r2(:), r3(:), r4(:), r5(:), r6(:), r7(:), r8(:), r9(:)
     1018  REAL(KIND=REAL32), ALLOCATABLE :: out(:,:), tmp(:,:)
    10171019  INTEGER :: nc
    10181020  nc  = SIZE(r0, 2)
     
    10241026FUNCTION horzcat_d00(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9) RESULT(out)
    10251027  IMPLICIT NONE
    1026   DOUBLE PRECISION,                   INTENT(IN) :: d0
    1027   DOUBLE PRECISION, OPTIONAL, TARGET, INTENT(IN) :: d1, d2, d3, d4, d5, d6, d7, d8, d9
    1028   DOUBLE PRECISION, ALLOCATABLE :: out(:)
    1029   DOUBLE PRECISION, POINTER     :: d
     1028  REAL(KIND=REAL64),                   INTENT(IN) :: d0
     1029  REAL(KIND=REAL64), OPTIONAL, TARGET, INTENT(IN) :: d1, d2, d3, d4, d5, d6, d7, d8, d9
     1030  REAL(KIND=REAL64), ALLOCATABLE :: out(:)
     1031  REAL(KIND=REAL64), POINTER     :: d
    10301032  INTEGER                       :: ncol, iv
    10311033  LOGICAL                       :: pre(9)
     
    10461048FUNCTION horzcat_d10(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9) RESULT(out)
    10471049  IMPLICIT NONE
    1048   DOUBLE PRECISION,           INTENT(IN) :: d0(:), d1
    1049   DOUBLE PRECISION, OPTIONAL, INTENT(IN) :: d2, d3, d4, d5, d6, d7, d8, d9
    1050   DOUBLE PRECISION, ALLOCATABLE :: out(:), tmp(:)
     1050  REAL(KIND=REAL64),           INTENT(IN) :: d0(:), d1
     1051  REAL(KIND=REAL64), OPTIONAL, INTENT(IN) :: d2, d3, d4, d5, d6, d7, d8, d9
     1052  REAL(KIND=REAL64), ALLOCATABLE :: out(:), tmp(:)
    10511053  INTEGER :: nc
    10521054  nc = SIZE(d0)
     
    10581060FUNCTION horzcat_d11(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9) RESULT(out)
    10591061  IMPLICIT NONE
    1060   DOUBLE PRECISION,                   INTENT(IN) :: d0(:)
    1061   DOUBLE PRECISION, OPTIONAL, TARGET, INTENT(IN) :: d1(:), d2(:), d3(:), d4(:), d5(:), d6(:), d7(:), d8(:), d9(:)
    1062   DOUBLE PRECISION, ALLOCATABLE :: out(:,:)
    1063   DOUBLE PRECISION, POINTER     :: d(:)
     1062  REAL(KIND=REAL64),                   INTENT(IN) :: d0(:)
     1063  REAL(KIND=REAL64), OPTIONAL, TARGET, INTENT(IN) :: d1(:), d2(:), d3(:), d4(:), d5(:), d6(:), d7(:), d8(:), d9(:)
     1064  REAL(KIND=REAL64), ALLOCATABLE :: out(:,:)
     1065  REAL(KIND=REAL64), POINTER     :: d(:)
    10641066  INTEGER                       :: nrow, ncol, iv, n
    10651067  LOGICAL                       :: pre(9)
     
    10821084FUNCTION horzcat_d21(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9) RESULT(out)
    10831085  IMPLICIT NONE
    1084   DOUBLE PRECISION,           INTENT(IN) :: d0(:,:), d1(:)
    1085   DOUBLE PRECISION, OPTIONAL, INTENT(IN) :: d2(:), d3(:), d4(:), d5(:), d6(:), d7(:), d8(:), d9(:)
    1086   DOUBLE PRECISION, ALLOCATABLE :: out(:,:), tmp(:,:)
     1086  REAL(KIND=REAL64),           INTENT(IN) :: d0(:,:), d1(:)
     1087  REAL(KIND=REAL64), OPTIONAL, INTENT(IN) :: d2(:), d3(:), d4(:), d5(:), d6(:), d7(:), d8(:), d9(:)
     1088  REAL(KIND=REAL64), ALLOCATABLE :: out(:,:), tmp(:,:)
    10871089  INTEGER :: nc
    10881090  nc  = SIZE(d0, 2)
     
    11591161    d(1,ic) = TRIM(titles(ic))
    11601162    SELECT CASE(p(ic:ic))
    1161       CASE('s'); d(2:nmx,ic) =          s(:,is)     ; is = is + 1
    1162       CASE('i'); d(2:nmx,ic) =  int2str(i(:,ii)    ); ii = ii + 1
    1163       CASE('r'); d(2:nmx,ic) = real2str(r(:,ir),rFm); ir = ir + 1
     1163      CASE('s'); d(2:nmx,ic) =         s(:,is)     ; is = is + 1
     1164      CASE('i'); d(2:nmx,ic) = num2str(i(:,ii)    ); ii = ii + 1
     1165      CASE('r'); d(2:nmx,ic) = num2str(r(:,ir),rFm); ir = ir + 1
    11641166    END SELECT
    11651167  END DO
     
    12601262    d(1,ic) = TRIM(titles(ic))
    12611263    SELECT CASE(p(ic:ic))
    1262       CASE('s'); d(2:nrow,ic) =          s(:,is)     ; is = is + 1
    1263       CASE('i'); d(2:nrow,ic) =  int2str(i(:,ii)    ); ii = ii + 1
    1264       CASE('r'); d(2:nrow,ic) = real2str(r(:,ir),rFm); ir = ir + 1
     1264      CASE('s'); d(2:nrow,ic) =         s(:,is)     ; is = is + 1
     1265      CASE('i'); d(2:nrow,ic) = num2str(i(:,ii)    ); ii = ii + 1
     1266      CASE('r'); d(2:nrow,ic) = num2str(r(:,ir),rFm); ir = ir + 1
    12651267    END SELECT
    12661268  END DO
     
    13621364    IF(.NOT.ANY(m)) CYCLE                                            !--- no outlayers for tracer "itr"
    13631365    v = TRIM(vnm(MIN(itr,SIZE(vnm))))//'('//TRIM(s)                  !--- "<name>("
    1364     IF(nv == 1) ttl(rk) = TRIM(v)//','//int2str(itr)//')'            !--- "<name>(i,j,itr)" (single name)
     1366    IF(nv == 1) ttl(rk) = TRIM(v)//','//num2str(itr)//')'            !--- "<name>(i,j,itr)" (single name)
    13651367    IF(nv /= 1) ttl(rk) = TRIM(v)//')'                               !--- "<nam(itr)>(i,j)" (one name each table/itr index)
    13661368    IF(rk==2) lerr = dispTable('ir',  ttl, i=cat(PACK(ki,m)),            r=cat(PACK(a(ib:ie),m)), &
     
    14851487  CHARACTER(LEN=*),      INTENT(IN)  :: str
    14861488  CHARACTER(LEN=*),      INTENT(OUT) :: val
    1487   DOUBLE PRECISION,      ALLOCATABLE :: vl(:)
     1489  REAL(KIND=REAL64),     ALLOCATABLE :: vl(:)
    14881490  INTEGER,               ALLOCATABLE :: id(:)
    14891491  CHARACTER(LEN=maxlen), ALLOCATABLE :: ky(:)
     
    14911493!------------------------------------------------------------------------------------------------------------------------------
    14921494  CHARACTER(LEN=1024) :: s
    1493   DOUBLE PRECISION :: v, vm, vp
     1495  REAL(KIND=REAL64) :: v, vm, vp
    14941496  INTEGER      :: i, ni, io
    14951497  lerr = .FALSE.
     
    15001502  IF(lerr) RETURN                                                              !--- Problem with the parsing
    15011503  vl = str2dble(ky)                                                            !--- Conversion to doubles
    1502   lerr = ANY(vl >= HUGE(1.d0))
     1504  lerr = ANY(vl >= HUGE(1._REAL64))
    15031505  CALL msg('Some values are non-numeric in: '//TRIM(s), ll=lerr)
    15041506  IF(lerr) RETURN                                                              !--- Non-numerical values found
     
    15191521    END DO
    15201522  END DO
    1521   val = dble2str(vl(1))
     1523  val = num2str(vl(1))
    15221524
    15231525END FUNCTION reduceExpr_basic
     
    15811583END FUNCTION str2int
    15821584!==============================================================================================================================
    1583 ELEMENTAL REAL FUNCTION str2real(str) RESULT(out)
     1585ELEMENTAL REAL(KIND=REAL32) FUNCTION str2real(str) RESULT(out)
    15841586  IMPLICIT NONE
    15851587  CHARACTER(LEN=*), INTENT(IN) :: str
    15861588  INTEGER :: ierr
    15871589  READ(str,*,IOSTAT=ierr) out
    1588   IF(ierr/=0) out = -HUGE(1.)
     1590  IF(ierr/=0) out = -HUGE(1._REAL32)
    15891591END FUNCTION str2real
    15901592!==============================================================================================================================
    1591 ELEMENTAL DOUBLE PRECISION FUNCTION str2dble(str) RESULT(out)
     1593ELEMENTAL REAL(KIND=REAL64) FUNCTION str2dble(str) RESULT(out)
    15921594  IMPLICIT NONE
    15931595  CHARACTER(LEN=*), INTENT(IN) :: str
    15941596  INTEGER :: ierr
    15951597  READ(str,*,IOSTAT=ierr) out
    1596   IF(ierr/=0) out = -HUGE(1.d0)
     1598  IF(ierr/=0) out = -HUGE(1._REAL64)
    15971599END FUNCTION str2dble
    15981600!==============================================================================================================================
     
    16171619ELEMENTAL CHARACTER(LEN=maxlen) FUNCTION real2str(r,fmt) RESULT(out)
    16181620  IMPLICIT NONE
    1619   REAL,                       INTENT(IN) :: r
     1621  REAL(KIND=REAL32),          INTENT(IN) :: r
    16201622  CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: fmt
    16211623!------------------------------------------------------------------------------------------------------------------------------
     
    16271629ELEMENTAL CHARACTER(LEN=maxlen) FUNCTION dble2str(d,fmt) RESULT(out)
    16281630  IMPLICIT NONE
    1629   DOUBLE PRECISION,           INTENT(IN) :: d
     1631  REAL(KIND=REAL64),          INTENT(IN) :: d
    16301632  CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: fmt
    16311633!------------------------------------------------------------------------------------------------------------------------------
  • LMDZ6/trunk/libf/misc/write_field.f90

    r5270 r5748  
    55  USE netcdf, ONLY: nf90_sync, nf90_put_var, nf90_enddef, nf90_def_dim, nf90_unlimited, &
    66          nf90_clobber, nf90_create, nf90_def_var, nf90_double
    7   USE strings_mod, ONLY: int2str
     7  USE strings_mod, ONLY: num2str
    88  IMPLICIT NONE; PRIVATE
    99  PUBLIC WriteField
     
    156156    write (id,'("----- Field '//name//'",//)')
    157157    Dim=shape(Field)
    158     MaxLen=int2str(len(trim(int2str(Dim(1)))))
    159     ColumnSize=20+6+3+len(trim(int2str(Dim(1))))
     158    MaxLen=num2str(len(trim(num2str(Dim(1)))))
     159    ColumnSize=20+6+3+len(trim(num2str(Dim(1))))
    160160    Nb=0
    161161    Pos=2
     
    164164     
    165165      if (MOD(nb,NbCol)==0) then
    166         form='(t'//trim(int2str(pos))// ',i'//trim(MaxLen) //'," ---> ",g22.16,/)'
     166        form='(t'//trim(num2str(pos))// ',i'//trim(MaxLen) //'," ---> ",g22.16,/)'
    167167        Pos=2
    168168      else
    169         form='(t'//trim(int2str(pos))// ',i'//trim(MaxLen) //'," ---> ",g22.16," | ",)'
     169        form='(t'//trim(num2str(pos))// ',i'//trim(MaxLen) //'," ---> ",g22.16," | ",)'
    170170        Pos=Pos+ColumnSize
    171171      endif
     
    198198   
    199199    Dim=shape(Field)
    200     offset=len(trim(int2str(Dim(1))))+len(trim(int2str(Dim(2))))+3
     200    offset=len(trim(num2str(Dim(1))))+len(trim(num2str(Dim(2))))+3
    201201    ColumnSize=20+6+3+offset
    202202
     
    210210     
    211211        if (MOD(nb,NbCol)==0) then
    212           form='(t'//trim(int2str(pos))//            &
    213                ',"('//trim(int2str(j))//','          &
    214                     //trim(int2str(i))//')",t'       &
    215                     //trim(int2str(pos+offset))     &   
     212          form='(t'//trim(num2str(pos))//            &
     213               ',"('//trim(num2str(j))//','          &
     214                    //trim(num2str(i))//')",t'       &
     215                    //trim(num2str(pos+offset))     &   
    216216                    //'," ---> ",g22.16,/)'
    217217          Pos=2
    218218        else
    219           form='(t'//trim(int2str(pos))//            &
    220                ',"('//trim(int2str(j))//','          &
    221                     //trim(int2str(i))//')",t'       &
    222                     //trim(int2str(pos+offset))     &   
     219          form='(t'//trim(num2str(pos))//            &
     220               ',"('//trim(num2str(j))//','          &
     221                    //trim(num2str(i))//')",t'       &
     222                    //trim(num2str(pos+offset))     &   
    223223                    //'," ---> ",g22.16," | ")'
    224224          Pos=Pos+ColumnSize
     
    256256   
    257257    Dim=shape(Field)
    258     offset=len(trim(int2str(Dim(1))))+len(trim(int2str(Dim(2))))+len(trim(int2str(Dim(3))))+4
     258    offset=len(trim(num2str(Dim(1))))+len(trim(num2str(Dim(2))))+len(trim(num2str(Dim(3))))+4
    259259    ColumnSize=22+6+3+offset
    260260
     
    273273     
    274274          if (MOD(nb,NbCol)==0) then
    275             form='(t'//trim(int2str(pos))//            &
    276                  ',"('//trim(int2str(k))//','          &
    277                       //trim(int2str(j))//','          &
    278                       //trim(int2str(i))//')",t'       &
    279                       //trim(int2str(pos+offset))      &   
     275            form='(t'//trim(num2str(pos))//            &
     276                 ',"('//trim(num2str(k))//','          &
     277                      //trim(num2str(j))//','          &
     278                      //trim(num2str(i))//')",t'       &
     279                      //trim(num2str(pos+offset))      &   
    280280                      //'," ---> ",g22.16,/)'
    281281           Pos=2
    282282          else
    283             form='(t'//trim(int2str(pos))//            &
    284                  ',"('//trim(int2str(k))//','          &
    285                       //trim(int2str(j))//','          &
    286                       //trim(int2str(i))//')",t'       &
    287                       //trim(int2str(pos+offset))      &   
     283            form='(t'//trim(num2str(pos))//            &
     284                 ',"('//trim(num2str(k))//','          &
     285                      //trim(num2str(j))//','          &
     286                      //trim(num2str(i))//')",t'       &
     287                      //trim(num2str(pos+offset))      &   
    288288                      //'," ---> ",g22.16," | ")'
    289289! d�pent de l'impl�mention, sur compaq, c'est necessaire
  • LMDZ6/trunk/libf/phylmd/infotrac_phy.F90

    r5487 r5748  
    33MODULE infotrac_phy
    44
    5    USE       strings_mod, ONLY: msg, maxlen, cat, dispTable, int2str, bool2str, strStack, strParse, strCount, strIdx
     5   USE       strings_mod, ONLY: msg, maxlen, cat, dispTable, num2str, strStack, strParse, strCount, strIdx
    66   USE readTracFiles_mod, ONLY: trac_type, readTracersFiles, tracers,  addPhase,  addKey, iH2O,  &
    77       isoSelect,  indexUpdate, isot_type, testTracersFiles, isotope,  delPhase,  getKey, tran0, &
     
    271271   IF( nqtot /= nqtrue ) THEN
    272272      CALL msg('The choice of advection scheme for one or more tracers makes it necessary to add tracers')
    273       CALL msg('The number of true tracers is '//TRIM(int2str(nqtrue)))
    274       CALL msg('The total number of tracers needed is '//TRIM(int2str(nqtot)))
     273      CALL msg('The number of true tracers is '//TRIM(num2str(nqtrue)))
     274      CALL msg('The total number of tracers needed is '//TRIM(num2str(nqtot)))
    275275   END IF
    276276
     
    365365   !=== DISPLAY THE RESULTS
    366366   IF(.NOT.is_master) RETURN
    367    CALL msg('nqo    = '//TRIM(int2str(nqo)),    modname)
    368    CALL msg('nbtr   = '//TRIM(int2str(nbtr)),   modname)
    369    CALL msg('nqtrue = '//TRIM(int2str(nqtrue)), modname)
    370    CALL msg('nqtot  = '//TRIM(int2str(nqtot)),  modname)
    371    CALL msg('niso   = '//TRIM(int2str(niso)),   modname)
    372    CALL msg('ntiso  = '//TRIM(int2str(ntiso)),  modname)
    373    CALL msg('nqCO2  = '//TRIM(int2str(nqCO2)),  modname, CPPKEY_INCA)
    374    CALL msg('nqINCA = '//TRIM(int2str(nqINCA)), modname, CPPKEY_INCA)
     367   CALL msg('nqo    = '//TRIM(num2str(nqo)),    modname)
     368   CALL msg('nbtr   = '//TRIM(num2str(nbtr)),   modname)
     369   CALL msg('nqtrue = '//TRIM(num2str(nqtrue)), modname)
     370   CALL msg('nqtot  = '//TRIM(num2str(nqtot)),  modname)
     371   CALL msg('niso   = '//TRIM(num2str(niso)),   modname)
     372   CALL msg('ntiso  = '//TRIM(num2str(ntiso)),  modname)
     373   CALL msg('nqCO2  = '//TRIM(num2str(nqCO2)),  modname, CPPKEY_INCA)
     374   CALL msg('nqINCA = '//TRIM(num2str(nqINCA)), modname, CPPKEY_INCA)
    375375   t => tracers
    376376   CALL msg('Information stored in '//TRIM(modname)//': ', modname)
    377377   IF(dispTable('issssssssiiiiiiii', ['iq  ', 'name', 'lNam', 'g0Nm', 'prnt', 'type', 'phas', 'comp',      &
    378378                              'isPh', 'iGen', 'iqPr', 'nqDe', 'nqCh', 'iGrp', 'iNam', 'iZon', 'iPha'],     &
    379       cat(t%name, t%longName, t%gen0Name, t%parent, t%type, t%phase, t%component, bool2str(t%isInPhysics)),&
     379      cat(t%name, t%longName, t%gen0Name, t%parent, t%type, t%phase, t%component, num2str(t%isInPhysics)), &
    380380      cat([(iq, iq=1, nqtot)], t%iGeneration, t%iqParent, t%nqDescen, t%nqChildren, t%iso_iGroup,          &
    381381                  t%iso_iName, t%iso_iZone, t%iso_iPhase), nColMax=maxTableWidth, nHead=2, sub=modname))   &
     
    390390
    391391   IF(CPPKEY_STRATAER .AND. type_trac == 'coag') THEN
    392       CALL msg('nbtr_bin       ='//TRIM(int2str(nbtr_bin      )), modname)
    393       CALL msg('nbtr_sulgas    ='//TRIM(int2str(nbtr_sulgas   )), modname)
    394       CALL msg('id_BIN01_strat ='//TRIM(int2str(id_BIN01_strat)), modname)
    395       CALL msg('id_OCS_strat   ='//TRIM(int2str(id_OCS_strat  )), modname)
    396       CALL msg('id_SO2_strat   ='//TRIM(int2str(id_SO2_strat  )), modname)
    397       CALL msg('id_H2SO4_strat ='//TRIM(int2str(id_H2SO4_strat)), modname)
    398       CALL msg('id_TEST_strat  ='//TRIM(int2str(id_TEST_strat )), modname)
     392      CALL msg('nbtr_bin       ='//TRIM(num2str(nbtr_bin      )), modname)
     393      CALL msg('nbtr_sulgas    ='//TRIM(num2str(nbtr_sulgas   )), modname)
     394      CALL msg('id_BIN01_strat ='//TRIM(num2str(id_BIN01_strat)), modname)
     395      CALL msg('id_OCS_strat   ='//TRIM(num2str(id_OCS_strat  )), modname)
     396      CALL msg('id_SO2_strat   ='//TRIM(num2str(id_SO2_strat  )), modname)
     397      CALL msg('id_H2SO4_strat ='//TRIM(num2str(id_H2SO4_strat)), modname)
     398      CALL msg('id_TEST_strat  ='//TRIM(num2str(id_TEST_strat )), modname)
    399399   END IF
    400400
  • LMDZ6/trunk/libf/phylmd/phyetat0_get_mod.f90

    r5268 r5748  
    122122  USE iostart,           ONLY: get_field
    123123  USE print_control_mod, ONLY: lunout
    124   USE strings_mod,       ONLY: int2str, maxlen
     124  USE strings_mod,       ONLY: num2str, maxlen
    125125  IMPLICIT NONE
    126126  REAL,             INTENT(INOUT) :: field(:,:,:)
     
    133133  IF(SIZE(field,3)>99) CALL abort_physic("phyetat0", "Too much sub-cells", 1)
    134134  DO nsrf = 1, SIZE(field,3)
    135     DO i = 1, SIZE(name); nam(i) = TRIM(name(i))//TRIM(int2str(nsrf,2)); END DO
    136     des = TRIM(descr)//" srf:"//int2str(nsrf,2)
     135    DO i = 1, SIZE(name); nam(i) = TRIM(name(i))//TRIM(num2str(nsrf,2)); END DO
     136    des = TRIM(descr)//" srf:"//num2str(nsrf,2)
    137137    lFound = phyetat0_get21(field(:,:,nsrf), nam, TRIM(des), default, tname)
    138138  END DO
  • LMDZ6/trunk/libf/phylmd/phytrac_mod.f90

    r5473 r5748  
    128128    USE dimphy
    129129    USE infotrac_phy, ONLY: nbtr, nqCO2, type_trac, conv_flg, pbl_flg
    130     USE strings_mod,  ONLY: int2str
     130    USE strings_mod,  ONLY: num2str
    131131    USE mod_grid_phy_lmdz
    132132    USE mod_phys_lmdz_para
     
    735735          ENDDO
    736736
    737           CALL minmaxqfi(tr_seri(:,:,it),0.,1.e33,'convection it = '//TRIM(int2str(it)))
     737          CALL minmaxqfi(tr_seri(:,:,it),0.,1.e33,'convection it = '//TRIM(num2str(it)))
    738738
    739739       ENDDO ! nbtr
     
    939939                ENDDO
    940940             ENDDO
    941              CALL minmaxqfi(tr_seri(:,:,it),0.,1.e33,'lsc scav it = '//TRIM(int2str(it)))
     941             CALL minmaxqfi(tr_seri(:,:,it),0.,1.e33,'lsc scav it = '//TRIM(num2str(it)))
    942942             ENDIF
    943943
  • LMDZ6/trunk/libf/phylmd/traclmdz_mod.f90

    r5481 r5748  
    312312    USE dimphy
    313313    USE infotrac_phy, ONLY: nbtr, pbl_flg
    314     USE strings_mod,  ONLY: int2str
     314    USE strings_mod,  ONLY: num2str
    315315    USE regr_pr_comb_coefoz_m, ONLY: regr_pr_comb_coefoz
    316316    USE o3_chem_m, ONLY: o3_chem
     
    558558             END DO
    559559          END DO
    560           CALL minmaxqfi(tr_seri(:,:,it),0.,1.e33,'puits rn it='//TRIM(int2str(it)))
     560          CALL minmaxqfi(tr_seri(:,:,it),0.,1.e33,'puits rn it='//TRIM(num2str(it)))
    561561       END IF
    562562    END DO
  • LMDZ6/trunk/libf/phylmdiso/isotopes_mod.F90

    r5267 r5748  
    33
    44MODULE isotopes_mod
    5    USE strings_mod,  ONLY: msg, real2str, int2str, bool2str, maxlen, strIdx, strStack
     5   USE strings_mod,  ONLY: msg, num2str, maxlen, strIdx, strStack
    66   USE infotrac_phy, ONLY: isoName, niso, ntiso
    77   USE iso_params_mod
     
    173173
    174174   !--- Check number of isotopes
    175    CALL msg('64: niso = '//TRIM(int2str(niso)), modname)
     175   CALL msg('64: niso = '//TRIM(num2str(niso)), modname)
    176176
    177177         !--- Init de ntracisoOR: on ecrasera en cas de traceurs de tagging isotopiques
     
    180180
    181181         !--- Type of water isotopes:
    182          iso_eau = strIdx(isoName, 'H216O'); CALL msg('iso_eau='//int2str(iso_eau), modname)
    183          iso_HDO = strIdx(isoName, 'HDO');   CALL msg('iso_HDO='//int2str(iso_HDO), modname)
    184          iso_O18 = strIdx(isoName, 'H218O'); CALL msg('iso_O18='//int2str(iso_O18), modname)
    185          iso_O17 = strIdx(isoName, 'H217O'); CALL msg('iso_O17='//int2str(iso_O17), modname)
    186          iso_HTO = strIdx(isoName, 'HTO');   CALL msg('iso_HTO='//int2str(iso_HTO), modname)
     182         iso_eau = strIdx(isoName, 'H216O'); CALL msg('iso_eau='//num2str(iso_eau), modname)
     183         iso_HDO = strIdx(isoName, 'HDO');   CALL msg('iso_HDO='//num2str(iso_HDO), modname)
     184         iso_O18 = strIdx(isoName, 'H218O'); CALL msg('iso_O18='//num2str(iso_O18), modname)
     185         iso_O17 = strIdx(isoName, 'H217O'); CALL msg('iso_O17='//num2str(iso_O17), modname)
     186         iso_HTO = strIdx(isoName, 'HTO');   CALL msg('iso_HTO='//num2str(iso_HTO), modname)
    187187
    188188         !--- Initialisation: reading the isotopic parameters.
     
    204204         CALL get_in('dsstlatcrit',   dsstlatcrit,      0.0)     !--- For modif_sst>=3
    205205#ifdef ISOVERIF
    206          CALL msg('iso_init 270:  sstlatcrit='//real2str( sstlatcrit), modname, sstlatcrit < 0.0) !--- For modif_sst>=2
    207          CALL msg('iso_init 279: dsstlatcrit='//real2str(dsstlatcrit), modname, sstlatcrit < 0.0) !--- For modif_sst>=3
     206         CALL msg('iso_init 270:  sstlatcrit='//num2str( sstlatcrit), modname, sstlatcrit < 0.0) !--- For modif_sst>=2
     207         CALL msg('iso_init 279: dsstlatcrit='//num2str(dsstlatcrit), modname, sstlatcrit < 0.0) !--- For modif_sst>=3
    208208         IF(modif_sst >= 2 .AND. sstlatcrit < 0.0) STOP
    209209#endif             
     
    234234         CALL get_in('region_nudge_qsol',   region_nudge_qsol,   1)
    235235         nlevmaxO17 = 50
    236          CALL msg('nlevmaxO17='//TRIM(int2str(nlevmaxO17)))
     236         CALL msg('nlevmaxO17='//TRIM(num2str(nlevmaxO17)))
    237237         CALL get_in('no_pce',   no_pce,     0)
    238238         CALL get_in('A_satlim', A_satlim, 1.0)
    239239         CALL get_in('ok_restrict_A_satlim', ok_restrict_A_satlim, 0)
    240240#ifdef ISOVERIF
    241          CALL msg(' 315: A_satlim='//real2str(A_satlim), modname, A_satlim > 1.0)
     241         CALL msg(' 315: A_satlim='//num2str(A_satlim), modname, A_satlim > 1.0)
    242242         IF(A_satlim > 1.0) STOP
    243243#endif
     
    256256         CALL get_in('tnateq1', ltnat1, .TRUE.)
    257257
    258          CALL msg('iso_O18, iso_HDO, iso_eau = '//TRIM(strStack(int2str([iso_O18, iso_HDO, iso_eau]))), modname)
     258         CALL msg('iso_O18, iso_HDO, iso_eau = '//TRIM(strStack(num2str([iso_O18, iso_HDO, iso_eau]))), modname)
    259259
    260260         !--------------------------------------------------------------
     
    363363         CALL msg('285: verif initialisation:', modname)
    364364         DO ixt=1,niso
    365             sxt=int2str(ixt)
     365            sxt=num2str(ixt)
    366366            CALL msg(' * isoName('//TRIM(sxt)//') = <'//TRIM(isoName(ixt))//'>',  modname)
    367             CALL msg(  '    tnat('//TRIM(sxt)//') = '//TRIM(real2str(tnat(ixt))), modname)
    368 !           CALL msg('    alpha_liq_sol('//TRIM(sxt)//') = '//TRIM(real2str(alpha_liq_sol(ixt))), modname)
    369 !           CALL msg(        '   tkcin0('//TRIM(sxt)//') = '//TRIM(real2str(tkcin0(ixt))),        modname)
    370 !           CALL msg(       '   tdifrel('//TRIM(sxt)//') = '//TRIM(real2str(tdifrel(ixt))),       modname)
     367            CALL msg(  '    tnat('//TRIM(sxt)//') = '//TRIM(num2str(tnat(ixt))), modname)
     368!           CALL msg('    alpha_liq_sol('//TRIM(sxt)//') = '//TRIM(num2str(alpha_liq_sol(ixt))), modname)
     369!           CALL msg(        '   tkcin0('//TRIM(sxt)//') = '//TRIM(num2str(tkcin0(ixt))),        modname)
     370!           CALL msg(       '   tdifrel('//TRIM(sxt)//') = '//TRIM(num2str(tdifrel(ixt))),       modname)
    371371         END DO
    372          CALL msg('69:     lambda = '//TRIM(real2str(lambda_sursat)), modname)
    373          CALL msg('69:    thumxt1 = '//TRIM(real2str(thumxt1)),       modname)
    374          CALL msg('69: h_land_ice = '//TRIM(real2str(h_land_ice)),    modname)
    375          CALL msg('69:      P_veg = '//TRIM(real2str(P_veg)),         modname)
     372         CALL msg('69:     lambda = '//TRIM(num2str(lambda_sursat)), modname)
     373         CALL msg('69:    thumxt1 = '//TRIM(num2str(thumxt1)),       modname)
     374         CALL msg('69: h_land_ice = '//TRIM(num2str(h_land_ice)),    modname)
     375         CALL msg('69:      P_veg = '//TRIM(num2str(P_veg)),         modname)
    376376
    377377END SUBROUTINE iso_init
     
    411411      IF(PRESENT(def)) val=def; CALL getin(nam,val)
    412412      lD=.TRUE.; IF(PRESENT(lDisp)) lD=lDisp
    413       IF(lD) CALL msg(TRIM(nam)//' = '//TRIM(int2str(val)))
     413      IF(lD) CALL msg(TRIM(nam)//' = '//TRIM(num2str(val)))
    414414  END IF
    415415  CALL bcast(val)
     
    430430      IF(PRESENT(def)) val=def; CALL getin(nam,val)
    431431      lD=.TRUE.; IF(PRESENT(lDisp)) lD=lDisp
    432       IF(lD) CALL msg(TRIM(nam)//' = '//TRIM(real2str(val)))
     432      IF(lD) CALL msg(TRIM(nam)//' = '//TRIM(num2str(val)))
    433433  END IF
    434434  CALL bcast(val)
     
    449449      IF(PRESENT(def)) val=def; CALL getin(nam,val)
    450450      lD=.TRUE.; IF(PRESENT(lDisp)) lD=lDisp
    451       IF(lD) CALL msg(TRIM(nam)//' = '//TRIM(bool2str(val)))
     451      IF(lD) CALL msg(TRIM(nam)//' = '//TRIM(num2str(val)))
    452452  END IF
    453453  CALL bcast(val)
  • LMDZ6/trunk/libf/phylmdiso/isotopes_routines_mod.F90

    r5296 r5748  
    1641916419   USE phyetat0_get_mod,  ONLY: phyetat0_get, phyetat0_srf
    1642016420   USE infotrac_phy,      ONLY: new2oldH2O
    16421    USE strings_mod,       ONLY: strIdx, strHead, strTail, maxlen, msg, int2str
     16421   USE strings_mod,       ONLY: strIdx, strHead, strTail, maxlen, msg, num2str
    1642216422#ifdef ISOVERIF
    1642316423   USE isotopes_verif_mod
     
    1644816448   modname = 'phyiso_etat0_fichier'
    1644916449   CALL msg('3', modname)
    16450    CALL msg('niso = '//TRIM(int2str(niso)), modname)
     16450   CALL msg('niso = '//TRIM(num2str(niso)), modname)
    1645116451   CALL msg('isoName(1) = '//TRIM(isoName(1)), modname)
    1645216452
  • LMDZ6/trunk/libf/phylmdiso/isotrac_mod.F90

    r5746 r5748  
    148148   USE isotopes_mod, ONLY: iso_eau, ntracisoOR, initialisation_iso
    149149   USE dimphy,       ONLY: klon, klev
    150    USE  strings_mod, ONLY: int2str, strStack, strTail, strHead, strIdx
     150   USE  strings_mod, ONLY: num2str, strStack, strTail, strHead, strIdx
    151151
    152152   IMPLICIT NONE
     
    292292         option_cond=0
    293293         DO izone=1,nzone_temp
    294             strtrac(izone) = 't'//TRIM(int2str(izone))
     294            strtrac(izone) = 't'//TRIM(num2str(izone))
    295295            WRITE(*,*) 'izone, strtrac=', izone, strtrac(izone)
    296296         END DO
     
    436436         option_cond=0
    437437         DO izone=1,nzone_temp
    438             strtrac(izone) = 't'//TRIM(int2str(izone))
     438            strtrac(izone) = 't'//TRIM(num2str(izone))
    439439            WRITE(*,*) 'izone, strtrac = ', izone, strtrac(izone)
    440440         END DO
     
    471471            DO izone_lat=1,nzone_lat
    472472               izone=izone_lat+(izone_pres-1)*nzone_lat
    473                strtrac(izone) = 't'//TRIM(int2str(izone_pres))//TRIM(int2str(izone_lat))
     473               strtrac(izone) = 't'//TRIM(num2str(izone_pres))//TRIM(num2str(izone_lat))
    474474               write(*,*) 'izone_pres, izone_lat, izone, strtrac = ',izone_pres, izone_lat, izone, strtrac(izone)
    475475            END DO
     
    531531         izone_cond=nzone_temp+2
    532532         DO izone=1,nzone_temp
    533             strtrac(izone) = 't'//TRIM(int2str(izone))
     533            strtrac(izone) = 't'//TRIM(num2str(izone))
    534534            WRITE(*,*) 'izone, strtrac = ', izone, strtrac(izone)
    535535         END DO !do izone=1,nzone_temp
     
    577577         option_cond=1
    578578         DO izone=1,nzone_temp
    579             strtrac(izone) = 't'//TRIM(int2str(izone))
     579            strtrac(izone) = 't'//TRIM(num2str(izone))
    580580            WRITE(*,*) 'izone, strtrac = ', izone, strtrac(izone)
    581581         END DO
     
    660660#ifdef ISOVERIF
    661661   WRITE(*,*) 'traceurs_init 65: bilan de l''init:'
    662    WRITE(*,*) 'index_zone = '//TRIM(strStack(int2str(index_zone(1:ntiso))))
    663    WRITE(*,*) 'index_iso  = '//TRIM(strStack(int2str(index_iso (1:ntiso))))
     662   WRITE(*,*) 'index_zone = '//TRIM(strStack(num2str(index_zone(1:ntiso))))
     663   WRITE(*,*) 'index_iso  = '//TRIM(strStack(num2str(index_iso (1:ntiso))))
    664664   DO izone=1,nzone
    665       WRITE(*,*)'itZonIso('//TRIM(int2str(izone))//',:) = '//strStack(int2str(itZonIso(izone,:)))
     665      WRITE(*,*)'itZonIso('//TRIM(num2str(izone))//',:) = '//strStack(num2str(itZonIso(izone,:)))
    666666   END DO
    667667   DO izone=1,nzone
    668       WRITE(*,*)'strtrac('//TRIM(int2str(izone))//',:) = '//TRIM(strtrac(izone))
     668      WRITE(*,*)'strtrac('//TRIM(num2str(izone))//',:) = '//TRIM(strtrac(izone))
    669669   END DO
    670670   WRITE(*,*) 'ntracisoOR=',ntracisoOR
Note: See TracChangeset for help on using the changeset viewer.