Changeset 6051 for branches/2015/dev_CMCC_merge_2015
- Timestamp:
- 2015-12-15T10:46:14+01:00 (9 years ago)
- Location:
- branches/2015/dev_CMCC_merge_2015/NEMOGCM
- Files:
-
- 2 added
- 6 deleted
- 80 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_CMCC_merge_2015/NEMOGCM/ARCH/CMCC/arch-ifort_athena.fcm
r5656 r6051 17 17 18 18 19 %NCDF_INC -I$ NETCDF/include20 %NCDF_LIB -L$ NETCDF/lib -lnetcdf -lnetcdff19 %NCDF_INC -I${NETCDF}/include 20 %NCDF_LIB -L${NETCDF}/lib -lnetcdf -lnetcdff 21 21 %CPP cpp 22 22 %FC mpiifort -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/ARCH/CMCC/arch-ifort_athena_xios.fcm
r5656 r6051 34 34 35 35 # required modules 36 # module load INTEL/intel_xe_2013 NETCDF/netcdf-4.3_parallel NETCDF/parallel-netcdf-1.3.1 HDF5/hdf5-1.8.11_parallel36 # module load INTEL/intel_xe_2013 NETCDF/netcdf-4.3_parallel_shared NETCDF/parallel-netcdf-1.3.1 HDF5/hdf5-1.8.11_parallel_shared 37 37 38 38 # Environment variables set by user. Others should automatically define when loading modules. 39 # export XIOS=/users/home/models/nemo/xios 39 #export XIOS=/users/home/models/nemo/xios 40 #export HDF5=/users/home/opt/hdf5/hdf5-1.8.11_parallel_shared 41 #export NETCDF=/users/home/opt/netcdf/netcdf-4.3_parallel_shared 40 42 41 %NCDF_INC -I$ NETCDF/include -I$PNETCDF/include42 %NCDF_LIB -L$ NETCDF/lib -lnetcdff -lnetcdf -L$PNETCDF/lib -lpnetcdf43 %HDF5_INC -I$ PHDF5/include44 %HDF5_LIB -L$ PHDF5/lib -lhdf5_hl -lhdf545 %XIOS_INC -I$ XIOS/inc46 %XIOS_LIB -L$ XIOS/lib -lxios43 %NCDF_INC -I${NETCDF}/include 44 %NCDF_LIB -L${NETCDF}/lib -lnetcdff -lnetcdf 45 %HDF5_INC -I${HDF5}/include 46 %HDF5_LIB -L${HDF5}/lib -lhdf5_hl -lhdf5 47 %XIOS_INC -I${XIOS}/inc 48 %XIOS_LIB -L${XIOS}/lib -lxios 47 49 %CPP cpp 48 50 %FC mpiifort 49 %FCFLAGS -r8 -O3 -xHost -fp-model source -traceback 51 %FCFLAGS -r8 -O3 -xHost -fp-model source -traceback ${CFLAGS} 50 52 %FFLAGS %FCFLAGS 51 53 %LD mpiifort 52 54 %FPPFLAGS -P -C -traditional 53 %LDFLAGS -lstdc++ -lz -lgpfs -lcurl 55 %LDFLAGS -lstdc++ -lz -lgpfs -lcurl ${LDFLAGS} 54 56 %AR ar 55 57 %ARFLAGS -r -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/CONFIG/AMM12/EXP00/namelist_cfg
r5930 r6051 50 50 !----------------------------------------------------------------------- 51 51 rn_rdt = 600. ! time step for the dynamics (and tracer if nn_acc=0) 52 rn_rdtmin = 600. ! minimum time step on tracers (used if nn_acc=1)53 rn_rdtmax = 600. ! maximum time step on tracers (used if nn_acc=1)54 rn_rdth = 600. ! depth variation of tracer time step (used if nn_acc=1)55 52 ppglam0 = 999999.0 ! longitude of first raw and column T-point (jphgr_msh = 1) 56 53 ppgphi0 = 999999.0 ! latitude of first raw and column T-point (jphgr_msh = 1) … … 448 445 !----------------------------------------------------------------------- 449 446 / 450 !-----------------------------------------------------------------------451 &namdyn_nept ! Neptune effect (simplified: lateral and vertical diffusions removed)452 !-----------------------------------------------------------------------453 / -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/CONFIG/C1D_PAPA/EXP00/namelist_cfg
r5930 r6051 41 41 rn_bathy = 4198. ! value of the bathymetry. if (=0) bottom flat at jpkm1 42 42 nn_msh = 0 ! create (=1) a mesh file or not (=0) 43 rn_rdt = 360. ! time step for the dynamics (and tracer if nn_acc=0) 44 rn_rdtmin = 360. ! minimum time step on tracers (used if nn_acc=1) 45 rn_rdtmax = 360. ! maximum time step on tracers (used if nn_acc=1) 43 rn_rdt = 360. ! time step for the dynamics 46 44 jphgr_msh = 1 ! type of horizontal mesh 47 45 ppglam0 = -150.0 ! longitude of first raw and column T-point (jphgr_msh = 1) … … 342 340 !----------------------------------------------------------------------- 343 341 / 344 !-----------------------------------------------------------------------345 &namdyn_nept ! Neptune effect (simplified: lateral and vertical diffusions removed)346 !-----------------------------------------------------------------------347 ln_neptramp = .false. ! ramp down Neptune velocity in shallow water348 / -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/CONFIG/GYRE/EXP00/namelist_cfg
r5930 r6051 43 43 !----------------------------------------------------------------------- 44 44 nn_bathy = 0 ! compute (=0) or read (=1) the bathymetry file 45 rn_rdt = 7200. ! time step for the dynamics (and tracer if nn_acc=0) 46 rn_rdtmin = 7200. ! minimum time step on tracers (used if nn_acc=1) 47 rn_rdtmax = 7200. ! maximum time step on tracers (used if nn_acc=1) 45 rn_rdt = 7200. ! time step for the dynamics 48 46 jphgr_msh = 5 ! type of horizontal mesh 49 47 ppglam0 = 0.0 ! longitude of first raw and column T-point (jphgr_msh = 1) … … 401 399 !----------------------------------------------------------------------- 402 400 / 403 !-----------------------------------------------------------------------404 &namdyn_nept ! Neptune effect (simplified: lateral and vertical diffusions removed)405 !-----------------------------------------------------------------------406 ln_neptramp = .false. ! ramp down Neptune velocity in shallow water407 / -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/CONFIG/GYRE_BFM/EXP00/namelist_cfg
r5930 r6051 46 46 !----------------------------------------------------------------------- 47 47 nn_bathy = 0 ! compute (=0) or read (=1) the bathymetry file 48 rn_rdt = 7200. ! time step for the dynamics (and tracer if nn_acc=0) 49 rn_rdtmin = 7200. ! minimum time step on tracers (used if nn_acc=1) 50 rn_rdtmax = 7200. ! maximum time step on tracers (used if nn_acc=1) 48 rn_rdt = 7200. ! time step for the dynamics 51 49 jphgr_msh = 5 ! type of horizontal mesh 52 50 ppglam0 = 0.0 ! longitude of first raw and column T-point (jphgr_msh = 1) … … 390 388 !----------------------------------------------------------------------- 391 389 / 392 !-----------------------------------------------------------------------393 &namdyn_nept ! Neptune effect (simplified: lateral and vertical diffusions removed)394 !-----------------------------------------------------------------------395 ln_neptramp = .false. ! ramp down Neptune velocity in shallow water396 / -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/CONFIG/GYRE_PISCES/EXP00/namelist_cfg
r5930 r6051 36 36 !----------------------------------------------------------------------- 37 37 nn_bathy = 0 ! compute (=0) or read (=1) the bathymetry file 38 rn_rdt = 7200. ! time step for the dynamics (and tracer if nn_acc=0) 39 rn_rdtmin = 7200. ! minimum time step on tracers (used if nn_acc=1) 40 rn_rdtmax = 7200. ! maximum time step on tracers (used if nn_acc=1) 38 rn_rdt = 7200. ! time step for the dynamics 41 39 jphgr_msh = 5 ! type of horizontal mesh 42 40 ppglam0 = 0.0 ! longitude of first raw and column T-point (jphgr_msh = 1) … … 260 258 !----------------------------------------------------------------------- 261 259 / 262 !-----------------------------------------------------------------------263 &namdyn_nept ! Neptune effect (simplified: lateral and vertical diffusions removed)264 !-----------------------------------------------------------------------265 ln_neptramp = .false. ! ramp down Neptune velocity in shallow water266 / -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/CONFIG/GYRE_XIOS/EXP00/namelist_cfg
r5930 r6051 40 40 !----------------------------------------------------------------------- 41 41 nn_bathy = 0 ! compute (=0) or read (=1) the bathymetry file 42 rn_rdt = 7200. ! time step for the dynamics (and tracer if nn_acc=0) 43 rn_rdtmin = 7200. ! minimum time step on tracers (used if nn_acc=1) 44 rn_rdtmax = 7200. ! maximum time step on tracers (used if nn_acc=1) 42 rn_rdt = 7200. ! time step for the dynamics 43 ! nn_baro = 60 ! number of barotropic time step ("key_dynspg_ts") 45 44 jphgr_msh = 5 ! type of horizontal mesh 46 45 ppglam0 = 0.0 ! longitude of first raw and column T-point (jphgr_msh = 1) … … 348 347 !----------------------------------------------------------------------- 349 348 / 350 !-----------------------------------------------------------------------351 &namdyn_nept ! Neptune effect (simplified: lateral and vertical diffusions removed)352 !-----------------------------------------------------------------------353 ln_neptramp = .false. ! ramp down Neptune velocity in shallow water354 / -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/1_namelist_cfg
r5930 r6051 52 52 ppacr2 = 999999. ! 53 53 rn_rdt = 2880. ! time step for the dynamics (and tracer if nn_acc=0) 54 rn_rdtmin = 14400. ! minimum time step on tracers (used if nn_acc=1)55 rn_rdtmax = 14400. ! maximum time step on tracers (used if nn_acc=1)56 54 / 57 55 !----------------------------------------------------------------------- … … 266 264 / 267 265 !----------------------------------------------------------------------- 268 &namdyn_nept ! Neptune effect (simplified: lateral and vertical diffusions removed)269 !-----------------------------------------------------------------------270 /271 !-----------------------------------------------------------------------272 266 &namobs ! observation usage ('key_diaobs') 273 267 !----------------------------------------------------------------------- -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/namelist_cfg
r5930 r6051 245 245 / 246 246 !----------------------------------------------------------------------- 247 &namdyn_nept ! Neptune effect (simplified: lateral and vertical diffusions removed)248 !-----------------------------------------------------------------------249 /250 !-----------------------------------------------------------------------251 247 &namobs ! observation usage ('key_diaobs') 252 248 !----------------------------------------------------------------------- -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/CONFIG/ORCA2_LIM3/EXP00/1_namelist_cfg
r5930 r6051 51 51 ppacr2 = 999999. ! 52 52 rn_rdt = 2880. ! time step for the dynamics (and tracer if nn_acc=0) 53 rn_rdtmin = 14400. ! minimum time step on tracers (used if nn_acc=1)54 rn_rdtmax = 14400. ! maximum time step on tracers (used if nn_acc=1)55 53 / 56 54 !----------------------------------------------------------------------- … … 266 264 / 267 265 !----------------------------------------------------------------------- 268 &namdyn_nept ! Neptune effect (simplified: lateral and vertical diffusions removed)269 !-----------------------------------------------------------------------270 /271 !-----------------------------------------------------------------------272 266 &namobs ! observation usage ('key_diaobs') 273 267 !----------------------------------------------------------------------- -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/CONFIG/ORCA2_LIM3/EXP00/namelist_cfg
r5930 r6051 251 251 / 252 252 !----------------------------------------------------------------------- 253 &namdyn_nept ! Neptune effect (simplified: lateral and vertical diffusions removed)254 !-----------------------------------------------------------------------255 /256 !-----------------------------------------------------------------------257 253 &namobs ! observation usage ('key_diaobs') 258 254 !----------------------------------------------------------------------- -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/CONFIG/ORCA2_LIM_CFC_C14b/EXP00/1_namelist_cfg
r5930 r6051 87 87 rn_rdt = 2880. ! time step for the dynamics (and tracer if nn_acc=0) 88 88 rn_atfp = 0.1 ! asselin time filter parameter 89 nn_acc = 0 ! acceleration of convergence : =1 used, rdt < rdttra(k)90 ! =0, not used, rdt = rdttra91 rn_rdtmin = 14400. ! minimum time step on tracers (used if nn_acc=1)92 rn_rdtmax = 14400. ! maximum time step on tracers (used if nn_acc=1)93 rn_rdth = 800. ! depth variation of tracer time step (used if nn_acc=1)94 89 / 95 90 !----------------------------------------------------------------------- … … 889 884 cn_dir_cdg = './' ! root directory for the location of drag coefficient files 890 885 / 891 !-----------------------------------------------------------------------892 &namdyn_nept ! Neptune effect (simplified: lateral and vertical diffusions removed)893 !-----------------------------------------------------------------------894 ! Suggested lengthscale values are those of Eby & Holloway (1994) for a coarse model895 ln_neptsimp = .false. ! yes/no use simplified neptune896 897 ln_smooth_neptvel = .false. ! yes/no smooth zunep, zvnep898 rn_tslse = 1.2e4 ! value of lengthscale L at the equator899 rn_tslsp = 3.0e3 ! value of lengthscale L at the pole900 ! Specify whether to ramp down the Neptune velocity in shallow901 ! water, and if so the depth range controlling such ramping down902 ln_neptramp = .true. ! ramp down Neptune velocity in shallow water903 rn_htrmin = 100.0 ! min. depth of transition range904 rn_htrmax = 200.0 ! max. depth of transition range905 / -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/CONFIG/ORCA2_LIM_CFC_C14b/EXP00/namelist_cfg
r5930 r6051 345 345 !----------------------------------------------------------------------- 346 346 / 347 !-----------------------------------------------------------------------348 &namdyn_nept ! Neptune effect (simplified: lateral and vertical diffusions removed)349 !-----------------------------------------------------------------------350 / -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/CONFIG/ORCA2_LIM_PISCES/EXP00/namelist_cfg
r5930 r6051 244 244 !----------------------------------------------------------------------- 245 245 / 246 !-----------------------------------------------------------------------247 &namdyn_nept ! Neptune effect (simplified: lateral and vertical diffusions removed)248 !-----------------------------------------------------------------------249 / -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist_cfg
r5930 r6051 32 32 !----------------------------------------------------------------------- 33 33 nn_msh = 1 ! create (=1) a mesh file or not (=0) 34 rn_rdt = 21600. ! time step for the dynamics (and tracer if nn_acc=0) 35 rn_rdtmin = 21600. ! minimum time step on tracers (used if nn_acc=1) 36 rn_rdtmax = 21600. ! maximum time step on tracers (used if nn_acc=1) 34 rn_rdt = 21600. ! time step for the dynamics 37 35 jphgr_msh = 0 ! type of horizontal mesh 38 36 ppglam0 = 999999.0 ! longitude of first raw and column T-point (jphgr_msh = 1) -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/CONFIG/SHARED/namelist_ref
r5930 r6051 132 132 rn_rdt = 5760. ! time step for the dynamics (and tracer if nn_acc=0) 133 133 rn_atfp = 0.1 ! asselin time filter parameter 134 nn_acc = 0 ! acceleration of convergence : =1 used, rdt < rdttra(k)135 ! =0, not used, rdt = rdttra136 rn_rdtmin = 28800. ! minimum time step on tracers (used if nn_acc=1)137 rn_rdtmax = 28800. ! maximum time step on tracers (used if nn_acc=1)138 rn_rdth = 800. ! depth variation of tracer time step (used if nn_acc=1)139 134 ln_crs = .false. ! Logical switch for coarsening module 140 135 jphgr_msh = 0 ! type of horizontal mesh … … 1244 1239 cn_dir_cdg = './' ! root directory for the location of drag coefficient files 1245 1240 / 1246 !-----------------------------------------------------------------------1247 &namdyn_nept ! Neptune effect (simplified: lateral and vertical diffusions removed)1248 !-----------------------------------------------------------------------1249 ! Suggested lengthscale values are those of Eby & Holloway (1994) for a coarse model1250 ln_neptsimp = .false. ! yes/no use simplified neptune1251 1252 ln_smooth_neptvel = .false. ! yes/no smooth zunep, zvnep1253 rn_tslse = 1.2e4 ! value of lengthscale L at the equator1254 rn_tslsp = 3.0e3 ! value of lengthscale L at the pole1255 ! Specify whether to ramp down the Neptune velocity in shallow1256 ! water, and if so the depth range controlling such ramping down1257 ln_neptramp = .true. ! ramp down Neptune velocity in shallow water1258 rn_htrmin = 100.0 ! min. depth of transition range1259 rn_htrmax = 200.0 ! max. depth of transition range1260 / -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/LIM_SRC_2/iceini_2.F90
r5385 r6051 83 83 CALL ice_run_2 ! read in namelist some run parameters 84 84 ! 85 rdt_ice = nn_fsbc * rdt tra(1)! sea-ice time step85 rdt_ice = nn_fsbc * rdt ! sea-ice time step 86 86 numit = nit000 - 1 87 87 ! -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/LIM_SRC_2/limrst_2.F90
r5341 r6051 71 71 WRITE(numout,*) 72 72 SELECT CASE ( jprstlib ) 73 CASE ( jprstdimg )74 WRITE(numout,*) ' open ice restart binary file: ',TRIM(clpath)//clname75 73 CASE DEFAULT 76 74 WRITE(numout,*) ' open ice restart NetCDF file: ',TRIM(clpath)//clname … … 192 190 ENDIF 193 191 194 IF ( jprstlib == jprstdimg ) THEN195 ! eventually read netcdf file (monobloc) for restarting on different number of processors196 ! if {cn_icerst_in}.nc exists, then set jlibalt to jpnf90197 INQUIRE( FILE = TRIM(cn_icerst_indir)//'/'//TRIM(cn_icerst_in)//'.nc', EXIST = llok )198 IF ( llok ) THEN ; jlibalt = jpnf90 ; ELSE ; jlibalt = jprstlib ; ENDIF199 ENDIF200 201 192 CALL iom_open ( TRIM(cn_icerst_indir)//'/'//TRIM(cn_icerst_in), numrir, kiolib = jlibalt ) 202 193 -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/LIM_SRC_2/limwri_2.F90
r4696 r6051 85 85 86 86 #if ! defined key_iomput 87 # if defined key_dimgout88 !!----------------------------------------------------------------------89 !! 'key_dimgout' Direct Access file90 !!----------------------------------------------------------------------91 # include "limwri_dimg_2.h90"92 # else93 87 SUBROUTINE lim_wri_2( kt ) 94 88 !!------------------------------------------------------------------- … … 215 209 ! 216 210 END SUBROUTINE lim_wri_2 217 218 #endif219 211 220 212 SUBROUTINE lim_wri_init_2 -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/LIM_SRC_3/limrst.F90
r5341 r6051 77 77 WRITE(numout,*) 78 78 SELECT CASE ( jprstlib ) 79 CASE ( jprstdimg )80 WRITE(numout,*) ' open ice restart binary file: ',TRIM(clpath)//clname81 79 CASE DEFAULT 82 80 WRITE(numout,*) ' open ice restart NetCDF file: ',TRIM(clpath)//clname … … 331 329 ENDIF 332 330 333 IF ( jprstlib == jprstdimg ) THEN334 ! eventually read netcdf file (monobloc) for restarting on different number of processors335 ! if {cn_icerst_in}.nc exists, then set jlibalt to jpnf90336 INQUIRE( FILE = TRIM(cn_icerst_indir)//'/'//TRIM(cn_icerst_in)//'.nc', EXIST = llok )337 IF ( llok ) THEN ; jlibalt = jpnf90 ; ELSE ; jlibalt = jprstlib ; ENDIF338 ENDIF339 340 331 CALL iom_open ( TRIM(cn_icerst_indir)//'/'//cn_icerst_in, numrir, kiolib = jprstlib ) 341 332 -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90
r5517 r6051 41 41 CONTAINS 42 42 43 #if defined key_dimgout44 # include "limwri_dimg.h90"45 #else46 43 47 44 SUBROUTINE lim_wri( kindic ) … … 298 295 299 296 END SUBROUTINE lim_wri 300 #endif301 297 302 298 -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OFF_SRC/domrea.F90
r5836 r6051 116 116 & nn_no , cn_exp , cn_ocerst_in, cn_ocerst_out, ln_rstart , nn_rstctl, & 117 117 & nn_it000, nn_itend , nn_date0 , nn_leapy , nn_istate , nn_stock , & 118 & nn_write, ln_ dimgnnn, ln_mskland , ln_cfmeta , ln_clobber, nn_chunksz, nn_euler118 & nn_write, ln_mskland , ln_cfmeta , ln_clobber, nn_chunksz, nn_euler 119 119 NAMELIST/namdom/ nn_bathy , rn_bathy, rn_e3zps_min, rn_e3zps_rat, nn_msh , rn_hmin, & 120 & nn_acc , rn_atfp , rn_rdt , rn_rdtmin , & 121 & rn_rdtmax, rn_rdth , nn_baro , nn_closea , ln_crs, & 122 & jphgr_msh, & 120 & rn_atfp , rn_rdt , nn_baro , nn_closea , ln_crs, jphgr_msh, & 123 121 & ppglam0, ppgphi0, ppe1_deg, ppe2_deg, ppe1_m, ppe2_m, & 124 122 & ppsur, ppa0, ppa1, ppkth, ppacr, ppdzmin, pphmax, ldbletanh, & … … 154 152 WRITE(numout,*) ' frequency of restart file nn_stock = ', nn_stock 155 153 WRITE(numout,*) ' frequency of output file nn_write = ', nn_write 156 WRITE(numout,*) ' multi file dimgout ln_dimgnnn = ', ln_dimgnnn157 154 WRITE(numout,*) ' mask land points ln_mskland = ', ln_mskland 158 155 WRITE(numout,*) ' additional CF standard metadata ln_cfmeta = ', ln_cfmeta … … 186 183 ! parameters correspondting to nit000 - 1 (as we start the step loop with a call to day) 187 184 ndastp = ndate0 - 1 ! ndate0 read in the namelist in dom_nam, we assume that we start run at 00:00 188 adatrj = ( REAL( nit000-1, wp ) * rdt tra(1)) / rday185 adatrj = ( REAL( nit000-1, wp ) * rdt ) / rday 189 186 190 187 #if defined key_agrif … … 231 228 WRITE(numout,*) ' asselin time filter parameter rn_atfp = ', rn_atfp 232 229 WRITE(numout,*) ' time-splitting: nb of sub time-step nn_baro = ', nn_baro 233 WRITE(numout,*) ' acceleration of converge nn_acc = ', nn_acc234 WRITE(numout,*) ' nn_acc=1: surface tracer rdt rn_rdtmin = ', rn_rdtmin235 WRITE(numout,*) ' bottom tracer rdt rdtmax = ', rn_rdtmax236 WRITE(numout,*) ' depth of transition rn_rdth = ', rn_rdth237 230 WRITE(numout,*) ' suppression of closed seas (=0) nn_closea = ', nn_closea 238 231 WRITE(numout,*) ' type of horizontal mesh jphgr_msh = ', jphgr_msh … … 260 253 e3zps_rat = rn_e3zps_rat 261 254 nmsh = nn_msh 262 nacc = nn_acc263 255 atfp = rn_atfp 264 256 rdt = rn_rdt 265 rdtmin = rn_rdtmin266 rdtmax = rn_rdtmin267 rdth = rn_rdth268 269 257 #if defined key_netcdf4 270 258 ! ! NetCDF 4 case ("key_netcdf4" defined) -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90
r5836 r6051 205 205 ENDIF 206 206 207 IF ( nacc /= 0 ) &208 & CALL ctl_stop( ' nacc /= 0 and key_asminc :', &209 & ' Assimilation increments have only been implemented', &210 & ' for synchronous time stepping' )211 207 212 208 IF ( ( ln_asmdin ).AND.( ln_asmiau ) ) & -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/BDY/bdytides.F90
r5930 r6051 323 323 ENDIF 324 324 325 IF ( nsec_day == NINT(0.5_wp * rdt tra(1)) .AND. zflag==1 ) THEN325 IF ( nsec_day == NINT(0.5_wp * rdt) .AND. zflag==1 ) THEN 326 326 ! 327 327 kt_tide = kt … … 438 438 ! We refresh nodal factors every day below 439 439 ! This should be done somewhere else 440 IF ( nsec_day == NINT(0.5_wp * rdt tra(1)) .AND. lk_first_btstp ) THEN440 IF ( nsec_day == NINT(0.5_wp * rdt) .AND. lk_first_btstp ) THEN 441 441 ! 442 442 kt_tide = kt -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/C1D/domc1d.F90
r5215 r6051 44 44 !!---------------------------------------------------------------------- 45 45 NAMELIST/namdom/ nn_bathy, rn_bathy , rn_e3zps_min, rn_e3zps_rat, nn_msh, rn_hmin, & 46 & nn_acc , rn_atfp , rn_rdt , rn_rdtmin , & 47 & rn_rdtmax, rn_rdth , nn_closea , ln_crs, & 48 & jphgr_msh, & 46 & rn_atfp , rn_rdt ,nn_closea , ln_crs, jphgr_msh, & 49 47 & ppglam0, ppgphi0, ppe1_deg, ppe2_deg, ppe1_m, ppe2_m, & 50 48 & ppsur, ppa0, ppa1, ppkth, ppacr, ppdzmin, pphmax, ldbletanh, & -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/CRS/crsfld.F90
r5836 r6051 52 52 !! 2. At time of output, rescale [1] by dimension and time 53 53 !! to yield the spatial and temporal average. 54 !! See. diawri_dimg.h90,sbcmod.F9054 !! See. sbcmod.F90 55 55 !! 56 56 !! ** Method : -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/DIA/diafwb.F90
r5836 r6051 116 116 117 117 ! Conversion in m3 118 a_fwf = a_fwf * rdt tra(1)* 1.e-3118 a_fwf = a_fwf * rdt * 1.e-3 119 119 120 120 ! fwf correction to bring back the mean ssh to zero … … 404 404 WRITE(inum,*) 405 405 WRITE(inum,*) 'Net freshwater budget ' 406 WRITE(inum,9010) ' fwf = ',a_fwf, ' m3 =', a_fwf /(FLOAT(nitend-nit000+1)*rdt tra(1)) * 1.e-6,' Sv'406 WRITE(inum,9010) ' fwf = ',a_fwf, ' m3 =', a_fwf /(FLOAT(nitend-nit000+1)*rdt) * 1.e-6,' Sv' 407 407 WRITE(inum,*) 408 408 WRITE(inum,9010) ' zarea =',zarea -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/DIA/diaharm.F90
r5930 r6051 21 21 USE ioipsl ! NetCDF IPSL library 22 22 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 23 USE diadimg ! To write dimg24 23 USE timing ! preformance summary 25 24 USE wrk_nemo ! working arrays … … 384 383 !!---------------------------------------------------------------------- 385 384 386 #if defined key_dimgout387 cdfile_name_T = TRIM(cexper)//'_Tidal_harmonics_gridT.dimgproc'388 cdfile_name_U = TRIM(cexper)//'_Tidal_harmonics_gridU.dimgproc'389 cdfile_name_V = TRIM(cexper)//'_Tidal_harmonics_gridV.dimgproc'390 #endif391 392 385 IF(lwp) WRITE(numout,*) ' ' 393 386 IF(lwp) WRITE(numout,*) 'dia_wri_harm : Write harmonic analysis results' 394 #if defined key_dimgout395 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~ Output files: ', TRIM(cdfile_name_T)396 IF(lwp) WRITE(numout,*) ' ', TRIM(cdfile_name_U)397 IF(lwp) WRITE(numout,*) ' ', TRIM(cdfile_name_V)398 #endif399 387 IF(lwp) WRITE(numout,*) ' ' 400 388 … … 402 390 !///////////// 403 391 ! 404 #if defined key_dimgout405 cltext='Elevation amplitude and phase'406 CALL dia_wri_dimg(TRIM(cdfile_name_T), TRIM(cltext), out_eta, 2*nb_ana, '2')407 #else408 392 DO jh = 1, nb_ana 409 393 CALL iom_put( TRIM(tname(jh))//'x', out_eta(:,:,jh) ) 410 394 CALL iom_put( TRIM(tname(jh))//'y', out_eta(:,:,nb_ana+jh) ) 411 395 END DO 412 #endif413 396 414 397 ! B) ubar 415 398 !///////// 416 399 ! 417 #if defined key_dimgout418 cltext='ubar amplitude and phase'419 CALL dia_wri_dimg(TRIM(cdfile_name_U), TRIM(cltext), out_u, 2*nb_ana, '2')420 #else421 400 DO jh = 1, nb_ana 422 401 CALL iom_put( TRIM(tname(jh))//'x_u', out_u(:,:,jh) ) 423 402 CALL iom_put( TRIM(tname(jh))//'y_u', out_u(:,:,nb_ana+jh) ) 424 403 END DO 425 #endif426 404 427 405 ! C) vbar 428 406 !///////// 429 407 ! 430 #if defined key_dimgout431 cltext='vbar amplitude and phase'432 CALL dia_wri_dimg(TRIM(cdfile_name_V), TRIM(cltext), out_v, 2*nb_ana, '2')433 #else434 408 DO jh = 1, nb_ana 435 409 CALL iom_put( TRIM(tname(jh))//'x_v', out_v(:,:,jh ) ) 436 410 CALL iom_put( TRIM(tname(jh))//'y_v', out_v(:,:,jh+nb_ana) ) 437 411 END DO 438 #endif439 412 ! 440 413 END SUBROUTINE dia_wri_harm -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/DIA/dianam.F90
r2528 r6051 72 72 73 73 IF( llfsec .OR. kfreq < 0 ) THEN ; inbsec = kfreq ! output frequency already in seconds 74 ELSE ; inbsec = kfreq * NINT( rdt tra(1)) ! from time-step to seconds74 ELSE ; inbsec = kfreq * NINT( rdt ) ! from time-step to seconds 75 75 ENDIF 76 76 iddss = NINT( rday ) ! number of seconds in 1 day … … 116 116 ! date of the beginning and the end of the run 117 117 118 zdrun = rdt tra(1)/ rday * REAL( nitend - nit000, wp ) ! length of the run in days119 zjul = fjulday - rdt tra(1)/ rday118 zdrun = rdt / rday * REAL( nitend - nit000, wp ) ! length of the run in days 119 zjul = fjulday - rdt / rday 120 120 CALL ju2ymds( zjul , iyear1, imonth1, iday1, zsec1 ) ! year/month/day of the beginning of run 121 121 CALL ju2ymds( zjul + zdrun, iyear2, imonth2, iday2, zsec2 ) ! year/month/day of the end of run -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90
r5930 r6051 42 42 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 43 43 USE in_out_manager ! I/O manager 44 USE diadimg ! dimg direct access file format output45 44 USE iom 46 45 USE ioipsl … … 97 96 END FUNCTION dia_wri_alloc 98 97 99 #if defined key_dimgout100 !!----------------------------------------------------------------------101 !! 'key_dimgout' DIMG output file102 !!----------------------------------------------------------------------103 # include "diawri_dimg.h90"104 105 #else106 98 !!---------------------------------------------------------------------- 107 99 !! Default option NetCDF output file 108 100 !!---------------------------------------------------------------------- 109 # 101 #if defined key_iomput 110 102 !!---------------------------------------------------------------------- 111 103 !! 'key_iomput' use IOM library … … 410 402 INTEGER :: iimi, iima, ipk, it, itmod, ijmi, ijma ! local integers 411 403 INTEGER :: jn, ierror ! local integers 412 REAL(wp) :: zsto, zout, zmax, zjulian , zdt! local scalars404 REAL(wp) :: zsto, zout, zmax, zjulian ! local scalars 413 405 ! 414 406 REAL(wp), POINTER, DIMENSION(:,:) :: zw2d ! 2D workspace … … 435 427 436 428 ! Define frequency of output and means 437 zdt = rdt438 IF( nacc == 1 ) zdt = rdtmin439 429 clop = "x" ! no use of the mask value (require less cpu time and otherwise the model crashes) 440 430 #if defined key_diainstant 441 zsto = nwrite * zdt431 zsto = nwrite * rdt 442 432 clop = "inst("//TRIM(clop)//")" 443 433 #else 444 zsto= zdt434 zsto=rdt 445 435 clop = "ave("//TRIM(clop)//")" 446 436 #endif 447 zout = nwrite * zdt448 zmax = ( nitend - nit000 + 1 ) * zdt437 zout = nwrite * rdt 438 zmax = ( nitend - nit000 + 1 ) * rdt 449 439 450 440 ! Define indices of the horizontal output zoom and vertical limit storage … … 488 478 CALL histbeg( clhstnam, jpi, glamt, jpj, gphit, & ! Horizontal grid: glamt and gphit 489 479 & iimi, iima-iimi+1, ijmi, ijma-ijmi+1, & 490 & nit000-1, zjulian, zdt, nh_T, nid_T, domain_id=nidom, snc4chunks=snc4set )480 & nit000-1, zjulian, rdt, nh_T, nid_T, domain_id=nidom, snc4chunks=snc4set ) 491 481 CALL histvert( nid_T, "deptht", "Vertical T levels", & ! Vertical grid: gdept 492 482 & "m", ipk, gdept_1d, nz_T, "down" ) … … 524 514 CALL histbeg( clhstnam, jpi, glamu, jpj, gphiu, & ! Horizontal grid: glamu and gphiu 525 515 & iimi, iima-iimi+1, ijmi, ijma-ijmi+1, & 526 & nit000-1, zjulian, zdt, nh_U, nid_U, domain_id=nidom, snc4chunks=snc4set )516 & nit000-1, zjulian, rdt, nh_U, nid_U, domain_id=nidom, snc4chunks=snc4set ) 527 517 CALL histvert( nid_U, "depthu", "Vertical U levels", & ! Vertical grid: gdept 528 518 & "m", ipk, gdept_1d, nz_U, "down" ) … … 537 527 CALL histbeg( clhstnam, jpi, glamv, jpj, gphiv, & ! Horizontal grid: glamv and gphiv 538 528 & iimi, iima-iimi+1, ijmi, ijma-ijmi+1, & 539 & nit000-1, zjulian, zdt, nh_V, nid_V, domain_id=nidom, snc4chunks=snc4set )529 & nit000-1, zjulian, rdt, nh_V, nid_V, domain_id=nidom, snc4chunks=snc4set ) 540 530 CALL histvert( nid_V, "depthv", "Vertical V levels", & ! Vertical grid : gdept 541 531 & "m", ipk, gdept_1d, nz_V, "down" ) … … 550 540 CALL histbeg( clhstnam, jpi, glamt, jpj, gphit, & ! Horizontal grid: glamt and gphit 551 541 & iimi, iima-iimi+1, ijmi, ijma-ijmi+1, & 552 & nit000-1, zjulian, zdt, nh_W, nid_W, domain_id=nidom, snc4chunks=snc4set )542 & nit000-1, zjulian, rdt, nh_W, nid_W, domain_id=nidom, snc4chunks=snc4set ) 553 543 CALL histvert( nid_W, "depthw", "Vertical W levels", & ! Vertical grid: gdepw 554 544 & "m", ipk, gdepw_1d, nz_W, "down" ) … … 843 833 ! 844 834 END SUBROUTINE dia_wri 845 # endif846 847 835 #endif 848 836 … … 867 855 INTEGER :: id_i , nz_i, nh_i 868 856 INTEGER, DIMENSION(1) :: idex ! local workspace 869 REAL(wp) :: zsto, zout, zmax, zjulian , zdt857 REAL(wp) :: zsto, zout, zmax, zjulian 870 858 !!---------------------------------------------------------------------- 871 859 ! … … 876 864 clname = cdfile_name 877 865 IF( .NOT. Agrif_Root() ) clname = TRIM(Agrif_CFixed())//'_'//TRIM(clname) 878 zdt = rdt879 866 zsto = rdt 880 867 clop = "inst(x)" ! no use of the mask value (require less cpu time) 881 868 zout = rdt 882 zmax = ( nitend - nit000 + 1 ) * zdt869 zmax = ( nitend - nit000 + 1 ) * rdt 883 870 884 871 IF(lwp) WRITE(numout,*) … … 895 882 zjulian = zjulian - adatrj ! set calendar origin to the beginning of the experiment 896 883 CALL histbeg( clname, jpi, glamt, jpj, gphit, & 897 1, jpi, 1, jpj, nit000-1, zjulian, zdt, nh_i, id_i, domain_id=nidom, snc4chunks=snc4set ) ! Horizontal grid : glamt and gphit884 1, jpi, 1, jpj, nit000-1, zjulian, rdt, nh_i, id_i, domain_id=nidom, snc4chunks=snc4set ) ! Horizontal grid : glamt and gphit 898 885 CALL histvert( id_i, "deptht", "Vertical T levels", & ! Vertical grid : gdept 899 886 "m", jpk, gdept_1d, nz_i, "down") … … 962 949 ! ----------------- 963 950 CALL histclo( id_i ) 964 #if ! defined key_iomput && ! defined key_dimgout951 #if ! defined key_iomput 965 952 IF( ninist /= 1 ) THEN 966 953 CALL histclo( nid_T ) -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/DOM/daymod.F90
r5563 r6051 20 20 !! 21 21 !! we suppose that the time step is deviding the number of second of in a day 22 !! ---> MOD( rday, rdt tra(1)) == 022 !! ---> MOD( rday, rdt ) == 0 23 23 !! 24 24 !! ----------- WARNING ----------- … … 78 78 & 'You must do a restart at higher frequency (or remove this stop and recompile the code in I8)' ) 79 79 ENDIF 80 ! all calendar staff is based on the fact that MOD( rday, rdt tra(1)) == 081 IF( MOD( rday , rdt tra(1)) /= 0. ) CALL ctl_stop( 'the time step must devide the number of second of in a day' )80 ! all calendar staff is based on the fact that MOD( rday, rdt ) == 0 81 IF( MOD( rday , rdt ) /= 0. ) CALL ctl_stop( 'the time step must devide the number of second of in a day' ) 82 82 IF( MOD( rday , 2. ) /= 0. ) CALL ctl_stop( 'the number of second of in a day must be an even number' ) 83 IF( MOD( rdt tra(1), 2. ) /= 0. ) CALL ctl_stop( 'the time step (in second) must be an even number' )83 IF( MOD( rdt, 2. ) /= 0. ) CALL ctl_stop( 'the time step (in second) must be an even number' ) 84 84 nsecd = NINT(rday ) 85 85 nsecd05 = NINT(0.5 * rday ) 86 ndt = NINT( rdt tra(1))87 ndt05 = NINT(0.5 * rdt tra(1))86 ndt = NINT( rdt) 87 ndt05 = NINT(0.5 * rdt) 88 88 89 89 IF( .NOT. lk_offline ) CALL day_rst( nit000, 'READ' ) … … 223 223 nsec_week = nsec_week + ndt 224 224 nsec_day = nsec_day + ndt 225 adatrj = adatrj + rdt tra(1)/ rday226 fjulday = fjulday + rdt tra(1)/ rday225 adatrj = adatrj + rdt / rday 226 fjulday = fjulday + rdt / rday 227 227 IF( ABS(fjulday - REAL(NINT(fjulday),wp)) < zprec ) fjulday = REAL(NINT(fjulday),wp) ! avoid truncation error 228 228 IF( ABS(adatrj - REAL(NINT(adatrj ),wp)) < zprec ) adatrj = REAL(NINT(adatrj ),wp) ! avoid truncation error … … 334 334 ! parameters correspondting to nit000 - 1 (as we start the step loop with a call to day) 335 335 ndastp = ndate0 - 1 ! ndate0 read in the namelist in dom_nam, we assume that we start run at 00:00 336 adatrj = ( REAL( nit000-1, wp ) * rdt tra(1)) / rday336 adatrj = ( REAL( nit000-1, wp ) * rdt ) / rday 337 337 ! note this is wrong if time step has changed during run 338 338 ENDIF … … 340 340 ! parameters correspondting to nit000 - 1 (as we start the step loop with a call to day) 341 341 ndastp = ndate0 - 1 ! ndate0 read in the namelist in dom_nam, we assume that we start run at 00:00 342 adatrj = ( REAL( nit000-1, wp ) * rdt tra(1)) / rday342 adatrj = ( REAL( nit000-1, wp ) * rdt ) / rday 343 343 ENDIF 344 344 IF( ABS(adatrj - REAL(NINT(adatrj),wp)) < 0.1 / rday ) adatrj = REAL(NINT(adatrj),wp) ! avoid truncation error -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/DOM/dom_oce.F90
r5930 r6051 35 35 REAL(wp), PUBLIC :: rn_e3zps_rat !: minimum thickness ration for partial steps 36 36 INTEGER , PUBLIC :: nn_msh !: = 1 create a mesh-mask file 37 INTEGER , PUBLIC :: nn_acc !: = 0/1 use of the acceleration of convergence technique38 37 REAL(wp), PUBLIC :: rn_atfp !: asselin time filter parameter 39 REAL(wp), PUBLIC :: rn_rdt !: time step for the dynamics (and tracer if nacc=0) 40 REAL(wp), PUBLIC :: rn_rdtmin !: minimum time step on tracers 41 REAL(wp), PUBLIC :: rn_rdtmax !: maximum time step on tracers 42 REAL(wp), PUBLIC :: rn_rdth !: depth variation of tracer step 38 REAL(wp), PUBLIC :: rn_rdt !: time step for the dynamics and tracer 43 39 INTEGER , PUBLIC :: nn_closea !: =0 suppress closed sea/lake from the ORCA domain or not (=1) 44 40 INTEGER , PUBLIC :: nn_euler !: =0 start with forward time step or not (=1) … … 99 95 REAL(wp), PUBLIC :: e3zps_rat !: minimum thickness ration for partial steps 100 96 INTEGER , PUBLIC :: nmsh !: = 1 create a mesh-mask file 101 INTEGER , PUBLIC :: nacc !: = 0/1 use of the acceleration of convergence technique102 97 REAL(wp), PUBLIC :: atfp !: asselin time filter parameter 103 REAL(wp), PUBLIC :: rdt !: time step for the dynamics (and tracer if nacc=0) 104 REAL(wp), PUBLIC :: rdtmin !: minimum time step on tracers 105 REAL(wp), PUBLIC :: rdtmax !: maximum time step on tracers 106 REAL(wp), PUBLIC :: rdth !: depth variation of tracer step 98 REAL(wp), PUBLIC :: rdt !: time step for the dynamics and tracer 107 99 108 100 ! !!! associated variables 109 101 INTEGER , PUBLIC :: neuler !: restart euler forward option (0=Euler) 110 102 REAL(wp), PUBLIC :: atfp1 !: asselin time filter coeff. (atfp1= 1-2*atfp) 111 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: rdttra !: vertical profile of tracer time step 112 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: r2dtra !: = 2*rdttra except at nit000 (=rdttra) if neuler=0 103 REAL(wp), PUBLIC :: r2dt !: = 2*rdt except at nit000 (=rdt) if neuler=0 113 104 114 105 !!---------------------------------------------------------------------- … … 331 322 ierr(:) = 0 332 323 ! 333 ALLOCATE( rdttra(jpk), r2dtra(jpk),mig(jpi), mjg(jpj), nfiimpp(jpni,jpnj), &324 ALLOCATE( mig(jpi), mjg(jpj), nfiimpp(jpni,jpnj), & 334 325 & nfipproc(jpni,jpnj), nfilcit(jpni,jpnj), STAT=ierr(1) ) 335 326 ! -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90
r5836 r6051 138 138 & nn_no , cn_exp , cn_ocerst_in, cn_ocerst_out, ln_rstart , nn_rstctl, & 139 139 & nn_it000, nn_itend , nn_date0 , nn_leapy , nn_istate , nn_stock , & 140 & nn_write, ln_ dimgnnn, ln_mskland , ln_cfmeta , ln_clobber, nn_chunksz, nn_euler140 & nn_write, ln_mskland , ln_cfmeta , ln_clobber , nn_chunksz, nn_euler 141 141 NAMELIST/namdom/ nn_bathy, rn_bathy , rn_e3zps_min, rn_e3zps_rat, nn_msh, rn_hmin, & 142 & nn_acc , rn_atfp , rn_rdt , rn_rdtmin , & 143 & rn_rdtmax, rn_rdth , nn_closea , ln_crs, & 144 & jphgr_msh, & 142 & rn_atfp , rn_rdt , nn_closea , ln_crs , jphgr_msh, & 145 143 & ppglam0, ppgphi0, ppe1_deg, ppe2_deg, ppe1_m, ppe2_m, & 146 144 & ppsur, ppa0, ppa1, ppkth, ppacr, ppdzmin, pphmax, ldbletanh, & … … 186 184 ENDIF 187 185 WRITE(numout,*) ' frequency of output file nn_write = ', nn_write 188 WRITE(numout,*) ' multi file dimgout ln_dimgnnn = ', ln_dimgnnn189 186 WRITE(numout,*) ' mask land points ln_mskland = ', ln_mskland 190 187 WRITE(numout,*) ' additional CF standard metadata ln_cfmeta = ', ln_cfmeta … … 267 264 WRITE(numout,*) ' ocean time step rn_rdt = ', rn_rdt 268 265 WRITE(numout,*) ' asselin time filter parameter rn_atfp = ', rn_atfp 269 WRITE(numout,*) ' acceleration of converge nn_acc = ', nn_acc270 WRITE(numout,*) ' nn_acc=1: surface tracer rdt rn_rdtmin = ', rn_rdtmin271 WRITE(numout,*) ' bottom tracer rdt rdtmax = ', rn_rdtmax272 WRITE(numout,*) ' depth of transition rn_rdth = ', rn_rdth273 266 WRITE(numout,*) ' suppression of closed seas (=0) nn_closea = ', nn_closea 274 267 WRITE(numout,*) ' online coarsening of dynamical fields ln_crs = ', ln_crs … … 297 290 e3zps_rat = rn_e3zps_rat 298 291 nmsh = nn_msh 299 nacc = nn_acc300 292 atfp = rn_atfp 301 293 rdt = rn_rdt 302 rdtmin = rn_rdtmin303 rdtmax = rn_rdtmin304 rdth = rn_rdth305 294 306 295 #if defined key_netcdf4 -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/DOM/domstp.F90
r4292 r6051 41 41 !! filter parameter read in namelist 42 42 !! - Model time step: 43 !! nacc = 0 : synchronous time intergration. 44 !! There is one time step only, defined by: rdt, rdttra(k)=rdt 45 !! nacc = 1 : accelerating the convergence. There is 2 different 46 !! time steps for dynamics and tracers: 47 !! rdt : dynamical part 48 !! rdttra(k): temperature and salinity 49 !! The tracer time step is a function of vertical level. the model 50 !! reference time step ( i.e. for wind stress, surface heat and 51 !! salt fluxes) is the surface tracer time step is rdttra(1). 52 !! N.B. depth dependent acceleration of convergence is not im- 53 !! plemented for s-coordinate. 43 !! synchronous time intergration. 44 !! There is one time step only, defined by: rdt for dynamics and 45 !! tracer,wind stress, surface heat and salt fluxes 54 46 !! 55 !! ** Action : - rdttra : vertical profile of tracer time step47 !! ** Action : [REMOVED - rdttra: vertical profile of tracer time step] 56 48 !! - atfp1 : = 1 - 2*atfp 57 49 !! … … 72 64 atfp1 = 1. - 2. * atfp 73 65 74 SELECT CASE ( nacc ) 66 IF(lwp) WRITE(numout,*)' synchronous time stepping' 67 IF(lwp) WRITE(numout,*)' dynamics and tracer time step = ', rdt/3600., ' hours' 75 68 76 CASE ( 0 ) ! Synchronous time stepping77 IF(lwp) WRITE(numout,*)' synchronous time stepping'78 IF(lwp) WRITE(numout,*)' dynamics and tracer time step = ', rdt/3600., ' hours'79 80 rdttra(:) = rdt81 82 CASE ( 1 ) ! Accelerating the convergence83 IF(lwp) WRITE(numout,*) ' no tracer damping in the turbocline'84 IF(lwp) WRITE(numout,*)' accelerating the convergence'85 IF(lwp) WRITE(numout,*)' dynamics time step = ', rdt/3600., ' hours'86 IF( ln_sco .AND. rdtmin /= rdtmax .AND. lk_vvl ) &87 & CALL ctl_stop ( ' depth dependent acceleration of convergence not implemented in s-coordinates &88 & nor in variable volume' )89 IF(lwp) WRITE(numout,*)' tracers time step : dt (hours) level'90 91 DO jk = 1, jpk92 IF( gdept_1d(jk) <= rdth ) rdttra(jk) = rdtmin93 IF( gdept_1d(jk) > rdth ) THEN94 rdttra(jk) = rdtmin + ( rdtmax - rdtmin ) &95 * ( EXP( ( gdept_1d(jk ) - rdth ) / rdth ) - 1. ) &96 / ( EXP( ( gdept_1d(jpk) - rdth ) / rdth ) - 1. )97 ENDIF98 IF(lwp) WRITE(numout,"(36x,f5.2,5x,i3)") rdttra(jk)/3600., jk99 END DO100 101 CASE DEFAULT ! E R R O R102 103 WRITE(ctmp1,*) ' nacc value e r r o r, nacc= ',nacc104 CALL ctl_stop( ctmp1 )105 106 END SELECT107 69 108 70 END SUBROUTINE dom_stp -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf.F90
r5836 r6051 34 34 35 35 INTEGER :: nzdf = 0 ! type vertical diffusion algorithm used, defined from ln_zdf... namlist logicals 36 REAL(wp) :: r2dt ! time-step, = 2 rdttra except at nit000 (=rdttra) if neuler=037 36 38 37 !! * Substitutions … … 63 62 ! 64 63 ! ! set time step 65 IF( neuler == 0 .AND. kt == nit000 ) THEN ; r2dt = rdt ! = rdt ra(restart with Euler time stepping)66 ELSEIF( kt <= nit000 + 1 ) THEN ; r2dt = 2. * rdt ! = 2 rdt tra(leapfrog)64 IF( neuler == 0 .AND. kt == nit000 ) THEN ; r2dt = rdt ! = rdt (restart with Euler time stepping) 65 ELSEIF( kt <= nit000 + 1 ) THEN ; r2dt = 2. * rdt ! = 2 rdt (leapfrog) 67 66 ENDIF 68 67 -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/IOM/in_out_manager.F90
r5518 r6051 42 42 INTEGER :: nn_stock !: restart file frequency 43 43 INTEGER, DIMENSION(10) :: nn_stocklist !: restart dump times 44 LOGICAL :: ln_dimgnnn !: type of dimgout. (F): 1 file for all proc45 !: (T): 1 file per proc46 44 LOGICAL :: ln_mskland !: mask land points in NetCDF outputs (costly: + ~15%) 47 45 LOGICAL :: ln_cfmeta !: output additional data to netCDF files required for compliance with the CF metadata standard -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90
r5836 r6051 8 8 !! 3.0 ! 2007-07 (D. Storkey) Changes to iom_gettime 9 9 !! 3.4 ! 2012-12 (R. Bourdalle-Badie and G. Reffray) add C1D case 10 !! 3.6 ! 2014-15 DIMG format removed 10 11 !!-------------------------------------------------------------------- 11 12 … … 23 24 USE lbclnk ! lateal boundary condition / mpp exchanges 24 25 USE iom_def ! iom variables definitions 25 USE iom_ioipsl ! NetCDF format with IOIPSL library26 26 USE iom_nf90 ! NetCDF format with native NetCDF library 27 USE iom_rstdimg ! restarts access direct format "dimg" style...28 27 USE in_out_manager ! I/O manager 29 28 USE lib_mpp ! MPP library … … 246 245 CHARACTER(LEN=256) :: clname ! the name of the file based on cdname [[+clcpu]+clcpu] 247 246 CHARACTER(LEN=256) :: cltmpn ! tempory name to store clname (in writting mode) 248 CHARACTER(LEN=10) :: clsuffix ! ".nc" or ".dimg"247 CHARACTER(LEN=10) :: clsuffix ! ".nc" 249 248 CHARACTER(LEN=15) :: clcpu ! the cpu number (max jpmax_digits digits) 250 249 CHARACTER(LEN=256) :: clinfo ! info character … … 309 308 ! which suffix should we use? 310 309 SELECT CASE (iolib) 311 CASE (jpioipsl ) ; clsuffix = '.nc'312 310 CASE (jpnf90 ) ; clsuffix = '.nc' 313 CASE (jprstdimg) ; clsuffix = '.dimg'314 311 CASE DEFAULT ; clsuffix = '' 315 CALL ctl_stop( TRIM(clinfo), 'accepted IO library are only jpioipsl, jpnf90 and jprstdimg' )312 CALL ctl_stop( TRIM(clinfo), 'accepted IO library is only jpnf90 (jpioipsl option has been removed) ' ) 316 313 END SELECT 317 314 ! Add the suffix if needed … … 326 323 IF( .NOT.llok ) THEN 327 324 ! we try to add the cpu number to the name 328 IF( iolib == jprstdimg ) THEN ; WRITE(clcpu,*) narea 329 ELSE ; WRITE(clcpu,*) narea-1 330 ENDIF 325 WRITE(clcpu,*) narea-1 326 331 327 clcpu = TRIM(ADJUSTL(clcpu)) 332 328 iln = INDEX(clname,TRIM(clsuffix), back = .TRUE.) … … 375 371 END SELECT 376 372 ENDIF 377 ! Open the NetCDF or RSTDIMGfile373 ! Open the NetCDF file 378 374 ! ============= 379 375 ! do we have some free file identifier? … … 399 395 IF( istop == nstop ) THEN ! no error within this routine 400 396 SELECT CASE (iolib) 401 CASE (jpioipsl ) ; CALL iom_ioipsl_open( clname, kiomid, llwrt, llok, idompar )402 397 CASE (jpnf90 ) ; CALL iom_nf90_open( clname, kiomid, llwrt, llok, idompar ) 403 CASE (jprstdimg) ; CALL iom_rstdimg_open( clname, kiomid, llwrt, llok, idompar )404 398 CASE DEFAULT 405 CALL ctl_stop( TRIM(clinfo)//' accepted IO library are only jpioipsl, jpnf90 and jprstdimg' )399 CALL ctl_stop( TRIM(clinfo)//' accepted IO library is only jpnf90 (jpioipsl option has been removed) ' ) 406 400 END SELECT 407 401 ENDIF … … 438 432 IF( iom_file(jf)%nfid > 0 ) THEN 439 433 SELECT CASE (iom_file(jf)%iolib) 440 CASE (jpioipsl ) ; CALL iom_ioipsl_close( jf )441 434 CASE (jpnf90 ) ; CALL iom_nf90_close( jf ) 442 CASE (jprstdimg) ; CALL iom_rstdimg_close( jf )443 435 CASE DEFAULT 444 CALL ctl_stop( TRIM(clinfo)//' accepted IO library are only jpioipsl, jpnf90 and jprstdimg' )436 CALL ctl_stop( TRIM(clinfo)//' accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 445 437 END SELECT 446 438 iom_file(jf)%nfid = 0 ! free the id … … 497 489 IF( iiv <= jpmax_vars ) THEN 498 490 SELECT CASE (iom_file(kiomid)%iolib) 499 CASE (jpioipsl ) ; iom_varid = iom_ioipsl_varid( kiomid, cdvar, iiv, kdimsz )500 491 CASE (jpnf90 ) ; iom_varid = iom_nf90_varid ( kiomid, cdvar, iiv, kdimsz, kndims ) 501 CASE (jprstdimg) ; iom_varid = -1 ! all variables are listed in iom_file 502 CASE DEFAULT 503 CALL ctl_stop( TRIM(clinfo)//' accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 492 CASE DEFAULT 493 CALL ctl_stop( TRIM(clinfo)//' accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 504 494 END SELECT 505 495 ELSE … … 559 549 & 'Use ncwa -a to suppress the unnecessary dimensions' ) 560 550 SELECT CASE (iom_file(kiomid)%iolib) 561 CASE (jpioipsl ) ; CALL iom_ioipsl_get( kiomid, idvar, pvar, itime )562 551 CASE (jpnf90 ) ; CALL iom_nf90_get( kiomid, idvar, pvar, itime ) 563 CASE (jprstdimg) ; CALL iom_rstdimg_get( kiomid, idvar, pvar ) 564 CASE DEFAULT 565 CALL ctl_stop( 'iom_g0d: accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 552 CASE DEFAULT 553 CALL ctl_stop( 'iom_g0d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 566 554 END SELECT 567 555 ENDIF … … 694 682 IF( luse_jattr ) THEN 695 683 SELECT CASE (iom_file(kiomid)%iolib) 696 CASE (jpioipsl, jprstdimg )697 CALL ctl_warn(trim(clinfo), 'lrowattr present and true but this only works with netcdf (jpnf90)')698 luse_jattr = .false.699 684 CASE (jpnf90 ) 700 685 ! Ok 701 686 CASE DEFAULT 702 CALL ctl_stop( TRIM(clinfo)//' accepted IO library are only jpioipsl, jpnf90 and jprstdimg' )687 CALL ctl_stop( TRIM(clinfo)//' accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 703 688 END SELECT 704 689 ENDIF … … 866 851 867 852 SELECT CASE (iom_file(kiomid)%iolib) 868 CASE (jpioipsl ) ; CALL iom_ioipsl_get( kiomid, idvar, inbdim, istart, icnt, ix1, ix2, iy1, iy2, &869 & pv_r1d, pv_r2d, pv_r3d )870 853 CASE (jpnf90 ) ; CALL iom_nf90_get( kiomid, idvar, inbdim, istart, icnt, ix1, ix2, iy1, iy2, & 871 854 & pv_r1d, pv_r2d, pv_r3d ) 872 CASE (jprstdimg) ; CALL iom_rstdimg_get( kiomid, idom, idvar, ix1, ix2, iy1, iy2, & 873 & pv_r1d, pv_r2d, pv_r3d ) 874 CASE DEFAULT 875 CALL ctl_stop( TRIM(clinfo)//' accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 855 CASE DEFAULT 856 CALL ctl_stop( TRIM(clinfo)//' accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 876 857 END SELECT 877 858 … … 956 937 IF( iom_file(kiomid)%dimsz(1,idvar) <= size(ptime) ) THEN 957 938 SELECT CASE (iom_file(kiomid)%iolib) 958 CASE (jpioipsl ) ; CALL iom_ioipsl_gettime( kiomid, idvar, ptime, cdunits, cdcalendar )959 939 CASE (jpnf90 ) ; CALL iom_nf90_gettime( kiomid, idvar, ptime, cdunits, cdcalendar ) 960 CASE (jprstdimg) ; CALL ctl_stop( TRIM(clinfo)//' case IO library == jprstdimg not coded...' ) 961 CASE DEFAULT 962 CALL ctl_stop( TRIM(clinfo)//' accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 940 CASE DEFAULT 941 CALL ctl_stop( TRIM(clinfo)//' accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 963 942 END SELECT 964 943 ELSE … … 991 970 IF( iom_file(kiomid)%nfid > 0 ) THEN 992 971 SELECT CASE (iom_file(kiomid)%iolib) 993 CASE (jpioipsl ) ; CALL ctl_stop('iom_getatt: only nf90 available')994 972 CASE (jpnf90 ) ; CALL iom_nf90_getatt( kiomid, cdatt, pvar ) 995 CASE (jprstdimg) ; CALL ctl_stop('iom_getatt: only nf90 available') 996 CASE DEFAULT 997 CALL ctl_stop( 'iom_g0d_att: accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 973 CASE DEFAULT 974 CALL ctl_stop( 'iom_g0d_att: accepted IO library is only jpnf90' ) 998 975 END SELECT 999 976 ENDIF … … 1017 994 ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 1018 995 SELECT CASE (iom_file(kiomid)%iolib) 1019 CASE (jpioipsl ) ; CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r0d = pvar )1020 996 CASE (jpnf90 ) ; CALL iom_nf90_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r0d = pvar ) 1021 CASE (jprstdimg) ; IF( kt == kwrite ) CALL iom_rstdimg_rstput( kiomid, cdvar, ivid, pvar ) 1022 CASE DEFAULT 1023 CALL ctl_stop( 'iom_rp0d: accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 997 CASE DEFAULT 998 CALL ctl_stop( 'iom_rp0d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 1024 999 END SELECT 1025 1000 ENDIF … … 1039 1014 ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 1040 1015 SELECT CASE (iom_file(kiomid)%iolib) 1041 CASE (jpioipsl ) ; CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r1d = pvar )1042 1016 CASE (jpnf90 ) ; CALL iom_nf90_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r1d = pvar ) 1043 CASE (jprstdimg) ; IF( kt == kwrite ) CALL iom_rstdimg_rstput( kiomid, cdvar, ivid, pv_r1d = pvar ) 1044 CASE DEFAULT 1045 CALL ctl_stop( 'iom_rp1d: accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 1017 CASE DEFAULT 1018 CALL ctl_stop( 'iom_rp1d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 1046 1019 END SELECT 1047 1020 ENDIF … … 1061 1034 ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 1062 1035 SELECT CASE (iom_file(kiomid)%iolib) 1063 CASE (jpioipsl ) ; CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r2d = pvar )1064 1036 CASE (jpnf90 ) ; CALL iom_nf90_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r2d = pvar ) 1065 CASE (jprstdimg) ; IF( kt == kwrite ) CALL iom_rstdimg_rstput( kiomid, cdvar, ivid, pv_r2d = pvar ) 1066 CASE DEFAULT 1067 CALL ctl_stop( 'iom_rp2d: accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 1037 CASE DEFAULT 1038 CALL ctl_stop( 'iom_rp2d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 1068 1039 END SELECT 1069 1040 ENDIF … … 1083 1054 ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 1084 1055 SELECT CASE (iom_file(kiomid)%iolib) 1085 CASE (jpioipsl ) ; CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r3d = pvar )1086 1056 CASE (jpnf90 ) ; CALL iom_nf90_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r3d = pvar ) 1087 CASE (jprstdimg) ; IF( kt == kwrite ) CALL iom_rstdimg_rstput( kiomid, cdvar, ivid, pv_r3d = pvar ) 1088 CASE DEFAULT 1089 CALL ctl_stop( 'iom_rp3d: accepted IO library are only jpioipsl and jprstdimg' ) 1057 CASE DEFAULT 1058 CALL ctl_stop( 'iom_rp3d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 1090 1059 END SELECT 1091 1060 ENDIF … … 1645 1614 idx = INDEX(clname,'@startdate@') + INDEX(clname,'@STARTDATE@') 1646 1615 DO WHILE ( idx /= 0 ) 1647 cldate = iom_sdate( fjulday - rdt tra(1)/ rday )1616 cldate = iom_sdate( fjulday - rdt / rday ) 1648 1617 clname = clname(1:idx-1)//TRIM(cldate)//clname(idx+11:LEN_TRIM(clname)) 1649 1618 idx = INDEX(clname,'@startdate@') + INDEX(clname,'@STARTDATE@') … … 1652 1621 idx = INDEX(clname,'@startdatefull@') + INDEX(clname,'@STARTDATEFULL@') 1653 1622 DO WHILE ( idx /= 0 ) 1654 cldate = iom_sdate( fjulday - rdt tra(1)/ rday, ldfull = .TRUE. )1623 cldate = iom_sdate( fjulday - rdt / rday, ldfull = .TRUE. ) 1655 1624 clname = clname(1:idx-1)//TRIM(cldate)//clname(idx+15:LEN_TRIM(clname)) 1656 1625 idx = INDEX(clname,'@startdatefull@') + INDEX(clname,'@STARTDATEFULL@') … … 1659 1628 idx = INDEX(clname,'@enddate@') + INDEX(clname,'@ENDDATE@') 1660 1629 DO WHILE ( idx /= 0 ) 1661 cldate = iom_sdate( fjulday + rdt tra(1)/ rday * REAL( nitend - nit000, wp ), ld24 = .TRUE. )1630 cldate = iom_sdate( fjulday + rdt / rday * REAL( nitend - nit000, wp ), ld24 = .TRUE. ) 1662 1631 clname = clname(1:idx-1)//TRIM(cldate)//clname(idx+9:LEN_TRIM(clname)) 1663 1632 idx = INDEX(clname,'@enddate@') + INDEX(clname,'@ENDDATE@') … … 1666 1635 idx = INDEX(clname,'@enddatefull@') + INDEX(clname,'@ENDDATEFULL@') 1667 1636 DO WHILE ( idx /= 0 ) 1668 cldate = iom_sdate( fjulday + rdt tra(1)/ rday * REAL( nitend - nit000, wp ), ld24 = .TRUE., ldfull = .TRUE. )1637 cldate = iom_sdate( fjulday + rdt / rday * REAL( nitend - nit000, wp ), ld24 = .TRUE., ldfull = .TRUE. ) 1669 1638 clname = clname(1:idx-1)//TRIM(cldate)//clname(idx+13:LEN_TRIM(clname)) 1670 1639 idx = INDEX(clname,'@enddatefull@') + INDEX(clname,'@ENDDATEFULL@') -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/IOM/iom_def.F90
r4205 r6051 28 28 INTEGER, PARAMETER, PUBLIC :: jpdom_autodta = 9 !: 29 29 30 INTEGER, PARAMETER, PUBLIC :: jpioipsl = 100 !: Use ioipsl (fliocom only) library31 30 INTEGER, PARAMETER, PUBLIC :: jpnf90 = 101 !: Use nf90 library 32 INTEGER, PARAMETER, PUBLIC :: jprstdimg = 102 !: Use restart dimgs (fortran direct acces) library 33 #if defined key_dimgout 34 INTEGER, PARAMETER, PUBLIC :: jprstlib = jprstdimg !: restarts io library 35 #else 31 36 32 INTEGER, PARAMETER, PUBLIC :: jprstlib = jpnf90 !: restarts io library 37 #endif38 33 39 34 INTEGER, PARAMETER, PUBLIC :: jp_r8 = 200 !: write REAL(8) … … 54 49 CHARACTER(LEN=240) :: name !: name of the file 55 50 INTEGER :: nfid !: identifier of the file (0 if closed) 56 INTEGER :: iolib !: library used to read the file (jpioipsl, jpnf90 or jprstdimg) 51 INTEGER :: iolib !: library used to read the file (jpnf90 or new formats, 52 !: jpioipsl option has been removed) 57 53 INTEGER :: nvars !: number of identified varibles in the file 58 54 INTEGER :: iduld !: id of the unlimited dimension -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/IOM/restart.F90
r5836 r6051 95 95 WRITE(numout,*) 96 96 SELECT CASE ( jprstlib ) 97 CASE ( jprstdimg ) ; WRITE(numout,*) &98 ' open ocean restart binary file: ',TRIM(clpath)//clname99 97 CASE DEFAULT ; WRITE(numout,*) & 100 98 ' open ocean restart NetCDF file: ',TRIM(clpath)//clname … … 126 124 !!---------------------------------------------------------------------- 127 125 128 CALL iom_rstput( kt, nitrst, numrow, 'rdt' , rdt ) ! dynamics time step 129 CALL iom_rstput( kt, nitrst, numrow, 'rdttra1', rdttra(1) ) ! surface tracer time step 126 CALL iom_rstput( kt, nitrst, numrow, 'rdt' , rdt ) ! dynamics and tracer time step 130 127 131 128 CALL iom_rstput( kt, nitrst, numrow, 'ub' , ub ) ! before fields … … 175 172 SELECT CASE ( jprstlib ) 176 173 CASE ( jpnf90 ) ; WRITE(numout,*) 'rst_read : read oce NetCDF restart file' 177 CASE ( jprstdimg ) ; WRITE(numout,*) 'rst_read : read oce binary restart file'178 174 END SELECT 179 175 IF ( snc4set%luse ) WRITE(numout,*) 'rst_read : configured with NetCDF4 support' … … 183 179 clpath = TRIM(cn_ocerst_indir) 184 180 IF( clpath(LEN_TRIM(clpath):) /= '/' ) clpath = TRIM(clpath) // '/' 185 IF ( jprstlib == jprstdimg ) THEN186 ! eventually read netcdf file (monobloc) for restarting on different number of processors187 ! if {cn_ocerst_in}.nc exists, then set jlibalt to jpnf90188 INQUIRE( FILE = TRIM(cn_ocerst_indir)//'/'//TRIM(cn_ocerst_in)//'.nc', EXIST = llok )189 IF ( llok ) THEN ; jlibalt = jpnf90 ; ELSE ; jlibalt = jprstlib ; ENDIF190 ENDIF191 181 CALL iom_open( TRIM(clpath)//cn_ocerst_in, numror, kiolib = jlibalt ) 192 182 ENDIF … … 202 192 !! ** Method : Read in restart.nc file fields which are necessary for restart 203 193 !!---------------------------------------------------------------------- 204 REAL(wp) :: zrdt , zrdttra1194 REAL(wp) :: zrdt 205 195 INTEGER :: jk 206 196 LOGICAL :: llok … … 213 203 CALL iom_get( numror, 'rdt', zrdt ) 214 204 IF( zrdt /= rdt ) neuler = 0 215 ENDIF216 IF( iom_varid( numror, 'rdttra1', ldstop = .FALSE. ) > 0 ) THEN217 CALL iom_get( numror, 'rdttra1', zrdttra1 )218 IF( zrdttra1 /= rdttra(1) ) neuler = 0219 205 ENDIF 220 206 ! -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/LBC/mppini.F90
r4679 r6051 457 457 # include "mppini_2.h90" 458 458 459 # if defined key_dimgout460 !!----------------------------------------------------------------------461 !! 'key_dimgout' NO use of NetCDF files462 !!----------------------------------------------------------------------463 SUBROUTINE mpp_init_ioipsl ! Dummy routine464 END SUBROUTINE mpp_init_ioipsl465 # else466 459 SUBROUTINE mpp_init_ioipsl 467 460 !!---------------------------------------------------------------------- … … 509 502 END SUBROUTINE mpp_init_ioipsl 510 503 511 # endif512 504 #endif 513 505 -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90
r5836 r6051 166 166 isecsbc = nsec_year + nsec1jan000 + (kit+it_offset)*NINT( rdt/REAL(nn_baro,wp) ) 167 167 ELSE ! middle of sbc time step 168 isecsbc = nsec_year + nsec1jan000 + NINT(0.5 * REAL(kn_fsbc - 1,wp) * rdt tra(1)) + it_offset * NINT(rdttra(1))168 isecsbc = nsec_year + nsec1jan000 + NINT(0.5 * REAL(kn_fsbc - 1,wp) * rdt) + it_offset * NINT(rdt) 169 169 ENDIF 170 170 imf = SIZE( sd ) … … 193 193 CALL fld_rec( kn_fsbc, sd(jf), kt_offset = it_offset, kit = kit ) ! update after record informations 194 194 195 ! if kn_fsbc*rdt trais larger than nfreqh (which is kind of odd),195 ! if kn_fsbc*rdt is larger than nfreqh (which is kind of odd), 196 196 ! it is possible that the before value is no more the good one... we have to re-read it 197 197 ! if before is not the last record of the file currently opened and after is the first record to be read … … 214 214 IF( sd(jf)%ln_tint ) THEN 215 215 216 ! if kn_fsbc*rdt trais larger than nfreqh (which is kind of odd),216 ! if kn_fsbc*rdt is larger than nfreqh (which is kind of odd), 217 217 ! it is possible that the before value is no more the good one... we have to re-read it 218 218 ! if before record is not just just before the after record... … … 245 245 ! year/month/week/day file to be not present. If the run continue further than the current 246 246 ! year/month/week/day, next year/month/week/day file must exist 247 isecend = nsec_year + nsec1jan000 + (nitend - kt) * NINT(rdt tra(1)) ! second at the end of the run247 isecend = nsec_year + nsec1jan000 + (nitend - kt) * NINT(rdt) ! second at the end of the run 248 248 llstop = isecend > sd(jf)%nrec_a(2) ! read more than 1 record of next year 249 249 ! we suppose that the date of next file is next day (should be ok even for weekly files...) … … 459 459 IF( PRESENT(kt_offset) ) it_offset = kt_offset 460 460 IF( PRESENT(kit) ) THEN ; it_offset = ( kit + it_offset ) * NINT( rdt/REAL(nn_baro,wp) ) 461 ELSE ; it_offset = it_offset * NINT( rdt tra(1))461 ELSE ; it_offset = it_offset * NINT( rdt ) 462 462 ENDIF 463 463 ! … … 536 536 ELSE ; ztmp = REAL(nsec_year ,wp) ! since 00h on Jan 1 of the current year 537 537 ENDIF 538 ztmp = ztmp + 0.5 * REAL(kn_fsbc - 1, wp) * rdt tra(1) + REAL( it_offset, wp )! centrered in the middle of sbc time step539 ztmp = ztmp + 0.01 * rdt tra(1)! avoid truncation error538 ztmp = ztmp + 0.5 * REAL(kn_fsbc - 1, wp) * rdt + REAL( it_offset, wp ) ! centrered in the middle of sbc time step 539 ztmp = ztmp + 0.01 * rdt ! avoid truncation error 540 540 IF( sdjf%ln_tint ) THEN ! time interpolation, shift by 1/2 record 541 541 ! -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90
r5836 r6051 844 844 LOGICAL :: llnewtx, llnewtau ! update wind stress components and module?? 845 845 INTEGER :: ji, jj, jn ! dummy loop indices 846 INTEGER :: isec ! number of seconds since nit000 (assuming rdt tradid not change since nit000)846 INTEGER :: isec ! number of seconds since nit000 (assuming rdt did not change since nit000) 847 847 REAL(wp) :: zcumulneg, zcumulpos ! temporary scalars 848 848 REAL(wp) :: zcoef ! temporary scalar … … 862 862 ! ! Receive all the atmos. fields (including ice information) 863 863 ! ! ======================================================= ! 864 isec = ( kt - nit000 ) * NINT( rdt tra(1) )! date of exchanges864 isec = ( kt - nit000 ) * NINT( rdt ) ! date of exchanges 865 865 DO jn = 1, jprcv ! received fields sent by the atmosphere 866 866 IF( srcv(jn)%laction ) CALL cpl_rcv( jn, isec, frcv(jn)%z3, xcplmask(:,:,1:nn_cplmodel), nrcvinfo(jn) ) … … 1713 1713 CALL wrk_alloc( jpi,jpj,jpl, ztmp3, ztmp4 ) 1714 1714 1715 isec = ( kt - nit000 ) * NINT( rdttra(1)) ! date of exchanges1715 isec = ( kt - nit000 ) * NINT( rdt ) ! date of exchanges 1716 1716 1717 1717 zfr_l(:,:) = 1.- fr_i(:,:) -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/SBC/sbcdcy.F90
r3764 r6051 90 90 91 91 ! When are we during the day (from 0 to 1) 92 zlo = ( REAL(nsec_day, wp) - 0.5_wp * rdt tra(1)) / rday93 zup = zlo + ( REAL(nn_fsbc, wp) * rdt tra(1)) / rday92 zlo = ( REAL(nsec_day, wp) - 0.5_wp * rdt ) / rday 93 zup = zlo + ( REAL(nn_fsbc, wp) * rdt ) / rday 94 94 ! 95 95 IF( nday_qsr == -1 ) THEN ! first time step only … … 189 189 END DO 190 190 ! 191 ztmp = rday / ( rdt tra(1)* REAL(nn_fsbc, wp) )191 ztmp = rday / ( rdt * REAL(nn_fsbc, wp) ) 192 192 rscal(:,:) = rscal(:,:) * ztmp 193 193 ! -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/SBC/sbcfwb.F90
r5643 r6051 129 129 ENDIF 130 130 ! ! Update fwfold if new year start 131 ikty = 365 * 86400 / rdt tra(1)!!bug use of 365 days leap year or 360d year !!!!!!!131 ikty = 365 * 86400 / rdt !!bug use of 365 days leap year or 360d year !!!!!!! 132 132 IF( MOD( kt, ikty ) == 0 ) THEN 133 133 a_fwb_b = a_fwb ! mean sea level taking into account the ice+snow -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90
r5541 r6051 373 373 ! 374 374 ! sea-ice timestep and inverse 375 rdt_ice = nn_fsbc * rdt tra(1)375 rdt_ice = nn_fsbc * rdt 376 376 r1_rdtice = 1._wp / rdt_ice 377 377 -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/SBC/sbctide.F90
r5930 r6051 48 48 !!---------------------------------------------------------------------- 49 49 50 IF( nsec_day == NINT(0.5_wp * rdt tra(1)) ) THEN ! start a new day50 IF( nsec_day == NINT(0.5_wp * rdt) ) THEN ! start a new day 51 51 ! 52 52 IF( kt == nit000 ) THEN -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/traadv.F90
r5930 r6051 96 96 ! ! set time step 97 97 IF( neuler == 0 .AND. kt == nit000 ) THEN ! at nit000 98 r2dt ra(:) = rdttra(:) ! = rdtra(restarting with Euler time stepping)98 r2dt = rdt ! = rdt (restarting with Euler time stepping) 99 99 ELSEIF( kt <= nit000 + 1) THEN ! at nit000 or nit000+1 100 r2dt ra(:) = 2._wp * rdttra(:) ! = 2 rdttra(leapfrog)100 r2dt = 2._wp * rdt ! = 2 rdt (leapfrog) 101 101 ENDIF 102 102 ! … … 135 135 CALL tra_adv_cen ( kt, nit000, 'TRA', zun, zvn, zwn , tsn, tsa, jpts, nn_cen_h, nn_cen_v ) 136 136 CASE ( np_FCT ) ! FCT scheme : 2nd / 4th order 137 CALL tra_adv_fct ( kt, nit000, 'TRA', r2dt ra, zun, zvn, zwn, tsb, tsn, tsa, jpts, nn_fct_h, nn_fct_v )137 CALL tra_adv_fct ( kt, nit000, 'TRA', r2dt, zun, zvn, zwn, tsb, tsn, tsa, jpts, nn_fct_h, nn_fct_v ) 138 138 CASE ( np_FCT_zts ) ! 2nd order FCT with vertical time-splitting 139 CALL tra_adv_fct_zts( kt, nit000, 'TRA', r2dt ra, zun, zvn, zwn, tsb, tsn, tsa, jpts , nn_fct_zts )139 CALL tra_adv_fct_zts( kt, nit000, 'TRA', r2dt, zun, zvn, zwn, tsb, tsn, tsa, jpts , nn_fct_zts ) 140 140 CASE ( np_MUS ) ! MUSCL 141 CALL tra_adv_mus ( kt, nit000, 'TRA', r2dt ra, zun, zvn, zwn, tsb, tsa, jpts , ln_mus_ups )141 CALL tra_adv_mus ( kt, nit000, 'TRA', r2dt, zun, zvn, zwn, tsb, tsa, jpts , ln_mus_ups ) 142 142 CASE ( np_UBS ) ! UBS 143 CALL tra_adv_ubs ( kt, nit000, 'TRA', r2dt ra, zun, zvn, zwn, tsb, tsn, tsa, jpts , nn_ubs_v )143 CALL tra_adv_ubs ( kt, nit000, 'TRA', r2dt, zun, zvn, zwn, tsb, tsn, tsa, jpts , nn_ubs_v ) 144 144 CASE ( np_QCK ) ! QUICKEST 145 CALL tra_adv_qck ( kt, nit000, 'TRA', r2dt ra, zun, zvn, zwn, tsb, tsn, tsa, jpts )145 CALL tra_adv_qck ( kt, nit000, 'TRA', r2dt, zun, zvn, zwn, tsb, tsn, tsa, jpts ) 146 146 ! 147 147 END SELECT -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_fct.F90
r5930 r6051 70 70 INTEGER , INTENT(in ) :: kn_fct_h ! order of the FCT scheme (=2 or 4) 71 71 INTEGER , INTENT(in ) :: kn_fct_v ! order of the FCT scheme (=2 or 4) 72 REAL(wp) , DIMENSION( jpk ), INTENT(in ) :: p2dt ! vertical profile oftracer time-step72 REAL(wp) , INTENT(in ) :: p2dt ! tracer time-step 73 73 REAL(wp), DIMENSION(jpi,jpj,jpk ), INTENT(in ) :: pun, pvn, pwn ! 3 ocean velocity components 74 74 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in ) :: ptb, ptn ! before and now tracer fields … … 76 76 ! 77 77 INTEGER :: ji, jj, jk, jn ! dummy loop indices 78 REAL(wp) :: z 2dtt, ztra ! local scalar78 REAL(wp) :: ztra ! local scalar 79 79 REAL(wp) :: zfp_ui, zfp_vj, zfp_wk, zC2t_u, zC4t_u ! - - 80 80 REAL(wp) :: zfm_ui, zfm_vj, zfm_wk, zC2t_v, zC4t_v ! - - … … 149 149 ! 150 150 DO jk = 1, jpkm1 !* trend and after field with monotonic scheme 151 z2dtt = p2dt(jk)152 151 DO jj = 2, jpjm1 153 152 DO ji = fs_2, fs_jpim1 ! vector opt. … … 159 158 !!gm why tmask added in the two following lines ??? the mask is done in tranxt ! 160 159 pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + ztra * tmask(ji,jj,jk) 161 zwi(ji,jj,jk) = ( ptb(ji,jj,jk,jn) + z2dtt * ztra ) * tmask(ji,jj,jk)160 zwi(ji,jj,jk) = ( ptb(ji,jj,jk,jn) + p2dt * ztra ) * tmask(ji,jj,jk) 162 161 END DO 163 162 END DO … … 348 347 INTEGER , INTENT(in ) :: kjpt ! number of tracers 349 348 INTEGER , INTENT(in ) :: kn_fct_zts ! number of number of vertical sub-timesteps 350 REAL(wp) , DIMENSION( jpk ), INTENT(in ) :: p2dt ! vertical profile oftracer time-step349 REAL(wp) , INTENT(in ) :: p2dt ! tracer time-step 351 350 REAL(wp), DIMENSION(jpi,jpj,jpk ), INTENT(in ) :: pun, pvn, pwn ! 3 ocean velocity components 352 351 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in ) :: ptb, ptn ! before and now tracer fields … … 354 353 ! 355 354 REAL(wp), DIMENSION( jpk ) :: zts ! length of sub-timestep for vertical advection 356 REAL(wp) , DIMENSION( jpk ):: zr_p2dt ! reciprocal of tracer timestep355 REAL(wp) :: zr_p2dt ! reciprocal of tracer timestep 357 356 INTEGER :: ji, jj, jk, jl, jn ! dummy loop indices 358 357 INTEGER :: jtb, jtn, jta ! sub timestep pointers for leap-frog/euler forward steps 359 358 INTEGER :: jtaken ! toggle for collecting appropriate fluxes from sub timesteps 360 359 REAL(wp) :: z_rzts ! Fractional length of Euler forward sub-timestep for vertical advection 361 REAL(wp) :: z 2dtt, ztra ! local scalar360 REAL(wp) :: ztra ! local scalar 362 361 REAL(wp) :: zfp_ui, zfp_vj, zfp_wk ! - - 363 362 REAL(wp) :: zfm_ui, zfm_vj, zfm_wk ! - - … … 390 389 zwi(:,:,:) = 0._wp 391 390 z_rzts = 1._wp / REAL( kn_fct_zts, wp ) 392 zr_p2dt (:) = 1._wp / p2dt(:)391 zr_p2dt = 1._wp / p2dt 393 392 ! 394 393 ! ! =========== … … 443 442 ! 444 443 DO jk = 1, jpkm1 ! total advective trend 445 z2dtt = p2dt(jk)446 444 DO jj = 2, jpjm1 447 445 DO ji = fs_2, fs_jpim1 ! vector opt. … … 452 450 ! update and guess with monotonic sheme 453 451 pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + ztra 454 zwi(ji,jj,jk) = ( ptb(ji,jj,jk,jn) + z2dtt * ztra ) * tmask(ji,jj,jk)452 zwi(ji,jj,jk) = ( ptb(ji,jj,jk,jn) + p2dt * ztra ) * tmask(ji,jj,jk) 455 453 END DO 456 454 END DO … … 508 506 IF( jl == 1 ) THEN ! Euler forward to kick things off 509 507 jtb = 1 ; jtn = 1 ; jta = 2 510 zts(:) = p2dt (:)* z_rzts508 zts(:) = p2dt * z_rzts 511 509 jtaken = MOD( kn_fct_zts + 1 , 2) ! Toggle to collect every second flux 512 510 ! ! starting at jl =1 if kn_fct_zts is odd; … … 514 512 ELSEIF( jl == 2 ) THEN ! First leapfrog step 515 513 jtb = 1 ; jtn = 2 ; jta = 3 516 zts(:) = 2._wp * p2dt (:)* z_rzts514 zts(:) = 2._wp * p2dt * z_rzts 517 515 ELSE ! Shuffle pointers for subsequent leapfrog steps 518 516 jtb = MOD(jtb,3) + 1 … … 557 555 DO jj = 2, jpjm1 558 556 DO ji = fs_2, fs_jpim1 559 zwz(ji,jj,jk) = ( zwzts(ji,jj,jk) * zr_p2dt (jk)- zwz_sav(ji,jj,jk) ) * wmask(ji,jj,jk)557 zwz(ji,jj,jk) = ( zwzts(ji,jj,jk) * zr_p2dt - zwz_sav(ji,jj,jk) ) * wmask(ji,jj,jk) 560 558 END DO 561 559 END DO … … 623 621 !! in-space based differencing for fluid 624 622 !!---------------------------------------------------------------------- 625 REAL(wp) , DIMENSION(jpk) , INTENT(in ) :: p2dt ! vertical profile oftracer time-step623 REAL(wp) , INTENT(in ) :: p2dt ! tracer time-step 626 624 REAL(wp), DIMENSION (jpi,jpj,jpk), INTENT(in ) :: pbef, paft ! before & after field 627 625 REAL(wp), DIMENSION (jpi,jpj,jpk), INTENT(inout) :: paa, pbb, pcc ! monotonic fluxes in the 3 directions … … 629 627 INTEGER :: ji, jj, jk ! dummy loop indices 630 628 INTEGER :: ikm1 ! local integer 631 REAL(wp) :: zpos, zneg, zbt, za, zb, zc, zbig, zrtrn , z2dtt! local scalars629 REAL(wp) :: zpos, zneg, zbt, za, zb, zc, zbig, zrtrn ! local scalars 632 630 REAL(wp) :: zau, zbu, zcu, zav, zbv, zcv, zup, zdo ! - - 633 631 REAL(wp), POINTER, DIMENSION(:,:,:) :: zbetup, zbetdo, zbup, zbdo … … 652 650 DO jk = 1, jpkm1 653 651 ikm1 = MAX(jk-1,1) 654 z2dtt = p2dt(jk)655 652 DO jj = 2, jpjm1 656 653 DO ji = fs_2, fs_jpim1 ! vector opt. … … 679 676 680 677 ! up & down beta terms 681 zbt = e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) / z2dtt678 zbt = e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) / p2dt 682 679 zbetup(ji,jj,jk) = ( zup - paft(ji,jj,jk) ) / ( zpos + zrtrn ) * zbt 683 680 zbetdo(ji,jj,jk) = ( paft(ji,jj,jk) - zdo ) / ( zneg + zrtrn ) * zbt -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mus.F90
r5930 r6051 73 73 INTEGER , INTENT(in ) :: kjpt ! number of tracers 74 74 LOGICAL , INTENT(in ) :: ld_msc_ups ! use upstream scheme within muscl 75 REAL(wp) , DIMENSION( jpk ), INTENT(in ) :: p2dt ! vertical profile oftracer time-step75 REAL(wp) , INTENT(in ) :: p2dt ! tracer time-step 76 76 REAL(wp), DIMENSION(jpi,jpj,jpk ), INTENT(in ) :: pun, pvn, pwn ! 3 ocean velocity components 77 77 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in ) :: ptb ! before tracer field … … 82 82 REAL(wp) :: zu, z0u, zzwx, zw ! local scalars 83 83 REAL(wp) :: zv, z0v, zzwy, z0w ! - - 84 REAL(wp) :: z dt, zalpha ! - -84 REAL(wp) :: zalpha ! - - 85 85 REAL(wp), POINTER, DIMENSION(:,:,:) :: zslpx, zslpy ! 3D workspace 86 86 REAL(wp), POINTER, DIMENSION(:,:,:) :: zwx , zwy ! - - … … 163 163 ! !-- MUSCL horizontal advective fluxes 164 164 DO jk = 1, jpkm1 ! interior values 165 zdt = p2dt(jk)166 165 DO jj = 2, jpjm1 167 166 DO ji = fs_2, fs_jpim1 ! vector opt. … … 169 168 z0u = SIGN( 0.5, pun(ji,jj,jk) ) 170 169 zalpha = 0.5 - z0u 171 zu = z0u - 0.5 * pun(ji,jj,jk) * zdt / ( e1e2u(ji,jj) * fse3u(ji,jj,jk) )170 zu = z0u - 0.5 * pun(ji,jj,jk) * p2dt / ( e1e2u(ji,jj) * fse3u(ji,jj,jk) ) 172 171 zzwx = ptb(ji+1,jj,jk,jn) + xind(ji,jj,jk) * zu * zslpx(ji+1,jj,jk) 173 172 zzwy = ptb(ji ,jj,jk,jn) + xind(ji,jj,jk) * zu * zslpx(ji ,jj,jk) … … 176 175 z0v = SIGN( 0.5, pvn(ji,jj,jk) ) 177 176 zalpha = 0.5 - z0v 178 zv = z0v - 0.5 * pvn(ji,jj,jk) * zdt / ( e1e2v(ji,jj) * fse3v(ji,jj,jk) )177 zv = z0v - 0.5 * pvn(ji,jj,jk) * p2dt / ( e1e2v(ji,jj) * fse3v(ji,jj,jk) ) 179 178 zzwx = ptb(ji,jj+1,jk,jn) + xind(ji,jj,jk) * zv * zslpy(ji,jj+1,jk) 180 179 zzwy = ptb(ji,jj ,jk,jn) + xind(ji,jj,jk) * zv * zslpy(ji,jj ,jk) … … 237 236 ! !-- vertical advective flux 238 237 DO jk = 1, jpkm1 ! interior values 239 zdt = p2dt(jk)240 238 DO jj = 2, jpjm1 241 239 DO ji = fs_2, fs_jpim1 ! vector opt. 242 240 z0w = SIGN( 0.5, pwn(ji,jj,jk+1) ) 243 241 zalpha = 0.5 + z0w 244 zw = z0w - 0.5 * pwn(ji,jj,jk+1) * zdt / ( e1e2t(ji,jj) * fse3w(ji,jj,jk+1) )242 zw = z0w - 0.5 * pwn(ji,jj,jk+1) * p2dt / ( e1e2t(ji,jj) * fse3w(ji,jj,jk+1) ) 245 243 zzwx = ptb(ji,jj,jk+1,jn) + xind(ji,jj,jk) * zw * zslpx(ji,jj,jk+1) 246 244 zzwy = ptb(ji,jj,jk ,jn) + xind(ji,jj,jk) * zw * zslpx(ji,jj,jk ) -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_qck.F90
r5930 r6051 87 87 CHARACTER(len=3) , INTENT(in ) :: cdtype ! =TRA or TRC (tracer indicator) 88 88 INTEGER , INTENT(in ) :: kjpt ! number of tracers 89 REAL(wp) , DIMENSION( jpk ), INTENT(in ) :: p2dt ! vertical profile oftracer time-step89 REAL(wp) , INTENT(in ) :: p2dt ! tracer time-step 90 90 REAL(wp), DIMENSION(jpi,jpj,jpk ), INTENT(in ) :: pun, pvn, pwn ! 3 ocean velocity components 91 91 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in ) :: ptb, ptn ! before and now tracer fields … … 125 125 CHARACTER(len=3) , INTENT(in ) :: cdtype ! =TRA or TRC (tracer indicator) 126 126 INTEGER , INTENT(in ) :: kjpt ! number of tracers 127 REAL(wp) , DIMENSION( jpk ), INTENT(in ) :: p2dt ! vertical profile oftracer time-step127 REAL(wp) , INTENT(in ) :: p2dt ! tracer time-step 128 128 REAL(wp), DIMENSION(jpi,jpj,jpk ), INTENT(in ) :: pun ! i-velocity components 129 129 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in ) :: ptb, ptn ! before and now tracer fields … … 131 131 !! 132 132 INTEGER :: ji, jj, jk, jn ! dummy loop indices 133 REAL(wp) :: ztra, zbtr, zdir, zdx, z dt, zmsk ! local scalars133 REAL(wp) :: ztra, zbtr, zdir, zdx, zmsk ! local scalars 134 134 REAL(wp), POINTER, DIMENSION(:,:,:) :: zwx, zfu, zfc, zfd 135 135 !---------------------------------------------------------------------- … … 166 166 ! 167 167 DO jk = 1, jpkm1 168 zdt = p2dt(jk)169 168 DO jj = 2, jpjm1 170 169 DO ji = fs_2, fs_jpim1 ! vector opt. 171 170 zdir = 0.5 + SIGN( 0.5, pun(ji,jj,jk) ) ! if pun > 0 : zdir = 1 otherwise zdir = 0 172 171 zdx = ( zdir * e1t(ji,jj) + ( 1. - zdir ) * e1t(ji+1,jj) ) * e2u(ji,jj) * fse3u(ji,jj,jk) 173 zwx(ji,jj,jk) = ABS( pun(ji,jj,jk) ) * zdt / zdx ! (0<zc_cfl<1 : Courant number on x-direction)172 zwx(ji,jj,jk) = ABS( pun(ji,jj,jk) ) * p2dt / zdx ! (0<zc_cfl<1 : Courant number on x-direction) 174 173 zfc(ji,jj,jk) = zdir * ptb(ji ,jj,jk,jn) + ( 1. - zdir ) * ptb(ji+1,jj,jk,jn) ! FC in the x-direction for T 175 174 zfd(ji,jj,jk) = zdir * ptb(ji+1,jj,jk,jn) + ( 1. - zdir ) * ptb(ji ,jj,jk,jn) ! FD in the x-direction for T … … 242 241 CHARACTER(len=3) , INTENT(in ) :: cdtype ! =TRA or TRC (tracer indicator) 243 242 INTEGER , INTENT(in ) :: kjpt ! number of tracers 244 REAL(wp) , DIMENSION( jpk ), INTENT(in ) :: p2dt ! vertical profile oftracer time-step243 REAL(wp) , INTENT(in ) :: p2dt ! tracer time-step 245 244 REAL(wp), DIMENSION(jpi,jpj,jpk ), INTENT(in ) :: pvn ! j-velocity components 246 245 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in ) :: ptb, ptn ! before and now tracer fields … … 248 247 !! 249 248 INTEGER :: ji, jj, jk, jn ! dummy loop indices 250 REAL(wp) :: ztra, zbtr, zdir, zdx, z dt, zmsk ! local scalars249 REAL(wp) :: ztra, zbtr, zdir, zdx, zmsk ! local scalars 251 250 REAL(wp), POINTER, DIMENSION(:,:,:) :: zwy, zfu, zfc, zfd 252 251 !---------------------------------------------------------------------- … … 289 288 ! 290 289 DO jk = 1, jpkm1 291 zdt = p2dt(jk)292 290 DO jj = 2, jpjm1 293 291 DO ji = fs_2, fs_jpim1 ! vector opt. 294 292 zdir = 0.5 + SIGN( 0.5, pvn(ji,jj,jk) ) ! if pun > 0 : zdir = 1 otherwise zdir = 0 295 293 zdx = ( zdir * e2t(ji,jj) + ( 1. - zdir ) * e2t(ji,jj+1) ) * e1v(ji,jj) * fse3v(ji,jj,jk) 296 zwy(ji,jj,jk) = ABS( pvn(ji,jj,jk) ) * zdt / zdx ! (0<zc_cfl<1 : Courant number on x-direction)294 zwy(ji,jj,jk) = ABS( pvn(ji,jj,jk) ) * p2dt / zdx ! (0<zc_cfl<1 : Courant number on x-direction) 297 295 zfc(ji,jj,jk) = zdir * ptb(ji,jj ,jk,jn) + ( 1. - zdir ) * ptb(ji,jj+1,jk,jn) ! FC in the x-direction for T 298 296 zfd(ji,jj,jk) = zdir * ptb(ji,jj+1,jk,jn) + ( 1. - zdir ) * ptb(ji,jj ,jk,jn) ! FD in the x-direction for T -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_ubs.F90
r5930 r6051 85 85 INTEGER , INTENT(in ) :: kjpt ! number of tracers 86 86 INTEGER , INTENT(in ) :: kn_ubs_v ! number of tracers 87 REAL(wp) , DIMENSION( jpk ), INTENT(in ) :: p2dt ! vertical profile oftracer time-step87 REAL(wp) , INTENT(in ) :: p2dt ! tracer time-step 88 88 REAL(wp), DIMENSION(jpi,jpj,jpk ), INTENT(in ) :: pun, pvn, pwn ! 3 ocean transport components 89 89 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in ) :: ptb, ptn ! before and now tracer fields … … 91 91 ! 92 92 INTEGER :: ji, jj, jk, jn ! dummy loop indices 93 REAL(wp) :: ztra, zbtr, zcoef , z2dtt! local scalars93 REAL(wp) :: ztra, zbtr, zcoef ! local scalars 94 94 REAL(wp) :: zfp_ui, zfm_ui, zcenut, ztak, zfp_wk, zfm_wk ! - - 95 95 REAL(wp) :: zfp_vj, zfm_vj, zcenvt, zeeu, zeev, z_hdivn ! - - … … 212 212 ! 213 213 DO jk = 1, jpkm1 !* trend and after field with monotonic scheme 214 z2dtt = p2dt(jk)215 214 DO jj = 2, jpjm1 216 215 DO ji = fs_2, fs_jpim1 ! vector opt. 217 216 ztak = - ( ztw(ji,jj,jk) - ztw(ji,jj,jk+1) ) / ( e1e2t(ji,jj) * fse3t_n(ji,jj,jk) ) 218 217 pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + ztak 219 zti(ji,jj,jk) = ( ptb(ji,jj,jk,jn) + z2dtt * ( ztak + zltu(ji,jj,jk) ) ) * tmask(ji,jj,jk)218 zti(ji,jj,jk) = ( ptb(ji,jj,jk,jn) + p2dt * ( ztak + zltu(ji,jj,jk) ) ) * tmask(ji,jj,jk) 220 219 END DO 221 220 END DO … … 293 292 !! in-space based differencing for fluid 294 293 !!---------------------------------------------------------------------- 295 REAL(wp), INTENT(in ) , DIMENSION(jpk) :: p2dt ! vertical profile oftracer time-step294 REAL(wp), INTENT(in ) :: p2dt ! tracer time-step 296 295 REAL(wp), DIMENSION (jpi,jpj,jpk) :: pbef ! before field 297 296 REAL(wp), INTENT(inout), DIMENSION (jpi,jpj,jpk) :: paft ! after field … … 300 299 INTEGER :: ji, jj, jk ! dummy loop indices 301 300 INTEGER :: ikm1 ! local integer 302 REAL(wp) :: zpos, zneg, zbt, za, zb, zc, zbig, zrtrn , z2dtt! local scalars301 REAL(wp) :: zpos, zneg, zbt, za, zb, zc, zbig, zrtrn ! local scalars 303 302 REAL(wp), POINTER, DIMENSION(:,:,:) :: zbetup, zbetdo 304 303 !!---------------------------------------------------------------------- … … 349 348 ! --------------------------------------------------- 350 349 DO jk = 1, jpkm1 351 z2dtt = p2dt(jk)352 350 DO jj = 2, jpjm1 353 351 DO ji = fs_2, fs_jpim1 ! vector opt. … … 356 354 zneg = MAX( 0., pcc(ji ,jj ,jk ) ) - MIN( 0., pcc(ji ,jj ,jk+1) ) 357 355 ! up & down beta terms 358 zbt = e1e2t(ji,jj) * fse3t(ji,jj,jk) / z2dtt356 zbt = e1e2t(ji,jj) * fse3t(ji,jj,jk) / p2dt 359 357 zbetup(ji,jj,jk) = ( zbetup(ji,jj,jk) - paft(ji,jj,jk) ) / (zpos+zrtrn) * zbt 360 358 zbetdo(ji,jj,jk) = ( paft(ji,jj,jk) - zbetdo(ji,jj,jk) ) / (zneg+zrtrn) * zbt -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso.F90
r5836 r6051 129 129 ! 130 130 ! ! set time step size (Euler/Leapfrog) 131 IF( neuler == 0 .AND. kt == nit000 ) THEN ; z2dt = rdt tra(1)! at nit000 (Euler)132 ELSE ; z2dt = 2.* rdt tra(1)! (Leapfrog)131 IF( neuler == 0 .AND. kt == nit000 ) THEN ; z2dt = rdt ! at nit000 (Euler) 132 ELSE ; z2dt = 2.* rdt ! (Leapfrog) 133 133 ENDIF 134 134 z1_2dt = 1._wp / z2dt -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_triad.F90
r5836 r6051 115 115 ! 116 116 ! ! set time step size (Euler/Leapfrog) 117 IF( neuler == 0 .AND. kt == kit000 ) THEN ; z2dt = rdt tra(1)! at nit000 (Euler)118 ELSE ; z2dt = 2.* rdt tra(1)! (Leapfrog)117 IF( neuler == 0 .AND. kt == kit000 ) THEN ; z2dt = rdt ! at nit000 (Euler) 118 ELSE ; z2dt = 2.* rdt ! (Leapfrog) 119 119 ENDIF 120 120 z1_2dt = 1._wp / z2dt -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90
r5930 r6051 119 119 120 120 ! set time step size (Euler/Leapfrog) 121 IF( neuler == 0 .AND. kt == nit000 ) THEN ; r2dt ra(:) = rdttra(:)! at nit000 (Euler)122 ELSEIF( kt <= nit000 + 1 ) THEN ; r2dt ra(:) = 2._wp* rdttra(:)! at nit000 or nit000+1 (Leapfrog)121 IF( neuler == 0 .AND. kt == nit000 ) THEN ; r2dt = rdt ! at nit000 (Euler) 122 ELSEIF( kt <= nit000 + 1 ) THEN ; r2dt = 2._wp* rdt ! at nit000 or nit000+1 (Leapfrog) 123 123 ENDIF 124 124 … … 142 142 ELSE ! Leap-Frog + Asselin filter time stepping 143 143 ! 144 IF( lk_vvl ) THEN ; CALL tra_nxt_vvl( kt, nit000, rdt tra, 'TRA', tsb, tsn, tsa, &144 IF( lk_vvl ) THEN ; CALL tra_nxt_vvl( kt, nit000, rdt, 'TRA', tsb, tsn, tsa, & 145 145 & sbc_tsc, sbc_tsc_b, jpts ) ! variable volume level (vvl) 146 ELSE ; CALL tra_nxt_fix( kt, nit000, 146 ELSE ; CALL tra_nxt_fix( kt, nit000, 'TRA', tsb, tsn, tsa, jpts ) ! fixed volume level 147 147 ENDIF 148 148 ENDIF … … 151 151 IF( l_trdtra ) THEN ! trend of the Asselin filter (tb filtered - tb)/dt 152 152 DO jk = 1, jpkm1 153 zfact = 1._wp / r2dt ra(jk)153 zfact = 1._wp / r2dt 154 154 ztrdt(:,:,jk) = ( tsb(:,:,jk,jp_tem) - ztrdt(:,:,jk) ) * zfact 155 155 ztrds(:,:,jk) = ( tsb(:,:,jk,jp_sal) - ztrds(:,:,jk) ) * zfact … … 237 237 INTEGER , INTENT(in ) :: kt ! ocean time-step index 238 238 INTEGER , INTENT(in ) :: kit000 ! first time step index 239 REAL(wp) , INTENT(in ) , DIMENSION(jpk):: p2dt ! time-step239 REAL(wp) , INTENT(in ) :: p2dt ! time-step 240 240 CHARACTER(len=3), INTENT(in ) :: cdtype ! =TRA or TRC (tracer indicator) 241 241 INTEGER , INTENT(in ) :: kjpt ! number of tracers … … 275 275 DO jn = 1, kjpt 276 276 DO jk = 1, jpkm1 277 zfact1 = atfp * p2dt (jk)277 zfact1 = atfp * p2dt 278 278 zfact2 = zfact1 / rau0 279 279 DO jj = 1, jpj -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf.F90
r5930 r6051 68 68 ! 69 69 IF( neuler == 0 .AND. kt == nit000 ) THEN ! at nit000 70 r2dt ra(:) = rdttra(:) ! = rdtra(restarting with Euler time stepping)70 r2dt = rdt ! = rdt (restarting with Euler time stepping) 71 71 ELSEIF( kt <= nit000 + 1) THEN ! at nit000 or nit000+1 72 r2dt ra(:) = 2. * rdttra(:) ! = 2 rdttra(leapfrog)72 r2dt = 2. * rdt ! = 2 rdt (leapfrog) 73 73 ENDIF 74 74 … … 80 80 81 81 SELECT CASE ( nzdf ) ! compute lateral mixing trend and add it to the general trend 82 CASE ( 0 ) ; CALL tra_zdf_exp( kt, nit000, 'TRA', r2dt ra, nn_zdfexp, tsb, tsa, jpts ) ! explicit scheme83 CASE ( 1 ) ; CALL tra_zdf_imp( kt, nit000, 'TRA', r2dt ra, tsb, tsa, jpts ) ! implicit scheme82 CASE ( 0 ) ; CALL tra_zdf_exp( kt, nit000, 'TRA', r2dt, nn_zdfexp, tsb, tsa, jpts ) ! explicit scheme 83 CASE ( 1 ) ; CALL tra_zdf_imp( kt, nit000, 'TRA', r2dt, tsb, tsa, jpts ) ! implicit scheme 84 84 END SELECT 85 85 !!gm WHY here ! and I don't like that ! … … 92 92 IF( l_trdtra ) THEN ! save the vertical diffusive trends for further diagnostics 93 93 DO jk = 1, jpkm1 94 ztrdt(:,:,jk) = ( ( tsa(:,:,jk,jp_tem) - tsb(:,:,jk,jp_tem) ) / r2dt ra(jk)) - ztrdt(:,:,jk)95 ztrds(:,:,jk) = ( ( tsa(:,:,jk,jp_sal) - tsb(:,:,jk,jp_sal) ) / r2dt ra(jk)) - ztrds(:,:,jk)94 ztrdt(:,:,jk) = ( ( tsa(:,:,jk,jp_tem) - tsb(:,:,jk,jp_tem) ) / r2dt ) - ztrdt(:,:,jk) 95 ztrds(:,:,jk) = ( ( tsa(:,:,jk,jp_sal) - tsb(:,:,jk,jp_sal) ) / r2dt ) - ztrds(:,:,jk) 96 96 END DO 97 97 !!gm this should be moved in trdtra.F90 and done on all trends -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_exp.F90
r3294 r6051 81 81 INTEGER , INTENT(in ) :: kjpt ! number of tracers 82 82 INTEGER , INTENT(in ) :: kn_zdfexp ! number of sub-time step 83 REAL(wp) , DIMENSION( jpk ), INTENT(in ) :: p2dt ! vertical profile oftracer time-step83 REAL(wp) , INTENT(in ) :: p2dt ! tracer time-step 84 84 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in ) :: ptb ! before and now tracer fields 85 85 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) :: pta ! tracer trend … … 136 136 DO ji = fs_2, fs_jpim1 ! vector opt. 137 137 ze3tr = zlavmr / fse3t_n(ji,jj,jk) 138 zwx(ji,jj,jk) = zwx(ji,jj,jk) + p2dt (jk)* ( zwy(ji,jj,jk) - zwy(ji,jj,jk+1) ) * ze3tr138 zwx(ji,jj,jk) = zwx(ji,jj,jk) + p2dt * ( zwy(ji,jj,jk) - zwy(ji,jj,jk+1) ) * ze3tr 139 139 END DO 140 140 END DO … … 150 150 DO ji = fs_2, fs_jpim1 ! vector opt. 151 151 ze3tb = fse3t_b(ji,jj,jk) / fse3t(ji,jj,jk) ! before e3t 152 ztra = zwx(ji,jj,jk) - ptb(ji,jj,jk,jn) + p2dt (jk) * pta(ji,jj,jk,jn) ! total trends * 2*rdt152 ztra = zwx(ji,jj,jk) - ptb(ji,jj,jk,jn) + p2dt * pta(ji,jj,jk,jn) ! total trends * 2*rdt 153 153 pta(ji,jj,jk,jn) = ( ze3tb * ptb(ji,jj,jk,jn) + ztra ) * tmask(ji,jj,jk) 154 154 END DO … … 159 159 DO jj = 2, jpjm1 160 160 DO ji = fs_2, fs_jpim1 ! vector opt. 161 pta(ji,jj,jk,jn) = ( zwx(ji,jj,jk) + p2dt (jk)* pta(ji,jj,jk,jn) ) * tmask(ji,jj,jk)161 pta(ji,jj,jk,jn) = ( zwx(ji,jj,jk) + p2dt * pta(ji,jj,jk,jn) ) * tmask(ji,jj,jk) 162 162 END DO 163 163 END DO -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_imp.F90
r5836 r6051 78 78 CHARACTER(len=3) , INTENT(in ) :: cdtype ! =TRA or TRC (tracer indicator) 79 79 INTEGER , INTENT(in ) :: kjpt ! number of tracers 80 REAL(wp) , DIMENSION( jpk ), INTENT(in ) :: p2dt ! vertical profile oftracer time-step80 REAL(wp) , INTENT(in ) :: p2dt ! tracer time-step 81 81 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in ) :: ptb ! before and now tracer fields 82 82 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) :: pta ! tracer trend … … 144 144 ze3ta = ( 1. - r_vvl ) + r_vvl * fse3t_a(ji,jj,jk) ! after scale factor at T-point 145 145 ze3tn = r_vvl + ( 1. - r_vvl ) * fse3t_n(ji,jj,jk) ! now scale factor at T-point 146 zwi(ji,jj,jk) = - p2dt (jk)* zwt(ji,jj,jk ) / ( ze3tn * fse3w(ji,jj,jk ) )147 zws(ji,jj,jk) = - p2dt (jk)* zwt(ji,jj,jk+1) / ( ze3tn * fse3w(ji,jj,jk+1) )146 zwi(ji,jj,jk) = - p2dt * zwt(ji,jj,jk ) / ( ze3tn * fse3w(ji,jj,jk ) ) 147 zws(ji,jj,jk) = - p2dt * zwt(ji,jj,jk+1) / ( ze3tn * fse3w(ji,jj,jk+1) ) 148 148 zwd(ji,jj,jk) = ze3ta - zwi(ji,jj,jk) - zws(ji,jj,jk) 149 149 END DO … … 192 192 ze3tb = ( 1. - r_vvl ) + r_vvl * fse3t_b(ji,jj,1) 193 193 ze3tn = ( 1. - r_vvl ) + r_vvl * fse3t(ji,jj,1) 194 pta(ji,jj,1,jn) = ze3tb * ptb(ji,jj,1,jn) + p2dt (1)* ze3tn * pta(ji,jj,1,jn)194 pta(ji,jj,1,jn) = ze3tb * ptb(ji,jj,1,jn) + p2dt * ze3tn * pta(ji,jj,1,jn) 195 195 END DO 196 196 END DO … … 200 200 ze3tb = ( 1. - r_vvl ) + r_vvl * fse3t_b(ji,jj,jk) 201 201 ze3tn = ( 1. - r_vvl ) + r_vvl * fse3t (ji,jj,jk) 202 zrhs = ze3tb * ptb(ji,jj,jk,jn) + p2dt (jk)* ze3tn * pta(ji,jj,jk,jn) ! zrhs=right hand side202 zrhs = ze3tb * ptb(ji,jj,jk,jn) + p2dt * ze3tn * pta(ji,jj,jk,jn) ! zrhs=right hand side 203 203 pta(ji,jj,jk,jn) = zrhs - zwi(ji,jj,jk) / zwt(ji,jj,jk-1) * pta(ji,jj,jk-1,jn) 204 204 END DO -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRD/trdmxl.F90
r5836 r6051 30 30 USE zdfddm ! ocean vertical physics: double diffusion 31 31 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 32 USE diadimg ! dimg direct access file format output33 32 USE trdmxl_rst ! restart for diagnosing the ML trends 34 33 ! … … 298 297 !! 299 298 !! ** Purpose : Compute and cumulate the mixed layer trends over an analysis 300 !! period, and write NetCDF (or dimg)outputs.299 !! period, and write NetCDF outputs. 301 300 !! 302 301 !! ** Method/usage : … … 349 348 REAL(wp), POINTER, DIMENSION(:,: ) :: ztmltot2, zsmltot2, ztmlres2, zsmlres2, ztmlatf2, zsmlatf2, ztmltrdm2, zsmltrdm2 350 349 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztmltrd2, zsmltrd2 ! only needed for mean diagnostics 351 #if defined key_dimgout352 INTEGER :: iyear,imon,iday353 CHARACTER(LEN=80) :: cltext, clmode354 #endif355 350 !!---------------------------------------------------------------------- 356 351 -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRD/trdmxl_rst.F90
r5341 r6051 62 62 WRITE(numout,*) 63 63 SELECT CASE ( jprstlib ) 64 CASE ( jprstdimg ) ; WRITE(numout,*) ' open ocean restart_mxl binary file: '//clname65 64 CASE DEFAULT ; WRITE(numout,*) ' open ocean restart_mxl NetCDF file: '//clname 66 65 END SELECT … … 147 146 clpath = TRIM(cn_ocerst_indir) 148 147 IF( clpath(LEN_TRIM(clpath):) /= '/' ) clpath = TRIM(clpath) // '/' 149 150 IF ( jprstlib == jprstdimg ) THEN151 ! eventually read netcdf file (monobloc) for restarting on different number of processors152 ! if {cn_trdrst_in}.nc exists, then set jlibalt to jpnf90153 INQUIRE( FILE = TRIM(clpath)//TRIM(cn_trdrst_in)//'.nc', EXIST = llok )154 IF ( llok ) THEN ; jlibalt = jpnf90155 ELSE ; jlibalt = jprstlib156 ENDIF157 ENDIF158 159 148 CALL iom_open( TRIM(clpath)//TRIM(cn_trdrst_in), inum, kiolib = jlibalt ) 160 149 -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRD/trdtra.F90
r5836 r6051 37 37 38 38 PUBLIC trd_tra ! called by all tra_... modules 39 40 REAL(wp) :: r2dt ! time-step, = 2 rdttra except at nit000 (=rdttra) if neuler=041 39 42 40 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: trdtx, trdty, trdt ! use to store the temperature trends … … 229 227 !!---------------------------------------------------------------------- 230 228 231 IF( neuler == 0 .AND. kt == nit000 ) THEN ; r2dt = rdt ! = rdt ra(restart with Euler time stepping)232 ELSEIF( kt <= nit000 + 1) THEN ; r2dt = 2. * rdt ! = 2 rdt tra(leapfrog)229 IF( neuler == 0 .AND. kt == nit000 ) THEN ; r2dt = rdt ! = rdt (restart with Euler time stepping) 230 ELSEIF( kt <= nit000 + 1) THEN ; r2dt = 2. * rdt ! = 2 rdt (leapfrog) 233 231 ENDIF 234 232 -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRD/trdvor.F90
r5836 r6051 85 85 !! 86 86 !! ** Purpose : computation of cumulated trends over analysis period 87 !! and make outputs (NetCDF or DIMGformat)87 !! and make outputs (NetCDF format) 88 88 !!---------------------------------------------------------------------- 89 89 REAL(wp), DIMENSION(:,:,:), INTENT(inout) :: putrd, pvtrd ! U and V trends … … 318 318 !! 319 319 !! ** Purpose : computation of cumulated trends over analysis period 320 !! and make outputs (NetCDF or DIMGformat)320 !! and make outputs (NetCDF format) 321 321 !!---------------------------------------------------------------------- 322 322 INTEGER , INTENT(in ) :: kt ! time step -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/SAS_SRC/daymod.F90
r5563 r6051 20 20 !! 21 21 !! we suppose that the time step is deviding the number of second of in a day 22 !! ---> MOD( rday, rdt tra(1)) == 022 !! ---> MOD( rday, rdt ) == 0 23 23 !! 24 24 !! ----------- WARNING ----------- … … 76 76 & 'You must do a restart at higher frequency (or remove this stop and recompile the code in I8)' ) 77 77 ENDIF 78 ! all calendar staff is based on the fact that MOD( rday, rdt tra(1)) == 079 IF( MOD( rday , rdttra(1)) /= 0. ) CALL ctl_stop( 'the time step must devide the number of second of in a day' )80 IF( MOD( rday , 2.) /= 0. ) CALL ctl_stop( 'the number of second of in a day must be an even number' )81 IF( MOD( rdt tra(1), 2.) /= 0. ) CALL ctl_stop( 'the time step (in second) must be an even number' )82 nsecd = NINT(rday 83 nsecd05 = NINT(0.5 * rday 84 ndt = NINT( rdt tra(1))85 ndt05 = NINT(0.5 * rdt tra(1))78 ! all calendar staff is based on the fact that MOD( rday, rdt ) == 0 79 IF( MOD( rday , rdt ) /= 0. ) CALL ctl_stop( 'the time step must devide the number of second of in a day' ) 80 IF( MOD( rday , 2. ) /= 0. ) CALL ctl_stop( 'the number of second of in a day must be an even number' ) 81 IF( MOD( rdt , 2. ) /= 0. ) CALL ctl_stop( 'the time step (in second) must be an even number' ) 82 nsecd = NINT(rday ) 83 nsecd05 = NINT(0.5 * rday ) 84 ndt = NINT( rdt ) 85 ndt05 = NINT(0.5 * rdt ) 86 86 87 87 ! ==> clem: here we read the ocean restart for the date (only if it exists) … … 224 224 nsec_week = nsec_week + ndt 225 225 nsec_day = nsec_day + ndt 226 adatrj = adatrj + rdt tra(1)/ rday227 fjulday = fjulday + rdt tra(1)/ rday226 adatrj = adatrj + rdt / rday 227 fjulday = fjulday + rdt / rday 228 228 IF( ABS(fjulday - REAL(NINT(fjulday),wp)) < zprec ) fjulday = REAL(NINT(fjulday),wp) ! avoid truncation error 229 229 IF( ABS(adatrj - REAL(NINT(adatrj ),wp)) < zprec ) adatrj = REAL(NINT(adatrj ),wp) ! avoid truncation error … … 340 340 ! parameters correspondting to nit000 - 1 (as we start the step loop with a call to day) 341 341 ndastp = ndate0 - 1 ! ndate0 read in the namelist in dom_nam, we assume that we start run at 00:00 342 adatrj = ( REAL( nit000-1, wp ) * rdt tra(1)) / rday342 adatrj = ( REAL( nit000-1, wp ) * rdt ) / rday 343 343 ! note this is wrong if time step has changed during run 344 344 ENDIF … … 346 346 ! parameters correspondting to nit000 - 1 (as we start the step loop with a call to day) 347 347 ndastp = ndate0 - 1 ! ndate0 read in the namelist in dom_nam, we assume that we start run at 00:00 348 adatrj = ( REAL( nit000-1, wp ) * rdt tra(1)) / rday348 adatrj = ( REAL( nit000-1, wp ) * rdt ) / rday 349 349 ENDIF 350 350 IF( ABS(adatrj - REAL(NINT(adatrj),wp)) < 0.1 / rday ) adatrj = REAL(NINT(adatrj),wp) ! avoid truncation error -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/SAS_SRC/diawri.F90
r5930 r6051 36 36 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 37 37 USE in_out_manager ! I/O manager 38 USE diadimg ! dimg direct access file format output39 38 USE diaar5, ONLY : lk_diaar5 40 39 USE iom … … 81 80 END FUNCTION dia_wri_alloc 82 81 83 #if defined key_dimgout84 !!----------------------------------------------------------------------85 !! 'key_dimgout' DIMG output file86 !!----------------------------------------------------------------------87 # include "diawri_dimg.h90"88 89 #else90 82 !!---------------------------------------------------------------------- 91 83 !! Default option NetCDF output file 92 84 !!---------------------------------------------------------------------- 93 # 85 #if defined key_iomput 94 86 !!---------------------------------------------------------------------- 95 87 !! 'key_iomput' use IOM library … … 140 132 INTEGER :: ierr ! error code return from allocation 141 133 INTEGER :: iimi, iima, ipk, it, itmod, ijmi, ijma ! local integers 142 REAL(wp) :: zsto, zout, zmax, zjulian , zdt! local scalars134 REAL(wp) :: zsto, zout, zmax, zjulian ! local scalars 143 135 !!---------------------------------------------------------------------- 144 136 ! … … 159 151 160 152 ! Define frequency of output and means 161 zdt = rdt162 IF( nacc == 1 ) zdt = rdtmin163 153 IF( ln_mskland ) THEN ; clop = "only(x)" ! put 1.e+20 on land (very expensive!!) 164 154 ELSE ; clop = "x" ! no use of the mask value (require less cpu time) 165 155 ENDIF 166 156 #if defined key_diainstant 167 zsto = nwrite * zdt157 zsto = nwrite * rdt 168 158 clop = "inst("//TRIM(clop)//")" 169 159 #else 170 zsto= zdt160 zsto=rdt 171 161 clop = "ave("//TRIM(clop)//")" 172 162 #endif 173 zout = nwrite * zdt174 zmax = ( nitend - nit000 + 1 ) * zdt163 zout = nwrite * rdt 164 zmax = ( nitend - nit000 + 1 ) * rdt 175 165 176 166 ! Define indices of the horizontal output zoom and vertical limit storage … … 214 204 CALL histbeg( clhstnam, jpi, glamt, jpj, gphit, & ! Horizontal grid: glamt and gphit 215 205 & iimi, iima-iimi+1, ijmi, ijma-ijmi+1, & 216 & nit000-1, zjulian, zdt, nh_T, nid_T, domain_id=nidom, snc4chunks=snc4set )206 & nit000-1, zjulian, rdt, nh_T, nid_T, domain_id=nidom, snc4chunks=snc4set ) 217 207 CALL histvert( nid_T, "deptht", "Vertical T levels", & ! Vertical grid: gdept 218 208 & "m", ipk, gdept_1d, nz_T, "down" ) … … 226 216 CALL histbeg( clhstnam, jpi, glamu, jpj, gphiu, & ! Horizontal grid: glamu and gphiu 227 217 & iimi, iima-iimi+1, ijmi, ijma-ijmi+1, & 228 & nit000-1, zjulian, zdt, nh_U, nid_U, domain_id=nidom, snc4chunks=snc4set )218 & nit000-1, zjulian, rdt, nh_U, nid_U, domain_id=nidom, snc4chunks=snc4set ) 229 219 CALL histvert( nid_U, "depthu", "Vertical U levels", & ! Vertical grid: gdept 230 220 & "m", ipk, gdept_1d, nz_U, "down" ) … … 238 228 CALL histbeg( clhstnam, jpi, glamv, jpj, gphiv, & ! Horizontal grid: glamv and gphiv 239 229 & iimi, iima-iimi+1, ijmi, ijma-ijmi+1, & 240 & nit000-1, zjulian, zdt, nh_V, nid_V, domain_id=nidom, snc4chunks=snc4set )230 & nit000-1, zjulian, rdt, nh_V, nid_V, domain_id=nidom, snc4chunks=snc4set ) 241 231 CALL histvert( nid_V, "depthv", "Vertical V levels", & ! Vertical grid : gdept 242 232 & "m", ipk, gdept_1d, nz_V, "down" ) … … 334 324 ! 335 325 END SUBROUTINE dia_wri 336 # endif337 338 326 #endif 339 327 … … 358 346 INTEGER :: id_i , nz_i, nh_i 359 347 INTEGER, DIMENSION(1) :: idex ! local workspace 360 REAL(wp) :: zsto, zout, zmax, zjulian , zdt348 REAL(wp) :: zsto, zout, zmax, zjulian 361 349 !!---------------------------------------------------------------------- 362 350 ! … … 369 357 clname = cdfile_name 370 358 IF( .NOT. Agrif_Root() ) clname = TRIM(Agrif_CFixed())//'_'//TRIM(clname) 371 zdt = rdt372 359 zsto = rdt 373 360 clop = "inst(x)" ! no use of the mask value (require less cpu time) 374 361 zout = rdt 375 zmax = ( nitend - nit000 + 1 ) * zdt362 zmax = ( nitend - nit000 + 1 ) * rdt 376 363 377 364 IF(lwp) WRITE(numout,*) … … 388 375 zjulian = zjulian - adatrj ! set calendar origin to the beginning of the experiment 389 376 CALL histbeg( clname, jpi, glamt, jpj, gphit, & 390 1, jpi, 1, jpj, nit000-1, zjulian, zdt, nh_i, id_i, domain_id=nidom, snc4chunks=snc4set ) ! Horizontal grid : glamt and gphit377 1, jpi, 1, jpj, nit000-1, zjulian, rdt, nh_i, id_i, domain_id=nidom, snc4chunks=snc4set ) ! Horizontal grid : glamt and gphit 391 378 CALL histvert( id_i, "deptht", "Vertical T levels", & ! Vertical grid : gdept 392 379 "m", jpk, gdept_1d, nz_i, "down") … … 431 418 ! ----------------- 432 419 CALL histclo( id_i ) 433 #if ! defined key_iomput && ! defined key_dimgout420 #if ! defined key_iomput 434 421 IF( ninist /= 1 ) THEN 435 422 CALL histclo( nid_T ) -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsms.F90
r5836 r6051 92 92 ! 93 93 ! ! set time step size (Euler/Leapfrog) 94 IF( ( neuler == 0 .AND. kt == nittrc000 ) .OR. ln_top_euler ) THEN ; rfact = rdttrc (1)! at nittrc00095 ELSEIF( kt <= nittrc000 + nn_dttrc ) THEN ; rfact = 2. * rdttrc (1)! at nittrc000 or nittrc000+nn_dttrc (Leapfrog)94 IF( ( neuler == 0 .AND. kt == nittrc000 ) .OR. ln_top_euler ) THEN ; rfact = rdttrc ! at nittrc000 95 ELSEIF( kt <= nittrc000 + nn_dttrc ) THEN ; rfact = 2. * rdttrc ! at nittrc000 or nittrc000+nn_dttrc (Leapfrog) 96 96 ENDIF 97 97 ! … … 102 102 xstep = rfact2 / rday ! Time step duration for biology 103 103 IF(lwp) WRITE(numout,*) 104 IF(lwp) WRITE(numout,*) ' Passive Tracer time step rfact = ', rfact, ' rdt = ', rdt tra(1)104 IF(lwp) WRITE(numout,*) ' Passive Tracer time step rfact = ', rfact, ' rdt = ', rdt 105 105 IF(lwp) write(numout,*) ' PISCES Biology time step rfact2 = ', rfact2 106 106 IF(lwp) WRITE(numout,*) -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/TOP_SRC/PISCES/SED/sedrst.F90
r5215 r6051 60 60 61 61 ALLOCATE( zdta(jpi,jpj,jpksed,jptrased), zdta1(jpi,jpj,jpksed,2), zhipor(jpoce,jpksed) ) 62 63 IF ( jprstlib == jprstdimg ) THEN64 ! eventually read netcdf file (monobloc) for restarting on different number of processors65 ! if restart_sed.nc exists, then set jlibalt to jpnf9066 INQUIRE( FILE = 'restart_sed.nc', EXIST = llok )67 IF ( llok ) THEN ; jlibalt = jpnf90 ; ELSE ; jlibalt = jprstlib ; ENDIF68 ENDIF69 62 70 63 CALL iom_open( 'restart_sed', numrsr, kiolib = jlibalt ) -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/TOP_SRC/TRP/trcadv.F90
r5836 r6051 32 32 33 33 PUBLIC trc_adv 34 PUBLIC trc_adv_alloc35 34 PUBLIC trc_adv_ini 36 35 … … 58 57 INTEGER :: nadv ! chosen advection scheme 59 58 ! 60 REAL(wp) , ALLOCATABLE, SAVE, DIMENSION(:) :: r2dt ! vertical profile time-step, = 2 rdttra61 ! ! except at nitrrc000 (=rdt tra) if neuler=059 REAL(wp) :: r2dttrc ! vertical profile time-step, = 2 rdt 60 ! ! except at nitrrc000 (=rdt) if neuler=0 62 61 63 62 !! * Substitutions … … 70 69 !!---------------------------------------------------------------------- 71 70 CONTAINS 72 73 INTEGER FUNCTION trc_adv_alloc()74 !!----------------------------------------------------------------------75 !! *** ROUTINE trc_adv_alloc ***76 !!----------------------------------------------------------------------77 !78 ALLOCATE( r2dt(jpk), STAT=trc_adv_alloc )79 !80 IF( trc_adv_alloc /= 0 ) CALL ctl_warn('trc_adv_alloc : failed to allocate array.')81 !82 END FUNCTION trc_adv_alloc83 84 71 85 72 SUBROUTINE trc_adv( kt ) … … 103 90 ! 104 91 IF( ( neuler == 0 .AND. kt == nittrc000 ) .OR. ln_top_euler ) THEN ! at nittrc000 105 r2dt (:) = rdttrc(:)! = rdttrc (use or restarting with Euler time stepping)92 r2dttrc = rdttrc ! = rdttrc (use or restarting with Euler time stepping) 106 93 ELSEIF( kt <= nittrc000 + nn_dttrc ) THEN ! at nittrc000 or nittrc000+1 107 r2dt (:) = 2. * rdttrc(:)! = 2 rdttrc (leapfrog)94 r2dttrc = 2. * rdttrc ! = 2 rdttrc (leapfrog) 108 95 ENDIF 109 96 ! !== effective transport ==! … … 134 121 CALL tra_adv_cen ( kt, nittrc000,'TRC', zun, zvn, zwn , trn, tra, jptra, nn_cen_h, nn_cen_v ) 135 122 CASE ( np_FCT ) ! FCT : 2nd / 4th order 136 CALL tra_adv_fct ( kt, nittrc000,'TRC', r2dt , zun, zvn, zwn, trb, trn, tra, jptra, nn_fct_h, nn_fct_v )123 CALL tra_adv_fct ( kt, nittrc000,'TRC', r2dttrc, zun, zvn, zwn, trb, trn, tra, jptra, nn_fct_h, nn_fct_v ) 137 124 CASE ( np_FCT_zts ) ! 2nd order FCT with vertical time-splitting 138 CALL tra_adv_fct_zts( kt, nittrc000,'TRC', r2dt , zun, zvn, zwn, trb, trn, tra, jptra , nn_fct_zts )125 CALL tra_adv_fct_zts( kt, nittrc000,'TRC', r2dttrc, zun, zvn, zwn, trb, trn, tra, jptra , nn_fct_zts ) 139 126 CASE ( np_MUS ) ! MUSCL 140 CALL tra_adv_mus ( kt, nittrc000,'TRC', r2dt , zun, zvn, zwn, trb, tra, jptra , ln_mus_ups )127 CALL tra_adv_mus ( kt, nittrc000,'TRC', r2dttrc, zun, zvn, zwn, trb, tra, jptra , ln_mus_ups ) 141 128 CASE ( np_UBS ) ! UBS 142 CALL tra_adv_ubs ( kt, nittrc000,'TRC', r2dt , zun, zvn, zwn, trb, trn, tra, jptra , nn_ubs_v )129 CALL tra_adv_ubs ( kt, nittrc000,'TRC', r2dttrc, zun, zvn, zwn, trb, trn, tra, jptra , nn_ubs_v ) 143 130 CASE ( np_QCK ) ! QUICKEST 144 CALL tra_adv_qck ( kt, nittrc000,'TRC', r2dt , zun, zvn, zwn, trb, trn, tra, jptra )131 CALL tra_adv_qck ( kt, nittrc000,'TRC', r2dttrc, zun, zvn, zwn, trb, trn, tra, jptra ) 145 132 ! 146 133 END SELECT -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/TOP_SRC/TRP/trcnxt.F90
r5656 r6051 41 41 42 42 PUBLIC trc_nxt ! routine called by step.F90 43 PUBLIC trc_nxt_alloc ! routine called by nemogcm.F9044 43 45 REAL(wp) , ALLOCATABLE, SAVE, DIMENSION(:) :: r2dt44 REAL(wp) :: r2dttrc 46 45 47 46 !!---------------------------------------------------------------------- … … 51 50 !!---------------------------------------------------------------------- 52 51 CONTAINS 53 54 INTEGER FUNCTION trc_nxt_alloc()55 !!----------------------------------------------------------------------56 !! *** ROUTINE trc_nxt_alloc ***57 !!----------------------------------------------------------------------58 ALLOCATE( r2dt(jpk), STAT=trc_nxt_alloc )59 !60 IF( trc_nxt_alloc /= 0 ) CALL ctl_warn('trc_nxt_alloc : failed to allocate array')61 !62 END FUNCTION trc_nxt_alloc63 64 52 65 53 SUBROUTINE trc_nxt( kt ) … … 117 105 118 106 ! set time step size (Euler/Leapfrog) 119 IF( neuler == 0 .AND. kt == nittrc000 ) THEN ; r2dt (:) = rdttrc(:)! at nittrc000 (Euler)120 ELSEIF( kt <= nittrc000 + nn_dttrc ) THEN ; r2dt (:) = 2.* rdttrc(:)! at nit000 or nit000+1 (Leapfrog)107 IF( neuler == 0 .AND. kt == nittrc000 ) THEN ; r2dttrc = rdttrc ! at nittrc000 (Euler) 108 ELSEIF( kt <= nittrc000 + nn_dttrc ) THEN ; r2dttrc = 2.* rdttrc ! at nit000 or nit000+1 (Leapfrog) 121 109 ENDIF 122 110 … … 147 135 DO jn = 1, jptra 148 136 DO jk = 1, jpkm1 149 zfact = 1.e0 / r2dt (jk)137 zfact = 1.e0 / r2dttrc 150 138 ztrdt(:,:,jk,jn) = ( trb(:,:,jk,jn) - ztrdt(:,:,jk,jn) ) * zfact 151 139 CALL trd_tra( kt, 'TRC', jn, jptra_atf, ztrdt ) -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/TOP_SRC/TRP/trcsbc.F90
r5836 r6051 27 27 28 28 PUBLIC trc_sbc ! routine called by step.F90 29 30 REAL(wp) :: r2dt ! time-step at surface31 29 32 30 !! * Substitutions … … 88 86 89 87 IF( ln_top_euler) THEN 90 r2dt = rdttrc (1)! = rdttrc (use Euler time stepping)88 r2dt = rdttrc ! = rdttrc (use Euler time stepping) 91 89 ELSE 92 90 IF( neuler == 0 .AND. kt == nittrc000 ) THEN ! at nittrc000 93 r2dt = rdttrc (1)! = rdttrc (restarting with Euler time stepping)91 r2dt = rdttrc ! = rdttrc (restarting with Euler time stepping) 94 92 ELSEIF( kt <= nittrc000 + nn_dttrc ) THEN ! at nittrc000 or nittrc000+1 95 r2dt = 2. * rdttrc (1)! = 2 rdttrc (leapfrog)93 r2dt = 2. * rdttrc ! = 2 rdttrc (leapfrog) 96 94 ENDIF 97 95 ENDIF -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/TOP_SRC/TRP/trczdf.F90
r5836 r6051 28 28 PUBLIC trc_zdf ! called by step.F90 29 29 PUBLIC trc_zdf_ini ! called by nemogcm.F90 30 PUBLIC trc_zdf_alloc ! called by nemogcm.F9031 30 32 31 ! !!** Vertical diffusion (nam_trczdf) ** … … 36 35 INTEGER :: nzdf = 0 ! type vertical diffusion algorithm used 37 36 ! ! defined from ln_zdf... namlist logicals) 38 REAL(wp) , ALLOCATABLE, SAVE, DIMENSION(:) :: r2dt ! vertical profile time-step, = 2 rdttra39 ! ! except at nittrc000 (=rdttra) if neuler=037 REAL(wp) :: r2dttrc ! vertical profile time-step, = 2 rdt 38 ! ! except at nittrc000 (=rdt) if neuler=0 40 39 41 40 !! * Substitutions … … 49 48 !!---------------------------------------------------------------------- 50 49 CONTAINS 51 52 INTEGER FUNCTION trc_zdf_alloc()53 !!----------------------------------------------------------------------54 !! *** ROUTINE trc_zdf_alloc ***55 !!----------------------------------------------------------------------56 ALLOCATE( r2dt(jpk) , STAT=trc_zdf_alloc )57 !58 IF( trc_zdf_alloc /= 0 ) CALL ctl_warn('trc_zdf_alloc : failed to allocate array.')59 !60 END FUNCTION trc_zdf_alloc61 62 50 63 51 SUBROUTINE trc_zdf( kt ) … … 77 65 ! 78 66 IF( ( neuler == 0 .AND. kt == nittrc000 ) .OR. ln_top_euler ) THEN ! at nittrc000 79 r2dt (:) = rdttrc(:)! = rdttrc (use or restarting with Euler time stepping)67 r2dttrc = rdttrc ! = rdttrc (use or restarting with Euler time stepping) 80 68 ELSEIF( kt <= nittrc000 + nn_dttrc ) THEN ! at nittrc000 or nittrc000+1 81 r2dt (:) = 2. * rdttrc(:)! = 2 rdttrc (leapfrog)69 r2dttrc = 2. * rdttrc ! = 2 rdttrc (leapfrog) 82 70 ENDIF 83 71 … … 88 76 89 77 SELECT CASE ( nzdf ) ! compute lateral mixing trend and add it to the general trend 90 CASE ( 0 ) ; CALL tra_zdf_exp( kt, nittrc000, 'TRC', r2dt , nn_trczdf_exp, trb, tra, jptra ) ! explicit scheme91 CASE ( 1 ) ; CALL tra_zdf_imp( kt, nittrc000, 'TRC', r2dt , trb, tra, jptra ) ! implicit scheme78 CASE ( 0 ) ; CALL tra_zdf_exp( kt, nittrc000, 'TRC', r2dttrc, nn_trczdf_exp, trb, tra, jptra ) ! explicit scheme 79 CASE ( 1 ) ; CALL tra_zdf_imp( kt, nittrc000, 'TRC', r2dttrc, trb, tra, jptra ) ! implicit scheme 92 80 END SELECT 93 81 … … 95 83 DO jn = 1, jptra 96 84 DO jk = 1, jpkm1 97 ztrtrd(:,:,jk,jn) = ( ( tra(:,:,jk,jn) - trb(:,:,jk,jn) ) / r2dt (jk)) - ztrtrd(:,:,jk,jn)85 ztrtrd(:,:,jk,jn) = ( ( tra(:,:,jk,jn) - trb(:,:,jk,jn) ) / r2dttrc ) - ztrtrd(:,:,jk,jn) 98 86 END DO 99 87 CALL trd_tra( kt, 'TRC', jn, jptra_zdf, ztrtrd(:,:,:,jn) ) -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/TOP_SRC/TRP/trdmxl_trc.F90
r5836 r6051 330 330 !! 331 331 !! ** Purpose : Compute and cumulate the mixed layer trends over an analysis 332 !! period, and write NetCDF (or dimg)outputs.332 !! period, and write NetCDF outputs. 333 333 !! 334 334 !! ** Method/usage : … … 390 390 ! 391 391 CHARACTER (LEN=10) :: clvar 392 #if defined key_dimgout393 INTEGER :: iyear,imon,iday394 CHARACTER(LEN=80) :: cltext, clmode395 #endif396 392 !!---------------------------------------------------------------------- 397 393 … … 774 770 ! ====================================================================== 775 771 776 ! IV.1 Code for dimg mpp output 777 ! ----------------------------- 778 779 # if defined key_dimgout 780 STOP 'Not implemented' 781 # else 782 783 ! IV.2 Code for IOIPSL/NetCDF output 772 ! IV.1 Code for IOIPSL/NetCDF output 784 773 ! ---------------------------------- 785 774 … … 865 854 icount = 1 866 855 867 # endif /* key_dimgout */868 869 856 IF( MOD( itmod, nn_trd_trc ) == 0 ) THEN 870 857 ! … … 896 883 !! 897 884 !! ** Purpose : Compute and cumulate the mixed layer biological trends over an analysis 898 !! period, and write NetCDF (or dimg)outputs.885 !! period, and write NetCDF outputs. 899 886 !! 900 887 !! ** Method/usage : … … 943 930 LOGICAL :: llwarn = .TRUE., lldebug = .TRUE. 944 931 REAL(wp) :: zfn, zfn2 945 #if defined key_dimgout946 INTEGER :: iyear,imon,iday947 CHARACTER(LEN=80) :: cltext, clmode948 #endif949 932 !!---------------------------------------------------------------------- 950 933 ! ... Warnings … … 1055 1038 ! ====================================================================== 1056 1039 1057 ! IV.1 Code for dimg mpp output 1058 ! ----------------------------- 1059 1060 # if defined key_dimgout 1061 STOP 'Not implemented' 1062 # else 1063 1064 ! IV.2 Code for IOIPSL/NetCDF output 1040 ! IV.1 Code for IOIPSL/NetCDF output 1065 1041 ! ---------------------------------- 1066 1042 … … 1107 1083 1108 1084 1109 # endif /* key_dimgout */1110 1085 1111 1086 IF( MOD( itmod, nn_trd_trc ) == 0 ) THEN … … 1258 1233 ! ====================================================================== 1259 1234 1260 #if defined key_dimgout1261 ???1262 #else1263 1235 ! clmxl = legend root for netCDF output 1264 1236 IF( nn_ctls_trc == 0 ) THEN ! control surface = mixed-layer with density criterion … … 1403 1375 #endif 1404 1376 1405 #endif /* key_dimgout */1406 1377 END SUBROUTINE trd_mxl_trc_init 1407 1378 -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/TOP_SRC/TRP/trdmxl_trc_rst.F90
r5341 r6051 147 147 clpath = TRIM(cn_trcrst_indir) 148 148 IF( clpath(LEN_TRIM(clpath):) /= '/' ) clpath = TRIM(clpath) // '/' 149 150 IF ( jprstlib == jprstdimg ) THEN151 ! eventually read netcdf file (monobloc) for restarting on different number of processors152 ! if {cn_trdrst_trc_in}.nc exists, then set jlibalt to jpnf90153 INQUIRE( FILE = TRIM(clpath)//TRIM(cn_trdrst_trc_in)//'.nc', EXIST = llok )154 IF ( llok ) THEN ; jlibalt = jpnf90 ; ELSE ; jlibalt = jprstlib ; ENDIF155 ENDIF156 157 149 CALL iom_open( TRIM(clpath)//TRIM(cn_trdrst_trc_in), inum, kiolib = jlibalt ) 158 150 -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/TOP_SRC/trc.F90
r5836 r6051 64 64 CHARACTER(len = 80) , PUBLIC :: cn_trcrst_out !: suffix of pass. tracer restart name (output) 65 65 CHARACTER(len = 256), PUBLIC :: cn_trcrst_outdir !: restart output directory 66 REAL(wp) , PUBLIC , ALLOCATABLE, SAVE, DIMENSION(:) :: rdttrc !: vertical profile ofpassive tracer time step66 REAL(wp) , PUBLIC :: rdttrc !: passive tracer time step 67 67 LOGICAL , PUBLIC :: ln_top_euler !: boolean term for euler integration 68 68 LOGICAL , PUBLIC :: ln_trcdta !: Read inputs data from files … … 201 201 & gtrui(jpi,jpj,jptra) , gtrvi(jpi,jpj,jptra) , & 202 202 & sbc_trc_b(jpi,jpj,jptra), sbc_trc(jpi,jpj,jptra) , & 203 & cvol(jpi,jpj,jpk) , rdttrc(jpk) , trai(jptra), &203 & cvol(jpi,jpj,jpk) , trai(jptra) , & 204 204 & ctrcnm(jptra) , ctrcln(jptra) , ctrcun(jptra) , & 205 205 & ln_trc_ini(jptra) , ln_trc_wri(jptra) , qsr_mean(jpi,jpj) , STAT = trc_alloc ) -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/TOP_SRC/trcdia.F90
r5836 r6051 106 106 CHARACTER (len=20) :: cltra, cltrau 107 107 CHARACTER (len=80) :: cltral 108 REAL(wp) :: zsto, zout , zdt108 REAL(wp) :: zsto, zout 109 109 INTEGER :: iimi, iima, ijmi, ijma, ipk, it, itmod, iiter 110 110 !!---------------------------------------------------------------------- … … 118 118 119 119 ! Define frequency of output and means 120 zdt = rdt121 120 IF( ln_mskland ) THEN ; clop = "only(x)" ! put 1.e+20 on land (very expensive!!) 122 121 ELSE ; clop = "x" ! no use of the mask value (require less cpu time) … … 126 125 clop = "inst("//TRIM(clop)//")" 127 126 # else 128 zsto = zdt127 zsto = rdt 129 128 clop = "ave("//TRIM(clop)//")" 130 129 # endif 131 zout = nn_writetrc * zdt130 zout = nn_writetrc * rdt 132 131 133 132 ! Define indices of the horizontal output zoom and vertical limit storage … … 182 181 CALL histbeg( clhstnam, jpi, glamt, jpj, gphit, & 183 182 & iimi, iima-iimi+1, ijmi, ijma-ijmi+1, & 184 & iiter, zjulian, zdt, nhorit5, nit5 , domain_id=nidom, snc4chunks=snc4set)183 & iiter, zjulian, rdt, nhorit5, nit5 , domain_id=nidom, snc4chunks=snc4set) 185 184 186 185 ! Vertical grid for tracer : gdept … … 250 249 INTEGER :: jl 251 250 INTEGER :: iimi, iima, ijmi, ijma, ipk, it, itmod, iiter 252 REAL(wp) :: zsto, zout , zdt251 REAL(wp) :: zsto, zout 253 252 !!---------------------------------------------------------------------- 254 253 … … 261 260 ! 262 261 ! Define frequency of output and means 263 zdt = rdt264 262 IF( ln_mskland ) THEN ; clop = "only(x)" ! put 1.e+20 on land (very expensive!!) 265 263 ELSE ; clop = "x" ! no use of the mask value (require less cpu time) 266 264 ENDIF 267 265 # if defined key_diainstant 268 zsto = nn_writedia * zdt266 zsto = nn_writedia * rdt 269 267 clop = "inst("//TRIM(clop)//")" 270 268 # else 271 zsto = zdt269 zsto = rdt 272 270 clop = "ave("//TRIM(clop)//")" 273 271 # endif 274 zout = nn_writedia * zdt272 zout = nn_writedia * rdt 275 273 276 274 ! Define indices of the horizontal output zoom and vertical limit storage … … 302 300 CALL histbeg( clhstnam, jpi, glamt, jpj, gphit, & 303 301 & iimi, iima-iimi+1, ijmi, ijma-ijmi+1, & 304 & iiter, zjulian, zdt, nhoritd, nitd , domain_id=nidom, snc4chunks=snc4set )302 & iiter, zjulian, rdt, nhoritd, nitd , domain_id=nidom, snc4chunks=snc4set ) 305 303 306 304 ! Vertical grid for 2d and 3d arrays … … 387 385 INTEGER :: ji, jj, jk, jl 388 386 INTEGER :: iimi, iima, ijmi, ijma, ipk, it, itmod, iiter 389 REAL(wp) :: zsto, zout , zdt387 REAL(wp) :: zsto, zout 390 388 !!---------------------------------------------------------------------- 391 389 … … 398 396 399 397 ! Define frequency of output and means 400 zdt = rdt401 398 IF( ln_mskland ) THEN ; clop = "only(x)" ! put 1.e+20 on land (very expensive!!) 402 399 ELSE ; clop = "x" ! no use of the mask value (require less cpu time) 403 400 ENDIF 404 401 # if defined key_diainstant 405 zsto = nn_writebio * zdt402 zsto = nn_writebio * rdt 406 403 clop = "inst("//TRIM(clop)//")" 407 404 # else 408 zsto = zdt405 zsto = rdt 409 406 clop = "ave("//TRIM(clop)//")" 410 407 # endif 411 zout = nn_writebio * zdt408 zout = nn_writebio * rdt 412 409 413 410 ! Define indices of the horizontal output zoom and vertical limit storage … … 435 432 CALL histbeg( clhstnam, jpi, glamt, jpj, gphit, & 436 433 & iimi, iima-iimi+1, ijmi, ijma-ijmi+1, & 437 & iiter, zjulian, zdt, nhoritb, nitb , domain_id=nidom, snc4chunks=snc4set )434 & iiter, zjulian, rdt, nhoritb, nitb , domain_id=nidom, snc4chunks=snc4set ) 438 435 ! Vertical grid for biological trends 439 436 CALL histvert(nitb, 'deptht', 'Vertical T levels', 'm', ipk, gdept_1d, ndepitb) -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/TOP_SRC/trcini.F90
r5836 r6051 253 253 !! ** Purpose : Allocate all the dynamic arrays of the OPA modules 254 254 !!---------------------------------------------------------------------- 255 USE trcadv , ONLY: trc_adv_alloc ! TOP-related alloc routines...256 255 USE trc , ONLY: trc_alloc 257 USE trcnxt , ONLY: trc_nxt_alloc258 USE trczdf , ONLY: trc_zdf_alloc259 256 USE trdtrc_oce , ONLY: trd_trc_oce_alloc 260 257 #if defined key_trdmxl_trc … … 265 262 !!---------------------------------------------------------------------- 266 263 ! 267 ierr = trc_adv_alloc() ! Start of TOP-related alloc routines... 268 ierr = ierr + trc_alloc () 269 ierr = ierr + trc_nxt_alloc() 270 ierr = ierr + trc_zdf_alloc() 264 ierr = trc_alloc() 271 265 ierr = ierr + trd_trc_oce_alloc() 272 266 #if defined key_trdmxl_trc -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/TOP_SRC/trcnam.F90
r5836 r6051 98 98 99 99 100 rdttrc (:) = rdttra(:) * FLOAT( nn_dttrc ) ! vertical profile ofpassive tracer time-step100 rdttrc = rdt * FLOAT( nn_dttrc ) ! passive tracer time-step 101 101 102 102 IF(lwp) THEN ! control print 103 103 WRITE(numout,*) 104 WRITE(numout,*) ' Passive Tracer time step rdttrc = ', rdttrc (1)104 WRITE(numout,*) ' Passive Tracer time step rdttrc = ', rdttrc 105 105 WRITE(numout,*) 106 106 ENDIF -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/TOP_SRC/trcrst.F90
r5836 r6051 131 131 !!---------------------------------------------------------------------- 132 132 ! 133 CALL iom_rstput( kt, nitrst, numrtw, 'rdttrc1', rdttrc (1) ) ! surfacepassive tracer time step133 CALL iom_rstput( kt, nitrst, numrtw, 'rdttrc1', rdttrc ) ! passive tracer time step 134 134 ! prognostic variables 135 135 ! -------------------- … … 199 199 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~' 200 200 201 IF ( jprstlib == jprstdimg ) THEN202 ! eventually read netcdf file (monobloc) for restarting on different number of processors203 ! if {cn_trcrst_in}.nc exists, then set jlibalt to jpnf90204 INQUIRE( FILE = TRIM(cn_trcrst_indir)//'/'//TRIM(cn_trcrst_in)//'.nc', EXIST = llok )205 IF ( llok ) THEN ; jlibalt = jpnf90 ; ELSE ; jlibalt = jprstlib ; ENDIF206 ENDIF207 208 201 IF( ln_rsttr ) THEN 209 202 CALL iom_open( TRIM(cn_trcrst_indir)//'/'//cn_trcrst_in, numrtr, kiolib = jlibalt ) … … 235 228 ELSE 236 229 ndastp = ndate0 - 1 ! ndate0 read in the namelist in dom_nam 237 adatrj = ( REAL( nittrc000-1, wp ) * rdt tra(1)) / rday230 adatrj = ( REAL( nittrc000-1, wp ) * rdt ) / rday 238 231 ! note this is wrong if time step has changed during run 239 232 ENDIF -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/TOOLS/NESTING/src/agrif_create_restart.f90
r2455 r6051 411 411 ENDIF 412 412 ! 413 CASE('nfice','nfbulk','kt','ndastp','adatrj','rdt' ,'rdttra1')413 CASE('nfice','nfbulk','kt','ndastp','adatrj','rdt') 414 414 IF(.NOT. dimg ) THEN 415 415 WRITE(*,*) 'copy ',TRIM(Ncdf_varname(i)) … … 417 417 CALL Read_Ncdf_var(TRIM(Ncdf_varname(i)),TRIM(restart_file),tabtemp0dreal) 418 418 SELECT CASE (TRIM(Ncdf_varname(i))) 419 CASE('rdt' ,'rdttra1')419 CASE('rdt') 420 420 tabtemp0dreal = tabtemp0dreal/rhot 421 421 CASE('kt') -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/TOOLS/OBSTOOLS/src/in_out_manager.F90
r3000 r6051 37 37 INTEGER :: nn_write = 10 !: model standard output frequency 38 38 INTEGER :: nn_stock = 10 !: restart file frequency 39 LOGICAL :: ln_dimgnnn = .FALSE. !: type of dimgout. (F): 1 file for all proc40 !: (T): 1 file per proc41 39 LOGICAL :: ln_mskland = .FALSE. !: mask land points in NetCDF outputs (costly: + ~15%) 42 40 LOGICAL :: ln_clobber = .FALSE. !: clobber (overwrite) an existing file -
branches/2015/dev_CMCC_merge_2015/NEMOGCM/TOOLS/SIREN/cfg/variable.cfg
r5617 r6051 43 43 kt | | | | | | 44 44 rdt | | | | | | 45 rdttra1 | | | | | |46 45 utau_b | | XY | U | | |surface_downward_eastward_stress 47 46 vtau_b | | XY | V | | |surface_downward_northward_stress
Note: See TracChangeset
for help on using the changeset viewer.