Changeset 5748
- Timestamp:
- Jul 2, 2025, 12:00:08 PM (27 hours ago)
- Location:
- LMDZ6/trunk/libf
- Files:
-
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/dyn3d/advtrac.f90
r5324 r5748 15 15 USE control_mod, ONLY: iapp_tracvl, day_step 16 16 USE comconst_mod, ONLY: dtvr 17 USE strings_mod, ONLY: int2str18 17 USE dimensions_mod, ONLY: iim, jjm, llm, ndm 19 18 USE paramet_mod_h -
LMDZ6/trunk/libf/dyn3d/check_isotopes.f90
r5271 r5748 1 1 SUBROUTINE check_isotopes_seq(q, ip1jmp1, err_msg) 2 USE strings_mod, ONLY: maxlen, msg, strIdx, strStack, int2str, real2str2 USE strings_mod, ONLY: maxlen, msg, strIdx, strStack, num2str 3 3 USE infotrac, ONLY: nqtot, niso, nphas, isotope, isoCheck, iqIsoPha, isoSelect, & 4 4 ntiso, iH2O, nzone, tracers, isoName, itZonIso … … 80 80 CYCLE 81 81 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) 86 86 CALL abort_gcm(modname, 'Error with isotopes: '//TRIM(err_msg), 1) 87 87 END DO … … 111 111 deltaD = (q2/q1/tnat(ixt)-1.)*1000. 112 112 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) 118 118 CALL abort_gcm(modname, 'Error with isotopes: '//TRIM(err_msg), 1) 119 119 END DO … … 140 140 deltaD = (q2/q1/tnat(iso_HDO)-1.)*1000. 141 141 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) 148 148 CALL abort_gcm(modname, 'Error with isotopes: '//TRIM(err_msg), 1) 149 149 END DO … … 163 163 IF(ABS(xtractot-xiiso) > errmax .AND. ABS(xtractot-xiiso)/MAX(MAX(ABS(xtractot),ABS(xiiso)),1e-18) > errmaxrel) THEN 164 164 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) 167 167 CALL abort_gcm(modname, 'Error with isotopes: '//TRIM(err_msg), 1) 168 168 END IF -
LMDZ6/trunk/libf/dyn3d/dynetat0.f90
r5285 r5748 10 10 USE infotrac, ONLY: nqtot, tracers, niso, iqIsoPha, iH2O, isoName, & 11 11 new2oldH2O, newHNO3, oldHNO3 12 USE strings_mod, ONLY: maxlen, msg, strStack, real2str, int2str12 USE strings_mod, ONLY: maxlen, msg, strStack, num2str 13 13 USE netcdf, ONLY: NF90_OPEN, NF90_NOWRITE, NF90_INQ_VARID, & 14 14 NF90_CLOSE, NF90_GET_VAR, NF90_NoErr … … 107 107 108 108 !------------------------------------------------------------------------------- 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) 110 110 CALL check_dim(im,iim,'im','im') 111 111 CALL check_dim(jm,jjm,'jm','jm') … … 210 210 CHARACTER(LEN=*), INTENT(IN) :: str1, str2 211 211 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) 214 214 END SUBROUTINE check_dim 215 215 -
LMDZ6/trunk/libf/dyn3d_common/infotrac.f90
r5487 r5748 3 3 MODULE infotrac 4 4 5 USE strings_mod, ONLY: msg, maxlen, cat, dispTable, int2str, bool2str,strStack, strParse, strCount, strIdx5 USE strings_mod, ONLY: msg, maxlen, cat, dispTable, num2str, strStack, strParse, strCount, strIdx 6 6 USE readTracFiles_mod, ONLY: trac_type, readTracersFiles, tracers, addPhase, addKey, iH2O, & 7 7 isoSelect, indexUpdate, isot_type, testTracersFiles, isotope, delPhase, getKey, tran0, & … … 250 250 IF( nqtot /= nqtrue ) THEN 251 251 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))) 254 254 END IF 255 255 … … 313 313 ig = t1%iGeneration 314 314 nam = t1%name 315 val = 'iadv='//TRIM( int2str(iad))315 val = 'iadv='//TRIM(num2str(iad)) 316 316 317 317 !--- ONLY TESTED VALUES FOR TRACERS FOR NOW: iadv = 14, 10 (and 0 for non-transported tracers) … … 344 344 !=== DISPLAY THE RESULTS 345 345 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) 354 354 t => tracers 355 355 CALL msg('Information stored in '//TRIM(modname)//': ', modname) -
LMDZ6/trunk/libf/dyn3dmem/advtrac_loc.f90
r5324 r5748 21 21 USE times 22 22 USE advtrac_mod, ONLY: finmasse 23 USE strings_mod, ONLY: int2str24 23 USE dimensions_mod, ONLY: iim, jjm, llm, ndm 25 24 USE paramet_mod_h -
LMDZ6/trunk/libf/dyn3dmem/call_calfis_mod.f90
r5324 r5748 91 91 USE temps_mod, ONLY: day_ini, day_ref, jd_ref, jh_ref, start_time 92 92 USE lmdz_cppkeys_wrapper, ONLY: CPPKEY_PHYS 93 USE strings_mod, ONLY: int2str94 93 USE iniprint_mod_h 95 94 IMPLICIT NONE -
LMDZ6/trunk/libf/dyn3dmem/check_isotopes_loc.f90
r5271 r5748 1 1 SUBROUTINE check_isotopes(q, ijb, ije, err_msg) 2 2 USE parallel_lmdz 3 USE strings_mod, ONLY: maxlen, msg, strIdx, strStack, int2str, real2str3 USE strings_mod, ONLY: maxlen, msg, strIdx, strStack, num2str 4 4 USE infotrac, ONLY: nqtot, niso, nphas, isotope, isoCheck, iqIsoPha, isoSelect, & 5 5 ntiso, iH2O, nzone, tracers, isoName, itZonIso … … 89 89 CYCLE 90 90 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) 95 95 CALL abort_gcm(modname, 'Error with isotopes: '//TRIM(err_msg), 1) 96 96 END DO … … 122 122 deltaD = (q2/q1/tnat(ixt)-1.)*1000. 123 123 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) 129 129 CALL abort_gcm(modname, 'Error with isotopes: '//TRIM(err_msg), 1) 130 130 END DO … … 153 153 deltaD = (q2/q1/tnat(iso_HDO)-1.)*1000. 154 154 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) 161 161 CALL abort_gcm(modname, 'Error with isotopes: '//TRIM(err_msg), 1) 162 162 END DO … … 178 178 IF(ABS(xtractot-xiiso) > errmax .AND. ABS(xtractot-xiiso)/MAX(MAX(ABS(xtractot),ABS(xiiso)),1e-18) > errmaxrel) THEN 179 179 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) 182 182 CALL abort_gcm(modname, 'Error with isotopes: '//TRIM(err_msg), 1) 183 183 END IF -
LMDZ6/trunk/libf/dyn3dmem/dynetat0_loc.f90
r5285 r5748 11 11 USE infotrac, ONLY: nqtot, tracers, niso, iqIsoPha, iH2O, isoName, & 12 12 new2oldH2O, newHNO3, oldHNO3 13 USE strings_mod, ONLY: maxlen, msg, strStack, real2str, int2str, strIdx13 USE strings_mod, ONLY: maxlen, msg, strStack, num2str, strIdx 14 14 USE netcdf, ONLY: NF90_OPEN, NF90_NOWRITE, NF90_INQUIRE_DIMENSION, NF90_INQ_VARID, & 15 15 NF90_CLOSE, NF90_GET_VAR, NF90_INQUIRE_VARIABLE, NF90_NoErr … … 111 111 112 112 !------------------------------------------------------------------------------- 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) 114 114 CALL check_dim(im,iim,'im','im') 115 115 CALL check_dim(jm,jjm,'jm','jm') … … 236 236 CHARACTER(LEN=*), INTENT(IN) :: str1, str2 237 237 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) 240 240 END SUBROUTINE check_dim 241 241 -
LMDZ6/trunk/libf/dyn3dmem/integrd_loc.f90
r5285 r5748 17 17 USE comvert_mod, ONLY: ap, bp 18 18 USE temps_mod, ONLY: dt 19 USE strings_mod, ONLY: int2str19 USE strings_mod, ONLY: num2str 20 20 USE dimensions_mod, ONLY: iim, jjm, llm, ndm 21 21 USE paramet_mod_h … … 184 184 ! call WriteField_u('int_finvmaold',finvmaold) 185 185 do j=1,nq 186 call WriteField_u('int_q'//trim( int2str(j)), &186 call WriteField_u('int_q'//trim(num2str(j)), & 187 187 q(:,:,j)) 188 call WriteField_u('int_dq'//trim( int2str(j)), &188 call WriteField_u('int_dq'//trim(num2str(j)), & 189 189 dq(:,:,j)) 190 190 enddo -
LMDZ6/trunk/libf/dyn3dmem/leapfrog_loc.f90
r5659 r5748 41 41 using_xios 42 42 USE lmdz_cppkeys_wrapper, ONLY: CPPKEY_INCA, CPPKEY_REPROBUS 43 USE strings_mod, ONLY: int2str43 USE strings_mod, ONLY: num2str 44 44 45 45 USE dimensions_mod, ONLY: iim, jjm, llm, ndm … … 642 642 call WriteField_u('phis',phis) 643 643 do iq=1,nqtot 644 call WriteField_u('q'//trim( int2str(iq)), &644 call WriteField_u('q'//trim(num2str(iq)), & 645 645 q(:,:,iq)) 646 646 enddo … … 708 708 709 709 ! do j=1,nqtot 710 ! call WriteField_u('qadv'//trim( int2str(j)),q(:,:,j))710 ! call WriteField_u('qadv'//trim(num2str(j)),q(:,:,j)) 711 711 ! enddo 712 712 … … 743 743 744 744 ! do j=1,nqtot 745 ! call WriteField_p('q'//trim( int2str(j)),745 ! call WriteField_p('q'//trim(num2str(j)), 746 746 ! . reshape(q(:,:,j),(/iip1,jmp1,llm/))) 747 ! call WriteField_p('dq'//trim( int2str(j)),747 ! call WriteField_p('dq'//trim(num2str(j)), 748 748 ! . reshape(dq(:,:,j),(/iip1,jmp1,llm/))) 749 749 ! enddo … … 781 781 ! call WriteField_u('pkfi',pk) 782 782 ! do j=1,nqtot 783 ! call WriteField_u('qfi'//trim( int2str(j)),q(:,:,j))783 ! call WriteField_u('qfi'//trim(num2str(j)),q(:,:,j)) 784 784 ! enddo 785 785 ! #endif … … 887 887 ! call WriteField_u('pkfi',pk) 888 888 ! do j=1,nqtot 889 ! call WriteField_u('qfi'//trim( int2str(j)),q(:,:,j))889 ! call WriteField_u('qfi'//trim(num2str(j)),q(:,:,j)) 890 890 ! enddo 891 891 ! #endif … … 978 978 ! call WriteField_u('dpfi',dpfi) 979 979 ! do j=1,nqtot 980 ! call WriteField_u('dqfi'//trim( int2str(j)),dqfi(:,:,j))980 ! call WriteField_u('dqfi'//trim(num2str(j)),dqfi(:,:,j)) 981 981 ! enddo 982 982 ! #endif … … 992 992 ! call WriteField_u('psfi',ps) 993 993 ! do j=1,nqtot 994 ! call WriteField_u('qfi'//trim( int2str(j)),q(:,:,j))994 ! call WriteField_u('qfi'//trim(num2str(j)),q(:,:,j)) 995 995 ! enddo 996 996 ! #endif … … 1006 1006 ! call WriteField_u('psfi',ps) 1007 1007 ! do j=1,nqtot 1008 ! call WriteField_u('qfi'//trim( int2str(j)),q(:,:,j))1008 ! call WriteField_u('qfi'//trim(num2str(j)),q(:,:,j)) 1009 1009 ! enddo 1010 1010 ! #endif … … 1020 1020 ! call WriteField_u('psfi',ps) 1021 1021 ! do j=1,nqtot 1022 ! call WriteField_u('qfi'//trim( int2str(j)),q(:,:,j))1022 ! call WriteField_u('qfi'//trim(num2str(j)),q(:,:,j)) 1023 1023 ! enddo 1024 1024 ! #endif … … 1086 1086 ! call WriteField_u('psfi',ps) 1087 1087 ! do j=1,nqtot 1088 ! call WriteField_u('qfi'//trim( int2str(j)),q(:,:,j))1088 ! call WriteField_u('qfi'//trim(num2str(j)),q(:,:,j)) 1089 1089 ! enddo 1090 1090 ! #endif -
LMDZ6/trunk/libf/misc/readTracFiles_mod.f90
r5746 r5748 3 3 USE strings_mod, ONLY: msg, find, get_in, dispTable, strHead, strReduce, strFind, strStack, strIdx, & 4 4 removeComment, cat, maxlen, checkList, strParse, strReplace, strTail, strCount, reduceExpr, & 5 int2str, str2int, real2str, str2real, bool2str, str2bool5 num2str, str2int, str2real, str2bool 6 6 7 7 IMPLICIT NONE … … 993 993 lerr = .FALSE. 994 994 IF(nam(1) == 'iq') THEN 995 tmp2 = int2str([(iq, iq=1, nq)])995 tmp2 = num2str([(iq, iq=1, nq)]) 996 996 tmp = tmp2 997 997 ELSE … … 1086 1086 tr(iq)%nqChildren = SIZE(iqDescen) 1087 1087 END DO 1088 CALL addKey('iqDescen', strStack( int2str(iqDescen)), tr(iq)%keys)1088 CALL addKey('iqDescen', strStack(num2str(iqDescen)), tr(iq)%keys) 1089 1089 CALL addKey('nqDescen', SIZE(iqDescen), tr(iq)%keys) 1090 1090 tr(iq)%iqDescen = iqDescen … … 1328 1328 np = SUM([(COUNT(tracers(:)%name == addPhase(i%trac(it), i%phase(ip:ip))), ip=1, npha)]) 1329 1329 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) 1331 1331 IF(lerr) RETURN 1332 1332 END DO … … 1334 1334 nz = SUM([(COUNT(i%trac == TRIM(i%trac(it))//'_'//i%zone(iz)), iz=1, nzon)]) 1335 1335 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) 1337 1337 IF(lerr) RETURN 1338 1338 END DO … … 1375 1375 IF(iIso == ixIso) RETURN !--- Nothing to do if the index is already OK 1376 1376 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) 1379 1379 IF(lerr) RETURN 1380 1380 ixIso = iIso !--- Update currently selected family index … … 1424 1424 LOGICAL, OPTIONAL, INTENT(IN) :: lOverWrite 1425 1425 !------------------------------------------------------------------------------------------------------------------------------ 1426 CALL addKey_s11(key, int2str(ival), ky, lOverWrite)1426 CALL addKey_s11(key, num2str(ival), ky, lOverWrite) 1427 1427 END SUBROUTINE addKey_i11 1428 1428 !============================================================================================================================== … … 1433 1433 LOGICAL, OPTIONAL, INTENT(IN) :: lOverWrite 1434 1434 !------------------------------------------------------------------------------------------------------------------------------ 1435 CALL addKey_s11(key, real2str(rval), ky, lOverWrite)1435 CALL addKey_s11(key, num2str(rval), ky, lOverWrite) 1436 1436 END SUBROUTINE addKey_r11 1437 1437 !============================================================================================================================== … … 1442 1442 LOGICAL, OPTIONAL, INTENT(IN) :: lOverWrite 1443 1443 !------------------------------------------------------------------------------------------------------------------------------ 1444 CALL addKey_s11(key, bool2str(lval), ky, lOverWrite)1444 CALL addKey_s11(key, num2str(lval), ky, lOverWrite) 1445 1445 END SUBROUTINE addKey_l11 1446 1446 !============================================================================================================================== … … 1462 1462 !------------------------------------------------------------------------------------------------------------------------------ 1463 1463 INTEGER :: itr 1464 DO itr = 1, SIZE(ky); CALL addKey_s11(key, int2str(ival), ky(itr), lOverWrite); END DO1464 DO itr = 1, SIZE(ky); CALL addKey_s11(key, num2str(ival), ky(itr), lOverWrite); END DO 1465 1465 END SUBROUTINE addKey_i1m 1466 1466 !============================================================================================================================== … … 1472 1472 !------------------------------------------------------------------------------------------------------------------------------ 1473 1473 INTEGER :: itr 1474 DO itr = 1, SIZE(ky); CALL addKey_s11(key, real2str(rval), ky(itr), lOverWrite); END DO1474 DO itr = 1, SIZE(ky); CALL addKey_s11(key, num2str(rval), ky(itr), lOverWrite); END DO 1475 1475 END SUBROUTINE addKey_r1m 1476 1476 !============================================================================================================================== … … 1482 1482 !------------------------------------------------------------------------------------------------------------------------------ 1483 1483 INTEGER :: itr 1484 DO itr = 1, SIZE(ky); CALL addKey_s11(key, bool2str(lval), ky(itr), lOverWrite); END DO1484 DO itr = 1, SIZE(ky); CALL addKey_s11(key, num2str(lval), ky(itr), lOverWrite); END DO 1485 1485 END SUBROUTINE addKey_l1m 1486 1486 !============================================================================================================================== … … 1502 1502 !------------------------------------------------------------------------------------------------------------------------------ 1503 1503 INTEGER :: itr 1504 DO itr = 1, SIZE(ky); CALL addKey_s11(key, int2str(ival(itr)), ky(itr), lOverWrite); END DO1504 DO itr = 1, SIZE(ky); CALL addKey_s11(key, num2str(ival(itr)), ky(itr), lOverWrite); END DO 1505 1505 END SUBROUTINE addKey_imm 1506 1506 !============================================================================================================================== … … 1512 1512 !------------------------------------------------------------------------------------------------------------------------------ 1513 1513 INTEGER :: itr 1514 DO itr = 1, SIZE(ky); CALL addKey_s11(key, real2str(rval(itr)), ky(itr), lOverWrite); END DO1514 DO itr = 1, SIZE(ky); CALL addKey_s11(key, num2str(rval(itr)), ky(itr), lOverWrite); END DO 1515 1515 END SUBROUTINE addKey_rmm 1516 1516 !============================================================================================================================== … … 1522 1522 !------------------------------------------------------------------------------------------------------------------------------ 1523 1523 INTEGER :: itr 1524 DO itr = 1, SIZE(ky); CALL addKey_s11(key, bool2str(lval(itr)), ky(itr), lOverWrite); END DO1524 DO itr = 1, SIZE(ky); CALL addKey_s11(key, num2str(lval(itr)), ky(itr), lOverWrite); END DO 1525 1525 END SUBROUTINE addKey_lmm 1526 1526 !============================================================================================================================== … … 1676 1676 LOGICAL :: lD 1677 1677 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)) 1679 1679 lerr = .TRUE. 1680 1680 IF(lerr .AND. PRESENT(ky)) val = fgetKey(ky) !--- "ky" … … 1706 1706 !------------------------------------------------------------------------------------------------------------------------------ 1707 1707 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) 1709 1709 IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, lDisp=lDisp) 1710 1710 IF(lerr) RETURN 1711 1711 val = str2int(sval) 1712 1712 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' 1714 1714 CALL msg(TRIM(s)//' an integer: '//TRIM(sval), modname, lerr) 1715 1715 END FUNCTION getKeyByIndex_im11 … … 1724 1724 !------------------------------------------------------------------------------------------------------------------------------ 1725 1725 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) 1727 1727 IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, lDisp=lDisp) 1728 1728 IF(lerr) RETURN 1729 1729 val = str2real(sval) 1730 1730 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' 1732 1732 CALL msg(TRIM(s)//' a real: '//TRIM(sval), modname, lerr) 1733 1733 END FUNCTION getKeyByIndex_rm11 … … 1743 1743 CHARACTER(LEN=maxlen) :: sval, s 1744 1744 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) 1746 1746 IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, lDisp=lDisp) 1747 1747 IF(lerr) RETURN 1748 1748 ival = str2bool(sval) 1749 1749 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' 1751 1751 CALL msg(TRIM(s)//' a boolean: '//TRIM(sval), modname, lerr) 1752 1752 IF(.NOT.lerr) val = ival == 1 … … 1778 1778 CHARACTER(LEN=maxlen) :: sval, s 1779 1779 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) 1781 1781 IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_sm11([keyn], sval, itr, ky, lDisp=lDisp) 1782 1782 IF(lerr) RETURN … … 1785 1785 val = str2int(svals) 1786 1786 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' 1788 1788 CALL msg(TRIM(s)//' an integer: '//TRIM(sval), modname, lerr) 1789 1789 END FUNCTION getKeyByIndex_i1m1 … … 1799 1799 CHARACTER(LEN=maxlen) :: sval, s 1800 1800 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) 1802 1802 IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_sm11([keyn], sval, itr, ky, lDisp=lDisp) 1803 1803 lerr = strParse(sval, ',', svals) … … 1805 1805 val = str2real(svals) 1806 1806 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' 1808 1808 CALL msg(TRIM(s)//' a real: '//TRIM(sval), modname, lerr) 1809 1809 END FUNCTION getKeyByIndex_r1m1 … … 1820 1820 CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:) 1821 1821 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) 1823 1823 IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_sm11([keyn], sval, itr, ky, lDisp=lDisp) 1824 1824 lerr = strParse(sval, ',', svals) … … 1826 1826 ivals = str2bool(svals) 1827 1827 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' 1829 1829 CALL msg(TRIM(s)//' a boolean: '//TRIM(sval), modname, lerr) 1830 1830 IF(.NOT.lerr) val = ivals == 1 … … 1856 1856 CHARACTER(LEN=maxlen) :: sval, s 1857 1857 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) 1859 1859 IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, lDisp=lDisp) 1860 1860 IF(lerr) RETURN … … 1863 1863 val = str2int(svals) 1864 1864 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' 1866 1866 CALL msg(TRIM(s)//' an integer: '//TRIM(sval), modname, lerr) 1867 1867 END FUNCTION getKeyByIndex_imm1 … … 1877 1877 CHARACTER(LEN=maxlen) :: sval, s 1878 1878 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) 1880 1880 IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, lDisp=lDisp) 1881 1881 IF(lerr) RETURN … … 1884 1884 val = str2real(svals) 1885 1885 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' 1887 1887 CALL msg(TRIM(s)//' a real: '//TRIM(sval), modname, lerr) 1888 1888 END FUNCTION getKeyByIndex_rmm1 … … 1899 1899 CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:) 1900 1900 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) 1902 1902 IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, lDisp=lDisp) 1903 1903 IF(lerr) RETURN … … 1906 1906 ivals = str2bool(svals) 1907 1907 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' 1909 1909 CALL msg(TRIM(s)//' a boolean: '//TRIM(sval), modname, lerr) 1910 1910 IF(.NOT.lerr) val = ivals == 1 … … 2011 2011 CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:), tname(:) 2012 2012 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) 2014 2014 IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_smmm(keyn, svals, ky, tname, lDisp=lDisp) 2015 2015 IF(lerr) RETURN … … 2033 2033 CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:), tname(:) 2034 2034 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) 2036 2036 IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_smmm(keyn, svals, ky, tname, lDisp=lDisp) 2037 2037 IF(lerr) RETURN … … 2055 2055 LOGICAL, ALLOCATABLE :: ll(:) 2056 2056 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) 2058 2058 IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_smmm(keyn, svals, ky, tname, lDisp=lDisp) 2059 2059 IF(lerr) RETURN … … 2164 2164 !------------------------------------------------------------------------------------------------------------------------------ 2165 2165 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) 2167 2167 IF(.NOT.PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, lDisp=lDisp) 2168 2168 IF(lerr) RETURN … … 2181 2181 !------------------------------------------------------------------------------------------------------------------------------ 2182 2182 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) 2184 2184 IF(.NOT.PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, lDisp=lDisp) 2185 2185 IF(lerr) RETURN … … 2199 2199 CHARACTER(LEN=maxlen) :: sval, s 2200 2200 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) 2202 2202 IF(.NOT.PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, lDisp=lDisp) 2203 2203 IF(lerr) RETURN … … 2232 2232 CHARACTER(LEN=maxlen) :: sval, s 2233 2233 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) 2235 2235 IF(.NOT.PRESENT(def)) lerr = getKeyByName_sm11([keyn], sval, tname, ky, lDisp=lDisp) 2236 2236 IF(lerr) RETURN … … 2252 2252 CHARACTER(LEN=maxlen) :: sval, s 2253 2253 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) 2255 2255 IF(.NOT.PRESENT(def)) lerr = getKeyByName_sm11([keyn], sval, tname, ky, lDisp=lDisp) 2256 2256 IF(lerr) RETURN … … 2273 2273 CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:) 2274 2274 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) 2276 2276 IF(.NOT.PRESENT(def)) lerr = getKeyByName_sm11([keyn], sval, tname, ky, lDisp=lDisp) 2277 2277 IF(lerr) RETURN … … 2308 2308 CHARACTER(LEN=maxlen) :: sval, s 2309 2309 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) 2311 2311 IF(.NOT.PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, lDisp=lDisp) 2312 2312 IF(lerr) RETURN … … 2328 2328 CHARACTER(LEN=maxlen) :: sval, s 2329 2329 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) 2331 2331 IF(.NOT.PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, lDisp=lDisp) 2332 2332 IF(lerr) RETURN … … 2349 2349 CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:) 2350 2350 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) 2352 2352 IF(.NOT.PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, lDisp=lDisp) 2353 2353 IF(lerr) RETURN … … 2447 2447 CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:) 2448 2448 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) 2450 2450 IF(.NOT.PRESENT(def)) lerr = getKeyByName_smmm(keyn, svals, tname, ky, lDisp=lDisp) 2451 2451 IF(lerr) RETURN … … 2467 2467 CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:) 2468 2468 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) 2470 2470 IF(.NOT.PRESENT(def)) lerr = getKeyByName_smmm(keyn, svals, tname, ky, lDisp=lDisp) 2471 2471 IF(lerr) RETURN … … 2488 2488 LOGICAL, ALLOCATABLE :: ll(:) 2489 2489 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) 2491 2491 IF(.NOT.PRESENT(def)) lerr = getKeyByName_smmm(keyn, svals, tname, ky, lDisp=lDisp) 2492 2492 IF(lerr) RETURN -
LMDZ6/trunk/libf/misc/strings_mod.f90
r5747 r5748 1 1 MODULE strings_mod 2 3 USE, INTRINSIC :: ISO_FORTRAN_ENV, ONLY: REAL64, REAL32 2 4 3 5 IMPLICIT NONE … … 8 10 PUBLIC :: strUpper, strTail, strStackm, strParse, strReplace, strFind, find, duplicate, cat 9 11 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 13 14 14 15 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 15 17 INTERFACE msg; MODULE PROCEDURE msg_1, msg_m; END INTERFACE msg 16 18 INTERFACE strHead; MODULE PROCEDURE strHead_1, strHead_m; END INTERFACE strHead … … 21 23 INTERFACE strCount; MODULE PROCEDURE strCount_m1, strCount_11, strCount_1m; END INTERFACE strCount 22 24 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_d2127 INTERFACE strFind; MODULE PROCEDURE strFind_1, strFind_m; 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 28 30 INTERFACE find; MODULE PROCEDURE strFind_1, strFind_m, intFind_1, intFind_m, booFind; END INTERFACE find 29 31 INTERFACE duplicate; MODULE PROCEDURE dupl_s, dupl_i, dupl_r, dupl_l; END INTERFACE duplicate … … 68 70 INTEGER, INTENT(IN) :: def 69 71 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)) 71 73 END SUBROUTINE getin_i 72 74 !============================================================================================================================== … … 78 80 REAL, INTENT(IN) :: def 79 81 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)) 81 83 END SUBROUTINE getin_r 82 84 !============================================================================================================================== … … 88 90 LOGICAL, INTENT(IN) :: def 89 91 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)) 91 93 END SUBROUTINE getin_l 92 94 !============================================================================================================================== … … 953 955 FUNCTION horzcat_r00(r0, r1, r2, r3, r4, r5, r6, r7, r8, r9) RESULT(out) 954 956 IMPLICIT NONE 955 REAL , INTENT(IN) :: r0956 REAL , OPTIONAL, TARGET, INTENT(IN) :: r1, r2, r3, r4, r5, r6, r7, r8, r9957 REAL , ALLOCATABLE :: out(:)958 REAL , POINTER:: r957 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 959 961 INTEGER :: ncol, iv 960 962 LOGICAL :: pre(9) … … 975 977 FUNCTION horzcat_r10(r0, r1, r2, r3, r4, r5, r6, r7, r8, r9) RESULT(out) 976 978 IMPLICIT NONE 977 REAL , INTENT(IN) :: r0(:), r1978 REAL , OPTIONAL, INTENT(IN) :: r2, r3, r4, r5, r6, r7, r8, r9979 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(:) 980 982 INTEGER :: nc 981 983 nc = SIZE(r0) … … 987 989 FUNCTION horzcat_r11(r0, r1, r2, r3, r4, r5, r6, r7, r8, r9) RESULT(out) 988 990 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 994 LOGICAL 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) 995 997 !------------------------------------------------------------------------------------------------------------------------------ 996 998 pre(:) = [PRESENT(r1),PRESENT(r2),PRESENT(r3),PRESENT(r4),PRESENT(r5),PRESENT(r6),PRESENT(r7),PRESENT(r8),PRESENT(r9)] … … 1012 1014 FUNCTION horzcat_r21(r0, r1, r2, r3, r4, r5, r6, r7, r8, r9) RESULT(out) 1013 1015 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(:,:) 1017 1019 INTEGER :: nc 1018 1020 nc = SIZE(r0, 2) … … 1024 1026 FUNCTION horzcat_d00(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9) RESULT(out) 1025 1027 IMPLICIT NONE 1026 DOUBLE PRECISION, INTENT(IN) :: d01027 DOUBLE PRECISION, OPTIONAL, TARGET, INTENT(IN) :: d1, d2, d3, d4, d5, d6, d7, d8, d91028 DOUBLE PRECISION, ALLOCATABLE :: out(:)1029 DOUBLE PRECISION, POINTER :: d1028 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 1030 1032 INTEGER :: ncol, iv 1031 1033 LOGICAL :: pre(9) … … 1046 1048 FUNCTION horzcat_d10(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9) RESULT(out) 1047 1049 IMPLICIT NONE 1048 DOUBLE PRECISION, INTENT(IN) :: d0(:), d11049 DOUBLE PRECISION, OPTIONAL, INTENT(IN) :: d2, d3, d4, d5, d6, d7, d8, d91050 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(:) 1051 1053 INTEGER :: nc 1052 1054 nc = SIZE(d0) … … 1058 1060 FUNCTION horzcat_d11(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9) RESULT(out) 1059 1061 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(:) 1064 1066 INTEGER :: nrow, ncol, iv, n 1065 1067 LOGICAL :: pre(9) … … 1082 1084 FUNCTION horzcat_d21(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9) RESULT(out) 1083 1085 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(:,:) 1087 1089 INTEGER :: nc 1088 1090 nc = SIZE(d0, 2) … … 1159 1161 d(1,ic) = TRIM(titles(ic)) 1160 1162 SELECT CASE(p(ic:ic)) 1161 CASE('s'); d(2:nmx,ic) = 1162 CASE('i'); d(2:nmx,ic) = int2str(i(:,ii) ); ii = ii + 11163 CASE('r'); d(2:nmx,ic) = real2str(r(:,ir),rFm); ir = ir + 11163 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 1164 1166 END SELECT 1165 1167 END DO … … 1260 1262 d(1,ic) = TRIM(titles(ic)) 1261 1263 SELECT CASE(p(ic:ic)) 1262 CASE('s'); d(2:nrow,ic) = 1263 CASE('i'); d(2:nrow,ic) = int2str(i(:,ii) ); ii = ii + 11264 CASE('r'); d(2:nrow,ic) = real2str(r(:,ir),rFm); ir = ir + 11264 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 1265 1267 END SELECT 1266 1268 END DO … … 1362 1364 IF(.NOT.ANY(m)) CYCLE !--- no outlayers for tracer "itr" 1363 1365 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) 1365 1367 IF(nv /= 1) ttl(rk) = TRIM(v)//')' !--- "<nam(itr)>(i,j)" (one name each table/itr index) 1366 1368 IF(rk==2) lerr = dispTable('ir', ttl, i=cat(PACK(ki,m)), r=cat(PACK(a(ib:ie),m)), & … … 1485 1487 CHARACTER(LEN=*), INTENT(IN) :: str 1486 1488 CHARACTER(LEN=*), INTENT(OUT) :: val 1487 DOUBLE PRECISION,ALLOCATABLE :: vl(:)1489 REAL(KIND=REAL64), ALLOCATABLE :: vl(:) 1488 1490 INTEGER, ALLOCATABLE :: id(:) 1489 1491 CHARACTER(LEN=maxlen), ALLOCATABLE :: ky(:) … … 1491 1493 !------------------------------------------------------------------------------------------------------------------------------ 1492 1494 CHARACTER(LEN=1024) :: s 1493 DOUBLE PRECISION:: v, vm, vp1495 REAL(KIND=REAL64) :: v, vm, vp 1494 1496 INTEGER :: i, ni, io 1495 1497 lerr = .FALSE. … … 1500 1502 IF(lerr) RETURN !--- Problem with the parsing 1501 1503 vl = str2dble(ky) !--- Conversion to doubles 1502 lerr = ANY(vl >= HUGE(1. d0))1504 lerr = ANY(vl >= HUGE(1._REAL64)) 1503 1505 CALL msg('Some values are non-numeric in: '//TRIM(s), ll=lerr) 1504 1506 IF(lerr) RETURN !--- Non-numerical values found … … 1519 1521 END DO 1520 1522 END DO 1521 val = dble2str(vl(1))1523 val = num2str(vl(1)) 1522 1524 1523 1525 END FUNCTION reduceExpr_basic … … 1581 1583 END FUNCTION str2int 1582 1584 !============================================================================================================================== 1583 ELEMENTAL REAL FUNCTION str2real(str) RESULT(out)1585 ELEMENTAL REAL(KIND=REAL32) FUNCTION str2real(str) RESULT(out) 1584 1586 IMPLICIT NONE 1585 1587 CHARACTER(LEN=*), INTENT(IN) :: str 1586 1588 INTEGER :: ierr 1587 1589 READ(str,*,IOSTAT=ierr) out 1588 IF(ierr/=0) out = -HUGE(1. )1590 IF(ierr/=0) out = -HUGE(1._REAL32) 1589 1591 END FUNCTION str2real 1590 1592 !============================================================================================================================== 1591 ELEMENTAL DOUBLE PRECISIONFUNCTION str2dble(str) RESULT(out)1593 ELEMENTAL REAL(KIND=REAL64) FUNCTION str2dble(str) RESULT(out) 1592 1594 IMPLICIT NONE 1593 1595 CHARACTER(LEN=*), INTENT(IN) :: str 1594 1596 INTEGER :: ierr 1595 1597 READ(str,*,IOSTAT=ierr) out 1596 IF(ierr/=0) out = -HUGE(1. d0)1598 IF(ierr/=0) out = -HUGE(1._REAL64) 1597 1599 END FUNCTION str2dble 1598 1600 !============================================================================================================================== … … 1617 1619 ELEMENTAL CHARACTER(LEN=maxlen) FUNCTION real2str(r,fmt) RESULT(out) 1618 1620 IMPLICIT NONE 1619 REAL ,INTENT(IN) :: r1621 REAL(KIND=REAL32), INTENT(IN) :: r 1620 1622 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: fmt 1621 1623 !------------------------------------------------------------------------------------------------------------------------------ … … 1627 1629 ELEMENTAL CHARACTER(LEN=maxlen) FUNCTION dble2str(d,fmt) RESULT(out) 1628 1630 IMPLICIT NONE 1629 DOUBLE PRECISION,INTENT(IN) :: d1631 REAL(KIND=REAL64), INTENT(IN) :: d 1630 1632 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: fmt 1631 1633 !------------------------------------------------------------------------------------------------------------------------------ -
LMDZ6/trunk/libf/misc/write_field.f90
r5270 r5748 5 5 USE netcdf, ONLY: nf90_sync, nf90_put_var, nf90_enddef, nf90_def_dim, nf90_unlimited, & 6 6 nf90_clobber, nf90_create, nf90_def_var, nf90_double 7 USE strings_mod, ONLY: int2str7 USE strings_mod, ONLY: num2str 8 8 IMPLICIT NONE; PRIVATE 9 9 PUBLIC WriteField … … 156 156 write (id,'("----- Field '//name//'",//)') 157 157 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)))) 160 160 Nb=0 161 161 Pos=2 … … 164 164 165 165 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,/)' 167 167 Pos=2 168 168 else 169 form='(t'//trim( int2str(pos))// ',i'//trim(MaxLen) //'," ---> ",g22.16," | ",)'169 form='(t'//trim(num2str(pos))// ',i'//trim(MaxLen) //'," ---> ",g22.16," | ",)' 170 170 Pos=Pos+ColumnSize 171 171 endif … … 198 198 199 199 Dim=shape(Field) 200 offset=len(trim( int2str(Dim(1))))+len(trim(int2str(Dim(2))))+3200 offset=len(trim(num2str(Dim(1))))+len(trim(num2str(Dim(2))))+3 201 201 ColumnSize=20+6+3+offset 202 202 … … 210 210 211 211 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)) & 216 216 //'," ---> ",g22.16,/)' 217 217 Pos=2 218 218 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)) & 223 223 //'," ---> ",g22.16," | ")' 224 224 Pos=Pos+ColumnSize … … 256 256 257 257 Dim=shape(Field) 258 offset=len(trim( int2str(Dim(1))))+len(trim(int2str(Dim(2))))+len(trim(int2str(Dim(3))))+4258 offset=len(trim(num2str(Dim(1))))+len(trim(num2str(Dim(2))))+len(trim(num2str(Dim(3))))+4 259 259 ColumnSize=22+6+3+offset 260 260 … … 273 273 274 274 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)) & 280 280 //'," ---> ",g22.16,/)' 281 281 Pos=2 282 282 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)) & 288 288 //'," ---> ",g22.16," | ")' 289 289 ! d�pent de l'impl�mention, sur compaq, c'est necessaire -
LMDZ6/trunk/libf/phylmd/infotrac_phy.F90
r5487 r5748 3 3 MODULE infotrac_phy 4 4 5 USE strings_mod, ONLY: msg, maxlen, cat, dispTable, int2str, bool2str, strStack, strParse, strCount, strIdx5 USE strings_mod, ONLY: msg, maxlen, cat, dispTable, num2str, strStack, strParse, strCount, strIdx 6 6 USE readTracFiles_mod, ONLY: trac_type, readTracersFiles, tracers, addPhase, addKey, iH2O, & 7 7 isoSelect, indexUpdate, isot_type, testTracersFiles, isotope, delPhase, getKey, tran0, & … … 271 271 IF( nqtot /= nqtrue ) THEN 272 272 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))) 275 275 END IF 276 276 … … 365 365 !=== DISPLAY THE RESULTS 366 366 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) 375 375 t => tracers 376 376 CALL msg('Information stored in '//TRIM(modname)//': ', modname) 377 377 IF(dispTable('issssssssiiiiiiii', ['iq ', 'name', 'lNam', 'g0Nm', 'prnt', 'type', 'phas', 'comp', & 378 378 '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)), & 380 380 cat([(iq, iq=1, nqtot)], t%iGeneration, t%iqParent, t%nqDescen, t%nqChildren, t%iso_iGroup, & 381 381 t%iso_iName, t%iso_iZone, t%iso_iPhase), nColMax=maxTableWidth, nHead=2, sub=modname)) & … … 390 390 391 391 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) 399 399 END IF 400 400 -
LMDZ6/trunk/libf/phylmd/phyetat0_get_mod.f90
r5268 r5748 122 122 USE iostart, ONLY: get_field 123 123 USE print_control_mod, ONLY: lunout 124 USE strings_mod, ONLY: int2str, maxlen124 USE strings_mod, ONLY: num2str, maxlen 125 125 IMPLICIT NONE 126 126 REAL, INTENT(INOUT) :: field(:,:,:) … … 133 133 IF(SIZE(field,3)>99) CALL abort_physic("phyetat0", "Too much sub-cells", 1) 134 134 DO nsrf = 1, SIZE(field,3) 135 DO i = 1, SIZE(name); nam(i) = TRIM(name(i))//TRIM( int2str(nsrf,2)); END DO136 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) 137 137 lFound = phyetat0_get21(field(:,:,nsrf), nam, TRIM(des), default, tname) 138 138 END DO -
LMDZ6/trunk/libf/phylmd/phytrac_mod.f90
r5473 r5748 128 128 USE dimphy 129 129 USE infotrac_phy, ONLY: nbtr, nqCO2, type_trac, conv_flg, pbl_flg 130 USE strings_mod, ONLY: int2str130 USE strings_mod, ONLY: num2str 131 131 USE mod_grid_phy_lmdz 132 132 USE mod_phys_lmdz_para … … 735 735 ENDDO 736 736 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))) 738 738 739 739 ENDDO ! nbtr … … 939 939 ENDDO 940 940 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))) 942 942 ENDIF 943 943 -
LMDZ6/trunk/libf/phylmd/traclmdz_mod.f90
r5481 r5748 312 312 USE dimphy 313 313 USE infotrac_phy, ONLY: nbtr, pbl_flg 314 USE strings_mod, ONLY: int2str314 USE strings_mod, ONLY: num2str 315 315 USE regr_pr_comb_coefoz_m, ONLY: regr_pr_comb_coefoz 316 316 USE o3_chem_m, ONLY: o3_chem … … 558 558 END DO 559 559 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))) 561 561 END IF 562 562 END DO -
LMDZ6/trunk/libf/phylmdiso/isotopes_mod.F90
r5267 r5748 3 3 4 4 MODULE isotopes_mod 5 USE strings_mod, ONLY: msg, real2str, int2str, bool2str, maxlen, strIdx, strStack5 USE strings_mod, ONLY: msg, num2str, maxlen, strIdx, strStack 6 6 USE infotrac_phy, ONLY: isoName, niso, ntiso 7 7 USE iso_params_mod … … 173 173 174 174 !--- Check number of isotopes 175 CALL msg('64: niso = '//TRIM( int2str(niso)), modname)175 CALL msg('64: niso = '//TRIM(num2str(niso)), modname) 176 176 177 177 !--- Init de ntracisoOR: on ecrasera en cas de traceurs de tagging isotopiques … … 180 180 181 181 !--- 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) 187 187 188 188 !--- Initialisation: reading the isotopic parameters. … … 204 204 CALL get_in('dsstlatcrit', dsstlatcrit, 0.0) !--- For modif_sst>=3 205 205 #ifdef ISOVERIF 206 CALL msg('iso_init 270: sstlatcrit='// real2str( sstlatcrit), modname, sstlatcrit < 0.0) !--- For modif_sst>=2207 CALL msg('iso_init 279: dsstlatcrit='// real2str(dsstlatcrit), modname, sstlatcrit < 0.0) !--- For modif_sst>=3206 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 208 208 IF(modif_sst >= 2 .AND. sstlatcrit < 0.0) STOP 209 209 #endif … … 234 234 CALL get_in('region_nudge_qsol', region_nudge_qsol, 1) 235 235 nlevmaxO17 = 50 236 CALL msg('nlevmaxO17='//TRIM( int2str(nlevmaxO17)))236 CALL msg('nlevmaxO17='//TRIM(num2str(nlevmaxO17))) 237 237 CALL get_in('no_pce', no_pce, 0) 238 238 CALL get_in('A_satlim', A_satlim, 1.0) 239 239 CALL get_in('ok_restrict_A_satlim', ok_restrict_A_satlim, 0) 240 240 #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) 242 242 IF(A_satlim > 1.0) STOP 243 243 #endif … … 256 256 CALL get_in('tnateq1', ltnat1, .TRUE.) 257 257 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) 259 259 260 260 !-------------------------------------------------------------- … … 363 363 CALL msg('285: verif initialisation:', modname) 364 364 DO ixt=1,niso 365 sxt= int2str(ixt)365 sxt=num2str(ixt) 366 366 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) 371 371 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) 376 376 377 377 END SUBROUTINE iso_init … … 411 411 IF(PRESENT(def)) val=def; CALL getin(nam,val) 412 412 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))) 414 414 END IF 415 415 CALL bcast(val) … … 430 430 IF(PRESENT(def)) val=def; CALL getin(nam,val) 431 431 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))) 433 433 END IF 434 434 CALL bcast(val) … … 449 449 IF(PRESENT(def)) val=def; CALL getin(nam,val) 450 450 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))) 452 452 END IF 453 453 CALL bcast(val) -
LMDZ6/trunk/libf/phylmdiso/isotopes_routines_mod.F90
r5296 r5748 16419 16419 USE phyetat0_get_mod, ONLY: phyetat0_get, phyetat0_srf 16420 16420 USE infotrac_phy, ONLY: new2oldH2O 16421 USE strings_mod, ONLY: strIdx, strHead, strTail, maxlen, msg, int2str16421 USE strings_mod, ONLY: strIdx, strHead, strTail, maxlen, msg, num2str 16422 16422 #ifdef ISOVERIF 16423 16423 USE isotopes_verif_mod … … 16448 16448 modname = 'phyiso_etat0_fichier' 16449 16449 CALL msg('3', modname) 16450 CALL msg('niso = '//TRIM( int2str(niso)), modname)16450 CALL msg('niso = '//TRIM(num2str(niso)), modname) 16451 16451 CALL msg('isoName(1) = '//TRIM(isoName(1)), modname) 16452 16452 -
LMDZ6/trunk/libf/phylmdiso/isotrac_mod.F90
r5746 r5748 148 148 USE isotopes_mod, ONLY: iso_eau, ntracisoOR, initialisation_iso 149 149 USE dimphy, ONLY: klon, klev 150 USE strings_mod, ONLY: int2str, strStack, strTail, strHead, strIdx150 USE strings_mod, ONLY: num2str, strStack, strTail, strHead, strIdx 151 151 152 152 IMPLICIT NONE … … 292 292 option_cond=0 293 293 DO izone=1,nzone_temp 294 strtrac(izone) = 't'//TRIM( int2str(izone))294 strtrac(izone) = 't'//TRIM(num2str(izone)) 295 295 WRITE(*,*) 'izone, strtrac=', izone, strtrac(izone) 296 296 END DO … … 436 436 option_cond=0 437 437 DO izone=1,nzone_temp 438 strtrac(izone) = 't'//TRIM( int2str(izone))438 strtrac(izone) = 't'//TRIM(num2str(izone)) 439 439 WRITE(*,*) 'izone, strtrac = ', izone, strtrac(izone) 440 440 END DO … … 471 471 DO izone_lat=1,nzone_lat 472 472 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)) 474 474 write(*,*) 'izone_pres, izone_lat, izone, strtrac = ',izone_pres, izone_lat, izone, strtrac(izone) 475 475 END DO … … 531 531 izone_cond=nzone_temp+2 532 532 DO izone=1,nzone_temp 533 strtrac(izone) = 't'//TRIM( int2str(izone))533 strtrac(izone) = 't'//TRIM(num2str(izone)) 534 534 WRITE(*,*) 'izone, strtrac = ', izone, strtrac(izone) 535 535 END DO !do izone=1,nzone_temp … … 577 577 option_cond=1 578 578 DO izone=1,nzone_temp 579 strtrac(izone) = 't'//TRIM( int2str(izone))579 strtrac(izone) = 't'//TRIM(num2str(izone)) 580 580 WRITE(*,*) 'izone, strtrac = ', izone, strtrac(izone) 581 581 END DO … … 660 660 #ifdef ISOVERIF 661 661 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)))) 664 664 DO izone=1,nzone 665 WRITE(*,*)'itZonIso('//TRIM( int2str(izone))//',:) = '//strStack(int2str(itZonIso(izone,:)))665 WRITE(*,*)'itZonIso('//TRIM(num2str(izone))//',:) = '//strStack(num2str(itZonIso(izone,:))) 666 666 END DO 667 667 DO izone=1,nzone 668 WRITE(*,*)'strtrac('//TRIM( int2str(izone))//',:) = '//TRIM(strtrac(izone))668 WRITE(*,*)'strtrac('//TRIM(num2str(izone))//',:) = '//TRIM(strtrac(izone)) 669 669 END DO 670 670 WRITE(*,*) 'ntracisoOR=',ntracisoOR
Note: See TracChangeset
for help on using the changeset viewer.