- Timestamp:
- 2015-12-15T10:46:14+01:00 (8 years ago)
- Location:
- branches/2015/dev_CMCC_merge_2015/NEMOGCM/NEMO/OPA_SRC/DOM
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
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
Note: See TracChangeset
for help on using the changeset viewer.