Changeset 5084
- Timestamp:
- Jul 19, 2024, 6:40:44 PM (12 months ago)
- Location:
- LMDZ6/trunk
- Files:
-
- 6 deleted
- 129 edited
- 4 copied
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/arch/arch-X64_ADASTRA-GNU.fcm
r5066 r5084 9 9 %FPP_DEF NC_DOUBLE 10 10 11 %BASE_FFLAGS - ffree-line-length-0 -fdefault-real-8-fallow-argument-mismatch -fimplicit-none -march=native -fPIC11 %BASE_FFLAGS -cpp -ffree-line-length-0 -fdefault-real-8 -DNC_DOUBLE -fallow-argument-mismatch -fimplicit-none -march=native -fPIC 12 12 %BASE_CFLAGS -w -std=c++11 -D__XIOS_EXCEPTION # xios 13 13 # /!\ LD must be written in Makefile syntax -
LMDZ6/trunk/arch/arch-X64_ADASTRA-GNU.path
r5066 r5084 1 NETCDF_INCDIR="-I$(nf-config --includedir) -I$(nc-config --includedir)" # nc required for xios1 NETCDF_INCDIR="-I$(nf-config --includedir) -I$(nc-config --includedir)" 2 2 # Ugly hack for orchidee <=2.0 3 3 NETCDF_LIBDIR="-L${NETCDF_DIR}/lib" # for some reason on adastra `nf-config --flibs` is empty 4 NETCDF_LIB="-lnetcdf f -lnetcdf"4 NETCDF_LIB="-lnetcdf -lnetcdff" # same as above 5 5 NETCDF95_INCDIR="-I$(pwd)/../../include" 6 6 NETCDF95_LIBDIR="-L$(pwd)/../../lib" -
LMDZ6/trunk/arch/arch-local-gfortran-parallel.fcm
r5066 r5084 9 9 %FPP_DEF NC_DOUBLE 10 10 11 %BASE_FFLAGS - ffree-line-length-0 -fdefault-real-8-fallow-argument-mismatch -fimplicit-none11 %BASE_FFLAGS -cpp -ffree-line-length-0 -fdefault-real-8 -DNC_DOUBLE -fallow-argument-mismatch -fimplicit-none 12 12 %BASE_CFLAGS -w -std=c++11 -D__XIOS_EXCEPTION # xios 13 13 # /!\ LD must be written in Makefile syntax … … 15 15 %BASE_INC -D__NONE__ # xios 16 16 17 %PROD_FFLAGS -O3 -march=native -fPIC17 %PROD_FFLAGS -O3 -march=native 18 18 %PROD_CFLAGS -O3 -DBOOST_DISABLE_ASSERTS # xios 19 19 … … 30 30 31 31 %CPP cpp # xios 32 33 -
LMDZ6/trunk/arch/arch-local-gfortran.fcm
r5066 r5084 7 7 %FPP_FLAGS -P -traditional 8 8 %FPP_DEF NC_DOUBLE 9 %BASE_FFLAGS - ffree-line-length-0 -fdefault-real-8-fallow-argument-mismatch -fimplicit-none9 %BASE_FFLAGS -cpp -ffree-line-length-0 -fdefault-real-8 -DNC_DOUBLE -fallow-argument-mismatch -fimplicit-none 10 10 %PROD_FFLAGS -O3 -march=native 11 11 %DEV_FFLAGS -Wall -fbounds-check -
LMDZ6/trunk/libf/dyn3d/dynetat0.F90
r5075 r5084 8 8 USE infotrac, ONLY: nqtot, tracers, niso, iqIsoPha, iH2O, isoName 9 9 USE strings_mod, ONLY: maxlen, msg, strStack, real2str, int2str 10 USE lmdz_netcdf, ONLY: NF90_OPEN, NF90_NOWRITE, NF90_INQ_VARID, &10 USE netcdf, ONLY: NF90_OPEN, NF90_NOWRITE, NF90_INQ_VARID, & 11 11 NF90_CLOSE, NF90_GET_VAR, NF90_NoErr 12 12 USE readTracFiles_mod, ONLY: new2oldH2O, newHNO3, oldHNO3, getKey -
LMDZ6/trunk/libf/dyn3d/dynredem.F90
r5075 r5084 9 9 USE strings_mod, ONLY: maxlen 10 10 USE infotrac, ONLY: nqtot, tracers 11 USE lmdz_netcdf, ONLY: NF90_CREATE, NF90_DEF_DIM, NF90_INQ_VARID, NF90_GLOBAL, &11 USE netcdf, ONLY: NF90_CREATE, NF90_DEF_DIM, NF90_INQ_VARID, NF90_GLOBAL, & 12 12 NF90_CLOSE, NF90_PUT_ATT, NF90_UNLIMITED, NF90_CLOBBER, & 13 13 NF90_64BIT_OFFSET … … 169 169 USE infotrac, ONLY: nqtot, tracers, type_trac 170 170 USE control_mod 171 USE lmdz_netcdf, ONLY: NF90_OPEN, NF90_NOWRITE, NF90_GET_VAR, NF90_INQ_VARID, &171 USE netcdf, ONLY: NF90_OPEN, NF90_NOWRITE, NF90_GET_VAR, NF90_INQ_VARID, & 172 172 NF90_CLOSE, NF90_WRITE, NF90_PUT_VAR, NF90_NoErr 173 173 USE dynredem_mod, ONLY: dynredem_write_u, dynredem_write_v, dynredem_read_u, & -
LMDZ6/trunk/libf/dyn3d/dynredem_mod.F90
r5075 r5084 1 1 MODULE dynredem_mod 2 2 3 USE lmdz_netcdf, ONLY: nf90_strerror,nf90_noerr,nf90_redef,nf90_put_var,nf90_enddef,nf90_put_att,& 4 nf90_inq_varid,nf90_get_var,nf90_format,nf90_def_var 5 IMPLICIT NONE; PRIVATE 3 USE netcdf 4 PRIVATE 6 5 PUBLIC :: dynredem_write_u, dynredem_write_v, dynredem_read_u, err 7 6 PUBLIC :: cre_var, put_var1, put_var2, fil, modname, msg … … 20 19 ! 21 20 !=============================================================================== 21 IMPLICIT NONE 22 !=============================================================================== 22 23 ! Arguments: 23 24 INTEGER, INTENT(IN) :: ncid … … 43 44 ! 44 45 !=============================================================================== 46 IMPLICIT NONE 47 !=============================================================================== 45 48 ! Arguments: 46 49 INTEGER, INTENT(IN) :: ncid … … 66 69 ! 67 70 !=============================================================================== 71 IMPLICIT NONE 72 !=============================================================================== 68 73 ! Arguments: 69 74 INTEGER, INTENT(IN) :: ncid … … 89 94 ! 90 95 !=============================================================================== 96 IMPLICIT NONE 97 !=============================================================================== 91 98 ! Arguments: 92 99 INTEGER, INTENT(IN) :: ncid … … 95 102 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: units 96 103 !=============================================================================== 97 CALL err(NF90_DEF_VAR(ncid,var,NF90_FORMAT,did,nvarid),"inq",var) 104 #ifdef NC_DOUBLE 105 CALL err(NF90_DEF_VAR(ncid,var,NF90_DOUBLE,did,nvarid),"inq",var) 106 #else 107 CALL err(NF90_DEF_VAR(ncid,var,NF90_FLOAT ,did,nvarid),"inq",var) 108 #endif 98 109 IF(title/="") CALL err(NF90_PUT_ATT(ncid,nvarid,"title",title),var) 99 110 IF(PRESENT(units)) CALL err(NF90_PUT_ATT(ncid,nvarid,"units",units),var) … … 108 119 SUBROUTINE put_var1(ncid,var,title,did,v,units) 109 120 ! 121 !=============================================================================== 122 IMPLICIT NONE 110 123 !=============================================================================== 111 124 ! Arguments: … … 132 145 ! 133 146 !=============================================================================== 147 IMPLICIT NONE 148 !=============================================================================== 134 149 ! Arguments: 135 150 INTEGER, INTENT(IN) :: ncid … … 154 169 FUNCTION msg(typ,nam) 155 170 ! 171 !=============================================================================== 172 IMPLICIT NONE 156 173 !=============================================================================== 157 174 ! Arguments: … … 180 197 ! 181 198 !=============================================================================== 199 IMPLICIT NONE 200 !=============================================================================== 182 201 ! Arguments: 183 202 INTEGER, INTENT(IN) :: ierr !--- NetCDF ERROR CODE -
LMDZ6/trunk/libf/dyn3d/guide_mod.F90
r5075 r5084 9 9 !======================================================================= 10 10 11 USE getparam, ONLY: ini_getparam, fin_getparam, getpar11 USE getparam, only: ini_getparam, fin_getparam, getpar 12 12 USE Write_Field 13 USE lmdz_netcdf, ONLY: nf90_nowrite, nf90_open, nf90_inq_varid, nf90_close, & 14 nf90_inq_dimid, nf90_inquire_dimension, nf90_float, nf90_def_var, & 15 nf_create, nf_def_dim, nf_open, nf_unlimited, nf_write, nf_enddef, nf_redef, & 16 nf_close, nf_inq_varid, nf90_get_var, nf90_noerr, nf_clobber, & 17 nf_64bit_offset, nf_inq_dimid, nf_inq_dimlen, nf90_put_var 18 USE pres2lev_mod, ONLY: pres2lev 13 use netcdf, only: nf90_nowrite, nf90_open, nf90_inq_varid, nf90_close, & 14 nf90_inq_dimid, nf90_inquire_dimension 15 use pres2lev_mod, only: pres2lev 19 16 20 17 IMPLICIT NONE … … 72 69 SUBROUTINE guide_init 73 70 74 use lmdz_netcdf, only: nf90_noerr71 use netcdf, only: nf90_noerr 75 72 USE control_mod, ONLY: day_step 76 73 USE serre_mod, ONLY: grossismx … … 80 77 INCLUDE "dimensions.h" 81 78 INCLUDE "paramet.h" 79 INCLUDE "netcdf.inc" 82 80 83 81 INTEGER :: error,ncidpl,rid,rcod … … 125 123 CALL getpar('iguide_sav',4,iguide_sav,'freq. sauvegarde guidage') 126 124 ! frequences f>0: fx/jour; f<0: tous les f jours; f=0: 1 seule fois. 127 IF (iguide_sav >0) THEN125 IF (iguide_sav.GT.0) THEN 128 126 iguide_sav=day_step/iguide_sav 129 127 ELSE if (iguide_sav == 0) then … … 145 143 CALL getpar('iguide_read',4,iguide_read,'freq. lecture guidage') 146 144 CALL getpar('iguide_int',4,iguide_int,'freq. interpolation vert') 147 IF (iguide_int ==0) THEN145 IF (iguide_int.EQ.0) THEN 148 146 iguide_int=1 149 ELSEIF (iguide_int >0) THEN147 ELSEIF (iguide_int.GT.0) THEN 150 148 iguide_int=day_step/iguide_int 151 149 ELSE … … 173 171 ! --------------------------------------------- 174 172 ncidpl=-99 175 if (guide_plevs ==1) then176 if (ncidpl ==-99) then173 if (guide_plevs.EQ.1) then 174 if (ncidpl.eq.-99) then 177 175 rcod=nf90_open('apbp.nc',Nf90_NOWRITe, ncidpl) 178 if (rcod /=NF90_NOERR) THEN176 if (rcod.NE.NF90_NOERR) THEN 179 177 abort_message=' Nudging error -> no file apbp.nc' 180 178 CALL abort_gcm(modname,abort_message,1) 181 179 endif 182 180 endif 183 elseif (guide_plevs ==2) then184 if (ncidpl ==-99) then181 elseif (guide_plevs.EQ.2) then 182 if (ncidpl.EQ.-99) then 185 183 rcod=nf90_open('P.nc',Nf90_NOWRITe,ncidpl) 186 if (rcod /=NF90_NOERR) THEN184 if (rcod.NE.NF90_NOERR) THEN 187 185 abort_message=' Nudging error -> no file P.nc' 188 186 CALL abort_gcm(modname,abort_message,1) … … 191 189 192 190 elseif (guide_u) then 193 if (ncidpl ==-99) then191 if (ncidpl.eq.-99) then 194 192 rcod=nf90_open('u.nc',Nf90_NOWRITe,ncidpl) 195 if (rcod /=NF90_NOERR) THEN193 if (rcod.NE.NF90_NOERR) THEN 196 194 CALL abort_gcm(modname, & 197 195 ' Nudging error -> no file u.nc',1) … … 200 198 201 199 elseif (guide_v) then 202 if (ncidpl ==-99) then200 if (ncidpl.eq.-99) then 203 201 rcod=nf90_open('v.nc',nf90_nowrite,ncidpl) 204 if (rcod /=NF90_NOERR) THEN202 if (rcod.NE.NF90_NOERR) THEN 205 203 CALL abort_gcm(modname, & 206 204 ' Nudging error -> no file v.nc',1) … … 208 206 endif 209 207 elseif (guide_T) then 210 if (ncidpl ==-99) then208 if (ncidpl.eq.-99) then 211 209 rcod=nf90_open('T.nc',nf90_nowrite,ncidpl) 212 if (rcod /=NF90_NOERR) THEN210 if (rcod.NE.NF90_NOERR) THEN 213 211 CALL abort_gcm(modname, & 214 212 ' Nudging error -> no file T.nc',1) … … 216 214 endif 217 215 elseif (guide_Q) then 218 if (ncidpl ==-99) then216 if (ncidpl.eq.-99) then 219 217 rcod=nf90_open('hur.nc',nf90_nowrite, ncidpl) 220 if (rcod /=NF90_NOERR) THEN218 if (rcod.NE.NF90_NOERR) THEN 221 219 CALL abort_gcm(modname, & 222 220 ' Nudging error -> no file hur.nc',1) … … 227 225 endif 228 226 error=NF_INQ_DIMID(ncidpl,'LEVEL',rid) 229 IF (error /=NF90_NOERR) error=NF_INQ_DIMID(ncidpl,'PRESSURE',rid)230 IF (error /=NF90_NOERR) THEN227 IF (error.NE.NF90_NOERR) error=NF_INQ_DIMID(ncidpl,'PRESSURE',rid) 228 IF (error.NE.NF90_NOERR) THEN 231 229 CALL abort_gcm(modname,'Nudging: error reading pressure levels',1) 232 230 ENDIF … … 308 306 ENDIF 309 307 310 IF (guide_plevs ==2) THEN308 IF (guide_plevs.EQ.2) THEN 311 309 ALLOCATE(pnat1(iip1,jjp1,nlevnc), stat = error) 312 310 IF (error /= 0) CALL abort_gcm(modname,abort_message,1) … … 316 314 ENDIF 317 315 318 IF (guide_P.OR.guide_plevs ==1) THEN316 IF (guide_P.OR.guide_plevs.EQ.1) THEN 319 317 ALLOCATE(psnat1(iip1,jjp1), stat = error) 320 318 IF (error /= 0) CALL abort_gcm(modname,abort_message,1) … … 343 341 IF (guide_T) tnat1=tnat2 344 342 IF (guide_Q) qnat1=qnat2 345 IF (guide_plevs ==2) pnat1=pnat2346 IF (guide_P.OR.guide_plevs ==1) psnat1=psnat2343 IF (guide_plevs.EQ.2) pnat1=pnat2 344 IF (guide_P.OR.guide_plevs.EQ.1) psnat1=psnat2 347 345 348 346 END SUBROUTINE guide_init … … 442 440 ! Lecture des fichiers de guidage ? 443 441 !----------------------------------------------------------------------- 444 IF (iguide_read /=0) THEN442 IF (iguide_read.NE.0) THEN 445 443 ditau=real(itau) 446 444 dday_step=real(day_step) 447 IF (iguide_read <0) THEN445 IF (iguide_read.LT.0) THEN 448 446 tau=ditau/dday_step/REAL(iguide_read) 449 447 ELSE … … 451 449 ENDIF 452 450 reste=tau-AINT(tau) 453 IF (reste ==0.) THEN454 IF (itau_test ==itau) THEN451 IF (reste.EQ.0.) THEN 452 IF (itau_test.EQ.itau) THEN 455 453 write(lunout,*)trim(modname)//' second pass in advreel at itau=',& 456 454 itau … … 462 460 IF (guide_T) tnat1=tnat2 463 461 IF (guide_Q) qnat1=qnat2 464 IF (guide_plevs ==2) pnat1=pnat2465 IF (guide_P.OR.guide_plevs ==1) psnat1=psnat2462 IF (guide_plevs.EQ.2) pnat1=pnat2 463 IF (guide_P.OR.guide_plevs.EQ.1) psnat1=psnat2 466 464 step_rea=step_rea+1 467 465 itau_test=itau … … 484 482 ! Interpolation et conversion des champs de guidage 485 483 !----------------------------------------------------------------------- 486 IF (MOD(itau,iguide_int) ==0) THEN484 IF (MOD(itau,iguide_int).EQ.0) THEN 487 485 CALL guide_interp(ps,teta) 488 486 ENDIF 489 487 ! Repartition entre 2 etats de guidage 490 IF (iguide_read /=0) THEN488 IF (iguide_read.NE.0) THEN 491 489 tau=reste 492 490 ELSE … … 498 496 !----------------------------------------------------------------------- 499 497 ! Sauvegarde du guidage? 500 f_out=((MOD(itau,iguide_sav) ==0).AND.guide_sav)498 f_out=((MOD(itau,iguide_sav).EQ.0).AND.guide_sav) 501 499 IF (f_out) THEN 502 500 ! compute pressures at layer interfaces … … 635 633 IF (guide_reg) THEN 636 634 DO i=1,iim 637 IF (lond(i) <lon_min_g) imin(1)=i638 IF (lond(i) <=lon_max_g) imax(1)=i635 IF (lond(i).LT.lon_min_g) imin(1)=i 636 IF (lond(i).LE.lon_max_g) imax(1)=i 639 637 ENDDO 640 638 lond=rlonv*180./pi 641 639 DO i=1,iim 642 IF (lond(i) <lon_min_g) imin(2)=i643 IF (lond(i) <=lon_max_g) imax(2)=i640 IF (lond(i).LT.lon_min_g) imin(2)=i 641 IF (lond(i).LE.lon_max_g) imax(2)=i 644 642 ENDDO 645 643 ENDIF … … 962 960 do j=1,pjm 963 961 do i=1,pim 964 if (typ ==2) then962 if (typ.eq.2) then 965 963 zlat=rlatu(j)*180./pi 966 964 zlon=rlonu(i)*180./pi 967 elseif (typ ==1) then965 elseif (typ.eq.1) then 968 966 zlat=rlatu(j)*180./pi 969 967 zlon=rlonv(i)*180./pi 970 elseif (typ ==3) then968 elseif (typ.eq.3) then 971 969 zlat=rlatv(j)*180./pi 972 970 zlon=rlonv(i)*180./pi … … 1007 1005 enddo 1008 1006 enddo 1009 IF (typ ==2) THEN1007 IF (typ.EQ.2) THEN 1010 1008 do j=1,jjp1 1011 1009 do i=1,iim … … 1015 1013 enddo 1016 1014 ENDIF 1017 IF (typ ==3) THEN1015 IF (typ.EQ.3) THEN 1018 1016 do j=1,jjm 1019 1017 do i=1,iip1 … … 1037 1035 enddo 1038 1036 ! Calcul de gamma 1039 if (abs(grossismx-1.) <0.1.or.abs(grossismy-1.)<0.1) then1037 if (abs(grossismx-1.).lt.0.1.or.abs(grossismy-1.).lt.0.1) then 1040 1038 write(*,*)trim(modname)//' ATTENTION modele peu zoome' 1041 1039 write(*,*)trim(modname)//' ATTENTION on prend une constante de guidage cste' … … 1044 1042 gamma=(dxdy_max-2.*dxdy_min)/(dxdy_max-dxdy_min) 1045 1043 write(*,*)trim(modname)//' gamma=',gamma 1046 if (gamma <1.e-5) then1044 if (gamma.lt.1.e-5) then 1047 1045 write(*,*)trim(modname)//' gamma =',gamma,'<1e-5' 1048 1046 abort_message='stopped' … … 1059 1057 do j=1,pjm 1060 1058 do i=1,pim 1061 if (typ ==1) then1059 if (typ.eq.1) then 1062 1060 dxdy_=dxdys(i,j) 1063 1061 zlat=rlatu(j)*180./pi 1064 elseif (typ ==2) then1062 elseif (typ.eq.2) then 1065 1063 dxdy_=dxdyu(i,j) 1066 1064 zlat=rlatu(j)*180./pi 1067 elseif (typ ==3) then1065 elseif (typ.eq.3) then 1068 1066 dxdy_=dxdyv(i,j) 1069 1067 zlat=rlatv(j)*180./pi 1070 1068 endif 1071 if (abs(grossismx-1.) <0.1.or.abs(grossismy-1.)<0.1) then1069 if (abs(grossismx-1.).lt.0.1.or.abs(grossismy-1.).lt.0.1) then 1072 1070 ! pour une grille reguliere, xi=xxx**0=1 -> alpha=alphamin 1073 1071 alpha(i,j)=alphamin … … 1075 1073 xi=((dxdy_max-dxdy_)/(dxdy_max-dxdy_min))**gamma 1076 1074 xi=min(xi,1.) 1077 if(lat_min_g <=zlat .and. zlat<=lat_max_g) then1075 if(lat_min_g.le.zlat .and. zlat.le.lat_max_g) then 1078 1076 alpha(i,j)=xi*alphamin+(1.-xi)*alphamax 1079 1077 else … … 1091 1089 !======================================================================= 1092 1090 SUBROUTINE guide_read(timestep) 1091 1092 use netcdf, only: NF90_GET_VAR, nf90_noerr 1093 1093 1094 IMPLICIT NONE 1094 1095 … … 1117 1118 write(*,*) trim(modname)//': opening nudging files ' 1118 1119 ! Niveaux de pression si non constants 1119 if (guide_plevs ==1) then1120 if (guide_plevs.EQ.1) then 1120 1121 write(*,*) trim(modname)//' Reading nudging on model levels' 1121 1122 rcode = nf90_open('apbp.nc', nf90_nowrite, ncidpl) 1122 IF (rcode /=NF90_NOERR) THEN1123 IF (rcode.NE.NF90_NOERR) THEN 1123 1124 abort_message='Nudging: error -> no file apbp.nc' 1124 1125 CALL abort_gcm(modname,abort_message,1) 1125 1126 ENDIF 1126 1127 rcode = nf90_inq_varid(ncidpl, 'AP', varidap) 1127 IF (rcode /=NF90_NOERR) THEN1128 IF (rcode.NE.NF90_NOERR) THEN 1128 1129 abort_message='Nudging: error -> no AP variable in file apbp.nc' 1129 1130 CALL abort_gcm(modname,abort_message,1) 1130 1131 ENDIF 1131 1132 rcode = nf90_inq_varid(ncidpl, 'BP', varidbp) 1132 IF (rcode /=NF90_NOERR) THEN1133 IF (rcode.NE.NF90_NOERR) THEN 1133 1134 abort_message='Nudging: error -> no BP variable in file apbp.nc' 1134 1135 CALL abort_gcm(modname,abort_message,1) … … 1138 1139 1139 1140 ! Pression si guidage sur niveaux P variables 1140 if (guide_plevs ==2) then1141 if (guide_plevs.EQ.2) then 1141 1142 rcode = nf90_open('P.nc', nf90_nowrite, ncidp) 1142 IF (rcode /=NF90_NOERR) THEN1143 IF (rcode.NE.NF90_NOERR) THEN 1143 1144 abort_message='Nudging: error -> no file P.nc' 1144 1145 CALL abort_gcm(modname,abort_message,1) 1145 1146 ENDIF 1146 1147 rcode = nf90_inq_varid(ncidp, 'PRES', varidp) 1147 IF (rcode /=NF90_NOERR) THEN1148 IF (rcode.NE.NF90_NOERR) THEN 1148 1149 abort_message='Nudging: error -> no PRES variable in file P.nc' 1149 1150 CALL abort_gcm(modname,abort_message,1) 1150 1151 ENDIF 1151 1152 write(*,*) trim(modname)//' ncidp,varidp',ncidp,varidp 1152 if (ncidpl ==-99) ncidpl=ncidp1153 if (ncidpl.eq.-99) ncidpl=ncidp 1153 1154 endif 1154 1155 … … 1156 1157 if (guide_u) then 1157 1158 rcode = nf90_open('u.nc', nf90_nowrite, ncidu) 1158 IF (rcode /=NF90_NOERR) THEN1159 IF (rcode.NE.NF90_NOERR) THEN 1159 1160 abort_message='Nudging: error -> no file u.nc' 1160 1161 CALL abort_gcm(modname,abort_message,1) 1161 1162 ENDIF 1162 1163 rcode = nf90_inq_varid(ncidu, 'UWND', varidu) 1163 IF (rcode /=NF90_NOERR) THEN1164 IF (rcode.NE.NF90_NOERR) THEN 1164 1165 abort_message='Nudging: error -> no UWND variable in file u.nc' 1165 1166 CALL abort_gcm(modname,abort_message,1) 1166 1167 ENDIF 1167 1168 write(*,*) trim(modname)//' ncidu,varidu',ncidu,varidu 1168 if (ncidpl ==-99) ncidpl=ncidu1169 if (ncidpl.eq.-99) ncidpl=ncidu 1169 1170 1170 1171 status=NF90_INQ_DIMID(ncidu, "LONU", dimid) 1171 1172 status=NF90_INQUIRE_DIMENSION(ncidu,dimid,namedim,lendim) 1172 IF (lendim /=iip1) THEN1173 IF (lendim .NE. iip1) THEN 1173 1174 abort_message='dimension LONU different from iip1 in u.nc' 1174 1175 CALL abort_gcm(modname,abort_message,1) … … 1177 1178 status=NF90_INQ_DIMID(ncidu, "LATU", dimid) 1178 1179 status=NF90_INQUIRE_DIMENSION(ncidu,dimid,namedim,lendim) 1179 IF (lendim /=jjp1) THEN1180 IF (lendim .NE. jjp1) THEN 1180 1181 abort_message='dimension LATU different from jjp1 in u.nc' 1181 1182 CALL abort_gcm(modname,abort_message,1) … … 1187 1188 if (guide_v) then 1188 1189 rcode = nf90_open('v.nc', nf90_nowrite, ncidv) 1189 IF (rcode /=NF90_NOERR) THEN1190 IF (rcode.NE.NF90_NOERR) THEN 1190 1191 abort_message='Nudging: error -> no file v.nc' 1191 1192 CALL abort_gcm(modname,abort_message,1) 1192 1193 ENDIF 1193 1194 rcode = nf90_inq_varid(ncidv, 'VWND', varidv) 1194 IF (rcode /=NF90_NOERR) THEN1195 IF (rcode.NE.NF90_NOERR) THEN 1195 1196 abort_message='Nudging: error -> no VWND variable in file v.nc' 1196 1197 CALL abort_gcm(modname,abort_message,1) 1197 1198 ENDIF 1198 1199 write(*,*) trim(modname)//' ncidv,varidv',ncidv,varidv 1199 if (ncidpl ==-99) ncidpl=ncidv1200 if (ncidpl.eq.-99) ncidpl=ncidv 1200 1201 1201 1202 status=NF90_INQ_DIMID(ncidv, "LONV", dimid) 1202 1203 status=NF90_INQUIRE_DIMENSION(ncidv,dimid,namedim,lendim) 1203 1204 1204 IF (lendim /=iip1) THEN1205 IF (lendim .NE. iip1) THEN 1205 1206 abort_message='dimension LONV different from iip1 in v.nc' 1206 1207 CALL abort_gcm(modname,abort_message,1) … … 1210 1211 status=NF90_INQ_DIMID(ncidv, "LATV", dimid) 1211 1212 status=NF90_INQUIRE_DIMENSION(ncidv,dimid,namedim,lendim) 1212 IF (lendim /=jjm) THEN1213 IF (lendim .NE. jjm) THEN 1213 1214 abort_message='dimension LATV different from jjm in v.nc' 1214 1215 CALL abort_gcm(modname,abort_message,1) … … 1220 1221 if (guide_T) then 1221 1222 rcode = nf90_open('T.nc', nf90_nowrite, ncidt) 1222 IF (rcode /=NF90_NOERR) THEN1223 IF (rcode.NE.NF90_NOERR) THEN 1223 1224 abort_message='Nudging: error -> no file T.nc' 1224 1225 CALL abort_gcm(modname,abort_message,1) 1225 1226 ENDIF 1226 1227 rcode = nf90_inq_varid(ncidt, 'AIR', varidt) 1227 IF (rcode /=NF90_NOERR) THEN1228 IF (rcode.NE.NF90_NOERR) THEN 1228 1229 abort_message='Nudging: error -> no AIR variable in file T.nc' 1229 1230 CALL abort_gcm(modname,abort_message,1) 1230 1231 ENDIF 1231 1232 write(*,*) trim(modname)//' ncidT,varidT',ncidt,varidt 1232 if (ncidpl ==-99) ncidpl=ncidt1233 if (ncidpl.eq.-99) ncidpl=ncidt 1233 1234 1234 1235 status=NF90_INQ_DIMID(ncidt, "LONV", dimid) 1235 1236 status=NF90_INQUIRE_DIMENSION(ncidt,dimid,namedim,lendim) 1236 IF (lendim /=iip1) THEN1237 IF (lendim .NE. iip1) THEN 1237 1238 abort_message='dimension LONV different from iip1 in T.nc' 1238 1239 CALL abort_gcm(modname,abort_message,1) … … 1241 1242 status=NF90_INQ_DIMID(ncidt, "LATU", dimid) 1242 1243 status=NF90_INQUIRE_DIMENSION(ncidt,dimid,namedim,lendim) 1243 IF (lendim /=jjp1) THEN1244 IF (lendim .NE. jjp1) THEN 1244 1245 abort_message='dimension LATU different from jjp1 in T.nc' 1245 1246 CALL abort_gcm(modname,abort_message,1) … … 1251 1252 if (guide_Q) then 1252 1253 rcode = nf90_open('hur.nc', nf90_nowrite, ncidQ) 1253 IF (rcode /=NF90_NOERR) THEN1254 IF (rcode.NE.NF90_NOERR) THEN 1254 1255 abort_message='Nudging: error -> no file hur.nc' 1255 1256 CALL abort_gcm(modname,abort_message,1) 1256 1257 ENDIF 1257 1258 rcode = nf90_inq_varid(ncidQ, 'RH', varidQ) 1258 IF (rcode /=NF90_NOERR) THEN1259 IF (rcode.NE.NF90_NOERR) THEN 1259 1260 abort_message='Nudging: error -> no RH variable in file hur.nc' 1260 1261 CALL abort_gcm(modname,abort_message,1) 1261 1262 ENDIF 1262 1263 write(*,*) trim(modname)//' ncidQ,varidQ',ncidQ,varidQ 1263 if (ncidpl ==-99) ncidpl=ncidQ1264 if (ncidpl.eq.-99) ncidpl=ncidQ 1264 1265 1265 1266 status=NF90_INQ_DIMID(ncidQ, "LONV", dimid) 1266 1267 status=NF90_INQUIRE_DIMENSION(ncidQ,dimid,namedim,lendim) 1267 IF (lendim /=iip1) THEN1268 IF (lendim .NE. iip1) THEN 1268 1269 abort_message='dimension LONV different from iip1 in hur.nc' 1269 1270 CALL abort_gcm(modname,abort_message,1) … … 1272 1273 status=NF90_INQ_DIMID(ncidQ, "LATU", dimid) 1273 1274 status=NF90_INQUIRE_DIMENSION(ncidQ,dimid,namedim,lendim) 1274 IF (lendim /=jjp1) THEN1275 IF (lendim .NE. jjp1) THEN 1275 1276 abort_message='dimension LATU different from jjp1 in hur.nc' 1276 1277 CALL abort_gcm(modname,abort_message,1) … … 1282 1283 if ((guide_P).OR.(guide_modele)) then 1283 1284 rcode = nf90_open('ps.nc', nf90_nowrite, ncidps) 1284 IF (rcode /=NF90_NOERR) THEN1285 IF (rcode.NE.NF90_NOERR) THEN 1285 1286 abort_message='Nudging: error -> no file ps.nc' 1286 1287 CALL abort_gcm(modname,abort_message,1) 1287 1288 ENDIF 1288 1289 rcode = nf90_inq_varid(ncidps, 'SP', varidps) 1289 IF (rcode /=NF90_NOERR) THEN1290 IF (rcode.NE.NF90_NOERR) THEN 1290 1291 abort_message='Nudging: error -> no SP variable in file ps.nc' 1291 1292 CALL abort_gcm(modname,abort_message,1) … … 1294 1295 endif 1295 1296 ! Coordonnee verticale 1296 if (guide_plevs ==0) then1297 if (guide_plevs.EQ.0) then 1297 1298 rcode = nf90_inq_varid(ncidpl, 'LEVEL', varidpl) 1298 IF (rcode /=0) rcode = nf90_inq_varid(ncidpl, 'PRESSURE', varidpl)1299 IF (rcode.NE.0) rcode = nf90_inq_varid(ncidpl, 'PRESSURE', varidpl) 1299 1300 write(*,*) trim(modname)//' ncidpl,varidpl',ncidpl,varidpl 1300 1301 endif 1301 1302 ! Coefs ap, bp pour calcul de la pression aux differents niveaux 1302 if (guide_plevs ==1) then1303 if (guide_plevs.EQ.1) then 1303 1304 status=NF90_GET_VAR(ncidpl,varidap,apnc,[1],[nlevnc]) 1304 1305 status=NF90_GET_VAR(ncidpl,varidbp,bpnc,[1],[nlevnc]) 1305 ELSEIF (guide_plevs ==0) THEN1306 ELSEIF (guide_plevs.EQ.0) THEN 1306 1307 status=NF90_GET_VAR(ncidpl,varidpl,apnc,[1],[nlevnc]) 1307 1308 !FC Pour les corrections la pression est deja en Pascals on commente la ligne ci-dessous … … 1328 1329 1329 1330 ! Pression 1330 if (guide_plevs ==2) then1331 if (guide_plevs.EQ.2) then 1331 1332 status=NF90_GET_VAR(ncidp,varidp,pnat2,start,count) 1332 1333 IF (invert_y) THEN … … 1388 1389 !======================================================================= 1389 1390 SUBROUTINE guide_read2D(timestep) 1391 1392 use netcdf, only: nf90_get_var, nf90_noerr 1393 1390 1394 IMPLICIT NONE 1391 1395 … … 1417 1421 write(*,*)trim(modname)//' : opening nudging files ' 1418 1422 ! Ap et Bp si niveaux de pression hybrides 1419 if (guide_plevs ==1) then1423 if (guide_plevs.EQ.1) then 1420 1424 write(*,*)trim(modname)//' Reading nudging on model levels' 1421 1425 rcode = nf90_open('apbp.nc', nf90_nowrite, ncidpl) 1422 IF (rcode /=NF90_NOERR) THEN1426 IF (rcode.NE.NF90_NOERR) THEN 1423 1427 abort_message='Nudging: error -> no file apbp.nc' 1424 1428 CALL abort_gcm(modname,abort_message,1) 1425 1429 ENDIF 1426 1430 rcode = nf90_inq_varid(ncidpl, 'AP', varidap) 1427 IF (rcode /=NF90_NOERR) THEN1431 IF (rcode.NE.NF90_NOERR) THEN 1428 1432 abort_message='Nudging: error -> no AP variable in file apbp.nc' 1429 1433 CALL abort_gcm(modname,abort_message,1) 1430 1434 ENDIF 1431 1435 rcode = nf90_inq_varid(ncidpl, 'BP', varidbp) 1432 IF (rcode /=NF90_NOERR) THEN1436 IF (rcode.NE.NF90_NOERR) THEN 1433 1437 abort_message='Nudging: error -> no BP variable in file apbp.nc' 1434 1438 CALL abort_gcm(modname,abort_message,1) … … 1437 1441 endif 1438 1442 ! Pression 1439 if (guide_plevs ==2) then1443 if (guide_plevs.EQ.2) then 1440 1444 rcode = nf90_open('P.nc', nf90_nowrite, ncidp) 1441 IF (rcode /=NF90_NOERR) THEN1445 IF (rcode.NE.NF90_NOERR) THEN 1442 1446 abort_message='Nudging: error -> no file P.nc' 1443 1447 CALL abort_gcm(modname,abort_message,1) 1444 1448 ENDIF 1445 1449 rcode = nf90_inq_varid(ncidp, 'PRES', varidp) 1446 IF (rcode /=NF90_NOERR) THEN1450 IF (rcode.NE.NF90_NOERR) THEN 1447 1451 abort_message='Nudging: error -> no PRES variable in file P.nc' 1448 1452 CALL abort_gcm(modname,abort_message,1) 1449 1453 ENDIF 1450 1454 write(*,*)trim(modname)//' ncidp,varidp',ncidp,varidp 1451 if (ncidpl ==-99) ncidpl=ncidp1455 if (ncidpl.eq.-99) ncidpl=ncidp 1452 1456 endif 1453 1457 ! Vent zonal 1454 1458 if (guide_u) then 1455 1459 rcode = nf90_open('u.nc', nf90_nowrite, ncidu) 1456 IF (rcode /=NF90_NOERR) THEN1460 IF (rcode.NE.NF90_NOERR) THEN 1457 1461 abort_message='Nudging: error -> no file u.nc' 1458 1462 CALL abort_gcm(modname,abort_message,1) 1459 1463 ENDIF 1460 1464 rcode = nf90_inq_varid(ncidu, 'UWND', varidu) 1461 IF (rcode /=NF90_NOERR) THEN1465 IF (rcode.NE.NF90_NOERR) THEN 1462 1466 abort_message='Nudging: error -> no UWND variable in file u.nc' 1463 1467 CALL abort_gcm(modname,abort_message,1) 1464 1468 ENDIF 1465 1469 write(*,*)trim(modname)//' ncidu,varidu',ncidu,varidu 1466 if (ncidpl ==-99) ncidpl=ncidu1470 if (ncidpl.eq.-99) ncidpl=ncidu 1467 1471 endif 1468 1472 ! Vent meridien 1469 1473 if (guide_v) then 1470 1474 rcode = nf90_open('v.nc', nf90_nowrite, ncidv) 1471 IF (rcode /=NF90_NOERR) THEN1475 IF (rcode.NE.NF90_NOERR) THEN 1472 1476 abort_message='Nudging: error -> no file v.nc' 1473 1477 CALL abort_gcm(modname,abort_message,1) 1474 1478 ENDIF 1475 1479 rcode = nf90_inq_varid(ncidv, 'VWND', varidv) 1476 IF (rcode /=NF90_NOERR) THEN1480 IF (rcode.NE.NF90_NOERR) THEN 1477 1481 abort_message='Nudging: error -> no VWND variable in file v.nc' 1478 1482 CALL abort_gcm(modname,abort_message,1) 1479 1483 ENDIF 1480 1484 write(*,*)trim(modname)//' ncidv,varidv',ncidv,varidv 1481 if (ncidpl ==-99) ncidpl=ncidv1485 if (ncidpl.eq.-99) ncidpl=ncidv 1482 1486 endif 1483 1487 ! Temperature 1484 1488 if (guide_T) then 1485 1489 rcode = nf90_open('T.nc', nf90_nowrite, ncidt) 1486 IF (rcode /=NF90_NOERR) THEN1490 IF (rcode.NE.NF90_NOERR) THEN 1487 1491 abort_message='Nudging: error -> no file T.nc' 1488 1492 CALL abort_gcm(modname,abort_message,1) 1489 1493 ENDIF 1490 1494 rcode = nf90_inq_varid(ncidt, 'AIR', varidt) 1491 IF (rcode /=NF90_NOERR) THEN1495 IF (rcode.NE.NF90_NOERR) THEN 1492 1496 abort_message='Nudging: error -> no AIR variable in file T.nc' 1493 1497 CALL abort_gcm(modname,abort_message,1) 1494 1498 ENDIF 1495 1499 write(*,*)trim(modname)//' ncidT,varidT',ncidt,varidt 1496 if (ncidpl ==-99) ncidpl=ncidt1500 if (ncidpl.eq.-99) ncidpl=ncidt 1497 1501 endif 1498 1502 ! Humidite 1499 1503 if (guide_Q) then 1500 1504 rcode = nf90_open('hur.nc', nf90_nowrite, ncidQ) 1501 IF (rcode /=NF90_NOERR) THEN1505 IF (rcode.NE.NF90_NOERR) THEN 1502 1506 abort_message='Nudging: error -> no file hur.nc' 1503 1507 CALL abort_gcm(modname,abort_message,1) 1504 1508 ENDIF 1505 1509 rcode = nf90_inq_varid(ncidQ, 'RH', varidQ) 1506 IF (rcode /=NF90_NOERR) THEN1510 IF (rcode.NE.NF90_NOERR) THEN 1507 1511 abort_message='Nudging: error -> no RH,variable in file hur.nc' 1508 1512 CALL abort_gcm(modname,abort_message,1) 1509 1513 ENDIF 1510 1514 write(*,*)trim(modname)//' ncidQ,varidQ',ncidQ,varidQ 1511 if (ncidpl ==-99) ncidpl=ncidQ1515 if (ncidpl.eq.-99) ncidpl=ncidQ 1512 1516 endif 1513 1517 ! Pression de surface 1514 1518 if ((guide_P).OR.(guide_modele)) then 1515 1519 rcode = nf90_open('ps.nc', nf90_nowrite, ncidps) 1516 IF (rcode /=NF90_NOERR) THEN1520 IF (rcode.NE.NF90_NOERR) THEN 1517 1521 abort_message='Nudging: error -> no file ps.nc' 1518 1522 CALL abort_gcm(modname,abort_message,1) 1519 1523 ENDIF 1520 1524 rcode = nf90_inq_varid(ncidps, 'SP', varidps) 1521 IF (rcode /=NF90_NOERR) THEN1525 IF (rcode.NE.NF90_NOERR) THEN 1522 1526 abort_message='Nudging: error -> no SP variable in file ps.nc' 1523 1527 CALL abort_gcm(modname,abort_message,1) … … 1526 1530 endif 1527 1531 ! Coordonnee verticale 1528 if (guide_plevs ==0) then1532 if (guide_plevs.EQ.0) then 1529 1533 rcode = nf90_inq_varid(ncidpl, 'LEVEL', varidpl) 1530 IF (rcode /=0) rcode = nf90_inq_varid(ncidpl, 'PRESSURE', varidpl)1534 IF (rcode.NE.0) rcode = nf90_inq_varid(ncidpl, 'PRESSURE', varidpl) 1531 1535 write(*,*)trim(modname)//' ncidpl,varidpl',ncidpl,varidpl 1532 1536 endif 1533 1537 ! Coefs ap, bp pour calcul de la pression aux differents niveaux 1534 if (guide_plevs ==1) then1538 if (guide_plevs.EQ.1) then 1535 1539 status=NF90_GET_VAR(ncidpl,varidap,apnc,[1],[nlevnc]) 1536 1540 status=NF90_GET_VAR(ncidpl,varidbp,bpnc,[1],[nlevnc]) 1537 elseif (guide_plevs ==0) THEN1541 elseif (guide_plevs.EQ.0) THEN 1538 1542 status=NF90_GET_VAR(ncidpl,varidpl,apnc,[1],[nlevnc]) 1539 1543 apnc=apnc*100.! conversion en Pascals … … 1559 1563 1560 1564 ! Pression 1561 if (guide_plevs ==2) then1565 if (guide_plevs.EQ.2) then 1562 1566 status=NF90_GET_VAR(ncidp,varidp,zu,start,count) 1563 1567 DO i=1,iip1 … … 1625 1629 1626 1630 ! Pression de surface 1627 if ((guide_P).OR.(guide_plevs ==1)) then1631 if ((guide_P).OR.(guide_plevs.EQ.1)) then 1628 1632 start(3)=timestep 1629 1633 start(4)=0 … … 1649 1653 USE comconst_mod, ONLY: pi 1650 1654 USE comvert_mod, ONLY: presnivs 1651 USE netcdf95, ONLY: nf95_def_var, nf95_put_var 1652 1655 use netcdf95, only: nf95_def_var, nf95_put_var 1656 use netcdf, only: nf90_float, nf90_def_var 1657 1653 1658 IMPLICIT NONE 1654 1659 1655 1660 INCLUDE "dimensions.h" 1656 1661 INCLUDE "paramet.h" 1662 INCLUDE "netcdf.inc" 1657 1663 INCLUDE "comgeom2.h" 1658 1664 … … 1675 1681 1676 1682 write(*,*)trim(modname)//': output timestep',timestep,'var ',varname 1677 IF (timestep ==0) THEN1683 IF (timestep.EQ.0) THEN 1678 1684 ! ---------------------------------------------- 1679 1685 ! initialisation fichier de sortie … … 1707 1713 1708 1714 ! Enregistrement des variables dimensions 1709 ierr = nf90_put_var(nid,vid_lonu,rlonu*180./pi) 1710 ierr = nf90_put_var(nid,vid_lonv,rlonv*180./pi) 1711 ierr = nf90_put_var(nid,vid_latu,rlatu*180./pi) 1712 ierr = nf90_put_var(nid,vid_latv,rlatv*180./pi) 1713 ierr = nf90_put_var(nid,vid_lev,presnivs) 1714 ierr = nf90_put_var(nid,vid_cu,cu) 1715 ierr = nf90_put_var(nid,vid_cv,cv) 1716 ierr = nf90_put_var(nid,vid_au,alpha_u) 1717 ierr = nf90_put_var(nid,vid_av,alpha_v) 1715 #ifdef NC_DOUBLE 1716 ierr = NF_PUT_VAR_DOUBLE(nid,vid_lonu,rlonu*180./pi) 1717 ierr = NF_PUT_VAR_DOUBLE(nid,vid_lonv,rlonv*180./pi) 1718 ierr = NF_PUT_VAR_DOUBLE(nid,vid_latu,rlatu*180./pi) 1719 ierr = NF_PUT_VAR_DOUBLE(nid,vid_latv,rlatv*180./pi) 1720 ierr = NF_PUT_VAR_DOUBLE(nid,vid_lev,presnivs) 1721 ierr = NF_PUT_VAR_DOUBLE(nid,vid_cu,cu) 1722 ierr = NF_PUT_VAR_DOUBLE(nid,vid_cv,cv) 1723 ierr = NF_PUT_VAR_DOUBLE(nid,vid_au,alpha_u) 1724 ierr = NF_PUT_VAR_DOUBLE(nid,vid_av,alpha_v) 1725 #else 1726 ierr = NF_PUT_VAR_REAL(nid,vid_lonu,rlonu*180./pi) 1727 ierr = NF_PUT_VAR_REAL(nid,vid_lonv,rlonv*180./pi) 1728 ierr = NF_PUT_VAR_REAL(nid,vid_latu,rlatu*180./pi) 1729 ierr = NF_PUT_VAR_REAL(nid,vid_latv,rlatv*180./pi) 1730 ierr = NF_PUT_VAR_REAL(nid,vid_lev,presnivs) 1731 ierr = NF_PUT_VAR_REAL(nid,vid_cu,cu) 1732 ierr = NF_PUT_VAR_REAL(nid,vid_cv,cv) 1733 ierr = NF_PUT_VAR_REAL(nid,vid_au,alpha_u) 1734 ierr = NF_PUT_VAR_REAL(nid,vid_av,alpha_v) 1735 #endif 1718 1736 call nf95_put_var(nid, varid_alpha_t, alpha_t) 1719 1737 call nf95_put_var(nid, varid_alpha_q, alpha_q) … … 1789 1807 END SELECT 1790 1808 1791 ierr = nf90_put_var(nid,varid,field2,start,count) 1809 1810 #ifdef NC_DOUBLE 1811 ierr = NF_PUT_VARA_DOUBLE(nid,varid,start,count,field2) 1812 #else 1813 ierr = NF_PUT_VARA_REAL(nid,varid,start,count,field2) 1814 #endif 1815 1792 1816 ierr = NF_CLOSE(nid) 1793 1817 … … 1804 1828 do l=1,nl 1805 1829 do i=2,iim-1 1806 if(abs(x(i,l)) >1.e10) then1830 if(abs(x(i,l)).gt.1.e10) then 1807 1831 zz=0.5*(x(i-1,l)+x(i+1,l)) 1808 1832 print*,'correction ',i,l,x(i,l),zz -
LMDZ6/trunk/libf/dyn3d/iniacademic.F90
r5075 r5084 22 22 USE ener_mod, ONLY: etot0,ptot0,ztot0,stot0,ang0 23 23 USE readTracFiles_mod, ONLY: addPhase 24 use lmdz_netcdf, only : NF90_NOWRITE,NF90_OPEN,NF90_NOERR,NF90_INQ_VARID,NF90_CLOSE,NF90_GET_VAR 24 use netcdf, only : NF90_NOWRITE,NF90_OPEN,NF90_NOERR,NF90_INQ_VARID 25 use netcdf, only : NF90_CLOSE, NF90_GET_VAR 26 25 27 26 28 ! Author: Frederic Hourdin original: 15/01/93 … … 141 143 relief=0. 142 144 ierr = NF90_OPEN ('relief_in.nc', NF90_NOWRITE,nid_relief) 143 if (ierr ==NF90_NOERR) THEN145 if (ierr.EQ.NF90_NOERR) THEN 144 146 ierr=NF90_INQ_VARID(nid_relief,'RELIEF',varid) 145 147 if (ierr==NF90_NOERR) THEN … … 246 248 tetastrat=ttp*zsig**(-kappa) 247 249 tetapv=tetastrat 248 IF ((ok_pv).AND.(zsig <0.1)) THEN250 IF ((ok_pv).AND.(zsig.LT.0.1)) THEN 249 251 tetapv=tetastrat*(zsig*10.)**(kappa*cpp*gam_pv/1000./g) 250 252 ENDIF -
LMDZ6/trunk/libf/dyn3d_common/advx.F
r5077 r5084 95 95 96 96 C ------------------------------------- 97 DO j = 1,jjp197 DO 300 j = 1,jjp1 98 98 NUM(j) = 1 99 END DO99 300 CONTINUE 100 100 sqi = 0. 101 101 sqf = 0. … … 121 121 C ugri est en kg/s 122 122 123 DO l = 1,llm124 DO j = 1,jjm+1125 DO i = 1,iip1123 DO 500 l = 1,llm 124 DO 500 j = 1,jjm+1 125 DO 500 i = 1,iip1 126 126 C ugri (i,j,llm+1-l) = pbaru (i,j,l) * ( dsig(l) / g ) 127 127 ugri (i,j,llm+1-l) = pbaru (i,j,l) 128 END DO 129 END DO 130 END DO 128 500 CONTINUE 131 129 132 130 … … 139 137 C boucle principale sur les niveaux et les latitudes 140 138 C 141 DO L=1,NIV142 DO K=lati,latf139 DO 1 L=1,NIV 140 DO 1 K=lati,latf 143 141 C 144 142 C initialisation … … 146 144 C program assumes periodic boundaries in X 147 145 C 148 DO I=2,LON146 DO 10 I=2,LON 149 147 SMNEW(I)=SM(I,K,L)+(UGRI(I-1,K,L)-UGRI(I,K,L))*DTX 150 END DO148 10 CONTINUE 151 149 SMNEW(1)=SM(1,K,L)+(UGRI(LON,K,L)-UGRI(1,K,L))*DTX 152 150 C … … 156 154 LONK=LON/NUMK 157 155 C 158 IF(NUMK >1) THEN159 C 160 DO I=1,LON156 IF(NUMK.GT.1) THEN 157 C 158 DO 111 I=1,LON 161 159 TM(I)=0. 162 END DO163 DO JV=1,NTRA164 DO I=1,LON160 111 CONTINUE 161 DO 112 JV=1,NTRA 162 DO 1120 I=1,LON 165 163 T0(I,JV)=0. 166 164 TX(I,JV)=0. 167 165 TY(I,JV)=0. 168 166 TZ(I,JV)=0. 169 END DO170 END DO171 C 172 DO I2=1,NUMK173 C 174 DO I=1,LONK167 1120 CONTINUE 168 112 CONTINUE 169 C 170 DO 11 I2=1,NUMK 171 C 172 DO 113 I=1,LONK 175 173 I3=(I-1)*NUMK+I2 176 174 TM(I)=TM(I)+SM(I3,K,L) 177 175 ALF(I)=SM(I3,K,L)/TM(I) 178 176 ALF1(I)=1.-ALF(I) 179 END DO177 113 CONTINUE 180 178 C 181 179 DO JV=1,NTRA … … 192 190 ENDDO 193 191 C 194 END DO192 11 CONTINUE 195 193 C 196 194 ELSE 197 195 C 198 DO I=1,LON196 DO 115 I=1,LON 199 197 TM(I)=SM(I,K,L) 200 END DO201 DO JV=1,NTRA202 DO I=1,LON198 115 CONTINUE 199 DO 116 JV=1,NTRA 200 DO 1160 I=1,LON 203 201 T0(I,JV)=S0(I,K,L,JV) 204 202 TX(I,JV)=sx(I,K,L,JV) 205 203 TY(I,JV)=sy(I,K,L,JV) 206 204 TZ(I,JV)=sz(I,K,L,JV) 207 END DO208 END DO209 C 210 ENDIF 211 C 212 DO I=1,LONK205 1160 CONTINUE 206 116 CONTINUE 207 C 208 ENDIF 209 C 210 DO 117 I=1,LONK 213 211 UEXT(I)=UGRI(I*NUMK,K,L) 214 END DO212 117 CONTINUE 215 213 C 216 214 C place limits on appropriate moments before transport … … 219 217 IF(.NOT.LIMIT) GO TO 13 220 218 C 221 DO JV=1,NTRA222 DO I=1,LONK219 DO 12 JV=1,NTRA 220 DO 120 I=1,LONK 223 221 TX(I,JV)=SIGN(AMIN1(AMAX1(T0(I,JV),0.),ABS(TX(I,JV))),TX(I,JV)) 224 END DO225 END DO222 120 CONTINUE 223 12 CONTINUE 226 224 C 227 225 13 CONTINUE … … 233 231 C flux from IP to I if U(I).lt.0 234 232 C 235 DO I=1,LONK-1236 IF(UEXT(I) <0.) THEN233 DO 140 I=1,LONK-1 234 IF(UEXT(I).LT.0.) THEN 237 235 FM(I)=-UEXT(I)*DTX 238 236 ALF(I)=FM(I)/TM(I+1) 239 237 TM(I+1)=TM(I+1)-FM(I) 240 238 ENDIF 241 END DO239 140 CONTINUE 242 240 C 243 241 I=LONK 244 IF(UEXT(I) <0.) THEN242 IF(UEXT(I).LT.0.) THEN 245 243 FM(I)=-UEXT(I)*DTX 246 244 ALF(I)=FM(I)/TM(1) … … 250 248 C flux from I to IP if U(I).gt.0 251 249 C 252 DO I=1,LONK253 IF(UEXT(I) >=0.) THEN250 DO 141 I=1,LONK 251 IF(UEXT(I).GE.0.) THEN 254 252 FM(I)=UEXT(I)*DTX 255 253 ALF(I)=FM(I)/TM(I) 256 254 TM(I)=TM(I)-FM(I) 257 255 ENDIF 258 END DO259 C 260 DO I=1,LONK256 141 CONTINUE 257 C 258 DO 142 I=1,LONK 261 259 ALFQ(I)=ALF(I)*ALF(I) 262 260 ALF1(I)=1.-ALF(I) 263 261 ALF1Q(I)=ALF1(I)*ALF1(I) 264 END DO265 C 266 DO JV=1,NTRA267 DO I=1,LONK-1268 C 269 IF(UEXT(I) <0.) THEN262 142 CONTINUE 263 C 264 DO 150 JV=1,NTRA 265 DO 1500 I=1,LONK-1 266 C 267 IF(UEXT(I).LT.0.) THEN 270 268 C 271 269 F0(I,JV)=ALF (I)* ( T0(I+1,JV)-ALF1(I)*TX(I+1,JV) ) … … 281 279 ENDIF 282 280 C 283 END DO284 END DO281 1500 CONTINUE 282 150 CONTINUE 285 283 C 286 284 I=LONK 287 IF(UEXT(I) <0.) THEN288 C 289 DO JV=1,NTRA285 IF(UEXT(I).LT.0.) THEN 286 C 287 DO 151 JV=1,NTRA 290 288 C 291 289 F0 (I,JV)=ALF (I)* ( T0(1,JV)-ALF1(I)*TX(1,JV) ) … … 299 297 TZ(1,JV)=TZ(1,JV)-FZ(I,JV) 300 298 C 301 END DO302 C 303 ENDIF 304 C 305 DO JV=1,NTRA306 DO I=1,LONK307 C 308 IF(UEXT(I) >=0.) THEN299 151 CONTINUE 300 C 301 ENDIF 302 C 303 DO 152 JV=1,NTRA 304 DO 1520 I=1,LONK 305 C 306 IF(UEXT(I).GE.0.) THEN 309 307 C 310 308 F0(I,JV)=ALF (I)* ( T0(I,JV)+ALF1(I)*TX(I,JV) ) … … 320 318 ENDIF 321 319 C 322 END DO323 END DO320 1520 CONTINUE 321 152 CONTINUE 324 322 C 325 323 C puts the temporary moments Fi into appropriate neighboring boxes 326 324 C 327 DO I=1,LONK328 IF(UEXT(I) <0.) THEN325 DO 160 I=1,LONK 326 IF(UEXT(I).LT.0.) THEN 329 327 TM(I)=TM(I)+FM(I) 330 328 ALF(I)=FM(I)/TM(I) 331 329 ENDIF 332 END DO333 C 334 DO I=1,LONK-1335 IF(UEXT(I) >=0.) THEN330 160 CONTINUE 331 C 332 DO 161 I=1,LONK-1 333 IF(UEXT(I).GE.0.) THEN 336 334 TM(I+1)=TM(I+1)+FM(I) 337 335 ALF(I)=FM(I)/TM(I+1) 338 336 ENDIF 339 END DO337 161 CONTINUE 340 338 C 341 339 I=LONK 342 IF(UEXT(I) >=0.) THEN340 IF(UEXT(I).GE.0.) THEN 343 341 TM(1)=TM(1)+FM(I) 344 342 ALF(I)=FM(I)/TM(1) 345 343 ENDIF 346 344 C 347 DO I=1,LONK345 DO 162 I=1,LONK 348 346 ALF1(I)=1.-ALF(I) 349 END DO350 C 351 DO JV=1,NTRA352 DO I=1,LONK353 C 354 IF(UEXT(I) <0.) THEN347 162 CONTINUE 348 C 349 DO 170 JV=1,NTRA 350 DO 1700 I=1,LONK 351 C 352 IF(UEXT(I).LT.0.) THEN 355 353 C 356 354 TEMPTM=-ALF(I)*T0(I,JV)+ALF1(I)*F0(I,JV) … … 362 360 ENDIF 363 361 C 364 END DO365 END DO366 C 367 DO JV=1,NTRA368 DO I=1,LONK-1369 C 370 IF(UEXT(I) >=0.) THEN362 1700 CONTINUE 363 170 CONTINUE 364 C 365 DO 171 JV=1,NTRA 366 DO 1710 I=1,LONK-1 367 C 368 IF(UEXT(I).GE.0.) THEN 371 369 C 372 370 TEMPTM=ALF(I)*T0(I+1,JV)-ALF1(I)*F0(I,JV) … … 378 376 ENDIF 379 377 C 380 END DO381 END DO378 1710 CONTINUE 379 171 CONTINUE 382 380 C 383 381 I=LONK 384 IF(UEXT(I) >=0.) THEN385 DO JV=1,NTRA382 IF(UEXT(I).GE.0.) THEN 383 DO 172 JV=1,NTRA 386 384 TEMPTM=ALF(I)*T0(1,JV)-ALF1(I)*F0(I,JV) 387 385 T0(1,JV)=T0(1,JV)+F0(I,JV) … … 389 387 TY(1,JV)=TY(1,JV)+FY(I,JV) 390 388 TZ(1,JV)=TZ(1,JV)+FZ(I,JV) 391 END DO389 172 CONTINUE 392 390 ENDIF 393 391 C 394 392 C retour aux mailles d'origine (passage des Tij aux Sij) 395 393 C 396 IF(NUMK >1) THEN397 C 398 DO I2=1,NUMK399 C 400 DO I=1,LONK394 IF(NUMK.GT.1) THEN 395 C 396 DO 180 I2=1,NUMK 397 C 398 DO 180 I=1,LONK 401 399 C 402 400 I3=I2+(I-1)*NUMK … … 409 407 ALF1Q(I)=ALF1(I)*ALF1(I) 410 408 C 411 END DO 412 END DO 409 180 CONTINUE 413 410 C 414 411 DO JV=1,NTRA … … 434 431 ELSE 435 432 C 436 DO I=1,LON433 DO 190 I=1,LON 437 434 SM(I,K,L)=TM(I) 438 END DO439 DO JV=1,NTRA440 DO I=1,LON435 190 CONTINUE 436 DO 191 JV=1,NTRA 437 DO 1910 I=1,LON 441 438 S0(I,K,L,JV)=T0(I,JV) 442 439 sx(I,K,L,JV)=TX(I,JV) 443 440 sy(I,K,L,JV)=TY(I,JV) 444 441 sz(I,K,L,JV)=TZ(I,JV) 445 END DO 446 END DO 447 C 448 ENDIF 449 C 450 END DO 451 END DO 442 1910 CONTINUE 443 191 CONTINUE 444 C 445 ENDIF 446 C 447 1 CONTINUE 452 448 C 453 449 C ----------- AA Test en fin de ADVX ------ Controle des S* -
LMDZ6/trunk/libf/dyn3d_common/advxp.F
r5077 r5084 126 126 c test 127 127 c ------------------------------------- 128 DO j =1,jjp1128 DO 300 j =1,jjp1 129 129 NUM(j) =1 130 END DO130 300 CONTINUE 131 131 c DO l=1,llm 132 132 c NUM(2,l)=6 … … 150 150 C ugri est en kg/s 151 151 152 DO l = 1,llm153 DO j = 1,jjp1154 DO i = 1,iip1152 DO 500 l = 1,llm 153 DO 500 j = 1,jjp1 154 DO 500 i = 1,iip1 155 155 ugri (i,j,llm+1-l) =pbaru (i,j,l) 156 END DO 157 END DO 158 END DO 156 500 CONTINUE 159 157 160 158 C --------------------------------------------------------- … … 163 161 C boucle principale sur les niveaux et les latitudes 164 162 C 165 DO L=1,NIV166 DO K=lati,latf163 DO 1 L=1,NIV 164 DO 1 K=lati,latf 167 165 168 166 C … … 171 169 C program assumes periodic boundaries in X 172 170 C 173 DO I=2,LON171 DO 10 I=2,LON 174 172 SMNEW(I)=SM(I,K,L)+(UGRI(I-1,K,L)-UGRI(I,K,L))*DTX 175 END DO173 10 CONTINUE 176 174 SMNEW(1)=SM(1,K,L)+(UGRI(LON,K,L)-UGRI(1,K,L))*DTX 177 175 C … … 181 179 LONK=LON/NUMK 182 180 C 183 IF(NUMK >1) THEN184 C 185 DO I=1,LON181 IF(NUMK.GT.1) THEN 182 C 183 DO 111 I=1,LON 186 184 TM(I)=0. 187 END DO188 DO JV=1,NTRA189 DO I=1,LON185 111 CONTINUE 186 DO 112 JV=1,NTRA 187 DO 1120 I=1,LON 190 188 T0 (I,JV)=0. 191 189 TX (I,JV)=0. … … 198 196 TYZ(I,JV)=0. 199 197 TZZ(I,JV)=0. 200 END DO201 END DO202 C 203 DO I2=1,NUMK204 C 205 DO I=1,LONK198 1120 CONTINUE 199 112 CONTINUE 200 C 201 DO 11 I2=1,NUMK 202 C 203 DO 113 I=1,LONK 206 204 I3=(I-1)*NUMK+I2 207 205 TM(I)=TM(I)+SM(I3,K,L) … … 212 210 ALF2(I)=ALF1(I)-ALF(I) 213 211 ALF3(I)=ALF(I)*ALF1(I) 214 END DO215 C 216 DO JV=1,NTRA217 DO I=1,LONK212 113 CONTINUE 213 C 214 DO 114 JV=1,NTRA 215 DO 1140 I=1,LONK 218 216 I3=(I-1)*NUMK+I2 219 217 TEMPTM=-ALF(I)*T0(I,JV)+ALF1(I)*S0(I3,K,L,JV) … … 231 229 TYZ(I,JV)=TYZ(I,JV)+SYZ(I3,K,L,JV) 232 230 TZZ(I,JV)=TZZ(I,JV)+SZZ(I3,K,L,JV) 233 END DO234 END DO235 C 236 END DO231 1140 CONTINUE 232 114 CONTINUE 233 C 234 11 CONTINUE 237 235 C 238 236 ELSE 239 237 C 240 DO I=1,LON238 DO 115 I=1,LON 241 239 TM(I)=SM(I,K,L) 242 END DO243 DO JV=1,NTRA244 DO I=1,LON240 115 CONTINUE 241 DO 116 JV=1,NTRA 242 DO 1160 I=1,LON 245 243 T0 (I,JV)=S0 (I,K,L,JV) 246 244 TX (I,JV)=SSX (I,K,L,JV) … … 253 251 TYZ(I,JV)=SYZ(I,K,L,JV) 254 252 TZZ(I,JV)=SZZ(I,K,L,JV) 255 END DO256 END DO253 1160 CONTINUE 254 116 CONTINUE 257 255 C 258 256 ENDIF 259 257 C 260 DO I=1,LONK258 DO 117 I=1,LONK 261 259 UEXT(I)=UGRI(I*NUMK,K,L) 262 END DO260 117 CONTINUE 263 261 C 264 262 C place limits on appropriate moments before transport … … 267 265 IF(.NOT.LIMIT) GO TO 13 268 266 C 269 DO JV=1,NTRA270 DO I=1,LONK271 IF(T0(I,JV) >0.) THEN267 DO 12 JV=1,NTRA 268 DO 120 I=1,LONK 269 IF(T0(I,JV).GT.0.) THEN 272 270 SLPMAX=T0(I,JV) 273 271 S1MAX=1.5*SLPMAX … … 285 283 TXZ(I,JV)=0. 286 284 ENDIF 287 END DO288 END DO285 120 CONTINUE 286 12 CONTINUE 289 287 C 290 288 13 CONTINUE … … 296 294 C flux from IP to I if U(I).lt.0 297 295 C 298 DO I=1,LONK-1299 IF(UEXT(I) <0.) THEN296 DO 140 I=1,LONK-1 297 IF(UEXT(I).LT.0.) THEN 300 298 FM(I)=-UEXT(I)*DTX 301 299 ALF(I)=FM(I)/TM(I+1) 302 300 TM(I+1)=TM(I+1)-FM(I) 303 301 ENDIF 304 END DO302 140 CONTINUE 305 303 C 306 304 I=LONK 307 IF(UEXT(I) <0.) THEN305 IF(UEXT(I).LT.0.) THEN 308 306 FM(I)=-UEXT(I)*DTX 309 307 ALF(I)=FM(I)/TM(1) … … 313 311 C flux from I to IP if U(I).gt.0 314 312 C 315 DO I=1,LONK316 IF(UEXT(I) >=0.) THEN313 DO 141 I=1,LONK 314 IF(UEXT(I).GE.0.) THEN 317 315 FM(I)=UEXT(I)*DTX 318 316 ALF(I)=FM(I)/TM(I) 319 317 TM(I)=TM(I)-FM(I) 320 318 ENDIF 321 END DO322 C 323 DO I=1,LONK319 141 CONTINUE 320 C 321 DO 142 I=1,LONK 324 322 ALFQ(I)=ALF(I)*ALF(I) 325 323 ALF1(I)=1.-ALF(I) … … 328 326 ALF3(I)=ALF(I)*ALFQ(I) 329 327 ALF4(I)=ALF1(I)*ALF1Q(I) 330 END DO331 C 332 DO JV=1,NTRA333 DO I=1,LONK-1334 C 335 IF(UEXT(I) <0.) THEN328 142 CONTINUE 329 C 330 DO 150 JV=1,NTRA 331 DO 1500 I=1,LONK-1 332 C 333 IF(UEXT(I).LT.0.) THEN 336 334 C 337 335 F0 (I,JV)=ALF (I)* ( T0(I+1,JV)-ALF1(I)* … … 360 358 ENDIF 361 359 C 362 END DO363 END DO360 1500 CONTINUE 361 150 CONTINUE 364 362 C 365 363 I=LONK 366 IF(UEXT(I) <0.) THEN367 C 368 DO JV=1,NTRA364 IF(UEXT(I).LT.0.) THEN 365 C 366 DO 151 JV=1,NTRA 369 367 C 370 368 F0 (I,JV)=ALF (I)* ( T0(1,JV)-ALF1(I)* … … 391 389 TXZ(1,JV)=ALF1Q(I)*TXZ(1,JV) 392 390 C 393 END DO391 151 CONTINUE 394 392 C 395 393 ENDIF 396 394 C 397 DO JV=1,NTRA398 DO I=1,LONK399 C 400 IF(UEXT(I) >=0.) THEN395 DO 152 JV=1,NTRA 396 DO 1520 I=1,LONK 397 C 398 IF(UEXT(I).GE.0.) THEN 401 399 C 402 400 F0 (I,JV)=ALF (I)* ( T0(I,JV)+ALF1(I)* … … 425 423 ENDIF 426 424 C 427 END DO428 END DO425 1520 CONTINUE 426 152 CONTINUE 429 427 C 430 428 C puts the temporary moments Fi into appropriate neighboring boxes 431 429 C 432 DO I=1,LONK433 IF(UEXT(I) <0.) THEN430 DO 160 I=1,LONK 431 IF(UEXT(I).LT.0.) THEN 434 432 TM(I)=TM(I)+FM(I) 435 433 ALF(I)=FM(I)/TM(I) 436 434 ENDIF 437 END DO438 C 439 DO I=1,LONK-1440 IF(UEXT(I) >=0.) THEN435 160 CONTINUE 436 C 437 DO 161 I=1,LONK-1 438 IF(UEXT(I).GE.0.) THEN 441 439 TM(I+1)=TM(I+1)+FM(I) 442 440 ALF(I)=FM(I)/TM(I+1) 443 441 ENDIF 444 END DO442 161 CONTINUE 445 443 C 446 444 I=LONK 447 IF(UEXT(I) >=0.) THEN445 IF(UEXT(I).GE.0.) THEN 448 446 TM(1)=TM(1)+FM(I) 449 447 ALF(I)=FM(I)/TM(1) 450 448 ENDIF 451 449 C 452 DO I=1,LONK450 DO 162 I=1,LONK 453 451 ALF1(I)=1.-ALF(I) 454 452 ALFQ(I)=ALF(I)*ALF(I) … … 456 454 ALF2(I)=ALF1(I)-ALF(I) 457 455 ALF3(I)=ALF(I)*ALF1(I) 458 END DO459 C 460 DO JV=1,NTRA461 DO I=1,LONK462 C 463 IF(UEXT(I) <0.) THEN456 162 CONTINUE 457 C 458 DO 170 JV=1,NTRA 459 DO 1700 I=1,LONK 460 C 461 IF(UEXT(I).LT.0.) THEN 464 462 C 465 463 TEMPTM=-ALF(I)*T0(I,JV)+ALF1(I)*F0(I,JV) … … 480 478 ENDIF 481 479 C 482 END DO483 END DO484 C 485 DO JV=1,NTRA486 DO I=1,LONK-1487 C 488 IF(UEXT(I) >=0.) THEN480 1700 CONTINUE 481 170 CONTINUE 482 C 483 DO 171 JV=1,NTRA 484 DO 1710 I=1,LONK-1 485 C 486 IF(UEXT(I).GE.0.) THEN 489 487 C 490 488 TEMPTM=ALF(I)*T0(I+1,JV)-ALF1(I)*F0(I,JV) … … 505 503 ENDIF 506 504 C 507 END DO508 END DO505 1710 CONTINUE 506 171 CONTINUE 509 507 C 510 508 I=LONK 511 IF(UEXT(I) >=0.) THEN512 DO JV=1,NTRA509 IF(UEXT(I).GE.0.) THEN 510 DO 172 JV=1,NTRA 513 511 TEMPTM=ALF(I)*T0(1,JV)-ALF1(I)*F0(I,JV) 514 512 T0 (1,JV)=T0(1,JV)+F0(I,JV) … … 525 523 TYZ(1,JV)=TYZ(1,JV)+FYZ(I,JV) 526 524 TZZ(1,JV)=TZZ(1,JV)+FZZ(I,JV) 527 END DO525 172 CONTINUE 528 526 ENDIF 529 527 C 530 528 C retour aux mailles d'origine (passage des Tij aux Sij) 531 529 C 532 IF(NUMK >1) THEN533 C 534 DO I2=1,NUMK535 C 536 DO I=1,LONK530 IF(NUMK.GT.1) THEN 531 C 532 DO 18 I2=1,NUMK 533 C 534 DO 180 I=1,LONK 537 535 C 538 536 I3=I2+(I-1)*NUMK … … 548 546 ALF4(I)=ALF1(I)*ALF1Q(I) 549 547 C 550 END DO551 C 552 DO JV=1,NTRA553 DO I=1,LONK548 180 CONTINUE 549 C 550 DO 181 JV=1,NTRA 551 DO 181 I=1,LONK 554 552 C 555 553 I3=I2+(I-1)*NUMK … … 579 577 TXZ(I,JV)=ALF1Q(I)*TXZ(I,JV) 580 578 C 581 END DO 582 END DO 583 C 584 END DO 579 181 CONTINUE 580 C 581 18 CONTINUE 585 582 C 586 583 ELSE 587 584 C 588 DO I=1,LON585 DO 190 I=1,LON 589 586 SM(I,K,L)=TM(I) 590 END DO591 DO JV=1,NTRA592 DO I=1,LON587 190 CONTINUE 588 DO 191 JV=1,NTRA 589 DO 1910 I=1,LON 593 590 S0 (I,K,L,JV)=T0 (I,JV) 594 591 SSX (I,K,L,JV)=TX (I,JV) … … 601 598 SYZ(I,K,L,JV)=TYZ(I,JV) 602 599 SZZ(I,K,L,JV)=TZZ(I,JV) 603 END DO604 END DO600 1910 CONTINUE 601 191 CONTINUE 605 602 C 606 603 ENDIF 607 604 C 608 END DO 609 END DO 605 1 CONTINUE 610 606 C 611 607 C ----------- AA Test en fin de ADVX ------ Controle des S* -
LMDZ6/trunk/libf/dyn3d_common/advy.F
r5079 r5084 121 121 enddo 122 122 123 DO L=1,NIV123 DO 1 L=1,NIV 124 124 C 125 125 C place limits on appropriate moments before transport … … 128 128 IF(.NOT.LIMIT) GO TO 11 129 129 C 130 DO JV=1,NTRA131 DO K=1,LAT132 DO I=1,LON130 DO 10 JV=1,NTRA 131 DO 10 K=1,LAT 132 DO 100 I=1,LON 133 133 sy(I,K,L,JV)=SIGN(AMIN1(AMAX1(S0(I,K,L,JV),0.), 134 134 + ABS(sy(I,K,L,JV))),sy(I,K,L,JV)) 135 END DO 136 END DO 137 END DO 135 100 CONTINUE 136 10 CONTINUE 138 137 C 139 138 11 CONTINUE … … 142 141 C 143 142 SM0=0. 144 DO JV=1,NTRA143 DO 20 JV=1,NTRA 145 144 S00(JV)=0. 146 END DO147 C 148 DO I=1,LON149 C 150 IF(VGRI(I,0,L) <=0.) THEN145 20 CONTINUE 146 C 147 DO 21 I=1,LON 148 C 149 IF(VGRI(I,0,L).LE.0.) THEN 151 150 FM(I,0)=-VGRI(I,0,L)*DTY 152 151 ALF(I,0)=FM(I,0)/SM(I,1,L) … … 159 158 ALF1Q(I,0)=ALF1(I,0)*ALF1(I,0) 160 159 C 161 END DO162 C 163 DO JV=1,NTRA164 DO I=1,LON165 C 166 IF(VGRI(I,0,L) <=0.) THEN160 21 CONTINUE 161 C 162 DO 22 JV=1,NTRA 163 DO 220 I=1,LON 164 C 165 IF(VGRI(I,0,L).LE.0.) THEN 167 166 C 168 167 F0(I,0,JV)=ALF(I,0)* … … 177 176 ENDIF 178 177 C 179 END DO180 END DO181 C 182 DO I=1,LON183 IF(VGRI(I,0,L) >0.) THEN178 220 CONTINUE 179 22 CONTINUE 180 C 181 DO 23 I=1,LON 182 IF(VGRI(I,0,L).GT.0.) THEN 184 183 FM(I,0)=VGRI(I,0,L)*DTY 185 184 ALF(I,0)=FM(I,0)/SM0 186 185 ENDIF 187 END DO188 C 189 DO JV=1,NTRA190 DO I=1,LON191 IF(VGRI(I,0,L) >0.) THEN186 23 CONTINUE 187 C 188 DO 24 JV=1,NTRA 189 DO 240 I=1,LON 190 IF(VGRI(I,0,L).GT.0.) THEN 192 191 F0(I,0,JV)=ALF(I,0)*S00(JV) 193 192 ENDIF 194 END DO195 END DO193 240 CONTINUE 194 24 CONTINUE 196 195 C 197 196 C puts the temporary moments Fi into appropriate neighboring boxes 198 197 C 199 DO I=1,LON200 C 201 IF(VGRI(I,0,L) >0.) THEN198 DO 25 I=1,LON 199 C 200 IF(VGRI(I,0,L).GT.0.) THEN 202 201 SM(I,1,L)=SM(I,1,L)+FM(I,0) 203 202 ALF(I,0)=FM(I,0)/SM(I,1,L) … … 206 205 ALF1(I,0)=1.-ALF(I,0) 207 206 C 208 END DO209 C 210 DO JV=1,NTRA211 DO I=1,LON212 C 213 IF(VGRI(I,0,L) >0.) THEN207 25 CONTINUE 208 C 209 DO 26 JV=1,NTRA 210 DO 260 I=1,LON 211 C 212 IF(VGRI(I,0,L).GT.0.) THEN 214 213 C 215 214 TEMPTM=ALF(I,0)*S0(I,1,L,JV)-ALF1(I,0)*F0(I,0,JV) … … 219 218 ENDIF 220 219 C 221 END DO222 END DO220 260 CONTINUE 221 26 CONTINUE 223 222 C 224 223 C calculate flux and moments between adjacent boxes … … 228 227 C flux from KP to K if V(K).lt.0 and from K to KP if V(K).gt.0 229 228 C 230 DO K=1,LAT-1229 DO 30 K=1,LAT-1 231 230 KP=K+1 232 DO I=1,LON233 C 234 IF(VGRI(I,K,L) <0.) THEN231 DO 300 I=1,LON 232 C 233 IF(VGRI(I,K,L).LT.0.) THEN 235 234 FM(I,K)=-VGRI(I,K,L)*DTY 236 235 ALF(I,K)=FM(I,K)/SM(I,KP,L) … … 246 245 ALF1Q(I,K)=ALF1(I,K)*ALF1(I,K) 247 246 C 248 END DO249 END DO250 C 251 DO JV=1,NTRA252 DO K=1,LAT-1247 300 CONTINUE 248 30 CONTINUE 249 C 250 DO 31 JV=1,NTRA 251 DO 31 K=1,LAT-1 253 252 KP=K+1 254 DO I=1,LON255 C 256 IF(VGRI(I,K,L) <0.) THEN253 DO 310 I=1,LON 254 C 255 IF(VGRI(I,K,L).LT.0.) THEN 257 256 C 258 257 F0(I,K,JV)=ALF (I,K)* … … 282 281 ENDIF 283 282 C 284 END DO 285 END DO 286 END DO 283 310 CONTINUE 284 31 CONTINUE 287 285 C 288 286 C puts the temporary moments Fi into appropriate neighboring boxes 289 287 C 290 DO K=1,LAT-1288 DO 32 K=1,LAT-1 291 289 KP=K+1 292 DO I=1,LON293 C 294 IF(VGRI(I,K,L) <0.) THEN290 DO 320 I=1,LON 291 C 292 IF(VGRI(I,K,L).LT.0.) THEN 295 293 SM(I,K,L)=SM(I,K,L)+FM(I,K) 296 294 ALF(I,K)=FM(I,K)/SM(I,K,L) … … 302 300 ALF1(I,K)=1.-ALF(I,K) 303 301 C 304 END DO305 END DO306 C 307 DO JV=1,NTRA308 DO K=1,LAT-1302 320 CONTINUE 303 32 CONTINUE 304 C 305 DO 33 JV=1,NTRA 306 DO 33 K=1,LAT-1 309 307 KP=K+1 310 DO I=1,LON311 C 312 IF(VGRI(I,K,L) <0.) THEN308 DO 330 I=1,LON 309 C 310 IF(VGRI(I,K,L).LT.0.) THEN 313 311 C 314 312 TEMPTM=-ALF(I,K)*S0(I,K,L,JV)+ALF1(I,K)*F0(I,K,JV) … … 330 328 ENDIF 331 329 C 332 END DO 333 END DO 334 END DO 330 330 CONTINUE 331 33 CONTINUE 335 332 C 336 333 C traitement special pour le pole Sud (idem pole Nord) … … 339 336 C 340 337 SM0=0. 341 DO JV=1,NTRA338 DO 40 JV=1,NTRA 342 339 S00(JV)=0. 343 END DO344 C 345 DO I=1,LON346 C 347 IF(VGRI(I,K,L) >=0.) THEN340 40 CONTINUE 341 C 342 DO 41 I=1,LON 343 C 344 IF(VGRI(I,K,L).GE.0.) THEN 348 345 FM(I,K)=VGRI(I,K,L)*DTY 349 346 ALF(I,K)=FM(I,K)/SM(I,K,L) … … 356 353 ALF1Q(I,K)=ALF1(I,K)*ALF1(I,K) 357 354 C 358 END DO359 C 360 DO JV=1,NTRA361 DO I=1,LON362 C 363 IF(VGRI(I,K,L) >=0.) THEN355 41 CONTINUE 356 C 357 DO 42 JV=1,NTRA 358 DO 420 I=1,LON 359 C 360 IF(VGRI(I,K,L).GE.0.) THEN 364 361 F0 (I,K,JV)=ALF(I,K)* 365 362 + ( S0(I,K,L,JV)+ALF1(I,K)*sy(I,K,L,JV) ) … … 372 369 ENDIF 373 370 C 374 END DO375 END DO376 C 377 DO I=1,LON378 IF(VGRI(I,K,L) <0.) THEN371 420 CONTINUE 372 42 CONTINUE 373 C 374 DO 43 I=1,LON 375 IF(VGRI(I,K,L).LT.0.) THEN 379 376 FM(I,K)=-VGRI(I,K,L)*DTY 380 377 ALF(I,K)=FM(I,K)/SM0 381 378 ENDIF 382 END DO383 C 384 DO JV=1,NTRA385 DO I=1,LON386 IF(VGRI(I,K,L) <0.) THEN379 43 CONTINUE 380 C 381 DO 44 JV=1,NTRA 382 DO 440 I=1,LON 383 IF(VGRI(I,K,L).LT.0.) THEN 387 384 F0(I,K,JV)=ALF(I,K)*S00(JV) 388 385 ENDIF 389 END DO390 END DO386 440 CONTINUE 387 44 CONTINUE 391 388 C 392 389 C puts the temporary moments Fi into appropriate neighboring boxes 393 390 C 394 DO I=1,LON395 C 396 IF(VGRI(I,K,L) <0.) THEN391 DO 45 I=1,LON 392 C 393 IF(VGRI(I,K,L).LT.0.) THEN 397 394 SM(I,K,L)=SM(I,K,L)+FM(I,K) 398 395 ALF(I,K)=FM(I,K)/SM(I,K,L) … … 401 398 ALF1(I,K)=1.-ALF(I,K) 402 399 C 403 END DO404 C 405 DO JV=1,NTRA406 DO I=1,LON407 C 408 IF(VGRI(I,K,L) <0.) THEN400 45 CONTINUE 401 C 402 DO 46 JV=1,NTRA 403 DO 460 I=1,LON 404 C 405 IF(VGRI(I,K,L).LT.0.) THEN 409 406 C 410 407 TEMPTM=-ALF(I,K)*S0(I,K,L,JV)+ALF1(I,K)*F0(I,K,JV) … … 414 411 ENDIF 415 412 C 416 END DO417 END DO418 C 419 END DO413 460 CONTINUE 414 46 CONTINUE 415 C 416 1 CONTINUE 420 417 C 421 418 RETURN -
LMDZ6/trunk/libf/dyn3d_common/advyp.F
r5079 r5084 153 153 C-AA 20/10/94 le signe -1 est necessaire car indexation opposee 154 154 155 DO l = 1,llm156 DO j = 1,jjm157 DO i = 1,iip1155 DO 500 l = 1,llm 156 DO 500 j = 1,jjm 157 DO 500 i = 1,iip1 158 158 vgri (i,j,llm+1-l)=-1.*pbarv (i,j,l) 159 END DO 160 END DO 161 END DO 159 500 CONTINUE 162 160 163 161 CAA Initialisation de flux fictifs aux bords sup. des boites pol. … … 173 171 C boucle sur les niveaux 174 172 C 175 DO L=1,NIV173 DO 1 L=1,NIV 176 174 C 177 175 C place limits on appropriate moments before transport … … 180 178 IF(.NOT.LIMIT) GO TO 11 181 179 C 182 DO JV=1,NTRA183 DO K=1,LAT184 DO I=1,LON185 IF(S0(I,K,L,JV) >0.) THEN180 DO 10 JV=1,NTRA 181 DO 10 K=1,LAT 182 DO 100 I=1,LON 183 IF(S0(I,K,L,JV).GT.0.) THEN 186 184 SLPMAX=AMAX1(S0(I,K,L,JV),0.) 187 185 S1MAX=1.5*SLPMAX … … 199 197 SYZ(I,K,L,JV)=0. 200 198 ENDIF 201 END DO 202 END DO 203 END DO 199 100 CONTINUE 200 10 CONTINUE 204 201 C 205 202 11 CONTINUE … … 208 205 C 209 206 SM0=0. 210 DO JV=1,NTRA207 DO 20 JV=1,NTRA 211 208 S00(JV)=0. 212 END DO213 C 214 DO I=1,LON215 C 216 IF(VGRI(I,0,L) <=0.) THEN209 20 CONTINUE 210 C 211 DO 21 I=1,LON 212 C 213 IF(VGRI(I,0,L).LE.0.) THEN 217 214 FM(I,0)=-VGRI(I,0,L)*DTY 218 215 ALF(I,0)=FM(I,0)/SM(I,1,L) … … 228 225 ALF4(I,0)=ALF1(I,0)*ALF1Q(I,0) 229 226 C 230 END DO227 21 CONTINUE 231 228 c print*,'ADVYP 21' 232 229 C 233 DO JV=1,NTRA234 DO I=1,LON235 C 236 IF(VGRI(I,0,L) <=0.) THEN230 DO 22 JV=1,NTRA 231 DO 220 I=1,LON 232 C 233 IF(VGRI(I,0,L).LE.0.) THEN 237 234 C 238 235 F0(I,0,JV)=ALF(I,0)* ( S0(I,1,L,JV)-ALF1(I,0)* … … 256 253 ENDIF 257 254 C 258 END DO259 END DO260 C 261 DO I=1,LON262 IF(VGRI(I,0,L) >0.) THEN255 220 CONTINUE 256 22 CONTINUE 257 C 258 DO 23 I=1,LON 259 IF(VGRI(I,0,L).GT.0.) THEN 263 260 FM(I,0)=VGRI(I,0,L)*DTY 264 261 ALF(I,0)=FM(I,0)/SM0 265 262 ENDIF 266 END DO267 C 268 DO JV=1,NTRA269 DO I=1,LON270 IF(VGRI(I,0,L) >0.) THEN263 23 CONTINUE 264 C 265 DO 24 JV=1,NTRA 266 DO 240 I=1,LON 267 IF(VGRI(I,0,L).GT.0.) THEN 271 268 F0(I,0,JV)=ALF(I,0)*S00(JV) 272 269 ENDIF 273 END DO274 END DO270 240 CONTINUE 271 24 CONTINUE 275 272 C 276 273 C puts the temporary moments Fi into appropriate neighboring boxes 277 274 C 278 275 c print*,'av ADVYP 25' 279 DO I=1,LON280 C 281 IF(VGRI(I,0,L) >0.) THEN276 DO 25 I=1,LON 277 C 278 IF(VGRI(I,0,L).GT.0.) THEN 282 279 SM(I,1,L)=SM(I,1,L)+FM(I,0) 283 280 ALF(I,0)=FM(I,0)/SM(I,1,L) … … 290 287 ALF3(I,0)=ALF1(I,0)*ALF(I,0) 291 288 C 292 END DO289 25 CONTINUE 293 290 c print*,'av ADVYP 25' 294 291 C 295 DO JV=1,NTRA296 DO I=1,LON297 C 298 IF(VGRI(I,0,L) >0.) THEN292 DO 26 JV=1,NTRA 293 DO 260 I=1,LON 294 C 295 IF(VGRI(I,0,L).GT.0.) THEN 299 296 C 300 297 TEMPTM=ALF(I,0)*S0(I,1,L,JV)-ALF1(I,0)*F0(I,0,JV) … … 308 305 ENDIF 309 306 C 310 END DO311 END DO307 260 CONTINUE 308 26 CONTINUE 312 309 C 313 310 C calculate flux and moments between adjacent boxes … … 318 315 C 319 316 c print*,'av ADVYP 30' 320 DO K=1,LAT-1317 DO 30 K=1,LAT-1 321 318 KP=K+1 322 DO I=1,LON323 C 324 IF(VGRI(I,K,L) <0.) THEN319 DO 300 I=1,LON 320 C 321 IF(VGRI(I,K,L).LT.0.) THEN 325 322 FM(I,K)=-VGRI(I,K,L)*DTY 326 323 ALF(I,K)=FM(I,K)/SM(I,KP,L) … … 339 336 ALF4(I,K)=ALF1(I,K)*ALF1Q(I,K) 340 337 C 341 END DO342 END DO338 300 CONTINUE 339 30 CONTINUE 343 340 c print*,'ap ADVYP 30' 344 341 C 345 DO JV=1,NTRA346 DO K=1,LAT-1342 DO 31 JV=1,NTRA 343 DO 31 K=1,LAT-1 347 344 KP=K+1 348 DO I=1,LON349 C 350 IF(VGRI(I,K,L) <0.) THEN345 DO 310 I=1,LON 346 C 347 IF(VGRI(I,K,L).LT.0.) THEN 351 348 C 352 349 F0 (I,K,JV)=ALF (I,K)* ( S0(I,KP,L,JV)-ALF1(I,K)* … … 406 403 ENDIF 407 404 C 408 END DO 409 END DO 410 END DO 405 310 CONTINUE 406 31 CONTINUE 411 407 c print*,'ap ADVYP 31' 412 408 C 413 409 C puts the temporary moments Fi into appropriate neighboring boxes 414 410 C 415 DO K=1,LAT-1411 DO 32 K=1,LAT-1 416 412 KP=K+1 417 DO I=1,LON418 C 419 IF(VGRI(I,K,L) <0.) THEN413 DO 320 I=1,LON 414 C 415 IF(VGRI(I,K,L).LT.0.) THEN 420 416 SM(I,K,L)=SM(I,K,L)+FM(I,K) 421 417 ALF(I,K)=FM(I,K)/SM(I,K,L) … … 431 427 ALF3(I,K)=ALF1(I,K)*ALF(I,K) 432 428 C 433 END DO434 END DO429 320 CONTINUE 430 32 CONTINUE 435 431 c print*,'ap ADVYP 32' 436 432 C 437 DO JV=1,NTRA438 DO K=1,LAT-1433 DO 33 JV=1,NTRA 434 DO 33 K=1,LAT-1 439 435 KP=K+1 440 DO I=1,LON441 C 442 IF(VGRI(I,K,L) <0.) THEN436 DO 330 I=1,LON 437 C 438 IF(VGRI(I,K,L).LT.0.) THEN 443 439 C 444 440 TEMPTM=-ALF(I,K)*S0(I,K,L,JV)+ALF1(I,K)*F0(I,K,JV) … … 478 474 ENDIF 479 475 C 480 END DO 481 END DO 482 END DO 476 330 CONTINUE 477 33 CONTINUE 483 478 c print*,'ap ADVYP 33' 484 479 C … … 488 483 C 489 484 SM0=0. 490 DO JV=1,NTRA485 DO 40 JV=1,NTRA 491 486 S00(JV)=0. 492 END DO493 C 494 DO I=1,LON495 C 496 IF(VGRI(I,K,L) >=0.) THEN487 40 CONTINUE 488 C 489 DO 41 I=1,LON 490 C 491 IF(VGRI(I,K,L).GE.0.) THEN 497 492 FM(I,K)=VGRI(I,K,L)*DTY 498 493 ALF(I,K)=FM(I,K)/SM(I,K,L) … … 508 503 ALF4(I,K)=ALF1(I,K)*ALF1Q(I,K) 509 504 C 510 END DO505 41 CONTINUE 511 506 c print*,'ap ADVYP 41' 512 507 C 513 DO JV=1,NTRA514 DO I=1,LON515 C 516 IF(VGRI(I,K,L) >=0.) THEN508 DO 42 JV=1,NTRA 509 DO 420 I=1,LON 510 C 511 IF(VGRI(I,K,L).GE.0.) THEN 517 512 F0 (I,K,JV)=ALF(I,K)* ( S0(I,K,L,JV)+ALF1(I,K)* 518 513 + ( SY(I,K,L,JV)+ALF2(I,K)*SYY(I,K,L,JV) ) ) … … 532 527 ENDIF 533 528 C 534 END DO535 END DO529 420 CONTINUE 530 42 CONTINUE 536 531 c print*,'ap ADVYP 42' 537 532 C 538 DO I=1,LON539 IF(VGRI(I,K,L) <0.) THEN533 DO 43 I=1,LON 534 IF(VGRI(I,K,L).LT.0.) THEN 540 535 FM(I,K)=-VGRI(I,K,L)*DTY 541 536 ALF(I,K)=FM(I,K)/SM0 542 537 ENDIF 543 END DO538 43 CONTINUE 544 539 c print*,'ap ADVYP 43' 545 540 C 546 DO JV=1,NTRA547 DO I=1,LON548 IF(VGRI(I,K,L) <0.) THEN541 DO 44 JV=1,NTRA 542 DO 440 I=1,LON 543 IF(VGRI(I,K,L).LT.0.) THEN 549 544 F0(I,K,JV)=ALF(I,K)*S00(JV) 550 545 ENDIF 551 END DO552 END DO546 440 CONTINUE 547 44 CONTINUE 553 548 C 554 549 C puts the temporary moments Fi into appropriate neighboring boxes 555 550 C 556 DO I=1,LON557 C 558 IF(VGRI(I,K,L) <0.) THEN551 DO 45 I=1,LON 552 C 553 IF(VGRI(I,K,L).LT.0.) THEN 559 554 SM(I,K,L)=SM(I,K,L)+FM(I,K) 560 555 ALF(I,K)=FM(I,K)/SM(I,K,L) … … 567 562 ALF3(I,K)=ALF1(I,K)*ALF(I,K) 568 563 C 569 END DO564 45 CONTINUE 570 565 c print*,'ap ADVYP 45' 571 566 C 572 DO JV=1,NTRA573 DO I=1,LON574 C 575 IF(VGRI(I,K,L) <0.) THEN567 DO 46 JV=1,NTRA 568 DO 460 I=1,LON 569 C 570 IF(VGRI(I,K,L).LT.0.) THEN 576 571 C 577 572 TEMPTM=-ALF(I,K)*S0(I,K,L,JV)+ALF1(I,K)*F0(I,K,JV) … … 585 580 ENDIF 586 581 C 587 END DO588 END DO582 460 CONTINUE 583 46 CONTINUE 589 584 c print*,'ap ADVYP 46' 590 585 C 591 END DO586 1 CONTINUE 592 587 593 588 c-------------------------------------------------- -
LMDZ6/trunk/libf/dyn3d_common/advz.F
r5079 r5084 117 117 C Conversion du flux de masse en kg.s-1 118 118 119 DO l = 1,llm120 DO j = 1,jjp1121 DO i = 1,iip1119 DO 500 l = 1,llm 120 DO 500 j = 1,jjp1 121 DO 500 i = 1,iip1 122 122 c wgri (i,j,llm+1-l) = w (i,j,l) / g 123 123 wgri (i,j,llm+1-l) = w (i,j,l) … … 125 125 c wgri (i,j,l) = 0.1 ! w (i,j,l) 126 126 c wgri (i,j,llm) = 0. ! a detruire ult. 127 END DO 128 END DO 129 END DO 127 500 CONTINUE 130 128 DO j = 1,jjp1 131 129 DO i = 1,iip1 … … 139 137 C boucle sur les latitudes 140 138 C 141 DO K=1,LAT139 DO 1 K=1,LAT 142 140 C 143 141 C place limits on appropriate moments before transport … … 146 144 IF(.NOT.LIMIT) GO TO 101 147 145 C 148 DO JV=1,NTRA149 DO L=1,NIV150 DO I=1,LON146 DO 10 JV=1,NTRA 147 DO 10 L=1,NIV 148 DO 100 I=1,LON 151 149 sz(I,K,L,JV)=SIGN(AMIN1(AMAX1(S0(I,K,L,JV),0.), 152 150 + ABS(sz(I,K,L,JV))),sz(I,K,L,JV)) 153 END DO 154 END DO 155 END DO 151 100 CONTINUE 152 10 CONTINUE 156 153 C 157 154 101 CONTINUE … … 165 162 C 2- reajusts moments remaining in the box 166 163 C 167 DO L=1,NIV-1164 DO 11 L=1,NIV-1 168 165 LP=L+1 169 166 C 170 DO I=1,LON171 C 172 IF(WGRI(I,K,L) <0.) THEN167 DO 110 I=1,LON 168 C 169 IF(WGRI(I,K,L).LT.0.) THEN 173 170 FM(I,L)=-WGRI(I,K,L)*DTZ 174 171 ALF(I)=FM(I,L)/SM(I,K,LP) … … 184 181 ALF1Q(I)=ALF1(I)*ALF1(I) 185 182 C 186 END DO187 C 188 DO JV=1,NTRA189 DO I=1,LON190 C 191 IF(WGRI(I,K,L) <0.) THEN183 110 CONTINUE 184 C 185 DO 111 JV=1,NTRA 186 DO 1110 I=1,LON 187 C 188 IF(WGRI(I,K,L).LT.0.) THEN 192 189 C 193 190 F0(I,L,JV)=ALF (I)*( S0(I,K,LP,JV)-ALF1(I)*sz(I,K,LP,JV) ) … … 215 212 ENDIF 216 213 C 217 END DO218 END DO219 C 220 END DO214 1110 CONTINUE 215 111 CONTINUE 216 C 217 11 CONTINUE 221 218 C 222 219 C puts the temporary moments Fi into appropriate neighboring boxes 223 220 C 224 DO L=1,NIV-1221 DO 12 L=1,NIV-1 225 222 LP=L+1 226 223 C 227 DO I=1,LON228 C 229 IF(WGRI(I,K,L) <0.) THEN224 DO 120 I=1,LON 225 C 226 IF(WGRI(I,K,L).LT.0.) THEN 230 227 SM(I,K,L)=SM(I,K,L)+FM(I,L) 231 228 ALF(I)=FM(I,L)/SM(I,K,L) … … 239 236 ALF1Q(I)=ALF1(I)*ALF1(I) 240 237 C 241 END DO242 C 243 DO JV=1,NTRA244 DO I=1,LON245 C 246 IF(WGRI(I,K,L) <0.) THEN238 120 CONTINUE 239 C 240 DO 121 JV=1,NTRA 241 DO 1210 I=1,LON 242 C 243 IF(WGRI(I,K,L).LT.0.) THEN 247 244 C 248 245 TEMPTM=-ALF(I)*S0(I,K,L,JV)+ALF1(I)*F0(I,L,JV) … … 263 260 ENDIF 264 261 C 265 END DO266 END DO267 C 268 END DO262 1210 CONTINUE 263 121 CONTINUE 264 C 265 12 CONTINUE 269 266 C 270 267 C fin de la boucle principale sur les latitudes 271 268 C 272 END DO269 1 CONTINUE 273 270 C 274 271 C------------------------------------------------------------- -
LMDZ6/trunk/libf/dyn3d_common/advzp.F
r5079 r5084 135 135 C Conversion des flux de masses en kg 136 136 137 DO l = 1,llm138 DO j = 1,jjp1139 DO i = 1,iip1137 DO 500 l = 1,llm 138 DO 500 j = 1,jjp1 139 DO 500 i = 1,iip1 140 140 wgri (i,j,llm+1-l) = w (i,j,l) 141 END DO 142 END DO 143 END DO 141 500 CONTINUE 144 142 do j=1,jjp1 145 143 do i=1,iip1 … … 156 154 C boucle sur les latitudes 157 155 C 158 DO K=1,LAT156 DO 1 K=1,LAT 159 157 C 160 158 C place limits on appropriate moments before transport … … 163 161 IF(.NOT.LIMIT) GO TO 101 164 162 C 165 DO JV=1,NTRA166 DO L=1,NIV167 DO I=1,LON168 IF(S0(I,K,L,JV) >0.) THEN163 DO 10 JV=1,NTRA 164 DO 10 L=1,NIV 165 DO 100 I=1,LON 166 IF(S0(I,K,L,JV).GT.0.) THEN 169 167 SLPMAX=S0(I,K,L,JV) 170 168 S1MAX =1.5*SLPMAX … … 182 180 SYZ(I,K,L,JV)=0. 183 181 ENDIF 184 END DO 185 END DO 186 END DO 182 100 CONTINUE 183 10 CONTINUE 187 184 C 188 185 101 CONTINUE … … 196 193 C 2- reajusts moments remaining in the box 197 194 C 198 DO L=1,NIV-1195 DO 11 L=1,NIV-1 199 196 LP=L+1 200 197 C 201 DO I=1,LON202 C 203 IF(WGRI(I,K,L) <0.) THEN198 DO 110 I=1,LON 199 C 200 IF(WGRI(I,K,L).LT.0.) THEN 204 201 FM(I,L)=-WGRI(I,K,L)*DTZ 205 202 ALF(I)=FM(I,L)/SM(I,K,LP) … … 218 215 ALF4 (I)=ALF1(I)*ALF1Q(I) 219 216 C 220 END DO221 C 222 DO JV=1,NTRA223 DO I=1,LON224 C 225 IF(WGRI(I,K,L) <0.) THEN217 110 CONTINUE 218 C 219 DO 111 JV=1,NTRA 220 DO 1110 I=1,LON 221 C 222 IF(WGRI(I,K,L).LT.0.) THEN 226 223 C 227 224 F0 (I,L,JV)=ALF (I)* ( S0(I,K,LP,JV)-ALF1(I)* … … 276 273 ENDIF 277 274 C 278 END DO279 END DO280 C 281 END DO275 1110 CONTINUE 276 111 CONTINUE 277 C 278 11 CONTINUE 282 279 C 283 280 C puts the temporary moments Fi into appropriate neighboring boxes 284 281 C 285 DO L=1,NIV-1282 DO 12 L=1,NIV-1 286 283 LP=L+1 287 284 C 288 DO I=1,LON289 C 290 IF(WGRI(I,K,L) <0.) THEN285 DO 120 I=1,LON 286 C 287 IF(WGRI(I,K,L).LT.0.) THEN 291 288 SM(I,K,L)=SM(I,K,L)+FM(I,L) 292 289 ALF(I)=FM(I,L)/SM(I,K,L) … … 302 299 ALF3(I)=ALF1(I)-ALF(I) 303 300 C 304 END DO305 C 306 DO JV=1,NTRA307 DO I=1,LON308 C 309 IF(WGRI(I,K,L) <0.) THEN301 120 CONTINUE 302 C 303 DO 121 JV=1,NTRA 304 DO 1210 I=1,LON 305 C 306 IF(WGRI(I,K,L).LT.0.) THEN 310 307 C 311 308 TEMPTM=-ALF(I)*S0(I,K,L,JV)+ALF1(I)*F0(I,L,JV) … … 345 342 ENDIF 346 343 C 347 END DO348 END DO349 C 350 END DO344 1210 CONTINUE 345 121 CONTINUE 346 C 347 12 CONTINUE 351 348 C 352 349 C fin de la boucle principale sur les latitudes 353 350 C 354 END DO351 1 CONTINUE 355 352 C 356 353 DO l = 1,llm -
LMDZ6/trunk/libf/dyn3d_common/comdissip.h
r5077 r5084 6 6 7 7 COMMON/comdissip/ & 8 & coefdis,tetavel,tetatemp,gamdissip,niterdis8 & niterdis,coefdis,tetavel,tetatemp,gamdissip 9 9 10 10 -
LMDZ6/trunk/libf/dyn3d_common/extrapol.F
r5079 r5084 58 58 200 CONTINUE 59 59 incre = incre + 1 60 DO j = 1, kylat61 DO i = 1, kxlon62 IF (pfild(i,j) >zwmsk) THEN60 DO 99999 j = 1, kylat 61 DO 99999 i = 1, kxlon 62 IF (pfild(i,j).GT. zwmsk) THEN 63 63 pwork(i,j) = pfild(i,j) 64 64 inbor = 0 … … 89 89 C 90 90 C* Correct latitude bounds if southernmost or northernmost points 91 IF (j ==1) ideb = 492 IF (j ==kylat) ifin = 691 IF (j .EQ. 1) ideb = 4 92 IF (j .EQ. kylat) ifin = 6 93 93 C 94 94 C* Account for periodicity in longitude 95 95 C 96 96 IF (ldper) THEN 97 IF (i ==kxlon) THEN97 IF (i .EQ. kxlon) THEN 98 98 ix(3) = 1 99 99 ix(6) = 1 100 100 ix(9) = 1 101 ELSE IF (i ==1) THEN101 ELSE IF (i .EQ. 1) THEN 102 102 ix(1) = kxlon 103 103 ix(4) = kxlon … … 105 105 ENDIF 106 106 ELSE 107 IF (i ==1) THEN107 IF (i .EQ. 1) THEN 108 108 ix(1) = i 109 109 ix(2) = i + 1 … … 113 113 ix(6) = i + 1 114 114 ENDIF 115 IF (i ==kxlon) THEN115 IF (i .EQ. kxlon) THEN 116 116 ix(1) = i -1 117 117 ix(2) = i … … 122 122 ENDIF 123 123 C 124 IF (i == 1 .OR. i ==kxlon) THEN124 IF (i .EQ. 1 .OR. i .EQ. kxlon) THEN 125 125 jy(1) = MAX (1,j-1) 126 126 jy(2) = MAX (1,j-1) … … 132 132 ideb = 1 133 133 ifin = 6 134 IF (j ==1) ideb = 3135 IF (j ==kylat) ifin = 4134 IF (j .EQ. 1) ideb = 3 135 IF (j .EQ. kylat) ifin = 4 136 136 ENDIF 137 137 ENDIF ! end for ldper test … … 139 139 C* Find unmasked neighbors 140 140 C 141 DO k = ideb, ifin141 DO 230 k = ideb, ifin 142 142 zmask(k) = 0. 143 143 ilon = ix(k) 144 144 jlat = jy(k) 145 IF (pfild(ilon,jlat) <zwmsk) THEN145 IF (pfild(ilon,jlat) .LT. zwmsk) THEN 146 146 zmask(k) = 1. 147 147 inbor = inbor + 1 148 148 ENDIF 149 END DO149 230 CONTINUE 150 150 C 151 151 C* Not enough points around point P are unmasked; interpolation on P 152 152 C will be done in a future call to extrap. 153 153 C 154 IF (inbor >=knbor) THEN154 IF (inbor .GE. knbor) THEN 155 155 pwork(i,j) = 0. 156 156 DO k = ideb, ifin … … 163 163 C 164 164 ENDIF 165 END DO 166 END DO 165 99999 CONTINUE 167 166 C 168 167 C* 3. Writing back unmasked field in pfild … … 177 176 DO j = 1, kylat 178 177 DO i = 1, kxlon 179 IF (pwork(i,j) >zwmsk) idoit = idoit + 1178 IF (pwork(i,j) .GT. zwmsk) idoit = idoit + 1 180 179 pfild(i,j) = pwork(i,j) 181 180 ENDDO 182 181 ENDDO 183 182 c 184 IF (idoit /=0) GOTO 200183 IF (idoit .ne. 0) GOTO 200 185 184 ccc PRINT*, "Number of extrapolation steps incre =", incre 186 185 c -
LMDZ6/trunk/libf/dyn3d_common/grilles_gcm_netcdf_sub.F90
r5075 r5084 14 14 USE comconst_mod, ONLY: cpp, kappa, g, omeg, daysec, rad, pi 15 15 USE comvert_mod, ONLY: presnivs, preff, pa 16 USE lmdz_netcdf, ONLY: nf90_def_var, nf90_int, nf90_float, nf90_put_var, nf_enddef, & 17 nf_put_att_text,nf_def_dim,nf_64bit_offset,nf_clobber,nf_create 16 use netcdf, only: nf90_def_var, nf90_int, nf90_float, nf90_put_var 18 17 19 18 IMPLICIT NONE … … 22 21 INCLUDE "paramet.h" 23 22 INCLUDE "comgeom.h" 23 INCLUDE "netcdf.inc" 24 24 25 25 !======================== … … 232 232 233 233 SUBROUTINE handle_err(status) 234 USE lmdz_netcdf, ONLY: nf_strerror234 INCLUDE "netcdf.inc" 235 235 236 236 INTEGER status 237 IF (status /=nf_noerr) THEN237 IF (status.NE.nf_noerr) THEN 238 238 PRINT *,NF_STRERROR(status) 239 239 CALL abort_gcm('grilles_gcm_netcdf','netcdf error',1) -
LMDZ6/trunk/libf/dyn3d_common/ppm3d.F
r5079 r5084 68 68 implicit none 69 69 70 c rajout de d �clarations70 c rajout de déclarations 71 71 c integer Jmax,kmax,ndt0,nstep,k,j,i,ic,l,js,jn,imh,iad,jad,krd 72 72 c integer iu,iiu,j2,jmr,js0,jt … … 315 315 C 316 316 C *********** Initialization ********************** 317 if(NSTEP ==1) then317 if(NSTEP.eq.1) then 318 318 c 319 319 write(6,*) '------------------------------------ ' … … 325 325 C 326 326 C controles sur les parametres 327 if(NLAY <6) then327 if(NLAY.LT.6) then 328 328 write(6,*) 'NLAY must be >= 6' 329 329 stop 330 330 endif 331 if (JNP <NLAY) then331 if (JNP.LT.NLAY) then 332 332 write(6,*) 'JNP must be >= NLAY' 333 333 stop 334 334 endif 335 335 IMRD2=mod(IMR,2) 336 if (j1 ==2.and.IMRD2/=0) then336 if (j1.eq.2.and.IMRD2.NE.0) then 337 337 write(6,*) 'if j1=2 IMR must be an even integer' 338 338 stop … … 340 340 341 341 C 342 if(Jmax <JNP .or. Kmax<NLAY) then342 if(Jmax.lt.JNP .or. Kmax.lt.NLAY) then 343 343 write(6,*) 'Jmax or Kmax is too small' 344 344 stop … … 354 354 DP = PI / REAL(JMR) 355 355 C 356 if(IGD ==0) then356 if(IGD.eq.0) then 357 357 C Compute analytic cosine at cell edges 358 358 call cosa(cosp,cose,JNP,PI,DP) … … 362 362 endif 363 363 C 364 do J=2,JMR 365 acosp(j) = 1. / cosp(j) 366 END DO 364 do 15 J=2,JMR 365 15 acosp(j) = 1. / cosp(j) 367 366 C 368 367 C Inverse of the Scaled polar cap area. … … 373 372 endif 374 373 C 375 if(NDT0 /=NDT) then374 if(NDT0 .ne. NDT) then 376 375 DT = NDT 377 376 NDT0 = NDT 378 377 379 if(Umax <180.) then378 if(Umax .lt. 180.) then 380 379 write(6,*) 'Umax may be too small!' 381 380 endif … … 383 382 MaxDT = DP*AE / abs(Umax) + 0.5 384 383 write(6,*)'Largest time step for max(V)=',Umax,' is ',MaxDT 385 if(MaxDT <abs(NDT)) then384 if(MaxDT .lt. abs(NDT)) then 386 385 write(6,*) 'Warning!!! NDT maybe too large!' 387 386 endif 388 387 C 389 if(CR1 >=0.95) then388 if(CR1.ge.0.95) then 390 389 JS0 = 0 391 390 JN0 = 0 … … 430 429 431 430 C 432 if(j1 /=2) then433 DO IC=1,NC434 DO L=1,NLAY435 DO I=1,IMR431 if(j1.ne.2) then 432 DO 40 IC=1,NC 433 DO 40 L=1,NLAY 434 DO 40 I=1,IMR 436 435 Q(I, 2,L,IC) = Q(I, 1,L,IC) 437 Q(I,JMR,L,IC) = Q(I,JNP,L,IC) 438 END DO 439 END DO 440 END DO 436 40 Q(I,JMR,L,IC) = Q(I,JNP,L,IC) 441 437 endif 442 438 C 443 439 C Compute "tracer density" 444 DO IC=1,NC 445 DO k=1,NLAY 446 DO j=1,JNP 447 DO i=1,IMR 448 DQ(i,j,k,IC) = Q(i,j,k,IC)*delp1(i,j,k) 449 END DO 450 END DO 451 END DO 452 END DO 453 C 454 do k=1,NLAY 455 C 456 if(IGD==0) then 440 DO 550 IC=1,NC 441 DO 44 k=1,NLAY 442 DO 44 j=1,JNP 443 DO 44 i=1,IMR 444 44 DQ(i,j,k,IC) = Q(i,j,k,IC)*delp1(i,j,k) 445 550 continue 446 C 447 do 1500 k=1,NLAY 448 C 449 if(IGD.eq.0) then 457 450 C Convert winds on A-Grid to Courant # on C-Grid. 458 451 call A2C(U(1,1,k),V(1,1,k),IMR,JMR,j1,j2,CRX,CRY,dtdx5,DTDY5) 459 452 else 460 453 C Convert winds on C-grid to Courant # 461 do j=j1,j2 462 do i=2,IMR 463 CRX(i,J) = dtdx(j)*U(i-1,j,k) 464 END DO 465 END DO 454 do 45 j=j1,j2 455 do 45 i=2,IMR 456 45 CRX(i,J) = dtdx(j)*U(i-1,j,k) 466 457 467 458 C 468 do j=j1,j2 469 CRX(1,J) = dtdx(j)*U(IMR,j,k) 470 END DO 471 C 472 do i=1,IMR*JMR 473 CRY(i,2) = DTDY*V(i,1,k) 474 END DO 459 do 50 j=j1,j2 460 50 CRX(1,J) = dtdx(j)*U(IMR,j,k) 461 C 462 do 55 i=1,IMR*JMR 463 55 CRY(i,2) = DTDY*V(i,1,k) 475 464 endif 476 465 C … … 481 470 do j=JS0,j1+1,-1 482 471 do i=1,IMR 483 if(abs(CRX(i,j)) >1.) then472 if(abs(CRX(i,j)).GT.1.) then 484 473 JS = j 485 474 go to 2222 … … 491 480 do j=JN0,j2-1 492 481 do i=1,IMR 493 if(abs(CRX(i,j)) >1.) then482 if(abs(CRX(i,j)).GT.1.) then 494 483 JN = j 495 484 go to 2233 … … 499 488 2233 continue 500 489 C 501 if(j1 /=2) then ! Enlarged polar cap.490 if(j1.ne.2) then ! Enlarged polar cap. 502 491 do i=1,IMR 503 492 DPI(i, 2,k) = 0. … … 516 505 enddo 517 506 C 518 do j=j1,j2 519 DO i=1,IMR 520 DPI(i,j,k) = (ymass(i,j) - ymass(i,j+1)) * acosp(j) 521 END DO 522 END DO 507 do 95 j=j1,j2 508 DO 95 i=1,IMR 509 95 DPI(i,j,k) = (ymass(i,j) - ymass(i,j+1)) * acosp(j) 523 510 C 524 511 C Poles … … 549 536 enddo 550 537 C 551 do j=j1,j2 552 DO i=1,IMR 553 xmass(i,j) = PU(i,j)*CRX(i,j) 554 END DO 555 END DO 556 C 557 DO j=j1,j2 558 DO i=1,IMR-1 559 DPI(i,j,k) = DPI(i,j,k) + xmass(i,j) - xmass(i+1,j) 560 END DO 561 END DO 562 C 563 DO j=j1,j2 564 DPI(IMR,j,k) = DPI(IMR,j,k) + xmass(IMR,j) - xmass(1,j) 565 END DO 538 do 110 j=j1,j2 539 DO 110 i=1,IMR 540 110 xmass(i,j) = PU(i,j)*CRX(i,j) 541 C 542 DO 120 j=j1,j2 543 DO 120 i=1,IMR-1 544 120 DPI(i,j,k) = DPI(i,j,k) + xmass(i,j) - xmass(i+1,j) 545 C 546 DO 130 j=j1,j2 547 130 DPI(IMR,j,k) = DPI(IMR,j,k) + xmass(IMR,j) - xmass(1,j) 566 548 C 567 549 DO j=j1,j2 … … 587 569 enddo 588 570 C 589 if(j1 ==2) then571 if(j1.eq.2) then 590 572 IMH = IMR/2 591 573 do i=1,IMH … … 600 582 C 601 583 C ****6***0*********0*********0*********0*********0*********0**********72 602 do IC=1,NC584 do 1000 IC=1,NC 603 585 C 604 586 do i=1,IMJM … … 608 590 C 609 591 C E-W advective cross term 610 do j=J1,J2611 if(J >JS .and. J<JN) GO TO 250592 do 250 j=J1,J2 593 if(J.GT.JS .and. J.LT.JN) GO TO 250 612 594 C 613 595 do i=1,IMR … … 620 602 enddo 621 603 C 622 DO i=1,IMR604 DO 230 i=1,IMR 623 605 iu = UA(i,j) 624 606 ru = UA(i,j) - iu 625 607 iiu = i-iu 626 if(UA(i,j) >=0.) then608 if(UA(i,j).GE.0.) then 627 609 wk1(i,j,1) = qtmp(iiu)+ru*(qtmp(iiu-1)-qtmp(iiu)) 628 610 else … … 630 612 endif 631 613 wk1(i,j,1) = wk1(i,j,1) - qtmp(i) 632 END DO 614 230 continue 633 615 250 continue 634 END DO 635 C 636 if(JN/=0) then 616 C 617 if(JN.ne.0) then 637 618 do j=JS+1,JN-1 638 619 C … … 664 645 if(cross) then 665 646 C Add cross terms in the vertical direction. 666 if(IORD >=2) then647 if(IORD .GE. 2) then 667 648 iad = 2 668 649 else … … 670 651 endif 671 652 C 672 if(JORD >=2) then653 if(JORD .GE. 2) then 673 654 jad = 2 674 655 else … … 690 671 & DC2,ymass,WK1(1,1,3),wk1(1,1,4),WK1(1,1,5),WK1(1,1,6),JORD) 691 672 C 692 END DO 693 END DO 673 1000 continue 674 1500 continue 694 675 C 695 676 C ******* Compute vertical mass flux (same unit as PS) *********** … … 697 678 C 1st step: compute total column mass CONVERGENCE. 698 679 C 699 do j=1,JNP 700 do i=1,IMR 701 CRY(i,j) = DPI(i,j,1) 702 END DO 703 END DO 704 C 705 do k=2,NLAY 706 do j=1,JNP 707 do i=1,IMR 680 do 320 j=1,JNP 681 do 320 i=1,IMR 682 320 CRY(i,j) = DPI(i,j,1) 683 C 684 do 330 k=2,NLAY 685 do 330 j=1,JNP 686 do 330 i=1,IMR 708 687 CRY(i,j) = CRY(i,j) + DPI(i,j,k) 709 END DO 710 END DO 711 END DO 712 C 713 do j=1,JNP 714 do i=1,IMR 688 330 continue 689 C 690 do 360 j=1,JNP 691 do 360 i=1,IMR 715 692 C 716 693 C 2nd step: compute PS2 (PS at n+1) using the hydrostatic assumption. … … 723 700 W(i,j,1) = DPI(i,j,1) - DBK(1)*CRY(i,j) 724 701 W(i,j,NLAY) = 0. 725 END DO 726 END DO 727 C 728 do k=2,NLAY-1 729 do j=1,JNP 730 do i=1,IMR 702 360 continue 703 C 704 do 370 k=2,NLAY-1 705 do 370 j=1,JNP 706 do 370 i=1,IMR 731 707 W(i,j,k) = W(i,j,k-1) + DPI(i,j,k) - DBK(k)*CRY(i,j) 732 END DO 733 END DO 734 END DO 735 C 736 DO k=1,NLAY 737 DO j=1,JNP 738 DO i=1,IMR 708 370 continue 709 C 710 DO 380 k=1,NLAY 711 DO 380 j=1,JNP 712 DO 380 i=1,IMR 739 713 delp2(i,j,k) = DAP(k) + DBK(k)*PS2(i,j) 740 END DO 741 END DO 742 END DO 714 380 continue 743 715 C 744 716 KRD = max(3, KORD) 745 do IC=1,NC717 do 4000 IC=1,NC 746 718 C 747 719 C****6***0*********0*********0*********0*********0*********0**********72 … … 766 738 enddo 767 739 C 768 if(j1 /=2) then769 DO k=1,NLAY770 DO I=1,IMR771 c j=1 c'est le p �le Sud, j=JNP c'est le p�le Nord740 if(j1.ne.2) then 741 DO 400 k=1,NLAY 742 DO 400 I=1,IMR 743 c j=1 c'est le pôle Sud, j=JNP c'est le pôle Nord 772 744 Q(I, 2,k,IC) = Q(I, 1,k,IC) 773 745 Q(I,JMR,k,IC) = Q(I,JNP,k,IC) 774 END DO 775 END DO 776 endif 777 END DO 778 C 779 if(j1/=2) then 780 DO k=1,NLAY 781 DO i=1,IMR 746 400 CONTINUE 747 endif 748 4000 continue 749 C 750 if(j1.ne.2) then 751 DO 5000 k=1,NLAY 752 DO 5000 i=1,IMR 782 753 W(i, 2,k) = W(i, 1,k) 783 754 W(i,JMR,k) = W(i,JNP,k) 784 END DO 785 END DO 755 5000 continue 786 756 endif 787 757 C … … 815 785 C ****6***0*********0*********0*********0*********0*********0**********72 816 786 C 817 do k=1,NLAYM1818 do i=1,IMJM787 do 1000 k=1,NLAYM1 788 do 1000 i=1,IMJM 819 789 DQDT(i,1,k) = P(i,1,k+1) - P(i,1,k) 820 END DO 821 END DO 822 C 823 DO k=2,NLAYM1 824 DO I=1,IMJM 790 1000 continue 791 C 792 DO 1220 k=2,NLAYM1 793 DO 1220 I=1,IMJM 825 794 c0 = delp(i,1,k) / (delp(i,1,k-1)+delp(i,1,k)+delp(i,1,k+1)) 826 795 c1 = (delp(i,1,k-1)+0.5*delp(i,1,k))/(delp(i,1,k+1)+delp(i,1,k)) … … 830 799 Qmin = P(i,1,k) - min(P(i,1,k-1),P(i,1,k),P(i,1,k+1)) 831 800 DC(i,1,k) = sign(min(abs(tmp),Qmax,Qmin), tmp) 832 END DO 833 END DO 801 1220 CONTINUE 834 802 835 803 C … … 838 806 C ****6***0*********0*********0*********0*********0*********0**********72 839 807 C 840 DO j=1,JNP841 if((j ==2 .or. j==JMR) .and. j1/=2) goto 2000808 DO 2000 j=1,JNP 809 if((j.eq.2 .or. j.eq.JMR) .and. j1.ne.2) goto 2000 842 810 C 843 811 DO k=1,NLAY … … 860 828 C 861 829 C First guess top edge value 862 DO i=1,IMR830 DO 10 i=1,IMR 863 831 C three-cell PPM 864 832 C Compute a,b, and c of q = aP**2 + bP + c using cell averages and delp … … 872 840 C 873 841 C Check if change sign 874 if(wk1(i,1)*AL(i,1) <=0.) then842 if(wk1(i,1)*AL(i,1).le.0.) then 875 843 AL(i,1) = 0. 876 844 flux(i,1) = 0. … … 878 846 flux(i,1) = wk1(i,1) - AL(i,1) 879 847 endif 880 END DO 848 10 continue 881 849 C 882 850 C Bottom 883 DO i=1,IMR851 DO 15 i=1,IMR 884 852 C 2-cell PPM with zero gradient right at the surface 885 853 C … … 888 856 AR(i,NLAY) = wk1(i,NLAY) + fct 889 857 AL(i,NLAY) = wk1(i,NLAY) - (fct+fct) 890 if(wk1(i,NLAY)*AR(i,NLAY) <=0.) AR(i,NLAY) = 0.858 if(wk1(i,NLAY)*AR(i,NLAY).le.0.) AR(i,NLAY) = 0. 891 859 flux(i,NLAY) = AR(i,NLAY) - wk1(i,NLAY) 892 END DO 860 15 continue 893 861 894 862 C … … 897 865 C****6***0*********0*********0*********0*********0*********0**********72 898 866 C 899 DO k=3,NLAYM1900 DO i=1,IMR867 DO 14 k=3,NLAYM1 868 DO 12 i=1,IMR 901 869 c1 = DQDT(i,j,k-1)*wk2(i,k-1) / (wk2(i,k-1)+wk2(i,k)) 902 870 c2 = 2. / (wk2(i,k-2)+wk2(i,k-1)+wk2(i,k)+wk2(i,k+1)) … … 907 875 & wk2(i,k-1)*A1*flux(i,k) ) 908 876 C print *,'AL1',i,k, AL(i,k) 909 END DO 910 END DO 911 C 912 do i=1,IMR*NLAYM1877 12 CONTINUE 878 14 continue 879 C 880 do 20 i=1,IMR*NLAYM1 913 881 AR(i,1) = AL(i,2) 914 882 C print *,'AR1',i,AR(i,1) 915 END DO 916 C 917 do i=1,IMR*NLAY883 20 continue 884 C 885 do 30 i=1,IMR*NLAY 918 886 A6(i,1) = 3.*(wk1(i,1)+wk1(i,1) - (AL(i,1)+AR(i,1))) 919 887 C print *,'A61',i,A6(i,1) 920 END DO 888 30 continue 921 889 C 922 890 C****6***0*********0*********0*********0*********0*********0**********72 … … 927 895 C 928 896 C Interior depending on KORD 929 if(LMT <=2)897 if(LMT.LE.2) 930 898 & call lmtppm(flux(1,2),A6(1,2),AR(1,2),AL(1,2),wk1(1,2), 931 899 & IMR*(NLAY-2),LMT) … … 933 901 C****6***0*********0*********0*********0*********0*********0**********72 934 902 C 935 DO i=1,IMR*NLAYM1936 IF(wz2(i,1) >0.) then903 DO 140 i=1,IMR*NLAYM1 904 IF(wz2(i,1).GT.0.) then 937 905 CM = wz2(i,1) / wk2(i,1) 938 906 flux(i,2) = AR(i,1)+0.5*CM*(AL(i,1)-AR(i,1)+A6(i,1)*(1.-R23*CM)) … … 944 912 C print *,'test2',i, AL(i,2),AR(i,2),A6(i,2),R23 945 913 endif 946 END DO 947 C 948 DO i=1,IMR*NLAYM1914 140 continue 915 C 916 DO 250 i=1,IMR*NLAYM1 949 917 flux(i,2) = wz2(i,1) * flux(i,2) 950 END DO 951 C 952 do i=1,IMR918 250 continue 919 C 920 do 350 i=1,IMR 953 921 DQ(i,j, 1) = DQ(i,j, 1) - flux(i, 2) 954 922 DQ(i,j,NLAY) = DQ(i,j,NLAY) + flux(i,NLAY) 955 END DO 956 C 957 do k=2,NLAYM1 958 do i=1,IMR 959 DQ(i,j,k) = DQ(i,j,k) + flux(i,k) - flux(i,k+1) 960 END DO 961 END DO 923 350 continue 924 C 925 do 360 k=2,NLAYM1 926 do 360 i=1,IMR 927 360 DQ(i,j,k) = DQ(i,j,k) + flux(i,k) - flux(i,k+1) 962 928 2000 continue 963 END DO964 929 return 965 930 end … … 985 950 j2vl = j2-jvan 986 951 C 987 do j=j1,j2952 do 1310 j=j1,j2 988 953 C 989 954 do i=1,IMR … … 991 956 enddo 992 957 C 993 if(j >=JN .or. j<=JS) goto 2222958 if(j.ge.JN .or. j.le.JS) goto 2222 994 959 C ************* Eulerian ********** 995 960 C … … 999 964 qtmp(IMP+1) = q(2,J) 1000 965 C 1001 IF(IORD ==1 .or. j==j1 .or. j==j2) THEN1002 DO i=1,IMR966 IF(IORD.eq.1 .or. j.eq.j1. or. j.eq.j2) THEN 967 DO 1406 i=1,IMR 1003 968 iu = REAL(i) - uc(i,j) 1004 fx1(i) = qtmp(iu) 1005 END DO 969 1406 fx1(i) = qtmp(iu) 1006 970 ELSE 1007 971 call xmist(IMR,IML,Qtmp,DC) 1008 972 DC(0) = DC(IMR) 1009 973 C 1010 if(IORD ==2 .or. j<=j1vl .or. j>=j2vl) then1011 DO i=1,IMR974 if(IORD.eq.2 .or. j.le.j1vl .or. j.ge.j2vl) then 975 DO 1408 i=1,IMR 1012 976 iu = REAL(i) - uc(i,j) 1013 fx1(i) = qtmp(iu) + DC(iu)*(sign(1.,uc(i,j))-uc(i,j)) 1014 END DO 977 1408 fx1(i) = qtmp(iu) + DC(iu)*(sign(1.,uc(i,j))-uc(i,j)) 1015 978 else 1016 979 call fxppm(IMR,IML,UC(1,j),Qtmp,DC,fx1,IORD) … … 1019 982 ENDIF 1020 983 C 1021 DO i=1,IMR 1022 fx1(i) = fx1(i)*xmass(i,j) 1023 END DO 984 DO 1506 i=1,IMR 985 1506 fx1(i) = fx1(i)*xmass(i,j) 1024 986 C 1025 987 goto 1309 … … 1034 996 enddo 1035 997 C 1036 IF(IORD ==1 .or. j==j1 .or. j==j2) THEN1037 DO i=1,IMR998 IF(IORD.eq.1 .or. j.eq.j1. or. j.eq.j2) THEN 999 DO 1306 i=1,IMR 1038 1000 itmp = INT(uc(i,j)) 1039 1001 ISAVE(i) = i - itmp 1040 1002 iu = i - uc(i,j) 1041 fx1(i) = (uc(i,j) - itmp)*qtmp(iu) 1042 END DO 1003 1306 fx1(i) = (uc(i,j) - itmp)*qtmp(iu) 1043 1004 ELSE 1044 1005 call xmist(IMR,IML,Qtmp,DC) … … 1049 1010 enddo 1050 1011 C 1051 DO i=1,IMR1012 DO 1307 i=1,IMR 1052 1013 itmp = INT(uc(i,j)) 1053 1014 rut = uc(i,j) - itmp 1054 1015 ISAVE(i) = i - itmp 1055 1016 iu = i - uc(i,j) 1056 fx1(i) = rut*(qtmp(iu) + DC(iu)*(sign(1.,rut) - rut)) 1057 END DO 1017 1307 fx1(i) = rut*(qtmp(iu) + DC(iu)*(sign(1.,rut) - rut)) 1058 1018 ENDIF 1059 1019 C 1060 do i=1,IMR1061 IF(uc(i,j) >1.) then1020 do 1308 i=1,IMR 1021 IF(uc(i,j).GT.1.) then 1062 1022 CDIR$ NOVECTOR 1063 1023 do ist = ISAVE(i),i-1 1064 1024 fx1(i) = fx1(i) + qtmp(ist) 1065 1025 enddo 1066 elseIF(uc(i,j) <-1.) then1026 elseIF(uc(i,j).LT.-1.) then 1067 1027 do ist = i,ISAVE(i)-1 1068 1028 fx1(i) = fx1(i) - qtmp(ist) … … 1070 1030 CDIR$ VECTOR 1071 1031 endif 1072 END DO 1032 1308 continue 1073 1033 do i=1,IMR 1074 1034 fx1(i) = PU(i,j)*fx1(i) … … 1078 1038 C 1079 1039 1309 fx1(IMP) = fx1(1) 1080 DO i=1,IMR 1081 DQ(i,j) = DQ(i,j) + fx1(i)-fx1(i+1) 1082 END DO 1040 DO 1215 i=1,IMR 1041 1215 DQ(i,j) = DQ(i,j) + fx1(i)-fx1(i+1) 1083 1042 C 1084 1043 C *************************************** 1085 1044 C 1086 END DO 1045 1310 continue 1087 1046 return 1088 1047 end … … 1120 1079 C endif 1121 1080 C 1122 DO i=1,IMR 1123 AL(i) = 0.5*(p(i-1)+p(i)) + (DC(i-1) - DC(i))*R3 1124 END DO 1125 C 1126 do i=1,IMR-1 1127 AR(i) = AL(i+1) 1128 END DO 1081 DO 10 i=1,IMR 1082 10 AL(i) = 0.5*(p(i-1)+p(i)) + (DC(i-1) - DC(i))*R3 1083 C 1084 do 20 i=1,IMR-1 1085 20 AR(i) = AL(i+1) 1129 1086 AR(IMR) = AL(1) 1130 1087 C 1131 do i=1,IMR 1132 A6(i) = 3.*(p(i)+p(i) - (AL(i)+AR(i))) 1133 END DO 1134 C 1135 if(LMT<=2) call lmtppm(DC(1),A6(1),AR(1),AL(1),P(1),IMR,LMT) 1088 do 30 i=1,IMR 1089 30 A6(i) = 3.*(p(i)+p(i) - (AL(i)+AR(i))) 1090 C 1091 if(LMT.LE.2) call lmtppm(DC(1),A6(1),AR(1),AL(1),P(1),IMR,LMT) 1136 1092 C 1137 1093 AL(0) = AL(IMR) … … 1140 1096 C 1141 1097 DO i=1,IMR 1142 IF(UT(i) >0.) then1098 IF(UT(i).GT.0.) then 1143 1099 flux(i) = AR(i-1) + 0.5*UT(i)*(AL(i-1) - AR(i-1) + 1144 1100 & A6(i-1)*(1.-R23*UT(i)) ) … … 1159 1115 real :: tmp,pmax,pmin 1160 1116 C 1161 do i=1,IMR1117 do 10 i=1,IMR 1162 1118 tmp = R24*(8.*(p(i+1) - p(i-1)) + p(i-2) - p(i+2)) 1163 1119 Pmax = max(P(i-1), p(i), p(i+1)) - p(i) 1164 1120 Pmin = p(i) - min(P(i-1), p(i), p(i+1)) 1165 DC(i) = sign(min(abs(tmp),Pmax,Pmin), tmp) 1166 END DO 1121 10 DC(i) = sign(min(abs(tmp),Pmax,Pmin), tmp) 1167 1122 return 1168 1123 end … … 1183 1138 len = IMR*(J2-J1+2) 1184 1139 C 1185 if(JORD ==1) then1186 DO i=1,len1140 if(JORD.eq.1) then 1141 DO 1000 i=1,len 1187 1142 JT = REAL(J1) - VC(i,J1) 1188 fx(i,j1) = p(i,JT) 1189 END DO 1143 1000 fx(i,j1) = p(i,JT) 1190 1144 else 1191 1145 1192 1146 call ymist(IMR,JNP,j1,P,DC2,4) 1193 1147 C 1194 if(JORD <=0 .or. JORD>=3) then1148 if(JORD.LE.0 .or. JORD.GE.3) then 1195 1149 1196 1150 call fyppm(VC,P,DC2,fx,IMR,JNP,j1,j2,A6,AR,AL,JORD) 1197 1151 1198 1152 else 1199 DO i=1,len1153 DO 1200 i=1,len 1200 1154 JT = REAL(J1) - VC(i,J1) 1201 fx(i,j1) = p(i,JT) + (sign(1.,VC(i,j1))-VC(i,j1))*DC2(i,JT) 1202 END DO 1203 endif 1204 endif 1205 C 1206 DO i=1,len 1207 fx(i,j1) = fx(i,j1)*ymass(i,j1) 1208 END DO 1209 C 1210 DO j=j1,j2 1211 DO i=1,IMR 1212 DQ(i,j) = DQ(i,j) + (fx(i,j) - fx(i,j+1)) * acosp(j) 1213 END DO 1214 END DO 1155 1200 fx(i,j1) = p(i,JT) + (sign(1.,VC(i,j1))-VC(i,j1))*DC2(i,JT) 1156 endif 1157 endif 1158 C 1159 DO 1300 i=1,len 1160 1300 fx(i,j1) = fx(i,j1)*ymass(i,j1) 1161 C 1162 DO 1400 j=j1,j2 1163 DO 1400 i=1,IMR 1164 1400 DQ(i,j) = DQ(i,j) + (fx(i,j) - fx(i,j+1)) * acosp(j) 1215 1165 C 1216 1166 C Poles … … 1229 1179 enddo 1230 1180 C 1231 if(j1 /=2) then1181 if(j1.ne.2) then 1232 1182 do i=1,IMR 1233 1183 DQ(i, 2) = sum1 … … 1251 1201 IJM3 = IMR*(JMR-3) 1252 1202 C 1253 IF(ID ==2) THEN1254 do i=1,IMR*(JMR-1)1203 IF(ID.EQ.2) THEN 1204 do 10 i=1,IMR*(JMR-1) 1255 1205 tmp = 0.25*(p(i,3) - p(i,1)) 1256 1206 Pmax = max(p(i,1),p(i,2),p(i,3)) - p(i,2) 1257 1207 Pmin = p(i,2) - min(p(i,1),p(i,2),p(i,3)) 1258 1208 DC(i,2) = sign(min(abs(tmp),Pmin,Pmax),tmp) 1259 END DO 1209 10 CONTINUE 1260 1210 ELSE 1261 do i=1,IMH1211 do 12 i=1,IMH 1262 1212 C J=2 1263 1213 tmp = (8.*(p(i,3) - p(i,1)) + p(i+IMH,2) - p(i,4))*R24 … … 1270 1220 Pmin = p(i,JMR) - min(p(i,JMR-1),p(i,JMR),p(i,JNP)) 1271 1221 DC(i,JMR) = sign(min(abs(tmp),Pmin,Pmax),tmp) 1272 END DO 1273 do i=IMH+1,IMR1222 12 CONTINUE 1223 do 14 i=IMH+1,IMR 1274 1224 C J=2 1275 1225 tmp = (8.*(p(i,3) - p(i,1)) + p(i-IMH,2) - p(i,4))*R24 … … 1282 1232 Pmin = p(i,JMR) - min(p(i,JMR-1),p(i,JMR),p(i,JNP)) 1283 1233 DC(i,JMR) = sign(min(abs(tmp),Pmin,Pmax),tmp) 1284 END DO 1285 C 1286 do i=1,IJM31234 14 CONTINUE 1235 C 1236 do 15 i=1,IJM3 1287 1237 tmp = (8.*(p(i,4) - p(i,2)) + p(i,1) - p(i,5))*R24 1288 1238 Pmax = max(p(i,2),p(i,3),p(i,4)) - p(i,3) 1289 1239 Pmin = p(i,3) - min(p(i,2),p(i,3),p(i,4)) 1290 1240 DC(i,3) = sign(min(abs(tmp),Pmin,Pmax),tmp) 1291 END DO 1241 15 CONTINUE 1292 1242 ENDIF 1293 1243 C 1294 if(j1 /=2) then1244 if(j1.ne.2) then 1295 1245 do i=1,IMR 1296 1246 DC(i,1) = 0. … … 1300 1250 C Determine slopes in polar caps for scalars! 1301 1251 C 1302 do i=1,IMH1252 do 13 i=1,IMH 1303 1253 C South 1304 1254 tmp = 0.25*(p(i,2) - p(i+imh,2)) … … 1311 1261 Pmin = p(i,JNP) - min(p(i+imh,JMR),p(i,jnp), p(i,JMR)) 1312 1262 DC(i,JNP) = sign(min(abs(tmp),Pmax,pmin),tmp) 1313 END DO 1314 C 1315 do i=imh+1,IMR1263 13 continue 1264 C 1265 do 25 i=imh+1,IMR 1316 1266 DC(i, 1) = - DC(i-imh, 1) 1317 1267 DC(i,JNP) = - DC(i-imh,JNP) 1318 END DO 1268 25 continue 1319 1269 endif 1320 1270 return … … 1358 1308 LMT = JORD - 3 1359 1309 C 1360 DO i=1,IMR*JMR1310 DO 10 i=1,IMR*JMR 1361 1311 AL(i,2) = 0.5*(p(i,1)+p(i,2)) + (DC(i,1) - DC(i,2))*R3 1362 1312 AR(i,1) = AL(i,2) 1363 END DO 1313 10 CONTINUE 1364 1314 C 1365 1315 CPoles: … … 1381 1331 1382 1332 1383 do i=1,len 1384 A6(i,j11) = 3.*(p(i,j11)+p(i,j11) - (AL(i,j11)+AR(i,j11))) 1385 END DO 1386 C 1387 if(LMT<=2) call lmtppm(DC(1,j11),A6(1,j11),AR(1,j11) 1333 do 30 i=1,len 1334 30 A6(i,j11) = 3.*(p(i,j11)+p(i,j11) - (AL(i,j11)+AR(i,j11))) 1335 C 1336 if(LMT.le.2) call lmtppm(DC(1,j11),A6(1,j11),AR(1,j11) 1388 1337 & ,AL(1,j11),P(1,j11),len,LMT) 1389 1338 C 1390 1339 1391 DO i=1,IMJM11392 IF(VC(i,j1) >0.) then1340 DO 140 i=1,IMJM1 1341 IF(VC(i,j1).GT.0.) then 1393 1342 flux(i,j1) = AR(i,j11) + 0.5*VC(i,j1)*(AL(i,j11) - AR(i,j11) + 1394 1343 & A6(i,j11)*(1.-R23*VC(i,j1)) ) … … 1397 1346 & A6(i,j1)*(1.+R23*VC(i,j1))) 1398 1347 endif 1399 END DO 1348 140 continue 1400 1349 return 1401 1350 end … … 1429 1378 c write(*,*) 'toto 1' 1430 1379 C -------------------------------- 1431 IF(IAD ==2) then1380 IF(IAD.eq.2) then 1432 1381 do j=j1-1,j2+1 1433 1382 do i=1,IMR … … 1446 1395 c write(*,*) 'toto 2' 1447 1396 C 1448 ELSEIF(IAD ==1) then1397 ELSEIF(IAD.eq.1) then 1449 1398 do j=j1-1,j2+1 1450 1399 do i=1,imr … … 1455 1404 ENDIF 1456 1405 C 1457 if(j1 /=2) then1406 if(j1.ne.2) then 1458 1407 sum1 = 0. 1459 1408 sum2 = 0. … … 1499 1448 C 1500 1449 JMR = JNP-1 1501 do j=j1,j21502 if(J >JS .and. J<JN) GO TO 13091450 do 1309 j=j1,j2 1451 if(J.GT.JS .and. J.LT.JN) GO TO 1309 1503 1452 C 1504 1453 do i=1,IMR … … 1511 1460 enddo 1512 1461 C 1513 IF(IAD ==2) THEN1462 IF(IAD.eq.2) THEN 1514 1463 DO i=1,IMR 1515 1464 IP = NINT(UA(i,j)) … … 1520 1469 adx(i,j) = qtmp(ip) + ru*(a1*ru + b1) 1521 1470 enddo 1522 ELSEIF(IAD ==1) then1471 ELSEIF(IAD.eq.1) then 1523 1472 DO i=1,IMR 1524 1473 iu = UA(i,j) 1525 1474 ru = UA(i,j) - iu 1526 1475 iiu = i-iu 1527 if(UA(i,j) >=0.) then1476 if(UA(i,j).GE.0.) then 1528 1477 adx(i,j) = qtmp(iiu)+ru*(qtmp(iiu-1)-qtmp(iiu)) 1529 1478 else … … 1537 1486 enddo 1538 1487 1309 continue 1539 END DO1540 1488 C 1541 1489 C Eulerian upwind … … 1550 1498 qtmp(IMR+1) = p(1,J) 1551 1499 C 1552 IF(IAD ==2) THEN1500 IF(IAD.eq.2) THEN 1553 1501 qtmp(-1) = p(IMR-1,J) 1554 1502 qtmp(IMR+2) = p(2,J) … … 1561 1509 adx(i,j) = qtmp(ip)- p(i,j) + ru*(a1*ru + b1) 1562 1510 enddo 1563 ELSEIF(IAD ==1) then1511 ELSEIF(IAD.eq.1) then 1564 1512 C 1st order 1565 1513 DO i=1,IMR … … 1570 1518 enddo 1571 1519 C 1572 if(j1 /=2) then1520 if(j1.ne.2) then 1573 1521 do i=1,IMR 1574 1522 adx(i, 2) = 0. … … 1606 1554 REAL da1,da2,a6da,fmin 1607 1555 C 1608 if(LMT ==0) then1556 if(LMT.eq.0) then 1609 1557 C Full constraint 1610 do i=1,IM1611 if(DC(i) ==0.) then1558 do 100 i=1,IM 1559 if(DC(i).eq.0.) then 1612 1560 AR(i) = p(i) 1613 1561 AL(i) = p(i) … … 1617 1565 da2 = da1**2 1618 1566 A6DA = A6(i)*da1 1619 if(A6DA <-da2) then1567 if(A6DA .lt. -da2) then 1620 1568 A6(i) = 3.*(AL(i)-p(i)) 1621 1569 AR(i) = AL(i) - A6(i) 1622 elseif(A6DA >da2) then1570 elseif(A6DA .gt. da2) then 1623 1571 A6(i) = 3.*(AR(i)-p(i)) 1624 1572 AL(i) = AR(i) - A6(i) 1625 1573 endif 1626 1574 endif 1627 END DO 1628 elseif(LMT ==1) then1575 100 continue 1576 elseif(LMT.eq.1) then 1629 1577 C Semi-monotonic constraint 1630 do i=1,IM1631 if(abs(AR(i)-AL(i)) >=-A6(i)) go to 1501632 if(p(i) <AR(i) .and. p(i)<AL(i)) then1578 do 150 i=1,IM 1579 if(abs(AR(i)-AL(i)) .GE. -A6(i)) go to 150 1580 if(p(i).lt.AR(i) .and. p(i).lt.AL(i)) then 1633 1581 AR(i) = p(i) 1634 1582 AL(i) = p(i) 1635 1583 A6(i) = 0. 1636 elseif(AR(i) >AL(i)) then1584 elseif(AR(i) .gt. AL(i)) then 1637 1585 A6(i) = 3.*(AL(i)-p(i)) 1638 1586 AR(i) = AL(i) - A6(i) … … 1642 1590 endif 1643 1591 150 continue 1644 END DO 1645 elseif(LMT==2) then 1646 do i=1,IM 1647 if(abs(AR(i)-AL(i)) >= -A6(i)) go to 250 1592 elseif(LMT.eq.2) then 1593 do 250 i=1,IM 1594 if(abs(AR(i)-AL(i)) .GE. -A6(i)) go to 250 1648 1595 fmin = p(i) + 0.25*(AR(i)-AL(i))**2/A6(i) + A6(i)*R12 1649 if(fmin >=0.) go to 2501650 if(p(i) <AR(i) .and. p(i)<AL(i)) then1596 if(fmin.ge.0.) go to 250 1597 if(p(i).lt.AR(i) .and. p(i).lt.AL(i)) then 1651 1598 AR(i) = p(i) 1652 1599 AL(i) = p(i) 1653 1600 A6(i) = 0. 1654 elseif(AR(i) >AL(i)) then1601 elseif(AR(i) .gt. AL(i)) then 1655 1602 A6(i) = 3.*(AL(i)-p(i)) 1656 1603 AR(i) = AL(i) - A6(i) … … 1660 1607 endif 1661 1608 250 continue 1662 END DO1663 1609 endif 1664 1610 return … … 1671 1617 integer i,j 1672 1618 C 1673 do j=j1,j2 1674 do i=2,IMR 1675 CRX(i,J) = dtdx5(j)*(U(i,j)+U(i-1,j)) 1676 END DO 1677 END DO 1678 C 1679 do j=j1,j2 1680 CRX(1,J) = dtdx5(j)*(U(1,j)+U(IMR,j)) 1681 END DO 1682 C 1683 do i=1,IMR*JMR 1684 CRY(i,2) = DTDY5*(V(i,2)+V(i,1)) 1685 END DO 1619 do 35 j=j1,j2 1620 do 35 i=2,IMR 1621 35 CRX(i,J) = dtdx5(j)*(U(i,j)+U(i-1,j)) 1622 C 1623 do 45 j=j1,j2 1624 45 CRX(1,J) = dtdx5(j)*(U(1,j)+U(IMR,j)) 1625 C 1626 do 55 i=1,IMR*JMR 1627 55 CRY(i,2) = DTDY5*(V(i,2)+V(i,1)) 1686 1628 return 1687 1629 end … … 1694 1636 real ph5 1695 1637 JMR = JNP-1 1696 do j=2,JNP1638 do 55 j=2,JNP 1697 1639 ph5 = -0.5*PI + (REAL(J-1)-0.5)*DP 1698 cose(j) = cos(ph5) 1699 END DO 1640 55 cose(j) = cos(ph5) 1700 1641 C 1701 1642 JEQ = (JNP+1) / 2 1702 if(JMR ==2*(JMR/2) ) then1643 if(JMR .eq. 2*(JMR/2) ) then 1703 1644 do j=JNP, JEQ+1, -1 1704 1645 cose(j) = cose(JNP+2-j) … … 1712 1653 endif 1713 1654 C 1714 do j=2,JMR 1715 cosp(j) = 0.5*(cose(j)+cose(j+1)) 1716 END DO 1655 do 66 j=2,JMR 1656 66 cosp(j) = 0.5*(cose(j)+cose(j+1)) 1717 1657 cosp(1) = 0. 1718 1658 cosp(JNP) = 0. … … 1728 1668 C 1729 1669 phi = -0.5*PI 1730 do j=2,JNP-11670 do 55 j=2,JNP-1 1731 1671 phi = phi + DP 1732 cosp(j) = cos(phi) 1733 END DO 1672 55 cosp(j) = cos(phi) 1734 1673 cosp( 1) = 0. 1735 1674 cosp(JNP) = 0. 1736 1675 C 1737 do j=2,JNP1676 do 66 j=2,JNP 1738 1677 cose(j) = 0.5*(cosp(j)+cosp(j-1)) 1739 END DO 1740 C 1741 do j=2,JNP-11678 66 CONTINUE 1679 C 1680 do 77 j=2,JNP-1 1742 1681 cosp(j) = 0.5*(cose(j)+cose(j+1)) 1743 END DO 1682 77 CONTINUE 1744 1683 return 1745 1684 end … … 1763 1702 icr = 1 1764 1703 call filns(q(1,1,L),IMR,JNP,j1,j2,cosp,acosp,ipy,tiny) 1765 if(ipy ==0) goto 501704 if(ipy.eq.0) goto 50 1766 1705 call filew(q(1,1,L),qtmp,IMR,JNP,j1,j2,ipx,tiny) 1767 if(ipx ==0) goto 501706 if(ipx.eq.0) goto 50 1768 1707 C 1769 1708 if(cross) then 1770 1709 call filcr(q(1,1,L),IMR,JNP,j1,j2,cosp,acosp,icr,tiny) 1771 1710 endif 1772 if(icr ==0) goto 501711 if(icr.eq.0) goto 50 1773 1712 C 1774 1713 C Vertical filling... 1775 1714 do i=1,len 1776 IF( Q(i,j1,1) <0.) THEN1715 IF( Q(i,j1,1).LT.0.) THEN 1777 1716 ip = ip + 1 1778 1717 Q(i,j1,2) = Q(i,j1,2) + Q(i,j1,1) … … 1782 1721 C 1783 1722 50 continue 1784 DO L = 2,NLAYM11723 DO 225 L = 2,NLAYM1 1785 1724 icr = 1 1786 1725 C 1787 1726 call filns(q(1,1,L),IMR,JNP,j1,j2,cosp,acosp,ipy,tiny) 1788 if(ipy ==0) goto 2251727 if(ipy.eq.0) goto 225 1789 1728 call filew(q(1,1,L),qtmp,IMR,JNP,j1,j2,ipx,tiny) 1790 if(ipx ==0) go to 2251729 if(ipx.eq.0) go to 225 1791 1730 if(cross) then 1792 1731 call filcr(q(1,1,L),IMR,JNP,j1,j2,cosp,acosp,icr,tiny) 1793 1732 endif 1794 if(icr ==0) goto 2251733 if(icr.eq.0) goto 225 1795 1734 C 1796 1735 do i=1,len 1797 IF( Q(I,j1,L) <0.) THEN1736 IF( Q(I,j1,L).LT.0.) THEN 1798 1737 C 1799 1738 ip = ip + 1 … … 1810 1749 ENDDO 1811 1750 225 CONTINUE 1812 END DO1813 1751 C 1814 1752 C BOTTOM LAYER … … 1817 1755 C 1818 1756 call filns(q(1,1,L),IMR,JNP,j1,j2,cosp,acosp,ipy,tiny) 1819 if(ipy ==0) goto 9111757 if(ipy.eq.0) goto 911 1820 1758 call filew(q(1,1,L),qtmp,IMR,JNP,j1,j2,ipx,tiny) 1821 if(ipx ==0) goto 9111759 if(ipx.eq.0) goto 911 1822 1760 C 1823 1761 call filcr(q(1,1,L),IMR,JNP,j1,j2,cosp,acosp,icr,tiny) 1824 if(icr ==0) goto 9111762 if(icr.eq.0) goto 911 1825 1763 C 1826 1764 DO I=1,len 1827 IF( Q(I,j1,L) <0.) THEN1765 IF( Q(I,j1,L).LT.0.) THEN 1828 1766 ip = ip + 1 1829 1767 c … … 1842 1780 911 continue 1843 1781 C 1844 if(ip >IMR) then1782 if(ip.gt.IMR) then 1845 1783 write(6,*) 'IC=',IC,' STEP=',NSTEP, 1846 1784 & ' Vertical filling pts=',ip 1847 1785 endif 1848 1786 C 1849 if(sum >1.e-25) then1787 if(sum.gt.1.e-25) then 1850 1788 write(6,*) IC,NSTEP,' Mass source from the ground=',sum 1851 1789 endif … … 1860 1798 real :: dq,dn,d0,d1,ds,d2 1861 1799 icr = 0 1862 do j=j1+1,j2-11863 DO i=1,IMR-11864 IF(q(i,j) <0.) THEN1800 do 65 j=j1+1,j2-1 1801 DO 50 i=1,IMR-1 1802 IF(q(i,j).LT.0.) THEN 1865 1803 icr = 1 1866 1804 dq = - q(i,j)*cosp(j) … … 1878 1816 q(i,j) = (d2 - dq)*acosp(j) + tiny 1879 1817 endif 1880 END DO 1881 if(icr ==0 .and. q(IMR,j)>=0.) goto 651882 DO i=2,IMR1883 IF(q(i,j) <0.) THEN1818 50 continue 1819 if(icr.eq.0 .and. q(IMR,j).ge.0.) goto 65 1820 DO 55 i=2,IMR 1821 IF(q(i,j).LT.0.) THEN 1884 1822 icr = 1 1885 1823 dq = - q(i,j)*cosp(j) … … 1897 1835 q(i,j) = (d2 - dq)*acosp(j) + tiny 1898 1836 endif 1899 END DO 1837 55 continue 1900 1838 C ***************************************** 1901 1839 C i=1 1902 1840 i=1 1903 IF(q(i,j) <0.) THEN1841 IF(q(i,j).LT.0.) THEN 1904 1842 icr = 1 1905 1843 dq = - q(i,j)*cosp(j) … … 1920 1858 C i=IMR 1921 1859 i=IMR 1922 IF(q(i,j) <0.) THEN1860 IF(q(i,j).LT.0.) THEN 1923 1861 icr = 1 1924 1862 dq = - q(i,j)*cosp(j) … … 1938 1876 C ***************************************** 1939 1877 65 continue 1940 END DO1941 1878 C 1942 1879 do i=1,IMR 1943 if(q(i,j1) <0. .or. q(i,j2)<0.) then1880 if(q(i,j1).lt.0. .or. q(i,j2).lt.0.) then 1944 1881 icr = 1 1945 1882 goto 80 … … 1949 1886 80 continue 1950 1887 C 1951 if(q(1,1) <0. .or. q(1,jnp)<0.) then1888 if(q(1,1).lt.0. .or. q(1,jnp).lt.0.) then 1952 1889 icr = 1 1953 1890 endif … … 1973 1910 C 1974 1911 ipy = 0 1975 do j=j1+1,j2-11976 DO i=1,IMR1977 IF(q(i,j) <0.) THEN1912 do 55 j=j1+1,j2-1 1913 DO 55 i=1,IMR 1914 IF(q(i,j).LT.0.) THEN 1978 1915 ipy = 1 1979 1916 dq = - q(i,j)*cosp(j) … … 1991 1928 q(i,j) = (d2 - dq)*acosp(j) + tiny 1992 1929 endif 1993 END DO 1994 END DO 1930 55 continue 1995 1931 C 1996 1932 do i=1,imr 1997 IF(q(i,j1) <0.) THEN1933 IF(q(i,j1).LT.0.) THEN 1998 1934 ipy = 1 1999 1935 dq = - q(i,j1)*cosp(j1) … … 2009 1945 j = j2 2010 1946 do i=1,imr 2011 IF(q(i,j) <0.) THEN1947 IF(q(i,j).LT.0.) THEN 2012 1948 ipy = 1 2013 1949 dq = - q(i,j)*cosp(j) … … 2022 1958 C 2023 1959 C Check Poles. 2024 if(q(1,1) <0.) then1960 if(q(1,1).lt.0.) then 2025 1961 dq = q(1,1)*cap1/REAL(IMR)*acosp(j1) 2026 1962 do i=1,imr 2027 1963 q(i,1) = 0. 2028 1964 q(i,j1) = q(i,j1) + dq 2029 if(q(i,j1) <0.) ipy = 12030 enddo 2031 endif 2032 C 2033 if(q(1,JNP) <0.) then1965 if(q(i,j1).lt.0.) ipy = 1 1966 enddo 1967 endif 1968 C 1969 if(q(1,JNP).lt.0.) then 2034 1970 dq = q(1,JNP)*cap1/REAL(IMR)*acosp(j2) 2035 1971 do i=1,imr 2036 1972 q(i,JNP) = 0. 2037 1973 q(i,j2) = q(i,j2) + dq 2038 if(q(i,j2) <0.) ipy = 11974 if(q(i,j2).lt.0.) ipy = 1 2039 1975 enddo 2040 1976 endif … … 2052 1988 ipx = 0 2053 1989 C Copy & swap direction for vectorization. 2054 do i=1,imr 2055 do j=j1,j2 2056 qtmp(j,i) = q(i,j) 2057 END DO 2058 END DO 2059 C 2060 do i=2,imr-1 2061 do j=j1,j2 2062 if(qtmp(j,i)<0.) then 1990 do 25 i=1,imr 1991 do 25 j=j1,j2 1992 25 qtmp(j,i) = q(i,j) 1993 C 1994 do 55 i=2,imr-1 1995 do 55 j=j1,j2 1996 if(qtmp(j,i).lt.0.) then 2063 1997 ipx = 1 2064 1998 c west … … 2073 2007 qtmp(j,i) = qtmp(j,i) + d2 + tiny 2074 2008 endif 2075 END DO 2076 END DO 2009 55 continue 2077 2010 c 2078 2011 i=1 2079 do j=j1,j22080 if(qtmp(j,i) <0.) then2012 do 65 j=j1,j2 2013 if(qtmp(j,i).lt.0.) then 2081 2014 ipx = 1 2082 2015 c west … … 2092 2025 qtmp(j,i) = qtmp(j,i) + d2 + tiny 2093 2026 endif 2094 END DO 2027 65 continue 2095 2028 i=IMR 2096 do j=j1,j22097 if(qtmp(j,i) <0.) then2029 do 75 j=j1,j2 2030 if(qtmp(j,i).lt.0.) then 2098 2031 ipx = 1 2099 2032 c west … … 2109 2042 qtmp(j,i) = qtmp(j,i) + d2 + tiny 2110 2043 endif 2111 END DO 2112 C 2113 if(ipx/=0) then 2114 do j=j1,j2 2115 do i=1,imr 2116 q(i,j) = qtmp(j,i) 2117 END DO 2118 END DO 2044 75 continue 2045 C 2046 if(ipx.ne.0) then 2047 do 85 j=j1,j2 2048 do 85 i=1,imr 2049 85 q(i,j) = qtmp(j,i) 2119 2050 else 2120 2051 C 2121 2052 C Poles. 2122 if(q(1,1) <0 .or. q(1,JNP)<0.) ipx = 12053 if(q(1,1).lt.0. or. q(1,JNP).lt.0.) ipx = 1 2123 2054 endif 2124 2055 return … … 2134 2065 integer IC,k,i 2135 2066 C 2136 do IC = 1, nc2137 C 2138 do k=1,km2139 do i=1,im2067 do 4000 IC = 1, nc 2068 C 2069 do 1000 k=1,km 2070 do 1000 i=1,im 2140 2071 qtmp(i,k) = q(i,km+1-k,IC) 2141 END DO 2142 END DO 2143 C 2144 do i=1,im*km 2145 q(i,1,IC) = qtmp(i,1) 2146 END DO 2147 END DO 2072 1000 continue 2073 C 2074 do 2000 i=1,im*km 2075 2000 q(i,1,IC) = qtmp(i,1) 2076 4000 continue 2148 2077 return 2149 2078 end -
LMDZ6/trunk/libf/dyn3dmem/dynetat0_loc.F90
r5075 r5084 9 9 USE infotrac, ONLY: nqtot, tracers, niso, iqIsoPha, iH2O, isoName 10 10 USE strings_mod, ONLY: maxlen, msg, strStack, real2str, int2str, strIdx 11 USE lmdz_netcdf, ONLY: NF90_OPEN, NF90_NOWRITE, NF90_INQUIRE_DIMENSION, NF90_INQ_VARID, &11 USE netcdf, ONLY: NF90_OPEN, NF90_NOWRITE, NF90_INQUIRE_DIMENSION, NF90_INQ_VARID, & 12 12 NF90_CLOSE, NF90_GET_VAR, NF90_INQUIRE_VARIABLE, NF90_NoErr 13 13 USE readTracFiles_mod, ONLY: new2oldH2O, newHNO3, oldHNO3, getKey -
LMDZ6/trunk/libf/dyn3dmem/dynredem_loc.F90
r5075 r5084 11 11 USE strings_mod, ONLY: maxlen 12 12 USE infotrac, ONLY: nqtot, tracers 13 USE lmdz_netcdf, ONLY: NF90_CREATE, NF90_DEF_DIM, NF90_INQ_VARID, NF90_GLOBAL, &13 USE netcdf, ONLY: NF90_CREATE, NF90_DEF_DIM, NF90_INQ_VARID, NF90_GLOBAL, & 14 14 NF90_CLOSE, NF90_PUT_ATT, NF90_UNLIMITED, NF90_CLOBBER, & 15 15 NF90_64BIT_OFFSET … … 178 178 USE infotrac, ONLY: nqtot, tracers, type_trac 179 179 USE control_mod 180 USE lmdz_netcdf, ONLY: NF90_OPEN, NF90_NOWRITE, NF90_GET_VAR, NF90_INQ_VARID, &180 USE netcdf, ONLY: NF90_OPEN, NF90_NOWRITE, NF90_GET_VAR, NF90_INQ_VARID, & 181 181 NF90_CLOSE, NF90_WRITE, NF90_PUT_VAR, NF90_NoErr 182 182 USE dynredem_mod, ONLY: dynredem_write_u, dynredem_write_v, dynredem_read_u, & -
LMDZ6/trunk/libf/dyn3dmem/dynredem_mod.F90
r5075 r5084 4 4 USE parallel_lmdz 5 5 USE mod_hallo 6 USE lmdz_netcdf, ONLY:nf90_strerror,nf90_noerr,nf90_redef,nf90_put_var,nf90_inquire_dimension,& 7 nf90_format,nf90_inq_varid,nf90_get_var,nf90_def_var,nf90_enddef,nf90_put_att 6 USE netcdf 8 7 PRIVATE 9 8 PUBLIC :: dynredem_write_u, dynredem_write_v, dynredem_read_u, err … … 181 180 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: units 182 181 !=============================================================================== 183 CALL err(NF90_DEF_VAR(ncid,var,NF90_FORMAT,did,nvarid),"inq",var) 182 #ifdef NC_DOUBLE 183 CALL err(NF90_DEF_VAR(ncid,var,NF90_DOUBLE,did,nvarid),"inq",var) 184 #else 185 CALL err(NF90_DEF_VAR(ncid,var,NF90_FLOAT ,did,nvarid),"inq",var) 186 #endif 184 187 IF(title/="") CALL err(NF90_PUT_ATT(ncid,nvarid,"title",title),var) 185 188 IF(PRESENT(units)) CALL err(NF90_PUT_ATT(ncid,nvarid,"units",units),var) -
LMDZ6/trunk/libf/dyn3dmem/guide_loc_mod.F90
r5072 r5084 1 ! 2 ! $Id$ 3 ! 1 4 MODULE guide_loc_mod 2 5 … … 8 11 USE getparam, only: ini_getparam, fin_getparam, getpar 9 12 USE Write_Field_loc 10 use lmdz_netcdf, only: nf90_nowrite, nf90_open, nf90_inq_varid, nf90_close, & 11 nf90_inq_dimid, nf90_inquire_dimension, nf_inq_dimid, & 12 nf_inq_dimlen, nf_enddef, nf_def_dim, nf90_put_var, nf_noerr, nf_close, nf_inq_varid, & 13 nf_redef, nf_write, nf_unlimited, nf_float, nf_clobber, nf_64bit_offset, nf90_float, & 14 nf_create, nf_def_var, nf_open 13 use netcdf, only: nf90_nowrite, nf90_open, nf90_inq_varid, nf90_close, & 14 nf90_inq_dimid, nf90_inquire_dimension 15 15 USE parallel_lmdz 16 16 USE pres2lev_mod, only: pres2lev … … 81 81 INCLUDE "dimensions.h" 82 82 INCLUDE "paramet.h" 83 INCLUDE "netcdf.inc" 83 84 84 85 INTEGER :: error,ncidpl,rid,rcod … … 125 126 CALL getpar('iguide_sav',4,iguide_sav,'freq. sauvegarde guidage') 126 127 ! frequences f>0: fx/jour; f<0: tous les f jours; f=0: 1 seule fois. 127 IF (iguide_sav >0) THEN128 IF (iguide_sav.GT.0) THEN 128 129 iguide_sav=day_step/iguide_sav 129 130 ELSE if (iguide_sav == 0) then … … 145 146 CALL getpar('iguide_read',4,iguide_read,'freq. lecture guidage') 146 147 CALL getpar('iguide_int',4,iguide_int,'freq. interpolation vert') 147 IF (iguide_int ==0) THEN148 IF (iguide_int.EQ.0) THEN 148 149 iguide_int=1 149 ELSEIF (iguide_int >0) THEN150 ELSEIF (iguide_int.GT.0) THEN 150 151 iguide_int=day_step/iguide_int 151 152 ELSE … … 173 174 ! --------------------------------------------- 174 175 ncidpl=-99 175 if (guide_plevs ==1) then176 if (ncidpl ==-99) then176 if (guide_plevs.EQ.1) then 177 if (ncidpl.eq.-99) then 177 178 rcod=nf90_open('apbp.nc',Nf90_NOWRITe, ncidpl) 178 if (rcod /=NF_NOERR) THEN179 if (rcod.NE.NF_NOERR) THEN 179 180 abort_message=' Nudging error -> no file apbp.nc' 180 181 CALL abort_gcm(modname,abort_message,1) 181 182 endif 182 183 endif 183 elseif (guide_plevs ==2) then184 if (ncidpl ==-99) then184 elseif (guide_plevs.EQ.2) then 185 if (ncidpl.EQ.-99) then 185 186 rcod=nf90_open('P.nc',Nf90_NOWRITe,ncidpl) 186 if (rcod /=NF_NOERR) THEN187 if (rcod.NE.NF_NOERR) THEN 187 188 abort_message=' Nudging error -> no file P.nc' 188 189 CALL abort_gcm(modname,abort_message,1) … … 191 192 192 193 elseif (guide_u) then 193 if (ncidpl ==-99) then194 if (ncidpl.eq.-99) then 194 195 rcod=nf90_open('u.nc',Nf90_NOWRITe,ncidpl) 195 if (rcod /=NF_NOERR) THEN196 if (rcod.NE.NF_NOERR) THEN 196 197 abort_message=' Nudging error -> no file u.nc' 197 198 CALL abort_gcm(modname,abort_message,1) … … 202 203 203 204 elseif (guide_v) then 204 if (ncidpl ==-99) then205 if (ncidpl.eq.-99) then 205 206 rcod=nf90_open('v.nc',nf90_nowrite,ncidpl) 206 if (rcod /=NF_NOERR) THEN207 if (rcod.NE.NF_NOERR) THEN 207 208 abort_message=' Nudging error -> no file v.nc' 208 209 CALL abort_gcm(modname,abort_message,1) … … 212 213 213 214 elseif (guide_T) then 214 if (ncidpl ==-99) then215 if (ncidpl.eq.-99) then 215 216 rcod=nf90_open('T.nc',nf90_nowrite,ncidpl) 216 if (rcod /=NF_NOERR) THEN217 if (rcod.NE.NF_NOERR) THEN 217 218 abort_message=' Nudging error -> no file T.nc' 218 219 CALL abort_gcm(modname,abort_message,1) … … 223 224 224 225 elseif (guide_Q) then 225 if (ncidpl ==-99) then226 if (ncidpl.eq.-99) then 226 227 rcod=nf90_open('hur.nc',nf90_nowrite, ncidpl) 227 if (rcod /=NF_NOERR) THEN228 if (rcod.NE.NF_NOERR) THEN 228 229 abort_message=' Nudging error -> no file hur.nc' 229 230 CALL abort_gcm(modname,abort_message,1) … … 234 235 endif 235 236 error=NF_INQ_DIMID(ncidpl,'LEVEL',rid) 236 IF (error /=NF_NOERR) error=NF_INQ_DIMID(ncidpl,'PRESSURE',rid)237 IF (error /=NF_NOERR) THEN237 IF (error.NE.NF_NOERR) error=NF_INQ_DIMID(ncidpl,'PRESSURE',rid) 238 IF (error.NE.NF_NOERR) THEN 238 239 abort_message='Nudging: error reading pressure levels' 239 240 CALL abort_gcm(modname,abort_message,1) … … 316 317 ENDIF 317 318 318 IF (guide_plevs ==2) THEN319 IF (guide_plevs.EQ.2) THEN 319 320 ALLOCATE(pnat1(iip1,jjb_u:jje_u,nlevnc), stat = error) 320 321 IF (error /= 0) CALL abort_gcm(modname,abort_message,1) … … 324 325 ENDIF 325 326 326 IF (guide_P.OR.guide_plevs ==1) THEN327 IF (guide_P.OR.guide_plevs.EQ.1) THEN 327 328 ALLOCATE(psnat1(iip1,jjb_u:jje_u), stat = error) 328 329 IF (error /= 0) CALL abort_gcm(modname,abort_message,1) … … 351 352 IF (guide_T) tnat1=tnat2 352 353 IF (guide_Q) qnat1=qnat2 353 IF (guide_plevs ==2) pnat1=pnat2354 IF (guide_P.OR.guide_plevs ==1) psnat1=psnat2354 IF (guide_plevs.EQ.2) pnat1=pnat2 355 IF (guide_P.OR.guide_plevs.EQ.1) psnat1=psnat2 355 356 356 357 END SUBROUTINE guide_init … … 488 489 ! Lecture des fichiers de guidage ? 489 490 !----------------------------------------------------------------------- 490 IF (iguide_read /=0) THEN491 IF (iguide_read.NE.0) THEN 491 492 ditau=real(itau) 492 493 dday_step=real(day_step) 493 IF (iguide_read <0) THEN494 IF (iguide_read.LT.0) THEN 494 495 tau=ditau/dday_step/REAL(iguide_read) 495 496 ELSE … … 497 498 ENDIF 498 499 reste=tau-AINT(tau) 499 IF (reste ==0.) THEN500 IF (itau_test ==itau) THEN500 IF (reste.EQ.0.) THEN 501 IF (itau_test.EQ.itau) THEN 501 502 write(*,*)trim(modname)//' second pass in advreel at itau=',& 502 503 itau … … 508 509 IF (guide_T) tnat1(:,jjbu:jjeu,:)=tnat2(:,jjbu:jjeu,:) 509 510 IF (guide_Q) qnat1(:,jjbu:jjeu,:)=qnat2(:,jjbu:jjeu,:) 510 IF (guide_plevs ==2) pnat1(:,jjbu:jjeu,:)=pnat2(:,jjbu:jjeu,:)511 IF (guide_P.OR.guide_plevs ==1) psnat1(:,jjbu:jjeu)=psnat2(:,jjbu:jjeu)511 IF (guide_plevs.EQ.2) pnat1(:,jjbu:jjeu,:)=pnat2(:,jjbu:jjeu,:) 512 IF (guide_P.OR.guide_plevs.EQ.1) psnat1(:,jjbu:jjeu)=psnat2(:,jjbu:jjeu) 512 513 !$OMP END MASTER 513 514 !$OMP BARRIER … … 540 541 ! Interpolation et conversion des champs de guidage 541 542 !----------------------------------------------------------------------- 542 IF (MOD(itau,iguide_int) ==0) THEN543 IF (MOD(itau,iguide_int).EQ.0) THEN 543 544 CALL guide_interp(ps,teta) 544 545 ENDIF 545 546 ! Repartition entre 2 etats de guidage 546 IF (iguide_read /=0) THEN547 IF (iguide_read.NE.0) THEN 547 548 tau=reste 548 549 ELSE … … 560 561 !----------------------------------------------------------------------- 561 562 ! Sauvegarde du guidage? 562 f_out=((MOD(itau,iguide_sav) ==0).AND.guide_sav)563 f_out=((MOD(itau,iguide_sav).EQ.0).AND.guide_sav) 563 564 IF (f_out) THEN 564 565 … … 803 804 IF (guide_reg) THEN 804 805 DO i=1,iim 805 IF (lond(i) <lon_min_g) imin(1)=i806 IF (lond(i) <=lon_max_g) imax(1)=i806 IF (lond(i).LT.lon_min_g) imin(1)=i 807 IF (lond(i).LE.lon_max_g) imax(1)=i 807 808 ENDDO 808 809 lond=rlonv*180./pi 809 810 DO i=1,iim 810 IF (lond(i) <lon_min_g) imin(2)=i811 IF (lond(i) <=lon_max_g) imax(2)=i811 IF (lond(i).LT.lon_min_g) imin(2)=i 812 IF (lond(i).LE.lon_max_g) imax(2)=i 812 813 ENDDO 813 814 ENDIF … … 875 876 IF (guide_reg) THEN 876 877 DO i=1,iim 877 IF (lond(i) <lon_min_g) imin(1)=i878 IF (lond(i) <=lon_max_g) imax(1)=i878 IF (lond(i).LT.lon_min_g) imin(1)=i 879 IF (lond(i).LE.lon_max_g) imax(1)=i 879 880 ENDDO 880 881 lond=rlonv*180./pi 881 882 DO i=1,iim 882 IF (lond(i) <lon_min_g) imin(2)=i883 IF (lond(i) <=lon_max_g) imax(2)=i883 IF (lond(i).LT.lon_min_g) imin(2)=i 884 IF (lond(i).LE.lon_max_g) imax(2)=i 884 885 ENDDO 885 886 ENDIF … … 982 983 983 984 984 IF (guide_plevs ==0) THEN985 IF (guide_plevs.EQ.0) THEN 985 986 !$OMP DO 986 987 DO l=1,nlevnc … … 1048 1049 1049 1050 ! .... Calcul de pls , pression au milieu des couches ,en Pascals 1050 IF (guide_plevs ==1) THEN1051 IF (guide_plevs.EQ.1) THEN 1051 1052 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 1052 1053 DO l=1,llm … … 1127 1128 IF (guide_T) THEN 1128 1129 ! Calcul des nouvelles valeurs des niveaux de pression du guidage 1129 IF (guide_plevs ==1) THEN1130 IF (guide_plevs.EQ.1) THEN 1130 1131 !$OMP DO 1131 1132 DO l=1,nlevnc … … 1137 1138 ENDDO 1138 1139 ENDDO 1139 ELSE IF (guide_plevs ==2) THEN1140 ELSE IF (guide_plevs.EQ.2) THEN 1140 1141 !$OMP DO 1141 1142 DO l=1,nlevnc … … 1194 1195 IF (guide_Q) THEN 1195 1196 ! Calcul des nouvelles valeurs des niveaux de pression du guidage 1196 IF (guide_plevs ==1) THEN1197 IF (guide_plevs.EQ.1) THEN 1197 1198 !$OMP DO 1198 1199 DO l=1,nlevnc … … 1204 1205 ENDDO 1205 1206 ENDDO 1206 ELSE IF (guide_plevs ==2) THEN1207 ELSE IF (guide_plevs.EQ.2) THEN 1207 1208 !$OMP DO 1208 1209 DO l=1,nlevnc … … 1266 1267 IF (guide_u) THEN 1267 1268 ! Calcul des nouvelles valeurs des niveaux de pression du guidage 1268 IF (guide_plevs ==1) THEN1269 IF (guide_plevs.EQ.1) THEN 1269 1270 !$OMP DO 1270 1271 DO l=1,nlevnc … … 1280 1281 ENDDO 1281 1282 ENDDO 1282 ELSE IF (guide_plevs ==2) THEN1283 ELSE IF (guide_plevs.EQ.2) THEN 1283 1284 !$OMP DO 1284 1285 DO l=1,nlevnc … … 1334 1335 IF (guide_v) THEN 1335 1336 ! Calcul des nouvelles valeurs des niveaux de pression du guidage 1336 IF (guide_plevs ==1) THEN1337 IF (guide_plevs.EQ.1) THEN 1337 1338 CALL Register_Hallo_u(psnat1,1,1,2,2,1,Req) 1338 1339 CALL Register_Hallo_u(psnat2,1,1,2,2,1,Req) … … 1352 1353 ENDDO 1353 1354 ENDDO 1354 ELSE IF (guide_plevs ==2) THEN1355 ELSE IF (guide_plevs.EQ.2) THEN 1355 1356 CALL Register_Hallo_u(pnat1,llm,1,2,2,1,Req) 1356 1357 CALL Register_Hallo_u(pnat2,llm,1,2,2,1,Req) … … 1444 1445 do j=jjb,jje 1445 1446 do i=1,pim 1446 if (typ ==2) then1447 if (typ.eq.2) then 1447 1448 zlat=rlatu(j)*180./pi 1448 1449 zlon=rlonu(i)*180./pi 1449 elseif (typ ==1) then1450 elseif (typ.eq.1) then 1450 1451 zlat=rlatu(j)*180./pi 1451 1452 zlon=rlonv(i)*180./pi 1452 elseif (typ ==3) then1453 elseif (typ.eq.3) then 1453 1454 zlat=rlatv(j)*180./pi 1454 1455 zlon=rlonv(i)*180./pi … … 1489 1490 enddo 1490 1491 enddo 1491 IF (typ ==2) THEN1492 IF (typ.EQ.2) THEN 1492 1493 do j=1,jjp1 1493 1494 do i=1,iim … … 1497 1498 enddo 1498 1499 ENDIF 1499 IF (typ ==3) THEN1500 IF (typ.EQ.3) THEN 1500 1501 do j=1,jjm 1501 1502 do i=1,iip1 … … 1519 1520 enddo 1520 1521 ! Calcul de gamma 1521 if (abs(grossismx-1.) <0.1.or.abs(grossismy-1.)<0.1) then1522 if (abs(grossismx-1.).lt.0.1.or.abs(grossismy-1.).lt.0.1) then 1522 1523 write(*,*)trim(modname)//' ATTENTION modele peu zoome' 1523 1524 write(*,*)trim(modname)//' ATTENTION on prend une constante de guidage cste' … … 1526 1527 gamma=(dxdy_max-2.*dxdy_min)/(dxdy_max-dxdy_min) 1527 1528 write(*,*)trim(modname)//' gamma=',gamma 1528 if (gamma <1.e-5) then1529 if (gamma.lt.1.e-5) then 1529 1530 write(*,*)trim(modname)//' gamma =',gamma,'<1e-5' 1530 1531 CALL abort_gcm("guide_loc_mod","stopped",1) … … 1540 1541 do j=jjb,jje 1541 1542 do i=1,pim 1542 if (typ ==1) then1543 if (typ.eq.1) then 1543 1544 dxdy_=dxdys(i,j) 1544 1545 zlat=rlatu(j)*180./pi 1545 elseif (typ ==2) then1546 elseif (typ.eq.2) then 1546 1547 dxdy_=dxdyu(i,j) 1547 1548 zlat=rlatu(j)*180./pi 1548 elseif (typ ==3) then1549 elseif (typ.eq.3) then 1549 1550 dxdy_=dxdyv(i,j) 1550 1551 zlat=rlatv(j)*180./pi 1551 1552 endif 1552 if (abs(grossismx-1.) <0.1.or.abs(grossismy-1.)<0.1) then1553 if (abs(grossismx-1.).lt.0.1.or.abs(grossismy-1.).lt.0.1) then 1553 1554 ! pour une grille reguliere, xi=xxx**0=1 -> alpha=alphamin 1554 1555 alpha(i,j)=alphamin … … 1556 1557 xi=((dxdy_max-dxdy_)/(dxdy_max-dxdy_min))**gamma 1557 1558 xi=min(xi,1.) 1558 if(lat_min_g <=zlat .and. zlat<=lat_max_g) then1559 if(lat_min_g.le.zlat .and. zlat.le.lat_max_g) then 1559 1560 alpha(i,j)=xi*alphamin+(1.-xi)*alphamax 1560 1561 else … … 1575 1576 IMPLICIT NONE 1576 1577 1578 include "netcdf.inc" 1577 1579 include "dimensions.h" 1578 1580 include "paramet.h" … … 1600 1602 write(*,*),trim(modname)//': opening nudging files ' 1601 1603 ! Ap et Bp si Niveaux de pression hybrides 1602 if (guide_plevs ==1) then1604 if (guide_plevs.EQ.1) then 1603 1605 write(*,*),trim(modname)//' Reading nudging on model levels' 1604 1606 rcode = nf90_open('apbp.nc', nf90_nowrite, ncidpl) 1605 IF (rcode /=NF_NOERR) THEN1607 IF (rcode.NE.NF_NOERR) THEN 1606 1608 abort_message='Nudging: error -> no file apbp.nc' 1607 1609 CALL abort_gcm(modname,abort_message,1) 1608 1610 ENDIF 1609 1611 rcode = nf90_inq_varid(ncidpl, 'AP', varidap) 1610 IF (rcode /=NF_NOERR) THEN1612 IF (rcode.NE.NF_NOERR) THEN 1611 1613 abort_message='Nudging: error -> no AP variable in file apbp.nc' 1612 1614 CALL abort_gcm(modname,abort_message,1) 1613 1615 ENDIF 1614 1616 rcode = nf90_inq_varid(ncidpl, 'BP', varidbp) 1615 IF (rcode /=NF_NOERR) THEN1617 IF (rcode.NE.NF_NOERR) THEN 1616 1618 abort_message='Nudging: error -> no BP variable in file apbp.nc' 1617 1619 CALL abort_gcm(modname,abort_message,1) … … 1621 1623 1622 1624 ! Pression si guidage sur niveaux P variables 1623 if (guide_plevs ==2) then1625 if (guide_plevs.EQ.2) then 1624 1626 rcode = nf90_open('P.nc', nf90_nowrite, ncidp) 1625 IF (rcode /=NF_NOERR) THEN1627 IF (rcode.NE.NF_NOERR) THEN 1626 1628 abort_message='Nudging: error -> no file P.nc' 1627 1629 CALL abort_gcm(modname,abort_message,1) 1628 1630 ENDIF 1629 1631 rcode = nf90_inq_varid(ncidp, 'PRES', varidp) 1630 IF (rcode /=NF_NOERR) THEN1632 IF (rcode.NE.NF_NOERR) THEN 1631 1633 abort_message='Nudging: error -> no PRES variable in file P.nc' 1632 1634 CALL abort_gcm(modname,abort_message,1) 1633 1635 ENDIF 1634 1636 write(*,*),trim(modname)//' ncidp,varidp',ncidp,varidp 1635 if (ncidpl ==-99) ncidpl=ncidp1637 if (ncidpl.eq.-99) ncidpl=ncidp 1636 1638 endif 1637 1639 … … 1639 1641 if (guide_u) then 1640 1642 rcode = nf90_open('u.nc', nf90_nowrite, ncidu) 1641 IF (rcode /=NF_NOERR) THEN1643 IF (rcode.NE.NF_NOERR) THEN 1642 1644 abort_message='Nudging: error -> no file u.nc' 1643 1645 CALL abort_gcm(modname,abort_message,1) 1644 1646 ENDIF 1645 1647 rcode = nf90_inq_varid(ncidu, 'UWND', varidu) 1646 IF (rcode /=NF_NOERR) THEN1648 IF (rcode.NE.NF_NOERR) THEN 1647 1649 abort_message='Nudging: error -> no UWND variable in file u.nc' 1648 1650 CALL abort_gcm(modname,abort_message,1) 1649 1651 ENDIF 1650 1652 write(*,*),trim(modname)//' ncidu,varidu',ncidu,varidu 1651 if (ncidpl ==-99) ncidpl=ncidu1653 if (ncidpl.eq.-99) ncidpl=ncidu 1652 1654 1653 1655 1654 1656 status=NF90_INQ_DIMID(ncidu, "LONU", dimid) 1655 1657 status=NF90_INQUIRE_DIMENSION(ncidu,dimid,namedim,lendim) 1656 IF (lendim /=iip1) THEN1658 IF (lendim .NE. iip1) THEN 1657 1659 abort_message='dimension LONU different from iip1 in u.nc' 1658 1660 CALL abort_gcm(modname,abort_message,1) … … 1661 1663 status=NF90_INQ_DIMID(ncidu, "LATU", dimid) 1662 1664 status=NF90_INQUIRE_DIMENSION(ncidu,dimid,namedim,lendim) 1663 IF (lendim /=jjp1) THEN1665 IF (lendim .NE. jjp1) THEN 1664 1666 abort_message='dimension LATU different from jjp1 in u.nc' 1665 1667 CALL abort_gcm(modname,abort_message,1) … … 1671 1673 if (guide_v) then 1672 1674 rcode = nf90_open('v.nc', nf90_nowrite, ncidv) 1673 IF (rcode /=NF_NOERR) THEN1675 IF (rcode.NE.NF_NOERR) THEN 1674 1676 abort_message='Nudging: error -> no file v.nc' 1675 1677 CALL abort_gcm(modname,abort_message,1) 1676 1678 ENDIF 1677 1679 rcode = nf90_inq_varid(ncidv, 'VWND', varidv) 1678 IF (rcode /=NF_NOERR) THEN1680 IF (rcode.NE.NF_NOERR) THEN 1679 1681 abort_message='Nudging: error -> no VWND variable in file v.nc' 1680 1682 CALL abort_gcm(modname,abort_message,1) 1681 1683 ENDIF 1682 1684 write(*,*),trim(modname)//' ncidv,varidv',ncidv,varidv 1683 if (ncidpl ==-99) ncidpl=ncidv1685 if (ncidpl.eq.-99) ncidpl=ncidv 1684 1686 1685 1687 status=NF90_INQ_DIMID(ncidv, "LONV", dimid) 1686 1688 status=NF90_INQUIRE_DIMENSION(ncidv,dimid,namedim,lendim) 1687 1689 1688 IF (lendim /=iip1) THEN1690 IF (lendim .NE. iip1) THEN 1689 1691 abort_message='dimension LONV different from iip1 in v.nc' 1690 1692 CALL abort_gcm(modname,abort_message,1) … … 1694 1696 status=NF90_INQ_DIMID(ncidv, "LATV", dimid) 1695 1697 status=NF90_INQUIRE_DIMENSION(ncidv,dimid,namedim,lendim) 1696 IF (lendim /=jjm) THEN1698 IF (lendim .NE. jjm) THEN 1697 1699 abort_message='dimension LATV different from jjm in v.nc' 1698 1700 CALL abort_gcm(modname,abort_message,1) … … 1704 1706 if (guide_T) then 1705 1707 rcode = nf90_open('T.nc', nf90_nowrite, ncidt) 1706 IF (rcode /=NF_NOERR) THEN1708 IF (rcode.NE.NF_NOERR) THEN 1707 1709 abort_message='Nudging: error -> no file T.nc' 1708 1710 CALL abort_gcm(modname,abort_message,1) 1709 1711 ENDIF 1710 1712 rcode = nf90_inq_varid(ncidt, 'AIR', varidt) 1711 IF (rcode /=NF_NOERR) THEN1713 IF (rcode.NE.NF_NOERR) THEN 1712 1714 abort_message='Nudging: error -> no AIR variable in file T.nc' 1713 1715 CALL abort_gcm(modname,abort_message,1) 1714 1716 ENDIF 1715 1717 write(*,*),trim(modname)//' ncidT,varidT',ncidt,varidt 1716 if (ncidpl ==-99) ncidpl=ncidt1718 if (ncidpl.eq.-99) ncidpl=ncidt 1717 1719 1718 1720 status=NF90_INQ_DIMID(ncidt, "LONV", dimid) 1719 1721 status=NF90_INQUIRE_DIMENSION(ncidt,dimid,namedim,lendim) 1720 IF (lendim /=iip1) THEN1722 IF (lendim .NE. iip1) THEN 1721 1723 abort_message='dimension LONV different from iip1 in T.nc' 1722 1724 CALL abort_gcm(modname,abort_message,1) … … 1725 1727 status=NF90_INQ_DIMID(ncidt, "LATU", dimid) 1726 1728 status=NF90_INQUIRE_DIMENSION(ncidt,dimid,namedim,lendim) 1727 IF (lendim /=jjp1) THEN1729 IF (lendim .NE. jjp1) THEN 1728 1730 abort_message='dimension LATU different from jjp1 in T.nc' 1729 1731 CALL abort_gcm(modname,abort_message,1) … … 1735 1737 if (guide_Q) then 1736 1738 rcode = nf90_open('hur.nc', nf90_nowrite, ncidQ) 1737 IF (rcode /=NF_NOERR) THEN1739 IF (rcode.NE.NF_NOERR) THEN 1738 1740 abort_message='Nudging: error -> no file hur.nc' 1739 1741 CALL abort_gcm(modname,abort_message,1) 1740 1742 ENDIF 1741 1743 rcode = nf90_inq_varid(ncidQ, 'RH', varidQ) 1742 IF (rcode /=NF_NOERR) THEN1744 IF (rcode.NE.NF_NOERR) THEN 1743 1745 abort_message='Nudging: error -> no RH variable in file hur.nc' 1744 1746 CALL abort_gcm(modname,abort_message,1) 1745 1747 ENDIF 1746 1748 write(*,*),trim(modname)//' ncidQ,varidQ',ncidQ,varidQ 1747 if (ncidpl ==-99) ncidpl=ncidQ1749 if (ncidpl.eq.-99) ncidpl=ncidQ 1748 1750 1749 1751 1750 1752 status=NF90_INQ_DIMID(ncidQ, "LONV", dimid) 1751 1753 status=NF90_INQUIRE_DIMENSION(ncidQ,dimid,namedim,lendim) 1752 IF (lendim /=iip1) THEN1754 IF (lendim .NE. iip1) THEN 1753 1755 abort_message='dimension LONV different from iip1 in hur.nc' 1754 1756 CALL abort_gcm(modname,abort_message,1) … … 1757 1759 status=NF90_INQ_DIMID(ncidQ, "LATU", dimid) 1758 1760 status=NF90_INQUIRE_DIMENSION(ncidQ,dimid,namedim,lendim) 1759 IF (lendim /=jjp1) THEN1761 IF (lendim .NE. jjp1) THEN 1760 1762 abort_message='dimension LATU different from jjp1 in hur.nc' 1761 1763 CALL abort_gcm(modname,abort_message,1) … … 1765 1767 endif 1766 1768 ! Pression de surface 1767 if ((guide_P).OR.(guide_plevs ==1)) then1769 if ((guide_P).OR.(guide_plevs.EQ.1)) then 1768 1770 rcode = nf90_open('ps.nc', nf90_nowrite, ncidps) 1769 IF (rcode /=NF_NOERR) THEN1771 IF (rcode.NE.NF_NOERR) THEN 1770 1772 abort_message='Nudging: error -> no file ps.nc' 1771 1773 CALL abort_gcm(modname,abort_message,1) 1772 1774 ENDIF 1773 1775 rcode = nf90_inq_varid(ncidps, 'SP', varidps) 1774 IF (rcode /=NF_NOERR) THEN1776 IF (rcode.NE.NF_NOERR) THEN 1775 1777 abort_message='Nudging: error -> no SP variable in file ps.nc' 1776 1778 CALL abort_gcm(modname,abort_message,1) … … 1779 1781 endif 1780 1782 ! Coordonnee verticale 1781 if (guide_plevs ==0) then1783 if (guide_plevs.EQ.0) then 1782 1784 rcode = nf90_inq_varid(ncidpl, 'LEVEL', varidpl) 1783 IF (rcode /=0) rcode = nf90_inq_varid(ncidpl, 'PRESSURE', varidpl)1785 IF (rcode.NE.0) rcode = nf90_inq_varid(ncidpl, 'PRESSURE', varidpl) 1784 1786 write(*,*),trim(modname)//' ncidpl,varidpl',ncidpl,varidpl 1785 1787 endif 1786 1788 ! Coefs ap, bp pour calcul de la pression aux differents niveaux 1787 IF (guide_plevs==1) THEN 1788 status=nf90_put_var(ncidpl,varidap,apnc,[1],[nlevnc]) 1789 status=nf90_put_var(ncidpl,varidbp,bpnc,[1],[nlevnc]) 1790 ELSEIF (guide_plevs==0) THEN 1791 status=nf90_put_var(ncidpl,varidpl,apnc,[1],[nlevnc]) 1789 IF (guide_plevs.EQ.1) THEN 1790 #ifdef NC_DOUBLE 1791 status=NF_GET_VARA_DOUBLE(ncidpl,varidap,1,nlevnc,apnc) 1792 status=NF_GET_VARA_DOUBLE(ncidpl,varidbp,1,nlevnc,bpnc) 1793 #else 1794 status=NF_GET_VARA_REAL(ncidpl,varidap,1,nlevnc,apnc) 1795 status=NF_GET_VARA_REAL(ncidpl,varidbp,1,nlevnc,bpnc) 1796 #endif 1797 ELSEIF (guide_plevs.EQ.0) THEN 1798 #ifdef NC_DOUBLE 1799 status=NF_GET_VARA_DOUBLE(ncidpl,varidpl,1,nlevnc,apnc) 1800 #else 1801 status=NF_GET_VARA_REAL(ncidpl,varidpl,1,nlevnc,apnc) 1802 #endif 1792 1803 !FC Pour les corrections la pression est deja en Pascals on commente la ligne ci-dessous 1793 1804 IF(convert_Pa) apnc=apnc*100.! conversion en Pascals … … 1814 1825 IF (invert_y) start(2)=jjp1-jje_u+1 1815 1826 ! Pression 1816 if (guide_plevs==2) then 1817 status=nf90_put_var(ncidp,varidp,pnat2,start,count) 1827 if (guide_plevs.EQ.2) then 1828 #ifdef NC_DOUBLE 1829 status=NF_GET_VARA_DOUBLE(ncidp,varidp,start,count,pnat2) 1830 #else 1831 status=NF_GET_VARA_REAL(ncidp,varidp,start,count,pnat2) 1832 #endif 1818 1833 IF (invert_y) THEN 1819 1834 ! PRINT*,"Invertion impossible actuellement" … … 1825 1840 ! Vent zonal 1826 1841 if (guide_u) then 1827 status=nf90_put_var(ncidu,varidu,unat2,start,count) 1842 #ifdef NC_DOUBLE 1843 status=NF_GET_VARA_DOUBLE(ncidu,varidu,start,count,unat2) 1844 #else 1845 status=NF_GET_VARA_REAL(ncidu,varidu,start,count,unat2) 1846 #endif 1828 1847 IF (invert_y) THEN 1829 1848 ! PRINT*,"Invertion impossible actuellement" … … 1837 1856 ! Temperature 1838 1857 if (guide_T) then 1839 status=nf90_put_var(ncidt,varidt,tnat2,start,count) 1858 #ifdef NC_DOUBLE 1859 status=NF_GET_VARA_DOUBLE(ncidt,varidt,start,count,tnat2) 1860 #else 1861 status=NF_GET_VARA_REAL(ncidt,varidt,start,count,tnat2) 1862 #endif 1840 1863 IF (invert_y) THEN 1841 1864 ! PRINT*,"Invertion impossible actuellement" … … 1847 1870 ! Humidite 1848 1871 if (guide_Q) then 1849 status=nf90_put_var(ncidQ,varidQ,qnat2,start,count) 1872 #ifdef NC_DOUBLE 1873 status=NF_GET_VARA_DOUBLE(ncidQ,varidQ,start,count,qnat2) 1874 #else 1875 status=NF_GET_VARA_REAL(ncidQ,varidQ,start,count,qnat2) 1876 #endif 1850 1877 IF (invert_y) THEN 1851 1878 ! PRINT*,"Invertion impossible actuellement" … … 1862 1889 IF (invert_y) start(2)=jjm-jje_v+1 1863 1890 1864 status=nf90_put_var(ncidv,varidv,vnat2,start,count) 1891 #ifdef NC_DOUBLE 1892 status=NF_GET_VARA_DOUBLE(ncidv,varidv,start,count,vnat2) 1893 #else 1894 status=NF_GET_VARA_REAL(ncidv,varidv,start,count,vnat2) 1895 #endif 1865 1896 IF (invert_y) THEN 1866 1897 ! PRINT*,"Invertion impossible actuellement" … … 1871 1902 1872 1903 ! Pression de surface 1873 if ((guide_P).OR.(guide_plevs ==1)) then1904 if ((guide_P).OR.(guide_plevs.EQ.1)) then 1874 1905 start(2)=jjb_u 1875 1906 start(3)=timestep … … 1879 1910 count(4)=0 1880 1911 IF (invert_y) start(2)=jjp1-jje_u+1 1881 status=nf90_put_var(ncidps,varidps,psnat2,start,count) 1912 #ifdef NC_DOUBLE 1913 status=NF_GET_VARA_DOUBLE(ncidps,varidps,start,count,psnat2) 1914 #else 1915 status=NF_GET_VARA_REAL(ncidps,varidps,start,count,psnat2) 1916 #endif 1882 1917 IF (invert_y) THEN 1883 1918 ! PRINT*,"Invertion impossible actuellement" … … 1894 1929 IMPLICIT NONE 1895 1930 1931 include "netcdf.inc" 1896 1932 include "dimensions.h" 1897 1933 include "paramet.h" … … 1922 1958 write(*,*)trim(modname)//' : opening nudging files ' 1923 1959 ! Ap et Bp si niveaux de pression hybrides 1924 if (guide_plevs ==1) then1960 if (guide_plevs.EQ.1) then 1925 1961 write(*,*)trim(modname)//' Reading nudging on model levels' 1926 1962 rcode = nf90_open('apbp.nc', nf90_nowrite, ncidpl) 1927 IF (rcode /=NF_NOERR) THEN1963 IF (rcode.NE.NF_NOERR) THEN 1928 1964 abort_message='Nudging: error -> no file apbp.nc' 1929 1965 CALL abort_gcm(modname,abort_message,1) 1930 1966 ENDIF 1931 1967 rcode = nf90_inq_varid(ncidpl, 'AP', varidap) 1932 IF (rcode /=NF_NOERR) THEN1968 IF (rcode.NE.NF_NOERR) THEN 1933 1969 abort_message='Nudging: error -> no AP variable in file apbp.nc' 1934 1970 CALL abort_gcm(modname,abort_message,1) 1935 1971 ENDIF 1936 1972 rcode = nf90_inq_varid(ncidpl, 'BP', varidbp) 1937 IF (rcode /=NF_NOERR) THEN1973 IF (rcode.NE.NF_NOERR) THEN 1938 1974 abort_message='Nudging: error -> no BP variable in file apbp.nc' 1939 1975 CALL abort_gcm(modname,abort_message,1) … … 1942 1978 endif 1943 1979 ! Pression 1944 if (guide_plevs ==2) then1980 if (guide_plevs.EQ.2) then 1945 1981 rcode = nf90_open('P.nc', nf90_nowrite, ncidp) 1946 IF (rcode /=NF_NOERR) THEN1982 IF (rcode.NE.NF_NOERR) THEN 1947 1983 abort_message='Nudging: error -> no file P.nc' 1948 1984 CALL abort_gcm(modname,abort_message,1) 1949 1985 ENDIF 1950 1986 rcode = nf90_inq_varid(ncidp, 'PRES', varidp) 1951 IF (rcode /=NF_NOERR) THEN1987 IF (rcode.NE.NF_NOERR) THEN 1952 1988 abort_message='Nudging: error -> no PRES variable in file P.nc' 1953 1989 CALL abort_gcm(modname,abort_message,1) 1954 1990 ENDIF 1955 1991 write(*,*)trim(modname)//' ncidp,varidp',ncidp,varidp 1956 if (ncidpl ==-99) ncidpl=ncidp1992 if (ncidpl.eq.-99) ncidpl=ncidp 1957 1993 endif 1958 1994 ! Vent zonal 1959 1995 if (guide_u) then 1960 1996 rcode = nf90_open('u.nc', nf90_nowrite, ncidu) 1961 IF (rcode /=NF_NOERR) THEN1997 IF (rcode.NE.NF_NOERR) THEN 1962 1998 abort_message='Nudging: error -> no file u.nc' 1963 1999 CALL abort_gcm(modname,abort_message,1) 1964 2000 ENDIF 1965 2001 rcode = nf90_inq_varid(ncidu, 'UWND', varidu) 1966 IF (rcode /=NF_NOERR) THEN2002 IF (rcode.NE.NF_NOERR) THEN 1967 2003 abort_message='Nudging: error -> no UWND variable in file u.nc' 1968 2004 CALL abort_gcm(modname,abort_message,1) 1969 2005 ENDIF 1970 2006 write(*,*)trim(modname)//' ncidu,varidu',ncidu,varidu 1971 if (ncidpl ==-99) ncidpl=ncidu2007 if (ncidpl.eq.-99) ncidpl=ncidu 1972 2008 endif 1973 2009 … … 1975 2011 if (guide_v) then 1976 2012 rcode = nf90_open('v.nc', nf90_nowrite, ncidv) 1977 IF (rcode /=NF_NOERR) THEN2013 IF (rcode.NE.NF_NOERR) THEN 1978 2014 abort_message='Nudging: error -> no file v.nc' 1979 2015 CALL abort_gcm(modname,abort_message,1) 1980 2016 ENDIF 1981 2017 rcode = nf90_inq_varid(ncidv, 'VWND', varidv) 1982 IF (rcode /=NF_NOERR) THEN2018 IF (rcode.NE.NF_NOERR) THEN 1983 2019 abort_message='Nudging: error -> no VWND variable in file v.nc' 1984 2020 CALL abort_gcm(modname,abort_message,1) 1985 2021 ENDIF 1986 2022 write(*,*)trim(modname)//' ncidv,varidv',ncidv,varidv 1987 if (ncidpl ==-99) ncidpl=ncidv2023 if (ncidpl.eq.-99) ncidpl=ncidv 1988 2024 endif 1989 2025 ! Temperature 1990 2026 if (guide_T) then 1991 2027 rcode = nf90_open('T.nc', nf90_nowrite, ncidt) 1992 IF (rcode /=NF_NOERR) THEN2028 IF (rcode.NE.NF_NOERR) THEN 1993 2029 abort_message='Nudging: error -> no file T.nc' 1994 2030 CALL abort_gcm(modname,abort_message,1) 1995 2031 ENDIF 1996 2032 rcode = nf90_inq_varid(ncidt, 'AIR', varidt) 1997 IF (rcode /=NF_NOERR) THEN2033 IF (rcode.NE.NF_NOERR) THEN 1998 2034 abort_message='Nudging: error -> no AIR variable in file T.nc' 1999 2035 CALL abort_gcm(modname,abort_message,1) 2000 2036 ENDIF 2001 2037 write(*,*)trim(modname)//' ncidT,varidT',ncidt,varidt 2002 if (ncidpl ==-99) ncidpl=ncidt2038 if (ncidpl.eq.-99) ncidpl=ncidt 2003 2039 endif 2004 2040 ! Humidite 2005 2041 if (guide_Q) then 2006 2042 rcode = nf90_open('hur.nc', nf90_nowrite, ncidQ) 2007 IF (rcode /=NF_NOERR) THEN2043 IF (rcode.NE.NF_NOERR) THEN 2008 2044 abort_message='Nudging: error -> no file hur.nc' 2009 2045 CALL abort_gcm(modname,abort_message,1) 2010 2046 ENDIF 2011 2047 rcode = nf90_inq_varid(ncidQ, 'RH', varidQ) 2012 IF (rcode /=NF_NOERR) THEN2048 IF (rcode.NE.NF_NOERR) THEN 2013 2049 abort_message='Nudging: error -> no RH,variable in file hur.nc' 2014 2050 CALL abort_gcm(modname,abort_message,1) 2015 2051 ENDIF 2016 2052 write(*,*)trim(modname)//' ncidQ,varidQ',ncidQ,varidQ 2017 if (ncidpl ==-99) ncidpl=ncidQ2053 if (ncidpl.eq.-99) ncidpl=ncidQ 2018 2054 endif 2019 2055 ! Pression de surface 2020 if ((guide_P).OR.(guide_plevs ==1)) then2056 if ((guide_P).OR.(guide_plevs.EQ.1)) then 2021 2057 rcode = nf90_open('ps.nc', nf90_nowrite, ncidps) 2022 IF (rcode /=NF_NOERR) THEN2058 IF (rcode.NE.NF_NOERR) THEN 2023 2059 abort_message='Nudging: error -> no file ps.nc' 2024 2060 CALL abort_gcm(modname,abort_message,1) 2025 2061 ENDIF 2026 2062 rcode = nf90_inq_varid(ncidps, 'SP', varidps) 2027 IF (rcode /=NF_NOERR) THEN2063 IF (rcode.NE.NF_NOERR) THEN 2028 2064 abort_message='Nudging: error -> no SP variable in file ps.nc' 2029 2065 CALL abort_gcm(modname,abort_message,1) … … 2032 2068 endif 2033 2069 ! Coordonnee verticale 2034 if (guide_plevs ==0) then2070 if (guide_plevs.EQ.0) then 2035 2071 rcode = nf90_inq_varid(ncidpl, 'LEVEL', varidpl) 2036 IF (rcode /=0) rcode = nf90_inq_varid(ncidpl, 'PRESSURE', varidpl)2072 IF (rcode.NE.0) rcode = nf90_inq_varid(ncidpl, 'PRESSURE', varidpl) 2037 2073 write(*,*)trim(modname)//' ncidpl,varidpl',ncidpl,varidpl 2038 2074 endif 2039 2075 ! Coefs ap, bp pour calcul de la pression aux differents niveaux 2040 if (guide_plevs==1) then 2041 status=nf90_put_var(ncidpl,varidap,apnc,[1],[nlevnc]) 2042 status=nf90_put_var(ncidpl,varidbp,bpnc,[1],[nlevnc]) 2043 elseif (guide_plevs==0) THEN 2044 status=nf90_put_var(ncidpl,varidpl,apnc,[1],[nlevnc]) 2076 if (guide_plevs.EQ.1) then 2077 #ifdef NC_DOUBLE 2078 status=NF_GET_VARA_DOUBLE(ncidpl,varidap,1,nlevnc,apnc) 2079 status=NF_GET_VARA_DOUBLE(ncidpl,varidbp,1,nlevnc,bpnc) 2080 #else 2081 status=NF_GET_VARA_REAL(ncidpl,varidap,1,nlevnc,apnc) 2082 status=NF_GET_VARA_REAL(ncidpl,varidbp,1,nlevnc,bpnc) 2083 #endif 2084 elseif (guide_plevs.EQ.0) THEN 2085 #ifdef NC_DOUBLE 2086 status=NF_GET_VARA_DOUBLE(ncidpl,varidpl,1,nlevnc,apnc) 2087 #else 2088 status=NF_GET_VARA_REAL(ncidpl,varidpl,1,nlevnc,apnc) 2089 #endif 2045 2090 apnc=apnc*100.! conversion en Pascals 2046 2091 bpnc(:)=0. … … 2066 2111 IF (invert_y) start(2)=jjp1-jje_u+1 2067 2112 ! Pression 2068 if (guide_plevs==2) then 2069 status=nf90_put_var(ncidp,varidp,zu,start,count) 2113 if (guide_plevs.EQ.2) then 2114 #ifdef NC_DOUBLE 2115 status=NF_GET_VARA_DOUBLE(ncidp,varidp,start,count,zu) 2116 #else 2117 status=NF_GET_VARA_REAL(ncidp,varidp,start,count,zu) 2118 #endif 2070 2119 DO i=1,iip1 2071 2120 pnat2(i,:,:)=zu(:,:) … … 2080 2129 ! Vent zonal 2081 2130 if (guide_u) then 2082 status=nf90_put_var(ncidu,varidu,zu,start,count) 2131 #ifdef NC_DOUBLE 2132 status=NF_GET_VARA_DOUBLE(ncidu,varidu,start,count,zu) 2133 #else 2134 status=NF_GET_VARA_REAL(ncidu,varidu,start,count,zu) 2135 #endif 2083 2136 DO i=1,iip1 2084 2137 unat2(i,:,:)=zu(:,:) … … 2095 2148 ! Temperature 2096 2149 if (guide_T) then 2097 status=nf90_put_var(ncidt,varidt,zu,start,count) 2150 #ifdef NC_DOUBLE 2151 status=NF_GET_VARA_DOUBLE(ncidt,varidt,start,count,zu) 2152 #else 2153 status=NF_GET_VARA_REAL(ncidt,varidt,start,count,zu) 2154 #endif 2098 2155 DO i=1,iip1 2099 2156 tnat2(i,:,:)=zu(:,:) … … 2109 2166 ! Humidite 2110 2167 if (guide_Q) then 2111 status=nf90_put_var(ncidQ,varidQ,zu,start,count) 2168 #ifdef NC_DOUBLE 2169 status=NF_GET_VARA_DOUBLE(ncidQ,varidQ,start,count,zu) 2170 #else 2171 status=NF_GET_VARA_REAL(ncidQ,varidQ,start,count,zu) 2172 #endif 2112 2173 DO i=1,iip1 2113 2174 qnat2(i,:,:)=zu(:,:) … … 2126 2187 count(2)=jjnb_v 2127 2188 IF (invert_y) start(2)=jjm-jje_v+1 2128 status=nf90_put_var(ncidv,varidv,zv,start,count) 2189 #ifdef NC_DOUBLE 2190 status=NF_GET_VARA_DOUBLE(ncidv,varidv,start,count,zv) 2191 #else 2192 status=NF_GET_VARA_REAL(ncidv,varidv,start,count,zv) 2193 #endif 2129 2194 DO i=1,iip1 2130 2195 vnat2(i,:,:)=zv(:,:) … … 2140 2205 2141 2206 ! Pression de surface 2142 if ((guide_P).OR.(guide_plevs ==1)) then2207 if ((guide_P).OR.(guide_plevs.EQ.1)) then 2143 2208 start(2)=jjb_u 2144 2209 start(3)=timestep … … 2148 2213 count(4)=0 2149 2214 IF (invert_y) start(2)=jjp1-jje_u+1 2150 status=nf90_put_var(ncidps,varidps,zu(:,1),start,count) 2215 #ifdef NC_DOUBLE 2216 status=NF_GET_VARA_DOUBLE(ncidps,varidps,start,count,zu(:,1)) 2217 #else 2218 status=NF_GET_VARA_REAL(ncidps,varidps,start,count,zu(:,1)) 2219 #endif 2151 2220 DO i=1,iip1 2152 2221 psnat2(i,:)=zu(:,1) … … 2169 2238 USE comvert_mod, ONLY: presnivs 2170 2239 use netcdf95, only: nf95_def_var, nf95_put_var 2240 use netcdf, only: nf90_float 2171 2241 2172 2242 IMPLICIT NONE … … 2174 2244 INCLUDE "dimensions.h" 2175 2245 INCLUDE "paramet.h" 2246 INCLUDE "netcdf.inc" 2176 2247 INCLUDE "comgeom2.h" 2177 2248 … … 2225 2296 2226 2297 !$OMP MASTER 2227 IF (timestep ==0) THEN2298 IF (timestep.EQ.0) THEN 2228 2299 ! ---------------------------------------------- 2229 2300 ! initialisation fichier de sortie … … 2257 2328 2258 2329 ! Enregistrement des variables dimensions 2259 ierr = nf90_put_var(nid,vid_lonu,rlonu*180./pi) 2260 ierr = nf90_put_var(nid,vid_lonv,rlonv*180./pi) 2261 ierr = nf90_put_var(nid,vid_latu,rlatu*180./pi) 2262 ierr = nf90_put_var(nid,vid_latv,rlatv*180./pi) 2263 ierr = nf90_put_var(nid,vid_lev,presnivs) 2264 ierr = nf90_put_var(nid,vid_cu,cu) 2265 ierr = nf90_put_var(nid,vid_cv,cv) 2266 ierr = nf90_put_var(nid,vid_au,zu) 2267 ierr = nf90_put_var(nid,vid_av,zv) 2330 #ifdef NC_DOUBLE 2331 ierr = NF_PUT_VAR_DOUBLE(nid,vid_lonu,rlonu*180./pi) 2332 ierr = NF_PUT_VAR_DOUBLE(nid,vid_lonv,rlonv*180./pi) 2333 ierr = NF_PUT_VAR_DOUBLE(nid,vid_latu,rlatu*180./pi) 2334 ierr = NF_PUT_VAR_DOUBLE(nid,vid_latv,rlatv*180./pi) 2335 ierr = NF_PUT_VAR_DOUBLE(nid,vid_lev,presnivs) 2336 ierr = NF_PUT_VAR_DOUBLE(nid,vid_cu,cu) 2337 ierr = NF_PUT_VAR_DOUBLE(nid,vid_cv,cv) 2338 ierr = NF_PUT_VAR_DOUBLE(nid,vid_au,zu) 2339 ierr = NF_PUT_VAR_DOUBLE(nid,vid_av,zv) 2340 #else 2341 ierr = NF_PUT_VAR_REAL(nid,vid_lonu,rlonu*180./pi) 2342 ierr = NF_PUT_VAR_REAL(nid,vid_lonv,rlonv*180./pi) 2343 ierr = NF_PUT_VAR_REAL(nid,vid_latu,rlatu*180./pi) 2344 ierr = NF_PUT_VAR_REAL(nid,vid_latv,rlatv*180./pi) 2345 ierr = NF_PUT_VAR_REAL(nid,vid_lev,presnivs) 2346 ierr = NF_PUT_VAR_REAL(nid,vid_cu,cu) 2347 ierr = NF_PUT_VAR_REAL(nid,vid_cv,cv) 2348 ierr = NF_PUT_VAR_REAL(nid,vid_au,alpha_u) 2349 ierr = NF_PUT_VAR_REAL(nid,vid_av,alpha_v) 2350 #endif 2268 2351 call nf95_put_var(nid, varid_alpha_t, zt) 2269 2352 call nf95_put_var(nid, varid_alpha_q, zq) … … 2355 2438 !$OMP MASTER 2356 2439 2357 ierr = nf90_put_var(nid,varid,field_glo,start,count) 2440 #ifdef NC_DOUBLE 2441 ierr = NF_PUT_VARA_DOUBLE(nid,varid,start,count,field_glo) 2442 #else 2443 ierr = NF_PUT_VARA_REAL(nid,varid,start,count,field_glo) 2444 #endif 2445 2358 2446 ierr = NF_CLOSE(nid) 2359 2447 … … 2374 2462 do l=1,nl 2375 2463 do i=2,iim-1 2376 if(abs(x(i,l)) >1.e10) then2464 if(abs(x(i,l)).gt.1.e10) then 2377 2465 zz=0.5*(x(i-1,l)+x(i+1,l)) 2378 2466 print*,'correction ',i,l,x(i,l),zz -
LMDZ6/trunk/libf/dyn3dmem/iniacademic_loc.F90
r5075 r5084 23 23 USE ener_mod, ONLY: etot0,ptot0,ztot0,stot0,ang0 24 24 USE readTracFiles_mod, ONLY: addPhase 25 use lmdz_netcdf, only : NF90_NOWRITE,NF90_OPEN,NF90_NOERR,NF90_INQ_VARID,NF90_CLOSE, NF90_GET_VAR 25 use netcdf, only : NF90_NOWRITE,NF90_OPEN,NF90_NOERR,NF90_INQ_VARID 26 use netcdf, only : NF90_CLOSE, NF90_GET_VAR 27 26 28 27 29 ! Author: Frederic Hourdin original: 15/01/93 … … 153 155 relief=0. 154 156 ierr = NF90_OPEN ('relief_in.nc', NF90_NOWRITE,nid_relief) 155 if (ierr ==NF90_NOERR) THEN157 if (ierr.EQ.NF90_NOERR) THEN 156 158 ierr=NF90_INQ_VARID(nid_relief,'RELIEF',varid) 157 159 if (ierr==NF90_NOERR) THEN … … 255 257 tetastrat=ttp*zsig**(-kappa) 256 258 tetapv=tetastrat 257 IF ((ok_pv).AND.(zsig <0.1)) THEN259 IF ((ok_pv).AND.(zsig.LT.0.1)) THEN 258 260 tetapv=tetastrat*(zsig*10.)**(kappa*cpp*gam_pv/1000./g) 259 261 ENDIF -
LMDZ6/trunk/libf/dyn3dmem/leapfrog_loc.F
r5066 r5084 28 28 USE allocate_field_mod 29 29 USE call_dissip_mod, ONLY : call_dissip 30 USE lmdz_call_calfis, ONLY : call_calfis30 USE call_calfis_mod, ONLY : call_calfis 31 31 USE leapfrog_mod, ONLY : ucov,vcov,teta,ps,masse,phis,q,dq 32 32 & ,ucovm1,vcovm1,tetam1,massem1,psm1,p,pks,pk,pkf,flxw -
LMDZ6/trunk/libf/dyn3dmem/leapfrog_mod.F90
r5066 r5084 44 44 USE integrd_mod,ONLY : integrd_allocate 45 45 USE caladvtrac_mod,ONLY : caladvtrac_allocate 46 USE lmdz_call_calfis,ONLY : call_calfis_allocate46 USE call_calfis_mod,ONLY : call_calfis_allocate 47 47 USE call_dissip_mod, ONLY : call_dissip_allocate 48 48 IMPLICIT NONE -
LMDZ6/trunk/libf/dynphy_lonlat/phylmd/ce0l.F90
r5075 r5084 21 21 USE etat0phys, ONLY: etat0phys_netcdf 22 22 USE limit, ONLY: limit_netcdf 23 USE lmdz_netcdf, ONLY: NF90_OPEN, NF90_NOWRITE, NF90_CLOSE, NF90_NOERR, &23 USE netcdf, ONLY: NF90_OPEN, NF90_NOWRITE, NF90_CLOSE, NF90_NOERR, & 24 24 NF90_INQUIRE_DIMENSION, NF90_INQ_DIMID, NF90_INQ_VARID, NF90_GET_VAR 25 25 USE infotrac, ONLY: init_infotrac -
LMDZ6/trunk/libf/dynphy_lonlat/phylmd/limit_netcdf.F90
r5075 r5084 71 71 #ifndef CPP_1D 72 72 USE indice_sol_mod 73 USE lmdz_netcdf, ONLY: NF90_OPEN, NF90_CREATE, NF90_CLOSE, &73 USE netcdf, ONLY: NF90_OPEN, NF90_CREATE, NF90_CLOSE, & 74 74 NF90_DEF_DIM, NF90_DEF_VAR, NF90_PUT_VAR, NF90_PUT_ATT, & 75 NF90_NOERR, NF90_NOWRITE, NF90_GLOBAL, &75 NF90_NOERR, NF90_NOWRITE, NF90_DOUBLE, NF90_GLOBAL, & 76 76 NF90_CLOBBER, NF90_ENDDEF, NF90_UNLIMITED, NF90_FLOAT, & 77 NF90_64BIT_OFFSET , NF90_FORMAT77 NF90_64BIT_OFFSET 78 78 USE inter_barxy_m, ONLY: inter_barxy 79 79 USE netcdf95, ONLY: nf95_def_var, nf95_put_att, nf95_put_var … … 107 107 INTEGER :: id_tim, id_SST, id_BILS, id_RUG, id_ALB 108 108 INTEGER :: id_FOCE, id_FSIC, id_FTER, id_FLIC, varid_longitude, varid_latitude 109 INTEGER :: NF90_FORMAT 109 110 INTEGER :: ndays !--- Depending on the output calendar 110 111 CHARACTER(LEN=ns) :: str 111 112 112 113 !--- INITIALIZATIONS ----------------------------------------------------------- 114 #ifdef NC_DOUBLE 115 NF90_FORMAT=NF90_DOUBLE 116 #else 117 NF90_FORMAT=NF90_FLOAT 118 #endif 113 119 CALL inigeom 114 120 … … 321 327 ! 2) Dimensional variables have the same names as corresponding dimensions. 322 328 !----------------------------------------------------------------------------- 323 USE lmdz_netcdf, ONLY: NF90_OPEN, NF90_INQ_VARID, NF90_INQUIRE_VARIABLE, &329 USE netcdf, ONLY: NF90_OPEN, NF90_INQ_VARID, NF90_INQUIRE_VARIABLE, & 324 330 NF90_CLOSE, NF90_INQ_DIMID, NF90_INQUIRE_DIMENSION, NF90_GET_VAR, & 325 331 NF90_GET_ATT … … 740 746 ! Purpose: NetCDF errors handling. 741 747 !------------------------------------------------------------------------------- 742 USE lmdz_netcdf, ONLY : NF90_NOERR, NF90_STRERROR748 USE netcdf, ONLY : NF90_NOERR, NF90_STRERROR 743 749 IMPLICIT NONE 744 750 !------------------------------------------------------------------------------- -
LMDZ6/trunk/libf/filtrez/inifgn.F
r5079 r5084 28 28 pi = 2.* ASIN(1.) 29 29 C 30 DO i=1,iim30 DO 5 i=1,iim 31 31 dlonu(i)= xprimu( i ) 32 32 dlonv(i)= xprimv( i ) 33 END DO33 5 CONTINUE 34 34 35 DO i=1,iim35 DO 12 i=1,iim 36 36 sddv(i) = SQRT(dlonv(i)) 37 37 sddu(i) = SQRT(dlonu(i)) 38 38 unsddu(i) = 1./sddu(i) 39 39 unsddv(i) = 1./sddv(i) 40 END DO40 12 CONTINUE 41 41 C 42 DO j=1,iim43 DO i=1,iim42 DO 17 j=1,iim 43 DO 17 i=1,iim 44 44 vec(i,j) = 0. 45 45 vec1(i,j) = 0. 46 46 eignfnv(i,j) = 0. 47 47 eignfnu(i,j) = 0. 48 END DO 49 END DO 48 17 CONTINUE 50 49 c 51 50 c 52 51 eignfnv(1,1) = -1. 53 52 eignfnv(iim,1) = 1. 54 DO i=1,imm153 DO 20 i=1,imm1 55 54 eignfnv(i+1,i+1)= -1. 56 55 eignfnv(i,i+1) = 1. 57 END DO58 DO j=1,iim59 DO i=1,iim56 20 CONTINUE 57 DO 25 j=1,iim 58 DO 25 i=1,iim 60 59 eignfnv(i,j) = eignfnv(i,j)/(sddu(i)*sddv(j)) 61 END DO 62 END DO 63 DO j=1,iim 64 DO i=1,iim 60 25 CONTINUE 61 DO 30 j=1,iim 62 DO 30 i=1,iim 65 63 eignfnu(i,j) = -eignfnv(j,i) 66 END DO 67 END DO 64 30 CONTINUE 68 65 c 69 66 #ifdef CRAY -
LMDZ6/trunk/libf/misc/lmdz_xios.F90
r5066 r5084 12 12 MODULE lmdz_xios 13 13 !!!! Wrapper XIOS 14 !! => must be replaced lat er by official xios wrapper when available14 !! => must be replaced latter by official xios wrapper when available 15 15 16 16 LOGICAL,PARAMETER :: using_xios = .FALSE. -
LMDZ6/trunk/libf/misc/write_field.F90
r5075 r5084 1 ! 2 ! $Id$ 3 ! 1 4 module write_field 2 USE lmdz_netcdf, ONLY: nf_sync, nf90_put_var, nf_enddef, nf_def_dim, nf_unlimited, & 3 nf_clobber, nf90_format, nf_create, nf_def_var 4 5 implicit none 5 implicit none 6 6 7 7 integer, parameter :: MaxWriteField = 100 … … 73 73 subroutine WriteField_gen(name,Field,dimx,dimy,dimz) 74 74 implicit none 75 include 'netcdf.inc' 75 76 character(len=*) :: name 76 77 integer :: dimx,dimy,dimz … … 101 102 count(4)=1 102 103 103 status = nf90_put_var(FieldId(Index),FieldVarId(Index),Field,start,count)104 status = NF_PUT_VARA_DOUBLE(FieldId(Index),FieldVarId(Index),start,count,Field) 104 105 status = NF_SYNC(FieldId(Index)) 105 106 … … 108 109 subroutine CreateNewField(name,dimx,dimy,dimz) 109 110 implicit none 111 include 'netcdf.inc' 110 112 character(len=*) :: name 111 113 integer :: dimx,dimy,dimz … … 124 126 status = NF_DEF_DIM(FieldId(NbField),'Z',dimz,TabDim(3)) 125 127 status = NF_DEF_DIM(FieldId(NbField),'iter',NF_UNLIMITED,TabDim(4)) 126 status = NF_DEF_VAR(FieldId(NbField),FieldName(NbField),NF 90_FORMAT,4,TabDim,FieldVarId(NbField))128 status = NF_DEF_VAR(FieldId(NbField),FieldName(NbField),NF_DOUBLE,4,TabDim,FieldVarId(NbField)) 127 129 status = NF_ENDDEF(FieldId(NbField)) 128 130 129 131 end subroutine CreateNewField 132 133 130 134 131 135 subroutine write_field1D(name,Field) … … 281 285 //trim(int2str(pos+offset)) & 282 286 //'," ---> ",g22.16," | ")' 283 ! d �pent de l'impl�mention, sur compaq, c'est necessaire287 ! dépent de l'implémention, sur compaq, c'est necessaire 284 288 ! Pos=Pos+ColumnSize 285 289 endif -
LMDZ6/trunk/libf/misc/wxios.F90
r5075 r5084 70 70 reformaop = "average" 71 71 72 IF (op =="inst(X)") THEN72 IF (op.EQ."inst(X)") THEN 73 73 reformaop = "instant" 74 74 END IF 75 75 76 IF (op =="once") THEN76 IF (op.EQ."once") THEN 77 77 reformaop = "once" 78 78 END IF 79 79 80 IF (op =="t_max(X)") THEN80 IF (op.EQ."t_max(X)") THEN 81 81 reformaop = "maximum" 82 82 END IF 83 83 84 IF (op =="t_min(X)") THEN84 IF (op.EQ."t_min(X)") THEN 85 85 reformaop = "minimum" 86 86 END IF … … 604 604 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 605 605 SUBROUTINE wxios_add_field(fieldname, fieldgroup, fieldlongname, fieldunit) 606 USE lmdz_netcdf, only: nf90_fill_real606 USE netcdf, only: nf90_fill_real 607 607 608 608 IMPLICIT NONE … … 621 621 def = nf90_fill_real 622 622 623 IF (fieldunit ==" ") THEN623 IF (fieldunit .EQ. " ") THEN 624 624 newunit = "-" 625 625 ELSE … … 666 666 667 667 ! Ajout Abd pour NMC: 668 IF (fid <=6) THEN668 IF (fid.LE.6) THEN 669 669 axis_id="presnivs" 670 670 ELSE … … 682 682 683 683 !On selectionne le bon groupe de champs: 684 IF (fdim ==2) THEN684 IF (fdim.EQ.2) THEN 685 685 CALL xios_get_handle("fields_2D", fieldgroup) 686 686 ELSE … … 726 726 CALL xios_set_attr(field, level=field_level, enabled=.TRUE.) 727 727 728 IF (fdim ==2) THEN728 IF (fdim.EQ.2) THEN 729 729 !Si c'est un champ 2D: 730 730 IF (prt_level >= 10) THEN -
LMDZ6/trunk/libf/obsolete/wstats.F90
r5066 r5084 294 294 ! The number of dimensions 'nbdim' of the variable, as well as the IDs of 295 295 ! corresponding dimensions must be set (in array 'dimids'). 296 ! Upon successful definition of the variable, 'nvarid' contains the296 ! Upon successfull definition of the variable, 'nvarid' contains the 297 297 ! NetCDF ID of the variable. 298 298 ! The variables' attributes 'title' (Note that 'long_name' would be more -
LMDZ6/trunk/libf/phylmd/Dust/condsurfc.F
r5075 r5084 4 4 . lmt_omnat) 5 5 USE dimphy 6 USE lmdz_netcdf, ONLY: nf_close,nf_noerr,nf_inq_varid,nf_open,nf_nowrite,nf90_get_var7 6 IMPLICIT none 8 7 ! … … 11 10 ! 12 11 INCLUDE "dimensions.h" 13 12 INCLUDE "netcdf.inc" 13 14 14 REAL lmt_bcff(klon), lmt_bcbb(klon),lmt_bc_penner(klon) 15 15 REAL lmt_omff(klon), lmt_ombb(klon) … … 24 24 INTEGER debut(2),epais(2) 25 25 ! 26 IF (jour <0 .OR. jour>(360-1)) THEN27 IF (jour >(360-1).AND.jour<=367) THEN26 IF (jour.LT.0 .OR. jour.GT.(360-1)) THEN 27 IF (jour.GT.(360-1).AND.jour.LE.367) THEN 28 28 jour=360-1 29 29 print *,'JE: jour changed to jour= ',jour … … 35 35 ! 36 36 ierr = NF_OPEN ("limitcarbon.nc", NF_NOWRITE, nid1) 37 if (ierr /=NF_NOERR) then37 if (ierr.ne.NF_NOERR) then 38 38 write(6,*)' Pb d''ouverture du fichier limitbc.nc' 39 39 write(6,*)' ierr = ', ierr … … 49 49 ! 50 50 ierr = NF_INQ_VARID (nid1, "BCFF", nvarid) 51 ierr = nf90_get_var(nid1, nvarid, lmt_bcff, debut, epais) 51 !nhl #ifdef NC_DOUBLE 52 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, lmt_bcff) 52 53 ! print *,'IERR = ',ierr 53 54 ! print *,'NF_NOERR = ',NF_NOERR 54 55 ! print *,'debut = ',debut 55 56 ! print *,'epais = ',epais 56 IF (ierr /= NF_NOERR) THEN 57 !nhl #else 58 !nhl ierr = NF_GET_VARA_REAL (nid1, nvarid, debut, epais, lmt_bcff) 59 !nhl #endif 60 IF (ierr .NE. NF_NOERR) THEN 57 61 PRINT*, 'Pb de lecture pour les sources BC' 58 62 CALL exit(1) … … 61 65 ! 62 66 ierr = NF_INQ_VARID (nid1, "BCBB", nvarid) 63 ierr = nf90_get_var(nid1, nvarid, lmt_bcbb, debut, epais) 64 IF (ierr /= NF_NOERR) THEN 67 !nhl #ifdef NC_DOUBLE 68 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, lmt_bcbb) 69 !nhl #else 70 !nhl ierr = NF_GET_VARA_REAL (nid1, nvarid, debut, epais, lmt_bcbb) 71 !nhl #endif 72 IF (ierr .NE. NF_NOERR) THEN 65 73 PRINT*, 'Pb de lecture pour les sources BC-biomass' 66 74 CALL exit(1) … … 69 77 ! 70 78 ierr = NF_INQ_VARID (nid1, "BCBL", nvarid) 71 ierr = nf90_get_var(nid1, nvarid, lmt_bcbbl, debut, epais) 72 IF (ierr /= NF_NOERR) THEN 79 !nhl #ifdef NC_DOUBLE 80 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, lmt_bcbbl) 81 !nhl #else 82 !nhl ierr = NF_GET_VARA_REAL (nid1, nvarid, debut, epais, lmt_bcbbl) 83 !nhl #endif 84 IF (ierr .NE. NF_NOERR) THEN 73 85 PRINT*, 'Pb de lecture pour les sources BC low' 74 86 CALL exit(1) … … 77 89 ! 78 90 ierr = NF_INQ_VARID (nid1, "BCBH", nvarid) 79 ierr = nf90_get_var (nid1, nvarid, lmt_bcbbh, debut, epais) 80 IF (ierr /= NF_NOERR) THEN 91 !nhl #ifdef NC_DOUBLE 92 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, lmt_bcbbh) 93 !nhl #else 94 !nhl ierr = NF_GET_VARA_REAL (nid1, nvarid, debut, epais, lmt_bcbbh) 95 !nhl #endif 96 IF (ierr .NE. NF_NOERR) THEN 81 97 PRINT*, 'Pb de lecture pour les sources BC high' 82 98 CALL exit(1) … … 84 100 ! 85 101 ierr = NF_INQ_VARID (nid1, "TERP", nvarid) 86 ierr = nf90_get_var (nid1, nvarid, lmt_terp, debut, epais) 87 IF (ierr /= NF_NOERR) THEN 102 !nhl #ifdef NC_DOUBLE 103 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, lmt_terp) 104 !nhl #else 105 !nhl ierr = NF_GET_VARA_REAL (nid1, nvarid, debut, epais, lmt_terp) 106 !nhl #endif 107 IF (ierr .NE. NF_NOERR) THEN 88 108 PRINT*, 'Pb de lecture pour les sources Terpene' 89 109 CALL exit(1) … … 92 112 ! 93 113 ierr = NF_INQ_VARID (nid1, "BC_penner", nvarid) 94 ierr = nf90_get_var (nid1, nvarid, lmt_bc_penner, debut, epais) 95 IF (ierr /= NF_NOERR) THEN 114 !nhl #ifdef NC_DOUBLE 115 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, 116 . epais, lmt_bc_penner) 117 !nhl #else 118 !nhl ierr = NF_GET_VARA_REAL (nid1, nvarid, debut, epais, 119 !nhl . lmt_bc_penner) 120 !nhl #endif 121 IF (ierr .NE. NF_NOERR) THEN 96 122 PRINT*, 'Pb de lecture pour les sources BC Penner' 97 123 CALL exit(1) … … 100 126 ! 101 127 ierr = NF_INQ_VARID (nid1, "OMFF", nvarid) 102 ierr = nf90_get_var (nid1, nvarid, lmt_omff, debut, epais) 103 IF (ierr /= NF_NOERR) THEN 128 !nhl #ifdef NC_DOUBLE 129 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, lmt_omff) 130 !nhl #else 131 !nhl ierr = NF_GET_VARA_REAL (nid1, nvarid, debut, epais, lmt_omff) 132 !nhl #endif 133 IF (ierr .NE. NF_NOERR) THEN 104 134 PRINT*, 'Pb de lecture pour les sources om-ifossil' 105 135 CALL exit(1) -
LMDZ6/trunk/libf/phylmd/Dust/condsurfc_new.F
r5075 r5084 6 6 USE mod_phys_lmdz_para 7 7 USE dimphy 8 USE lmdz_netcdf, ONLY:nf90_get_var,nf_close,nf_noerr,nf_inq_varid,nf_open,nf_nowrite9 8 IMPLICIT none 10 9 c … … 13 12 c 14 13 INCLUDE "dimensions.h" 15 14 INCLUDE "netcdf.inc" 15 16 16 REAL lmt_bcff(klon), lmt_bcnff(klon), lmt_bcba(klon) 17 17 REAL lmt_omff(klon), lmt_omnff(klon), lmt_ombb(klon) … … 36 36 c 37 37 ! IF (jour.LT.0 .OR. jour.GT.(366-1)) THEN 38 IF (jour <0 .OR. jour>366) THEN38 IF (jour.LT.0 .OR. jour.GT.366) THEN 39 39 PRINT*,'Le jour demande n est pas correcte:', jour 40 40 print *,'JE: FORCED TO CONTINUE (emissions have … … 58 58 ! 59 59 ierr = NF_OPEN ("carbon_emissions.nc", NF_NOWRITE, nid1) 60 if (ierr /=NF_NOERR) then60 if (ierr.ne.NF_NOERR) then 61 61 write(6,*)' Pb d''ouverture du fichier limitbc.nc' 62 62 write(6,*)' ierr = ', ierr … … 67 67 ! 68 68 ierr = NF_INQ_VARID (nid1, "BCFF", nvarid) 69 ierr = nf90_get_var (nid1, nvarid, lmt_bcff_glo, debut, epais) 70 IF (ierr /= NF_NOERR) THEN 69 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, 70 . lmt_bcff_glo) 71 IF (ierr .NE. NF_NOERR) THEN 71 72 PRINT*, 'Pb de lecture pour les sources BC' 72 73 CALL exit(1) … … 78 79 ! 79 80 ierr = NF_INQ_VARID (nid1, "BCNFF", nvarid) 80 ierr = nf90_get_var (nid1, nvarid, lmt_bcnff_glo, debut, epais) 81 IF (ierr /= NF_NOERR) THEN 81 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, 82 . lmt_bcnff_glo) 83 IF (ierr .NE. NF_NOERR) THEN 82 84 PRINT*, 'Pb de lecture pour les sources BC' 83 85 CALL exit(1) … … 87 89 ! 88 90 ierr = NF_INQ_VARID (nid1, "BCBBL", nvarid) 89 ierr = nf90_get_var (nid1, nvarid, lmt_bcbbl_glo, debut, epais) 90 IF (ierr /= NF_NOERR) THEN 91 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, 92 . lmt_bcbbl_glo) 93 IF (ierr .NE. NF_NOERR) THEN 91 94 PRINT*, 'Pb de lecture pour les sources BC low' 92 95 CALL exit(1) … … 96 99 ! 97 100 ierr = NF_INQ_VARID (nid1, "BCBBH", nvarid) 98 ierr = nf90_get_var (nid1, nvarid, lmt_bcbbh_glo, debut, epais) 99 IF (ierr /= NF_NOERR) THEN 101 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, 102 . lmt_bcbbh_glo) 103 IF (ierr .NE. NF_NOERR) THEN 100 104 PRINT*, 'Pb de lecture pour les sources BC high' 101 105 CALL exit(1) … … 105 109 ! 106 110 ierr = NF_INQ_VARID (nid1, "BCBA", nvarid) 107 ierr = nf90_get_var (nid1, nvarid, lmt_bcba_glo, debut, epais) 108 IF (ierr /= NF_NOERR) THEN 111 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, 112 . lmt_bcba_glo) 113 IF (ierr .NE. NF_NOERR) THEN 109 114 PRINT*, 'Pb de lecture pour les sources BC' 110 115 CALL exit(1) … … 120 125 ! 121 126 ierr = NF_INQ_VARID (nid1, "OMFF", nvarid) 122 ierr = nf90_get_var (nid1, nvarid, lmt_omff_glo, debut, epais) 123 IF (ierr /= NF_NOERR) THEN 127 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, 128 . lmt_omff_glo) 129 IF (ierr .NE. NF_NOERR) THEN 124 130 PRINT*, 'Pb de lecture pour les sources OM' 125 131 CALL exit(1) … … 129 135 ! 130 136 ierr = NF_INQ_VARID (nid1, "OMNFF", nvarid) 131 ierr = nf90_get_var (nid1, nvarid, lmt_omnff_glo, debut, epais) 132 IF (ierr /= NF_NOERR) THEN 137 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, 138 . lmt_omnff_glo) 139 IF (ierr .NE. NF_NOERR) THEN 133 140 PRINT*, 'Pb de lecture pour les sources OM' 134 141 CALL exit(1) … … 138 145 ! 139 146 ierr = NF_INQ_VARID (nid1, "OMBBL", nvarid) 140 ierr = nf90_get_var (nid1, nvarid, lmt_ombbl_glo, debut, epais) 141 IF (ierr /= NF_NOERR) THEN 147 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, 148 . lmt_ombbl_glo) 149 IF (ierr .NE. NF_NOERR) THEN 142 150 PRINT*, 'Pb de lecture pour les sources OM low' 143 151 CALL exit(1) … … 147 155 ! 148 156 ierr = NF_INQ_VARID (nid1, "OMBBH", nvarid) 149 ierr = nf90_get_var (nid1, nvarid, lmt_ombbh_glo, debut, epais) 150 IF (ierr /= NF_NOERR) THEN 157 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, 158 . lmt_ombbh_glo) 159 IF (ierr .NE. NF_NOERR) THEN 151 160 PRINT*, 'Pb de lecture pour les sources OM high' 152 161 CALL exit(1) … … 156 165 ! 157 166 ierr = NF_INQ_VARID (nid1, "OMBA", nvarid) 158 ierr = nf90_get_var (nid1, nvarid, lmt_omba_glo, debut, epais) 159 IF (ierr /= NF_NOERR) THEN 167 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, 168 . lmt_omba_glo) 169 IF (ierr .NE. NF_NOERR) THEN 160 170 PRINT*, 'Pb de lecture pour les sources OM ship' 161 171 CALL exit(1) … … 165 175 ! 166 176 ierr = NF_INQ_VARID (nid1, "TERP", nvarid) 167 ierr = nf90_get_var (nid1, nvarid, lmt_terp_glo, debut, epais) 168 IF (ierr /= NF_NOERR) THEN 177 ierr = NF_GET_VARA_DOUBLE (nid1, nvarid, debut, epais, 178 . lmt_terp_glo) 179 IF (ierr .NE. NF_NOERR) THEN 169 180 PRINT*, 'Pb de lecture pour les sources Terpene' 170 181 CALL exit(1) -
LMDZ6/trunk/libf/phylmd/Dust/condsurfs.F
r5075 r5084 4 4 . lmt_dmsbio, lmt_h2sbio, lmt_dms, lmt_dmsconc) 5 5 USE dimphy 6 USE lmdz_netcdf, ONLY:nf_close,nf_noerr,nf_inq_varid,nf_open,nf_nowrite,nf90_get_var7 6 IMPLICIT none 8 7 c … … 11 10 c 12 11 INCLUDE "dimensions.h" 12 INCLUDE "netcdf.inc" 13 13 c 14 14 REAL lmt_so2h(klon), lmt_so2b(klon), lmt_so2bb(klon) … … 24 24 INTEGER debut(2),epais(2) 25 25 c 26 IF (jour <0 .OR. jour>(360-1)) THEN27 IF ((jour >(360-1)) .AND. (jour<=367)) THEN26 IF (jour.LT.0 .OR. jour.GT.(360-1)) THEN 27 IF ((jour.GT.(360-1)) .AND. (jour.LE.367)) THEN 28 28 jour=360-1 29 29 print *,'JE: jour changed to jour= ',jour … … 35 35 c 36 36 ierr = NF_OPEN ("limitsoufre.nc", NF_NOWRITE, nid) 37 if (ierr /=NF_NOERR) then37 if (ierr.ne.NF_NOERR) then 38 38 write(6,*)' Pb d''ouverture du fichier limitsoufre.nc' 39 39 write(6,*)' ierr = ', ierr … … 48 48 c 49 49 ierr = NF_INQ_VARID (nid, "VOLC", nvarid) 50 ierr = nf90_get_var(nid, nvarid, lmt_so2volc, debut, epais) 51 IF (ierr /= NF_NOERR) THEN 50 cnhl #ifdef NC_DOUBLE 51 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_so2volc) 52 cnhl #else 53 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_so2volc) 54 cnhl #endif 55 IF (ierr .NE. NF_NOERR) THEN 52 56 PRINT*, 'Pb de lecture pour les sources so2 volcan' 53 57 CALL exit(1) … … 55 59 c 56 60 ierr = NF_INQ_VARID (nid, "ALTI", nvarid) 57 ierr = nf90_get_var(nid, nvarid, lmt_altvolc, debut, epais) 58 IF (ierr /= NF_NOERR) THEN 61 cnhl #ifdef NC_DOUBLE 62 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_altvolc) 63 cnhl #else 64 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_altvolc) 65 cnhl #endif 66 IF (ierr .NE. NF_NOERR) THEN 59 67 PRINT*, 'Pb de lecture pour les altitudes volcan' 60 68 CALL exit(1) … … 64 72 c 65 73 ierr = NF_INQ_VARID (nid, "SO2ED95L", nvarid) 66 ierr = nf90_get_var(nid, nvarid, lmt_so2b, debut, epais) 67 IF (ierr /= NF_NOERR) THEN 74 cnhl #ifdef NC_DOUBLE 75 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_so2b) 76 cnhl #else 77 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_so2b) 78 cnhl #endif 79 IF (ierr .NE. NF_NOERR) THEN 68 80 PRINT*, 'Pb de lecture pour les sources so2 edgar low' 69 81 CALL exit(1) … … 71 83 c 72 84 ierr = NF_INQ_VARID (nid, "SO2ED95H", nvarid) 73 ierr = nf90_get_var(nid, nvarid, lmt_so2h, debut, epais) 74 IF (ierr /= NF_NOERR) THEN 85 cnhl #ifdef NC_DOUBLE 86 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_so2h) 87 cnhl #else 88 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_so2h) 89 cnhl #endif 90 IF (ierr .NE. NF_NOERR) THEN 75 91 PRINT*, 'Pb de lecture pour les sources so2 edgar high' 76 92 CALL exit(1) … … 80 96 c 81 97 ierr = NF_INQ_VARID (nid, "SO2H", nvarid) 82 ierr = nf90_get_var(nid, nvarid, lmt_so2h, debut, epais) 83 IF (ierr /= NF_NOERR) THEN 98 cnhl #ifdef NC_DOUBLE 99 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_so2h) 100 cnhl #else 101 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_so2h) 102 cnhl #endif 103 IF (ierr .NE. NF_NOERR) THEN 84 104 PRINT*, 'Pb de lecture pour les sources so2 haut' 85 105 CALL exit(1) … … 87 107 c 88 108 ierr = NF_INQ_VARID (nid, "SO2B", nvarid) 89 ierr = nf90_get_var(nid, nvarid, lmt_so2b, debut, epais) 90 IF (ierr /= NF_NOERR) THEN 109 cnhl #ifdef NC_DOUBLE 110 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_so2b) 111 cnhl #else 112 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_so2b) 113 cnhl #endif 114 IF (ierr .NE. NF_NOERR) THEN 91 115 PRINT*, 'Pb de lecture pour les sources so2 bas' 92 116 CALL exit(1) … … 96 120 c 97 121 ierr = NF_INQ_VARID (nid, "SO2BB", nvarid) 98 ierr = nf90_get_var(nid, nvarid, lmt_so2bb, debut, epais) 99 IF (ierr /= NF_NOERR) THEN 122 cnhl #ifdef NC_DOUBLE 123 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_so2bb) 124 cnhl #else 125 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_so2bb) 126 cnhl #endif 127 IF (ierr .NE. NF_NOERR) THEN 100 128 PRINT*, 'Pb de lecture pour les sources so2 bb' 101 129 CALL exit(1) … … 103 131 c 104 132 ierr = NF_INQ_VARID (nid, "SO2BA", nvarid) 105 ierr = nf90_get_var(nid, nvarid, lmt_so2ba, debut, epais) 106 IF (ierr /= NF_NOERR) THEN 133 cnhl #ifdef NC_DOUBLE 134 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_so2ba) 135 cnhl #else 136 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_so2ba) 137 cnhl #endif 138 IF (ierr .NE. NF_NOERR) THEN 107 139 PRINT*, 'Pb de lecture pour les sources so2 bateau' 108 140 CALL exit(1) … … 110 142 c 111 143 ierr = NF_INQ_VARID (nid, "DMSB", nvarid) 112 ierr = nf90_get_var(nid, nvarid, lmt_dmsbio, debut, epais) 113 IF (ierr /= NF_NOERR) THEN 144 cnhl #ifdef NC_DOUBLE 145 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_dmsbio) 146 cnhl #else 147 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dmsbio) 148 cnhl #endif 149 IF (ierr .NE. NF_NOERR) THEN 114 150 PRINT*, 'Pb de lecture pour les sources dms bio' 115 151 CALL exit(1) … … 117 153 c 118 154 ierr = NF_INQ_VARID (nid, "H2SB", nvarid) 119 ierr = nf90_get_var(nid, nvarid, lmt_h2sbio, debut, epais) 120 IF (ierr /= NF_NOERR) THEN 155 cnhl #ifdef NC_DOUBLE 156 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_h2sbio) 157 cnhl #else 158 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_h2sbio) 159 cnhl #endif 160 IF (ierr .NE. NF_NOERR) THEN 121 161 PRINT*, 'Pb de lecture pour les sources h2s bio' 122 162 CALL exit(1) 123 163 ENDIF 124 164 c 125 IF (flag_dms ==1) THEN165 IF (flag_dms.EQ.1) THEN 126 166 c 127 167 ierr = NF_INQ_VARID (nid, "DMSL", nvarid) 128 ierr = nf90_get_var(nid, nvarid, lmt_dms, debut, epais) 129 IF (ierr /= NF_NOERR) THEN 168 cnhl #ifdef NC_DOUBLE 169 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_dms) 170 cnhl #else 171 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dms) 172 cnhl #endif 173 IF (ierr .NE. NF_NOERR) THEN 130 174 PRINT*, 'Pb de lecture pour les sources dms liss' 131 175 CALL exit(1) 132 176 ENDIF 133 177 c 134 ELSEIF (flag_dms ==2) THEN178 ELSEIF (flag_dms.EQ.2) THEN 135 179 c 136 180 ierr = NF_INQ_VARID (nid, "DMSW", nvarid) 137 ierr = nf90_get_var(nid, nvarid, lmt_dms, debut, epais) 138 IF (ierr /= NF_NOERR) THEN 181 cnhl #ifdef NC_DOUBLE 182 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, lmt_dms) 183 cnhl #else 184 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dms) 185 cnhl #endif 186 IF (ierr .NE. NF_NOERR) THEN 139 187 PRINT*, 'Pb de lecture pour les sources dms wann' 140 188 CALL exit(1) 141 189 ENDIF 142 190 c 143 ELSEIF (flag_dms ==3) THEN191 ELSEIF (flag_dms.EQ.3) THEN 144 192 c 145 193 ierr = NF_INQ_VARID (nid, "DMSC1", nvarid) 146 ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais) 147 IF (ierr /= NF_NOERR) THEN 194 cnhl #ifdef NC_DOUBLE 195 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut,epais,lmt_dmsconc) 196 cnhl #else 197 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dmsconc) 198 cnhl #endif 199 IF (ierr .NE. NF_NOERR) THEN 148 200 PRINT*, 'Pb de lecture pour les sources dmsconc old' 149 201 CALL exit(1) 150 202 ENDIF 151 203 c 152 ELSEIF (flag_dms ==4) THEN204 ELSEIF (flag_dms.EQ.4) THEN 153 205 c 154 206 ierr = NF_INQ_VARID (nid, "DMSC2", nvarid) 155 ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais) 156 IF (ierr /= NF_NOERR) THEN 207 cnhl #ifdef NC_DOUBLE 208 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut,epais,lmt_dmsconc) 209 cnhl #else 210 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dmsconc) 211 cnhl #endif 212 IF (ierr .NE. NF_NOERR) THEN 157 213 PRINT*, 'Pb de lecture pour les sources dms conc 2' 158 214 CALL exit(1) 159 215 ENDIF 160 216 c 161 ELSEIF (flag_dms ==5) THEN217 ELSEIF (flag_dms.EQ.5) THEN 162 218 c 163 219 ierr = NF_INQ_VARID (nid, "DMSC3", nvarid) 164 ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais) 165 IF (ierr /= NF_NOERR) THEN 220 cnhl #ifdef NC_DOUBLE 221 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut,epais,lmt_dmsconc) 222 cnhl #else 223 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dmsconc) 224 cnhl #endif 225 IF (ierr .NE. NF_NOERR) THEN 166 226 PRINT*, 'Pb de lecture pour les sources dms conc 3' 167 227 CALL exit(1) 168 228 ENDIF 169 229 c 170 ELSEIF (flag_dms ==6) THEN230 ELSEIF (flag_dms.EQ.6) THEN 171 231 c 172 232 ierr = NF_INQ_VARID (nid, "DMSC4", nvarid) 173 ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais) 174 IF (ierr /= NF_NOERR) THEN 233 cnhl #ifdef NC_DOUBLE 234 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut,epais,lmt_dmsconc) 235 cnhl #else 236 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dmsconc) 237 cnhl #endif 238 IF (ierr .NE. NF_NOERR) THEN 175 239 PRINT*, 'Pb de lecture pour les sources dms conc 4' 176 240 CALL exit(1) 177 241 ENDIF 178 242 c 179 ELSEIF (flag_dms ==7) THEN243 ELSEIF (flag_dms.EQ.7) THEN 180 244 c 181 245 ierr = NF_INQ_VARID (nid, "DMSC5", nvarid) 182 ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais) 183 IF (ierr /= NF_NOERR) THEN 246 cnhl #ifdef NC_DOUBLE 247 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut,epais,lmt_dmsconc) 248 cnhl #else 249 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dmsconc) 250 cnhl #endif 251 IF (ierr .NE. NF_NOERR) THEN 184 252 PRINT*, 'Pb de lecture pour les sources dms conc 5' 185 253 CALL exit(1) 186 254 ENDIF 187 255 c 188 ELSEIF (flag_dms ==8) THEN256 ELSEIF (flag_dms.EQ.8) THEN 189 257 c 190 258 ierr = NF_INQ_VARID (nid, "DMSC6", nvarid) 191 ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais) 192 IF (ierr /= NF_NOERR) THEN 259 cnhl #ifdef NC_DOUBLE 260 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut,epais,lmt_dmsconc) 261 cnhl #else 262 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dmsconc) 263 cnhl #endif 264 IF (ierr .NE. NF_NOERR) THEN 193 265 PRINT*, 'Pb de lecture pour les sources dms conc 6' 194 266 CALL exit(1) 195 267 ENDIF 196 268 c 197 ELSEIF (flag_dms ==9) THEN269 ELSEIF (flag_dms.EQ.9) THEN 198 270 c 199 271 ierr = NF_INQ_VARID (nid, "DMSC7", nvarid) 200 ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais) 201 IF (ierr /= NF_NOERR) THEN 272 cnhl #ifdef NC_DOUBLE 273 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut,epais,lmt_dmsconc) 274 cnhl #else 275 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dmsconc) 276 cnhl #endif 277 IF (ierr .NE. NF_NOERR) THEN 202 278 PRINT*, 'Pb de lecture pour les sources dms conc 7' 203 279 CALL exit(1) 204 280 ENDIF 205 281 c 206 ELSEIF (flag_dms ==10) THEN282 ELSEIF (flag_dms.EQ.10) THEN 207 283 c 208 284 ierr = NF_INQ_VARID (nid, "DMSC8", nvarid) 209 ierr = nf90_get_var(nid, nvarid, lmt_dmsconc, debut, epais) 210 IF (ierr /= NF_NOERR) THEN 285 cnhl #ifdef NC_DOUBLE 286 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut,epais,lmt_dmsconc) 287 cnhl #else 288 cnhl ierr = NF_GET_VARA_REAL (nid, nvarid, debut, epais, lmt_dmsconc) 289 cnhl #endif 290 IF (ierr .NE. NF_NOERR) THEN 211 291 PRINT*, 'Pb de lecture pour les sources dms conc 8' 212 292 CALL exit(1) … … 222 302 ierr = NF_CLOSE(nid) 223 303 c 224 IF (flag_dms <=2) THEN304 IF (flag_dms.LE.2) THEN 225 305 DO i=1, klon 226 306 lmt_dmsconc(i)=0.0 -
LMDZ6/trunk/libf/phylmd/Dust/condsurfs_new.F
r5075 r5084 9 9 USE mod_phys_lmdz_para 10 10 USE dimphy 11 USE lmdz_netcdf, ONLY: nf90_get_var,nf_inq_varid,nf_close,nf_noerr,nf_open,nf_nowrite12 11 IMPLICIT none 13 12 c … … 16 15 c 17 16 INCLUDE "dimensions.h" 17 INCLUDE "netcdf.inc" 18 18 c 19 19 REAL lmt_so2b(klon), lmt_so2h(klon), lmt_so2nff(klon) … … 40 40 INTEGER debut(2),epais(2) 41 41 c 42 IF (jour <0 .OR. jour>(366-1)) THEN42 IF (jour.LT.0 .OR. jour.GT.(366-1)) THEN 43 43 PRINT*,'Le jour demande n est pas correcte:', jour 44 44 print *,'JE: FORCED TO CONTINUE (emissions have … … 62 62 ! 63 63 ierr = NF_OPEN ("sulphur_emissions_antro.nc", NF_NOWRITE, nid) 64 if (ierr /=NF_NOERR) then64 if (ierr.ne.NF_NOERR) then 65 65 write(6,*)' Pb d''ouverture du fichier sulphur_emissions_antro' 66 66 write(6,*)' ierr = ', ierr … … 72 72 ! 73 73 ierr = NF_INQ_VARID (nid, "SO2FF_LOW", nvarid) 74 ierr = nf90_get_var(nid, nvarid, lmt_so2b_glo, debut, epais)75 IF (ierr /=NF_NOERR) THEN74 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais,lmt_so2b_glo) 75 IF (ierr .NE. NF_NOERR) THEN 76 76 PRINT*, 'Pb de lecture pour les sources so2 low' 77 77 print *,'JE klon, jour, debut ,epais ',klon_glo,jour,debut,epais … … 84 84 ! 85 85 ierr = NF_INQ_VARID (nid, "SO2FF_HIGH", nvarid) 86 ierr = nf90_get_var(nid, nvarid, lmt_so2h_glo, debut, epais)87 IF (ierr /=NF_NOERR) THEN86 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais,lmt_so2h_glo) 87 IF (ierr .NE. NF_NOERR) THEN 88 88 PRINT*, 'Pb de lecture pour les sources so2 high' 89 89 CALL exit(1) … … 93 93 ! 94 94 ierr = NF_INQ_VARID (nid, "SO2BBH", nvarid) 95 ierr = nf90_get_var(nid, nvarid, lmt_so2bb_h_glo, debut, epais) 96 IF (ierr /= NF_NOERR) THEN 95 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, 96 . epais, lmt_so2bb_h_glo) 97 IF (ierr .NE. NF_NOERR) THEN 97 98 PRINT*, 'Pb de lecture pour les sources so2 BB high' 98 99 CALL exit(1) … … 102 103 ! 103 104 ierr = NF_INQ_VARID (nid, "SO2BBL", nvarid) 104 ierr = nf90_get_var(nid, nvarid, lmt_so2bb_l_glo, debut, epais) 105 IF (ierr /= NF_NOERR) THEN 105 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, 106 . epais, lmt_so2bb_l_glo) 107 IF (ierr .NE. NF_NOERR) THEN 106 108 PRINT*, 'Pb de lecture pour les sources so2 BB low' 107 109 CALL exit(1) … … 111 113 ! 112 114 ierr = NF_INQ_VARID (nid, "SO2BA", nvarid) 113 ierr = nf90_get_var(nid, nvarid, lmt_so2ba_glo, debut, epais)114 IF (ierr /=NF_NOERR) THEN115 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut,epais,lmt_so2ba_glo) 116 IF (ierr .NE. NF_NOERR) THEN 115 117 PRINT*, 'Pb de lecture pour les sources so2 ship' 116 118 CALL exit(1) … … 120 122 ! 121 123 ierr = NF_INQ_VARID (nid, "SO2NFF", nvarid) 122 ierr = nf90_get_var(nid, nvarid, lmt_so2nff_glo, debut, epais) 123 IF (ierr /= NF_NOERR) THEN 124 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, 125 . lmt_so2nff_glo) 126 IF (ierr .NE. NF_NOERR) THEN 124 127 PRINT*, 'Pb de lecture pour les sources so2 non FF' 125 128 CALL exit(1) … … 132 135 !======================================================================= 133 136 ierr = NF_OPEN ("sulphur_emissions_nat.nc", NF_NOWRITE, nid) 134 if (ierr /=NF_NOERR) then137 if (ierr.ne.NF_NOERR) then 135 138 write(6,*)' Pb d''ouverture du fichier sulphur_emissions_nat' 136 139 write(6,*)' ierr = ', ierr … … 141 144 c 142 145 ierr = NF_INQ_VARID (nid, "DMSB", nvarid) 143 ierr = nf90_get_var(nid, nvarid, lmt_dmsbio_glo, debut, epais)144 IF (ierr /=NF_NOERR) THEN146 ierr = NF_GET_VARA_DOUBLE (nid, nvarid,debut,epais,lmt_dmsbio_glo) 147 IF (ierr .NE. NF_NOERR) THEN 145 148 PRINT*, 'Pb de lecture pour les sources dms bio' 146 149 CALL exit(1) … … 150 153 c 151 154 ierr = NF_INQ_VARID (nid, "H2SB", nvarid) 152 ierr = nf90_get_var(nid, nvarid, lmt_h2sbio_glo, debut, epais)153 IF (ierr /=NF_NOERR) THEN155 ierr = NF_GET_VARA_DOUBLE (nid, nvarid,debut,epais,lmt_h2sbio_glo) 156 IF (ierr .NE. NF_NOERR) THEN 154 157 PRINT*, 'Pb de lecture pour les sources h2s bio' 155 158 CALL exit(1) … … 158 161 c Ocean surface concentration of dms (emissions are computed later) 159 162 c 160 IF (flag_dms ==4) THEN163 IF (flag_dms.EQ.4) THEN 161 164 c 162 165 ierr = NF_INQ_VARID (nid, "DMSC2", nvarid) 163 ierr = nf90_get_var(nid, nvarid, lmt_dmsconc_glo, debut, epais)164 IF (ierr /=NF_NOERR) THEN166 ierr = NF_GET_VARA_DOUBLE (nid,nvarid,debut,epais,lmt_dmsconc_glo) 167 IF (ierr .NE. NF_NOERR) THEN 165 168 PRINT*, 'Pb de lecture pour les sources dms conc 2' 166 169 CALL exit(1) … … 187 190 print *,' Jour = ',jour 188 191 ierr = NF_OPEN ("sulphur_emissions_volc.nc", NF_NOWRITE, nid) 189 if (ierr /=NF_NOERR) then192 if (ierr.ne.NF_NOERR) then 190 193 write(6,*)' Pb d''ouverture du fichier sulphur_emissions_volc' 191 194 write(6,*)' ierr = ', ierr … … 197 200 ! ierr = NF_INQ_VARID (nid, "VOLC", nvarid) 198 201 ierr = NF_INQ_VARID (nid, "flx_volc_cont", nvarid) 199 ierr = nf90_get_var(nid, nvarid, lmt_so2volc_cont_glo, debut, epais) 200 IF (ierr /= NF_NOERR) THEN 202 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, 203 . lmt_so2volc_cont_glo) 204 IF (ierr .NE. NF_NOERR) THEN 201 205 PRINT*, 'Pb de lecture pour les sources so2 volcan (cont)' 202 206 CALL exit(1) … … 210 214 ! ierr = NF_INQ_VARID (nid, "ALTI", nvarid) 211 215 ierr = NF_INQ_VARID (nid, "flx_volc_altcont", nvarid) 212 ierr = nf90_get_var(nid, nvarid, lmt_altvolc_cont_glo, debut, epais) 213 IF (ierr /= NF_NOERR) THEN 216 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, 217 . lmt_altvolc_cont_glo) 218 IF (ierr .NE. NF_NOERR) THEN 214 219 PRINT*, 'Pb de lecture pour les altitudes volcan (cont)' 215 220 CALL exit(1) … … 219 224 c 220 225 ierr = NF_INQ_VARID (nid, "flx_volc_expl", nvarid) 221 ierr = nf90_get_var(nid, nvarid, lmt_so2volc_expl_glo, debut, epais) 222 IF (ierr /= NF_NOERR) THEN 226 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, 227 . lmt_so2volc_expl_glo) 228 IF (ierr .NE. NF_NOERR) THEN 223 229 PRINT*, 'Pb de lecture pour les sources so2 volcan (expl)' 224 230 CALL exit(1) … … 231 237 c 232 238 ierr = NF_INQ_VARID (nid, "flx_volc_altexpl", nvarid) 233 ierr = nf90_get_var(nid, nvarid, lmt_altvolc_expl_glo, debut, epais) 234 IF (ierr /= NF_NOERR) THEN 239 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debut, epais, 240 . lmt_altvolc_expl_glo) 241 IF (ierr .NE. NF_NOERR) THEN 235 242 PRINT*, 'Pb de lecture pour les altitudes volcan' 236 243 CALL exit(1) -
LMDZ6/trunk/libf/phylmd/Dust/phys_output_write_spl_mod.F90
r5075 r5084 390 390 USE ioipsl, ONLY: histend, histsync 391 391 USE iophy, ONLY: set_itau_iophy, histwrite_phy 392 USE lmdz_netcdf, ONLY: nf90_fill_real392 USE netcdf, ONLY: nf90_fill_real 393 393 ! ug Pour les sorties XIOS 394 394 USE lmdz_xios, ONLY: xios_update_calendar, using_xios -
LMDZ6/trunk/libf/phylmd/Dust/phytracr_spl_mod.F90
r5075 r5084 1441 1441 call abort_gcm('phytracr_mod', 'pb in ok_chimdust 1 SCDU',1) 1442 1442 endif 1443 if ( (id_codu <= 0) .or. ( id_fine<=0) ) then1443 if ( (id_codu .le. 0) .or. ( id_fine.le.0) ) then 1444 1444 call abort_gcm('phytracr_mod', 'pb in ok_chimdust 1',1) 1445 1445 endif … … 2437 2437 ENDDO 2438 2438 ENDDO 2439 IF (iflag_conv ==2) THEN2439 IF (iflag_conv.EQ.2) THEN 2440 2440 ! Tiedke 2441 2441 CALL cltrac_spl(pdtphys,coefh,yu1,yv1,t_seri,tmp_var, & 2442 2442 aux_var2,paprs,pplay,aux_var3) 2443 2443 2444 ELSE IF (iflag_conv >=3) THEN2444 ELSE IF (iflag_conv.GE.3) THEN 2445 2445 !KE 2446 2446 CALL cltrac(pdtphys, coefh,t_seri,tmp_var,aux_var2,paprs,pplay, & … … 2494 2494 2495 2495 2496 IF (iflag_conv >=3) THEN2496 IF (iflag_conv.GE.3) THEN 2497 2497 2498 2498 IF (logitime) THEN … … 2786 2786 2787 2787 2788 IF (iflag_conv ==2) THEN2788 IF (iflag_conv.EQ.2) THEN 2789 2789 2790 2790 IF (logitime) THEN … … 2839 2839 print *,'iflag_conv bef incloud',iflag_conv 2840 2840 2841 IF (iflag_conv ==2) THEN2841 IF (iflag_conv.EQ.2) THEN 2842 2842 ! Tiedke 2843 2843 CALL incloud_scav(.false.,qmin,qmax,masse,henry,kk,prfl, & … … 2877 2877 ! . his_dhbclsc,his_dhbccon,tr_seri) 2878 2878 2879 IF (iflag_conv ==2) THEN2879 IF (iflag_conv.EQ.2) THEN 2880 2880 ! Tiedke 2881 2881 … … 2991 2991 ! . dtrconv,tr_seri) 2992 2992 ! ------------------------------------------------------------- 2993 IF (iflag_conv ==2) THEN2993 IF (iflag_conv.EQ.2) THEN 2994 2994 ! Tiedke 2995 2995 CALL trconvect(pplay,t_seri,pdtphys,pmfu,pmfd,pen_u,pde_u, & … … 3000 3000 ENDDO 3001 3001 3002 ELSE IF (iflag_conv >=3) THEN3002 ELSE IF (iflag_conv.GE.3) THEN 3003 3003 ! KE 3004 3004 print *,'JE: KE in phytracr_spl' … … 3164 3164 3165 3165 3166 IF (iflag_conv >=3) THEN3166 IF (iflag_conv.GE.3) THEN 3167 3167 IF (logitime) THEN 3168 3168 CALL SYSTEM_CLOCK(COUNT=clock_start) … … 3195 3195 ql_incl = ql_incloud_ref 3196 3196 ! choix du lessivage 3197 IF (iflag_lscav == 3 .OR. iflag_lscav ==4) THEN3197 IF (iflag_lscav .EQ. 3 .OR. iflag_lscav .EQ. 4) THEN 3198 3198 !IF (.false.) THEN ! test #DFB (Binta) sans lsc_scav_spl 3199 3199 print *,'JE iflag_lscav',iflag_lscav … … 3362 3362 CALL satellite_out_spla(jD_cur,jH_cur,pdtphys,rlat,rlon, & 3363 3363 masque_aqua_cur, masque_terra_cur ) 3364 IF (jH_cur-pdtphys/86400. <0.) THEN3364 IF (jH_cur-pdtphys/86400. .LT. 0.) THEN 3365 3365 !new utc day: put in 0 everything 3366 3366 !JE20150518<< … … 3470 3470 ENDDO 3471 3471 3472 IF (jH_cur+pdtphys/86400. >= 1.) THEN3472 IF (jH_cur+pdtphys/86400. .GE. 1.) THEN 3473 3473 ! print *,'last step of the day' 3474 3474 DO i=1,klon 3475 IF (masque_aqua(i) >0) THEN3475 IF (masque_aqua(i).GT. 0) THEN 3476 3476 aod550_aqua(i)=aod550_aqua(i)/masque_aqua(i) 3477 3477 aod670_aqua(i)=aod670_aqua(i)/masque_aqua(i) … … 3506 3506 aod865_dustsco_aqua(i)= -999. 3507 3507 ENDIF 3508 IF (masque_terra(i) >0) THEN3508 IF (masque_terra(i).GT. 0) THEN 3509 3509 aod550_terra(i)=aod550_terra(i)/masque_terra(i) 3510 3510 aod670_terra(i)=aod670_terra(i)/masque_terra(i) … … 3635 3635 fluxss(:)=0.0 3636 3636 DO i=1, klon 3637 IF (iregion_ind(i) >0) THEN ! LAND3637 IF (iregion_ind(i).GT.0) THEN ! LAND 3638 3638 ! SULFUR EMISSIONS 3639 3639 fluxh2sff(i)= (lmt_so2ff_l(i)+lmt_so2ff_h(i))*frach2sofso2* & … … 3656 3656 fluxff(i)=fluxbcff(i)+fluxomff(i) 3657 3657 ENDIF 3658 IF (iregion_bb(i) >0) THEN ! LAND3658 IF (iregion_bb(i).GT.0) THEN ! LAND 3659 3659 ! SULFUR EMISSIONS 3660 3660 fluxso2bb(i) =scale_param_bb(iregion_bb(i)) * fracso2emis * & … … 4515 4515 ENDIF 4516 4516 4517 IF (test_sca ==0 ) THEN4517 IF (test_sca .EQ. 0 ) THEN 4518 4518 ! READ file!! 4519 4519 call read_scalenc(filescaleparams,paramname_ind, & … … 4556 4556 4557 4557 jH_sca=jH_sca+pdtphys/(24.*3600.) 4558 IF (jH_sca >(sca_resol)/24.) THEN4558 IF (jH_sca.GT.(sca_resol)/24.) THEN 4559 4559 test_sca=0 4560 4560 jH_sca=jH_ini … … 4568 4568 USE mod_grid_phy_lmdz 4569 4569 USE mod_phys_lmdz_para 4570 USE lmdz_netcdf, ONLY:nf_open,nf_close,nf_inq_varid,nf_nowrite,nf_noerr,nf90_get_var4571 4570 IMPLICIT NONE 4571 4572 include "netcdf.inc" 4572 4573 4573 4574 CHARACTER*800 filescaleparams … … 4588 4589 !nci=NCOPN(trim(adjustl(filescaleparams)),NCNOWRIT,rcode) 4589 4590 ierr = NF_OPEN (trim(adjustl(filescaleparams)),NF_NOWRITE, nid) 4590 if (ierr ==NF_NOERR) THEN4591 if (ierr .EQ. NF_NOERR) THEN 4591 4592 debutread=step_sca 4592 4593 countread=1 … … 4597 4598 print *,varname 4598 4599 ierr = NF_INQ_VARID (nid,trim(adjustl(varname)), nvarid) 4599 ierr = nf90_get_var (nid, nvarid, auxreal, debutread, countread) 4600 IF (ierr /= NF_NOERR) THEN 4600 ierr = NF_GET_VARA_DOUBLE (nid, nvarid, debutread, & 4601 countread, auxreal) 4602 IF (ierr .NE. NF_NOERR) THEN 4601 4603 PRINT*, 'Pb de lecture pour modvalues' 4602 4604 print *,'JE scale_var, step_sca',trim(adjustl(varname)),step_sca -
LMDZ6/trunk/libf/phylmd/Dust/read_dust.F
r5075 r5084 3 3 USE mod_grid_phy_lmdz 4 4 USE mod_phys_lmdz_para 5 USE lmdz_netcdf, ONLY:nf90_get_var6 5 IMPLICIT NONE 7 6 c 8 7 INCLUDE "dimensions.h" 9 8 INCLUDE "paramet.h" 9 INCLUDE "netcdf.inc" 10 10 c 11 11 INTEGER step, nbjour … … 45 45 c 46 46 start(3)=step 47 48 status=nf90_get_var(ncid1,varid1,dust_nc_glo,start,count) 49 47 c 48 #ifdef NC_DOUBLE 49 ! status=NF_GET_VARA_DOUBLE(ncid1,varid1,start,count,dust_nc) 50 status=NF_GET_VARA_DOUBLE(ncid1,varid1,start,count,dust_nc_glo) 51 #else 52 ! status=NF_GET_VARA_REAL(ncid1,varid1,start,count,dust_nc) 53 status=NF_GET_VARA_REAL(ncid1,varid1,start,count,dust_nc_glo) 54 #endif 55 c 50 56 ! call correctbid(iim,jjp1,dust_nc) 51 57 call correctbid(nbp_lon,nbp_lat,dust_nc_glo) -
LMDZ6/trunk/libf/phylmd/Dust/read_surface.F90
r5075 r5084 10 10 USE mod_phys_lmdz_para 11 11 USE iophy 12 USE lmdz_netcdf, ONLY:nf_inq_varid,nf_noerr,nf90_get_var 12 ! USE netcdf 13 13 IMPLICIT NONE 14 14 15 INCLUDE "netcdf.inc" 15 16 INCLUDE "dimensions.h" 16 17 INCLUDE "paramet.h" … … 64 65 ! print *,'stat,i',status,i,outcycle,aux4s 65 66 ! print *,'ifclause',status.NE. NF_NOERR ,outcycle == .false. 66 IF ((.not.(status /=NF_NOERR) ).and.( .not. outcycle )) THEN67 IF ((.not.(status.NE. NF_NOERR) ).and.( .not. outcycle )) THEN 67 68 outcycle=.true. 68 69 latstr=aux4s … … 74 75 varid=NCVID(ncid,latstr,rcode) 75 76 76 status=nf90_get_var(ncid,varid,lats_glo,startj,endj) 77 #ifdef NC_DOUBLE 78 status=NF_GET_VARA_DOUBLE(ncid,varid,startj,endj,lats_glo) 79 #else 80 status=NF_GET_VARA_REAL(ncid,varid,startj,endj,lats_glo) 81 #endif 77 82 ! print *,latstr,varid,status,jjp1,rcode 78 83 ! IF (status .NE. NF_NOERR) print*,'NOOOOOOO' … … 108 113 ! Lecture 109 114 ! ----------------------- 110 status=nf90_get_var(ncid,varid,tmp_dyn_glo,start,count) 115 #ifdef NC_DOUBLE 116 status=NF_GET_VARA_DOUBLE(ncid,varid,start,count,tmp_dyn_glo) 117 #else 118 status=NF_GET_VARA_REAL(ncid,varid,start,count,tmp_dyn_glo) 119 #endif 111 120 112 121 ! call dump2d(iip1,jjp1,tmp_dyn,'tmp_dyn ') -
LMDZ6/trunk/libf/phylmd/Dust/read_vent.F
r5075 r5084 3 3 USE mod_grid_phy_lmdz 4 4 USE mod_phys_lmdz_para 5 USE lmdz_netcdf, ONLY: nf90_get_var6 5 ! USE write_field_phy 7 6 IMPLICIT NONE … … 9 8 c INCLUDE "dimphy.h" 10 9 INCLUDE "paramet.h" 10 INCLUDE "netcdf.inc" 11 11 c 12 12 INTEGER step, nbjour … … 51 51 c 52 52 start(3)=step 53 54 status=nf90_get_var(ncidu1,varidu1,u10m_nc_glo,start,count) 55 56 status=nf90_get_var(ncidv1,varidv1,v10m_nc_glo,start,count) 57 53 c 54 #ifdef NC_DOUBLE 55 ! status=NF_GET_VARA_DOUBLE(ncidu1,varidu1,start,count,u10m_nc) 56 status=NF_GET_VARA_DOUBLE(ncidu1,varidu1,start,count,u10m_nc_glo) 57 #else 58 ! status=NF_GET_VARA_REAL(ncidu1,varidu1,start,count,u10m_nc) 59 status=NF_GET_VARA_REAL(ncidu1,varidu1,start,count,u10m_nc_glo) 60 #endif 61 ! print *,status 62 c 63 #ifdef NC_DOUBLE 64 ! status=NF_GET_VARA_DOUBLE(ncidv1,varidv1,start,count,v10m_nc) 65 status=NF_GET_VARA_DOUBLE(ncidv1,varidv1,start,count,v10m_nc_glo) 66 #else 67 ! status=NF_GET_VARA_REAL(ncidv1,varidv1,start,count,v10m_nc) 68 status=NF_GET_VARA_REAL(ncidv1,varidv1,start,count,v10m_nc_glo) 69 #endif 70 c 58 71 59 72 ! print *,'beforebidcor u10m_nc', u10m_nc(1,jjp1) … … 118 131 do l=1,nl 119 132 do i=2,iim-1 120 if(abs(x(i,l)) >1.e10) then133 if(abs(x(i,l)).gt.1.e10) then 121 134 zz=0.5*(x(i-1,l)+x(i+1,l)) 122 135 c print*,'correction ',i,l,x(i,l),zz -
LMDZ6/trunk/libf/phylmd/StratAer/interp_sulf_input.F90
r5075 r5084 6 6 USE netcdf95, ONLY: nf95_close, nf95_gw_var, nf95_inq_dimid, & 7 7 nf95_inq_varid, nf95_inquire_dimension, nf95_open 8 USE lmdz_netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite8 USE netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite 9 9 10 10 USE mod_grid_phy_lmdz -
LMDZ6/trunk/libf/phylmd/StratAer/stratH2O_methox.F90
r5075 r5084 8 8 USE netcdf95, ONLY: nf95_close, nf95_gw_var, nf95_inq_dimid, & 9 9 nf95_inq_varid, nf95_inquire_dimension, nf95_open 10 USE lmdz_netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite10 USE netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite 11 11 12 12 USE mod_grid_phy_lmdz … … 79 79 ! 80 80 81 IF (debutphy .OR. mth_cur /=mth_pre) THEN81 IF (debutphy .OR. mth_cur .NE. mth_pre) THEN 82 82 83 83 !--preparation of global fields -
LMDZ6/trunk/libf/phylmd/condsurf.F90
r5075 r5084 7 7 USE indice_sol_mod 8 8 USE time_phylmdz_mod, ONLY: annee_ref 9 USE lmdz_netcdf, ONLY: nf90_get_var,nf_open,nf_inq_varid,nf_noerr,nf_close,nf_nowrite10 9 IMPLICIT NONE 11 10 … … 21 20 ! lmt_bils: bilan chaleur au sol (a utiliser pour "slab-ocean") 22 21 22 include "netcdf.inc" 23 23 INTEGER nid, nvarid 24 24 INTEGER debut(2) … … 110 110 END IF 111 111 PRINT *, 'debut,epais', debut, epais, 'jour,jourvrai', jour, jourvrai 112 ierr = nf90_get_var(nid, nvarid, lmt_bils_glo, debut, epais) 112 #ifdef NC_DOUBLE 113 ierr = nf_get_vara_double(nid, nvarid, debut, epais, lmt_bils_glo) 114 #else 115 ierr = nf_get_vara_real(nid, nvarid, debut, epais, lmt_bils_glo) 116 #endif 113 117 IF (ierr/=nf_noerr) THEN 114 118 CALL abort_physic('condsurf', 'Lecture echouee pour <BILS>', 1) -
LMDZ6/trunk/libf/phylmd/create_etat0_unstruct_mod.F90
r5075 r5084 23 23 SUBROUTINE init_create_etat0_unstruct 24 24 USE lmdz_xios 25 USE lmdz_netcdf, ONLY: NF90_NOWRITE,nf90_close,nf90_noerr,nf90_open25 USE netcdf 26 26 USE mod_phys_lmdz_para 27 27 IMPLICIT NONE … … 126 126 CALL xios_recv_field("qs",qsol_mpi) 127 127 CALL xios_recv_field("mask",zmasq_mpi) 128 IF (landice_opt <2) CALL xios_recv_field("landice",lic_mpi)128 IF (landice_opt .LT. 2) CALL xios_recv_field("landice",lic_mpi) 129 129 ENDIF 130 130 CALL scatter_omp(tsol_mpi,tsol) 131 131 CALL scatter_omp(qsol_mpi,qsol) 132 132 CALL scatter_omp(zmasq_mpi,zmasq) 133 IF (landice_opt <2) CALL scatter_omp(lic_mpi,lic)133 IF (landice_opt .LT. 2) CALL scatter_omp(lic_mpi,lic) 134 134 135 135 radsol(:) = 0.0 … … 143 143 144 144 pctsrf(:,:) = 0 145 IF (landice_opt <2) THEN145 IF (landice_opt .LT. 2) THEN 146 146 pctsrf(:,is_lic)=lic 147 147 WHERE(pctsrf(:,is_lic)<EPSFRA) pctsrf(:,is_lic)=0. … … 180 180 !--- The ocean and sea-ice fractions are not changed. 181 181 !--- This option is only available if landice_opt<2. 182 IF (landice_opt <2) THEN182 IF (landice_opt .LT. 2) THEN 183 183 no_ter_antartique=.FALSE. 184 184 CALL getin_p('no_ter_antartique',no_ter_antartique) -
LMDZ6/trunk/libf/phylmd/dyn1d/1DUTILS.h
r5075 r5084 673 673 USE logic_mod, ONLY: fxyhypb, ysinus 674 674 USE temps_mod, ONLY: annee_ref, day_ini, day_ref, itau_dyn 675 USE lmdz_netcdf, ONLY:nf_open,nf_write,nf_noerr676 675 677 676 IMPLICIT NONE … … 683 682 include "dimensions.h" 684 683 !!#include "control.h" 684 include "netcdf.inc" 685 685 686 686 ! Arguments: … … 820 820 USE logic_mod, ONLY: fxyhypb, ysinus 821 821 USE temps_mod, ONLY: annee_ref,day_end,day_ref,itau_dyn,itaufin 822 USE lmdz_netcdf, ONLY:nf_open,nf_write,nf_noerr823 822 824 823 IMPLICIT NONE … … 830 829 include "dimensions.h" 831 830 !!#include "control.h" 831 include "netcdf.inc" 832 832 833 833 ! Arguments: -
LMDZ6/trunk/libf/phylmd/dyn1d/1D_decl_cases.h
r5075 r5084 1 INCLUDE "netcdf.inc" 1 2 2 3 ! Declarations specifiques au cas Toga -
LMDZ6/trunk/libf/phylmd/dyn1d/mod_1D_amma_read.F90
r5075 r5084 1 1 MODULE mod_1D_amma_read 2 USE lmdz_netcdf, ONLY: nf90_get_var,nf_open,nf_noerr,nf_open,nf_nowrite,& 3 nf_inq_dimid,nf_inq_dimlen,nf_strerror,nf_inq_varid 2 4 3 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 5 4 !Declarations specifiques au cas AMMA … … 7 6 ! Option du cas AMMA ou on impose la discretisation verticale (Ap,Bp) 8 7 integer nlev_amma, nt_amma 8 9 9 10 10 integer year_ini_amma, day_ini_amma, mth_ini_amma … … 59 59 implicit none 60 60 61 INCLUDE "netcdf.inc" 62 61 63 INTEGER nid,rid,ierr 62 64 … … 65 67 ierr = NF_OPEN(fich_amma,NF_NOWRITE,nid) 66 68 print*,'fich_amma,NF_NOWRITE,nid ',fich_amma,NF_NOWRITE,nid 67 if (ierr /=NF_NOERR) then69 if (ierr.NE.NF_NOERR) then 68 70 write(*,*) 'ERROR: GROS Pb opening forcings nc file ' 69 71 write(*,*) NF_STRERROR(ierr) … … 72 74 !....................................................................... 73 75 ierr=NF_INQ_DIMID(nid,'lev',rid) 74 IF (ierr /=NF_NOERR) THEN76 IF (ierr.NE.NF_NOERR) THEN 75 77 print*, 'Oh probleme lecture dimension zz' 76 78 ENDIF … … 81 83 print*,'nid,rid',nid,rid 82 84 nt_amma=0 83 IF (ierr /=NF_NOERR) THEN85 IF (ierr.NE.NF_NOERR) THEN 84 86 stop 'probleme lecture dimension sens' 85 87 ENDIF … … 170 172 171 173 174 END MODULE mod_1D_amma_read 172 175 !===================================================================== 173 176 subroutine read_amma(nid,nlevel,ntime & … … 177 180 !program reading forcings of the AMMA case study 178 181 implicit none 182 INCLUDE "netcdf.inc" 179 183 180 184 integer ntime,nlevel … … 264 268 ! call catchaxis(nid,ntime,nlevel,time,z,ierr) 265 269 266 ierr = nf90_get_var(nid,var3didin(1),zz) 270 #ifdef NC_DOUBLE 271 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(1),zz) 272 #else 273 ierr = NF_GET_VAR_REAL(nid,var3didin(1),zz) 274 #endif 267 275 if(ierr/=NF_NOERR) then 268 276 write(*,*) NF_STRERROR(ierr) … … 271 279 ! write(*,*)'lecture z ok',zz 272 280 273 ierr = nf90_get_var(nid,var3didin(2),temp) 281 #ifdef NC_DOUBLE 282 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(2),temp) 283 #else 284 ierr = NF_GET_VAR_REAL(nid,var3didin(2),temp) 285 #endif 274 286 if(ierr/=NF_NOERR) then 275 287 write(*,*) NF_STRERROR(ierr) … … 278 290 ! write(*,*)'lecture th ok',temp 279 291 280 ierr = nf90_get_var(nid,var3didin(3),qv) 292 #ifdef NC_DOUBLE 293 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(3),qv) 294 #else 295 ierr = NF_GET_VAR_REAL(nid,var3didin(3),qv) 296 #endif 281 297 if(ierr/=NF_NOERR) then 282 298 write(*,*) NF_STRERROR(ierr) … … 285 301 ! write(*,*)'lecture qv ok',qv 286 302 287 ierr = nf90_get_var(nid,var3didin(4),u) 303 #ifdef NC_DOUBLE 304 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(4),u) 305 #else 306 ierr = NF_GET_VAR_REAL(nid,var3didin(4),u) 307 #endif 288 308 if(ierr/=NF_NOERR) then 289 309 write(*,*) NF_STRERROR(ierr) … … 292 312 ! write(*,*)'lecture u ok',u 293 313 294 ierr = nf90_get_var(nid,var3didin(5),v) 314 #ifdef NC_DOUBLE 315 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(5),v) 316 #else 317 ierr = NF_GET_VAR_REAL(nid,var3didin(5),v) 318 #endif 295 319 if(ierr/=NF_NOERR) then 296 320 write(*,*) NF_STRERROR(ierr) … … 299 323 ! write(*,*)'lecture v ok',v 300 324 301 ierr = nf90_get_var(nid,var3didin(6),dw) 325 #ifdef NC_DOUBLE 326 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(6),dw) 327 #else 328 ierr = NF_GET_VAR_REAL(nid,var3didin(6),dw) 329 #endif 302 330 if(ierr/=NF_NOERR) then 303 331 write(*,*) NF_STRERROR(ierr) … … 306 334 ! write(*,*)'lecture w ok',dw 307 335 308 ierr = nf90_get_var(nid,var3didin(7),dt) 336 #ifdef NC_DOUBLE 337 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(7),dt) 338 #else 339 ierr = NF_GET_VAR_REAL(nid,var3didin(7),dt) 340 #endif 309 341 if(ierr/=NF_NOERR) then 310 342 write(*,*) NF_STRERROR(ierr) … … 313 345 ! write(*,*)'lecture dt ok',dt 314 346 315 ierr = nf90_get_var(nid,var3didin(8),dq) 347 #ifdef NC_DOUBLE 348 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(8),dq) 349 #else 350 ierr = NF_GET_VAR_REAL(nid,var3didin(8),dq) 351 #endif 316 352 if(ierr/=NF_NOERR) then 317 353 write(*,*) NF_STRERROR(ierr) … … 320 356 ! write(*,*)'lecture dq ok',dq 321 357 322 ierr = nf90_get_var(nid,var3didin(9),sens) 358 #ifdef NC_DOUBLE 359 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(9),sens) 360 #else 361 ierr = NF_GET_VAR_REAL(nid,var3didin(9),sens) 362 #endif 323 363 if(ierr/=NF_NOERR) then 324 364 write(*,*) NF_STRERROR(ierr) … … 327 367 ! write(*,*)'lecture sens ok',sens 328 368 329 ierr = nf90_get_var(nid,var3didin(10),flat) 369 #ifdef NC_DOUBLE 370 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(10),flat) 371 #else 372 ierr = NF_GET_VAR_REAL(nid,var3didin(10),flat) 373 #endif 330 374 if(ierr/=NF_NOERR) then 331 375 write(*,*) NF_STRERROR(ierr) … … 334 378 ! write(*,*)'lecture flat ok',flat 335 379 336 ierr = nf90_get_var(nid,var3didin(11),pp) 380 #ifdef NC_DOUBLE 381 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(11),pp) 382 #else 383 ierr = NF_GET_VAR_REAL(nid,var3didin(11),pp) 384 #endif 337 385 if(ierr/=NF_NOERR) then 338 386 write(*,*) NF_STRERROR(ierr) … … 381 429 382 430 383 if (forcing_type ==6) then431 if (forcing_type.eq.6) then 384 432 ! Check that initial day of the simulation consistent with AMMA case: 385 if (annee_ref /=2006) then433 if (annee_ref.ne.2006) then 386 434 print*,'Pour AMMA, annee_ref doit etre 2006' 387 435 print*,'Changer annee_ref dans run.def' 388 436 stop 389 437 endif 390 if (annee_ref ==2006 .and. day1<day_ini_amma) then391 print*,'AMMA a d �but�le 10 juillet 2006',day1,day_ini_amma438 if (annee_ref.eq.2006 .and. day1.lt.day_ini_amma) then 439 print*,'AMMA a débuté le 10 juillet 2006',day1,day_ini_amma 392 440 print*,'Changer dayref dans run.def' 393 441 stop 394 442 endif 395 if (annee_ref ==2006 .and. day1>day_ini_amma+1) then443 if (annee_ref.eq.2006 .and. day1.gt.day_ini_amma+1) then 396 444 print*,'AMMA a fini le 11 juillet' 397 445 print*,'Changer dayref ou nday dans run.def' … … 416 464 417 465 it_amma1=INT(timeit/dt_amma)+1 418 IF (it_amma1 ==nt_amma) THEN466 IF (it_amma1 .EQ. nt_amma) THEN 419 467 it_amma2=it_amma1 420 468 ELSE … … 424 472 time_amma2=(it_amma2-1)*dt_amma 425 473 426 if (it_amma1 >nt_amma) then474 if (it_amma1 .gt. nt_amma) then 427 475 write(*,*) 'PB-stop: day, it_amma1, it_amma2, timeit: ' & 428 476 & ,day,day_ini_amma,it_amma1,it_amma2,timeit/86400. … … 431 479 432 480 ! time interpolation: 433 IF (it_amma1 ==it_amma2) THEN481 IF (it_amma1 .EQ. it_amma2) THEN 434 482 frac=0. 435 483 ELSE … … 455 503 END 456 504 457 END MODULE mod_1D_amma_read -
LMDZ6/trunk/libf/phylmd/dyn1d/mod_1D_cases_read.F90
r5075 r5084 1 ! 2 ! $Id$ 3 ! 1 4 MODULE mod_1D_cases_read 2 USE lmdz_netcdf, ONLY: nf_noerr,nf_strerror,nf_inq_varid,nf_inq_dimlen,nf_inq_dimid,&3 nf_nowrite,nf_open,nf90_get_var4 5 5 6 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 6 7 !Declarations specifiques au cas standard 7 8 character*80 :: fich_cas 8 ! Discr?tisation 9 ! Discr?tisation 9 10 integer nlev_cas, nt_cas 10 11 … … 56 57 real, allocatable:: q_prof_cas(:) 57 58 real, allocatable:: u_prof_cas(:) 58 real, allocatable:: v_prof_cas(:) 59 real, allocatable:: v_prof_cas(:) 59 60 60 61 real, allocatable:: vitw_prof_cas(:) … … 81 82 82 83 real lat_prof_cas,sens_prof_cas,ts_prof_cas,ustar_prof_cas 83 84 84 85 85 86 … … 87 88 88 89 SUBROUTINE read_1D_cas 90 implicit none 91 92 INCLUDE "netcdf.inc" 89 93 90 94 INTEGER nid,rid,ierr … … 95 99 ierr = NF_OPEN(fich_cas,NF_NOWRITE,nid) 96 100 print*,'fich_cas,NF_NOWRITE,nid ',fich_cas,NF_NOWRITE,nid 97 if (ierr /=NF_NOERR) then101 if (ierr.NE.NF_NOERR) then 98 102 write(*,*) 'ERROR: GROS Pb opening forcings nc file ' 99 103 write(*,*) NF_STRERROR(ierr) … … 102 106 !....................................................................... 103 107 ierr=NF_INQ_DIMID(nid,'lat',rid) 104 IF (ierr /=NF_NOERR) THEN108 IF (ierr.NE.NF_NOERR) THEN 105 109 print*, 'Oh probleme lecture dimension lat' 106 110 ENDIF … … 109 113 !....................................................................... 110 114 ierr=NF_INQ_DIMID(nid,'lon',rid) 111 IF (ierr /=NF_NOERR) THEN115 IF (ierr.NE.NF_NOERR) THEN 112 116 print*, 'Oh probleme lecture dimension lon' 113 117 ENDIF … … 116 120 !....................................................................... 117 121 ierr=NF_INQ_DIMID(nid,'lev',rid) 118 IF (ierr /=NF_NOERR) THEN122 IF (ierr.NE.NF_NOERR) THEN 119 123 print*, 'Oh probleme lecture dimension zz' 120 124 ENDIF … … 125 129 print*,'nid,rid',nid,rid 126 130 nt_cas=0 127 IF (ierr /=NF_NOERR) THEN131 IF (ierr.NE.NF_NOERR) THEN 128 132 stop 'probleme lecture dimension sens' 129 133 ENDIF … … 133 137 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 134 138 !profils moyens: 135 allocate(plev_cas(nlev_cas,nt_cas)) 139 allocate(plev_cas(nlev_cas,nt_cas)) 136 140 allocate(z_cas(nlev_cas,nt_cas)) 137 141 allocate(t_cas(nlev_cas,nt_cas),q_cas(nlev_cas,nt_cas),rh_cas(nlev_cas,nt_cas)) … … 200 204 !profils environnementaux: 201 205 deallocate(plev_cas) 202 206 203 207 deallocate(z_cas) 204 208 deallocate(t_cas,q_cas,rh_cas) … … 206 210 deallocate(u_cas) 207 211 deallocate(v_cas) 208 212 209 213 !forcing 210 214 deallocate(ht_cas,vt_cas,dt_cas,dtrad_cas) … … 253 257 END SUBROUTINE deallocate_1D_cases 254 258 255 !===================================================================== 259 260 END MODULE mod_1D_cases_read 261 !===================================================================== 256 262 subroutine read_cas(nid,nlevel,ntime & 257 263 & ,zz,pp,temp,qv,rh,theta,rv,u,v,ug,vg,w, & … … 260 266 261 267 !program reading forcing of the case study 268 implicit none 269 INCLUDE "netcdf.inc" 262 270 263 271 integer ntime,nlevel … … 288 296 integer var3didin(nbvar3d) 289 297 290 ierr=NF_INQ_VARID(nid,"zz",var3didin(1)) 298 ierr=NF_INQ_VARID(nid,"zz",var3didin(1)) 291 299 if(ierr/=NF_NOERR) then 292 300 write(*,*) NF_STRERROR(ierr) 293 301 stop 'lev' 294 302 endif 295 296 ierr=NF_INQ_VARID(nid,"pp",var3didin(2)) 303 304 ierr=NF_INQ_VARID(nid,"pp",var3didin(2)) 297 305 if(ierr/=NF_NOERR) then 298 306 write(*,*) NF_STRERROR(ierr) … … 421 429 stop 'advq' 422 430 endif 423 431 424 432 ierr=NF_INQ_VARID(nid,"hq",var3didin(23)) 425 433 if(ierr/=NF_NOERR) then … … 457 465 stop 'advr' 458 466 endif 459 467 460 468 ierr=NF_INQ_VARID(nid,"hr",var3didin(29)) 461 469 if(ierr/=NF_NOERR) then … … 523 531 stop 'q2' 524 532 endif 525 526 ierr = nf90_get_var(nid,var3didin(1),zz) 533 534 #ifdef NC_DOUBLE 535 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(1),zz) 536 #else 537 ierr = NF_GET_VAR_REAL(nid,var3didin(1),zz) 538 #endif 527 539 if(ierr/=NF_NOERR) then 528 540 write(*,*) NF_STRERROR(ierr) … … 531 543 ! write(*,*)'lecture z ok',zz 532 544 533 ierr = nf90_get_var(nid,var3didin(2),pp) 545 #ifdef NC_DOUBLE 546 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(2),pp) 547 #else 548 ierr = NF_GET_VAR_REAL(nid,var3didin(2),pp) 549 #endif 534 550 if(ierr/=NF_NOERR) then 535 551 write(*,*) NF_STRERROR(ierr) … … 539 555 540 556 541 ierr = nf90_get_var(nid,var3didin(3),temp) 557 #ifdef NC_DOUBLE 558 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(3),temp) 559 #else 560 ierr = NF_GET_VAR_REAL(nid,var3didin(3),temp) 561 #endif 542 562 if(ierr/=NF_NOERR) then 543 563 write(*,*) NF_STRERROR(ierr) … … 546 566 ! write(*,*)'lecture T ok',temp 547 567 548 ierr = nf90_get_var(nid,var3didin(4),qv) 568 #ifdef NC_DOUBLE 569 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(4),qv) 570 #else 571 ierr = NF_GET_VAR_REAL(nid,var3didin(4),qv) 572 #endif 549 573 if(ierr/=NF_NOERR) then 550 574 write(*,*) NF_STRERROR(ierr) … … 552 576 endif 553 577 ! write(*,*)'lecture qv ok',qv 554 555 ierr = nf90_get_var(nid,var3didin(5),rh) 578 579 #ifdef NC_DOUBLE 580 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(5),rh) 581 #else 582 ierr = NF_GET_VAR_REAL(nid,var3didin(5),rh) 583 #endif 556 584 if(ierr/=NF_NOERR) then 557 585 write(*,*) NF_STRERROR(ierr) … … 560 588 ! write(*,*)'lecture rh ok',rh 561 589 562 ierr = nf90_get_var(nid,var3didin(6),theta) 590 #ifdef NC_DOUBLE 591 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(6),theta) 592 #else 593 ierr = NF_GET_VAR_REAL(nid,var3didin(6),theta) 594 #endif 563 595 if(ierr/=NF_NOERR) then 564 596 write(*,*) NF_STRERROR(ierr) … … 567 599 ! write(*,*)'lecture theta ok',theta 568 600 569 ierr = nf90_get_var(nid,var3didin(7),rv) 601 #ifdef NC_DOUBLE 602 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(7),rv) 603 #else 604 ierr = NF_GET_VAR_REAL(nid,var3didin(7),rv) 605 #endif 570 606 if(ierr/=NF_NOERR) then 571 607 write(*,*) NF_STRERROR(ierr) … … 574 610 ! write(*,*)'lecture rv ok',rv 575 611 576 ierr = nf90_get_var(nid,var3didin(8),u) 612 #ifdef NC_DOUBLE 613 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(8),u) 614 #else 615 ierr = NF_GET_VAR_REAL(nid,var3didin(8),u) 616 #endif 577 617 if(ierr/=NF_NOERR) then 578 618 write(*,*) NF_STRERROR(ierr) … … 581 621 ! write(*,*)'lecture u ok',u 582 622 583 ierr = nf90_get_var(nid,var3didin(9),v) 623 #ifdef NC_DOUBLE 624 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(9),v) 625 #else 626 ierr = NF_GET_VAR_REAL(nid,var3didin(9),v) 627 #endif 584 628 if(ierr/=NF_NOERR) then 585 629 write(*,*) NF_STRERROR(ierr) … … 588 632 ! write(*,*)'lecture v ok',v 589 633 590 ierr = nf90_get_var(nid,var3didin(10),ug) 634 #ifdef NC_DOUBLE 635 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(10),ug) 636 #else 637 ierr = NF_GET_VAR_REAL(nid,var3didin(10),ug) 638 #endif 591 639 if(ierr/=NF_NOERR) then 592 640 write(*,*) NF_STRERROR(ierr) … … 595 643 ! write(*,*)'lecture ug ok',ug 596 644 597 ierr = nf90_get_var(nid,var3didin(11),vg) 645 #ifdef NC_DOUBLE 646 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(11),vg) 647 #else 648 ierr = NF_GET_VAR_REAL(nid,var3didin(11),vg) 649 #endif 598 650 if(ierr/=NF_NOERR) then 599 651 write(*,*) NF_STRERROR(ierr) … … 602 654 ! write(*,*)'lecture vg ok',vg 603 655 604 ierr = nf90_get_var(nid,var3didin(12),w) 656 #ifdef NC_DOUBLE 657 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(12),w) 658 #else 659 ierr = NF_GET_VAR_REAL(nid,var3didin(12),w) 660 #endif 605 661 if(ierr/=NF_NOERR) then 606 662 write(*,*) NF_STRERROR(ierr) … … 609 665 ! write(*,*)'lecture w ok',w 610 666 611 ierr = nf90_get_var(nid,var3didin(13),du) 667 #ifdef NC_DOUBLE 668 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(13),du) 669 #else 670 ierr = NF_GET_VAR_REAL(nid,var3didin(13),du) 671 #endif 612 672 if(ierr/=NF_NOERR) then 613 673 write(*,*) NF_STRERROR(ierr) … … 616 676 ! write(*,*)'lecture du ok',du 617 677 618 ierr = nf90_get_var(nid,var3didin(14),hu) 678 #ifdef NC_DOUBLE 679 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(14),hu) 680 #else 681 ierr = NF_GET_VAR_REAL(nid,var3didin(14),hu) 682 #endif 619 683 if(ierr/=NF_NOERR) then 620 684 write(*,*) NF_STRERROR(ierr) … … 623 687 ! write(*,*)'lecture hu ok',hu 624 688 625 ierr = nf90_get_var(nid,var3didin(15),vu) 689 #ifdef NC_DOUBLE 690 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(15),vu) 691 #else 692 ierr = NF_GET_VAR_REAL(nid,var3didin(15),vu) 693 #endif 626 694 if(ierr/=NF_NOERR) then 627 695 write(*,*) NF_STRERROR(ierr) … … 630 698 ! write(*,*)'lecture vu ok',vu 631 699 632 ierr = nf90_get_var(nid,var3didin(16),dv) 700 #ifdef NC_DOUBLE 701 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(16),dv) 702 #else 703 ierr = NF_GET_VAR_REAL(nid,var3didin(16),dv) 704 #endif 633 705 if(ierr/=NF_NOERR) then 634 706 write(*,*) NF_STRERROR(ierr) … … 637 709 ! write(*,*)'lecture dv ok',dv 638 710 639 ierr = nf90_get_var(nid,var3didin(17),hv) 711 #ifdef NC_DOUBLE 712 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(17),hv) 713 #else 714 ierr = NF_GET_VAR_REAL(nid,var3didin(17),hv) 715 #endif 640 716 if(ierr/=NF_NOERR) then 641 717 write(*,*) NF_STRERROR(ierr) … … 644 720 ! write(*,*)'lecture hv ok',hv 645 721 646 ierr = nf90_get_var(nid,var3didin(18),vv) 722 #ifdef NC_DOUBLE 723 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(18),vv) 724 #else 725 ierr = NF_GET_VAR_REAL(nid,var3didin(18),vv) 726 #endif 647 727 if(ierr/=NF_NOERR) then 648 728 write(*,*) NF_STRERROR(ierr) … … 651 731 ! write(*,*)'lecture vv ok',vv 652 732 653 ierr = nf90_get_var(nid,var3didin(19),dt) 733 #ifdef NC_DOUBLE 734 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(19),dt) 735 #else 736 ierr = NF_GET_VAR_REAL(nid,var3didin(19),dt) 737 #endif 654 738 if(ierr/=NF_NOERR) then 655 739 write(*,*) NF_STRERROR(ierr) … … 658 742 ! write(*,*)'lecture dt ok',dt 659 743 660 ierr = nf90_get_var(nid,var3didin(20),ht) 744 #ifdef NC_DOUBLE 745 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(20),ht) 746 #else 747 ierr = NF_GET_VAR_REAL(nid,var3didin(20),ht) 748 #endif 661 749 if(ierr/=NF_NOERR) then 662 750 write(*,*) NF_STRERROR(ierr) … … 665 753 ! write(*,*)'lecture ht ok',ht 666 754 667 ierr = nf90_get_var(nid,var3didin(21),vt) 755 #ifdef NC_DOUBLE 756 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(21),vt) 757 #else 758 ierr = NF_GET_VAR_REAL(nid,var3didin(21),vt) 759 #endif 668 760 if(ierr/=NF_NOERR) then 669 761 write(*,*) NF_STRERROR(ierr) … … 672 764 ! write(*,*)'lecture vt ok',vt 673 765 674 ierr = nf90_get_var(nid,var3didin(22),dq) 766 #ifdef NC_DOUBLE 767 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(22),dq) 768 #else 769 ierr = NF_GET_VAR_REAL(nid,var3didin(22),dq) 770 #endif 675 771 if(ierr/=NF_NOERR) then 676 772 write(*,*) NF_STRERROR(ierr) … … 679 775 ! write(*,*)'lecture dq ok',dq 680 776 681 ierr = nf90_get_var(nid,var3didin(23),hq) 777 #ifdef NC_DOUBLE 778 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(23),hq) 779 #else 780 ierr = NF_GET_VAR_REAL(nid,var3didin(23),hq) 781 #endif 682 782 if(ierr/=NF_NOERR) then 683 783 write(*,*) NF_STRERROR(ierr) … … 686 786 ! write(*,*)'lecture hq ok',hq 687 787 688 ierr = nf90_get_var(nid,var3didin(24),vq) 788 #ifdef NC_DOUBLE 789 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(24),vq) 790 #else 791 ierr = NF_GET_VAR_REAL(nid,var3didin(24),vq) 792 #endif 689 793 if(ierr/=NF_NOERR) then 690 794 write(*,*) NF_STRERROR(ierr) … … 693 797 ! write(*,*)'lecture vq ok',vq 694 798 695 ierr = nf90_get_var(nid,var3didin(25),dth) 799 #ifdef NC_DOUBLE 800 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(25),dth) 801 #else 802 ierr = NF_GET_VAR_REAL(nid,var3didin(25),dth) 803 #endif 696 804 if(ierr/=NF_NOERR) then 697 805 write(*,*) NF_STRERROR(ierr) … … 700 808 ! write(*,*)'lecture dth ok',dth 701 809 702 ierr = nf90_get_var(nid,var3didin(26),hth) 810 #ifdef NC_DOUBLE 811 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(26),hth) 812 #else 813 ierr = NF_GET_VAR_REAL(nid,var3didin(26),hth) 814 #endif 703 815 if(ierr/=NF_NOERR) then 704 816 write(*,*) NF_STRERROR(ierr) … … 707 819 ! write(*,*)'lecture hth ok',hth 708 820 709 ierr = nf90_get_var(nid,var3didin(27),vth) 821 #ifdef NC_DOUBLE 822 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(27),vth) 823 #else 824 ierr = NF_GET_VAR_REAL(nid,var3didin(27),vth) 825 #endif 710 826 if(ierr/=NF_NOERR) then 711 827 write(*,*) NF_STRERROR(ierr) … … 714 830 ! write(*,*)'lecture vth ok',vth 715 831 716 ierr = nf90_get_var(nid,var3didin(28),dr) 832 #ifdef NC_DOUBLE 833 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(28),dr) 834 #else 835 ierr = NF_GET_VAR_REAL(nid,var3didin(28),dr) 836 #endif 717 837 if(ierr/=NF_NOERR) then 718 838 write(*,*) NF_STRERROR(ierr) … … 721 841 ! write(*,*)'lecture dr ok',dr 722 842 723 ierr = nf90_get_var(nid,var3didin(29),hr) 843 #ifdef NC_DOUBLE 844 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(29),hr) 845 #else 846 ierr = NF_GET_VAR_REAL(nid,var3didin(29),hr) 847 #endif 724 848 if(ierr/=NF_NOERR) then 725 849 write(*,*) NF_STRERROR(ierr) … … 728 852 ! write(*,*)'lecture hr ok',hr 729 853 730 ierr = nf90_get_var(nid,var3didin(30),vr) 854 #ifdef NC_DOUBLE 855 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(30),vr) 856 #else 857 ierr = NF_GET_VAR_REAL(nid,var3didin(30),vr) 858 #endif 731 859 if(ierr/=NF_NOERR) then 732 860 write(*,*) NF_STRERROR(ierr) … … 735 863 ! write(*,*)'lecture vr ok',vr 736 864 737 ierr = nf90_get_var(nid,var3didin(31),dtrad) 865 #ifdef NC_DOUBLE 866 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(31),dtrad) 867 #else 868 ierr = NF_GET_VAR_REAL(nid,var3didin(31),dtrad) 869 #endif 738 870 if(ierr/=NF_NOERR) then 739 871 write(*,*) NF_STRERROR(ierr) … … 742 874 ! write(*,*)'lecture dtrad ok',dtrad 743 875 744 ierr = nf90_get_var(nid,var3didin(32),sens) 876 #ifdef NC_DOUBLE 877 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(32),sens) 878 #else 879 ierr = NF_GET_VAR_REAL(nid,var3didin(32),sens) 880 #endif 745 881 if(ierr/=NF_NOERR) then 746 882 write(*,*) NF_STRERROR(ierr) … … 749 885 ! write(*,*)'lecture sens ok',sens 750 886 751 ierr = nf90_get_var(nid,var3didin(33),flat) 887 #ifdef NC_DOUBLE 888 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(33),flat) 889 #else 890 ierr = NF_GET_VAR_REAL(nid,var3didin(33),flat) 891 #endif 752 892 if(ierr/=NF_NOERR) then 753 893 write(*,*) NF_STRERROR(ierr) … … 756 896 ! write(*,*)'lecture flat ok',flat 757 897 758 ierr = nf90_get_var(nid,var3didin(34),ts) 898 #ifdef NC_DOUBLE 899 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(34),ts) 900 #else 901 ierr = NF_GET_VAR_REAL(nid,var3didin(34),ts) 902 #endif 759 903 if(ierr/=NF_NOERR) then 760 904 write(*,*) NF_STRERROR(ierr) … … 763 907 ! write(*,*)'lecture ts ok',ts 764 908 765 ierr = nf90_get_var(nid,var3didin(35),ustar) 909 #ifdef NC_DOUBLE 910 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(35),ustar) 911 #else 912 ierr = NF_GET_VAR_REAL(nid,var3didin(35),ustar) 913 #endif 766 914 if(ierr/=NF_NOERR) then 767 915 write(*,*) NF_STRERROR(ierr) … … 770 918 ! write(*,*)'lecture ustar ok',ustar 771 919 772 ierr = nf90_get_var(nid,var3didin(36),uw) 920 #ifdef NC_DOUBLE 921 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(36),uw) 922 #else 923 ierr = NF_GET_VAR_REAL(nid,var3didin(36),uw) 924 #endif 773 925 if(ierr/=NF_NOERR) then 774 926 write(*,*) NF_STRERROR(ierr) … … 777 929 ! write(*,*)'lecture uw ok',uw 778 930 779 ierr = nf90_get_var(nid,var3didin(37),vw) 931 #ifdef NC_DOUBLE 932 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(37),vw) 933 #else 934 ierr = NF_GET_VAR_REAL(nid,var3didin(37),vw) 935 #endif 780 936 if(ierr/=NF_NOERR) then 781 937 write(*,*) NF_STRERROR(ierr) … … 784 940 ! write(*,*)'lecture vw ok',vw 785 941 786 ierr = nf90_get_var(nid,var3didin(38),q1) 942 #ifdef NC_DOUBLE 943 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(38),q1) 944 #else 945 ierr = NF_GET_VAR_REAL(nid,var3didin(38),q1) 946 #endif 787 947 if(ierr/=NF_NOERR) then 788 948 write(*,*) NF_STRERROR(ierr) … … 791 951 ! write(*,*)'lecture q1 ok',q1 792 952 793 ierr = nf90_get_var(nid,var3didin(39),q2) 953 #ifdef NC_DOUBLE 954 ierr = NF_GET_VAR_DOUBLE(nid,var3didin(39),q2) 955 #else 956 ierr = NF_GET_VAR_REAL(nid,var3didin(39),q2) 957 #endif 794 958 if(ierr/=NF_NOERR) then 795 959 write(*,*) NF_STRERROR(ierr) … … 799 963 800 964 801 return 965 return 802 966 end subroutine read_cas 803 967 !====================================================================== … … 817 981 & ,hq_prof_cas,vq_prof_cas,lat_prof_cas,sens_prof_cas & 818 982 & ,ustar_prof_cas,uw_prof_cas,vw_prof_cas,q1_prof_cas,q2_prof_cas) 819 983 820 984 821 985 implicit none … … 826 990 ! day: current julian day (e.g. 717538.2) 827 991 ! day1: first day of the simulation 828 ! nt_cas: total nb of data in the forcing 992 ! nt_cas: total nb of data in the forcing 829 993 ! pdt_cas: total time interval (in sec) between 2 forcing data 830 994 !--------------------------------------------------------------------------------------- … … 917 1081 918 1082 it_cas1=INT(timeit/pdt_cas)+1 919 IF (it_cas1 ==nt_cas) THEN920 it_cas2=it_cas1 1083 IF (it_cas1 .EQ. nt_cas) THEN 1084 it_cas2=it_cas1 921 1085 ELSE 922 1086 it_cas2=it_cas1 + 1 … … 929 1093 print *,'time_cas2=',time_cas2 930 1094 931 if (it_cas1 >nt_cas) then1095 if (it_cas1 .gt. nt_cas) then 932 1096 write(*,*) 'PB-stop: day, day_ju_ini_cas,it_cas1, it_cas2, timeit: ' & 933 1097 & ,day,day_ju_ini_cas,it_cas1,it_cas2,timeit … … 936 1100 937 1101 ! time interpolation: 938 IF (it_cas1 ==it_cas2) THEN1102 IF (it_cas1 .EQ. it_cas2) THEN 939 1103 frac=0. 940 1104 ELSE … … 944 1108 945 1109 lat_prof_cas = lat_cas(it_cas2) & 946 & -frac*(lat_cas(it_cas2)-lat_cas(it_cas1)) 1110 & -frac*(lat_cas(it_cas2)-lat_cas(it_cas1)) 947 1111 sens_prof_cas = sens_cas(it_cas2) & 948 1112 & -frac*(sens_cas(it_cas2)-sens_cas(it_cas1)) … … 1009 1173 1010 1174 !********************************************************************************************** 1011 END MODULE mod_1D_cases_read -
LMDZ6/trunk/libf/phylmd/dyn1d/mod_1D_cases_read2.F90
r5075 r5084 3 3 ! 4 4 MODULE mod_1D_cases_read2 5 USE lmdz_netcdf, ONLY: nf90_get_var,nf_noerr,nf_inq_varid,nf_inq_dimlen,nf_strerror,nf_open,& 6 nf_nowrite,nf_inq_dimid 5 7 6 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 8 7 !Declarations specifiques au cas standard … … 82 81 implicit none 83 82 83 INCLUDE "netcdf.inc" 84 84 85 INTEGER nid,rid,ierr 85 86 INTEGER ii,jj … … 89 90 ierr = NF_OPEN(fich_cas,NF_NOWRITE,nid) 90 91 print*,'fich_cas,NF_NOWRITE,nid ',fich_cas,NF_NOWRITE,nid 91 if (ierr /=NF_NOERR) then92 if (ierr.NE.NF_NOERR) then 92 93 write(*,*) 'ERROR: GROS Pb opening forcings nc file ' 93 94 write(*,*) NF_STRERROR(ierr) … … 96 97 !....................................................................... 97 98 ierr=NF_INQ_DIMID(nid,'lat',rid) 98 IF (ierr /=NF_NOERR) THEN99 IF (ierr.NE.NF_NOERR) THEN 99 100 print*, 'Oh probleme lecture dimension lat' 100 101 ENDIF … … 103 104 !....................................................................... 104 105 ierr=NF_INQ_DIMID(nid,'lon',rid) 105 IF (ierr /=NF_NOERR) THEN106 IF (ierr.NE.NF_NOERR) THEN 106 107 print*, 'Oh probleme lecture dimension lon' 107 108 ENDIF … … 110 111 !....................................................................... 111 112 ierr=NF_INQ_DIMID(nid,'lev',rid) 112 IF (ierr /=NF_NOERR) THEN113 IF (ierr.NE.NF_NOERR) THEN 113 114 print*, 'Oh probleme lecture dimension zz' 114 115 ENDIF … … 119 120 print*,'nid,rid',nid,rid 120 121 nt_cas=0 121 IF (ierr /=NF_NOERR) THEN122 IF (ierr.NE.NF_NOERR) THEN 122 123 stop 'probleme lecture dimension sens' 123 124 ENDIF … … 191 192 implicit none 192 193 194 INCLUDE "netcdf.inc" 195 193 196 INTEGER nid,rid,ierr 194 197 INTEGER ii,jj … … 198 201 ierr = NF_OPEN(fich_cas,NF_NOWRITE,nid) 199 202 print*,'fich_cas,NF_NOWRITE,nid ',fich_cas,NF_NOWRITE,nid 200 if (ierr /=NF_NOERR) then203 if (ierr.NE.NF_NOERR) then 201 204 write(*,*) 'ERROR: GROS Pb opening forcings nc file ' 202 205 write(*,*) NF_STRERROR(ierr) … … 205 208 !....................................................................... 206 209 ierr=NF_INQ_DIMID(nid,'lat',rid) 207 IF (ierr /=NF_NOERR) THEN210 IF (ierr.NE.NF_NOERR) THEN 208 211 print*, 'Oh probleme lecture dimension lat' 209 212 ENDIF … … 212 215 !....................................................................... 213 216 ierr=NF_INQ_DIMID(nid,'lon',rid) 214 IF (ierr /=NF_NOERR) THEN217 IF (ierr.NE.NF_NOERR) THEN 215 218 print*, 'Oh probleme lecture dimension lon' 216 219 ENDIF … … 219 222 !....................................................................... 220 223 ierr=NF_INQ_DIMID(nid,'nlev',rid) 221 IF (ierr /=NF_NOERR) THEN224 IF (ierr.NE.NF_NOERR) THEN 222 225 print*, 'Oh probleme lecture dimension nlev' 223 226 ENDIF … … 227 230 ierr=NF_INQ_DIMID(nid,'time',rid) 228 231 nt_cas=0 229 IF (ierr /=NF_NOERR) THEN232 IF (ierr.NE.NF_NOERR) THEN 230 233 stop 'Oh probleme lecture dimension time' 231 234 ENDIF … … 314 317 !********************************************************************************************** 315 318 SUBROUTINE old_read_SCM_cas 319 use netcdf, only: nf90_get_var 316 320 implicit none 317 321 322 INCLUDE "netcdf.inc" 318 323 INCLUDE "date_cas.h" 319 324 … … 326 331 ierr = NF_OPEN(fich_cas,NF_NOWRITE,nid) 327 332 print*,'fich_cas,NF_NOWRITE,nid ',fich_cas,NF_NOWRITE,nid 328 if (ierr /=NF_NOERR) then333 if (ierr.NE.NF_NOERR) then 329 334 write(*,*) 'ERROR: GROS Pb opening forcings nc file ' 330 335 write(*,*) NF_STRERROR(ierr) … … 333 338 !....................................................................... 334 339 ierr=NF_INQ_DIMID(nid,'lat',rid) 335 IF (ierr /=NF_NOERR) THEN340 IF (ierr.NE.NF_NOERR) THEN 336 341 print*, 'Oh probleme lecture dimension lat' 337 342 ENDIF … … 340 345 !....................................................................... 341 346 ierr=NF_INQ_DIMID(nid,'lon',rid) 342 IF (ierr /=NF_NOERR) THEN347 IF (ierr.NE.NF_NOERR) THEN 343 348 print*, 'Oh probleme lecture dimension lon' 344 349 ENDIF … … 347 352 !....................................................................... 348 353 ierr=NF_INQ_DIMID(nid,'lev',rid) 349 IF (ierr /=NF_NOERR) THEN354 IF (ierr.NE.NF_NOERR) THEN 350 355 print*, 'Oh probleme lecture dimension nlev' 351 356 ENDIF … … 359 364 ierr=NF_INQ_DIMID(nid,'time',rid) 360 365 nt_cas=0 361 IF (ierr /=NF_NOERR) THEN366 IF (ierr.NE.NF_NOERR) THEN 362 367 stop 'Oh probleme lecture dimension time' 363 368 ENDIF … … 528 533 529 534 535 END MODULE mod_1D_cases_read2 530 536 !===================================================================== 531 537 subroutine read_cas2(nid,nlevel,ntime & … … 535 541 536 542 !program reading forcing of the case study 543 use netcdf, only: nf90_get_var 537 544 implicit none 545 INCLUDE "netcdf.inc" 538 546 539 547 integer ntime,nlevel … … 581 589 do i=1,nbvar3d 582 590 print *,'Dans read_cas2, on va lire ',var3didin(i),name_var(i) 583 if(i <=35) then591 if(i.LE.35) then 584 592 ierr = NF90_GET_VAR(nid,var3didin(i),resul, count = [1, 1, nlevel, ntime]) 585 593 print *,'Dans read_cas2, on a lu ',ierr,var3didin(i),name_var(i) … … 650 658 651 659 !program reading forcing of the case study 660 use netcdf, only: nf90_get_var 652 661 implicit none 662 INCLUDE "netcdf.inc" 653 663 654 664 integer ntime,nlevel … … 701 711 else 702 712 !----------------------------------------------------------------------- 703 if(i <=4) then ! Lecture des coord pression en (nlevelp1,lat,lon)713 if(i.LE.4) then ! Lecture des coord pression en (nlevelp1,lat,lon) 704 714 ierr = NF90_GET_VAR(nid,var3didin(i),apbp, count = [1, 1, nlevel + 1]) 705 715 print *,'read2_cas(apbp), on a lu ',i,name_var(i) … … 709 719 endif 710 720 !----------------------------------------------------------------------- 711 else if(i >4.and.i<=45) then ! Lecture des variables en (time,nlevel,lat,lon)721 else if(i.gt.4.and.i.LE.45) then ! Lecture des variables en (time,nlevel,lat,lon) 712 722 ierr = NF90_GET_VAR(nid,var3didin(i),resul, count = [1, 1, nlevel, ntime]) 713 723 print *,'read2_cas(resul), on a lu ',i,name_var(i) … … 717 727 endif 718 728 !----------------------------------------------------------------------- 719 else if (i >45.and.i<=51) then ! Lecture des variables en (time,lat,lon)729 else if (i.gt.45.and.i.LE.51) then ! Lecture des variables en (time,lat,lon) 720 730 ierr = NF90_GET_VAR(nid,var3didin(i),resul2, count = [1, 1, ntime]) 721 731 print *,'read2_cas(resul2), on a lu ',i,name_var(i) … … 819 829 820 830 !program reading forcing of the case study 831 use netcdf, only: nf90_get_var 821 832 implicit none 833 INCLUDE "netcdf.inc" 822 834 823 835 integer ntime,nlevel,k,t … … 876 888 else 877 889 !----------------------------------------------------------------------- 878 if(i <=4) then ! Lecture des coord pression en (nlevelp1,lat,lon)890 if(i.LE.4) then ! Lecture des coord pression en (nlevelp1,lat,lon) 879 891 ierr = NF90_GET_VAR(nid,var3didin(i),apbp) 880 892 print *,'read2_cas(apbp), on a lu ',i,name_var(i) … … 884 896 endif 885 897 !----------------------------------------------------------------------- 886 else if(i >4.and.i<=12) then ! Lecture des variables en (time,nlevel,lat,lon)898 else if(i.gt.4.and.i.LE.12) then ! Lecture des variables en (time,nlevel,lat,lon) 887 899 ierr = NF90_GET_VAR(nid,var3didin(i),resul1) 888 900 print *,'read2_cas(resul1), on a lu ',i,name_var(i) … … 893 905 print*,'Lecture de la variable #i ',i,name_var(i),minval(resul1),maxval(resul1) 894 906 !----------------------------------------------------------------------- 895 else if(i >12.and.i<=54) then ! Lecture des variables en (time,nlevel,lat,lon)907 else if(i.gt.12.and.i.LE.54) then ! Lecture des variables en (time,nlevel,lat,lon) 896 908 ierr = NF90_GET_VAR(nid,var3didin(i),resul) 897 909 print *,'read2_cas(resul), on a lu ',i,name_var(i) … … 902 914 print*,'Lecture de la variable #i ',i,name_var(i),minval(resul),maxval(resul) 903 915 !----------------------------------------------------------------------- 904 else if (i >54.and.i<=65) then ! Lecture des variables en (time,lat,lon)916 else if (i.gt.54.and.i.LE.65) then ! Lecture des variables en (time,lat,lon) 905 917 ierr = NF90_GET_VAR(nid,var3didin(i),resul2) 906 918 print *,'read2_cas(resul2), on a lu ',i,name_var(i) … … 1136 1148 1137 1149 it_cas1=INT(timeit/pdt_cas)+1 1138 IF (it_cas1 ==nt_cas) THEN1150 IF (it_cas1 .EQ. nt_cas) THEN 1139 1151 it_cas2=it_cas1 1140 1152 ELSE … … 1145 1157 !print *,'it_cas1,it_cas2,time_cas1,time_cas2=',it_cas1,it_cas2,time_cas1,time_cas2 1146 1158 1147 if (it_cas1 >nt_cas) then1159 if (it_cas1 .gt. nt_cas) then 1148 1160 write(*,*) 'PB-stop: day, day_ju_ini_cas,it_cas1, it_cas2, timeit: ' & 1149 1161 ,day,day_ju_ini_cas,it_cas1,it_cas2,timeit … … 1152 1164 1153 1165 ! time interpolation: 1154 IF (it_cas1 ==it_cas2) THEN1166 IF (it_cas1 .EQ. it_cas2) THEN 1155 1167 frac=0. 1156 1168 ELSE … … 1351 1363 1352 1364 it_cas1=INT(timeit/pdt_cas)+1 1353 IF (it_cas1 ==nt_cas) THEN1365 IF (it_cas1 .EQ. nt_cas) THEN 1354 1366 it_cas2=it_cas1 1355 1367 ELSE … … 1361 1373 !print *,'it_cas1,it_cas2,time_cas1,time_cas2=',it_cas1,it_cas2,time_cas1,time_cas2 1362 1374 1363 if (it_cas1 > nt_cas) then1375 if (it_cas1 .gt. nt_cas) then 1364 1376 write(*,*) 'PB-stop: day, day_ju_ini_cas,it_cas1, it_cas2, timeit: ' & 1365 1377 ,day,day_ju_ini_cas,it_cas1,it_cas2,timeit … … 1368 1380 1369 1381 ! time interpolation: 1370 IF (it_cas1 ==it_cas2) THEN1382 IF (it_cas1 .EQ. it_cas2) THEN 1371 1383 frac=0. 1372 1384 ELSE … … 1463 1475 !********************************************************************************************** 1464 1476 1465 END MODULE mod_1D_cases_read2 -
LMDZ6/trunk/libf/phylmd/dyn1d/mod_1D_cases_read_std.F90
r5075 r5084 3 3 ! 4 4 MODULE mod_1D_cases_read_std 5 USE lmdz_netcdf, ONLY:nf_noerr,nf_inq_varid,nf_inq_dimid,nf_inq_dimlen,nf_open,nf_nowrite,&6 nf_strerror,nf90_get_var7 5 8 6 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! … … 89 87 !********************************************************************************************** 90 88 SUBROUTINE read_SCM_cas 89 use netcdf, only: nf90_get_var 91 90 implicit none 92 91 92 INCLUDE "netcdf.inc" 93 93 INCLUDE "date_cas.h" 94 94 … … 101 101 ierr = NF_OPEN(fich_cas,NF_NOWRITE,nid) 102 102 print*,'fich_cas,NF_NOWRITE,nid ',fich_cas,NF_NOWRITE,nid 103 if (ierr /=NF_NOERR) then103 if (ierr.NE.NF_NOERR) then 104 104 write(*,*) 'ERROR: GROS Pb opening forcings nc file ' 105 105 write(*,*) NF_STRERROR(ierr) … … 108 108 !....................................................................... 109 109 ierr=NF_INQ_DIMID(nid,'lat',rid) 110 IF (ierr /=NF_NOERR) THEN110 IF (ierr.NE.NF_NOERR) THEN 111 111 print*, 'Oh probleme lecture dimension lat' 112 112 ENDIF … … 115 115 !....................................................................... 116 116 ierr=NF_INQ_DIMID(nid,'lon',rid) 117 IF (ierr /=NF_NOERR) THEN117 IF (ierr.NE.NF_NOERR) THEN 118 118 print*, 'Oh probleme lecture dimension lon' 119 119 ENDIF … … 122 122 !....................................................................... 123 123 ierr=NF_INQ_DIMID(nid,'lev',rid) 124 IF (ierr /=NF_NOERR) THEN124 IF (ierr.NE.NF_NOERR) THEN 125 125 print*, 'Oh probleme lecture dimension nlev' 126 126 ENDIF … … 134 134 ierr=NF_INQ_DIMID(nid,'time',rid) 135 135 nt_cas=0 136 IF (ierr /=NF_NOERR) THEN136 IF (ierr.NE.NF_NOERR) THEN 137 137 stop 'Oh probleme lecture dimension time' 138 138 ENDIF … … 329 329 330 330 !program reading forcing of the case study 331 use netcdf, only: nf90_get_var 331 332 implicit none 333 INCLUDE "netcdf.inc" 332 334 INCLUDE "compar1d.h" 333 335 … … 453 455 ! Reading variables 1D (N+1) vertical variables (nlevelp1,lat,lon) 454 456 !----------------------------------------------------------------------- 455 if(i <=4) then457 if(i.LE.4) then 456 458 ierr = NF90_GET_VAR(nid,var3didin(i),apbp) 457 459 print *,'read_SCM(apbp), on a lu ',i,name_var(i) … … 464 466 ! Reading 1D (N) vertical varialbes (nlevel,lat,lon) 465 467 !----------------------------------------------------------------------- 466 else if(i >4.and.i<=12) then468 else if(i.gt.4.and.i.LE.12) then 467 469 ierr = NF90_GET_VAR(nid,var3didin(i),resul1) 468 470 print *,'read_SCM(resul1), on a lu ',i,name_var(i) … … 477 479 ! TBD : seems to be the same as above. 478 480 !----------------------------------------------------------------------- 479 else if(i >12.and.i<=61) then481 else if(i.gt.12.and.i.LE.61) then 480 482 ierr = NF90_GET_VAR(nid,var3didin(i),resul) 481 483 print *,'read_SCM(resul), on a lu ',i,name_var(i) … … 489 491 ! Reading 1D time variables (time,lat,lon) 490 492 !----------------------------------------------------------------------- 491 else if (i >62.and.i<=75) then493 else if (i.gt.62.and.i.LE.75) then 492 494 ierr = NF90_GET_VAR(nid,var3didin(i),resul2) 493 495 print *,'read_SCM(resul2), on a lu ',i,name_var(i) … … 775 777 776 778 it_cas1=INT(timeit/pdt_cas)+1 777 IF (it_cas1 ==nt_cas) THEN779 IF (it_cas1 .EQ. nt_cas) THEN 778 780 it_cas2=it_cas1 779 781 ELSE … … 785 787 ! print *,'it_cas1,it_cas2,time_cas1,time_cas2=',it_cas1,it_cas2,time_cas1,time_cas2 786 788 787 if (it_cas1 > nt_cas) then789 if (it_cas1 .gt. nt_cas) then 788 790 write(*,*) 'PB-stop: day, day_ju_ini_cas,it_cas1, it_cas2, timeit: ' & 789 791 ,day,day_ju_ini_cas,it_cas1,it_cas2,timeit … … 792 794 793 795 ! time interpolation: 794 IF (it_cas1 ==it_cas2) THEN796 IF (it_cas1 .EQ. it_cas2) THEN 795 797 frac=0. 796 798 ELSE … … 987 989 do l = 1, llm 988 990 989 if (play(l) >=plev_prof_cas(nlev_cas)) then991 if (play(l).ge.plev_prof_cas(nlev_cas)) then 990 992 991 993 mxcalc=l … … 994 996 k2=0 995 997 996 if (play(l) <=plev_prof_cas(1)) then998 if (play(l).le.plev_prof_cas(1)) then 997 999 998 1000 do k = 1, nlev_cas-1 999 if (play(l) <=plev_prof_cas(k).and. play(l)>plev_prof_cas(k+1)) then1001 if (play(l).le.plev_prof_cas(k).and. play(l).gt.plev_prof_cas(k+1)) then 1000 1002 k1=k 1001 1003 k2=k+1 … … 1003 1005 enddo 1004 1006 1005 if (k1 ==0 .or. k2==0) then1007 if (k1.eq.0 .or. k2.eq.0) then 1006 1008 write(*,*) 'PB! k1, k2 = ',k1,k2 1007 1009 write(*,*) 'l,play(l) = ',l,play(l)/100 … … 1017 1019 t_mod_cas(l)= t_prof_cas(k2) - frac*(t_prof_cas(k2)-t_prof_cas(k1)) 1018 1020 theta_mod_cas(l)= th_prof_cas(k2) - frac*(th_prof_cas(k2)-th_prof_cas(k1)) 1019 if(theta_mod_cas(l) /=0) t_mod_cas(l)= theta_mod_cas(l)*(play(l)/100000.)**(RD/RCPD)1021 if(theta_mod_cas(l).NE.0) t_mod_cas(l)= theta_mod_cas(l)*(play(l)/100000.)**(RD/RCPD) 1020 1022 thv_mod_cas(l)= thv_prof_cas(k2) - frac*(thv_prof_cas(k2)-thv_prof_cas(k1)) 1021 1023 thl_mod_cas(l)= thl_prof_cas(k2) - frac*(thl_prof_cas(k2)-thl_prof_cas(k1)) … … 1066 1068 t_mod_cas(l)= frac1*t_prof_cas(k1) - frac2*t_prof_cas(k2) 1067 1069 theta_mod_cas(l)= frac1*th_prof_cas(k1) - frac2*th_prof_cas(k2) 1068 if(theta_mod_cas(l) /=0) t_mod_cas(l)= theta_mod_cas(l)*(play(l)/100000.)**(RD/RCPD)1070 if(theta_mod_cas(l).NE.0) t_mod_cas(l)= theta_mod_cas(l)*(play(l)/100000.)**(RD/RCPD) 1069 1071 thv_mod_cas(l)= frac1*thv_prof_cas(k1) - frac2*thv_prof_cas(k2) 1070 1072 thl_mod_cas(l)= frac1*thl_prof_cas(k1) - frac2*thl_prof_cas(k2) … … 1163 1165 do l = 1, llm+1 1164 1166 1165 if (plev(l) >=plev_prof_cas(nlev_cas)) then1167 if (plev(l).ge.plev_prof_cas(nlev_cas)) then 1166 1168 1167 1169 mxcalc=l … … 1169 1171 k2=0 1170 1172 1171 if (plev(l) <=plev_prof_cas(1)) then1173 if (plev(l).le.plev_prof_cas(1)) then 1172 1174 1173 1175 do k = 1, nlev_cas-1 1174 if (plev(l) <=plev_prof_cas(k).and. plev(l)>plev_prof_cas(k+1)) then1176 if (plev(l).le.plev_prof_cas(k).and. plev(l).gt.plev_prof_cas(k+1)) then 1175 1177 k1=k 1176 1178 k2=k+1 … … 1178 1180 enddo 1179 1181 1180 if (k1 ==0 .or. k2==0) then1182 if (k1.eq.0 .or. k2.eq.0) then 1181 1183 write(*,*) 'PB! k1, k2 = ',k1,k2 1182 1184 write(*,*) 'l,plev(l) = ',l,plev(l)/100 -
LMDZ6/trunk/libf/phylmd/dyn1d/old_1DUTILS_read_interp.h
r5075 r5084 146 146 !program reading forcings of the TWP-ICE experiment 147 147 148 use lmdz_netcdf, ONLY: nf_open,nf_nowrite,nf_noerr,nf_strerror,nf_inq_varid,nf90_get_var,& 149 nf_inq_dimid,nf_inq_dimlen 150 148 use netcdf, only: nf90_get_var 151 149 152 150 implicit none 151 152 INCLUDE "netcdf.inc" 153 153 154 154 integer ntime,nlevel … … 492 492 subroutine catchaxis(nid,ttm,llm,time,lev,ierr) 493 493 494 use lmdz_netcdf, ONLY: nf_open,nf_nowrite,nf_noerr,nf_strerror,nf_inq_varid,nf90_get_var,& 495 nf_inq_dimid,nf_inq_dimlen 494 use netcdf, only: nf90_get_var 496 495 497 496 implicit none 497 INCLUDE "netcdf.inc" 498 498 integer nid,ttm,llm 499 499 real*8 time(ttm) … … 2170 2170 2171 2171 2172 use lmdz_netcdf, ONLY: nf_open,nf_nowrite,nf_noerr,nf_strerror,nf_inq_varid,nf90_get_var,& 2173 nf_inq_dimid,nf_inq_dimlen 2172 use netcdf, only: nf90_get_var 2174 2173 implicit none 2174 2175 INCLUDE "netcdf.inc" 2175 2176 2176 2177 integer ntime,nlevel … … 2380 2381 !program reading initial profils and forcings of the Dice case study 2381 2382 2382 use lmdz_netcdf, ONLY: nf_open,nf_nowrite,nf_noerr,nf_strerror,nf_inq_varid,nf90_get_var,& 2383 nf_inq_dimid,nf_inq_dimlen 2383 use netcdf, only: nf90_get_var 2384 2384 2385 2385 implicit none 2386 2386 2387 INCLUDE "netcdf.inc" 2387 2388 INCLUDE "YOMCST.h" 2388 2389 … … 2714 2715 !program reading initial profils and forcings of the Gabls4 case study 2715 2716 2716 use lmdz_netcdf, ONLY: nf_open,nf_nowrite,nf_noerr,nf_strerror,nf_inq_varid,nf90_get_var,& 2717 nf_inq_dimid,nf_inq_dimlen 2717 use netcdf, only: nf90_get_var 2718 2718 2719 2719 implicit none 2720 2721 INCLUDE "netcdf.inc" 2720 2722 2721 2723 integer ntime,nlevel,nsol -
LMDZ6/trunk/libf/phylmd/dyn1d/old_1D_decl_cases.h
r5075 r5084 1 INCLUDE "netcdf.inc" 1 2 2 3 ! Declarations specifiques au cas Toga -
LMDZ6/trunk/libf/phylmd/dyn1d/old_lmdz1d.F90
r5075 r5084 44 44 USE temps_mod, ONLY: annee_ref, calend, day_end, day_ini, day_ref, & 45 45 itau_dyn, itau_phy, start_time, year_len 46 USE phys_cal_mod, ONLY : year_len_phys_cal_mod => year_len 47 USE mod_1D_cases_read, ONLY: interp_case_time ! used in included old_1D_read_forc_cases.h 48 46 USE phys_cal_mod, ONLY : year_len_phys_cal_mod => year_len 49 47 50 48 implicit none … … 368 366 if (forcing_type <=0) THEN 369 367 forcing_les = .true. 370 elseif (forcing_type ==1) THEN368 elseif (forcing_type .eq.1) THEN 371 369 forcing_radconv = .true. 372 elseif (forcing_type ==2) THEN370 elseif (forcing_type .eq.2) THEN 373 371 forcing_toga = .true. 374 elseif (forcing_type ==3) THEN372 elseif (forcing_type .eq.3) THEN 375 373 forcing_GCM2SCM = .true. 376 elseif (forcing_type ==4) THEN374 elseif (forcing_type .eq.4) THEN 377 375 forcing_twpice = .true. 378 elseif (forcing_type ==5) THEN376 elseif (forcing_type .eq.5) THEN 379 377 forcing_rico = .true. 380 elseif (forcing_type ==6) THEN378 elseif (forcing_type .eq.6) THEN 381 379 forcing_amma = .true. 382 elseif (forcing_type ==7) THEN380 elseif (forcing_type .eq.7) THEN 383 381 forcing_dice = .true. 384 elseif (forcing_type ==8) THEN382 elseif (forcing_type .eq.8) THEN 385 383 forcing_gabls4 = .true. 386 elseif (forcing_type ==101) THEN ! Cindynamo starts 1-10-2011 0h384 elseif (forcing_type .eq.101) THEN ! Cindynamo starts 1-10-2011 0h 387 385 forcing_case = .true. 388 386 year_ini_cas=2011 … … 391 389 heure_ini_cas=0. 392 390 pdt_cas=3*3600. ! forcing frequency 393 elseif (forcing_type ==102) THEN ! Bomex starts 24-6-1969 0h391 elseif (forcing_type .eq.102) THEN ! Bomex starts 24-6-1969 0h 394 392 forcing_case = .true. 395 393 year_ini_cas=1969 … … 398 396 heure_ini_cas=0. 399 397 pdt_cas=1800. ! forcing frequency 400 elseif (forcing_type ==103) THEN ! Arm_cu starts 21-6-1997 11h30398 elseif (forcing_type .eq.103) THEN ! Arm_cu starts 21-6-1997 11h30 401 399 forcing_case2 = .true. 402 400 year_ini_cas=1997 … … 405 403 heure_ini_cas=11.5 406 404 pdt_cas=1800. ! forcing frequency 407 elseif (forcing_type ==104) THEN ! rico starts 16-12-2004 0h405 elseif (forcing_type .eq.104) THEN ! rico starts 16-12-2004 0h 408 406 forcing_case2 = .true. 409 407 year_ini_cas=2004 … … 412 410 heure_ini_cas=0. 413 411 pdt_cas=1800. ! forcing frequency 414 elseif (forcing_type ==105) THEN ! bomex starts 16-12-2004 0h412 elseif (forcing_type .eq.105) THEN ! bomex starts 16-12-2004 0h 415 413 forcing_case2 = .true. 416 414 year_ini_cas=1969 … … 419 417 heure_ini_cas=0. 420 418 pdt_cas=1800. ! forcing frequency 421 elseif (forcing_type ==106) THEN ! ayotte_24SC starts 6-11-1992 0h419 elseif (forcing_type .eq.106) THEN ! ayotte_24SC starts 6-11-1992 0h 422 420 forcing_case2 = .true. 423 421 year_ini_cas=1992 … … 426 424 heure_ini_cas=10. 427 425 pdt_cas=86400. ! forcing frequency 428 elseif (forcing_type ==113) THEN ! Arm_cu starts 21-6-1997 11h30426 elseif (forcing_type .eq.113) THEN ! Arm_cu starts 21-6-1997 11h30 429 427 forcing_SCM = .true. 430 428 year_ini_cas=1997 … … 434 432 mth_ini_cas=1 ! pour le moment on compte depuis le debut de l'annee 435 433 call getin('time_ini',heure_ini_cas) 436 elseif (forcing_type ==40) THEN434 elseif (forcing_type .eq.40) THEN 437 435 forcing_GCSSold = .true. 438 elseif (forcing_type ==50) THEN436 elseif (forcing_type .eq.50) THEN 439 437 forcing_fire = .true. 440 elseif (forcing_type ==59) THEN438 elseif (forcing_type .eq.59) THEN 441 439 forcing_sandu = .true. 442 elseif (forcing_type ==60) THEN440 elseif (forcing_type .eq.60) THEN 443 441 forcing_astex = .true. 444 elseif (forcing_type ==61) THEN442 elseif (forcing_type .eq.61) THEN 445 443 forcing_armcu = .true. 446 IF(llm /=19.AND.llm/=40) stop 'Erreur nombre de niveaux !!'444 IF(llm.NE.19.AND.llm.NE.40) stop 'Erreur nombre de niveaux !!' 447 445 else 448 446 write (*,*) 'ERROR : unknown forcing_type ', forcing_type … … 463 461 jcode = iflag_nudge 464 462 do i = 1,nudge_max 465 nudge(i) = mod(jcode,10) >=1463 nudge(i) = mod(jcode,10) .ge. 1 466 464 jcode = jcode/10 467 465 enddo … … 530 528 531 529 ! Special case for arm_cu which lasts less than one day : 53100s !! (MPL 20111026) 532 IF(forcing_type ==61) fnday=53100./86400.533 IF(forcing_type ==103) fnday=53100./86400.530 IF(forcing_type .EQ. 61) fnday=53100./86400. 531 IF(forcing_type .EQ. 103) fnday=53100./86400. 534 532 ! Special case for amma which lasts less than one day : 64800s !! (MPL 20120216) 535 IF(forcing_type ==6) fnday=64800./86400.533 IF(forcing_type .EQ. 6) fnday=64800./86400. 536 534 ! IF(forcing_type .EQ. 6) fnday=50400./86400. 537 IF(forcing_type == 8 ) fnday=129600./86400.535 IF(forcing_type .EQ. 8 ) fnday=129600./86400. 538 536 annee_ref = anneeref 539 537 mois = 1 … … 546 544 day_end = day_ini + int(fnday) 547 545 548 IF (forcing_type ==2) THEN546 IF (forcing_type .eq.2) THEN 549 547 ! Convert the initial date of Toga-Coare to Julian day 550 548 call ymds2ju & 551 549 & (year_ini_toga,mth_ini_toga,day_ini_toga,heure,day_ju_ini_toga) 552 550 553 ELSEIF (forcing_type ==4) THEN551 ELSEIF (forcing_type .eq.4) THEN 554 552 ! Convert the initial date of TWPICE to Julian day 555 553 call ymds2ju & 556 554 & (year_ini_twpi,mth_ini_twpi,day_ini_twpi,heure_ini_twpi & 557 555 & ,day_ju_ini_twpi) 558 ELSEIF (forcing_type ==6) THEN556 ELSEIF (forcing_type .eq.6) THEN 559 557 ! Convert the initial date of AMMA to Julian day 560 558 call ymds2ju & 561 559 & (year_ini_amma,mth_ini_amma,day_ini_amma,heure_ini_amma & 562 560 & ,day_ju_ini_amma) 563 ELSEIF (forcing_type ==7) THEN561 ELSEIF (forcing_type .eq.7) THEN 564 562 ! Convert the initial date of DICE to Julian day 565 563 call ymds2ju & 566 564 & (year_ini_dice,mth_ini_dice,day_ini_dice,heure_ini_dice & 567 565 & ,day_ju_ini_dice) 568 ELSEIF (forcing_type ==8 ) THEN566 ELSEIF (forcing_type .eq.8 ) THEN 569 567 ! Convert the initial date of GABLS4 to Julian day 570 568 call ymds2ju & 571 569 & (year_ini_gabls4,mth_ini_gabls4,day_ini_gabls4,heure_ini_gabls4 & 572 570 & ,day_ju_ini_gabls4) 573 ELSEIF (forcing_type >100) THEN571 ELSEIF (forcing_type .gt.100) THEN 574 572 ! Convert the initial date to Julian day 575 573 day_ini_cas=day_deb … … 579 577 & ,day_ju_ini_cas) 580 578 print*,'time case 2',day_ini_cas,day_ju_ini_cas 581 ELSEIF (forcing_type ==59) THEN579 ELSEIF (forcing_type .eq.59) THEN 582 580 ! Convert the initial date of Sandu case to Julian day 583 581 call ymds2ju & … … 585 583 & time_ini*3600.,day_ju_ini_sandu) 586 584 587 ELSEIF (forcing_type ==60) THEN585 ELSEIF (forcing_type .eq.60) THEN 588 586 ! Convert the initial date of Astex case to Julian day 589 587 call ymds2ju & … … 591 589 & time_ini*3600.,day_ju_ini_astex) 592 590 593 ELSEIF (forcing_type ==61) THEN591 ELSEIF (forcing_type .eq.61) THEN 594 592 ! Convert the initial date of Arm_cu case to Julian day 595 593 call ymds2ju & … … 598 596 ENDIF 599 597 600 IF (forcing_type >100) THEN598 IF (forcing_type .gt.100) THEN 601 599 daytime = day + heure_ini_cas/24. ! 1st day and initial time of the simulation 602 600 ELSE … … 640 638 call phys_state_var_init(read_climoz) 641 639 642 if (ngrid /=klon) then640 if (ngrid.ne.klon) then 643 641 print*,'stop in inifis' 644 642 print*,'Probleme de dimensions :' … … 704 702 zlay=-rd*300.*log(play/psurf)/rg ! moved after reading profiles 705 703 706 IF (forcing_type ==59) THEN704 IF (forcing_type .eq. 59) THEN 707 705 ! pour forcing_sandu, on cherche l'indice le plus proche de 700hpa#3000m 708 706 write(*,*) '***********************' 709 707 do l = 1, llm 710 708 write(*,*) 'l,play(l),presnivs(l): ',l,play(l),presnivs(l) 711 if (trouve_700 .and. play(l) <=70000) then709 if (trouve_700 .and. play(l).le.70000) then 712 710 llm700=l 713 711 print *,'llm700,play=',llm700,play(l)/100. … … 828 826 print*,'avant phyredem' 829 827 pctsrf(1,:)=0. 830 if (nat_surf ==0.) then828 if (nat_surf.eq.0.) then 831 829 pctsrf(1,is_oce)=1. 832 830 pctsrf(1,is_ter)=0. 833 831 pctsrf(1,is_lic)=0. 834 832 pctsrf(1,is_sic)=0. 835 else if (nat_surf == 1) then833 else if (nat_surf .eq. 1) then 836 834 pctsrf(1,is_oce)=0. 837 835 pctsrf(1,is_ter)=1. 838 836 pctsrf(1,is_lic)=0. 839 837 pctsrf(1,is_sic)=0. 840 else if (nat_surf == 2) then838 else if (nat_surf .eq. 2) then 841 839 pctsrf(1,is_oce)=0. 842 840 pctsrf(1,is_ter)=0. 843 841 pctsrf(1,is_lic)=1. 844 842 pctsrf(1,is_sic)=0. 845 else if (nat_surf == 3) then843 else if (nat_surf .eq. 3) then 846 844 pctsrf(1,is_oce)=0. 847 845 pctsrf(1,is_ter)=0. … … 872 870 pbl_tke(:,2,:)=1.e-2 873 871 PRINT *, ' pbl_tke dans lmdz1d ' 874 if (prt_level >= 5) then872 if (prt_level .ge. 5) then 875 873 DO nsrf = 1,4 876 874 PRINT *,'pbl_tke(1,:,',nsrf,') ',pbl_tke(1,:,nsrf) … … 1023 1021 endif 1024 1022 !Al1 ================ end restart ================================= 1025 IF (ecrit_slab_oc ==1) then1023 IF (ecrit_slab_oc.eq.1) then 1026 1024 open(97,file='div_slab.dat',STATUS='UNKNOWN') 1027 elseif (ecrit_slab_oc ==0) then1025 elseif (ecrit_slab_oc.eq.0) then 1028 1026 open(97,file='div_slab.dat',STATUS='OLD') 1029 1027 endif … … 1048 1046 it_end = nint(fnday*day_step) 1049 1047 !test JLD it_end = 10 1050 do while(it <=it_end)1051 1052 if (prt_level >=1) then1048 do while(it.le.it_end) 1049 1050 if (prt_level.ge.1) then 1053 1051 print*,'XXXXXXXXXXXXXXXXXXX ITAP,day,time=', & 1054 1052 & it,day,time,it_end,day_step … … 1056 1054 endif 1057 1055 !Al1 demande de restartphy.nc 1058 if (it ==it_end) lastcall=.True.1056 if (it.eq.it_end) lastcall=.True. 1059 1057 1060 1058 !--------------------------------------------------------------------- … … 1151 1149 1152 1150 if (forcing_toga .or. forcing_GCSSold .or. forcing_twpice & 1153 & .or.forcing_amma .or. forcing_type ==101) then1151 & .or.forcing_amma .or. forcing_type.eq.101) then 1154 1152 fcoriolis=0.0 ; ug=0. ; vg=0. 1155 1153 endif … … 1166 1164 !on calcule dt_cooling 1167 1165 do l=1,llm 1168 if (play(l) >=20000.) then1166 if (play(l).ge.20000.) then 1169 1167 dt_cooling(l)=-1.5/86400. 1170 elseif ((play(l) >=10000.).and.((play(l)<20000.))) then1168 elseif ((play(l).ge.10000.).and.((play(l).lt.20000.))) then 1171 1169 dt_cooling(l)=-1.5/86400.*(play(l)-10000.)/(10000.)-1./86400.*(20000.-play(l))/10000.*(temp(l)-200.) 1172 1170 else … … 1275 1273 & +d_q_nudge(1:mxcalc,:) ) 1276 1274 1277 if (prt_level >=3) then1275 if (prt_level.ge.3) then 1278 1276 print *, & 1279 1277 & 'physiq-> temp(1),dt_phys(1),d_t_adv(1),dt_cooling(1) ', & … … 1353 1351 1354 1352 !Al1 1355 if (ecrit_slab_oc /=-1) close(97)1353 if (ecrit_slab_oc.ne.-1) close(97) 1356 1354 1357 1355 !Al1 Call to 1D equivalent of dynredem (an,mois,jour,heure ?) -
LMDZ6/trunk/libf/phylmd/grid_noro_m.F90
r5075 r5084 435 435 ! Purpose: Read parameters usually determined with grid_noro from a file. 436 436 !=============================================================================== 437 USE lmdz_netcdf, ONLY: NF90_OPEN, NF90_INQ_DIMID, NF90_INQUIRE_DIMENSION, &437 USE netcdf, ONLY: NF90_OPEN, NF90_INQ_DIMID, NF90_INQUIRE_DIMENSION, & 438 438 NF90_NOERR, NF90_CLOSE, NF90_INQ_VARID, NF90_GET_VAR, NF90_STRERROR, & 439 439 NF90_NOWRITE -
LMDZ6/trunk/libf/phylmd/ice_sursat_mod.F90
r5075 r5084 96 96 USE mod_phys_lmdz_para, ONLY: scatter, bcast 97 97 USE print_control_mod, ONLY: lunout 98 USE lmdz_netcdf, ONLY: nf90_get_var, nf_inq_varid, nf_inq_dimlen, nf_inq_dimid, &99 nf_open, nf_noerr100 98 101 99 IMPLICIT NONE 102 100 103 101 INCLUDE "YOMCST.h" 102 INCLUDE 'netcdf.inc' 104 103 105 104 !-------------------------------------------------------- … … 169 168 iret = nf_inq_varid(ncida, 'lev', varid) 170 169 IF (iret /= NF_NOERR) CALL abort_physic(modname,'problem to get lev dimid aircraft_phy.nc file',1) 171 iret = nf 90_get_var(ncida, varid, zmida)170 iret = nf_get_var_double(ncida, varid, zmida) 172 171 IF (iret /= NF_NOERR) CALL abort_physic(modname,'problem to read zmida file',1) 173 172 ! 174 173 iret = nf_inq_varid(ncida, 'emi_co2_aircraft', varid) !--CO2 as a proxy for m flown - 175 174 IF (iret /= NF_NOERR) CALL abort_physic(modname,'problem to get emi_distance dimid aircraft_phy.nc file',1) 176 iret = nf 90_get_var(ncida, varid, pkm_airpl_glo)175 iret = nf_get_var_double(ncida, varid, pkm_airpl_glo) 177 176 IF (iret /= NF_NOERR) CALL abort_physic(modname,'problem to read pkm_airpl file',1) 178 177 ! 179 178 iret = nf_inq_varid(ncida, 'emi_h2o_aircraft', varid) 180 179 IF (iret /= NF_NOERR) CALL abort_physic(modname,'problem to get emi_h2o_aircraft dimid aircraft_phy.nc file',1) 181 iret = nf 90_get_var(ncida, varid, ph2o_airpl_glo)180 iret = nf_get_var_double(ncida, varid, ph2o_airpl_glo) 182 181 IF (iret /= NF_NOERR) CALL abort_physic(modname,'problem to read ph2o_airpl file',1) 183 182 ! … … 277 276 ! 278 277 DO i=1, klon 279 IF (latitude_deg(i) >=42.0.AND.latitude_deg(i)<=48.0) THEN278 IF (latitude_deg(i).GE.42.0.AND.latitude_deg(i).LE.48.0) THEN 280 279 flight_m(i,38) = 50000.0 !--5000 m of flight/second in grid cell x 10 scaling 281 280 ENDIF … … 413 412 pdf_b = pdf_k/(2.*sqrt(2.)) 414 413 pdf_e1 = pdf_a+pdf_b 415 IF (abs(pdf_e1) >=erf_lim) THEN414 IF (abs(pdf_e1).GE.erf_lim) THEN 416 415 pdf_e1 = sign(1.,pdf_e1) 417 416 pdf_N = max(0.,sign(rneb,pdf_e1)) … … 426 425 ! On perd la memoire sur la temperature (sur qvc) pour garder 427 426 ! celle sur alpha_cld 428 IF (pdf_N >1.) THEN427 IF (pdf_N.GT.1.) THEN 429 428 ! On inverse alpha_cld = int_qvc^infty P(q) dq 430 429 ! pour determiner qvc = f(alpha_cld) … … 442 441 pdf_a = log(qvc/q)/(pdf_k*sqrt(2.)) 443 442 pdf_e1 = pdf_a+pdf_b 444 IF (abs(pdf_e1) >=erf_lim) THEN443 IF (abs(pdf_e1).GE.erf_lim) THEN 445 444 pdf_e1 = sign(1.,pdf_e1) 446 445 ELSE … … 462 461 pdf_a = log(qvc*gamma_prec/q)/(pdf_k*sqrt(2.)) 463 462 pdf_e2 = pdf_a+pdf_b 464 IF (abs(pdf_e2) >=erf_lim) THEN463 IF (abs(pdf_e2).GE.erf_lim) THEN 465 464 pdf_e2 = sign(1.,pdf_e2) 466 465 ELSE … … 469 468 pdf_e2 = 0.5*(1.+pdf_e2) ! integrale sous P pour q > gamma qsat 470 469 471 IF (abs(pdf_e1-pdf_e2) <eps) THEN470 IF (abs(pdf_e1-pdf_e2).LT.eps) THEN 472 471 pdf_N1 = pdf_N2 473 472 ELSE … … 476 475 477 476 ! Barriere qui traite le cas gamma_prec = 1. 478 IF (pdf_N1 <=0.) THEN477 IF (pdf_N1.LE.0.) THEN 479 478 pdf_N1 = 0. 480 IF (pdf_e2 >eps) THEN479 IF (pdf_e2.GT.eps) THEN 481 480 pdf_N2 = rneb/pdf_e2 482 481 ELSE … … 488 487 ! Physique 1 489 488 ! Sublimation 490 IF (qvc <qsat) THEN489 IF (qvc.LT.qsat) THEN 491 490 pdf_a = log(qvc/q)/(pdf_k*sqrt(2.)) 492 491 pdf_e1 = pdf_a+pdf_b 493 IF (abs(pdf_e1) >=erf_lim) THEN492 IF (abs(pdf_e1).GE.erf_lim) THEN 494 493 pdf_e1 = sign(1.,pdf_e1) 495 494 ELSE … … 499 498 pdf_a = log(qsat/q)/(pdf_k*sqrt(2.)) 500 499 pdf_e2 = pdf_a+pdf_b 501 IF (abs(pdf_e2) >=erf_lim) THEN500 IF (abs(pdf_e2).GE.erf_lim) THEN 502 501 pdf_e2 = sign(1.,pdf_e2) 503 502 ELSE … … 517 516 518 517 ! Condensation 519 IF (gamma_ss*qsat <gamma_prec*qvc) THEN518 IF (gamma_ss*qsat.LT.gamma_prec*qvc) THEN 520 519 521 520 pdf_a = log(gamma_ss*qsat/q)/(pdf_k*sqrt(2.)) 522 521 pdf_e1 = pdf_a+pdf_b 523 IF (abs(pdf_e1) >=erf_lim) THEN522 IF (abs(pdf_e1).GE.erf_lim) THEN 524 523 pdf_e1 = sign(1.,pdf_e1) 525 524 ELSE … … 529 528 pdf_a = log(gamma_prec*qvc/q)/(pdf_k*sqrt(2.)) 530 529 pdf_e2 = pdf_a+pdf_b 531 IF (abs(pdf_e2) >=erf_lim) THEN530 IF (abs(pdf_e2).GE.erf_lim) THEN 532 531 pdf_e2 = sign(1.,pdf_e2) 533 532 ELSE … … 546 545 pdf_a = log(gamma_ss*qsat/q)/(pdf_k*sqrt(2.)) 547 546 pdf_e1 = pdf_a+pdf_b 548 IF (abs(pdf_e1) >=erf_lim) THEN547 IF (abs(pdf_e1).GE.erf_lim) THEN 549 548 pdf_e1 = sign(1.,pdf_e1) 550 549 ELSE … … 563 562 pdf_a = log(qsat/q)/(pdf_k*sqrt(2.)) 564 563 pdf_e1 = pdf_a+pdf_b 565 IF (abs(pdf_e1) >=erf_lim) THEN564 IF (abs(pdf_e1).GE.erf_lim) THEN 566 565 pdf_e1 = sign(1.,pdf_e1) 567 566 ELSE … … 571 570 572 571 pdf_e2 = pdf_a-pdf_b 573 IF (abs(pdf_e2) >=erf_lim) THEN572 IF (abs(pdf_e2).GE.erf_lim) THEN 574 573 pdf_e2 = sign(1.,pdf_e2) 575 574 ELSE … … 585 584 pdf_a = log(max(qsat,qvc)/q)/(pdf_k*sqrt(2.)) 586 585 pdf_e1 = pdf_a-pdf_b 587 IF (abs(pdf_e1) >=erf_lim) THEN586 IF (abs(pdf_e1).GE.erf_lim) THEN 588 587 pdf_e1 = sign(1.,pdf_e1) 589 588 ELSE … … 593 592 pdf_a = log(min(gamma_ss*qsat,gamma_prec*qvc)/q)/(pdf_k*sqrt(2.)) 594 593 pdf_e2 = pdf_a-pdf_b 595 IF (abs(pdf_e2) >=erf_lim) THEN594 IF (abs(pdf_e2).GE.erf_lim) THEN 596 595 pdf_e2 = sign(1.,pdf_e2) 597 596 ELSE … … 604 603 605 604 ! Partie 2 (sous condition) 606 IF (gamma_ss*qsat >gamma_prec*qvc) THEN605 IF (gamma_ss*qsat.GT.gamma_prec*qvc) THEN 607 606 pdf_a = log(gamma_ss*qsat/q)/(pdf_k*sqrt(2.)) 608 607 pdf_e1 = pdf_a-pdf_b 609 IF (abs(pdf_e1) >=erf_lim) THEN608 IF (abs(pdf_e1).GE.erf_lim) THEN 610 609 pdf_e1 = sign(1.,pdf_e1) 611 610 ELSE … … 633 632 634 633 ! Physique 2 : Turbulence 635 IF (rneb >eps.AND.rneb<1.-eps) THEN ! rneb != 0 and != 1634 IF (rneb.GT.eps.AND.rneb.LT.1.-eps) THEN ! rneb != 0 and != 1 636 635 ! 637 636 tke = pbl_tke(i,k,is_ave) … … 643 642 b_tur = (rneb*V_cell/4./PI/N_cld)**(1./3.) 644 643 ! On verifie que la longeur de melange n'est pas trop grande 645 IF (L_tur >b_tur) THEN644 IF (L_tur.GT.b_tur) THEN 646 645 L_tur = b_tur 647 646 ENDIF … … 666 665 q_eq = q_eq/(V_env + V_cld) 667 666 668 IF (q_eq >qsat) THEN667 IF (q_eq.GT.qsat) THEN 669 668 drnebclr = - V_clr/V_cell 670 669 dqclr = drnebclr*qclr/MAX(eps,rnebclr) … … 704 703 ! Barrieres 705 704 ! ISSR trop petite 706 IF (rnebss <eps) THEN705 IF (rnebss.LT.eps) THEN 707 706 rneb = MIN(rneb + rnebss,1.0-eps) !--ajout OB barriere 708 707 qcld = qcld + qss … … 712 711 713 712 ! le nuage est trop petit 714 IF (rneb <eps) THEN713 IF (rneb.LT.eps) THEN 715 714 ! s'il y a une ISSR on met tout dans l'ISSR, sinon dans le 716 715 ! clear sky 717 IF (rnebss <eps) THEN716 IF (rnebss.LT.eps) THEN 718 717 rnebclr = 1. 719 718 rnebss = 0. !--ajout OB … … 750 749 !--critical T_LM below which no liquid contrail can form in exhaust 751 750 !Tcontr(i,k) = 226.69+9.43*log(Gcontr-0.053)+0.72*(log(Gcontr-0.053))**2 !--K 752 IF (Gcontr >0.1) THEN751 IF (Gcontr .GT. 0.1) THEN 753 752 ! 754 753 Tcontr = 226.69+9.43*log(Gcontr-0.053)+0.72*(log(Gcontr-0.053))**2 !--K … … 776 775 !qcontr2 = eps_w*qcontr / (pplay+eps_w*qcontr) 777 776 ! 778 IF (t <Tcontr) THEN !--contrail formation is possible777 IF (t .LT. Tcontr) THEN !--contrail formation is possible 779 778 ! 780 779 !--compute fractions of persistent (P) and non-persistent(N) contrail potential regions 781 780 !!IF (qcontr(i,k).GE.qsat) THEN 782 IF (qcontr2 >=qsat) THEN781 IF (qcontr2.GE.qsat) THEN 783 782 !--none of the unsaturated clear sky is prone for contrail formation 784 783 !!fcontrN(i,k) = 0.0 … … 788 787 pdf_a = log(qsat/q)/(pdf_k*sqrt(2.)) 789 788 pdf_e1 = pdf_a+pdf_b 790 IF (abs(pdf_e1) >=erf_lim) THEN789 IF (abs(pdf_e1).GE.erf_lim) THEN 791 790 pdf_e1 = sign(1.,pdf_e1) 792 791 ELSE … … 797 796 pdf_a = log(MIN(qcontr2,qvc)/q)/(pdf_k*sqrt(2.)) 798 797 pdf_e2 = pdf_a+pdf_b 799 IF (abs(pdf_e2) >=erf_lim) THEN798 IF (abs(pdf_e2).GE.erf_lim) THEN 800 799 pdf_e2 = sign(1.,pdf_e2) 801 800 ELSE … … 808 807 pdf_a = log(qsat/q)/(pdf_k*sqrt(2.)) 809 808 pdf_e1 = pdf_a+pdf_b 810 IF (abs(pdf_e1) >=erf_lim) THEN809 IF (abs(pdf_e1).GE.erf_lim) THEN 811 810 pdf_e1 = sign(1.,pdf_e1) 812 811 ELSE … … 817 816 pdf_a = log(MIN(qcontr2,qvc)/q)/(pdf_k*sqrt(2.)) 818 817 pdf_e2 = pdf_a+pdf_b 819 IF (abs(pdf_e2) >=erf_lim) THEN818 IF (abs(pdf_e2).GE.erf_lim) THEN 820 819 pdf_e2 = sign(1.,pdf_e2) 821 820 ELSE … … 828 827 pdf_a = log(MAX(qsat,qvc)/q)/(pdf_k*sqrt(2.)) 829 828 pdf_e1 = pdf_a+pdf_b 830 IF (abs(pdf_e1) >=erf_lim) THEN829 IF (abs(pdf_e1).GE.erf_lim) THEN 831 830 pdf_e1 = sign(1.,pdf_e1) 832 831 ELSE … … 837 836 pdf_a = log(MIN(qcontr2,MIN(gamma_prec*qvc,gamma_ss*qsat))/q)/(pdf_k*sqrt(2.)) 838 837 pdf_e2 = pdf_a+pdf_b 839 IF (abs(pdf_e2) >=erf_lim) THEN838 IF (abs(pdf_e2).GE.erf_lim) THEN 840 839 pdf_e2 = sign(1.,pdf_e2) 841 840 ELSE … … 848 847 pdf_a = log(gamma_prec*qvc/q)/(pdf_k*sqrt(2.)) 849 848 pdf_e1 = pdf_a+pdf_b 850 IF (abs(pdf_e1) >=erf_lim) THEN849 IF (abs(pdf_e1).GE.erf_lim) THEN 851 850 pdf_e1 = sign(1.,pdf_e1) 852 851 ELSE … … 857 856 pdf_a = log(MIN(qcontr2,gamma_ss*qsat)/q)/(pdf_k*sqrt(2.)) 858 857 pdf_e2 = pdf_a+pdf_b 859 IF (abs(pdf_e2) >=erf_lim) THEN858 IF (abs(pdf_e2).GE.erf_lim) THEN 860 859 pdf_e2 = sign(1.,pdf_e2) 861 860 ELSE … … 876 875 pdf_a = log(qcontr2/q)/(pdf_k*sqrt(2.)) 877 876 pdf_e1 = pdf_a+pdf_b !--normalement pdf_b est deja defini 878 IF (abs(pdf_e1) >=erf_lim) THEN877 IF (abs(pdf_e1).GE.erf_lim) THEN 879 878 pdf_e1 = sign(1.,pdf_e1) 880 879 ELSE … … 884 883 pdf_a = log(qsat/q)/(pdf_k*sqrt(2.)) 885 884 pdf_e2 = pdf_a+pdf_b 886 IF (abs(pdf_e2) >=erf_lim) THEN885 IF (abs(pdf_e2).GE.erf_lim) THEN 887 886 pdf_e2 = sign(1.,pdf_e2) 888 887 ELSE -
LMDZ6/trunk/libf/phylmd/inlandsis/surf_inlandsis_mod.F90
r5075 r5084 638 638 END DO 639 639 640 IF (sissnow(ikl) <=sn_low) THEN !add snow641 IF (isnoSV(ikl) >=1) THEN640 IF (sissnow(ikl) .LE. sn_low) THEN !add snow 641 IF (isnoSV(ikl).GE.1) THEN 642 642 dzsnSV(ikl, 1) = dzsnSV(ikl, 1) + sn_add / max(ro__SV(ikl, 1), epsi) 643 643 toicSV(ikl) = toicSV(ikl) - sn_add … … 657 657 END IF 658 658 659 IF (sissnow(ikl) >=sn_upp) THEN !thinnen snow layer below659 IF (sissnow(ikl) .ge. sn_upp) THEN !thinnen snow layer below 660 660 dzsnSV(ikl, 1) = dzsnSV(ikl, 1) / sn_div 661 661 toicSV(ikl) = toicSV(ikl) + dzsnSV(ikl, 1) * ro__SV(ikl, 1) / sn_div … … 1049 1049 ! Objet: Lecture du fichier de conditions initiales pour SISVAT 1050 1050 !====================================================================== 1051 include "netcdf.inc" 1051 1052 ! include "indicesol.h" 1052 1053 … … 1117 1118 1118 1119 DO isn = 1, nsno 1119 IF (isn <=99) THEN1120 IF (isn.LE.99) THEN 1120 1121 WRITE(str2, '(i2.2)') isn 1121 1122 CALL get_field("AGESNOW" // str2, & … … 1127 1128 ENDDO 1128 1129 DO isn = 1, nsno 1129 IF (isn <=99) THEN1130 IF (isn.LE.99) THEN 1130 1131 WRITE(str2, '(i2.2)') isn 1131 1132 CALL get_field("DZSNOW" // str2, & … … 1137 1138 ENDDO 1138 1139 DO isn = 1, nsno 1139 IF (isn <=99) THEN1140 IF (isn.LE.99) THEN 1140 1141 WRITE(str2, '(i2.2)') isn 1141 1142 CALL get_field("G2SNOW" // str2, & … … 1147 1148 ENDDO 1148 1149 DO isn = 1, nsno 1149 IF (isn <=99) THEN1150 IF (isn.LE.99) THEN 1150 1151 WRITE(str2, '(i2.2)') isn 1151 1152 CALL get_field("G1SNOW" // str2, & … … 1157 1158 ENDDO 1158 1159 DO isn = 1, nsismx 1159 IF (isn <=99) THEN1160 IF (isn.LE.99) THEN 1160 1161 WRITE(str2, '(i2.2)') isn 1161 1162 CALL get_field("ETA" // str2, & … … 1167 1168 ENDDO 1168 1169 DO isn = 1, nsismx 1169 IF (isn <=99) THEN1170 IF (isn.LE.99) THEN 1170 1171 WRITE(str2, '(i2.2)') isn 1171 1172 CALL get_field("RO" // str2, & … … 1177 1178 ENDDO 1178 1179 DO isn = 1, nsismx 1179 IF (isn <=99) THEN1180 IF (isn.LE.99) THEN 1180 1181 WRITE(str2, '(i2.2)') isn 1181 1182 CALL get_field("TSS" // str2, & … … 1187 1188 ENDDO 1188 1189 DO isn = 1, nsno 1189 IF (isn <=99) THEN1190 IF (isn.LE.99) THEN 1190 1191 WRITE(str2, '(i2.2)') isn 1191 1192 CALL get_field("HISTORY" // str2, & … … 1286 1287 IMPLICIT none 1287 1288 1289 include "netcdf.inc" 1288 1290 ! include "indicesol.h" 1289 1291 ! include "dimsoil.h" … … 1401 1403 1402 1404 DO isn = 1, nsno 1403 IF (isn <=99) THEN1405 IF (isn.LE.99) THEN 1404 1406 WRITE(str2, '(i2.2)') isn 1405 1407 CALL put_field(pass, "AGESNOW" // str2, & … … 1412 1414 ENDDO 1413 1415 DO isn = 1, nsno 1414 IF (isn <=99) THEN1416 IF (isn.LE.99) THEN 1415 1417 WRITE(str2, '(i2.2)') isn 1416 1418 CALL put_field(pass, "DZSNOW" // str2, & … … 1423 1425 ENDDO 1424 1426 DO isn = 1, nsno 1425 IF (isn <=99) THEN1427 IF (isn.LE.99) THEN 1426 1428 WRITE(str2, '(i2.2)') isn 1427 1429 CALL put_field(pass, "G2SNOW" // str2, & … … 1434 1436 ENDDO 1435 1437 DO isn = 1, nsno 1436 IF (isn <=99) THEN1438 IF (isn.LE.99) THEN 1437 1439 WRITE(str2, '(i2.2)') isn 1438 1440 CALL put_field(pass, "G1SNOW" // str2, & … … 1445 1447 ENDDO 1446 1448 DO isn = 1, nsismx 1447 IF (isn <=99) THEN1449 IF (isn.LE.99) THEN 1448 1450 WRITE(str2, '(i2.2)') isn 1449 1451 CALL put_field(pass, "ETA" // str2, & … … 1456 1458 ENDDO 1457 1459 DO isn = 1, nsismx !nsno 1458 IF (isn <=99) THEN1460 IF (isn.LE.99) THEN 1459 1461 WRITE(str2, '(i2.2)') isn 1460 1462 CALL put_field(pass, "RO" // str2, & … … 1467 1469 ENDDO 1468 1470 DO isn = 1, nsismx 1469 IF (isn <=99) THEN1471 IF (isn.LE.99) THEN 1470 1472 WRITE(str2, '(i2.2)') isn 1471 1473 CALL put_field(pass, "TSS" // str2, & … … 1478 1480 ENDDO 1479 1481 DO isn = 1, nsno 1480 IF (isn <=99) THEN1482 IF (isn.LE.99) THEN 1481 1483 WRITE(str2, '(i2.2)') isn 1482 1484 CALL put_field(pass, "HISTORY" // str2, & -
LMDZ6/trunk/libf/phylmd/interfoce_lim.F90
r5075 r5084 10 10 USE mod_phys_lmdz_para 11 11 USE indice_sol_mod 12 USE lmdz_netcdf, ONLY: nf90_get_var,nf_close,nf_noerr,nf_inq_varid,nf_open,nf_nowrite13 12 14 13 IMPLICIT NONE 14 15 INCLUDE "netcdf.inc" 15 16 16 17 ! Cette routine sert d'interface entre le modele atmospherique et un fichier … … 115 116 fich = TRIM(fich) 116 117 ierr = NF_OPEN (fich, NF_NOWRITE,nid) 117 IF (ierr /=NF_NOERR) THEN118 IF (ierr.NE.NF_NOERR) THEN 118 119 abort_message = 'Pb d''ouverture du fichier de conditions aux limites' 119 120 CALL abort_physic(modname,abort_message,1) … … 136 137 CALL abort_physic(modname,abort_message,1) 137 138 ENDIF 138 ierr = nf90_get_var(nid,nvarid,pct_tmp(:,is_oce),start,epais) 139 #ifdef NC_DOUBLE 140 ierr = NF_GET_VARA_DOUBLE(nid,nvarid,start,epais,pct_tmp(1,is_oce)) 141 #else 142 ierr = NF_GET_VARA_REAL(nid,nvarid,start,epais,pct_tmp(1,is_oce)) 143 #endif 139 144 IF (ierr /= NF_NOERR) THEN 140 145 abort_message = 'Lecture echouee pour <FOCE>' … … 149 154 CALL abort_physic(modname,abort_message,1) 150 155 ENDIF 151 ierr = nf90_get_var(nid,nvarid,pct_tmp(:,is_sic),start,epais) 156 #ifdef NC_DOUBLE 157 ierr = NF_GET_VARA_DOUBLE(nid,nvarid,start,epais,pct_tmp(1,is_sic)) 158 #else 159 ierr = NF_GET_VARA_REAL(nid,nvarid,start,epais,pct_tmp(1,is_sic)) 160 #endif 152 161 IF (ierr /= NF_NOERR) THEN 153 162 abort_message = 'Lecture echouee pour <FSIC>' … … 162 171 CALL abort_physic(modname,abort_message,1) 163 172 ENDIF 164 ierr = nf90_get_var(nid,nvarid,pct_tmp(:,is_ter),start,epais) 173 #ifdef NC_DOUBLE 174 ierr = NF_GET_VARA_DOUBLE(nid,nvarid,start,epais,pct_tmp(1,is_ter)) 175 #else 176 ierr = NF_GET_VARA_REAL(nid,nvarid,start,epais,pct_tmp(1,is_ter)) 177 #endif 165 178 IF (ierr /= NF_NOERR) THEN 166 179 abort_message = 'Lecture echouee pour <FTER>' … … 175 188 CALL abort_physic(modname,abort_message,1) 176 189 ENDIF 177 ierr = nf90_get_var(nid,nvarid,pct_tmp(:,is_lic),start,epais) 190 #ifdef NC_DOUBLE 191 ierr = NF_GET_VARA_DOUBLE(nid,nvarid,start,epais,pct_tmp(1,is_lic)) 192 #else 193 ierr = NF_GET_VARA_REAL(nid,nvarid,start,epais,pct_tmp(1,is_lic)) 194 #endif 178 195 IF (ierr /= NF_NOERR) THEN 179 196 abort_message = 'Lecture echouee pour <FLIC>' … … 188 205 CALL abort_physic(modname,abort_message,1) 189 206 ENDIF 190 ierr = nf90_get_var(nid,nvarid,nat_lu,start,epais) 207 #ifdef NC_DOUBLE 208 ierr = NF_GET_VARA_DOUBLE(nid,nvarid,start,epais, nat_lu) 209 #else 210 ierr = NF_GET_VARA_REAL(nid,nvarid,start,epais, nat_lu) 211 #endif 191 212 IF (ierr /= NF_NOERR) THEN 192 213 abort_message = 'Lecture echouee pour <NAT>' … … 218 239 CALL abort_physic(modname,abort_message,1) 219 240 ENDIF 220 ierr = nf90_get_var(nid,nvarid,sst_lu,start,epais) 241 #ifdef NC_DOUBLE 242 ierr = NF_GET_VARA_DOUBLE(nid,nvarid,start,epais, sst_lu) 243 #else 244 ierr = NF_GET_VARA_REAL(nid,nvarid,start,epais, sst_lu) 245 #endif 221 246 IF (ierr /= NF_NOERR) THEN 222 247 abort_message = 'Lecture echouee pour <SST>' -
LMDZ6/trunk/libf/phylmd/iostart.F90
r5075 r5084 1 1 MODULE iostart 2 2 3 3 PRIVATE 4 4 INTEGER,SAVE :: nid_start … … 30 30 31 31 SUBROUTINE Open_startphy(filename) 32 USE lmdz_netcdf, ONLY: nf90_nowrite, nf90_noerr,nf90_open32 USE netcdf 33 33 USE mod_phys_lmdz_para 34 34 IMPLICIT NONE … … 38 38 IF (is_mpi_root .AND. is_omp_root) THEN 39 39 ierr = NF90_OPEN (filename, NF90_NOWRITE,nid_start) 40 IF (ierr /=NF90_NOERR) THEN40 IF (ierr.NE.NF90_NOERR) THEN 41 41 write(6,*)' Pb d''ouverture du fichier '//filename 42 42 write(6,*)' ierr = ', ierr … … 48 48 49 49 SUBROUTINE Close_startphy 50 USE lmdz_netcdf, ONLY: nf90_close50 USE netcdf 51 51 USE mod_phys_lmdz_para 52 52 IMPLICIT NONE … … 61 61 62 62 FUNCTION Inquire_Field(Field_name) 63 USE lmdz_netcdf, ONLY: nf90_noerr,nf90_inq_varid63 USE netcdf 64 64 USE mod_phys_lmdz_para 65 65 IMPLICIT NONE … … 115 115 116 116 SUBROUTINE Get_field_rgen(field_name,field,field_size,found) 117 USE lmdz_netcdf, ONLY: nf90_inq_varid,nf90_noerr,nf90_get_var117 USE netcdf 118 118 USE dimphy 119 119 USE geometry_mod … … 251 251 252 252 SUBROUTINE Get_var_rgen(var_name,var,var_size,found) 253 USE lmdz_netcdf, ONLY: nf90_noerr,nf90_get_var,nf90_inq_varid253 USE netcdf 254 254 USE dimphy 255 255 USE mod_grid_phy_lmdz … … 301 301 302 302 SUBROUTINE open_restartphy(filename) 303 USE lmdz_netcdf, ONLY: nf90_create,nf90_clobber,nf90_64bit_offset,nf90_noerr,nf90_strerror,& 304 nf90_global,nf90_put_att,nf90_def_dim 303 USE netcdf 305 304 USE mod_phys_lmdz_para, ONLY: is_master 306 305 USE mod_grid_phy_lmdz, ONLY: klon_glo … … 333 332 334 333 SUBROUTINE enddef_restartphy 335 USE lmdz_netcdf, ONLY: nf90_enddef334 USE netcdf 336 335 USE mod_phys_lmdz_para 337 336 IMPLICIT NONE … … 343 342 344 343 SUBROUTINE close_restartphy 345 USE lmdz_netcdf, ONLY: nf90_close344 USE netcdf 346 345 USE mod_phys_lmdz_para 347 346 IMPLICIT NONE … … 386 385 387 386 SUBROUTINE put_field_rgen(pass, field_name,title,field,field_size) 388 USE lmdz_netcdf, ONLY: nf90_def_var,nf90_format,nf90_put_att,nf90_inq_varid,nf90_put_var387 USE netcdf 389 388 USE dimphy 390 389 USE geometry_mod … … 425 424 426 425 ! ierr = NF90_REDEF (nid_restart) 427 ierr = NF90_DEF_VAR (nid_restart, field_name, NF90_FORMAT,(/ idim /),nvarid) 426 #ifdef NC_DOUBLE 427 ierr = NF90_DEF_VAR (nid_restart, field_name, NF90_DOUBLE,(/ idim /),nvarid) 428 #else 429 ierr = NF90_DEF_VAR (nid_restart, field_name, NF90_FLOAT,(/ idim /),nvarid) 430 #endif 428 431 IF (LEN_TRIM(title) > 0) ierr = NF90_PUT_ATT (nid_restart,nvarid,"title", title) 429 432 ! ierr = NF90_ENDDEF(nid_restart) … … 509 512 510 513 SUBROUTINE put_var_rgen(pass, var_name,title,var,var_size) 511 USE lmdz_netcdf, ONLY: nf90_format,nf90_def_var,nf90_put_var,nf90_inq_varid,nf90_put_att514 USE netcdf 512 515 USE dimphy 513 516 USE mod_phys_lmdz_para … … 534 537 ! ierr = NF90_REDEF (nid_restart) 535 538 536 ierr = NF90_DEF_VAR (nid_restart, var_name, NF90_FORMAT,(/ idim1 /),nvarid) 539 #ifdef NC_DOUBLE 540 ierr = NF90_DEF_VAR (nid_restart, var_name, NF90_DOUBLE,(/ idim1 /),nvarid) 541 #else 542 ierr = NF90_DEF_VAR (nid_restart, var_name, NF90_FLOAT,(/ idim1 /),nvarid) 543 #endif 537 544 IF (LEN_TRIM(title)>0) ierr = NF90_PUT_ATT (nid_restart,nvarid,"title", title) 538 545 ! ierr = NF90_ENDDEF(nid_restart) -
LMDZ6/trunk/libf/phylmd/iotd_ecrit.F90
r5075 r5084 22 22 !================================================================= 23 23 24 USE lmdz_netcdf, ONLY: nf90_put_var,nf_inq_varid,nf_enddef,nf_redef,nf_sync,nf_noerr,& 25 nf_float,nf_def_var 24 use netcdf, only: nf90_put_var 26 25 implicit none 27 26 28 27 ! Commons 29 28 29 INCLUDE "netcdf.inc" 30 30 INCLUDE "iotd.h" 31 31 … … 90 90 91 91 !! Quand on tombe sur la premiere variable on ajoute un pas de temps 92 if (nom ==firstnom) then92 if (nom.eq.firstnom) then 93 93 ! We have identified a "first call" (at given date) 94 94 … … 114 114 ! print*,'IOTD Date ,varid,nid,ntime,date',varid,nid,ntime,date 115 115 116 if (ierr /=NF_NOERR) then116 if (ierr.ne.NF_NOERR) then 117 117 write(*,*) "***** PUT_VAR matter in writediagfi_nc" 118 118 write(*,*) "***** with time" … … 175 175 ierr= NF90_PUT_VAR(nid,varid,zx,corner,edges) 176 176 177 if (ierr /=NF_NOERR) then177 if (ierr.ne.NF_NOERR) then 178 178 write(*,*) "***** PUT_VAR problem in writediagfi" 179 179 write(*,*) "***** with ",nom -
LMDZ6/trunk/libf/phylmd/iotd_fin.F90
r5075 r5084 1 SUBROUTINE iotd_fin2 USE lmdz_netcdf, ONLY : nf_close1 SUBROUTINE iotd_fin 2 IMPLICIT NONE 3 3 4 IMPLICIT NONE 4 !======================================================================= 5 ! 6 ! Auteur: F. Hourdin 7 ! ------- 8 ! 9 ! Objet: 10 ! ------ 11 ! Light interface for netcdf outputs. can be used outside LMDZ 12 ! 13 !======================================================================= 5 14 6 !=======================================================================7 !8 ! Auteur: F. Hourdin9 ! -------10 !11 ! Objet:12 ! ------13 ! Light interface for netcdf outputs. can be used outside LMDZ14 !15 !=======================================================================16 15 17 INCLUDE "iotd.h" 18 integer ierr 16 INCLUDE "netcdf.inc" 17 INCLUDE "iotd.h" 18 integer ierr 19 19 20 21 20 ! Arguments: 21 ! ---------- 22 22 23 ierr =NF_close(nid)23 ierr=NF_close(nid) 24 24 25 END25 END -
LMDZ6/trunk/libf/phylmd/iotd_ini.F90
r5075 r5084 1 1 SUBROUTINE iotd_ini(fichnom,iim,jjm,llm,prlon,prlat,pcoordv,jour0,mois0,an0,t0,timestep,calendrier) 2 USE lmdz_netcdf, ONLY: nf_enddef,nf_put_att_text,nf_float,nf_def_var,nf_redef,&3 nf_global,nf_def_dim,nf_create,nf_clobber,nf_unlimited,nf90_put_var4 2 IMPLICIT NONE 5 3 … … 18 16 ! ------------- 19 17 18 INCLUDE "netcdf.inc" 20 19 INCLUDE "iotd.h" 21 20 … … 32 31 real px(1000) 33 32 character (len=10) :: nom 34 real (kind=4)rlon(iim),rlat(jjm),coordv(llm)33 real*4 rlon(iim),rlat(jjm),coordv(llm) 35 34 36 35 ! Local: … … 72 71 n_names_iotd_def=0 73 72 open(99,file='iotd.def',form='formatted',status='old',iostat=ierr) 74 if ( ierr ==0 ) then73 if ( ierr.eq.0 ) then 75 74 ierr=0 76 75 do while (ierr==0) … … 113 112 ierr=NF_PUT_ATT_TEXT(nid,nvarid,'units',12,"degrees_east") 114 113 ierr=NF_ENDDEF(nid) 115 ierr= nf90_put_var(nid,nvarid,rlon)114 ierr=NF_PUT_VAR_REAL(nid,nvarid,rlon) 116 115 print*,ierr 117 116 … … 122 121 ierr=NF_PUT_ATT_TEXT(nid,nvarid,'units',13,"degrees_north") 123 122 ierr=NF_ENDDEF(nid) 124 ierr= nf90_put_var(nid,nvarid,rlat)123 ierr=NF_PUT_VAR_REAL(nid,nvarid,rlat) 125 124 ! 126 125 ! ---- vertical ------------ … … 136 135 endif 137 136 ierr=NF_ENDDEF(nid) 138 ierr= nf90_put_var(nid,nvarid,coordv)137 ierr=NF_PUT_VAR_REAL(nid,nvarid,coordv) 139 138 140 139 ! -
LMDZ6/trunk/libf/phylmd/limit_read_mod.F90
r5075 r5084 165 165 USE mod_phys_lmdz_para 166 166 USE surface_data, ONLY : type_ocean, ok_veget 167 USE lmdz_netcdf, ONLY:nf90_get_var,nf90_inq_varid,nf90_close,nf90_inquire_dimension,& 168 nf90_inquire,nf90_get_att,nf90_inq_dimid,nf90_nowrite,nf90_noerr,nf90_open 167 USE netcdf 169 168 USE indice_sol_mod 170 169 USE phys_cal_mod, ONLY : calend, year_len -
LMDZ6/trunk/libf/phylmd/limit_slab.F90
r5075 r5084 6 6 USE mod_grid_phy_lmdz, ONLY: klon_glo 7 7 USE mod_phys_lmdz_para 8 USE lmdz_netcdf, ONLY: nf90_close,nf90_get_var,nf90_inq_varid,nf90_nowrite,nf90_noerr,nf90_open8 USE netcdf 9 9 USE indice_sol_mod 10 10 USE ocean_slab_mod, ONLY: nslay … … 99 99 END IF 100 100 ! Try next layers if more than 1 101 IF ((nslay >1).AND.read_bils) THEN101 IF ((nslay.GT.1).AND.read_bils) THEN 102 102 DO i=2,nslay 103 103 WRITE(str2,'(i2.2)') i 104 104 ierr = NF90_INQ_VARID(nid,'BILS_OCE'//str2, nvarid) 105 IF (ierr ==NF90_NOERR) THEN105 IF (ierr.EQ.NF90_NOERR) THEN 106 106 ierr = NF90_GET_VAR(nid,nvarid,bils_glo(:,i),start,epais) 107 107 ENDIF -
LMDZ6/trunk/libf/phylmd/mo_simple_plumes.F90
r5075 r5084 24 24 MODULE MO_SIMPLE_PLUMES 25 25 26 USE lmdz_netcdf, ONLY:nf90_get_var,nf90_close,nf90_inq_varid,nf90_inq_dimid,& 27 nf90_inquire_dimension,nf90_noerr,nf90_nowrite,nf90_open 26 USE netcdf 28 27 29 28 IMPLICIT NONE -
LMDZ6/trunk/libf/phylmd/moy_undefSTD.F90
r5075 r5084 3 3 4 4 SUBROUTINE moy_undefstd(itap, itapm1) 5 USE lmdz_netcdf, ONLY: nf90_fill_real5 USE netcdf 6 6 USE dimphy 7 7 #ifdef CPP_IOIPSL -
LMDZ6/trunk/libf/phylmd/open_climoz_m.F90
r5075 r5084 13 13 !------------------------------------------------------------------------------- 14 14 USE netcdf95, ONLY: nf95_open, nf95_close, nf95_gw_var, nf95_inq_varid 15 USE lmdz_netcdf, ONLY: nf90_nowrite15 USE netcdf, ONLY: nf90_nowrite 16 16 USE mod_phys_lmdz_mpi_data, ONLY: is_mpi_root 17 17 USE mod_phys_lmdz_mpi_transfert, ONLY: bcast_mpi -
LMDZ6/trunk/libf/phylmd/pbl_surface_mod.F90
r5075 r5084 415 415 use lmdz_blowing_snow_ini, only : zeta_bs 416 416 USE wxios, ONLY: missing_val_xios => missing_val, using_xios 417 USE lmdz_netcdf, only: missing_val_netcdf => nf90_fill_real417 USE netcdf, only: missing_val_netcdf => nf90_fill_real 418 418 419 419 -
LMDZ6/trunk/libf/phylmd/phyaqua_mod.F90
r5073 r5084 133 133 !END IF 134 134 135 if (year_len /=360) then135 if (year_len.ne.360) then 136 136 write (*,*) year_len 137 137 call abort_physic("iniaqua", 'iniaqua: 360 day calendar is required !', 1) … … 517 517 IMPLICIT NONE 518 518 519 include "netcdf.inc" 520 519 521 INTEGER, INTENT (IN) :: klon 520 522 REAL, INTENT (IN) :: phy_nat(klon, 360) … … 570 572 USE mod_phys_lmdz_transfert_para, ONLY: gather 571 573 USE phys_cal_mod, ONLY: year_len 572 use lmdz_netcdf, ONLY: nf90_def_var, nf90_put_var, nf90_get_var, nf_strerror, nf_close, & 573 nf_enddef, nf_put_att_text, nf_unlimited, nf_noerr, nf_global, nf_clobber, & 574 nf_64bit_offset, nf90_format, nf_def_dim, nf_create 574 use netcdf, only: nf90_def_var, nf90_double, nf90_float 575 575 IMPLICIT NONE 576 include "netcdf.inc" 576 577 577 578 INTEGER, INTENT (IN) :: klon … … 615 616 dims(2) = ntim 616 617 617 ierr = nf90_def_var(nid, 'TEMPS', NF90_FORMAT, [ntim], id_tim) 618 #ifdef NC_DOUBLE 619 ierr = nf90_def_var(nid, 'TEMPS', nf90_double, [ntim], id_tim) 620 #else 621 ierr = nf90_def_var(nid, 'TEMPS', nf90_float, [ntim], id_tim) 622 #endif 618 623 ierr = nf_put_att_text(nid, id_tim, 'title', 17, 'Jour dans l annee') 619 624 620 ierr = nf90_def_var(nid, 'NAT', NF90_FORMAT, dims, id_nat) 625 #ifdef NC_DOUBLE 626 ierr = nf90_def_var(nid, 'NAT', nf90_double, dims, id_nat) 627 #else 628 ierr = nf90_def_var(nid, 'NAT', nf90_float, dims, id_nat) 629 #endif 621 630 ierr = nf_put_att_text(nid, id_nat, 'title', 23, & 622 631 'Nature du sol (0,1,2,3)') 623 632 624 ierr = nf90_def_var(nid, 'SST', NF90_FORMAT, dims, id_sst) 633 #ifdef NC_DOUBLE 634 ierr = nf90_def_var(nid, 'SST', nf90_double, dims, id_sst) 635 #else 636 ierr = nf90_def_var(nid, 'SST', nf90_float, dims, id_sst) 637 #endif 625 638 ierr = nf_put_att_text(nid, id_sst, 'title', 35, & 626 639 'Temperature superficielle de la mer') 627 640 628 ierr = nf90_def_var(nid, 'BILS', NF90_FORMAT, dims, id_bils) 641 #ifdef NC_DOUBLE 642 ierr = nf90_def_var(nid, 'BILS', nf90_double, dims, id_bils) 643 #else 644 ierr = nf90_def_var(nid, 'BILS', nf90_float, dims, id_bils) 645 #endif 629 646 ierr = nf_put_att_text(nid, id_bils, 'title', 32, & 630 647 'Reference flux de chaleur au sol') 631 648 632 ierr = nf90_def_var(nid, 'ALB', NF90_FORMAT, dims, id_alb) 649 #ifdef NC_DOUBLE 650 ierr = nf90_def_var(nid, 'ALB', nf90_double, dims, id_alb) 651 #else 652 ierr = nf90_def_var(nid, 'ALB', nf90_float, dims, id_alb) 653 #endif 633 654 ierr = nf_put_att_text(nid, id_alb, 'title', 19, 'Albedo a la surface') 634 655 635 ierr = nf90_def_var(nid, 'RUG', NF90_FORMAT, dims, id_rug) 656 #ifdef NC_DOUBLE 657 ierr = nf90_def_var(nid, 'RUG', nf90_double, dims, id_rug) 658 #else 659 ierr = nf90_def_var(nid, 'RUG', nf90_float, dims, id_rug) 660 #endif 636 661 ierr = nf_put_att_text(nid, id_rug, 'title', 8, 'Rugosite') 637 662 638 ierr = nf90_def_var(nid, 'FTER', NF90_FORMAT, dims, id_fter) 663 #ifdef NC_DOUBLE 664 ierr = nf90_def_var(nid, 'FTER', nf90_double, dims, id_fter) 665 #else 666 ierr = nf90_def_var(nid, 'FTER', nf90_float, dims, id_fter) 667 #endif 639 668 ierr = nf_put_att_text(nid, id_fter, 'title',10,'Frac. Land') 640 ierr = nf90_def_var(nid, 'FOCE', NF90_FORMAT, dims, id_foce) 669 #ifdef NC_DOUBLE 670 ierr = nf90_def_var(nid, 'FOCE', nf90_double, dims, id_foce) 671 #else 672 ierr = nf90_def_var(nid, 'FOCE', nf90_float, dims, id_foce) 673 #endif 641 674 ierr = nf_put_att_text(nid, id_foce, 'title',11,'Frac. Ocean') 642 ierr = nf90_def_var(nid, 'FSIC', NF90_FORMAT, dims, id_fsic) 675 #ifdef NC_DOUBLE 676 ierr = nf90_def_var(nid, 'FSIC', nf90_double, dims, id_fsic) 677 #else 678 ierr = nf90_def_var(nid, 'FSIC', nf90_float, dims, id_fsic) 679 #endif 643 680 ierr = nf_put_att_text(nid, id_fsic, 'title',13,'Frac. Sea Ice') 644 ierr = nf90_def_var(nid, 'FLIC', NF90_FORMAT, dims, id_flic) 681 #ifdef NC_DOUBLE 682 ierr = nf90_def_var(nid, 'FLIC', nf90_double, dims, id_flic) 683 #else 684 ierr = nf90_def_var(nid, 'FLIC', nf90_float, dims, id_flic) 685 #endif 645 686 ierr = nf_put_att_text(nid, id_flic, 'title',14,'Frac. Land Ice') 646 687 … … 654 695 ! write the 'times' 655 696 DO k = 1, year_len 656 ierr = nf90_put_var(nid, id_tim, k, [k]) 697 #ifdef NC_DOUBLE 698 ierr = nf_put_var1_double(nid, id_tim, k, dble(k)) 699 #else 700 ierr = nf_put_var1_real(nid, id_tim, k, float(k)) 701 #endif 657 702 IF (ierr/=nf_noerr) THEN 658 703 WRITE (*, *) 'writelim error with temps(k),k=', k … … 667 712 CALL gather(phy_nat, phy_glo) 668 713 IF (is_master) THEN 669 ierr = nf90_put_var(nid, id_nat, phy_glo) 714 #ifdef NC_DOUBLE 715 ierr = nf_put_var_double(nid, id_nat, phy_glo) 716 #else 717 ierr = nf_put_var_real(nid, id_nat, phy_glo) 718 #endif 670 719 IF (ierr/=nf_noerr) THEN 671 720 WRITE (*, *) 'writelim error with phy_nat' … … 676 725 CALL gather(phy_sst, phy_glo) 677 726 IF (is_master) THEN 678 ierr = nf90_put_var(nid, id_sst, phy_glo) 727 #ifdef NC_DOUBLE 728 ierr = nf_put_var_double(nid, id_sst, phy_glo) 729 #else 730 ierr = nf_put_var_real(nid, id_sst, phy_glo) 731 #endif 679 732 IF (ierr/=nf_noerr) THEN 680 733 WRITE (*, *) 'writelim error with phy_sst' … … 685 738 CALL gather(phy_bil, phy_glo) 686 739 IF (is_master) THEN 687 ierr = nf90_put_var(nid, id_bils, phy_glo) 740 #ifdef NC_DOUBLE 741 ierr = nf_put_var_double(nid, id_bils, phy_glo) 742 #else 743 ierr = nf_put_var_real(nid, id_bils, phy_glo) 744 #endif 688 745 IF (ierr/=nf_noerr) THEN 689 746 WRITE (*, *) 'writelim error with phy_bil' … … 694 751 CALL gather(phy_alb, phy_glo) 695 752 IF (is_master) THEN 696 ierr = nf90_put_var(nid, id_alb, phy_glo) 753 #ifdef NC_DOUBLE 754 ierr = nf_put_var_double(nid, id_alb, phy_glo) 755 #else 756 ierr = nf_put_var_real(nid, id_alb, phy_glo) 757 #endif 697 758 IF (ierr/=nf_noerr) THEN 698 759 WRITE (*, *) 'writelim error with phy_alb' … … 703 764 CALL gather(phy_rug, phy_glo) 704 765 IF (is_master) THEN 705 ierr = nf90_put_var(nid, id_rug, phy_glo) 766 #ifdef NC_DOUBLE 767 ierr = nf_put_var_double(nid, id_rug, phy_glo) 768 #else 769 ierr = nf_put_var_real(nid, id_rug, phy_glo) 770 #endif 706 771 IF (ierr/=nf_noerr) THEN 707 772 WRITE (*, *) 'writelim error with phy_rug' … … 712 777 CALL gather(phy_fter, phy_glo) 713 778 IF (is_master) THEN 714 ierr = nf90_put_var(nid, id_fter, phy_glo) 779 #ifdef NC_DOUBLE 780 ierr = nf_put_var_double(nid, id_fter, phy_glo) 781 #else 782 ierr = nf_put_var_real(nid, id_fter, phy_glo) 783 #endif 715 784 IF (ierr/=nf_noerr) THEN 716 785 WRITE (*, *) 'writelim error with phy_fter' … … 721 790 CALL gather(phy_foce, phy_glo) 722 791 IF (is_master) THEN 723 ierr = nf90_put_var(nid, id_foce, phy_glo) 792 #ifdef NC_DOUBLE 793 ierr = nf_put_var_double(nid, id_foce, phy_glo) 794 #else 795 ierr = nf_put_var_real(nid, id_foce, phy_glo) 796 #endif 724 797 IF (ierr/=nf_noerr) THEN 725 798 WRITE (*, *) 'writelim error with phy_foce' … … 730 803 CALL gather(phy_fsic, phy_glo) 731 804 IF (is_master) THEN 732 ierr = nf90_put_var(nid, id_fsic, phy_glo) 805 #ifdef NC_DOUBLE 806 ierr = nf_put_var_double(nid, id_fsic, phy_glo) 807 #else 808 ierr = nf_put_var_real(nid, id_fsic, phy_glo) 809 #endif 733 810 IF (ierr/=nf_noerr) THEN 734 811 WRITE (*, *) 'writelim error with phy_fsic' … … 739 816 CALL gather(phy_flic, phy_glo) 740 817 IF (is_master) THEN 741 ierr = nf90_put_var(nid, id_flic, phy_glo) 818 #ifdef NC_DOUBLE 819 ierr = nf_put_var_double(nid, id_flic, phy_glo) 820 #else 821 ierr = nf_put_var_real(nid, id_flic, phy_glo) 822 #endif 742 823 IF (ierr/=nf_noerr) THEN 743 824 WRITE (*, *) 'writelim error with phy_flic' … … 939 1020 END IF 940 1021 941 if (type_profil ==20) then1022 if (type_profil.EQ.20) then 942 1023 print*,'Profile SST 20' 943 1024 ! Méthode 13 "Qmax2K" plateau réel �| l'Equateur augmenté +2K … … 948 1029 endif 949 1030 950 if (type_profil ==21) then1031 if (type_profil.EQ.21) then 951 1032 print*,'Profile SST 21' 952 1033 ! Méthode 13 "Qmax2K" plateau réel �| l'Equateur augmenté +2K -
LMDZ6/trunk/libf/phylmd/phyetat0_mod.F90
r5075 r5084 40 40 USE time_phylmdz_mod, ONLY: init_iteration, pdtphys, itau_phy 41 41 USE wxios, ONLY: missing_val_xios => missing_val, using_xios 42 use lmdz_netcdf, only: missing_val_netcdf => nf90_fill_real42 use netcdf, only: missing_val_netcdf => nf90_fill_real 43 43 use config_ocean_skin_m, only: activate_ocean_skin 44 44 … … 152 152 tab_cntrl(6)=nbapp_rad 153 153 154 IF (iflag_cycle_diurne >=1) tab_cntrl( 7) = iflag_cycle_diurne154 IF (iflag_cycle_diurne.GE.1) tab_cntrl( 7) = iflag_cycle_diurne 155 155 IF (soil_model) tab_cntrl( 8) =1. 156 156 IF (new_oliq) tab_cntrl( 9) =1. … … 251 251 + pctsrf(1 : klon, is_lic) 252 252 DO i = 1 , klon 253 IF ( abs(fractint(i) - zmasq(i) ) >EPSFRA ) THEN253 IF ( abs(fractint(i) - zmasq(i) ) .GT. EPSFRA ) THEN 254 254 WRITE(*, *) 'phyetat0: attention fraction terre pas ', & 255 255 'coherente ', i, zmasq(i), pctsrf(i, is_ter) & … … 262 262 + pctsrf(1 : klon, is_sic) 263 263 DO i = 1 , klon 264 IF ( abs( fractint(i) - (1. - zmasq(i))) >EPSFRA ) THEN264 IF ( abs( fractint(i) - (1. - zmasq(i))) .GT. EPSFRA ) THEN 265 265 WRITE(*, *) 'phyetat0 attention fraction ocean pas ', & 266 266 'coherente ', i, zmasq(i) , pctsrf(i, is_oce) & … … 290 290 DO nsrf = 1, nbsrf 291 291 DO isw=1, nsw 292 IF (isw >99) THEN292 IF (isw.GT.99) THEN 293 293 PRINT*, "Trop de bandes SW" 294 294 call abort_physic("phyetat0", "", 1) … … 313 313 314 314 DO isoil=1, nsoilmx 315 IF (isoil >99) THEN315 IF (isoil.GT.99) THEN 316 316 PRINT*, "Trop de couches " 317 317 call abort_physic("phyetat0", "", 1) … … 416 416 ! dummy values (as is the case when generated by ce0l, 417 417 ! or by iniaqua) 418 IF ( (maxval(q_ancien) ==minval(q_ancien)) .OR. &419 (maxval(ql_ancien) ==minval(ql_ancien)) .OR. &420 (maxval(qs_ancien) ==minval(qs_ancien)) .OR. &421 (maxval(rneb_ancien) ==minval(rneb_ancien)) .OR. &422 (maxval(prw_ancien) ==minval(prw_ancien)) .OR. &423 (maxval(prlw_ancien) ==minval(prlw_ancien)) .OR. &424 (maxval(prsw_ancien) ==minval(prsw_ancien)) .OR. &425 (maxval(t_ancien) ==minval(t_ancien)) ) THEN418 IF ( (maxval(q_ancien).EQ.minval(q_ancien)) .OR. & 419 (maxval(ql_ancien).EQ.minval(ql_ancien)) .OR. & 420 (maxval(qs_ancien).EQ.minval(qs_ancien)) .OR. & 421 (maxval(rneb_ancien).EQ.minval(rneb_ancien)) .OR. & 422 (maxval(prw_ancien).EQ.minval(prw_ancien)) .OR. & 423 (maxval(prlw_ancien).EQ.minval(prlw_ancien)) .OR. & 424 (maxval(prsw_ancien).EQ.minval(prsw_ancien)) .OR. & 425 (maxval(t_ancien).EQ.minval(t_ancien)) ) THEN 426 426 ancien_ok=.false. 427 427 ENDIF 428 428 429 429 IF (ok_bs) THEN 430 IF ( (maxval(qbs_ancien) ==minval(qbs_ancien)) .OR. &431 (maxval(prbsw_ancien) ==minval(prbsw_ancien)) ) THEN430 IF ( (maxval(qbs_ancien).EQ.minval(qbs_ancien)) .OR. & 431 (maxval(prbsw_ancien).EQ.minval(prbsw_ancien)) ) THEN 432 432 ancien_ok=.false. 433 433 ENDIF … … 549 549 IF ( type_ocean == 'slab' ) THEN 550 550 CALL ocean_slab_init(phys_tstep, pctsrf) 551 IF (nslay ==1) THEN551 IF (nslay.EQ.1) THEN 552 552 found=phyetat0_get(tslab,["tslab01","tslab "],"tslab",0.) 553 553 ELSE … … 578 578 PRINT*, "Initialisation a 0/1m suivant fraction glace" 579 579 seaice(:)=0. 580 WHERE (pctsrf(:,is_sic) >EPSFRA)580 WHERE (pctsrf(:,is_sic).GT.EPSFRA) 581 581 seaice=917. 582 582 ENDWHERE -
LMDZ6/trunk/libf/phylmd/phys_local_var_mod.F90
r5066 r5084 352 352 !$OMP THREADPRIVATE(d_deltat_vdf, d_deltaq_vdf) 353 353 !!! REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: d_s_vdf, d_dens_vdf 354 !!! $OMP THREADPRIVATE(d_s_vdf, d_dens_vdf)354 !!!OMP THREADPRIVATE(d_s_vdf, d_dens_vdf) 355 355 REAL, SAVE, ALLOCATABLE,DIMENSION(:,:) :: d_deltat_the, d_deltaq_the 356 356 !$OMP THREADPRIVATE(d_deltat_the, d_deltaq_the) 357 357 !!! REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: d_s_the, d_dens_the 358 !!! $OMP THREADPRIVATE(d_s_the, d_dens_the)358 !!!OMP THREADPRIVATE(d_s_the, d_dens_the) 359 359 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: d_deltat_ajs_cv, d_deltaq_ajs_cv 360 360 !$OMP THREADPRIVATE(d_deltat_ajs_cv, d_deltaq_ajs_cv) -
LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90
r5075 r5084 456 456 USE ioipsl, ONLY: histend, histsync 457 457 USE iophy, ONLY: set_itau_iophy, histwrite_phy 458 USE lmdz_netcdf, ONLY: nf90_fill_real458 USE netcdf, ONLY: nf90_fill_real 459 459 USE print_control_mod, ONLY: prt_level,lunout 460 460 ! ug Pour les sorties XIOS … … 555 555 kmax_100m=1 556 556 DO k=1, klev-1 557 IF (presnivs(k) >0.97*101325.) kmax_100m = k !--finding out max level for 100 m with a good margin557 IF (presnivs(k).GT.0.97*101325.) kmax_100m = k !--finding out max level for 100 m with a good margin 558 558 ENDDO 559 559 ENDIF … … 782 782 DO k=1, kmax_100m-1 !--we could stop much lower 783 783 DO i=1,klon 784 IF (z(i,k) <100..AND.z(i,k+1)>=100.) THEN784 IF (z(i,k).LT.100..AND.z(i,k+1).GE.100.) THEN 785 785 wind100m(i)=SQRT( (u_seri(i,k)+(100.-z(i,k))/(z(i,k+1)-z(i,k))*(u_seri(i,k+1)-u_seri(i,k)))**2.0 + & 786 786 (v_seri(i,k)+(100.-z(i,k))/(z(i,k+1)-z(i,k))*(v_seri(i,k+1)-v_seri(i,k)))**2.0 ) … … 794 794 !--polynomial fit for 14,Vestas,1074,V136/3450 kW windmill - Olivier 795 795 DO i=1,klon 796 IF (pctsrf(i,is_ter) >0.05 .AND. wind100m(i)/=missing_val) THEN796 IF (pctsrf(i,is_ter).GT.0.05 .AND. wind100m(i).NE.missing_val) THEN 797 797 x=wind100m(i) 798 IF (x <=3.0 .OR. x>=22.5) THEN798 IF (x.LE.3.0 .OR. x.GE.22.5) THEN 799 799 zx_tmp_fi2d(i)=0.0 800 ELSE IF (x >=10.0) THEN800 ELSE IF (x.GE.10.0) THEN 801 801 zx_tmp_fi2d(i)=1.0 802 802 ELSE … … 815 815 !--polynomial fit for 14,Vestas,867,V164/8000 kW - Olivier 816 816 DO i=1,klon 817 IF (pctsrf(i,is_oce) >0.05 .AND. wind100m(i)/=missing_val) THEN817 IF (pctsrf(i,is_oce).GT.0.05 .AND. wind100m(i).NE.missing_val) THEN 818 818 x=wind100m(i) 819 IF (x <=3.0 .OR. x>=25.5) THEN819 IF (x.LE.3.0 .OR. x.GE.25.5) THEN 820 820 zx_tmp_fi2d(i)=0.0 821 ELSE IF (x >=12.5) THEN821 ELSE IF (x.GE.12.5) THEN 822 822 zx_tmp_fi2d(i)=1.0 823 823 ELSE … … 1407 1407 CALL histwrite_phy(o_uwat, uwat) 1408 1408 CALL histwrite_phy(o_vwat, vwat) 1409 IF (iflag_con >=3) THEN ! sb1409 IF (iflag_con.GE.3) THEN ! sb 1410 1410 CALL histwrite_phy(o_cape, cape) 1411 1411 CALL histwrite_phy(o_pbase, ema_pcb) … … 1512 1512 DO k=1, nlevSTD 1513 1513 bb2=clevSTD(k) 1514 IF (bb2 =="850".OR.bb2=="700".OR. &1515 bb2 =="500".OR.bb2=="200".OR. &1516 bb2 =="100".OR. &1517 bb2 =="50".OR.bb2=="10") THEN1514 IF (bb2.EQ."850".OR.bb2.EQ."700".OR. & 1515 bb2.EQ."500".OR.bb2.EQ."200".OR. & 1516 bb2.EQ."100".OR. & 1517 bb2.EQ."50".OR.bb2.EQ."10") THEN 1518 1518 ll=ll+1 1519 1519 CALL histwrite_phy(o_uSTDlevs(ll),ulevSTD(:,k)) … … 1530 1530 IF (vars_defined) THEN 1531 1531 DO i=1, klon 1532 IF (pctsrf(i,is_oce) >epsfra.OR. &1533 pctsrf(i,is_sic) >epsfra) THEN1532 IF (pctsrf(i,is_oce).GT.epsfra.OR. & 1533 pctsrf(i,is_sic).GT.epsfra) THEN 1534 1534 zx_tmp_fi2d(i) = (ftsol(i, is_oce) * pctsrf(i,is_oce)+ & 1535 1535 ftsol(i, is_sic) * pctsrf(i,is_sic))/ & … … 1543 1543 1544 1544 ! Couplage convection-couche limite 1545 IF (iflag_con >=3) THEN1545 IF (iflag_con.GE.3) THEN 1546 1546 IF (iflag_coupl>=1) THEN 1547 1547 CALL histwrite_phy(o_ale_bl, ale_bl) … … 1550 1550 ENDIF !(iflag_con.GE.3) 1551 1551 ! Wakes 1552 IF (iflag_con ==3) THEN1552 IF (iflag_con.EQ.3) THEN 1553 1553 CALL histwrite_phy(o_Mipsh, Mipsh) 1554 1554 IF (iflag_wake>=1) THEN … … 1620 1620 CALL histwrite_phy(o_fqd, fqd) 1621 1621 ENDIF !(iflag_con.EQ.3) 1622 IF (iflag_con ==3.OR.iflag_con==30) THEN1622 IF (iflag_con.EQ.3.OR.iflag_con.EQ.30) THEN 1623 1623 ! sortie RomP convection descente insaturee iflag_con=30 1624 1624 ! etendue a iflag_con=3 (jyg) … … 1651 1651 IF (type_ocean=='slab ') THEN 1652 1652 CALL histwrite_phy(o_slab_bils, slab_wfbils) 1653 IF (nslay ==1) THEN1653 IF (nslay.EQ.1) THEN 1654 1654 IF (vars_defined) zx_tmp_fi2d(:)=tslab(:,1) 1655 1655 CALL histwrite_phy(o_tslab, zx_tmp_fi2d) … … 1669 1669 ENDIF 1670 1670 IF (slab_hdiff) THEN 1671 IF (nslay ==1) THEN1671 IF (nslay.EQ.1) THEN 1672 1672 IF (vars_defined) zx_tmp_fi2d(:)=dt_hdiff(:,1) 1673 1673 CALL histwrite_phy(o_slab_hdiff, zx_tmp_fi2d) … … 1676 1676 ENDIF 1677 1677 ENDIF 1678 IF (slab_ekman >0) THEN1679 IF (nslay ==1) THEN1678 IF (slab_ekman.GT.0) THEN 1679 IF (nslay.EQ.1) THEN 1680 1680 IF (vars_defined) zx_tmp_fi2d(:)=dt_ekman(:,1) 1681 1681 CALL histwrite_phy(o_slab_ekman, zx_tmp_fi2d) … … 1702 1702 IF (vars_defined) THEN 1703 1703 DO i=1, klon 1704 IF (zt2m(i) <=273.15) then1704 IF (zt2m(i).LE.273.15) then 1705 1705 zx_tmp_fi2d(i)=MAX(0.,rh2m(i)*100.) 1706 1706 ELSE … … 1744 1744 !This is warranted by treating INCA aerosols as offline aerosols 1745 1745 #ifndef CPP_ECRAD 1746 IF (flag_aerosol >0) THEN1746 IF (flag_aerosol.GT.0) THEN 1747 1747 IF (type_trac/='inca' .OR. config_inca=='aeNP') THEN 1748 1748 … … 1777 1777 ENDIF 1778 1778 !--STRAT AER 1779 IF (flag_aerosol >0.OR.flag_aerosol_strat>0) THEN1779 IF (flag_aerosol.GT.0.OR.flag_aerosol_strat.GT.0) THEN 1780 1780 DO naero = 1, naero_tot 1781 1781 CALL histwrite_phy(o_tausumaero(naero),tausum_aero(:,2,naero)) 1782 1782 ENDDO 1783 1783 ENDIF 1784 IF (flag_aerosol_strat >0) THEN1784 IF (flag_aerosol_strat.GT.0) THEN 1785 1785 CALL histwrite_phy(o_tausumaero_lw,tausum_aero(:,6,id_STRAT_phy)) 1786 1786 ENDIF … … 1933 1933 CALL histwrite_phy(o_sollwai, zx_tmp_fi2d) 1934 1934 ENDIF 1935 IF (flag_aerosol >0.AND.ok_cdnc) THEN1935 IF (flag_aerosol.GT.0.AND.ok_cdnc) THEN 1936 1936 CALL histwrite_phy(o_scdnc, scdnc) 1937 1937 CALL histwrite_phy(o_cldncl, cldncl) … … 2002 2002 #endif 2003 2003 2004 IF (flag_aerosol_strat ==2) THEN2004 IF (flag_aerosol_strat.EQ.2) THEN 2005 2005 CALL histwrite_phy(o_stratomask, stratomask) 2006 2006 ENDIF … … 2030 2030 CALL histwrite_phy(o_rnebjn, zx_tmp_fi3d) 2031 2031 CALL histwrite_phy(o_rhum, zx_rh) 2032 IF (iflag_ice_thermo >0) THEN2032 IF (iflag_ice_thermo .GT. 0) THEN 2033 2033 IF (vars_defined) zx_tmp_fi3d = zx_rhl * 100. 2034 2034 CALL histwrite_phy(o_rhl, zx_tmp_fi3d) … … 2111 2111 CALL histwrite_phy(o_dqlphy2d, zx_tmp_fi2d) 2112 2112 2113 IF (nqo ==3) THEN2113 IF (nqo.EQ.3) THEN 2114 2114 CALL histwrite_phy(o_dqsphy, d_qx(:,:,isol)) 2115 2115 IF (vars_defined) CALL water_int(klon,klev,d_qx(:,:,isol),zmasse,zx_tmp_fi2d) … … 2195 2195 ENDIF 2196 2196 CALL histwrite_phy(o_dtcon, zx_tmp_fi3d) 2197 IF (iflag_thermals ==0) THEN2197 IF (iflag_thermals.EQ.0) THEN 2198 2198 IF (vars_defined) THEN 2199 2199 zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + & … … 2201 2201 ENDIF 2202 2202 CALL histwrite_phy(o_tntc, zx_tmp_fi3d) 2203 ELSE IF(iflag_thermals >=1.AND.iflag_wake==1) THEN2203 ELSE IF(iflag_thermals.GE.1.AND.iflag_wake.EQ.1) THEN 2204 2204 IF (vars_defined) THEN 2205 2205 zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + & … … 2218 2218 CALL histwrite_phy(o_dqcon2d, zx_tmp_fi2d) 2219 2219 2220 IF (iflag_thermals ==0) THEN2220 IF (iflag_thermals.EQ.0) THEN 2221 2221 IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys 2222 2222 CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d) 2223 ELSE IF (iflag_thermals >=1.AND.iflag_wake==1) THEN2223 ELSE IF (iflag_thermals.GE.1.AND.iflag_wake.EQ.1) THEN 2224 2224 IF (vars_defined) THEN 2225 2225 zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys + & … … 2694 2694 DO k=1, nlevSTD 2695 2695 DO i=1, klon 2696 IF (O3STD(i,k) /=missing_val) THEN2696 IF (O3STD(i,k).NE.missing_val) THEN 2697 2697 zx_tmp_fi3d_STD(i,k) = O3STD(i,k) * 1.e+9 2698 2698 ELSE … … 2707 2707 DO k=1, nlevSTD 2708 2708 DO i=1, klon 2709 IF (O3daySTD(i,k) /=missing_val) THEN2709 IF (O3daySTD(i,k).NE.missing_val) THEN 2710 2710 zx_tmp_fi3d_STD(i,k) = O3daySTD(i,k) * 1.e+9 2711 2711 ELSE -
LMDZ6/trunk/libf/phylmd/phys_state_var_mod.F90
r5075 r5084 10 10 ! Declaration des variables 11 11 USE dimphy 12 USE lmdz_netcdf, only: nf90_fill_real12 USE netcdf, only: nf90_fill_real 13 13 INTEGER, PARAMETER :: nlevSTD=17 14 14 INTEGER, PARAMETER :: nlevSTD8=8 -
LMDZ6/trunk/libf/phylmd/physiq_mod.F90
r5075 r5084 48 48 USE mod_phys_lmdz_para 49 49 USE netcdf95, only: nf95_close 50 USE lmdz_netcdf, only: nf90_fill_real ! IM for NMC files50 USE netcdf, only: nf90_fill_real ! IM for NMC files 51 51 USE open_climoz_m, only: open_climoz ! ozone climatology from a file 52 52 USE ozonecm_m, only: ozonecm ! ozone of J.-F. Royer … … 1250 1250 !lwoff=y : offset LW CRE for radiation code and other schemes 1251 1251 REAL, SAVE :: betalwoff 1252 ! $OMP THREADPRIVATE(betalwoff)1252 !OMP THREADPRIVATE(betalwoff) 1253 1253 ! 1254 1254 INTEGER :: nbtr_tmp ! Number of tracer inside concvl -
LMDZ6/trunk/libf/phylmd/plevel.F90
r5075 r5084 7 7 ! ================================================================ 8 8 ! ================================================================ 9 USE lmdz_netcdf, ONLY: nf90_fill_real9 USE netcdf 10 10 USE dimphy 11 11 #ifdef CPP_IOIPSL -
LMDZ6/trunk/libf/phylmd/plevel_new.F90
r5075 r5084 8 8 ! ================================================================ 9 9 ! ================================================================ 10 USE netcdf 10 11 USE dimphy 11 12 #ifdef CPP_IOIPSL -
LMDZ6/trunk/libf/phylmd/press_coefoz_m.F90
r5075 r5084 24 24 25 25 use netcdf95, only: nf95_open, nf95_close, nf95_gw_var, nf95_inq_varid 26 use lmdz_netcdf, only: nf90_nowrite26 use netcdf, only: nf90_nowrite 27 27 28 28 use mod_phys_lmdz_mpi_data, only: is_mpi_root -
LMDZ6/trunk/libf/phylmd/read_map2D.F90
r5075 r5084 3 3 ! Return variable for the given timestep. 4 4 USE dimphy 5 USE lmdz_netcdf, ONLY: nf90_open,nf90_close,nf90_nowrite,nf90_noerr,nf90_get_var,nf90_inq_varid5 USE netcdf 6 6 USE mod_grid_phy_lmdz 7 7 USE mod_phys_lmdz_para -
LMDZ6/trunk/libf/phylmd/read_pstoke.F90
r5075 r5084 17 17 ! ****************************************************************************** 18 18 19 USE lmdz_netcdf, ONLY: nf90_open,nf90_inq_varid,nf90_nowrite,nf90_get_var,nf_inq_dim,& 20 nf_inq_dimid 19 USE netcdf 21 20 USE dimphy 22 21 USE indice_sol_mod … … 24 23 25 24 IMPLICIT NONE 25 26 include "netcdf.inc" 26 27 27 28 INTEGER klono, klevo, imo, jmo -
LMDZ6/trunk/libf/phylmd/read_pstoke0.F90
r5075 r5084 16 16 ! ****************************************************************************** 17 17 18 USE lmdz_netcdf, ONLY: nf_inq_dimid,nf_inq_dim,nf90_get_var,nf90_inq_varid,nf90_open,& 19 nf90_nowrite 18 USE netcdf 20 19 USE dimphy 21 20 USE indice_sol_mod … … 23 22 24 23 IMPLICIT NONE 24 25 include "netcdf.inc" 25 26 26 27 INTEGER kon, kev, zkon, zkev … … 252 253 ! niveaux de pression 253 254 254 status = nf 90_get_var(ncidp, varidpl, pl, [1], [kev])255 status = nf_get_vara_real(ncidp, varidpl, 1, kev, pl) 255 256 256 257 ! lecture de aire et phis … … 269 270 ! **** Geopotentiel au sol *************************************** 270 271 ! phis 271 status = nf90_get_var(ncidp, varidps, phisfi2, start, count) 272 #ifdef NC_DOUBLE 273 status = nf_get_vara_double(ncidp, varidps, start, count, phisfi2) 274 #else 275 status = nf_get_vara_real(ncidp, varidps, start, count, phisfi2) 276 #endif 272 277 CALL gr_ecrit_fi(1, kon, nbp_lon, nbp_lat, phisfi2, phisfi) 273 278 274 279 ! **** Aires des mails aux sol ************************************ 275 280 ! aire 276 status = nf90_get_var(ncidp, varidai, airefi2, start, count) 281 #ifdef NC_DOUBLE 282 status = nf_get_vara_double(ncidp, varidai, start, count, airefi2) 283 #else 284 status = nf_get_vara_real(ncidp, varidai, start, count, airefi2) 285 #endif 277 286 CALL gr_ecrit_fi(1, kon, nbp_lon, nbp_lat, airefi2, airefi) 278 287 ELSE … … 301 310 302 311 ! abder t 303 status = nf90_get_var(ncidp, varidt, t2, start, count) 312 #ifdef NC_DOUBLE 313 status = nf_get_vara_double(ncidp, varidt, start, count, t2) 314 #else 315 status = nf_get_vara_real(ncidp, varidt, start, count, t2) 316 #endif 304 317 CALL gr_ecrit_fi(kev, kon, nbp_lon, nbp_lat, t2, t) 305 318 … … 307 320 ! ******************************************** 308 321 ! mfu 309 status = nf90_get_var(ncidp, varidmfu, mfu2, start, count) 322 #ifdef NC_DOUBLE 323 status = nf_get_vara_double(ncidp, varidmfu, start, count, mfu2) 324 #else 325 status = nf_get_vara_real(ncidp, varidmfu, start, count, mfu2) 326 #endif 310 327 CALL gr_ecrit_fi(kev, kon, nbp_lon, nbp_lat, mfu2, mfu) 311 328 312 329 ! mfd 313 status = nf90_get_var(ncidp, varidmfd, mfd2, start, count) 330 #ifdef NC_DOUBLE 331 status = nf_get_vara_double(ncidp, varidmfd, start, count, mfd2) 332 #else 333 status = nf_get_vara_real(ncidp, varidmfd, start, count, mfd2) 334 #endif 314 335 CALL gr_ecrit_fi(kev, kon, nbp_lon, nbp_lat, mfd2, mfd) 315 336 316 337 ! en_u 317 status = nf90_get_var(ncidp, varidenu, en_u2, start, count) 338 #ifdef NC_DOUBLE 339 status = nf_get_vara_double(ncidp, varidenu, start, count, en_u2) 340 #else 341 status = nf_get_vara_real(ncidp, varidenu, start, count, en_u2) 342 #endif 318 343 CALL gr_ecrit_fi(kev, kon, nbp_lon, nbp_lat, en_u2, en_u) 319 344 320 345 ! de_u 321 status = nf90_get_var(ncidp, variddeu, de_u2, start, count) 346 #ifdef NC_DOUBLE 347 status = nf_get_vara_double(ncidp, variddeu, start, count, de_u2) 348 #else 349 status = nf_get_vara_real(ncidp, variddeu, start, count, de_u2) 350 #endif 322 351 CALL gr_ecrit_fi(kev, kon, nbp_lon, nbp_lat, de_u2, de_u) 323 352 324 353 ! en_d 325 status = nf90_get_var(ncidp, varidend, en_d2, start, count) 354 #ifdef NC_DOUBLE 355 status = nf_get_vara_double(ncidp, varidend, start, count, en_d2) 356 #else 357 status = nf_get_vara_real(ncidp, varidend, start, count, en_d2) 358 #endif 326 359 CALL gr_ecrit_fi(kev, kon, nbp_lon, nbp_lat, en_d2, en_d) 327 360 328 361 ! de_d 329 status = nf90_get_var(ncidp, varidded, de_d2, start, count) 362 #ifdef NC_DOUBLE 363 status = nf_get_vara_double(ncidp, varidded, start, count, de_d2) 364 #else 365 status = nf_get_vara_real(ncidp, varidded, start, count, de_d2) 366 #endif 330 367 CALL gr_ecrit_fi(kev, kon, nbp_lon, nbp_lat, de_d2, de_d) 331 368 … … 334 371 ! coefh 335 372 PRINT *, 'LECTURE de coefh a irec =', irec 336 status = nf90_get_var(ncidp, varidch, coefh2, start, count) 373 #ifdef NC_DOUBLE 374 status = nf_get_vara_double(ncidp, varidch, start, count, coefh2) 375 #else 376 status = nf_get_vara_real(ncidp, varidch, start, count, coefh2) 377 #endif 337 378 CALL gr_ecrit_fi(kev, kon, nbp_lon, nbp_lat, coefh2, coefh) 338 379 ! call dump2d(iip1,jjp1,coefh2(1,2),'COEFH2READ ') … … 343 384 ! Thermiques 344 385 PRINT *, 'LECTURE de fm_therm a irec =', irec 345 status = nf90_get_var(ncidp, varidfmth, fm_therm2, start, count) 386 #ifdef NC_DOUBLE 387 status = nf_get_vara_double(ncidp, varidfmth, start, count, fm_therm2) 388 #else 389 status = nf_get_vara_real(ncidp, varidfmth, start, count, fm_therm2) 390 #endif 346 391 CALL gr_ecrit_fi(kev, kon, nbp_lon, nbp_lat, fm_therm2, fm_therm) 347 392 PRINT *, 'LECTURE de en_therm a irec =', irec 348 status = nf90_get_var(ncidp, varidenth, en_therm2, start, count) 393 #ifdef NC_DOUBLE 394 status = nf_get_vara_double(ncidp, varidenth, start, count, en_therm2) 395 #else 396 status = nf_get_vara_real(ncidp, varidenth, start, count, en_therm2) 397 #endif 349 398 CALL gr_ecrit_fi(kev, kon, nbp_lon, nbp_lat, en_therm2, en_therm) 350 399 … … 352 401 ! ******************************************* 353 402 ! frac_impa 354 status = nf90_get_var(ncidp, varidfi, frac_impa2, start, count) 403 #ifdef NC_DOUBLE 404 status = nf_get_vara_double(ncidp, varidfi, start, count, frac_impa2) 405 #else 406 status = nf_get_vara_real(ncidp, varidfi, start, count, frac_impa2) 407 #endif 355 408 CALL gr_ecrit_fi(kev, kon, nbp_lon, nbp_lat, frac_impa2, frac_impa) 356 409 357 410 ! frac_nucl 358 411 359 status = nf90_get_var(ncidp, varidfn, frac_nucl2, start, count) 412 #ifdef NC_DOUBLE 413 status = nf_get_vara_double(ncidp, varidfn, start, count, frac_nucl2) 414 #else 415 status = nf_get_vara_real(ncidp, varidfn, start, count, frac_nucl2) 416 #endif 360 417 CALL gr_ecrit_fi(kev, kon, nbp_lon, nbp_lat, frac_nucl2, frac_nucl) 361 418 … … 369 426 ! pyu1 370 427 PRINT *, 'LECTURE de yu1 a irec =', irec 371 status = nf90_get_var(ncidp, varidyu1, pyu12, start, count) 428 #ifdef NC_DOUBLE 429 status = nf_get_vara_double(ncidp, varidyu1, start, count, pyu12) 430 #else 431 status = nf_get_vara_real(ncidp, varidyu1, start, count, pyu12) 432 #endif 372 433 CALL gr_ecrit_fi(1, kon, nbp_lon, nbp_lat, pyu12, pyu1) 373 434 374 435 ! pyv1 375 436 PRINT *, 'LECTURE de yv1 a irec =', irec 376 status = nf90_get_var(ncidp, varidyv1, pyv12, start, count) 437 #ifdef NC_DOUBLE 438 status = nf_get_vara_double(ncidp, varidyv1, start, count, pyv12) 439 #else 440 status = nf_get_vara_real(ncidp, varidyv1, start, count, pyv12) 441 #endif 377 442 CALL gr_ecrit_fi(1, kon, nbp_lon, nbp_lat, pyv12, pyv1) 378 443 … … 380 445 ! ftsol1 381 446 PRINT *, 'LECTURE de ftsol1 a irec =', irec 382 status = nf90_get_var(ncidp, varidfts1, ftsol12, start, count) 447 #ifdef NC_DOUBLE 448 status = nf_get_vara_double(ncidp, varidfts1, start, count, ftsol12) 449 #else 450 status = nf_get_vara_real(ncidp, varidfts1, start, count, ftsol12) 451 #endif 383 452 CALL gr_ecrit_fi(1, kon, nbp_lon, nbp_lat, ftsol12, ftsol1) 384 453 385 454 ! ftsol2 386 455 PRINT *, 'LECTURE de ftsol2 a irec =', irec 387 status = nf90_get_var(ncidp, varidfts2, ftsol22, start, count) 456 #ifdef NC_DOUBLE 457 status = nf_get_vara_double(ncidp, varidfts2, start, count, ftsol22) 458 #else 459 status = nf_get_vara_real(ncidp, varidfts2, start, count, ftsol22) 460 #endif 388 461 CALL gr_ecrit_fi(1, kon, nbp_lon, nbp_lat, ftsol22, ftsol2) 389 462 390 463 ! ftsol3 391 464 PRINT *, 'LECTURE de ftsol3 a irec =', irec 392 status = nf90_get_var(ncidp, varidfts3, ftsol32, start, count) 465 #ifdef NC_DOUBLE 466 status = nf_get_vara_double(ncidp, varidfts3, start, count, ftsol32) 467 #else 468 status = nf_get_vara_real(ncidp, varidfts3, start, count, ftsol32) 469 #endif 393 470 CALL gr_ecrit_fi(1, kon, nbp_lon, nbp_lat, ftsol32, ftsol3) 394 471 395 472 ! ftsol4 396 status = nf90_get_var(ncidp, varidfts4, ftsol42, start, count) 473 #ifdef NC_DOUBLE 474 status = nf_get_vara_double(ncidp, varidfts4, start, count, ftsol42) 475 #else 476 status = nf_get_vara_real(ncidp, varidfts4, start, count, ftsol42) 477 #endif 397 478 CALL gr_ecrit_fi(1, kon, nbp_lon, nbp_lat, ftsol42, ftsol4) 398 479 399 480 ! **** Nature sol ******************************************** 400 481 ! psrf1 401 status = nf90_get_var(ncidp, varidpsr1, psrf12, start, count) 482 #ifdef NC_DOUBLE 483 status = nf_get_vara_double(ncidp, varidpsr1, start, count, psrf12) 484 #else 485 status = nf_get_vara_real(ncidp, varidpsr1, start, count, psrf12) 486 #endif 402 487 ! call dump2d(iip1-1,jjm+1,psrf12,'PSRF1NC') 403 488 CALL gr_ecrit_fi(1, kon, nbp_lon, nbp_lat, psrf12, psrf1) 404 489 405 490 ! psrf2 406 status = nf90_get_var(ncidp, varidpsr2, psrf22, start, count) 491 #ifdef NC_DOUBLE 492 status = nf_get_vara_double(ncidp, varidpsr2, start, count, psrf22) 493 #else 494 status = nf_get_vara_real(ncidp, varidpsr2, start, count, psrf22) 495 #endif 407 496 ! call dump2d(iip1-1,jjm+1,psrf22,'PSRF2NC') 408 497 CALL gr_ecrit_fi(1, kon, nbp_lon, nbp_lat, psrf22, psrf2) 409 498 410 499 ! psrf3 411 status = nf90_get_var(ncidp, varidpsr3, psrf32, start, count) 500 #ifdef NC_DOUBLE 501 status = nf_get_vara_double(ncidp, varidpsr3, start, count, psrf32) 502 #else 503 status = nf_get_vara_real(ncidp, varidpsr3, start, count, psrf32) 504 #endif 412 505 CALL gr_ecrit_fi(1, kon, nbp_lon, nbp_lat, psrf32, psrf3) 413 506 414 507 ! psrf4 415 status = nf90_get_var(ncidp, varidpsr4, psrf42, start, count) 508 #ifdef NC_DOUBLE 509 status = nf_get_vara_double(ncidp, varidpsr4, start, count, psrf42) 510 #else 511 status = nf_get_vara_real(ncidp, varidpsr4, start, count, psrf42) 512 #endif 416 513 CALL gr_ecrit_fi(1, kon, nbp_lon, nbp_lat, psrf42, psrf4) 417 514 -
LMDZ6/trunk/libf/phylmd/readaerosol_mod.F90
r5075 r5084 2 2 ! 3 3 MODULE readaerosol_mod 4 5 USE lmdz_netcdf, ONLY: nf90_strerror,nf90_noerr,nf90_get_var,nf90_inq_varid,&6 nf90_inquire_dimension,nf90_inq_dimid,nf90_open,nf90_nowrite,nf90_close7 4 8 5 REAL, SAVE :: not_valid=-333. … … 89 86 ! Read data depending on actual year and interpolate if necessary 90 87 !**************************************************************************************** 91 IF (iyr_in <1850) THEN88 IF (iyr_in .LT. 1850) THEN 92 89 cyear='.nat' 93 90 WRITE(lunout,*) 'get_aero 1 iyr_in=', iyr_in,' ',cyear … … 96 93 CALL get_aero_fromfile(name_aero, cyear, filename, klev_src, pt_ap, pt_b, pt_out, psurf, load) 97 94 98 ELSE IF (iyr_in >=2100) THEN95 ELSE IF (iyr_in .GE. 2100) THEN 99 96 cyear='2100' 100 97 WRITE(lunout,*) 'get_aero 2 iyr_in=', iyr_in,' ',cyear … … 106 103 ! Read data from 2 decades and interpolate to actual year 107 104 ! a) from actual 10-yr-period 108 IF (iyr_in <1900) THEN105 IF (iyr_in.LT.1900) THEN 109 106 iyr1 = 1850 110 107 iyr2 = 1900 111 ELSE IF (iyr_in >=1900.AND.iyr_in<1920) THEN108 ELSE IF (iyr_in.GE.1900.AND.iyr_in.LT.1920) THEN 112 109 iyr1 = 1900 113 110 iyr2 = 1920 … … 177 174 178 175 SUBROUTINE init_aero_fromfile(flag_aerosol, aerosol_couple) 176 USE netcdf 179 177 USE mod_phys_lmdz_para 180 178 USE mod_grid_phy_lmdz, ONLY: grid_type, unstructured … … 267 265 !**************************************************************************************** 268 266 267 USE netcdf 269 268 USE dimphy 270 269 USE mod_grid_phy_lmdz, ONLY: nbp_lon_=>nbp_lon, nbp_lat_=>nbp_lat, klon_glo, & … … 508 507 !**************************************************************************************** 509 508 DO imth=1, 12 510 IF (imth ==1) THEN509 IF (imth.EQ.1) THEN 511 510 cvar=TRIM(varname)//'JAN' 512 ELSE IF (imth ==2) THEN511 ELSE IF (imth.EQ.2) THEN 513 512 cvar=TRIM(varname)//'FEB' 514 ELSE IF (imth ==3) THEN513 ELSE IF (imth.EQ.3) THEN 515 514 cvar=TRIM(varname)//'MAR' 516 ELSE IF (imth ==4) THEN515 ELSE IF (imth.EQ.4) THEN 517 516 cvar=TRIM(varname)//'APR' 518 ELSE IF (imth ==5) THEN517 ELSE IF (imth.EQ.5) THEN 519 518 cvar=TRIM(varname)//'MAY' 520 ELSE IF (imth ==6) THEN519 ELSE IF (imth.EQ.6) THEN 521 520 cvar=TRIM(varname)//'JUN' 522 ELSE IF (imth ==7) THEN521 ELSE IF (imth.EQ.7) THEN 523 522 cvar=TRIM(varname)//'JUL' 524 ELSE IF (imth ==8) THEN523 ELSE IF (imth.EQ.8) THEN 525 524 cvar=TRIM(varname)//'AUG' 526 ELSE IF (imth ==9) THEN525 ELSE IF (imth.EQ.9) THEN 527 526 cvar=TRIM(varname)//'SEP' 528 ELSE IF (imth ==10) THEN527 ELSE IF (imth.EQ.10) THEN 529 528 cvar=TRIM(varname)//'OCT' 530 ELSE IF (imth ==11) THEN529 ELSE IF (imth.EQ.11) THEN 531 530 cvar=TRIM(varname)//'NOV' 532 ELSE IF (imth ==12) THEN531 ELSE IF (imth.EQ.12) THEN 533 532 cvar=TRIM(varname)//'DEC' 534 533 END IF … … 717 716 718 717 SUBROUTINE check_err(status,text) 718 USE netcdf 719 719 USE print_control_mod, ONLY: lunout 720 720 IMPLICIT NONE -
LMDZ6/trunk/libf/phylmd/readaerosolstrato.F90
r5075 r5084 3 3 use netcdf95, only: nf95_close, nf95_gw_var, nf95_inq_dimid, & 4 4 nf95_inq_varid, nf95_open 5 use lmdz_netcdf, only: nf90_get_var, nf90_noerr, nf90_nowrite5 use netcdf, only: nf90_get_var, nf90_noerr, nf90_nowrite 6 6 7 7 USE phys_cal_mod, ONLY : mth_cur … … 68 68 69 69 !--only read file if beginning of run or start of new month 70 IF (debut.OR.mth_cur /=mth_pre) THEN70 IF (debut.OR.mth_cur.NE.mth_pre) THEN 71 71 72 72 !--only root reads 73 73 IF (is_mpi_root.AND.is_omp_root) THEN 74 74 75 IF (nbands /=2) THEN75 IF (nbands.NE.2) THEN 76 76 abort_message='nbands doit etre egal a 2 dans readaerosolstrat' 77 77 CALL abort_physic(modname,abort_message,1) … … 83 83 CALL nf95_gw_var(ncid_in, varid, lev) 84 84 n_lev = size(lev) 85 IF (n_lev /=klev) THEN85 IF (n_lev.NE.klev) THEN 86 86 abort_message='Le nombre de niveaux n est pas egal a klev' 87 87 CALL abort_physic(modname,abort_message,1) … … 93 93 WRITE(lunout,*) 'LAT aerosol strato=', n_lat, latitude 94 94 IF (grid_type/=unstructured) THEN 95 IF (n_lat /=nbp_lat) THEN95 IF (n_lat.NE.nbp_lat) THEN 96 96 abort_message='Le nombre de lat n est pas egal a nbp_lat' 97 97 CALL abort_physic(modname,abort_message,1) … … 104 104 IF (grid_type/=unstructured) THEN 105 105 WRITE(lunout,*) 'LON aerosol strato=', n_lon, longitude 106 IF (n_lon /=nbp_lon) THEN106 IF (n_lon.NE.nbp_lon) THEN 107 107 abort_message='Le nombre de lon n est pas egal a nbp_lon' 108 108 CALL abort_physic(modname,abort_message,1) … … 114 114 n_month = size(time) 115 115 WRITE(lunout,*) 'TIME aerosol strato=', n_month, time 116 IF (n_month /=12) THEN116 IF (n_month.NE.12) THEN 117 117 abort_message='Le nombre de month n est pas egal a 12' 118 118 CALL abort_physic(modname,abort_message,1) … … 131 131 132 132 !---select the correct month 133 IF (mth_cur <1.OR.mth_cur>12) THEN133 IF (mth_cur.LT.1.OR.mth_cur.GT.12) THEN 134 134 WRITE(lunout,*) 'probleme avec le mois dans readaerosolstrat =', mth_cur 135 135 ENDIF -
LMDZ6/trunk/libf/phylmd/readaerosolstrato_m.F90
r5075 r5084 24 24 25 25 SUBROUTINE init_readaerosolstrato1 26 USE lmdz_netcdf, ONLY: nf90_nowrite27 USE netcdf95, ONLY: nf95_close, nf95_gw_var, nf95_inq_dimid, & 26 USE netcdf 27 USE netcdf95, ONLY: nf95_close, nf95_gw_var, nf95_inq_dimid, & 28 28 nf95_inq_varid, nf95_open 29 29 USE mod_phys_lmdz_para … … 67 67 68 68 SUBROUTINE init_readaerosolstrato2 69 USE lmdz_netcdf, ONLY: nf90_nowrite70 USE netcdf95, ONLY: nf95_close, nf95_gw_var, nf95_inq_dimid, & 69 USE netcdf 70 USE netcdf95, ONLY: nf95_close, nf95_gw_var, nf95_inq_dimid, & 71 71 nf95_inq_varid, nf95_open 72 72 USE mod_phys_lmdz_para -
LMDZ6/trunk/libf/phylmd/readchlorophyll.F90
r5075 r5084 8 8 9 9 USE netcdf95, ONLY: nf95_close, nf95_gw_var, nf95_inq_dimid, nf95_inq_varid, nf95_open 10 USE lmdz_netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite10 USE netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite 11 11 USE phys_cal_mod, ONLY: mth_cur 12 12 USE mod_grid_phy_lmdz, ONLY: nbp_lon, nbp_lat, klon_glo, grid2dto1d_glo … … 50 50 51 51 !--only read file if beginning of run or start of new month 52 IF (debut.OR.mth_cur /=mth_pre) THEN52 IF (debut.OR.mth_cur.NE.mth_pre) THEN 53 53 54 54 IF (is_mpi_root.AND.is_omp_root) THEN … … 59 59 CALL nf95_gw_var(ncid_in, varid, longitude) 60 60 n_lon = size(longitude) 61 IF (n_lon /=nbp_lon) THEN61 IF (n_lon.NE.nbp_lon) THEN 62 62 abort_message='Le nombre de lon n est pas egal a nbp_lon' 63 63 CALL abort_physic(modname,abort_message,1) … … 67 67 CALL nf95_gw_var(ncid_in, varid, latitude) 68 68 n_lat = size(latitude) 69 IF (n_lat /=nbp_lat) THEN69 IF (n_lat.NE.nbp_lat) THEN 70 70 abort_message='Le nombre de lat n est pas egal a jnbp_lat' 71 71 CALL abort_physic(modname,abort_message,1) … … 75 75 CALL nf95_gw_var(ncid_in, varid, time) 76 76 n_month = size(time) 77 IF (n_month /=12) THEN77 IF (n_month.NE.12) THEN 78 78 abort_message='Le nombre de month n est pas egal a 12' 79 79 CALL abort_physic(modname,abort_message,1) … … 92 92 93 93 !---select the correct month 94 IF (mth_cur <1.OR.mth_cur>12) THEN94 IF (mth_cur.LT.1.OR.mth_cur.GT.12) THEN 95 95 WRITE(lunout,*)'probleme avec le mois dans readchlorophyll =', mth_cur 96 96 ENDIF … … 104 104 ! if(isnan(chlorocon_mois_glo(i)))then ! isnan() is not in the Fortran standard... 105 105 ! Another way to check for NaN: 106 IF (chlorocon_mois_glo(i) /=chlorocon_mois_glo(i)) chlorocon_mois_glo(i)=0.106 IF (chlorocon_mois_glo(i).NE.chlorocon_mois_glo(i)) chlorocon_mois_glo(i)=0. 107 107 ENDDO 108 108 -
LMDZ6/trunk/libf/phylmd/regr_horiz_time_climoz_m.F90
r5075 r5084 4 4 USE mod_grid_phy_lmdz, ONLY: nbp_lon, nbp_lat, grid_type, unstructured 5 5 USE nrtype, ONLY: pi 6 USE lmdz_netcdf, ONLY: NF90_CLOBBER, NF90_FLOAT, NF90_OPEN, &6 USE netcdf, ONLY: NF90_CLOBBER, NF90_FLOAT, NF90_OPEN, & 7 7 NF90_NOWRITE, NF90_NOERR, NF90_GET_ATT, NF90_GLOBAL 8 8 USE netcdf95, ONLY: NF95_DEF_DIM, NF95_INQ_DIMID, NF95_INQUIRE_DIMENSION, & … … 702 702 ! 703 703 !------------------------------------------------------------------------------- 704 USE lmdz_netcdf, ONLY: NF90_NOERR, NF90_strerror704 USE netcdf, ONLY: NF90_NOERR, NF90_strerror 705 705 !------------------------------------------------------------------------------- 706 706 ! Arguments: -
LMDZ6/trunk/libf/phylmd/regr_lat_time_coefoz_m.F90
r5075 r5084 45 45 use netcdf95, only: nf95_open, nf95_close, nf95_inq_varid, nf95_get_var, & 46 46 nf95_put_var, nf95_gw_var 47 use lmdz_netcdf, only: nf90_nowrite47 use netcdf, only: nf90_nowrite 48 48 use nrtype, only: pi 49 49 use regular_lonlat_mod, only: boundslat_reg, south … … 245 245 use netcdf95, only: nf95_create, nf95_def_dim, nf95_def_var, & 246 246 nf95_put_att, nf95_enddef, nf95_copy_att, nf95_put_var 247 use lmdz_netcdf, only: nf90_clobber, nf90_float, nf90_copy_att, nf90_global247 use netcdf, only: nf90_clobber, nf90_float, nf90_copy_att, nf90_global 248 248 use nrtype, only: pi 249 249 use regular_lonlat_mod, only : lat_reg … … 328 328 subroutine handle_err_copy_att(att_name) 329 329 330 use lmdz_netcdf, only: nf90_noerr, nf90_strerror330 use netcdf, only: nf90_noerr, nf90_strerror 331 331 332 332 character(len=*), intent(in):: att_name -
LMDZ6/trunk/libf/phylmd/regr_pr_comb_coefoz_m.F90
r5075 r5084 72 72 73 73 use netcdf95, only: nf95_open, nf95_close 74 use lmdz_netcdf, only: nf90_nowrite74 use netcdf, only: nf90_nowrite 75 75 use assert_m, only: assert 76 76 use dimphy, only: klon -
LMDZ6/trunk/libf/phylmd/regr_pr_o3_m.F90
r5075 r5084 26 26 27 27 use netcdf95, only: nf95_open, nf95_close, nf95_inq_varid, nf95_get_var 28 use lmdz_netcdf, only: nf90_nowrite28 use netcdf, only: nf90_nowrite 29 29 use assert_m, only: assert 30 30 use regr_conserv_m, only: regr_conserv -
LMDZ6/trunk/libf/phylmd/regr_pr_time_av_m.F90
r5075 r5084 115 115 USE netcdf95, ONLY: NF95_INQ_VARID, NF95_INQUIRE_VARIABLE, & 116 116 NF95_INQ_DIMID, NF95_INQUIRE_DIMENSION, nf95_get_var 117 USE lmdz_netcdf, ONLY: NF90_INQ_VARID, NF90_NOERR117 USE netcdf, ONLY: NF90_INQ_VARID, NF90_NOERR 118 118 USE assert_m, ONLY: assert 119 119 USE assert_eq_m, ONLY: assert_eq -
LMDZ6/trunk/libf/phylmd/rrtm/read_rsun_rrtm.F90
r5075 r5084 8 8 9 9 USE netcdf95, ONLY: nf95_close, nf95_inq_varid, nf95_open, nf95_gw_var 10 USE lmdz_netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite10 USE netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite 11 11 12 12 USE phys_cal_mod, ONLY : days_elapsed, year_len -
LMDZ6/trunk/libf/phylmd/rrtm/readaerosolstrato1_rrtm.F90
r5075 r5084 7 7 USE netcdf95, ONLY: nf95_close, nf95_gw_var, nf95_inq_dimid, & 8 8 nf95_inq_varid, nf95_open 9 USE lmdz_netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite9 USE netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite 10 10 11 11 USE phys_cal_mod, ONLY : mth_cur -
LMDZ6/trunk/libf/phylmd/rrtm/readaerosolstrato2_rrtm.F90
r5075 r5084 6 6 USE netcdf95, ONLY: nf95_close, nf95_gw_var, nf95_inq_dimid, & 7 7 nf95_inq_varid, nf95_open 8 USE lmdz_netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite8 USE netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite 9 9 10 10 USE phys_cal_mod, ONLY : mth_cur -
LMDZ6/trunk/libf/phylmd/tracco2i_mod.F90
r5075 r5084 104 104 105 105 ! Initialization of tr_seri(id_CO2) If it is not initialized 106 IF (MAXVAL(tr_seri(:,:,id_CO2)) <1.e-15) THEN106 IF (MAXVAL(tr_seri(:,:,id_CO2)).LT.1.e-15) THEN 107 107 tr_seri(:,:,id_CO2)=co2_ppm0*1.e-6/RMD*RMCO2 !--initialised from co2_ppm0 in rdem 108 108 ENDIF … … 299 299 !--for every timestep comment out the IF ENDIF statements 300 300 !--otherwise this is updated every day 301 IF (debutphy.OR.day_cur /=day_pre) THEN301 IF (debutphy.OR.day_cur.NE.day_pre) THEN 302 302 303 303 CALL gather(tr_seri(:,:,id_CO2),co2_glo) … … 351 351 352 352 USE netcdf95, ONLY: nf95_close, nf95_gw_var, nf95_inq_varid, nf95_open 353 USE lmdz_netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite353 USE netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite 354 354 355 355 USE carbon_cycle_mod, ONLY : fco2_ff, fco2_bb, fco2_land, fco2_ocean … … 401 401 CALL nf95_gw_var(ncid_in, varid, vector) 402 402 n_glo = size(vector) 403 IF (n_glo /=klon_glo) THEN403 IF (n_glo.NE.klon_glo) THEN 404 404 abort_message='sflx_lmdz_co2_ff: le nombre de points n est pas egal a klon_glo' 405 405 CALL abort_physic(modname,abort_message,1) … … 409 409 CALL nf95_gw_var(ncid_in, varid, time) 410 410 n_month = size(time) 411 IF (n_month /=12) THEN411 IF (n_month.NE.12) THEN 412 412 abort_message='sflx_lmdz_co2_ff: le nombre de month n est pas egal a 12' 413 413 CALL abort_physic(modname,abort_message,1) … … 434 434 CALL nf95_gw_var(ncid_in, varid, vector) 435 435 n_glo = size(vector) 436 IF (n_glo /=klon_glo) THEN436 IF (n_glo.NE.klon_glo) THEN 437 437 abort_message='sflx_lmdz_co2_bb: le nombre de points n est pas egal a klon_glo' 438 438 CALL abort_physic(modname,abort_message,1) … … 442 442 CALL nf95_gw_var(ncid_in, varid, time) 443 443 n_month = size(time) 444 IF (n_month /=12) THEN444 IF (n_month.NE.12) THEN 445 445 abort_message='sflx_lmdz_co2_bb: le nombre de month n est pas egal a 12' 446 446 CALL abort_physic(modname,abort_message,1) … … 474 474 475 475 !---select the correct month 476 IF (mth_cur <1.OR.mth_cur>12) THEN476 IF (mth_cur.LT.1.OR.mth_cur.GT.12) THEN 477 477 PRINT *,'probleme avec le mois dans co2_ini =', mth_cur 478 478 ENDIF -
LMDZ6/trunk/libf/phylmd/undefSTD.F90
r5075 r5084 3 3 4 4 SUBROUTINE undefstd(itap, read_climoz) 5 USE lmdz_netcdf, ONLY: nf90_fill_real5 USE netcdf 6 6 USE dimphy 7 7 #ifdef CPP_IOIPSL -
LMDZ6/trunk/libf/phylmdiso/isotopes_routines_mod.F90
r5075 r5084 15871 15871 USE isotopes_verif_mod 15872 15872 #endif 15873 15873 15874 implicit none 15874 15875 15875 15876 ! equivalent de phyetat0 pour les isotopes 15876 15877 15878 #include "netcdf.inc" 15877 15879 #include "dimsoil.h" 15878 15880 #include "clesphys.h" … … 16427 16429 IMPLICIT NONE 16428 16430 16431 #include "netcdf.inc" 16429 16432 #include "dimsoil.h" 16430 16433 #include "clesphys.h" -
LMDZ6/trunk/libf/phylmdiso/limit_read_mod.F90
r5076 r5084 274 274 USE mod_phys_lmdz_para 275 275 USE surface_data, ONLY : type_ocean, ok_veget 276 USE lmdz_netcdf, ONLY:nf90_noerr,nf90_close,nf90_get_var,nf90_inq_varid,nf90_nowrite,& 277 nf90_inq_dimid,nf90_inquire_dimension,nf90_open,nf90_get_att,nf90_inquire 276 USE netcdf 278 277 USE indice_sol_mod 279 278 #ifdef ISO -
LMDZ6/trunk/libf/phylmdiso/phyaqua_mod.F90
r5076 r5084 147 147 !END IF 148 148 149 if (year_len /=360) then149 if (year_len.ne.360) then 150 150 write (*,*) year_len 151 151 write (*,*) 'iniaqua: 360 day calendar is required !' … … 539 539 IMPLICIT NONE 540 540 541 include "netcdf.inc" 542 541 543 INTEGER, INTENT (IN) :: klon 542 544 REAL, INTENT (IN) :: phy_nat(klon, 360) … … 591 593 USE mod_phys_lmdz_transfert_para, ONLY: gather 592 594 USE phys_cal_mod, ONLY: year_len 593 USE lmdz_netcdf, ONLY:nf_clobber,nf_close,nf_noerr,nf_strerror,nf_put_att_text,nf_def_var,&594 nf_def_dim,nf_create,nf90_put_var,nf_unlimited,nf_global,nf_64bit_offset,nf90_format,&595 nf_enddef596 595 IMPLICIT NONE 596 include "netcdf.inc" 597 597 598 598 INTEGER, INTENT (IN) :: klon … … 636 636 dims(2) = ntim 637 637 638 ierr = nf_def_var(nid, 'TEMPS', NF90_FORMAT, 1, ntim, id_tim) 638 #ifdef NC_DOUBLE 639 ierr = nf_def_var(nid, 'TEMPS', nf_double, 1, ntim, id_tim) 640 #else 641 ierr = nf_def_var(nid, 'TEMPS', nf_float, 1, ntim, id_tim) 642 #endif 639 643 ierr = nf_put_att_text(nid, id_tim, 'title', 17, 'Jour dans l annee') 640 644 641 ierr = nf_def_var(nid, 'NAT', NF90_FORMAT, 2, dims, id_nat) 645 #ifdef NC_DOUBLE 646 ierr = nf_def_var(nid, 'NAT', nf_double, 2, dims, id_nat) 647 #else 648 ierr = nf_def_var(nid, 'NAT', nf_float, 2, dims, id_nat) 649 #endif 642 650 ierr = nf_put_att_text(nid, id_nat, 'title', 23, & 643 651 'Nature du sol (0,1,2,3)') 644 652 645 ierr = nf_def_var(nid, 'SST', NF90_FORMAT, 2, dims, id_sst) 653 #ifdef NC_DOUBLE 654 ierr = nf_def_var(nid, 'SST', nf_double, 2, dims, id_sst) 655 #else 656 ierr = nf_def_var(nid, 'SST', nf_float, 2, dims, id_sst) 657 #endif 646 658 ierr = nf_put_att_text(nid, id_sst, 'title', 35, & 647 659 'Temperature superficielle de la mer') 648 660 649 ierr = nf_def_var(nid, 'BILS', NF90_FORMAT, 2, dims, id_bils) 661 #ifdef NC_DOUBLE 662 ierr = nf_def_var(nid, 'BILS', nf_double, 2, dims, id_bils) 663 #else 664 ierr = nf_def_var(nid, 'BILS', nf_float, 2, dims, id_bils) 665 #endif 650 666 ierr = nf_put_att_text(nid, id_bils, 'title', 32, & 651 667 'Reference flux de chaleur au sol') 652 668 653 ierr = nf_def_var(nid, 'ALB', NF90_FORMAT, 2, dims, id_alb) 669 #ifdef NC_DOUBLE 670 ierr = nf_def_var(nid, 'ALB', nf_double, 2, dims, id_alb) 671 #else 672 ierr = nf_def_var(nid, 'ALB', nf_float, 2, dims, id_alb) 673 #endif 654 674 ierr = nf_put_att_text(nid, id_alb, 'title', 19, 'Albedo a la surface') 655 675 656 ierr = nf_def_var(nid, 'RUG', NF90_FORMAT, 2, dims, id_rug) 676 #ifdef NC_DOUBLE 677 ierr = nf_def_var(nid, 'RUG', nf_double, 2, dims, id_rug) 678 #else 679 ierr = nf_def_var(nid, 'RUG', nf_float, 2, dims, id_rug) 680 #endif 657 681 ierr = nf_put_att_text(nid, id_rug, 'title', 8, 'Rugosite') 658 682 659 ierr = nf_def_var(nid, 'FTER', NF90_FORMAT, 2, dims, id_fter) 683 #ifdef NC_DOUBLE 684 ierr = nf_def_var(nid, 'FTER', nf_double, 2, dims, id_fter) 685 #else 686 ierr = nf_def_var(nid, 'FTER', nf_float, 2, dims, id_fter) 687 #endif 660 688 ierr = nf_put_att_text(nid, id_fter, 'title',10,'Frac. Land') 661 ierr = nf_def_var(nid, 'FOCE', NF90_FORMAT, 2, dims, id_foce) 689 #ifdef NC_DOUBLE 690 ierr = nf_def_var(nid, 'FOCE', nf_double, 2, dims, id_foce) 691 #else 692 ierr = nf_def_var(nid, 'FOCE', nf_float, 2, dims, id_foce) 693 #endif 662 694 ierr = nf_put_att_text(nid, id_foce, 'title',11,'Frac. Ocean') 663 ierr = nf_def_var(nid, 'FSIC', NF90_FORMAT, 2, dims, id_fsic) 695 #ifdef NC_DOUBLE 696 ierr = nf_def_var(nid, 'FSIC', nf_double, 2, dims, id_fsic) 697 #else 698 ierr = nf_def_var(nid, 'FSIC', nf_float, 2, dims, id_fsic) 699 #endif 664 700 ierr = nf_put_att_text(nid, id_fsic, 'title',13,'Frac. Sea Ice') 665 ierr = nf_def_var(nid, 'FLIC', NF90_FORMAT, 2, dims, id_flic) 701 #ifdef NC_DOUBLE 702 ierr = nf_def_var(nid, 'FLIC', nf_double, 2, dims, id_flic) 703 #else 704 ierr = nf_def_var(nid, 'FLIC', nf_float, 2, dims, id_flic) 705 #endif 666 706 ierr = nf_put_att_text(nid, id_flic, 'title',14,'Frac. Land Ice') 667 707 … … 675 715 ! write the 'times' 676 716 DO k = 1, year_len 677 ierr = nf90_put_var(nid, id_tim, k, [k]) 717 #ifdef NC_DOUBLE 718 ierr = nf_put_var1_double(nid, id_tim, k, dble(k)) 719 #else 720 ierr = nf_put_var1_real(nid, id_tim, k, float(k)) 721 #endif 678 722 IF (ierr/=nf_noerr) THEN 679 723 WRITE (*, *) 'writelim error with temps(k),k=', k … … 688 732 CALL gather(phy_nat, phy_glo) 689 733 IF (is_master) THEN 690 ierr = nf90_put_var(nid, id_nat, phy_glo) 734 #ifdef NC_DOUBLE 735 ierr = nf_put_var_double(nid, id_nat, phy_glo) 736 #else 737 ierr = nf_put_var_real(nid, id_nat, phy_glo) 738 #endif 691 739 IF (ierr/=nf_noerr) THEN 692 740 WRITE (*, *) 'writelim error with phy_nat' … … 697 745 CALL gather(phy_sst, phy_glo) 698 746 IF (is_master) THEN 699 ierr = nf90_put_var(nid, id_sst, phy_glo) 747 #ifdef NC_DOUBLE 748 ierr = nf_put_var_double(nid, id_sst, phy_glo) 749 #else 750 ierr = nf_put_var_real(nid, id_sst, phy_glo) 751 #endif 700 752 IF (ierr/=nf_noerr) THEN 701 753 WRITE (*, *) 'writelim error with phy_sst' … … 706 758 CALL gather(phy_bil, phy_glo) 707 759 IF (is_master) THEN 708 ierr = nf90_put_var(nid, id_bils, phy_glo) 760 #ifdef NC_DOUBLE 761 ierr = nf_put_var_double(nid, id_bils, phy_glo) 762 #else 763 ierr = nf_put_var_real(nid, id_bils, phy_glo) 764 #endif 709 765 IF (ierr/=nf_noerr) THEN 710 766 WRITE (*, *) 'writelim error with phy_bil' … … 715 771 CALL gather(phy_alb, phy_glo) 716 772 IF (is_master) THEN 717 ierr = nf90_put_var(nid, id_alb, phy_glo) 773 #ifdef NC_DOUBLE 774 ierr = nf_put_var_double(nid, id_alb, phy_glo) 775 #else 776 ierr = nf_put_var_real(nid, id_alb, phy_glo) 777 #endif 718 778 IF (ierr/=nf_noerr) THEN 719 779 WRITE (*, *) 'writelim error with phy_alb' … … 724 784 CALL gather(phy_rug, phy_glo) 725 785 IF (is_master) THEN 726 ierr = nf90_put_var(nid, id_rug, phy_glo) 786 #ifdef NC_DOUBLE 787 ierr = nf_put_var_double(nid, id_rug, phy_glo) 788 #else 789 ierr = nf_put_var_real(nid, id_rug, phy_glo) 790 #endif 727 791 IF (ierr/=nf_noerr) THEN 728 792 WRITE (*, *) 'writelim error with phy_rug' … … 733 797 CALL gather(phy_fter, phy_glo) 734 798 IF (is_master) THEN 735 ierr = nf90_put_var(nid, id_fter, phy_glo) 799 #ifdef NC_DOUBLE 800 ierr = nf_put_var_double(nid, id_fter, phy_glo) 801 #else 802 ierr = nf_put_var_real(nid, id_fter, phy_glo) 803 #endif 736 804 IF (ierr/=nf_noerr) THEN 737 805 WRITE (*, *) 'writelim error with phy_fter' … … 742 810 CALL gather(phy_foce, phy_glo) 743 811 IF (is_master) THEN 744 ierr = nf90_put_var(nid, id_foce, phy_glo) 812 #ifdef NC_DOUBLE 813 ierr = nf_put_var_double(nid, id_foce, phy_glo) 814 #else 815 ierr = nf_put_var_real(nid, id_foce, phy_glo) 816 #endif 745 817 IF (ierr/=nf_noerr) THEN 746 818 WRITE (*, *) 'writelim error with phy_foce' … … 751 823 CALL gather(phy_fsic, phy_glo) 752 824 IF (is_master) THEN 753 ierr = nf90_put_var(nid, id_fsic, phy_glo) 825 #ifdef NC_DOUBLE 826 ierr = nf_put_var_double(nid, id_fsic, phy_glo) 827 #else 828 ierr = nf_put_var_real(nid, id_fsic, phy_glo) 829 #endif 754 830 IF (ierr/=nf_noerr) THEN 755 831 WRITE (*, *) 'writelim error with phy_fsic' … … 760 836 CALL gather(phy_flic, phy_glo) 761 837 IF (is_master) THEN 762 ierr = nf90_put_var(nid, id_flic, phy_glo) 838 #ifdef NC_DOUBLE 839 ierr = nf_put_var_double(nid, id_flic, phy_glo) 840 #else 841 ierr = nf_put_var_real(nid, id_flic, phy_glo) 842 #endif 763 843 IF (ierr/=nf_noerr) THEN 764 844 WRITE (*, *) 'writelim error with phy_flic' … … 960 1040 END IF 961 1041 962 if (type_profil ==20) then1042 if (type_profil.EQ.20) then 963 1043 print*,'Profile SST 20' 964 1044 ! Méthode 13 "Qmax2K" plateau réel �| l'Equateur augmenté +2K … … 969 1049 endif 970 1050 971 if (type_profil ==21) then1051 if (type_profil.EQ.21) then 972 1052 print*,'Profile SST 21' 973 1053 ! Méthode 13 "Qmax2K" plateau réel �| l'Equateur augmenté +2K -
LMDZ6/trunk/libf/phylmdiso/phyetat0_mod.F90
r5075 r5084 48 48 USE time_phylmdz_mod, ONLY: init_iteration, pdtphys, itau_phy 49 49 USE wxios, ONLY: missing_val_xios => missing_val, using_xios 50 use lmdz_netcdf, only: missing_val_netcdf => nf90_fill_real50 use netcdf, only: missing_val_netcdf => nf90_fill_real 51 51 use config_ocean_skin_m, only: activate_ocean_skin 52 52 #ifdef ISO -
LMDZ6/trunk/libf/phylmdiso/phys_local_var_mod.F90
r5066 r5084 351 351 !$OMP THREADPRIVATE(d_deltat_vdf, d_deltaq_vdf) 352 352 !!! REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: d_s_vdf, d_dens_vdf 353 !!! $OMP THREADPRIVATE(d_s_vdf, d_dens_vdf)353 !!!OMP THREADPRIVATE(d_s_vdf, d_dens_vdf) 354 354 REAL, SAVE, ALLOCATABLE,DIMENSION(:,:) :: d_deltat_the, d_deltaq_the 355 355 !$OMP THREADPRIVATE(d_deltat_the, d_deltaq_the) 356 356 !!! REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: d_s_the, d_dens_the 357 !!! $OMP THREADPRIVATE(d_s_the, d_dens_the)357 !!!OMP THREADPRIVATE(d_s_the, d_dens_the) 358 358 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: d_deltat_ajs_cv, d_deltaq_ajs_cv 359 359 !$OMP THREADPRIVATE(d_deltat_ajs_cv, d_deltaq_ajs_cv) -
LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90
r5075 r5084 48 48 USE mod_phys_lmdz_para 49 49 USE netcdf95, only: nf95_close 50 USE lmdz_netcdf, only: nf90_fill_real ! IM for NMC files50 USE netcdf, only: nf90_fill_real ! IM for NMC files 51 51 USE open_climoz_m, only: open_climoz ! ozone climatology from a file 52 52 USE ozonecm_m, only: ozonecm ! ozone of J.-F. Royer … … 1355 1355 !lwoff=y : offset LW CRE for radiation code and other schemes 1356 1356 REAL, SAVE :: betalwoff 1357 ! $OMP THREADPRIVATE(betalwoff)1357 !OMP THREADPRIVATE(betalwoff) 1358 1358 ! 1359 1359 INTEGER :: nbtr_tmp ! Number of tracer inside concvl -
LMDZ6/trunk/tools/make_sso/make_sso_SpherePack.f90
r5075 r5084 6 6 ! Purpose: Project ETOPO file (GMT4 axes conventions) on spherical harmonics. 7 7 !------------------------------------------------------------------------------- 8 USE lmdz_netcdf, ONLY: nf90_noerr,nf90_strerror,nf90_close,nf90_put_var,nf90_enddef,& 9 nf90_put_att,nf90_global,nf90_real,nf90_def_var,nf90_def_dim,nf90_inq_varid,& 10 nf90_nowrite,nf90_inquire_dimension,nf90_inquire_variable,nf90_open 8 USE netcdf 11 9 ! USE sphpack 12 10 IMPLICIT NONE -
LMDZ6/trunk/tools/netcdf95/Attributes/nf95_copy_att.f90
r5075 r5084 8 8 subroutine nf95_copy_att(ncid_in, varid_in, name, ncid_out, varid_out, ncerr) 9 9 10 use lmdz_netcdf, only: nf90_copy_att10 use netcdf, only: nf90_copy_att 11 11 12 12 use nf95_abort_m, only: nf95_abort -
LMDZ6/trunk/tools/netcdf95/Attributes/nf95_get_att.f90
r5075 r5084 2 2 3 3 use nf95_abort_m, only: nf95_abort 4 use lmdz_netcdf, only: nf90_get_att, nf90_noerr4 use netcdf, only: nf90_get_att, nf90_noerr 5 5 use nf95_inquire_attribute_m, only: nf95_inquire_attribute 6 6 use nf95_constants, only: nf95_noerr -
LMDZ6/trunk/tools/netcdf95/Attributes/nf95_get_missing.F90
r5075 r5084 1 1 module nf95_get_missing_m 2 2 3 use lmdz_netcdf, only: nf90_noerr3 use netcdf, only: nf90_noerr 4 4 use nf95_get_att_m, only: nf95_get_att 5 5 … … 18 18 subroutine nf95_get_missing_real(ncid, varid, missing) 19 19 20 use lmdz_netcdf, only: NF90_FILL_REAL20 use netcdf, only: NF90_FILL_REAL 21 21 use typesizes, only: FourByteReal 22 22 … … 44 44 subroutine nf95_get_missing_dble(ncid, varid, missing) 45 45 46 use lmdz_netcdf, only: NF90_FILL_double46 use netcdf, only: NF90_FILL_double 47 47 use typesizes, only: EightByteReal 48 48 … … 70 70 subroutine nf95_get_missing_short_int(ncid, varid, missing) 71 71 72 use lmdz_netcdf, only: NF90_FILL_short72 use netcdf, only: NF90_FILL_short 73 73 use typesizes, only: TwoByteInt 74 74 … … 96 96 subroutine nf95_get_missing_int(ncid, varid, missing) 97 97 98 use lmdz_netcdf, only: NF90_FILL_INT98 use netcdf, only: NF90_FILL_INT 99 99 100 100 integer, intent(in):: ncid, varid … … 121 121 subroutine nf95_get_missing_char(ncid, varid, missing) 122 122 123 use lmdz_netcdf, only: NF90_FILL_char123 use netcdf, only: NF90_FILL_char 124 124 125 125 integer, intent(in):: ncid, varid -
LMDZ6/trunk/tools/netcdf95/Attributes/nf95_inquire_attribute.f90
r5075 r5084 10 10 11 11 use nf95_abort_m, only: nf95_abort 12 use lmdz_netcdf, only: nf90_inquire_attribute12 use netcdf, only: nf90_inquire_attribute 13 13 use nf95_constants, only: nf95_noerr 14 14 -
LMDZ6/trunk/tools/netcdf95/Attributes/nf95_put_att.f90
r5075 r5084 1 1 module nf95_put_att_m 2 2 3 use lmdz_netcdf, only: nf90_put_att3 use netcdf, only: nf90_put_att 4 4 use nf95_abort_m, only: nf95_abort 5 5 use nf95_constants, only: nf95_noerr -
LMDZ6/trunk/tools/netcdf95/Datasets/nf95_close.f90
r5075 r5084 10 10 ! call it. 11 11 12 use lmdz_netcdf, only: nf90_close, nf90_strerror12 use netcdf, only: nf90_close, nf90_strerror 13 13 14 14 use nf95_constants, only: nf95_noerr -
LMDZ6/trunk/tools/netcdf95/Datasets/nf95_create.f90
r5075 r5084 8 8 9 9 use nf95_abort_m, only: nf95_abort 10 use lmdz_netcdf, only: nf90_create10 use netcdf, only: nf90_create 11 11 use nf95_constants, only: nf95_noerr 12 12 -
LMDZ6/trunk/tools/netcdf95/Datasets/nf95_create_single.f90
r5075 r5084 1 1 module nf95_create_single_m 2 2 3 use lmdz_netcdf, only: NF90_MAX_NAME3 use netcdf, only: NF90_MAX_NAME 4 4 5 5 implicit none … … 19 19 ! Shortcut to create a file containing a single primary variable. 20 20 21 use lmdz_netcdf, only: NF90_CLOBBER, NF90_FLOAT21 use netcdf, only: NF90_CLOBBER, NF90_FLOAT 22 22 23 23 use nf95_create_m, only: nf95_create -
LMDZ6/trunk/tools/netcdf95/Datasets/nf95_enddef.f90
r5075 r5084 8 8 9 9 use nf95_abort_m, only: nf95_abort 10 use lmdz_netcdf, only: nf90_enddef10 use netcdf, only: nf90_enddef 11 11 use nf95_constants, only: nf95_noerr 12 12 -
LMDZ6/trunk/tools/netcdf95/Datasets/nf95_find_coord.f90
r5075 r5084 15 15 ! attribute "std_name". 16 16 17 use lmdz_netcdf, only: NF90_MAX_NAME, NF90_NOERR17 use netcdf, only: NF90_MAX_NAME, NF90_NOERR 18 18 use nf95_get_att_m, only: nf95_get_att 19 19 use nf95_inq_varid_m, only: nf95_inq_varid -
LMDZ6/trunk/tools/netcdf95/Datasets/nf95_inquire.f90
r5075 r5084 10 10 11 11 use nf95_abort_m, only: nf95_abort 12 use lmdz_netcdf, only: nf90_inquire12 use netcdf, only: nf90_inquire 13 13 use nf95_constants, only: nf95_noerr 14 14 -
LMDZ6/trunk/tools/netcdf95/Datasets/nf95_open.f90
r5075 r5084 8 8 9 9 use nf95_abort_m, only: nf95_abort 10 use lmdz_netcdf, only: nf90_open10 use netcdf, only: nf90_open 11 11 use nf95_constants, only: nf95_noerr 12 12 -
LMDZ6/trunk/tools/netcdf95/Datasets/nf95_redef.f90
r5075 r5084 8 8 9 9 use nf95_abort_m, only: nf95_abort 10 use lmdz_netcdf, only: nf90_redef10 use netcdf, only: nf90_redef 11 11 use nf95_constants, only: nf95_noerr 12 12 -
LMDZ6/trunk/tools/netcdf95/Datasets/nf95_sync.f90
r5075 r5084 8 8 9 9 use nf95_abort_m, only: nf95_abort 10 use lmdz_netcdf, only: nf90_sync10 use netcdf, only: nf90_sync 11 11 use nf95_constants, only: nf95_noerr 12 12 -
LMDZ6/trunk/tools/netcdf95/Groups/nf95_inq_file_ncid.f90
r5075 r5084 11 11 ! by nf95_abort, so it cannot call it. 12 12 13 use lmdz_netcdf, only: nf90_strerror13 use netcdf, only: nf90_strerror 14 14 15 15 use nf95_constants, only: Nf95_ENOGRP, nf95_noerr -
LMDZ6/trunk/tools/netcdf95/Groups/nf95_inq_grp_parent.f90
r5075 r5084 12 12 use, intrinsic:: ISO_C_BINDING 13 13 14 use lmdz_netcdf, only: nf90_strerror14 use netcdf, only: nf90_strerror 15 15 16 16 use nc_constants, only: NC_NOERR -
LMDZ6/trunk/tools/netcdf95/Groups/nf95_inq_grps.f90
r5075 r5084 26 26 use, intrinsic:: ISO_C_BINDING 27 27 28 use lmdz_netcdf, only: nf90_noerr28 use netcdf, only: nf90_noerr 29 29 30 30 use nc_constants, only: nc_noerr -
LMDZ6/trunk/tools/netcdf95/Variables/check_start_count.f90
r5075 r5084 19 19 use nf95_close_m, only: nf95_close 20 20 use nf95_inquire_variable_m, only: nf95_inquire_variable 21 use lmdz_netcdf, only: nf90_noerr21 use netcdf, only: nf90_noerr 22 22 23 23 character(len=*), intent(in):: name_calling ! name of calling procedure -
LMDZ6/trunk/tools/netcdf95/Variables/nf95_def_var.f90
r5075 r5084 7 7 ! "nf95_def_var_scalar" cannot be distinguished from "nf95_def_var_oneDim". 8 8 9 use lmdz_netcdf, only: nf90_def_var9 use netcdf, only: nf90_def_var 10 10 use nf95_abort_m, only: nf95_abort 11 11 use nf95_constants, only: nf95_noerr -
LMDZ6/trunk/tools/netcdf95/Variables/nf95_get_var.f90
r5075 r5084 1 1 module nf95_get_var_m 2 2 3 use lmdz_netcdf, only: nf90_get_var, NF90_NOERR3 use netcdf, only: nf90_get_var, NF90_NOERR 4 4 5 5 use nf95_abort_m, only: nf95_abort -
LMDZ6/trunk/tools/netcdf95/Variables/nf95_inq_varid.f90
r5075 r5084 8 8 9 9 use nf95_abort_m, only: nf95_abort 10 use lmdz_netcdf, only: nf90_inq_varid10 use netcdf, only: nf90_inq_varid 11 11 use nf95_constants, only: nf95_noerr 12 12 -
LMDZ6/trunk/tools/netcdf95/Variables/nf95_inquire_variable.f90
r5075 r5084 16 16 17 17 use nf95_abort_m, only: nf95_abort 18 use lmdz_netcdf, only: nf90_inquire_variable, nf90_max_var_dims18 use netcdf, only: nf90_inquire_variable, nf90_max_var_dims 19 19 use nf95_constants, only: nf95_noerr 20 20 -
LMDZ6/trunk/tools/netcdf95/Variables/nf95_put_var.f90
r5075 r5084 1 1 module nf95_put_var_m 2 2 3 use lmdz_netcdf, only: nf90_put_var3 use netcdf, only: nf90_put_var 4 4 use nf95_abort_m, only: nf95_abort 5 5 use check_start_count_m, only: check_start_count -
LMDZ6/trunk/tools/netcdf95/nf95_abort.f90
r5075 r5084 10 10 11 11 ! Libraries: 12 use lmdz_netcdf, only: nf90_strerror12 use netcdf, only: nf90_strerror 13 13 14 14 use nf95_close_m, only: nf95_close -
LMDZ6/trunk/tools/netcdf95/nf95_def_dim.f90
r5075 r5084 8 8 9 9 use nf95_abort_m, only: nf95_abort 10 use lmdz_netcdf, only: nf90_def_dim10 use netcdf, only: nf90_def_dim 11 11 use nf95_constants, only: nf95_noerr 12 12 -
LMDZ6/trunk/tools/netcdf95/nf95_inq_dimid.f90
r5075 r5084 8 8 9 9 use nf95_abort_m, only: nf95_abort 10 use lmdz_netcdf, only: nf90_inq_dimid10 use netcdf, only: nf90_inq_dimid 11 11 use nf95_constants, only: nf95_noerr 12 12 -
LMDZ6/trunk/tools/netcdf95/nf95_inquire_dimension.f90
r5075 r5084 8 8 9 9 use nf95_abort_m, only: nf95_abort 10 use lmdz_netcdf, only: nf90_inquire_dimension10 use netcdf, only: nf90_inquire_dimension 11 11 use nf95_constants, only: nf95_noerr 12 12
Note: See TracChangeset
for help on using the changeset viewer.