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