New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 6108 – NEMO

Changeset 6108


Ignore:
Timestamp:
2015-12-17T19:21:15+01:00 (8 years ago)
Author:
lovato
Message:

dev_merge_2015 : Merge dev_CMCC_merge_2015

Location:
branches/2015/dev_merge_2015/NEMOGCM
Files:
3 added
9 deleted
85 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_merge_2015/NEMOGCM/ARCH/CMCC/arch-ifort_athena.fcm

    r5656 r6108  
    1717 
    1818 
    19 %NCDF_INC -I$NETCDF/include 
    20 %NCDF_LIB -L$NETCDF/lib -lnetcdf -lnetcdff 
     19%NCDF_INC -I${NETCDF}/include 
     20%NCDF_LIB -L${NETCDF}/lib -lnetcdf -lnetcdff 
    2121%CPP                 cpp 
    2222%FC mpiifort 
  • branches/2015/dev_merge_2015/NEMOGCM/ARCH/CMCC/arch-ifort_athena_xios.fcm

    r5656 r6108  
    3434 
    3535# 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_parallel 
     36# 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 
    3737 
    3838# 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 
    4042 
    41 %NCDF_INC            -I$NETCDF/include -I$PNETCDF/include 
    42 %NCDF_LIB            -L$NETCDF/lib -lnetcdff -lnetcdf -L$PNETCDF/lib -lpnetcdf 
    43 %HDF5_INC            -I$PHDF5/include 
    44 %HDF5_LIB            -L$PHDF5/lib -lhdf5_hl -lhdf5 
    45 %XIOS_INC            -I$XIOS/inc 
    46 %XIOS_LIB            -L$XIOS/lib -lxios 
     43%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 
    4749%CPP                 cpp 
    4850%FC                  mpiifort 
    49 %FCFLAGS             -r8 -O3 -xHost -fp-model source -traceback 
     51%FCFLAGS             -r8 -O3 -xHost -fp-model source -traceback ${CFLAGS}  
    5052%FFLAGS              %FCFLAGS 
    5153%LD                  mpiifort 
    5254%FPPFLAGS            -P -C -traditional 
    53 %LDFLAGS             -lstdc++ -lz -lgpfs -lcurl 
     55%LDFLAGS             -lstdc++ -lz -lgpfs -lcurl  ${LDFLAGS} 
    5456%AR                  ar  
    5557%ARFLAGS             -r 
  • branches/2015/dev_merge_2015/NEMOGCM/CONFIG/AMM12/EXP00/namelist_cfg

    r6071 r6108  
    4949!----------------------------------------------------------------------- 
    5050   rn_rdt      =   600.    !  time step for the dynamics (and tracer if nn_acc=0) 
    51    rn_rdtmin   =   600.          !  minimum time step on tracers (used if nn_acc=1) 
    52    rn_rdtmax   =   600.          !  maximum time step on tracers (used if nn_acc=1) 
    53    rn_rdth     =   600.          !  depth variation of tracer time step  (used if nn_acc=1) 
    5451   ppglam0     =  999999.0             !  longitude of first raw and column T-point (jphgr_msh = 1) 
    5552   ppgphi0     =  999999.0             ! latitude  of first raw and column T-point (jphgr_msh = 1) 
  • branches/2015/dev_merge_2015/NEMOGCM/CONFIG/C1D_PAPA/EXP00/namelist_cfg

    r6060 r6108  
    4242   rn_bathy    = 4198.     !  value of the bathymetry. if (=0) bottom flat at jpkm1 
    4343   nn_msh      =    0      !  create (=1) a mesh file or not (=0) 
    44    rn_rdt      =  360.     !  time step for the dynamics (and tracer if nn_acc=0) 
    45    rn_rdtmin   =  360.     !  minimum time step on tracers (used if nn_acc=1) 
    46    rn_rdtmax   =  360.     !  maximum time step on tracers (used if nn_acc=1) 
     44   rn_rdt      =  360.     !  time step for the dynamics  
    4745   jphgr_msh   =       1                 !  type of horizontal mesh 
    4846   ppglam0     =    -150.0               !  longitude of first raw and column T-point (jphgr_msh = 1) 
     
    341339!----------------------------------------------------------------------- 
    342340/ 
    343 !----------------------------------------------------------------------- 
    344 &namdyn_nept  !   Neptune effect (simplified: lateral and vertical diffusions removed) 
    345 !----------------------------------------------------------------------- 
    346    ln_neptramp       = .false.  ! ramp down Neptune velocity in shallow water 
    347 / 
  • branches/2015/dev_merge_2015/NEMOGCM/CONFIG/GYRE/EXP00/namelist_cfg

    r6060 r6108  
    4343!----------------------------------------------------------------------- 
    4444   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  
    4846   jphgr_msh   =       5                 !  type of horizontal mesh 
    4947   ppglam0     =       0.0               !  longitude of first raw and column T-point (jphgr_msh = 1) 
  • branches/2015/dev_merge_2015/NEMOGCM/CONFIG/GYRE_BFM/EXP00/namelist_cfg

    r6060 r6108  
    4646!----------------------------------------------------------------------- 
    4747   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  
    5149   jphgr_msh   =       5                 !  type of horizontal mesh 
    5250   ppglam0     =       0.0               !  longitude of first raw and column T-point (jphgr_msh = 1) 
  • branches/2015/dev_merge_2015/NEMOGCM/CONFIG/GYRE_PISCES/EXP00/namelist_cfg

    r6060 r6108  
    3636!----------------------------------------------------------------------- 
    3737   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  
    4139   jphgr_msh   =       5                 !  type of horizontal mesh 
    4240   ppglam0     =       0.0               !  longitude of first raw and column T-point (jphgr_msh = 1) 
  • branches/2015/dev_merge_2015/NEMOGCM/CONFIG/GYRE_XIOS/EXP00/namelist_cfg

    r6060 r6108  
    4040!----------------------------------------------------------------------- 
    4141   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") 
    4544   jphgr_msh   =       5                 !  type of horizontal mesh 
    4645   ppglam0     =       0.0               !  longitude of first raw and column T-point (jphgr_msh = 1) 
  • branches/2015/dev_merge_2015/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/1_namelist_cfg

    r6073 r6108  
    5454   ppacr2      =  999999.              ! 
    5555   rn_rdt      = 2880.     !  time step for the dynamics (and tracer if nn_acc=0) 
    56    rn_rdtmin   = 14400.          !  minimum time step on tracers (used if nn_acc=1) 
    57    rn_rdtmax   = 14400.          !  maximum time step on tracers (used if nn_acc=1) 
    5856/ 
    5957!----------------------------------------------------------------------- 
     
    269267/ 
    270268!----------------------------------------------------------------------- 
    271 &namdyn_nept  !   Neptune effect (simplified: lateral and vertical diffusions removed) 
    272 !----------------------------------------------------------------------- 
    273 / 
    274 !----------------------------------------------------------------------- 
    275269&namobs       !  observation usage                                      ('key_diaobs') 
    276270!----------------------------------------------------------------------- 
  • branches/2015/dev_merge_2015/NEMOGCM/CONFIG/ORCA2_LIM3/EXP00/1_namelist_cfg

    r6060 r6108  
    5252   ppacr2      =  999999.              ! 
    5353   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) 
    5654/ 
    5755!----------------------------------------------------------------------- 
     
    268266/ 
    269267!----------------------------------------------------------------------- 
    270 &namdyn_nept  !   Neptune effect (simplified: lateral and vertical diffusions removed) 
    271 !----------------------------------------------------------------------- 
    272 / 
    273 !----------------------------------------------------------------------- 
    274268&namobs       !  observation usage                                      ('key_diaobs') 
    275269!----------------------------------------------------------------------- 
  • branches/2015/dev_merge_2015/NEMOGCM/CONFIG/ORCA2_LIM_CFC_C14b/EXP00/1_namelist_cfg

    r6071 r6108  
    8686   rn_rdt      = 2880.     !  time step for the dynamics (and tracer if nn_acc=0) 
    8787   rn_atfp     =    0.1    !  asselin time filter parameter 
    88    nn_acc      =    0      !  acceleration of convergence : =1      used, rdt < rdttra(k) 
    89                                  !                          =0, not used, rdt = rdttra 
    90    rn_rdtmin   = 14400.          !  minimum time step on tracers (used if nn_acc=1) 
    91    rn_rdtmax   = 14400.          !  maximum time step on tracers (used if nn_acc=1) 
    92    rn_rdth     =  800.           !  depth variation of tracer time step  (used if nn_acc=1) 
    9388/ 
    9489!----------------------------------------------------------------------- 
  • branches/2015/dev_merge_2015/NEMOGCM/CONFIG/ORCA2_LIM_CFC_C14b/EXP00/namelist_cfg

    r6060 r6108  
    354354!----------------------------------------------------------------------- 
    355355/ 
    356 !----------------------------------------------------------------------- 
    357 &namdyn_nept  !   Neptune effect (simplified: lateral and vertical diffusions removed) 
    358 !----------------------------------------------------------------------- 
    359 / 
  • branches/2015/dev_merge_2015/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist_cfg

    r6060 r6108  
    3434!----------------------------------------------------------------------- 
    3535   nn_msh      =    1      !  create (=1) a mesh file or not (=0) 
    36    rn_rdt      = 21600.    !  time step for the dynamics (and tracer if nn_acc=0) 
    37    rn_rdtmin   = 21600.          !  minimum time step on tracers (used if nn_acc=1) 
    38    rn_rdtmax   = 21600.          !  maximum time step on tracers (used if nn_acc=1) 
     36   rn_rdt      = 21600.    !  time step for the dynamics  
    3937   jphgr_msh   =       0               !  type of horizontal mesh 
    4038   ppglam0     =  999999.0             !  longitude of first raw and column T-point (jphgr_msh = 1) 
  • branches/2015/dev_merge_2015/NEMOGCM/CONFIG/SHARED/namelist_ref

    r6073 r6108  
    3434   nn_leapy    =       0   !  Leap year calendar (1) or not (0) 
    3535   ln_rstart   = .false.   !  start from rest (F) or from a restart file (T) 
    36       nn_euler    =    1         !  = 0 : start with forward time step if ln_rstart=T 
    37       nn_rstctl   =    0         !  restart control ==> activated only if ln_rstart=T 
    38                                  !    = 0 nn_date0 read in namelist ; nn_it000 : read in namelist 
    39                                  !    = 1 nn_date0 read in namelist ; nn_it000 : check consistancy between namelist and restart 
    40                                  !    = 2 nn_date0 read in restart  ; nn_it000 : check consistancy between namelist and restart 
    41       cn_ocerst_in  = "restart"  !  suffix of ocean restart name (input) 
    42       cn_ocerst_indir = "."      !  directory from which to read input ocean restarts 
    43       cn_ocerst_out = "restart"  !  suffix of ocean restart name (output) 
    44       cn_ocerst_outdir = "."     !  directory in which to write output ocean restarts 
     36   nn_euler    =    1      !  = 0 : start with forward time step if ln_rstart=T 
     37   nn_rstctl   =    0      !  restart control ==> activated only if ln_rstart=T 
     38                           !    = 0 nn_date0 read in namelist ; nn_it000 : read in namelist 
     39                           !    = 1 nn_date0 read in namelist ; nn_it000 : check consistancy between namelist and restart 
     40                           !    = 2 nn_date0 read in restart  ; nn_it000 : check consistancy between namelist and restart 
     41   cn_ocerst_in  = "restart"  !  suffix of ocean restart name (input) 
     42   cn_ocerst_indir = "."      !  directory from which to read input ocean restarts 
     43   cn_ocerst_out = "restart"  !  suffix of ocean restart name (output) 
     44   cn_ocerst_outdir = "."     !  directory in which to write output ocean restarts 
    4545   ln_iscpl    = .false.   !  cavity evolution forcing or coupling to ice sheet model 
    4646   nn_istate   =       0   !  output the initial state (1) or not (0) 
     
    4949   nn_stocklist = 0,0,0,0,0,0,0,0,0,0 ! List of timesteps when a restart file is to be written 
    5050   nn_write    =    5475   !  frequency of write in the output file   (modulo referenced to nn_it000) 
    51    ln_dimgnnn  = .false.   !  DIMG file format: 1 file for all processors (F) or by processor (T) 
    5251   ln_mskland  = .false.   !  mask land points in NetCDF outputs (costly: + ~15%) 
    5352   ln_cfmeta   = .false.   !  output additional data to netCDF files required for compliance with the CF metadata standard 
     
    140139   rn_rdt      = 5760.     !  time step for the dynamics (and tracer if nn_acc=0) 
    141140   rn_atfp     =    0.1    !  asselin time filter parameter 
    142    nn_acc      =    0      !  acceleration of convergence : =1      used, rdt < rdttra(k) 
    143                                  !                          =0, not used, rdt = rdttra 
    144    rn_rdtmin   = 28800.          !  minimum time step on tracers (used if nn_acc=1) 
    145    rn_rdtmax   = 28800.          !  maximum time step on tracers (used if nn_acc=1) 
    146    rn_rdth     =  800.           !  depth variation of tracer time step  (used if nn_acc=1) 
    147141   ln_crs      = .false.      !  Logical switch for coarsening module 
    148142   jphgr_msh   =       0               !  type of horizontal mesh 
     
    276270                     ! Misc. options of sbc :  
    277271   ln_traqsr   = .true.    !  Light penetration in the ocean            (T => fill namtra_qsr ) 
    278       ln_dm2dc = .false.      !  daily mean to diurnal cycle on short wave 
     272   ln_dm2dc    = .false.   !  daily mean to diurnal cycle on short wave 
    279273   ln_rnf      = .true.    !  runoffs                                   (T => fill namsbc_rnf) 
    280274   ln_ssr      = .true.    !  Sea Surface Restoring on T and/or S       (T => fill namsbc_ssr) 
     
    672666!----------------------------------------------------------------------- 
    673667   filtide          = 'bdydta/amm12_bdytide_'   !  file name root of tidal forcing files 
    674    ln_bdytide_2ddta = .false.   ! 
    675    ln_bdytide_conj  = .false.   !  
     668   ln_bdytide_2ddta = .false.                   ! 
     669   ln_bdytide_conj  = .false.                   !  
    676670/ 
    677671!!====================================================================== 
     
    977971   rn_wtmix    =  10.0     !  vertical eddy viscosity coeff [m2/s] in the mixed-layer 
    978972   rn_wvmix    =  10.0     !  vertical eddy diffusion coeff [m2/s] in the mixed-layer 
    979    ln_mldw     = .true.    !  Flag to use or not the mized layer depth param. 
     973   ln_mldw     = .true.    !  Flag to use or not the mixed layer depth param. 
    980974/ 
    981975!----------------------------------------------------------------------- 
     
    12571251/ 
    12581252!----------------------------------------------------------------------- 
    1259 &namdyn_nept  !   Neptune effect (simplified: lateral and vertical diffusions removed) 
    1260 !----------------------------------------------------------------------- 
    1261    ! Suggested lengthscale values are those of Eby & Holloway (1994) for a coarse model 
    1262    ln_neptsimp       = .false.  ! yes/no use simplified neptune 
    1263  
    1264    ln_smooth_neptvel = .false.  ! yes/no smooth zunep, zvnep 
    1265    rn_tslse          =  1.2e4   ! value of lengthscale L at the equator 
    1266    rn_tslsp          =  3.0e3   ! value of lengthscale L at the pole 
    1267    ! Specify whether to ramp down the Neptune velocity in shallow 
    1268    ! water, and if so the depth range controlling such ramping down 
    1269    ln_neptramp       = .true.   ! ramp down Neptune velocity in shallow water 
    1270    rn_htrmin         =  100.0   ! min. depth of transition range 
    1271    rn_htrmax         =  200.0   ! max. depth of transition range 
    1272 / 
    1273 !----------------------------------------------------------------------- 
    1274 &namdiu !   Cool skin and warm layer modesl 
     1253&namdiu !   Cool skin and warm layer models 
    12751254!----------------------------------------------------------------------- 
    12761255   ln_diurnal = .false. 
  • branches/2015/dev_merge_2015/NEMOGCM/CONFIG/SHARED/namelist_top_ref

    r5836 r6108  
    123123&namtrc_bc 
    124124! 
    125    cn_dir        =  './'      !  root directory for the location of the data files 
     125   cn_dir_sbc        =  './'      !  root directory for the location of SURFACE data files 
     126   cn_dir_cbc        =  './'      !  root directory for the location of COASTAL data files 
     127   cn_dir_obc        =  './'      !  root directory for the location of OPEN data files 
    126128/ 
     129!---------------------------------------------------------------------- 
     130!namtrc_bdy       !   Setup of tracer boundary conditions 
     131!----------------------------------------------------------------------- 
     132$namtrc_bdy 
     133   cn_trc_dflt     =  'neumann'    !  OBC applied by default to all tracers 
     134   cn_trc          =  'none'       !  Boundary conditions appled to the active tracers (see namtrc) 
     135 
     136   nn_trcdmp_bdy   = 0     !  Use damping timescales defined in nambdy of namelist 
     137                           !  = 0 NO damping of tracers at open boudaries 
     138                           !  = 1 Only for tracers forced with external data 
     139                           !  = 2 Damping applied to all tracers 
     140/ 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/LIM_SRC_2/iceini_2.F90

    r5385 r6108  
    8383      CALL ice_run_2                   ! read in namelist some run parameters 
    8484      !           
    85       rdt_ice = nn_fsbc * rdttra(1)    ! sea-ice time step 
     85      rdt_ice = nn_fsbc * rdt           ! sea-ice time step 
    8686      numit   = nit000 - 1 
    8787      ! 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/LIM_SRC_2/limrst_2.F90

    r5341 r6108  
    7171               WRITE(numout,*) 
    7272               SELECT CASE ( jprstlib ) 
    73                CASE ( jprstdimg ) 
    74                   WRITE(numout,*) '             open ice restart binary file: ',TRIM(clpath)//clname 
    7573               CASE DEFAULT 
    7674                  WRITE(numout,*) '             open ice restart NetCDF file: ',TRIM(clpath)//clname 
     
    192190      ENDIF 
    193191 
    194       IF ( jprstlib == jprstdimg ) THEN 
    195         ! eventually read netcdf file (monobloc)  for restarting on different number of processors 
    196         ! if {cn_icerst_in}.nc exists, then set jlibalt to jpnf90 
    197         INQUIRE( FILE = TRIM(cn_icerst_indir)//'/'//TRIM(cn_icerst_in)//'.nc', EXIST = llok ) 
    198         IF ( llok ) THEN ; jlibalt = jpnf90  ; ELSE ; jlibalt = jprstlib ; ENDIF 
    199       ENDIF 
    200  
    201192      CALL iom_open ( TRIM(cn_icerst_indir)//'/'//TRIM(cn_icerst_in), numrir, kiolib = jlibalt ) 
    202193 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/LIM_SRC_2/limwri_2.F90

    r4696 r6108  
    8585 
    8686#if ! defined key_iomput 
    87 # if defined key_dimgout 
    88    !!---------------------------------------------------------------------- 
    89    !!   'key_dimgout'                                    Direct Access file 
    90    !!---------------------------------------------------------------------- 
    91 # include "limwri_dimg_2.h90" 
    92 # else 
    9387   SUBROUTINE lim_wri_2( kt ) 
    9488      !!------------------------------------------------------------------- 
     
    215209      ! 
    216210   END SUBROUTINE lim_wri_2 
    217       
    218 #endif      
    219211 
    220212   SUBROUTINE lim_wri_init_2 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/LIM_SRC_3/limrst.F90

    r5341 r6108  
    7777               WRITE(numout,*) 
    7878               SELECT CASE ( jprstlib ) 
    79                CASE ( jprstdimg ) 
    80                   WRITE(numout,*) '             open ice restart binary file: ',TRIM(clpath)//clname 
    8179               CASE DEFAULT 
    8280                  WRITE(numout,*) '             open ice restart NetCDF file: ',TRIM(clpath)//clname 
     
    331329      ENDIF 
    332330 
    333       IF ( jprstlib == jprstdimg ) THEN 
    334         ! eventually read netcdf file (monobloc)  for restarting on different number of processors 
    335         ! if {cn_icerst_in}.nc exists, then set jlibalt to jpnf90 
    336         INQUIRE( FILE = TRIM(cn_icerst_indir)//'/'//TRIM(cn_icerst_in)//'.nc', EXIST = llok ) 
    337         IF ( llok ) THEN ; jlibalt = jpnf90  ; ELSE ; jlibalt = jprstlib ; ENDIF 
    338       ENDIF 
    339  
    340331      CALL iom_open ( TRIM(cn_icerst_indir)//'/'//cn_icerst_in, numrir, kiolib = jprstlib ) 
    341332 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90

    r5517 r6108  
    4141CONTAINS 
    4242 
    43 #if defined key_dimgout 
    44 # include "limwri_dimg.h90" 
    45 #else 
    4643 
    4744   SUBROUTINE lim_wri( kindic ) 
     
    298295       
    299296   END SUBROUTINE lim_wri 
    300 #endif 
    301297 
    302298  
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OFF_SRC/domrea.F90

    r6095 r6108  
    116116         &             nn_no   , cn_exp    , cn_ocerst_in, cn_ocerst_out, ln_rstart , nn_rstctl,             & 
    117117         &             nn_it000, nn_itend  , nn_date0    , nn_time0, nn_leapy     , nn_istate , nn_stock ,   & 
    118          &             nn_write, ln_iscpl, ln_dimgnnn, ln_mskland  , ln_cfmeta    , ln_clobber, nn_chunksz, nn_euler 
    119       NAMELIST/namdom/ nn_bathy , rn_bathy, rn_e3zps_min, rn_e3zps_rat, nn_msh    , rn_hmin, rn_isfhmin,  & 
    120          &             nn_acc   , rn_atfp     , rn_rdt      , rn_rdtmin ,            & 
    121          &             rn_rdtmax, rn_rdth     , nn_baro     , nn_closea , ln_crs, & 
    122          &             jphgr_msh, & 
     118         &             nn_write, ln_iscpl  , ln_mskland  , ln_cfmeta    , ln_clobber, nn_chunksz, nn_euler 
     119      NAMELIST/namdom/ nn_bathy , rn_bathy , rn_e3zps_min, rn_e3zps_rat , nn_msh    , rn_hmin   , rn_isfhmin,& 
     120         &             rn_atfp  , rn_rdt   , nn_baro     , nn_closea    , ln_crs    , jphgr_msh,             & 
    123121         &             ppglam0, ppgphi0, ppe1_deg, ppe2_deg, ppe1_m, ppe2_m, & 
    124122         &             ppsur, ppa0, ppa1, ppkth, ppacr, ppdzmin, pphmax, ldbletanh, & 
     
    154152         WRITE(numout,*) '      frequency of restart file       nn_stock   = ', nn_stock 
    155153         WRITE(numout,*) '      frequency of output file        nn_write   = ', nn_write 
    156          WRITE(numout,*) '      multi file dimgout              ln_dimgnnn = ', ln_dimgnnn 
    157154         WRITE(numout,*) '      mask land points                ln_mskland = ', ln_mskland 
    158155         WRITE(numout,*) '      additional CF standard metadata ln_cfmeta  = ', ln_cfmeta 
     
    186183      ! parameters correspondting to nit000 - 1 (as we start the step loop with a call to day) 
    187184      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 ) * rdttra(1) ) / rday 
     185      adatrj = ( REAL( nit000-1, wp ) * rdt ) / rday 
    189186 
    190187#if defined key_agrif 
     
    231228         WRITE(numout,*) '      asselin time filter parameter        rn_atfp   = ', rn_atfp 
    232229         WRITE(numout,*) '      time-splitting: nb of sub time-step  nn_baro   = ', nn_baro 
    233          WRITE(numout,*) '      acceleration of converge             nn_acc    = ', nn_acc 
    234          WRITE(numout,*) '        nn_acc=1: surface tracer rdt       rn_rdtmin = ', rn_rdtmin 
    235          WRITE(numout,*) '                  bottom  tracer rdt       rdtmax    = ', rn_rdtmax 
    236          WRITE(numout,*) '                  depth of transition      rn_rdth   = ', rn_rdth 
    237230         WRITE(numout,*) '      suppression of closed seas (=0)      nn_closea = ', nn_closea 
    238231         WRITE(numout,*) '      type of horizontal mesh jphgr_msh           = ', jphgr_msh 
     
    260253      e3zps_rat = rn_e3zps_rat 
    261254      nmsh      = nn_msh 
    262       nacc      = nn_acc 
    263255      atfp      = rn_atfp 
    264256      rdt       = rn_rdt 
    265       rdtmin    = rn_rdtmin 
    266       rdtmax    = rn_rdtmin 
    267       rdth      = rn_rdth 
    268  
    269257#if defined key_netcdf4 
    270258      !                             ! NetCDF 4 case   ("key_netcdf4" defined) 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90

    r6069 r6108  
    215215      ENDIF 
    216216 
    217       IF ( nacc /= 0 ) & 
    218          & CALL ctl_stop( ' nacc /= 0 and key_asminc :',  & 
    219          &                ' Assimilation increments have only been implemented', & 
    220          &                ' for synchronous time stepping' ) 
    221217 
    222218      IF ( ( ln_asmdin ).AND.( ln_asmiau ) )   & 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/BDY/bdy_oce.F90

    r5836 r6108  
    7070      REAL(wp), POINTER, DIMENSION(:,:) ::   ht_i   !: Now ice  thickness climatology 
    7171      REAL(wp), POINTER, DIMENSION(:,:) ::   ht_s   !: now snow thickness 
     72#endif 
     73#if defined key_top 
     74      CHARACTER(LEN=20)                   :: cn_obc  !: type of boundary condition to apply 
     75      REAL(wp)                            :: rn_fac  !: multiplicative scaling factor 
     76      REAL(wp), POINTER, DIMENSION(:,:)   :: trc     !: now field of the tracer 
     77      LOGICAL                             :: dmp     !: obc damping term 
    7278#endif 
    7379   END TYPE OBC_DATA 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/BDY/bdytides.F90

    r6069 r6108  
    321321      ENDIF 
    322322 
    323       IF ( (nsec_day == NINT(0.5_wp * rdttra(1)) .OR. kt==nit000) .AND. zflag==1 ) THEN 
     323      IF ( (nsec_day == NINT(0.5_wp * rdt) .OR. kt==nit000) .AND. zflag==1 ) THEN 
    324324        ! 
    325         kt_tide = kt - (nsec_day - 0.5_wp * rdttra(1))/rdttra(1) 
     325        kt_tide = kt - (nsec_day - 0.5_wp * rdt)/rdt 
    326326        ! 
    327327        IF(lwp) THEN 
     
    376376   END SUBROUTINE bdytide_update 
    377377 
    378  
    379378   SUBROUTINE bdy_dta_tides( kt, kit, time_offset ) 
    380379      !!---------------------------------------------------------------------- 
     
    437436            ! We refresh nodal factors every day below 
    438437            ! This should be done somewhere else 
    439             IF ( ( nsec_day == NINT(0.5_wp * rdttra(1)) .OR. kt==nit000 ) .AND. lk_first_btstp ) THEN 
    440                ! 
    441                kt_tide = kt - (nsec_day - 0.5_wp * rdttra(1))/rdttra(1) 
     438            IF ( ( nsec_day == NINT(0.5_wp * rdt) .OR. kt==nit000 ) .AND. lk_first_btstp ) THEN 
     439               ! 
     440               kt_tide = kt - (nsec_day - 0.5_wp * rdt)/rdt 
    442441               ! 
    443442               IF(lwp) THEN 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/C1D/domc1d.F90

    r6060 r6108  
    5959      !! 
    6060      NAMELIST/namdom/ nn_bathy, rn_bathy , rn_e3zps_min, rn_e3zps_rat, nn_msh, rn_hmin,   & 
    61          &             nn_acc   , rn_atfp     , rn_rdt      , rn_rdtmin ,                  & 
    62          &             rn_rdtmax, rn_rdth     , nn_closea , ln_crs,    & 
    63          &             jphgr_msh, & 
     61         &             rn_atfp     , rn_rdt      ,nn_closea , ln_crs,  jphgr_msh, & 
    6462         &             ppglam0, ppgphi0, ppe1_deg, ppe2_deg, ppe1_m, ppe2_m, & 
    6563         &             ppsur, ppa0, ppa1, ppkth, ppacr, ppdzmin, pphmax, ldbletanh, & 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/CRS/crsfld.F90

    r6060 r6108  
    5050      !!      2. At time of output, rescale [1] by dimension and time 
    5151      !!         to yield the spatial and temporal average. 
    52       !!  See. diawri_dimg.h90, sbcmod.F90 
     52      !!  See. sbcmod.F90 
    5353      !! 
    5454      !! ** Method  :   
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/DIA/dia25h.F90

    r6069 r6108  
    189189 
    190190      LOGICAL ::   ll_print = .FALSE.    ! =T print and flush numout 
    191       REAL(wp)                         ::   zsto, zout, zmax, zjulian, zdt, zmdi  ! temporary reals 
     191      REAL(wp)                         ::   zsto, zout, zmax, zjulian, zmdi       ! temporary reals 
    192192      INTEGER                          ::   i_steps                               ! no of timesteps per hour 
    193193      REAL(wp), DIMENSION(jpi,jpj    ) ::   zw2d, un_dm, vn_dm                    ! temporary workspace 
     
    201201      ! ----------------- 
    202202      ! Define frequency of summing to create 25 h mean 
    203       zdt = rdt 
    204       IF( nacc == 1 ) zdt = rdtmin 
    205  
    206       IF( MOD( 3600,INT(zdt) ) == 0 ) THEN 
    207          i_steps = 3600/INT(zdt) 
     203      IF( MOD( 3600,INT(rdt) ) == 0 ) THEN 
     204         i_steps = 3600/INT(rdt) 
    208205      ELSE 
    209206         CALL ctl_stop('STOP', 'dia_wri_tide: timestep must give MOD(3600,rdt) = 0 otherwise no hourly values are possible') 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/DIA/diafwb.F90

    r6069 r6108  
    114114          
    115115         ! Conversion in m3 
    116          a_fwf    = a_fwf * rdttra(1) * 1.e-3  
     116         a_fwf    = a_fwf * rdt * 1.e-3  
    117117          
    118118         ! fwf correction to bring back the mean ssh to zero 
     
    402402         WRITE(inum,*) 
    403403         WRITE(inum,*)    'Net freshwater budget ' 
    404          WRITE(inum,9010) '  fwf    = ',a_fwf,   ' m3 =', a_fwf   /(FLOAT(nitend-nit000+1)*rdttra(1)) * 1.e-6,' Sv' 
     404         WRITE(inum,9010) '  fwf    = ',a_fwf,   ' m3 =', a_fwf   /(FLOAT(nitend-nit000+1)*rdt) * 1.e-6,' Sv' 
    405405         WRITE(inum,*) 
    406406         WRITE(inum,9010) '  zarea =',zarea 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/DIA/diaharm.F90

    r6069 r6108  
    2121   USE ioipsl          ! NetCDF IPSL library 
    2222   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    23    USE diadimg         ! To write dimg 
    2423   USE timing          ! preformance summary 
    2524   USE wrk_nemo        ! working arrays 
     
    384383      !!---------------------------------------------------------------------- 
    385384 
    386 #if defined key_dimgout 
    387       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 #endif 
    391  
    392385      IF(lwp) WRITE(numout,*) '  ' 
    393386      IF(lwp) WRITE(numout,*) 'dia_wri_harm : Write harmonic analysis results' 
    394 #if defined key_dimgout 
    395       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 #endif 
    399387      IF(lwp) WRITE(numout,*) '  ' 
    400388 
     
    402390      !///////////// 
    403391      ! 
    404 #if defined key_dimgout 
    405       cltext='Elevation amplitude and phase' 
    406       CALL dia_wri_dimg(TRIM(cdfile_name_T), TRIM(cltext), out_eta, 2*nb_ana, '2') 
    407 #else 
    408392      DO jh = 1, nb_ana 
    409393      CALL iom_put( TRIM(tname(jh))//'x', out_eta(:,:,jh) ) 
    410394      CALL iom_put( TRIM(tname(jh))//'y', out_eta(:,:,nb_ana+jh) ) 
    411395      END DO 
    412 #endif 
    413396 
    414397      ! B) ubar 
    415398      !///////// 
    416399      ! 
    417 #if defined key_dimgout 
    418       cltext='ubar amplitude and phase' 
    419       CALL dia_wri_dimg(TRIM(cdfile_name_U), TRIM(cltext), out_u, 2*nb_ana, '2') 
    420 #else 
    421400      DO jh = 1, nb_ana 
    422401      CALL iom_put( TRIM(tname(jh))//'x_u', out_u(:,:,jh) ) 
    423402      CALL iom_put( TRIM(tname(jh))//'y_u', out_u(:,:,nb_ana+jh) ) 
    424403      END DO 
    425 #endif 
    426404 
    427405      ! C) vbar 
    428406      !///////// 
    429407      ! 
    430 #if defined key_dimgout 
    431       cltext='vbar amplitude and phase' 
    432       CALL dia_wri_dimg(TRIM(cdfile_name_V), TRIM(cltext), out_v, 2*nb_ana, '2') 
    433 #else 
    434408      DO jh = 1, nb_ana 
    435409         CALL iom_put( TRIM(tname(jh))//'x_v', out_v(:,:,jh       ) ) 
    436410         CALL iom_put( TRIM(tname(jh))//'y_v', out_v(:,:,jh+nb_ana) ) 
    437411      END DO 
    438 #endif 
    439412      ! 
    440413   END SUBROUTINE dia_wri_harm 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/DIA/dianam.F90

    r2528 r6108  
    7272 
    7373      IF( llfsec .OR. kfreq < 0 ) THEN   ;   inbsec = kfreq                       ! output frequency already in seconds 
    74       ELSE                               ;   inbsec = kfreq * NINT( rdttra(1) )   ! from time-step to seconds 
     74      ELSE                               ;   inbsec = kfreq * NINT( rdt )   ! from time-step to seconds 
    7575      ENDIF 
    7676      iddss = NINT( rday          )                                         ! number of seconds in 1 day 
     
    116116      ! date of the beginning and the end of the run 
    117117 
    118       zdrun = rdttra(1) / rday * REAL( nitend - nit000, wp )                ! length of the run in days 
    119       zjul  = fjulday - rdttra(1) / rday 
     118      zdrun = rdt / rday * REAL( nitend - nit000, wp )                ! length of the run in days 
     119      zjul  = fjulday - rdt / rday 
    120120      CALL ju2ymds( zjul        , iyear1, imonth1, iday1, zsec1 )           ! year/month/day of the beginning of run 
    121121      CALL ju2ymds( zjul + zdrun, iyear2, imonth2, iday2, zsec2 )           ! year/month/day of the end       of run 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90

    r6069 r6108  
    4444   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    4545   USE in_out_manager  ! I/O manager 
    46    USE diadimg         ! dimg direct access file format output 
    4746   USE diatmb          ! Top,middle,bottom output 
    4847   USE dia25h          ! 25h Mean output 
     
    102101  END FUNCTION dia_wri_alloc 
    103102 
    104 #if defined key_dimgout 
    105    !!---------------------------------------------------------------------- 
    106    !!   'key_dimgout'                                      DIMG output file 
    107    !!---------------------------------------------------------------------- 
    108 #   include "diawri_dimg.h90" 
    109  
    110 #else 
    111103   !!---------------------------------------------------------------------- 
    112104   !!   Default option                                   NetCDF output file 
    113105   !!---------------------------------------------------------------------- 
    114 # if defined key_iomput 
     106#if defined key_iomput 
    115107   !!---------------------------------------------------------------------- 
    116108   !!   'key_iomput'                                        use IOM library 
     
    412404      INTEGER  ::   iimi, iima, ipk, it, itmod, ijmi, ijma   ! local integers 
    413405      INTEGER  ::   jn, ierror                               ! local integers 
    414       REAL(wp) ::   zsto, zout, zmax, zjulian, zdt           ! local scalars 
     406      REAL(wp) ::   zsto, zout, zmax, zjulian                ! local scalars 
    415407      ! 
    416408      REAL(wp), POINTER, DIMENSION(:,:)   :: zw2d       ! 2D workspace 
     
    437429 
    438430      ! Define frequency of output and means 
    439       zdt = rdt 
    440       IF( nacc == 1 ) zdt = rdtmin 
    441431      clop = "x"         ! no use of the mask value (require less cpu time and otherwise the model crashes) 
    442432#if defined key_diainstant 
    443       zsto = nwrite * zdt 
     433      zsto = nwrite * rdt 
    444434      clop = "inst("//TRIM(clop)//")" 
    445435#else 
    446       zsto=zdt 
     436      zsto=rdt 
    447437      clop = "ave("//TRIM(clop)//")" 
    448438#endif 
    449       zout = nwrite * zdt 
    450       zmax = ( nitend - nit000 + 1 ) * zdt 
     439      zout = nwrite * rdt 
     440      zmax = ( nitend - nit000 + 1 ) * rdt 
    451441 
    452442      ! Define indices of the horizontal output zoom and vertical limit storage 
     
    490480         CALL histbeg( clhstnam, jpi, glamt, jpj, gphit,           &  ! Horizontal grid: glamt and gphit 
    491481            &          iimi, iima-iimi+1, ijmi, ijma-ijmi+1,       & 
    492             &          nit000-1, zjulian, zdt, nh_T, nid_T, domain_id=nidom, snc4chunks=snc4set ) 
     482            &          nit000-1, zjulian, rdt, nh_T, nid_T, domain_id=nidom, snc4chunks=snc4set ) 
    493483         CALL histvert( nid_T, "deptht", "Vertical T levels",      &  ! Vertical grid: gdept 
    494484            &           "m", ipk, gdept_1d, nz_T, "down" ) 
     
    526516         CALL histbeg( clhstnam, jpi, glamu, jpj, gphiu,           &  ! Horizontal grid: glamu and gphiu 
    527517            &          iimi, iima-iimi+1, ijmi, ijma-ijmi+1,       & 
    528             &          nit000-1, zjulian, zdt, nh_U, nid_U, domain_id=nidom, snc4chunks=snc4set ) 
     518            &          nit000-1, zjulian, rdt, nh_U, nid_U, domain_id=nidom, snc4chunks=snc4set ) 
    529519         CALL histvert( nid_U, "depthu", "Vertical U levels",      &  ! Vertical grid: gdept 
    530520            &           "m", ipk, gdept_1d, nz_U, "down" ) 
     
    539529         CALL histbeg( clhstnam, jpi, glamv, jpj, gphiv,           &  ! Horizontal grid: glamv and gphiv 
    540530            &          iimi, iima-iimi+1, ijmi, ijma-ijmi+1,       & 
    541             &          nit000-1, zjulian, zdt, nh_V, nid_V, domain_id=nidom, snc4chunks=snc4set ) 
     531            &          nit000-1, zjulian, rdt, nh_V, nid_V, domain_id=nidom, snc4chunks=snc4set ) 
    542532         CALL histvert( nid_V, "depthv", "Vertical V levels",      &  ! Vertical grid : gdept 
    543533            &          "m", ipk, gdept_1d, nz_V, "down" ) 
     
    552542         CALL histbeg( clhstnam, jpi, glamt, jpj, gphit,           &  ! Horizontal grid: glamt and gphit 
    553543            &          iimi, iima-iimi+1, ijmi, ijma-ijmi+1,       & 
    554             &          nit000-1, zjulian, zdt, nh_W, nid_W, domain_id=nidom, snc4chunks=snc4set ) 
     544            &          nit000-1, zjulian, rdt, nh_W, nid_W, domain_id=nidom, snc4chunks=snc4set ) 
    555545         CALL histvert( nid_W, "depthw", "Vertical W levels",      &  ! Vertical grid: gdepw 
    556546            &          "m", ipk, gdepw_1d, nz_W, "down" ) 
     
    845835      ! 
    846836   END SUBROUTINE dia_wri 
    847 # endif 
    848  
    849837#endif 
    850838 
     
    869857      INTEGER  ::   id_i , nz_i, nh_i        
    870858      INTEGER, DIMENSION(1) ::   idex             ! local workspace 
    871       REAL(wp) ::   zsto, zout, zmax, zjulian, zdt 
     859      REAL(wp) ::   zsto, zout, zmax, zjulian 
    872860      !!---------------------------------------------------------------------- 
    873861      !  
     
    878866      clname = cdfile_name 
    879867      IF( .NOT. Agrif_Root() ) clname = TRIM(Agrif_CFixed())//'_'//TRIM(clname) 
    880       zdt  = rdt 
    881868      zsto = rdt 
    882869      clop = "inst(x)"           ! no use of the mask value (require less cpu time) 
    883870      zout = rdt 
    884       zmax = ( nitend - nit000 + 1 ) * zdt 
     871      zmax = ( nitend - nit000 + 1 ) * rdt 
    885872 
    886873      IF(lwp) WRITE(numout,*) 
     
    897884      zjulian = zjulian - adatrj   !   set calendar origin to the beginning of the experiment 
    898885      CALL histbeg( clname, jpi, glamt, jpj, gphit,   & 
    899           1, jpi, 1, jpj, nit000-1, zjulian, zdt, nh_i, id_i, domain_id=nidom, snc4chunks=snc4set ) ! Horizontal grid : glamt and gphit 
     886          1, jpi, 1, jpj, nit000-1, zjulian, rdt, nh_i, id_i, domain_id=nidom, snc4chunks=snc4set ) ! Horizontal grid : glamt and gphit 
    900887      CALL histvert( id_i, "deptht", "Vertical T levels",   &    ! Vertical grid : gdept 
    901888          "m", jpk, gdept_1d, nz_i, "down") 
     
    980967      ! ----------------- 
    981968      CALL histclo( id_i ) 
    982 #if ! defined key_iomput && ! defined key_dimgout 
     969#if ! defined key_iomput 
    983970      IF( ninist /= 1  ) THEN 
    984971         CALL histclo( nid_T ) 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/DOM/daymod.F90

    r6069 r6108  
    2121   !! 
    2222   !!   we suppose that the time step is deviding the number of second of in a day 
    23    !!             ---> MOD( rday, rdttra(1) ) == 0 
     23   !!             ---> MOD( rday, rdt ) == 0 
    2424   !! 
    2525   !!           ----------- WARNING ----------- 
     
    7979            &           'You must do a restart at higher frequency (or remove this stop and recompile the code in I8)' ) 
    8080      ENDIF 
    81       ! all calendar staff is based on the fact that MOD( rday, rdttra(1) ) == 0 
    82       IF( MOD( rday     , rdttra(1) ) /= 0. )   CALL ctl_stop( 'the time step must devide the number of second of in a day' ) 
    83       IF( MOD( rday     , 2.        ) /= 0. )   CALL ctl_stop( 'the number of second of in a day must be an even number'    ) 
    84       IF( MOD( rdttra(1), 2.        ) /= 0. )   CALL ctl_stop( 'the time step (in second) must be an even number'           ) 
    85       nsecd   = NINT(rday           ) 
    86       nsecd05 = NINT(0.5 * rday     ) 
    87       ndt     = NINT(      rdttra(1)) 
    88       ndt05   = NINT(0.5 * rdttra(1)) 
     81      ! all calendar staff is based on the fact that MOD( rday, rdt ) == 0 
     82      IF( MOD( rday     , rdt  ) /= 0. )   CALL ctl_stop( 'the time step must devide the number of second of in a day' ) 
     83      IF( MOD( rday     , 2.    ) /= 0. )   CALL ctl_stop( 'the number of second of in a day must be an even number'    ) 
     84      IF( MOD( rdt      , 2.    ) /= 0. )   CALL ctl_stop( 'the time step (in second) must be an even number'           ) 
     85      nsecd   = NINT(rday       ) 
     86      nsecd05 = NINT(0.5 * rday ) 
     87      ndt     = NINT(      rdt  ) 
     88      ndt05   = NINT(0.5 * rdt  ) 
    8989 
    9090      IF( .NOT. lk_offline ) CALL day_rst( nit000, 'READ' ) 
     
    238238      nsec_week  = nsec_week  + ndt 
    239239      nsec_day   = nsec_day   + ndt 
    240       adatrj  = adatrj  + rdttra(1) / rday 
    241       fjulday = fjulday + rdttra(1) / rday 
     240      adatrj  = adatrj  + rdt / rday 
     241      fjulday = fjulday + rdt / rday 
    242242      IF( ABS(fjulday - REAL(NINT(fjulday),wp)) < zprec )   fjulday = REAL(NINT(fjulday),wp)   ! avoid truncation error 
    243243      IF( ABS(adatrj  - REAL(NINT(adatrj ),wp)) < zprec )   adatrj  = REAL(NINT(adatrj ),wp)   ! avoid truncation error 
     
    377377               nminute = ( nn_time0 - nhour * 100 ) 
    378378               IF( nhour*3600+nminute*60-ndt05 .lt. 0 )  ndastp=ndastp-1      ! Start hour is specified in the namelist (default 0) 
    379                adatrj = ( REAL( nit000-1, wp ) * rdttra(1) ) / rday 
     379               adatrj = ( REAL( nit000-1, wp ) * rdt ) / rday 
    380380               ! note this is wrong if time step has changed during run 
    381381            ENDIF 
     
    386386       nminute = ( nn_time0 - nhour * 100 ) 
    387387            IF( nhour*3600+nminute*60-ndt05 .lt. 0 )  ndastp=ndastp-1      ! Start hour is specified in the namelist (default 0) 
    388             adatrj = ( REAL( nit000-1, wp ) * rdttra(1) ) / rday 
     388            adatrj = ( REAL( nit000-1, wp ) * rdt ) / rday 
    389389         ENDIF 
    390390         IF( ABS(adatrj  - REAL(NINT(adatrj),wp)) < 0.1 / rday )   adatrj = REAL(NINT(adatrj),wp)   ! avoid truncation error 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/DOM/dom_oce.F90

    r6069 r6108  
    3737   REAL(wp), PUBLIC ::   rn_e3zps_rat    !: minimum thickness ration for partial steps 
    3838   INTEGER , PUBLIC ::   nn_msh          !: = 1 create a mesh-mask file 
    39    INTEGER , PUBLIC ::   nn_acc          !: = 0/1 use of the acceleration of convergence technique 
    4039   REAL(wp), PUBLIC ::   rn_atfp         !: asselin time filter parameter 
    41    REAL(wp), PUBLIC ::   rn_rdt          !: time step for the dynamics (and tracer if nacc=0) 
    42    REAL(wp), PUBLIC ::   rn_rdtmin       !: minimum time step on tracers 
    43    REAL(wp), PUBLIC ::   rn_rdtmax       !: maximum time step on tracers 
    44    REAL(wp), PUBLIC ::   rn_rdth         !: depth variation of tracer step 
     40   REAL(wp), PUBLIC ::   rn_rdt          !: time step for the dynamics and tracer 
    4541   INTEGER , PUBLIC ::   nn_closea       !: =0 suppress closed sea/lake from the ORCA domain or not (=1) 
    4642   INTEGER , PUBLIC ::   nn_euler        !: =0 start with forward time step or not (=1) 
     
    10298   REAL(wp), PUBLIC ::   e3zps_rat       !: minimum thickness ration for partial steps 
    10399   INTEGER , PUBLIC ::   nmsh            !: = 1 create a mesh-mask file 
    104    INTEGER , PUBLIC ::   nacc            !: = 0/1 use of the acceleration of convergence technique 
    105100   REAL(wp), PUBLIC ::   atfp            !: asselin time filter parameter 
    106    REAL(wp), PUBLIC ::   rdt             !: time step for the dynamics (and tracer if nacc=0) 
    107    REAL(wp), PUBLIC ::   rdtmin          !: minimum time step on tracers 
    108    REAL(wp), PUBLIC ::   rdtmax          !: maximum time step on tracers 
    109    REAL(wp), PUBLIC ::   rdth            !: depth variation of tracer step 
    110  
    111    !                                   !!! associated variables 
    112    INTEGER , PUBLIC ::   neuler          !: restart euler forward option (0=Euler) 
    113    REAL(wp), PUBLIC ::   atfp1           !: asselin time filter coeff. (atfp1= 1-2*atfp) 
    114     
    115    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   rdttra  !: vertical profile of tracer time step 
    116    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   r2dtra  !: = 2*rdttra except at nit000 (=rdttra) if neuler=0 
     101   REAL(wp), PUBLIC ::   rdt             !: time step for the dynamics and tracer 
     102 
     103   !                                                  !!! associated variables 
     104   INTEGER , PUBLIC                 ::   neuler        !: restart euler forward option (0=Euler) 
     105   REAL(wp), PUBLIC                 ::   atfp1         !: asselin time filter coeff. (atfp1= 1-2*atfp) 
     106   REAL(wp), PUBLIC                 ::   r2dt          !: = 2*rdt except at nit000 (=rdt) if neuler=0 
    117107 
    118108   !!---------------------------------------------------------------------- 
     
    323313      ierr(:) = 0 
    324314      ! 
    325       ALLOCATE( rdttra(jpk), r2dtra(jpk), mig(jpi), mjg(jpj), nfiimpp(jpni,jpnj),  & 
     315      ALLOCATE( mig(jpi), mjg(jpj), nfiimpp(jpni,jpnj),  & 
    326316         &      nfipproc(jpni,jpnj), nfilcit(jpni,jpnj), STAT=ierr(1) ) 
    327317         ! 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90

    r6075 r6108  
    163163                       nn_no   , cn_exp   , cn_ocerst_in, cn_ocerst_out, ln_rstart , nn_rstctl ,     & 
    164164         &             nn_it000, nn_itend , nn_date0    , nn_time0     , nn_leapy  , nn_istate ,     & 
    165          &             nn_stock, nn_write , ln_dimgnnn  , ln_mskland   , ln_clobber, nn_chunksz,     & 
    166          &             nn_euler, ln_cfmeta, ln_iscpl 
     165         &             nn_stock, nn_write , ln_mskland  , ln_clobber   , nn_chunksz, nn_euler  ,     & 
     166         &             ln_cfmeta, ln_iscpl 
    167167      NAMELIST/namdom/ nn_bathy, rn_bathy , rn_e3zps_min, rn_e3zps_rat, nn_msh, rn_hmin, rn_isfhmin, & 
    168          &             nn_acc   , rn_atfp , rn_rdt      , rn_rdtmin   ,                              & 
    169          &             rn_rdtmax, rn_rdth , nn_closea   , ln_crs      ,                              & 
    170          &             jphgr_msh,                                                                    & 
     168         &             rn_atfp , rn_rdt   , nn_closea   , ln_crs      , jphgr_msh ,                  & 
    171169         &             ppglam0, ppgphi0, ppe1_deg, ppe2_deg, ppe1_m, ppe2_m,                         & 
    172170         &             ppsur, ppa0, ppa1, ppkth, ppacr, ppdzmin, pphmax, ldbletanh,                  & 
     
    213211         ENDIF 
    214212         WRITE(numout,*) '      frequency of output file        nn_write   = ', nn_write 
    215          WRITE(numout,*) '      multi file dimgout              ln_dimgnnn = ', ln_dimgnnn 
    216213         WRITE(numout,*) '      mask land points                ln_mskland = ', ln_mskland 
    217214         WRITE(numout,*) '      additional CF standard metadata ln_cfmeta  = ', ln_cfmeta 
     
    296293         WRITE(numout,*) '      ocean time step                       rn_rdt    = ', rn_rdt 
    297294         WRITE(numout,*) '      asselin time filter parameter         rn_atfp   = ', rn_atfp 
    298          WRITE(numout,*) '      acceleration of converge              nn_acc    = ', nn_acc 
    299          WRITE(numout,*) '        nn_acc=1: surface tracer rdt        rn_rdtmin = ', rn_rdtmin 
    300          WRITE(numout,*) '                  bottom  tracer rdt        rdtmax    = ', rn_rdtmax 
    301          WRITE(numout,*) '                  depth of transition       rn_rdth   = ', rn_rdth 
    302295         WRITE(numout,*) '      suppression of closed seas (=0)       nn_closea = ', nn_closea 
    303296         WRITE(numout,*) '      online coarsening of dynamical fields ln_crs    = ', ln_crs 
     
    326319      e3zps_rat = rn_e3zps_rat 
    327320      nmsh      = nn_msh 
    328       nacc      = nn_acc 
    329321      atfp      = rn_atfp 
    330322      rdt       = rn_rdt 
    331       rdtmin    = rn_rdtmin 
    332       rdtmax    = rn_rdtmin 
    333       rdth      = rn_rdth 
    334323 
    335324#if defined key_netcdf4 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/DOM/domstp.F90

    r6060 r6108  
    3939      !!      filter parameter read in namelist 
    4040      !!              - Model time step: 
    41       !!      nacc = 0 : synchronous time intergration.  
    42       !!      There is one time step only, defined by: rdt, rdttra(k)=rdt 
    43       !!      nacc = 1 : accelerating the convergence. There is 2 different 
    44       !!      time steps for dynamics and tracers: 
    45       !!        rdt      : dynamical part 
    46       !!        rdttra(k): temperature and salinity 
    47       !!      The tracer time step is a function of vertical level. the model 
    48       !!      reference time step ( i.e. for wind stress, surface heat and 
    49       !!      salt fluxes) is the surface tracer time step is rdttra(1). 
    50       !!         N.B. depth dependent acceleration of convergence is not im- 
    51       !!      plemented for s-coordinate. 
     41      !!                synchronous time intergration. 
     42      !!      There is one time step only, defined by: rdt for dynamics and 
     43      !!      tracer,wind stress, surface heat and salt fluxes 
    5244      !! 
    53       !! ** Action  : - rdttra   : vertical profile of tracer time step 
     45      !! ** Action  : [REMOVED - rdttra: vertical profile of tracer time step] 
    5446      !!              - atfp1    : = 1 - 2*atfp 
    5547      !! 
     
    7062      atfp1 = 1. - 2. * atfp 
    7163 
    72       SELECT CASE ( nacc ) 
     64      IF(lwp) WRITE(numout,*)'               synchronous time stepping' 
     65      IF(lwp) WRITE(numout,*)'               dynamics and tracer time step = ', rdt/3600., ' hours' 
    7366 
    74          CASE ( 0 )                ! Synchronous time stepping 
    75             IF(lwp) WRITE(numout,*)'               synchronous time stepping' 
    76             IF(lwp) WRITE(numout,*)'               dynamics and tracer time step = ', rdt/3600., ' hours' 
    77  
    78             rdttra(:) = rdt 
    79  
    80          CASE ( 1 )                ! Accelerating the convergence 
    81             IF(lwp) WRITE(numout,*) '              no tracer damping in the turbocline' 
    82             IF(lwp) WRITE(numout,*)'               accelerating the convergence' 
    83             IF(lwp) WRITE(numout,*)'               dynamics time step = ', rdt/3600., ' hours' 
    84             IF( ln_sco .AND. rdtmin /= rdtmax .AND. .NOT.ln_linssh )   & 
    85                  & CALL ctl_stop ( ' depth dependent acceleration of convergence not implemented in s-coordinates & 
    86                  &                   nor in variable volume' ) 
    87             IF(lwp) WRITE(numout,*)'         tracers   time step :  dt (hours)  level' 
    88  
    89             DO jk = 1, jpk 
    90                IF( gdept_1d(jk) <= rdth ) rdttra(jk) = rdtmin 
    91                IF( gdept_1d(jk) >  rdth ) THEN 
    92                   rdttra(jk) = rdtmin + ( rdtmax - rdtmin )   & 
    93                                       * ( EXP( ( gdept_1d(jk ) - rdth ) / rdth ) - 1. )   & 
    94                                       / ( EXP( ( gdept_1d(jpk) - rdth ) / rdth ) - 1. ) 
    95                ENDIF 
    96                IF(lwp) WRITE(numout,"(36x,f5.2,5x,i3)") rdttra(jk)/3600., jk 
    97             END DO   
    98  
    99          CASE DEFAULT              ! E R R O R  
    100  
    101             WRITE(ctmp1,*) ' nacc value e r r o r, nacc= ',nacc 
    102             CALL ctl_stop( ctmp1 ) 
    103  
    104       END SELECT 
    10567 
    10668   END SUBROUTINE dom_stp 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf.F90

    r6060 r6108  
    3434 
    3535   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=0 
    3736 
    3837   !! * Substitutions 
     
    6160      ! 
    6261      !                                          ! set time step 
    63       IF( neuler == 0 .AND. kt == nit000     ) THEN   ;   r2dt =      rdt   ! = rdtra (restart with Euler time stepping) 
    64       ELSEIF(               kt <= nit000 + 1 ) THEN   ;   r2dt = 2. * rdt   ! = 2 rdttra (leapfrog) 
     62      IF( neuler == 0 .AND. kt == nit000     ) THEN   ;   r2dt =      rdt   ! = rdt (restart with Euler time stepping) 
     63      ELSEIF(               kt <= nit000 + 1 ) THEN   ;   r2dt = 2. * rdt   ! = 2 rdt (leapfrog) 
    6564      ENDIF 
    6665 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/IOM/in_out_manager.F90

    r6069 r6108  
    4242   INTEGER       ::   nn_stock         !: restart file frequency 
    4343   INTEGER, DIMENSION(10) :: nn_stocklist  !: restart dump times 
    44    LOGICAL       ::   ln_dimgnnn       !: type of dimgout. (F): 1 file for all proc 
    45                                                        !:                  (T): 1 file per proc 
    4644   LOGICAL       ::   ln_mskland       !: mask land points in NetCDF outputs (costly: + ~15%) 
    4745   LOGICAL       ::   ln_cfmeta        !: output additional data to netCDF files required for compliance with the CF metadata standard 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90

    r6069 r6108  
    88   !!            3.0  ! 2007-07  (D. Storkey) Changes to iom_gettime 
    99   !!            3.4  ! 2012-12  (R. Bourdalle-Badie and G. Reffray)  add C1D case   
     10   !!            3.6  ! 2014-15  DIMG format removed 
    1011   !!-------------------------------------------------------------------- 
    1112 
     
    2324   USE lbclnk          ! lateal boundary condition / mpp exchanges 
    2425   USE iom_def         ! iom variables definitions 
    25    USE iom_ioipsl      ! NetCDF format with IOIPSL library 
    2626   USE iom_nf90        ! NetCDF format with native NetCDF library 
    27    USE iom_rstdimg     ! restarts access direct format "dimg" style... 
    2827   USE in_out_manager  ! I/O manager 
    2928   USE lib_mpp           ! MPP library 
     
    246245      CHARACTER(LEN=256)    ::   clname    ! the name of the file based on cdname [[+clcpu]+clcpu] 
    247246      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"  
    249248      CHARACTER(LEN=15)     ::   clcpu     ! the cpu number (max jpmax_digits digits) 
    250249      CHARACTER(LEN=256)    ::   clinfo    ! info character 
     
    309308      ! which suffix should we use? 
    310309      SELECT CASE (iolib) 
    311       CASE (jpioipsl ) ;   clsuffix = '.nc' 
    312310      CASE (jpnf90   ) ;   clsuffix = '.nc' 
    313       CASE (jprstdimg) ;   clsuffix = '.dimg' 
    314311      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) ' ) 
    316313      END SELECT 
    317314      ! Add the suffix if needed 
     
    326323      IF( .NOT.llok ) THEN 
    327324         ! 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 
    331327         clcpu  = TRIM(ADJUSTL(clcpu)) 
    332328         iln = INDEX(clname,TRIM(clsuffix), back = .TRUE.) 
     
    375371         END SELECT 
    376372      ENDIF 
    377       ! Open the NetCDF or RSTDIMG file 
     373      ! Open the NetCDF file 
    378374      ! ============= 
    379375      ! do we have some free file identifier? 
     
    399395      IF( istop == nstop ) THEN   ! no error within this routine 
    400396         SELECT CASE (iolib) 
    401          CASE (jpioipsl )   ;   CALL iom_ioipsl_open(  clname, kiomid, llwrt, llok, idompar ) 
    402397         CASE (jpnf90   )   ;   CALL iom_nf90_open(    clname, kiomid, llwrt, llok, idompar ) 
    403          CASE (jprstdimg)   ;   CALL iom_rstdimg_open( clname, kiomid, llwrt, llok, idompar ) 
    404398         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) ' ) 
    406400         END SELECT 
    407401      ENDIF 
     
    438432            IF( iom_file(jf)%nfid > 0 ) THEN 
    439433               SELECT CASE (iom_file(jf)%iolib) 
    440                CASE (jpioipsl )   ;   CALL iom_ioipsl_close(  jf ) 
    441434               CASE (jpnf90   )   ;   CALL iom_nf90_close(    jf ) 
    442                CASE (jprstdimg)   ;   CALL iom_rstdimg_close( jf ) 
    443435               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)' ) 
    445437               END SELECT 
    446438               iom_file(jf)%nfid       = 0          ! free the id  
     
    497489               IF( iiv <= jpmax_vars ) THEN 
    498490                  SELECT CASE (iom_file(kiomid)%iolib) 
    499                   CASE (jpioipsl )   ;   iom_varid = iom_ioipsl_varid( kiomid, cdvar, iiv, kdimsz ) 
    500491                  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)' ) 
    504494                  END SELECT 
    505495               ELSE 
     
    559549                                 &                         'Use ncwa -a to suppress the unnecessary dimensions' ) 
    560550            SELECT CASE (iom_file(kiomid)%iolib) 
    561             CASE (jpioipsl )   ;   CALL iom_ioipsl_get(  kiomid, idvar, pvar, itime ) 
    562551            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)' ) 
    566554            END SELECT 
    567555         ENDIF 
     
    696684      IF( luse_jattr ) THEN 
    697685         SELECT CASE (iom_file(kiomid)%iolib) 
    698          CASE (jpioipsl, jprstdimg ) 
    699              CALL ctl_warn(trim(clinfo), 'lrowattr present and true but this only works with netcdf (jpnf90)') 
    700              luse_jattr = .false. 
    701686         CASE (jpnf90   )    
    702687             ! Ok 
    703688         CASE DEFAULT     
    704             CALL ctl_stop( TRIM(clinfo)//' accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 
     689            CALL ctl_stop( TRIM(clinfo)//' accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
    705690         END SELECT 
    706691      ENDIF 
     
    875860       
    876861         SELECT CASE (iom_file(kiomid)%iolib) 
    877          CASE (jpioipsl )   ;   CALL iom_ioipsl_get(  kiomid, idvar, inbdim, istart, icnt, ix1, ix2, iy1, iy2,   & 
    878             &                                         pv_r1d, pv_r2d, pv_r3d ) 
    879862         CASE (jpnf90   )   ;   CALL iom_nf90_get(    kiomid, idvar, inbdim, istart, icnt, ix1, ix2, iy1, iy2,   & 
    880863            &                                         pv_r1d, pv_r2d, pv_r3d ) 
    881          CASE (jprstdimg)   ;   CALL iom_rstdimg_get( kiomid, idom, idvar, ix1, ix2, iy1, iy2,   & 
    882             &                                         pv_r1d, pv_r2d, pv_r3d ) 
    883          CASE DEFAULT     
    884             CALL ctl_stop( TRIM(clinfo)//' accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 
     864         CASE DEFAULT 
     865            CALL ctl_stop( TRIM(clinfo)//' accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
    885866         END SELECT 
    886867 
     
    965946                  IF( iom_file(kiomid)%dimsz(1,idvar) <= size(ptime) ) THEN 
    966947                     SELECT CASE (iom_file(kiomid)%iolib) 
    967                      CASE (jpioipsl )   ;   CALL iom_ioipsl_gettime( kiomid, idvar, ptime, cdunits, cdcalendar ) 
    968948                     CASE (jpnf90   )   ;   CALL iom_nf90_gettime(   kiomid, idvar, ptime, cdunits, cdcalendar ) 
    969                      CASE (jprstdimg)   ;   CALL ctl_stop( TRIM(clinfo)//' case IO library == jprstdimg not coded...' ) 
    970                      CASE DEFAULT     
    971                         CALL ctl_stop( TRIM(clinfo)//' accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 
     949                     CASE DEFAULT 
     950                        CALL ctl_stop( TRIM(clinfo)//' accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
    972951                     END SELECT 
    973952                  ELSE 
     
    1000979         IF( iom_file(kiomid)%nfid > 0 ) THEN 
    1001980            SELECT CASE (iom_file(kiomid)%iolib) 
    1002             CASE (jpioipsl )   ;   CALL ctl_stop('iom_getatt: only nf90 available') 
    1003981            CASE (jpnf90   )   ;   CALL iom_nf90_getatt( kiomid, cdatt, pvar ) 
    1004             CASE (jprstdimg)   ;   CALL ctl_stop('iom_getatt: only nf90 available') 
    1005             CASE DEFAULT     
    1006                CALL ctl_stop( 'iom_g0d_att: accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 
     982            CASE DEFAULT 
     983               CALL ctl_stop( 'iom_g0d_att: accepted IO library is only jpnf90' ) 
    1007984            END SELECT 
    1008985         ENDIF 
     
    10261003            ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
    10271004            SELECT CASE (iom_file(kiomid)%iolib) 
    1028             CASE (jpioipsl )   ;   CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r0d = pvar ) 
    10291005            CASE (jpnf90   )   ;   CALL iom_nf90_rstput(   kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r0d = pvar ) 
    1030             CASE (jprstdimg)   ;   IF( kt == kwrite )    CALL iom_rstdimg_rstput( kiomid, cdvar, ivid, pvar ) 
    1031             CASE DEFAULT      
    1032                CALL ctl_stop( 'iom_rp0d: accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 
     1006            CASE DEFAULT 
     1007               CALL ctl_stop( 'iom_rp0d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
    10331008            END SELECT 
    10341009         ENDIF 
     
    10481023            ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
    10491024            SELECT CASE (iom_file(kiomid)%iolib) 
    1050             CASE (jpioipsl )   ;   CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r1d = pvar ) 
    10511025            CASE (jpnf90   )   ;   CALL iom_nf90_rstput(   kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r1d = pvar ) 
    1052             CASE (jprstdimg)   ;   IF( kt == kwrite )    CALL iom_rstdimg_rstput( kiomid, cdvar, ivid, pv_r1d = pvar ) 
    1053             CASE DEFAULT      
    1054                CALL ctl_stop( 'iom_rp1d: accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 
     1026            CASE DEFAULT 
     1027               CALL ctl_stop( 'iom_rp1d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
    10551028            END SELECT 
    10561029         ENDIF 
     
    10701043            ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
    10711044            SELECT CASE (iom_file(kiomid)%iolib) 
    1072             CASE (jpioipsl )   ;   CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r2d = pvar ) 
    10731045            CASE (jpnf90   )   ;   CALL iom_nf90_rstput(   kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r2d = pvar ) 
    1074             CASE (jprstdimg)   ;   IF( kt == kwrite )   CALL iom_rstdimg_rstput( kiomid, cdvar, ivid, pv_r2d = pvar )  
    1075             CASE DEFAULT      
    1076                CALL ctl_stop( 'iom_rp2d: accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 
     1046            CASE DEFAULT 
     1047               CALL ctl_stop( 'iom_rp2d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
    10771048            END SELECT 
    10781049         ENDIF 
     
    10921063            ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
    10931064            SELECT CASE (iom_file(kiomid)%iolib) 
    1094             CASE (jpioipsl )   ;   CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r3d = pvar ) 
    10951065            CASE (jpnf90   )   ;   CALL iom_nf90_rstput(   kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r3d = pvar ) 
    1096             CASE (jprstdimg)   ;   IF( kt == kwrite )   CALL iom_rstdimg_rstput( kiomid, cdvar, ivid, pv_r3d = pvar ) 
    1097             CASE DEFAULT      
    1098                CALL ctl_stop( 'iom_rp3d: accepted IO library are only jpioipsl and jprstdimg' ) 
     1066            CASE DEFAULT 
     1067               CALL ctl_stop( 'iom_rp3d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
    10991068            END SELECT 
    11001069         ENDIF 
     
    16541623            idx = INDEX(clname,'@startdate@') + INDEX(clname,'@STARTDATE@') 
    16551624            DO WHILE ( idx /= 0 )  
    1656                cldate = iom_sdate( fjulday - rdttra(1) / rday ) 
     1625               cldate = iom_sdate( fjulday - rdt / rday ) 
    16571626               clname = clname(1:idx-1)//TRIM(cldate)//clname(idx+11:LEN_TRIM(clname)) 
    16581627               idx = INDEX(clname,'@startdate@') + INDEX(clname,'@STARTDATE@') 
     
    16611630            idx = INDEX(clname,'@startdatefull@') + INDEX(clname,'@STARTDATEFULL@') 
    16621631            DO WHILE ( idx /= 0 )  
    1663                cldate = iom_sdate( fjulday - rdttra(1) / rday, ldfull = .TRUE. ) 
     1632               cldate = iom_sdate( fjulday - rdt / rday, ldfull = .TRUE. ) 
    16641633               clname = clname(1:idx-1)//TRIM(cldate)//clname(idx+15:LEN_TRIM(clname)) 
    16651634               idx = INDEX(clname,'@startdatefull@') + INDEX(clname,'@STARTDATEFULL@') 
     
    16681637            idx = INDEX(clname,'@enddate@') + INDEX(clname,'@ENDDATE@') 
    16691638            DO WHILE ( idx /= 0 )  
    1670                cldate = iom_sdate( fjulday + rdttra(1) / rday * REAL( nitend - nit000, wp ), ld24 = .TRUE. ) 
     1639               cldate = iom_sdate( fjulday + rdt / rday * REAL( nitend - nit000, wp ), ld24 = .TRUE. ) 
    16711640               clname = clname(1:idx-1)//TRIM(cldate)//clname(idx+9:LEN_TRIM(clname)) 
    16721641               idx = INDEX(clname,'@enddate@') + INDEX(clname,'@ENDDATE@') 
     
    16751644            idx = INDEX(clname,'@enddatefull@') + INDEX(clname,'@ENDDATEFULL@') 
    16761645            DO WHILE ( idx /= 0 )  
    1677                cldate = iom_sdate( fjulday + rdttra(1) / rday * REAL( nitend - nit000, wp ), ld24 = .TRUE., ldfull = .TRUE. ) 
     1646               cldate = iom_sdate( fjulday + rdt / rday * REAL( nitend - nit000, wp ), ld24 = .TRUE., ldfull = .TRUE. ) 
    16781647               clname = clname(1:idx-1)//TRIM(cldate)//clname(idx+13:LEN_TRIM(clname)) 
    16791648               idx = INDEX(clname,'@enddatefull@') + INDEX(clname,'@ENDDATEFULL@') 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/IOM/iom_def.F90

    r6069 r6108  
    2929   INTEGER, PARAMETER, PUBLIC ::   jpdom_autodta       = 10  !:  
    3030 
    31    INTEGER, PARAMETER, PUBLIC ::   jpioipsl    = 100      !: Use ioipsl (fliocom only) library 
    3231   INTEGER, PARAMETER, PUBLIC ::   jpnf90      = 101      !: Use nf90 library 
    33    INTEGER, PARAMETER, PUBLIC ::   jprstdimg   = 102      !: Use restart dimgs (fortran direct acces) library 
    34 #if defined key_dimgout 
    35    INTEGER, PARAMETER, PUBLIC ::   jprstlib  = jprstdimg  !: restarts io library 
    36 #else 
     32 
    3733   INTEGER, PARAMETER, PUBLIC ::   jprstlib  = jpnf90     !: restarts io library 
    38 #endif 
    3934 
    4035   INTEGER, PARAMETER, PUBLIC ::   jp_r8    = 200      !: write REAL(8) 
     
    5550      CHARACTER(LEN=240)                        ::   name     !: name of the file 
    5651      INTEGER                                   ::   nfid     !: identifier of the file (0 if closed) 
    57       INTEGER                                   ::   iolib    !: library used to read the file (jpioipsl, jpnf90 or jprstdimg) 
     52      INTEGER                                   ::   iolib    !: library used to read the file (jpnf90 or new formats, 
     53                                                              !: jpioipsl option has been removed) 
    5854      INTEGER                                   ::   nvars    !: number of identified varibles in the file 
    5955      INTEGER                                   ::   iduld    !: id of the unlimited dimension 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/IOM/restart.F90

    r6073 r6108  
    9595               WRITE(numout,*) 
    9696               SELECT CASE ( jprstlib ) 
    97                CASE ( jprstdimg )   ;   WRITE(numout,*)                            & 
    98                    '             open ocean restart binary file: ',TRIM(clpath)//clname 
    9997               CASE DEFAULT         ;   WRITE(numout,*)                            & 
    10098                   '             open ocean restart NetCDF file: ',TRIM(clpath)//clname 
     
    126124      !!---------------------------------------------------------------------- 
    127125 
    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 
     127 
    130128      IF ( .NOT. ln_diurnal_only ) THEN 
    131129                     CALL iom_rstput( kt, nitrst, numrow, 'ub'     , ub        )     ! before fields 
     
    191189            SELECT CASE ( jprstlib ) 
    192190            CASE ( jpnf90    )   ;   WRITE(numout,*) 'rst_read : read oce NetCDF restart file' 
    193             CASE ( jprstdimg )   ;   WRITE(numout,*) 'rst_read : read oce binary restart file' 
    194191            END SELECT 
    195192            IF ( snc4set%luse )      WRITE(numout,*) 'rst_read : configured with NetCDF4 support' 
     
    199196         clpath = TRIM(cn_ocerst_indir) 
    200197         IF( clpath(LEN_TRIM(clpath):) /= '/' ) clpath = TRIM(clpath) // '/' 
    201          IF ( jprstlib == jprstdimg ) THEN 
    202            ! eventually read netcdf file (monobloc)  for restarting on different number of processors 
    203            ! if {cn_ocerst_in}.nc exists, then set jlibalt to jpnf90 
    204            INQUIRE( FILE = TRIM(cn_ocerst_indir)//'/'//TRIM(cn_ocerst_in)//'.nc', EXIST = llok ) 
    205            IF ( llok ) THEN ; jlibalt = jpnf90  ; ELSE ; jlibalt = jprstlib ; ENDIF 
    206          ENDIF 
    207198         CALL iom_open( TRIM(clpath)//cn_ocerst_in, numror, kiolib = jlibalt ) 
    208199      ENDIF 
     
    218209      !! ** Method  :   Read in restart.nc file fields which are necessary for restart 
    219210      !!---------------------------------------------------------------------- 
    220       REAL(wp) ::   zrdt, zrdttra1 
     211      REAL(wp) ::   zrdt 
    221212      INTEGER  ::   jk 
    222213      !!---------------------------------------------------------------------- 
     
    229220         IF( zrdt /= rdt )   neuler = 0 
    230221      ENDIF 
    231       IF( iom_varid( numror, 'rdttra1', ldstop = .FALSE. ) > 0 )   THEN 
    232          CALL iom_get( numror, 'rdttra1', zrdttra1 ) 
    233          IF( zrdttra1 /= rdttra(1) )   neuler = 0 
    234       ENDIF 
    235         
    236        
     222 
    237223      ! Diurnal DSST  
    238224      IF( ln_diurnal ) CALL iom_get( numror, jpdom_autoglo, 'Dsst' , x_dsst  )  
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/LBC/mppini.F90

    r6060 r6108  
    454454#  include "mppini_2.h90" 
    455455 
    456 # if defined key_dimgout 
    457    !!---------------------------------------------------------------------- 
    458    !!   'key_dimgout'                  NO use of NetCDF files 
    459    !!---------------------------------------------------------------------- 
    460    SUBROUTINE mpp_init_ioipsl       ! Dummy routine 
    461    END SUBROUTINE mpp_init_ioipsl   
    462 # else 
    463456   SUBROUTINE mpp_init_ioipsl 
    464457      !!---------------------------------------------------------------------- 
     
    506499   END SUBROUTINE mpp_init_ioipsl   
    507500 
    508 # endif 
    509501#endif 
    510502 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90

    r6060 r6108  
    164164         isecsbc = nsec_year + nsec1jan000 + (kit+it_offset)*NINT( rdt/REAL(nn_baro,wp) ) 
    165165      ELSE                      ! middle of sbc time step 
    166          isecsbc = nsec_year + nsec1jan000 + NINT(0.5 * REAL(kn_fsbc - 1,wp) * rdttra(1)) + it_offset * NINT(rdttra(1)) 
     166         isecsbc = nsec_year + nsec1jan000 + NINT(0.5 * REAL(kn_fsbc - 1,wp) * rdt) + it_offset * NINT(rdt) 
    167167      ENDIF 
    168168      imf = SIZE( sd ) 
     
    191191               CALL fld_rec( kn_fsbc, sd(jf), kt_offset = it_offset, kit = kit )    ! update after record informations 
    192192 
    193                ! if kn_fsbc*rdttra is larger than nfreqh (which is kind of odd), 
     193               ! if kn_fsbc*rdt is larger than nfreqh (which is kind of odd), 
    194194               ! it is possible that the before value is no more the good one... we have to re-read it 
    195195               ! if before is not the last record of the file currently opened and after is the first record to be read 
     
    212212               IF( sd(jf)%ln_tint ) THEN 
    213213                   
    214                   ! if kn_fsbc*rdttra is larger than nfreqh (which is kind of odd), 
     214                  ! if kn_fsbc*rdt is larger than nfreqh (which is kind of odd), 
    215215                  ! it is possible that the before value is no more the good one... we have to re-read it 
    216216                  ! if before record is not just just before the after record... 
     
    243243                        ! year/month/week/day file to be not present. If the run continue further than the current 
    244244                        ! year/month/week/day, next year/month/week/day file must exist 
    245                         isecend = nsec_year + nsec1jan000 + (nitend - kt) * NINT(rdttra(1))   ! second at the end of the run  
     245                        isecend = nsec_year + nsec1jan000 + (nitend - kt) * NINT(rdt)   ! second at the end of the run 
    246246                        llstop = isecend > sd(jf)%nrec_a(2)                                   ! read more than 1 record of next year 
    247247                        ! we suppose that the date of next file is next day (should be ok even for weekly files...) 
     
    454454      IF( PRESENT(kt_offset) )   it_offset = kt_offset 
    455455      IF( PRESENT(kit) ) THEN   ;   it_offset = ( kit + it_offset ) * NINT( rdt/REAL(nn_baro,wp) ) 
    456       ELSE                      ;   it_offset =         it_offset   * NINT(       rdttra(1)      ) 
     456      ELSE                      ;   it_offset =         it_offset   * NINT(       rdt            ) 
    457457      ENDIF 
    458458      ! 
     
    531531         ELSE                                           ;   ztmp = REAL(nsec_year ,wp)  ! since 00h on Jan 1 of the current year 
    532532         ENDIF 
    533          ztmp = ztmp + 0.5 * REAL(kn_fsbc - 1, wp) * rdttra(1) + REAL( it_offset, wp )  ! centrered in the middle of sbc time step 
    534          ztmp = ztmp + 0.01 * rdttra(1)                                                 ! avoid truncation error  
     533         ztmp = ztmp + 0.5 * REAL(kn_fsbc - 1, wp) * rdt + REAL( it_offset, wp )        ! centrered in the middle of sbc time step 
     534         ztmp = ztmp + 0.01 * rdt                                                       ! avoid truncation error  
    535535         IF( sdjf%ln_tint ) THEN                ! time interpolation, shift by 1/2 record 
    536536            ! 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90

    r6060 r6108  
    842842      LOGICAL  ::   llnewtx, llnewtau      ! update wind stress components and module?? 
    843843      INTEGER  ::   ji, jj, jn             ! dummy loop indices 
    844       INTEGER  ::   isec                   ! number of seconds since nit000 (assuming rdttra did not change since nit000) 
     844      INTEGER  ::   isec                   ! number of seconds since nit000 (assuming rdt did not change since nit000) 
    845845      REAL(wp) ::   zcumulneg, zcumulpos   ! temporary scalars      
    846846      REAL(wp) ::   zcoef                  ! temporary scalar 
     
    860860      !                                                      ! Receive all the atmos. fields (including ice information) 
    861861      !                                                      ! ======================================================= ! 
    862       isec = ( kt - nit000 ) * NINT( rdttra(1) )                ! date of exchanges 
     862      isec = ( kt - nit000 ) * NINT( rdt )                      ! date of exchanges 
    863863      DO jn = 1, jprcv                                          ! received fields sent by the atmosphere 
    864864         IF( srcv(jn)%laction )   CALL cpl_rcv( jn, isec, frcv(jn)%z3, xcplmask(:,:,1:nn_cplmodel), nrcvinfo(jn) ) 
     
    17081708      CALL wrk_alloc( jpi,jpj,jpl,   ztmp3, ztmp4 ) 
    17091709 
    1710       isec = ( kt - nit000 ) * NINT(rdttra(1))        ! date of exchanges 
     1710      isec = ( kt - nit000 ) * NINT( rdt )        ! date of exchanges 
    17111711 
    17121712      zfr_l(:,:) = 1.- fr_i(:,:) 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/SBC/sbcdcy.F90

    r3764 r6108  
    9090 
    9191      ! When are we during the day (from 0 to 1) 
    92       zlo = ( REAL(nsec_day, wp) - 0.5_wp * rdttra(1) ) / rday 
    93       zup = zlo + ( REAL(nn_fsbc, wp)     * rdttra(1) ) / rday 
     92      zlo = ( REAL(nsec_day, wp) - 0.5_wp * rdt ) / rday 
     93      zup = zlo + ( REAL(nn_fsbc, wp)     * rdt ) / rday 
    9494      !                                           
    9595      IF( nday_qsr == -1 ) THEN       ! first time step only   
     
    189189         END DO   
    190190         ! 
    191          ztmp = rday / ( rdttra(1) * REAL(nn_fsbc, wp) ) 
     191         ztmp = rday / ( rdt * REAL(nn_fsbc, wp) ) 
    192192         rscal(:,:) = rscal(:,:) * ztmp 
    193193         ! 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/SBC/sbcfwb.F90

    r6060 r6108  
    128128         ENDIF    
    129129         !                                         ! Update fwfold if new year start 
    130          ikty = 365 * 86400 / rdttra(1)    !!bug  use of 365 days leap year or 360d year !!!!!!! 
     130         ikty = 365 * 86400 / rdt                  !!bug  use of 365 days leap year or 360d year !!!!!!! 
    131131         IF( MOD( kt, ikty ) == 0 ) THEN 
    132132            a_fwb_b = a_fwb                           ! mean sea level taking into account the ice+snow 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90

    r6060 r6108  
    368368      ! 
    369369      ! sea-ice timestep and inverse 
    370       rdt_ice   = nn_fsbc * rdttra(1)   
     370      rdt_ice   = nn_fsbc * rdt   
    371371      r1_rdtice = 1._wp / rdt_ice  
    372372 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/SBC/sbctide.F90

    r6069 r6108  
    4949      !!---------------------------------------------------------------------- 
    5050       
    51       IF( nsec_day == NINT(0.5_wp * rdttra(1)) .OR. kt == nit000 ) THEN      ! start a new day 
     51      IF( nsec_day == NINT(0.5_wp * rdt) .OR. kt == nit000 ) THEN      ! start a new day 
    5252         ! 
    5353         IF( kt == nit000 ) THEN 
     
    6464         ! Temporarily set nsec_day to beginning of day. 
    6565         nsec_day_orig = nsec_day 
    66          IF ( nsec_day /= NINT(0.5_wp * rdttra(1)) ) THEN  
    67             kt_tide = kt - (nsec_day - 0.5_wp * rdttra(1))/rdttra(1) 
    68             nsec_day = NINT(0.5_wp * rdttra(1)) 
     66         IF ( nsec_day /= NINT(0.5_wp * rdt) ) THEN  
     67            kt_tide = kt - (nsec_day - 0.5_wp * rdt)/rdt 
     68            nsec_day = NINT(0.5_wp * rdt) 
    6969         ELSE 
    7070            kt_tide = kt  
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/traadv.F90

    r6069 r6108  
    9494      !                                          ! set time step 
    9595      IF( neuler == 0 .AND. kt == nit000 ) THEN     ! at nit000 
    96          r2dtra(:) =  rdttra(:)                          ! = rdtra (restarting with Euler time stepping) 
     96         r2dt = rdt                                 ! = rdt (restarting with Euler time stepping) 
    9797      ELSEIF( kt <= nit000 + 1) THEN                ! at nit000 or nit000+1 
    98          r2dtra(:) = 2._wp * rdttra(:)                   ! = 2 rdttra (leapfrog) 
     98         r2dt = 2._wp * rdt                         ! = 2 rdt (leapfrog) 
    9999      ENDIF 
    100100      ! 
     
    133133         CALL tra_adv_cen    ( kt, nit000, 'TRA',         zun, zvn, zwn     , tsn, tsa, jpts, nn_cen_h, nn_cen_v ) 
    134134      CASE ( np_FCT )                                    ! FCT scheme      : 2nd / 4th order 
    135          CALL tra_adv_fct    ( kt, nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb, tsn, tsa, jpts, nn_fct_h, nn_fct_v ) 
     135         CALL tra_adv_fct    ( kt, nit000, 'TRA', r2dt, zun, zvn, zwn, tsb, tsn, tsa, jpts, nn_fct_h, nn_fct_v ) 
    136136      CASE ( np_FCT_zts )                                ! 2nd order FCT with vertical time-splitting 
    137          CALL tra_adv_fct_zts( kt, nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb, tsn, tsa, jpts        , nn_fct_zts ) 
     137         CALL tra_adv_fct_zts( kt, nit000, 'TRA', r2dt, zun, zvn, zwn, tsb, tsn, tsa, jpts        , nn_fct_zts ) 
    138138      CASE ( np_MUS )                                    ! MUSCL 
    139          CALL tra_adv_mus    ( kt, nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb,      tsa, jpts        , ln_mus_ups )  
     139         CALL tra_adv_mus    ( kt, nit000, 'TRA', r2dt, zun, zvn, zwn, tsb,      tsa, jpts        , ln_mus_ups )  
    140140      CASE ( np_UBS )                                    ! UBS 
    141          CALL tra_adv_ubs    ( kt, nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb, tsn, tsa, jpts        , nn_ubs_v   ) 
     141         CALL tra_adv_ubs    ( kt, nit000, 'TRA', r2dt, zun, zvn, zwn, tsb, tsn, tsa, jpts        , nn_ubs_v   ) 
    142142      CASE ( np_QCK )                                    ! QUICKEST 
    143          CALL tra_adv_qck    ( kt, nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb, tsn, tsa, jpts                     ) 
     143         CALL tra_adv_qck    ( kt, nit000, 'TRA', r2dt, zun, zvn, zwn, tsb, tsn, tsa, jpts                     ) 
     144      ! 
    144145      END SELECT 
    145146      ! 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_fct.F90

    r6060 r6108  
    7070      INTEGER                              , INTENT(in   ) ::   kn_fct_h        ! order of the FCT scheme (=2 or 4) 
    7171      INTEGER                              , INTENT(in   ) ::   kn_fct_v        ! order of the FCT scheme (=2 or 4) 
    72       REAL(wp), DIMENSION(        jpk     ), INTENT(in   ) ::   p2dt            ! vertical profile of tracer time-step 
     72      REAL(wp)                             , INTENT(in   ) ::   p2dt            ! tracer time-step 
    7373      REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(in   ) ::   pun, pvn, pwn   ! 3 ocean velocity components 
    7474      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb, ptn        ! before and now tracer fields 
     
    7676      ! 
    7777      INTEGER  ::   ji, jj, jk, jn                           ! dummy loop indices   
    78       REAL(wp) ::   z2dtt, ztra                              ! local scalar 
     78      REAL(wp) ::   ztra                                     ! local scalar 
    7979      REAL(wp) ::   zfp_ui, zfp_vj, zfp_wk, zC2t_u, zC4t_u   !   -      - 
    8080      REAL(wp) ::   zfm_ui, zfm_vj, zfm_wk, zC2t_v, zC4t_v   !   -      - 
     
    147147         !                
    148148         DO jk = 1, jpkm1     !* trend and after field with monotonic scheme 
    149             z2dtt = p2dt(jk) 
    150149            DO jj = 2, jpjm1 
    151150               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    157156!!gm why tmask added in the two following lines ???    the mask is done in tranxt ! 
    158157                  pta(ji,jj,jk,jn) =   pta(ji,jj,jk,jn)         + ztra   * tmask(ji,jj,jk) 
    159                   zwi(ji,jj,jk)    = ( ptb(ji,jj,jk,jn) + z2dtt * ztra ) * tmask(ji,jj,jk) 
     158                  zwi(ji,jj,jk)    = ( ptb(ji,jj,jk,jn) + p2dt * ztra ) * tmask(ji,jj,jk) 
    160159               END DO 
    161160            END DO 
     
    342341      INTEGER                              , INTENT(in   ) ::   kjpt            ! number of tracers 
    343342      INTEGER                              , INTENT(in   ) ::   kn_fct_zts      ! number of number of vertical sub-timesteps 
    344       REAL(wp), DIMENSION(        jpk     ), INTENT(in   ) ::   p2dt            ! vertical profile of tracer time-step 
     343      REAL(wp)                             , INTENT(in   ) ::   p2dt            ! tracer time-step 
    345344      REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(in   ) ::   pun, pvn, pwn   ! 3 ocean velocity components 
    346345      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb, ptn        ! before and now tracer fields 
     
    348347      ! 
    349348      REAL(wp), DIMENSION( jpk )                           ::   zts             ! length of sub-timestep for vertical advection 
    350       REAL(wp), DIMENSION( jpk )                           ::   zr_p2dt         ! reciprocal of tracer timestep 
     349      REAL(wp)                                             ::   zr_p2dt         ! reciprocal of tracer timestep 
    351350      INTEGER  ::   ji, jj, jk, jl, jn       ! dummy loop indices   
    352351      INTEGER  ::   jtb, jtn, jta   ! sub timestep pointers for leap-frog/euler forward steps 
    353352      INTEGER  ::   jtaken          ! toggle for collecting appropriate fluxes from sub timesteps 
    354353      REAL(wp) ::   z_rzts          ! Fractional length of Euler forward sub-timestep for vertical advection 
    355       REAL(wp) ::   z2dtt, ztra              ! local scalar 
     354      REAL(wp) ::   ztra            ! local scalar 
    356355      REAL(wp) ::   zfp_ui, zfp_vj, zfp_wk   !   -      - 
    357356      REAL(wp) ::   zfm_ui, zfm_vj, zfm_wk   !   -      - 
     
    384383      zwi(:,:,:) = 0._wp 
    385384      z_rzts = 1._wp / REAL( kn_fct_zts, wp ) 
    386       zr_p2dt(:) = 1._wp / p2dt(:) 
     385      zr_p2dt = 1._wp / p2dt 
    387386      ! 
    388387      ! surface & Bottom value : flux set to zero for all tracers 
     
    432431         ! 
    433432         DO jk = 1, jpkm1         ! total advective trend 
    434             z2dtt = p2dt(jk) 
    435433            DO jj = 2, jpjm1 
    436434               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    441439                  !                             ! update and guess with monotonic sheme 
    442440                  pta(ji,jj,jk,jn) =   pta(ji,jj,jk,jn)         + ztra 
    443                   zwi(ji,jj,jk)    = ( ptb(ji,jj,jk,jn) + z2dtt * ztra ) * tmask(ji,jj,jk) 
     441                  zwi(ji,jj,jk)    = ( ptb(ji,jj,jk,jn) + p2dt * ztra ) * tmask(ji,jj,jk) 
    444442               END DO 
    445443            END DO 
     
    496494            IF( jl == 1 ) THEN                        ! Euler forward to kick things off 
    497495               jtb = 1   ;   jtn = 1   ;   jta = 2 
    498                zts(:) = p2dt(:) * z_rzts 
     496               zts(:) = p2dt * z_rzts 
    499497               jtaken = MOD( kn_fct_zts + 1 , 2)            ! Toggle to collect every second flux 
    500498               !                                            ! starting at jl =1 if kn_fct_zts is odd;  
     
    502500            ELSEIF( jl == 2 ) THEN                    ! First leapfrog step 
    503501               jtb = 1   ;   jtn = 2   ;   jta = 3 
    504                zts(:) = 2._wp * p2dt(:) * z_rzts 
     502               zts(:) = 2._wp * p2dt * z_rzts 
    505503            ELSE                                      ! Shuffle pointers for subsequent leapfrog steps 
    506504               jtb = MOD(jtb,3) + 1 
     
    545543            DO jj = 2, jpjm1 
    546544               DO ji = fs_2, fs_jpim1 
    547                   zwz(ji,jj,jk) = ( zwzts(ji,jj,jk) * zr_p2dt(jk) - zwz_sav(ji,jj,jk) ) * wmask(ji,jj,jk) 
     545                  zwz(ji,jj,jk) = ( zwzts(ji,jj,jk) * zr_p2dt - zwz_sav(ji,jj,jk) ) * wmask(ji,jj,jk) 
    548546               END DO 
    549547            END DO 
     
    611609      !!       in-space based differencing for fluid 
    612610      !!---------------------------------------------------------------------- 
    613       REAL(wp), DIMENSION(jpk)         , INTENT(in   ) ::   p2dt            ! vertical profile of tracer time-step 
     611      REAL(wp)                         , INTENT(in   ) ::   p2dt            ! tracer time-step 
    614612      REAL(wp), DIMENSION (jpi,jpj,jpk), INTENT(in   ) ::   pbef, paft      ! before & after field 
    615613      REAL(wp), DIMENSION (jpi,jpj,jpk), INTENT(inout) ::   paa, pbb, pcc   ! monotonic fluxes in the 3 directions 
     
    617615      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    618616      INTEGER  ::   ikm1         ! local integer 
    619       REAL(wp) ::   zpos, zneg, zbt, za, zb, zc, zbig, zrtrn, z2dtt   ! local scalars 
     617      REAL(wp) ::   zpos, zneg, zbt, za, zb, zc, zbig, zrtrn    ! local scalars 
    620618      REAL(wp) ::   zau, zbu, zcu, zav, zbv, zcv, zup, zdo            !   -      - 
    621619      REAL(wp), POINTER, DIMENSION(:,:,:) :: zbetup, zbetdo, zbup, zbdo 
     
    640638      DO jk = 1, jpkm1 
    641639         ikm1 = MAX(jk-1,1) 
    642          z2dtt = p2dt(jk) 
    643640         DO jj = 2, jpjm1 
    644641            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    667664 
    668665               ! up & down beta terms 
    669                zbt = e1e2t(ji,jj) * e3t_n(ji,jj,jk) / z2dtt 
     666               zbt = e1e2t(ji,jj) * e3t_n(ji,jj,jk) / p2dt 
    670667               zbetup(ji,jj,jk) = ( zup            - paft(ji,jj,jk) ) / ( zpos + zrtrn ) * zbt 
    671668               zbetdo(ji,jj,jk) = ( paft(ji,jj,jk) - zdo            ) / ( zneg + zrtrn ) * zbt 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mus.F90

    r6060 r6108  
    7373      INTEGER                              , INTENT(in   ) ::   kjpt            ! number of tracers 
    7474      LOGICAL                              , INTENT(in   ) ::   ld_msc_ups      ! use upstream scheme within muscl 
    75       REAL(wp), DIMENSION(        jpk     ), INTENT(in   ) ::   p2dt            ! vertical profile of tracer time-step 
     75      REAL(wp)                             , INTENT(in   ) ::   p2dt            ! tracer time-step 
    7676      REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(in   ) ::   pun, pvn, pwn   ! 3 ocean velocity components 
    7777      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb             ! before tracer field 
     
    8282      REAL(wp) ::   zu, z0u, zzwx, zw    ! local scalars 
    8383      REAL(wp) ::   zv, z0v, zzwy, z0w   !   -      - 
    84       REAL(wp) ::   zdt, zalpha          !   -      - 
     84      REAL(wp) ::   zalpha               !   -      - 
    8585      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zslpx, zslpy   ! 3D workspace 
    8686      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zwx  , zwy     ! -      -  
     
    161161         ! 
    162162         DO jk = 1, jpkm1                 !-- MUSCL horizontal advective fluxes 
    163             zdt  = p2dt(jk) 
    164163            DO jj = 2, jpjm1 
    165164               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    167166                  z0u = SIGN( 0.5, pun(ji,jj,jk) ) 
    168167                  zalpha = 0.5 - z0u 
    169                   zu  = z0u - 0.5 * pun(ji,jj,jk) * zdt * r1_e1e2u(ji,jj) / e3u_n(ji,jj,jk) 
     168                  zu  = z0u - 0.5 * pun(ji,jj,jk) * p2dt * r1_e1e2u(ji,jj) / e3u_n(ji,jj,jk) 
    170169                  zzwx = ptb(ji+1,jj,jk,jn) + xind(ji,jj,jk) * zu * zslpx(ji+1,jj,jk) 
    171170                  zzwy = ptb(ji  ,jj,jk,jn) + xind(ji,jj,jk) * zu * zslpx(ji  ,jj,jk) 
     
    174173                  z0v = SIGN( 0.5, pvn(ji,jj,jk) ) 
    175174                  zalpha = 0.5 - z0v 
    176                   zv  = z0v - 0.5 * pvn(ji,jj,jk) * zdt * r1_e1e2v(ji,jj) * e3v_n(ji,jj,jk) 
     175                  zv  = z0v - 0.5 * pvn(ji,jj,jk) * p2dt * r1_e1e2v(ji,jj) * e3v_n(ji,jj,jk) 
    177176                  zzwx = ptb(ji,jj+1,jk,jn) + xind(ji,jj,jk) * zv * zslpy(ji,jj+1,jk) 
    178177                  zzwy = ptb(ji,jj  ,jk,jn) + xind(ji,jj,jk) * zv * zslpy(ji,jj  ,jk) 
     
    232231         END DO 
    233232         DO jk = 1, jpk-2                 !-- vertical advective flux 
    234             zdt  = p2dt(jk) 
    235233            DO jj = 2, jpjm1       
    236234               DO ji = fs_2, fs_jpim1   ! vector opt. 
    237235                  z0w = SIGN( 0.5, pwn(ji,jj,jk+1) ) 
    238236                  zalpha = 0.5 + z0w 
    239                   zw  = z0w - 0.5 * pwn(ji,jj,jk+1) * zdt * r1_e1e2t(ji,jj) / e3w_n(ji,jj,jk+1) 
     237                  zw  = z0w - 0.5 * pwn(ji,jj,jk+1) * p2dt * r1_e1e2t(ji,jj) / e3w_n(ji,jj,jk+1) 
    240238                  zzwx = ptb(ji,jj,jk+1,jn) + xind(ji,jj,jk) * zw * zslpx(ji,jj,jk+1) 
    241239                  zzwy = ptb(ji,jj,jk  ,jn) + xind(ji,jj,jk) * zw * zslpx(ji,jj,jk  ) 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_qck.F90

    r6060 r6108  
    8787      CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype          ! =TRA or TRC (tracer indicator) 
    8888      INTEGER                              , INTENT(in   ) ::   kjpt            ! number of tracers 
    89       REAL(wp), DIMENSION(        jpk     ), INTENT(in   ) ::   p2dt            ! vertical profile of tracer time-step 
     89      REAL(wp)                             , INTENT(in   ) ::   p2dt            ! tracer time-step 
    9090      REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(in   ) ::   pun, pvn, pwn   ! 3 ocean velocity components 
    9191      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb, ptn        ! before and now tracer fields 
     
    125125      CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype     ! =TRA or TRC (tracer indicator) 
    126126      INTEGER                              , INTENT(in   ) ::   kjpt       ! number of tracers 
    127       REAL(wp), DIMENSION(        jpk     ), INTENT(in   ) ::   p2dt       ! vertical profile of tracer time-step 
     127      REAL(wp)                             , INTENT(in   ) ::   p2dt       ! tracer time-step 
    128128      REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(in   ) ::   pun        ! i-velocity components 
    129129      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb, ptn   ! before and now tracer fields 
     
    131131      !! 
    132132      INTEGER  ::   ji, jj, jk, jn   ! dummy loop indices 
    133       REAL(wp) ::   ztra, zbtr, zdir, zdx, zdt, zmsk   ! local scalars 
     133      REAL(wp) ::   ztra, zbtr, zdir, zdx, zmsk   ! local scalars 
    134134      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zwx, zfu, zfc, zfd 
    135135      !---------------------------------------------------------------------- 
     
    166166         ! 
    167167         DO jk = 1, jpkm1   
    168             zdt =  p2dt(jk) 
    169168            DO jj = 2, jpjm1 
    170169               DO ji = fs_2, fs_jpim1   ! vector opt.    
    171170                  zdir = 0.5 + SIGN( 0.5, pun(ji,jj,jk) )   ! if pun > 0 : zdir = 1 otherwise zdir = 0  
    172171                  zdx = ( zdir * e1t(ji,jj) + ( 1. - zdir ) * e1t(ji+1,jj) ) * e2u(ji,jj) * e3u_n(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) 
    174173                  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 
    175174                  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 
     
    242241      CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype     ! =TRA or TRC (tracer indicator) 
    243242      INTEGER                              , INTENT(in   ) ::   kjpt       ! number of tracers 
    244       REAL(wp), DIMENSION(        jpk     ), INTENT(in   ) ::   p2dt       ! vertical profile of tracer time-step 
     243      REAL(wp)                             , INTENT(in   ) ::   p2dt       ! tracer time-step 
    245244      REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(in   ) ::   pvn        ! j-velocity components 
    246245      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb, ptn   ! before and now tracer fields 
     
    248247      !! 
    249248      INTEGER  :: ji, jj, jk, jn   ! dummy loop indices 
    250       REAL(wp) :: ztra, zbtr, zdir, zdx, zdt, zmsk   ! local scalars 
     249      REAL(wp) :: ztra, zbtr, zdir, zdx, zmsk   ! local scalars 
    251250      REAL(wp), POINTER, DIMENSION(:,:,:) :: zwy, zfu, zfc, zfd 
    252251      !---------------------------------------------------------------------- 
     
    289288         ! 
    290289         DO jk = 1, jpkm1   
    291             zdt =  p2dt(jk) 
    292290            DO jj = 2, jpjm1 
    293291               DO ji = fs_2, fs_jpim1   ! vector opt.    
    294292                  zdir = 0.5 + SIGN( 0.5, pvn(ji,jj,jk) )   ! if pun > 0 : zdir = 1 otherwise zdir = 0  
    295293                  zdx = ( zdir * e2t(ji,jj) + ( 1. - zdir ) * e2t(ji,jj+1) ) * e1v(ji,jj) * e3v_n(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) 
    297295                  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 
    298296                  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_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_ubs.F90

    r6060 r6108  
    8686      INTEGER                              , INTENT(in   ) ::   kjpt            ! number of tracers 
    8787      INTEGER                              , INTENT(in   ) ::   kn_ubs_v        ! number of tracers 
    88       REAL(wp), DIMENSION(        jpk     ), INTENT(in   ) ::   p2dt            ! vertical profile of tracer time-step 
     88      REAL(wp)                             , INTENT(in   ) ::   p2dt            ! tracer time-step 
    8989      REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(in   ) ::   pun, pvn, pwn   ! 3 ocean transport components 
    9090      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb, ptn        ! before and now tracer fields 
     
    9292      ! 
    9393      INTEGER  ::   ji, jj, jk, jn   ! dummy loop indices 
    94       REAL(wp) ::   ztra, zbtr, zcoef, z2dtt                       ! local scalars 
     94      REAL(wp) ::   ztra, zbtr, zcoef                       ! local scalars 
    9595      REAL(wp) ::   zfp_ui, zfm_ui, zcenut, ztak, zfp_wk, zfm_wk   !   -      - 
    9696      REAL(wp) ::   zfp_vj, zfm_vj, zcenvt, zeeu, zeev, z_hdivn    !   -      - 
     
    213213            ! 
    214214            DO jk = 1, jpkm1           !* trend and after field with monotonic scheme 
    215                z2dtt = p2dt(jk) 
    216215               DO jj = 2, jpjm1 
    217216                  DO ji = fs_2, fs_jpim1   ! vector opt. 
    218217                     ztak = - ( ztw(ji,jj,jk) - ztw(ji,jj,jk+1) ) * r1_e1e2t(ji,jj) / e3t_n(ji,jj,jk) 
    219218                     pta(ji,jj,jk,jn) =   pta(ji,jj,jk,jn) +  ztak  
    220                      zti(ji,jj,jk)    = ( ptb(ji,jj,jk,jn) + z2dtt * ( ztak + zltu(ji,jj,jk) ) ) * tmask(ji,jj,jk) 
     219                     zti(ji,jj,jk)    = ( ptb(ji,jj,jk,jn) + p2dt * ( ztak + zltu(ji,jj,jk) ) ) * tmask(ji,jj,jk) 
    221220                  END DO 
    222221               END DO 
     
    294293      !!       in-space based differencing for fluid 
    295294      !!---------------------------------------------------------------------- 
    296       REAL(wp), INTENT(in   ), DIMENSION(jpk)          ::   p2dt   ! vertical profile of tracer time-step 
     295      REAL(wp), INTENT(in   )                          ::   p2dt   ! tracer time-step 
    297296      REAL(wp),                DIMENSION (jpi,jpj,jpk) ::   pbef   ! before field 
    298297      REAL(wp), INTENT(inout), DIMENSION (jpi,jpj,jpk) ::   paft   ! after field 
     
    301300      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    302301      INTEGER  ::   ikm1         ! local integer 
    303       REAL(wp) ::   zpos, zneg, zbt, za, zb, zc, zbig, zrtrn, z2dtt   ! local scalars 
     302      REAL(wp) ::   zpos, zneg, zbt, za, zb, zc, zbig, zrtrn   ! local scalars 
    304303      REAL(wp), POINTER, DIMENSION(:,:,:) :: zbetup, zbetdo 
    305304      !!---------------------------------------------------------------------- 
     
    350349      ! --------------------------------------------------- 
    351350      DO jk = 1, jpkm1 
    352          z2dtt = p2dt(jk) 
    353351         DO jj = 2, jpjm1 
    354352            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    357355               zneg = MAX( 0., pcc(ji  ,jj  ,jk  ) ) - MIN( 0., pcc(ji  ,jj  ,jk+1) ) 
    358356               ! up & down beta terms 
    359                zbt = e1e2t(ji,jj) * e3t_n(ji,jj,jk) / z2dtt 
     357               zbt = e1e2t(ji,jj) * e3t_n(ji,jj,jk) / p2dt 
    360358               zbetup(ji,jj,jk) = ( zbetup(ji,jj,jk) - paft(ji,jj,jk) ) / (zpos+zrtrn) * zbt 
    361359               zbetdo(ji,jj,jk) = ( paft(ji,jj,jk) - zbetdo(ji,jj,jk) ) / (zneg+zrtrn) * zbt 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso.F90

    r6069 r6108  
    128128      ENDIF 
    129129      !                                               ! set time step size (Euler/Leapfrog) 
    130       IF( neuler == 0 .AND. kt == nit000 ) THEN   ;   z2dt =     rdttra(1)      ! at nit000   (Euler) 
    131       ELSE                                        ;   z2dt = 2.* rdttra(1)      !             (Leapfrog) 
     130      IF( neuler == 0 .AND. kt == nit000 ) THEN   ;   z2dt =     rdt      ! at nit000   (Euler) 
     131      ELSE                                        ;   z2dt = 2.* rdt      !             (Leapfrog) 
    132132      ENDIF 
    133133      z1_2dt = 1._wp / z2dt 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_triad.F90

    r6060 r6108  
    113113      ENDIF 
    114114      !                                               ! set time step size (Euler/Leapfrog) 
    115       IF( neuler == 0 .AND. kt == kit000 ) THEN   ;   z2dt =     rdttra(1)      ! at nit000   (Euler) 
    116       ELSE                                        ;   z2dt = 2.* rdttra(1)      !             (Leapfrog) 
     115      IF( neuler == 0 .AND. kt == kit000 ) THEN   ;   z2dt =     rdt      ! at nit000   (Euler) 
     116      ELSE                                        ;   z2dt = 2.* rdt      !             (Leapfrog) 
    117117      ENDIF 
    118118      z1_2dt = 1._wp / z2dt 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90

    r6069 r6108  
    116116  
    117117      ! set time step size (Euler/Leapfrog) 
    118       IF( neuler == 0 .AND. kt == nit000 ) THEN   ;   r2dtra(:) =     rdttra(:)      ! at nit000             (Euler) 
    119       ELSEIF( kt <= nit000 + 1 )           THEN   ;   r2dtra(:) = 2._wp* rdttra(:)      ! at nit000 or nit000+1 (Leapfrog) 
     118      IF( neuler == 0 .AND. kt == nit000 ) THEN   ;   r2dt =     rdt      ! at nit000             (Euler) 
     119      ELSEIF( kt <= nit000 + 1 )           THEN   ;   r2dt = 2._wp* rdt   ! at nit000 or nit000+1 (Leapfrog) 
    120120      ENDIF 
    121121 
     
    140140      ELSE                                            ! Leap-Frog + Asselin filter time stepping 
    141141         ! 
    142          IF( ln_linssh ) THEN   ;   CALL tra_nxt_fix( kt, nit000,         'TRA', tsb, tsn, tsa, jpts )  ! linear free surface  
    143          ELSE                   ;   CALL tra_nxt_vvl( kt, nit000, rdttra, 'TRA', tsb, tsn, tsa,   & 
     142         IF( ln_linssh ) THEN   ;   CALL tra_nxt_fix( kt, nit000,      'TRA', tsb, tsn, tsa, jpts )  ! linear free surface  
     143         ELSE                   ;   CALL tra_nxt_vvl( kt, nit000, rdt, 'TRA', tsb, tsn, tsa,   & 
    144144           &                                                                sbc_tsc, sbc_tsc_b, jpts )  ! non-linear free surface 
    145145         ENDIF 
     
    154154      IF( l_trdtra ) THEN      ! trend of the Asselin filter (tb filtered - tb)/dt      
    155155         DO jk = 1, jpkm1 
    156             zfact = 1._wp / r2dtra(jk)              
     156            zfact = 1._wp / r2dt              
    157157            ztrdt(:,:,jk) = ( tsb(:,:,jk,jp_tem) - ztrdt(:,:,jk) ) * zfact 
    158158            ztrds(:,:,jk) = ( tsb(:,:,jk,jp_sal) - ztrds(:,:,jk) ) * zfact 
     
    238238      INTEGER                              , INTENT(in   ) ::  kt        ! ocean time-step index 
    239239      INTEGER                              , INTENT(in   ) ::  kit000    ! first time step index 
    240       REAL(wp), DIMENSION(jpk)             , INTENT(in   ) ::  p2dt      ! time-step 
     240      REAL(wp)                             , INTENT(in   ) ::  p2dt      ! time-step 
    241241      CHARACTER(len=3)                     , INTENT(in   ) ::  cdtype    ! =TRA or TRC (tracer indicator) 
    242242      INTEGER                              , INTENT(in   ) ::  kjpt      ! number of tracers 
     
    271271      DO jn = 1, kjpt       
    272272         DO jk = 1, jpkm1 
    273             zfact1 = atfp * p2dt(jk) 
     273            zfact1 = atfp * p2dt 
    274274            zfact2 = zfact1 * r1_rau0 
    275275            DO jj = 2, jpjm1 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf.F90

    r6060 r6108  
    6565      ! 
    6666      IF( neuler == 0 .AND. kt == nit000 ) THEN     ! at nit000 
    67          r2dtra(:) =  rdttra(:)                          ! = rdtra (restarting with Euler time stepping) 
     67         r2dt =  rdt                          ! = rdt (restarting with Euler time stepping) 
    6868      ELSEIF( kt <= nit000 + 1) THEN                ! at nit000 or nit000+1 
    69          r2dtra(:) = 2. * rdttra(:)                      ! = 2 rdttra (leapfrog) 
     69         r2dt = 2. * rdt                      ! = 2 rdt (leapfrog) 
    7070      ENDIF 
    7171      ! 
     
    7777      ! 
    7878      SELECT CASE ( nzdf )                       ! compute lateral mixing trend and add it to the general trend 
    79       CASE ( 0 )    ;    CALL tra_zdf_exp( kt, nit000, 'TRA', r2dtra, nn_zdfexp, tsb, tsa, jpts )  !   explicit scheme  
    80       CASE ( 1 )    ;    CALL tra_zdf_imp( kt, nit000, 'TRA', r2dtra,            tsb, tsa, jpts )  !   implicit scheme  
     79      CASE ( 0 )    ;    CALL tra_zdf_exp( kt, nit000, 'TRA', r2dt, nn_zdfexp, tsb, tsa, jpts )  !   explicit scheme  
     80      CASE ( 1 )    ;    CALL tra_zdf_imp( kt, nit000, 'TRA', r2dt,            tsb, tsa, jpts )  !   implicit scheme  
    8181      END SELECT 
    8282!!gm WHY here !   and I don't like that ! 
     
    8989      IF( l_trdtra )   THEN                      ! save the vertical diffusive trends for further diagnostics 
    9090         DO jk = 1, jpkm1 
    91             ztrdt(:,:,jk) = ( ( tsa(:,:,jk,jp_tem) - tsb(:,:,jk,jp_tem) ) / r2dtra(jk) ) - ztrdt(:,:,jk) 
    92             ztrds(:,:,jk) = ( ( tsa(:,:,jk,jp_sal) - tsb(:,:,jk,jp_sal) ) / r2dtra(jk) ) - ztrds(:,:,jk) 
     91            ztrdt(:,:,jk) = ( ( tsa(:,:,jk,jp_tem) - tsb(:,:,jk,jp_tem) ) / r2dt ) - ztrdt(:,:,jk) 
     92            ztrds(:,:,jk) = ( ( tsa(:,:,jk,jp_sal) - tsb(:,:,jk,jp_sal) ) / r2dt ) - ztrds(:,:,jk) 
    9393         END DO 
    9494!!gm this should be moved in trdtra.F90 and done on all trends 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_exp.F90

    r6060 r6108  
    7777      INTEGER                              , INTENT(in   ) ::   kjpt     ! number of tracers 
    7878      INTEGER                              , INTENT(in   ) ::   ksts     ! number of sub-time step 
    79       REAL(wp), DIMENSION(        jpk     ), INTENT(in   ) ::   p2dt     ! vertical profile of tracer time-step 
     79      REAL(wp)                             , INTENT(in   ) ::   p2dt     ! vertical profile of tracer time-step 
    8080      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb      ! before and now tracer fields 
    8181      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) ::   pta      ! in: tracer trend ; out: after tracer field  
     
    8383      INTEGER  ::  ji, jj, jk, jn, jl   ! dummy loop indices 
    8484      REAL(wp) ::  z1_ksts, ze3tr       ! local scalars 
    85       REAL(wp) ::  ztra, ze3tb, z2dt    !   -      - 
     85      REAL(wp) ::  ztra, ze3tb    !   -      - 
    8686      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztb, zwf 
    8787      !!--------------------------------------------------------------------- 
     
    123123            ! 
    124124            DO jk = 1, jpkm1           ! 2nd vertical derivative   ==> tracer at kt+l*2*rdt/nn_zdfexp 
    125                z2dt = z1_ksts * p2dt(jk)  
    126125               DO jj = 2, jpjm1  
    127126                  DO ji = fs_2, fs_jpim1   ! vector opt. 
    128                      ztb(ji,jj,jk) = ztb(ji,jj,jk) + z2dt * ( zwf(ji,jj,jk) - zwf(ji,jj,jk+1) ) / e3t_n(ji,jj,jk) 
     127                     ztb(ji,jj,jk) = ztb(ji,jj,jk) + p2dt * ( zwf(ji,jj,jk) - zwf(ji,jj,jk+1) ) / e3t_n(ji,jj,jk) 
    129128                  END DO 
    130129               END DO 
     
    137136               DO ji = fs_2, fs_jpim1   ! vector opt. 
    138137                  ze3tb = e3t_b(ji,jj,jk) / e3t_n(ji,jj,jk) 
    139                   ztra  = ( ztb(ji,jj,jk) - ptb(ji,jj,jk,jn) ) + p2dt(jk) * pta(ji,jj,jk,jn)  ! total trend * 2dt  
     138                  ztra  = ( ztb(ji,jj,jk) - ptb(ji,jj,jk,jn) ) + p2dt * pta(ji,jj,jk,jn)  ! total trend * 2dt  
    140139                  pta(ji,jj,jk,jn) = ( ze3tb * ptb(ji,jj,jk,jn) + ztra ) * tmask(ji,jj,jk)    ! after tracer 
    141140               END DO 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_imp.F90

    r6060 r6108  
    7777      CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype   ! =TRA or TRC (tracer indicator) 
    7878      INTEGER                              , INTENT(in   ) ::   kjpt     ! number of tracers 
    79       REAL(wp), DIMENSION(        jpk     ), INTENT(in   ) ::   p2dt     ! vertical profile of tracer time-step 
     79      REAL(wp)                             , INTENT(in   ) ::   p2dt     ! tracer time-step 
    8080      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb      ! before and now tracer fields 
    8181      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) ::   pta      ! in: tracer trend ; out: after tracer field 
     
    136136                  DO ji = fs_2, fs_jpim1   ! vector opt. 
    137137!!gm BUG  I think, use e3w_a instead of e3w_n 
    138                      zwi(ji,jj,jk) = - p2dt(jk) * zwt(ji,jj,jk  ) / e3w_n(ji,jj,jk  ) 
    139                      zws(ji,jj,jk) = - p2dt(jk) * zwt(ji,jj,jk+1) / e3w_n(ji,jj,jk+1) 
     138                     zwi(ji,jj,jk) = - p2dt * zwt(ji,jj,jk  ) / e3w_n(ji,jj,jk  ) 
     139                     zws(ji,jj,jk) = - p2dt * zwt(ji,jj,jk+1) / e3w_n(ji,jj,jk+1) 
    140140                     zwd(ji,jj,jk) = e3t_a(ji,jj,jk) - zwi(ji,jj,jk) - zws(ji,jj,jk) 
    141141                 END DO 
     
    179179         DO jj = 2, jpjm1           !* 2nd recurrence:    Zk = Yk - Ik / Tk-1  Zk-1 
    180180            DO ji = fs_2, fs_jpim1 
    181                pta(ji,jj,1,jn) = e3t_b(ji,jj,1) * ptb(ji,jj,1,jn) + p2dt(1) * e3t_n(ji,jj,1) * pta(ji,jj,1,jn) 
     181               pta(ji,jj,1,jn) = e3t_b(ji,jj,1) * ptb(ji,jj,1,jn) + p2dt * e3t_n(ji,jj,1) * pta(ji,jj,1,jn) 
    182182            END DO 
    183183         END DO 
     
    185185            DO jj = 2, jpjm1 
    186186               DO ji = fs_2, fs_jpim1 
    187                   zrhs = e3t_b(ji,jj,jk) * ptb(ji,jj,jk,jn) + p2dt(jk) * e3t_n(ji,jj,jk) * pta(ji,jj,jk,jn)   ! zrhs=right hand side 
     187                  zrhs = e3t_b(ji,jj,jk) * ptb(ji,jj,jk,jn) + p2dt * e3t_n(ji,jj,jk) * pta(ji,jj,jk,jn)   ! zrhs=right hand side 
    188188                  pta(ji,jj,jk,jn) = zrhs - zwi(ji,jj,jk) / zwt(ji,jj,jk-1) * pta(ji,jj,jk-1,jn) 
    189189               END DO 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRD/trdmxl.F90

    r6060 r6108  
    3030   USE zdfddm          ! ocean vertical physics: double diffusion 
    3131   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    32    USE diadimg         ! dimg direct access file format output 
    3332   USE trdmxl_rst      ! restart for diagnosing the ML trends 
    3433   ! 
     
    295294      !!  
    296295      !! ** Purpose :  Compute and cumulate the mixed layer trends over an analysis 
    297       !!               period, and write NetCDF (or dimg) outputs. 
     296      !!               period, and write NetCDF outputs. 
    298297      !! 
    299298      !! ** Method/usage : 
     
    346345      REAL(wp), POINTER, DIMENSION(:,:  ) ::  ztmltot2, zsmltot2, ztmlres2, zsmlres2, ztmlatf2, zsmlatf2, ztmltrdm2, zsmltrdm2   
    347346      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztmltrd2, zsmltrd2   ! only needed for mean diagnostics 
    348 #if defined key_dimgout 
    349       INTEGER ::  iyear,imon,iday 
    350       CHARACTER(LEN=80) :: cltext, clmode 
    351 #endif 
    352347      !!---------------------------------------------------------------------- 
    353348   
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRD/trdmxl_rst.F90

    r5341 r6108  
    6262            WRITE(numout,*) 
    6363            SELECT CASE ( jprstlib ) 
    64             CASE ( jprstdimg )   ;   WRITE(numout,*) '             open ocean restart_mxl binary file: '//clname 
    6564            CASE DEFAULT         ;   WRITE(numout,*) '             open ocean restart_mxl NetCDF file: '//clname 
    6665            END SELECT 
     
    147146      clpath = TRIM(cn_ocerst_indir) 
    148147      IF( clpath(LEN_TRIM(clpath):) /= '/' ) clpath = TRIM(clpath) // '/' 
    149  
    150       IF ( jprstlib == jprstdimg ) THEN 
    151          ! eventually read netcdf file (monobloc)  for restarting on different number of processors 
    152          ! if {cn_trdrst_in}.nc exists, then set jlibalt to jpnf90 
    153          INQUIRE( FILE = TRIM(clpath)//TRIM(cn_trdrst_in)//'.nc', EXIST = llok ) 
    154          IF ( llok ) THEN   ;   jlibalt = jpnf90    
    155          ELSE               ;   jlibalt = jprstlib    
    156          ENDIF 
    157       ENDIF 
    158  
    159148      CALL iom_open( TRIM(clpath)//TRIM(cn_trdrst_in), inum, kiolib = jlibalt )  
    160149 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRD/trdtra.F90

    r6060 r6108  
    3737 
    3838   PUBLIC   trd_tra   ! called by all tra_... modules 
    39  
    40    REAL(wp) ::   r2dt   ! time-step, = 2 rdttra except at nit000 (=rdttra) if neuler=0 
    4139 
    4240   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   trdtx, trdty, trdt   ! use to store the temperature trends 
     
    228226      !!---------------------------------------------------------------------- 
    229227 
    230       IF( neuler == 0 .AND. kt == nit000    ) THEN   ;   r2dt =      rdt      ! = rdtra (restart with Euler time stepping) 
    231       ELSEIF(               kt <= nit000 + 1) THEN   ;   r2dt = 2. * rdt      ! = 2 rdttra (leapfrog) 
     228      IF( neuler == 0 .AND. kt == nit000    ) THEN   ;   r2dt =      rdt      ! = rdt (restart with Euler time stepping) 
     229      ELSEIF(               kt <= nit000 + 1) THEN   ;   r2dt = 2. * rdt      ! = 2 rdt (leapfrog) 
    232230      ENDIF 
    233231 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/TRD/trdvor.F90

    r6060 r6108  
    8484      !!  
    8585      !! ** Purpose :  computation of cumulated trends over analysis period 
    86       !!               and make outputs (NetCDF or DIMG format) 
     86      !!               and make outputs (NetCDF format) 
    8787      !!---------------------------------------------------------------------- 
    8888      REAL(wp), DIMENSION(:,:,:), INTENT(inout) ::   putrd, pvtrd   ! U and V trends  
     
    317317      !!  
    318318      !! ** Purpose :  computation of cumulated trends over analysis period 
    319       !!               and make outputs (NetCDF or DIMG format) 
     319      !!               and make outputs (NetCDF format) 
    320320      !!---------------------------------------------------------------------- 
    321321      INTEGER                   , INTENT(in   ) ::   kt             ! time step 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/SAS_SRC/daymod.F90

    r5563 r6108  
    2020   !! 
    2121   !!   we suppose that the time step is deviding the number of second of in a day 
    22    !!             ---> MOD( rday, rdttra(1) ) == 0 
     22   !!             ---> MOD( rday, rdt ) == 0 
    2323   !! 
    2424   !!           ----------- WARNING ----------- 
     
    7676            &           'You must do a restart at higher frequency (or remove this stop and recompile the code in I8)' ) 
    7777      ENDIF 
    78       ! all calendar staff is based on the fact that MOD( rday, rdttra(1) ) == 0 
    79       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( rdttra(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(      rdttra(1)) 
    85       ndt05   = NINT(0.5 * rdttra(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    ) 
    8686 
    8787      ! ==> clem: here we read the ocean restart for the date (only if it exists) 
     
    224224      nsec_week  = nsec_week  + ndt 
    225225      nsec_day   = nsec_day   + ndt                 
    226       adatrj  = adatrj  + rdttra(1) / rday 
    227       fjulday = fjulday + rdttra(1) / rday 
     226      adatrj  = adatrj  + rdt / rday 
     227      fjulday = fjulday + rdt / rday 
    228228      IF( ABS(fjulday - REAL(NINT(fjulday),wp)) < zprec )   fjulday = REAL(NINT(fjulday),wp)   ! avoid truncation error 
    229229      IF( ABS(adatrj  - REAL(NINT(adatrj ),wp)) < zprec )   adatrj  = REAL(NINT(adatrj ),wp)   ! avoid truncation error 
     
    340340               ! parameters correspondting to nit000 - 1 (as we start the step loop with a call to day) 
    341341               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 ) * rdttra(1) ) / rday 
     342               adatrj = ( REAL( nit000-1, wp ) * rdt ) / rday 
    343343               ! note this is wrong if time step has changed during run 
    344344            ENDIF 
     
    346346            ! parameters correspondting to nit000 - 1 (as we start the step loop with a call to day) 
    347347            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 ) * rdttra(1) ) / rday 
     348            adatrj = ( REAL( nit000-1, wp ) * rdt ) / rday 
    349349         ENDIF 
    350350         IF( ABS(adatrj  - REAL(NINT(adatrj),wp)) < 0.1 / rday )   adatrj = REAL(NINT(adatrj),wp)   ! avoid truncation error 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/SAS_SRC/diawri.F90

    r6060 r6108  
    3636   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    3737   USE in_out_manager  ! I/O manager 
    38    USE diadimg         ! dimg direct access file format output 
    3938   USE diaar5, ONLY :   lk_diaar5 
    4039   USE iom 
     
    7978  END FUNCTION dia_wri_alloc 
    8079 
    81 #if defined key_dimgout 
    82    !!---------------------------------------------------------------------- 
    83    !!   'key_dimgout'                                      DIMG output file 
    84    !!---------------------------------------------------------------------- 
    85 #   include "diawri_dimg.h90" 
    86  
    87 #else 
    8880   !!---------------------------------------------------------------------- 
    8981   !!   Default option                                   NetCDF output file 
    9082   !!---------------------------------------------------------------------- 
    91 # if defined key_iomput 
     83#if defined key_iomput 
    9284   !!---------------------------------------------------------------------- 
    9385   !!   'key_iomput'                                        use IOM library 
     
    137129      INTEGER  ::   ierr                                     ! error code return from allocation 
    138130      INTEGER  ::   iimi, iima, ipk, it, itmod, ijmi, ijma   ! local integers 
    139       REAL(wp) ::   zsto, zout, zmax, zjulian, zdt           ! local scalars 
     131      REAL(wp) ::   zsto, zout, zmax, zjulian                ! local scalars 
    140132      !!---------------------------------------------------------------------- 
    141133      !  
     
    156148 
    157149      ! Define frequency of output and means 
    158       zdt = rdt 
    159       IF( nacc == 1 ) zdt = rdtmin 
    160150      IF( ln_mskland )   THEN   ;   clop = "only(x)"   ! put 1.e+20 on land (very expensive!!) 
    161151      ELSE                      ;   clop = "x"         ! no use of the mask value (require less cpu time) 
    162152      ENDIF 
    163153#if defined key_diainstant 
    164       zsto = nwrite * zdt 
     154      zsto = nwrite * rdt 
    165155      clop = "inst("//TRIM(clop)//")" 
    166156#else 
    167       zsto=zdt 
     157      zsto=rdt 
    168158      clop = "ave("//TRIM(clop)//")" 
    169159#endif 
    170       zout = nwrite * zdt 
    171       zmax = ( nitend - nit000 + 1 ) * zdt 
     160      zout = nwrite * rdt 
     161      zmax = ( nitend - nit000 + 1 ) * rdt 
    172162 
    173163      ! Define indices of the horizontal output zoom and vertical limit storage 
     
    211201         CALL histbeg( clhstnam, jpi, glamt, jpj, gphit,           &  ! Horizontal grid: glamt and gphit 
    212202            &          iimi, iima-iimi+1, ijmi, ijma-ijmi+1,       & 
    213             &          nit000-1, zjulian, zdt, nh_T, nid_T, domain_id=nidom, snc4chunks=snc4set ) 
     203            &          nit000-1, zjulian, rdt, nh_T, nid_T, domain_id=nidom, snc4chunks=snc4set ) 
    214204         CALL histvert( nid_T, "deptht", "Vertical T levels",      &  ! Vertical grid: gdept 
    215205            &           "m", ipk, gdept_1d, nz_T, "down" ) 
     
    223213         CALL histbeg( clhstnam, jpi, glamu, jpj, gphiu,           &  ! Horizontal grid: glamu and gphiu 
    224214            &          iimi, iima-iimi+1, ijmi, ijma-ijmi+1,       & 
    225             &          nit000-1, zjulian, zdt, nh_U, nid_U, domain_id=nidom, snc4chunks=snc4set ) 
     215            &          nit000-1, zjulian, rdt, nh_U, nid_U, domain_id=nidom, snc4chunks=snc4set ) 
    226216         CALL histvert( nid_U, "depthu", "Vertical U levels",      &  ! Vertical grid: gdept 
    227217            &           "m", ipk, gdept_1d, nz_U, "down" ) 
     
    235225         CALL histbeg( clhstnam, jpi, glamv, jpj, gphiv,           &  ! Horizontal grid: glamv and gphiv 
    236226            &          iimi, iima-iimi+1, ijmi, ijma-ijmi+1,       & 
    237             &          nit000-1, zjulian, zdt, nh_V, nid_V, domain_id=nidom, snc4chunks=snc4set ) 
     227            &          nit000-1, zjulian, rdt, nh_V, nid_V, domain_id=nidom, snc4chunks=snc4set ) 
    238228         CALL histvert( nid_V, "depthv", "Vertical V levels",      &  ! Vertical grid : gdept 
    239229            &          "m", ipk, gdept_1d, nz_V, "down" ) 
     
    331321      ! 
    332322   END SUBROUTINE dia_wri 
    333 # endif 
    334  
    335323#endif 
    336324 
     
    355343      INTEGER  ::   id_i , nz_i, nh_i        
    356344      INTEGER, DIMENSION(1) ::   idex             ! local workspace 
    357       REAL(wp) ::   zsto, zout, zmax, zjulian, zdt 
     345      REAL(wp) ::   zsto, zout, zmax, zjulian 
    358346      !!---------------------------------------------------------------------- 
    359347      !  
     
    366354      clname = cdfile_name 
    367355      IF( .NOT. Agrif_Root() ) clname = TRIM(Agrif_CFixed())//'_'//TRIM(clname) 
    368       zdt  = rdt 
    369356      zsto = rdt 
    370357      clop = "inst(x)"           ! no use of the mask value (require less cpu time) 
    371358      zout = rdt 
    372       zmax = ( nitend - nit000 + 1 ) * zdt 
     359      zmax = ( nitend - nit000 + 1 ) * rdt 
    373360 
    374361      IF(lwp) WRITE(numout,*) 
     
    385372      zjulian = zjulian - adatrj   !   set calendar origin to the beginning of the experiment 
    386373      CALL histbeg( clname, jpi, glamt, jpj, gphit,   & 
    387           1, jpi, 1, jpj, nit000-1, zjulian, zdt, nh_i, id_i, domain_id=nidom, snc4chunks=snc4set ) ! Horizontal grid : glamt and gphit 
     374          1, jpi, 1, jpj, nit000-1, zjulian, rdt, nh_i, id_i, domain_id=nidom, snc4chunks=snc4set ) ! Horizontal grid : glamt and gphit 
    388375      CALL histvert( id_i, "deptht", "Vertical T levels",   &    ! Vertical grid : gdept 
    389376          "m", jpk, gdept_1d, nz_i, "down") 
     
    428415      ! ----------------- 
    429416      CALL histclo( id_i ) 
    430 #if ! defined key_iomput && ! defined key_dimgout 
     417#if ! defined key_iomput 
    431418      IF( ninist /= 1  ) THEN 
    432419         CALL histclo( nid_T ) 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/TOP_SRC/MY_TRC/trcsms_my_trc.F90

    r5385 r6108  
    1818   USE trd_oce 
    1919   USE trdtrc 
     20   USE trcbc, only : trc_bc_read 
    2021 
    2122   IMPLICIT NONE 
     
    5657      IF( l_trdtrc )  CALL wrk_alloc( jpi, jpj, jpk, ztrmyt ) 
    5758 
    58       IF( l_trdtrc ) THEN      ! Save the trends in the ixed layer 
     59      CALL trc_bc_read  ( kt )       ! tracers: surface and lateral Boundary Conditions 
     60 
     61      ! add here the call to BGC model 
     62 
     63      ! Save the trends in the mixed layer 
     64      IF( l_trdtrc ) THEN 
    5965          DO jn = jp_myt0, jp_myt1 
    6066            ztrmyt(:,:,:) = tra(:,:,:,jn) 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/TOP_SRC/MY_TRC/trcwri_my_trc.F90

    r5836 r6108  
    3636      DO jn = jp_myt0, jp_myt1 
    3737         cltra = TRIM( ctrcnm(jn) )                  ! short title for tracer 
    38          CALL iom_put( cltra, trn(:,:,:,jn) ) 
     38         IF( ln_trc_wri(jn) ) CALL iom_put( cltra, trn(:,:,:,jn) ) 
    3939      END DO 
    4040      ! 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsms.F90

    r5836 r6108  
    9292      ! 
    9393      !                                                                    !   set time step size (Euler/Leapfrog) 
    94       IF( ( neuler == 0 .AND. kt == nittrc000 ) .OR. ln_top_euler ) THEN   ;    rfact = rdttrc(1)     !  at nittrc000 
    95       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) 
    9696      ENDIF 
    9797      ! 
     
    102102         xstep = rfact2 / rday         ! Time step duration for biology 
    103103         IF(lwp) WRITE(numout,*)  
    104          IF(lwp) WRITE(numout,*) '    Passive Tracer  time step    rfact  = ', rfact, ' rdt = ', rdttra(1) 
     104         IF(lwp) WRITE(numout,*) '    Passive Tracer  time step    rfact  = ', rfact, ' rdt = ', rdt 
    105105         IF(lwp) write(numout,*) '    PISCES  Biology time step    rfact2 = ', rfact2 
    106106         IF(lwp) WRITE(numout,*) 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/TOP_SRC/PISCES/SED/sedrst.F90

    r5215 r6108  
    6060 
    6161      ALLOCATE( zdta(jpi,jpj,jpksed,jptrased), zdta1(jpi,jpj,jpksed,2), zhipor(jpoce,jpksed) )  
    62  
    63       IF ( jprstlib == jprstdimg ) THEN 
    64         ! eventually read netcdf file (monobloc)  for restarting on different number of processors 
    65         ! if restart_sed.nc exists, then set jlibalt to jpnf90 
    66         INQUIRE( FILE = 'restart_sed.nc', EXIST = llok ) 
    67         IF ( llok ) THEN ; jlibalt = jpnf90  ; ELSE ; jlibalt = jprstlib ; ENDIF 
    68       ENDIF 
    6962 
    7063      CALL iom_open( 'restart_sed', numrsr, kiolib = jlibalt )      
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/TOP_SRC/TRP/trcadv.F90

    r6060 r6108  
    3232 
    3333   PUBLIC   trc_adv        
    34    PUBLIC   trc_adv_alloc  
    3534   PUBLIC   trc_adv_ini   
    3635 
     
    5857   INTEGER ::              nadv             ! chosen advection scheme 
    5958   ! 
    60    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) ::   r2dt  ! vertical profile time-step, = 2 rdttra 
    61    !                                                    ! except at nitrrc000 (=rdttra) if neuler=0 
     59   REAL(wp) ::   r2dttrc  ! vertical profile time-step, = 2 rdt 
     60   !                                                    ! except at nitrrc000 (=rdt) if neuler=0 
    6261 
    6362   !! * Substitutions 
     
    6968   !!---------------------------------------------------------------------- 
    7069CONTAINS 
    71  
    72    INTEGER FUNCTION trc_adv_alloc() 
    73       !!---------------------------------------------------------------------- 
    74       !!                  ***  ROUTINE trc_adv_alloc  *** 
    75       !!---------------------------------------------------------------------- 
    76       ! 
    77       ALLOCATE( r2dt(jpk), STAT=trc_adv_alloc ) 
    78       ! 
    79       IF( trc_adv_alloc /= 0 ) CALL ctl_warn('trc_adv_alloc : failed to allocate array.') 
    80       ! 
    81    END FUNCTION trc_adv_alloc 
    82  
    8370 
    8471   SUBROUTINE trc_adv( kt ) 
     
    10289      ! 
    10390      IF( ( neuler == 0 .AND. kt == nittrc000 ) .OR. ln_top_euler ) THEN     ! at nittrc000 
    104          r2dt(:) =  rdttrc(:)           ! = rdttrc (use or restarting with Euler time stepping) 
     91         r2dttrc =  rdttrc           ! = rdttrc (use or restarting with Euler time stepping) 
    10592      ELSEIF( kt <= nittrc000 + nn_dttrc ) THEN          ! at nittrc000 or nittrc000+1 
    106          r2dt(:) = 2. * rdttrc(:)       ! = 2 rdttrc (leapfrog) 
     93         r2dttrc = 2. * rdttrc       ! = 2 rdttrc (leapfrog) 
    10794      ENDIF 
    10895      !                                               !==  effective transport  ==! 
     
    133120         CALL tra_adv_cen    ( kt, nittrc000,'TRC',       zun, zvn, zwn     , trn, tra, jptra, nn_cen_h, nn_cen_v ) 
    134121      CASE ( np_FCT )                                    ! FCT      : 2nd / 4th order 
    135          CALL tra_adv_fct    ( kt, nittrc000,'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra, nn_fct_h, nn_fct_v ) 
     122         CALL tra_adv_fct    ( kt, nittrc000,'TRC', r2dttrc, zun, zvn, zwn, trb, trn, tra, jptra, nn_fct_h, nn_fct_v ) 
    136123      CASE ( np_FCT_zts )                                ! 2nd order FCT with vertical time-splitting 
    137          CALL tra_adv_fct_zts( kt, nittrc000,'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra        , nn_fct_zts ) 
     124         CALL tra_adv_fct_zts( kt, nittrc000,'TRC', r2dttrc, zun, zvn, zwn, trb, trn, tra, jptra        , nn_fct_zts ) 
    138125      CASE ( np_MUS )                                    ! MUSCL 
    139          CALL tra_adv_mus    ( kt, nittrc000,'TRC', r2dt, zun, zvn, zwn, trb,      tra, jptra        , ln_mus_ups )  
     126         CALL tra_adv_mus    ( kt, nittrc000,'TRC', r2dttrc, zun, zvn, zwn, trb,      tra, jptra        , ln_mus_ups )  
    140127      CASE ( np_UBS )                                    ! UBS 
    141          CALL tra_adv_ubs    ( kt, nittrc000,'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra        , nn_ubs_v   ) 
     128         CALL tra_adv_ubs    ( kt, nittrc000,'TRC', r2dttrc, zun, zvn, zwn, trb, trn, tra, jptra        , nn_ubs_v   ) 
    142129      CASE ( np_QCK )                                    ! QUICKEST 
    143          CALL tra_adv_qck    ( kt, nittrc000,'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra                     ) 
     130         CALL tra_adv_qck    ( kt, nittrc000,'TRC', r2dttrc, zun, zvn, zwn, trb, trn, tra, jptra                     ) 
    144131      ! 
    145132      END SELECT 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/TOP_SRC/TRP/trcnxt.F90

    r6060 r6108  
    3333   USE trdtra 
    3434   USE tranxt 
     35   USE trcbdy          ! BDY open boundaries 
     36   USE bdy_par, only: lk_bdy 
    3537# if defined key_agrif 
    3638   USE agrif_top_interp 
     
    4143 
    4244   PUBLIC   trc_nxt          ! routine called by step.F90 
    43    PUBLIC   trc_nxt_alloc    ! routine called by nemogcm.F90 
    4445 
    45    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) ::   r2dt 
     46   REAL(wp) ::   r2dttrc 
    4647 
    4748   !!---------------------------------------------------------------------- 
     
    5152   !!---------------------------------------------------------------------- 
    5253CONTAINS 
    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_alloc 
    63  
    6454 
    6555   SUBROUTINE trc_nxt( kt ) 
     
    10898         CALL lbc_lnk( tra(:,:,:,jn), 'T', 1. )    
    10999      END DO 
    110 #if defined key_bdy 
    111 !!      CALL bdy_trc( kt )             ! BDY open boundaries 
    112 #endif 
     100 
     101      IF( lk_bdy )  CALL trc_bdy( kt ) 
    113102 
    114103      !                                ! set time step size (Euler/Leapfrog) 
    115       IF( neuler == 0 .AND. kt ==  nittrc000 ) THEN  ;  r2dt(:) =     rdttrc(:)   ! at nittrc000             (Euler) 
    116       ELSEIF( kt <= nittrc000 + nn_dttrc )     THEN  ;  r2dt(:) = 2.* rdttrc(:)   ! at nit000 or nit000+1 (Leapfrog) 
     104      IF( neuler == 0 .AND. kt ==  nittrc000 ) THEN  ;  r2dttrc =     rdttrc   ! at nittrc000             (Euler) 
     105      ELSEIF( kt <= nittrc000 + nn_dttrc )     THEN  ;  r2dttrc = 2.* rdttrc   ! at nit000 or nit000+1 (Leapfrog) 
    117106      ENDIF 
    118107 
     
    144133         DO jn = 1, jptra 
    145134            DO jk = 1, jpkm1 
    146                zfact = 1._wp / r2dt(jk)   
     135               zfact = 1._wp / r2dttrc   
    147136               ztrdt(:,:,jk,jn) = ( trb(:,:,jk,jn) - ztrdt(:,:,jk,jn) ) * zfact  
    148137               CALL trd_tra( kt, 'TRC', jn, jptra_atf, ztrdt ) 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/TOP_SRC/TRP/trcsbc.F90

    r6060 r6108  
    2727 
    2828   PUBLIC   trc_sbc   ! routine called by step.F90 
    29  
    30    REAL(wp) ::   r2dt  !  time-step at surface 
    3129 
    3230   !! * Substitutions 
     
    8785 
    8886      IF( ln_top_euler) THEN 
    89          r2dt =  rdttrc(1)              ! = rdttrc (use Euler time stepping) 
     87         r2dt =  rdttrc              ! = rdttrc (use Euler time stepping) 
    9088      ELSE 
    9189         IF( neuler == 0 .AND. kt == nittrc000 ) THEN     ! at nittrc000 
    92             r2dt = rdttrc(1)           ! = rdttrc (restarting with Euler time stepping) 
     90            r2dt = rdttrc            ! = rdttrc (restarting with Euler time stepping) 
    9391         ELSEIF( kt <= nittrc000 + nn_dttrc ) THEN          ! at nittrc000 or nittrc000+1 
    94             r2dt = 2. * rdttrc(1)       ! = 2 rdttrc (leapfrog) 
     92            r2dt = 2. * rdttrc       ! = 2 rdttrc (leapfrog) 
    9593         ENDIF 
    9694      ENDIF 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/TOP_SRC/TRP/trctrp.F90

    r5836 r6108  
    2525   USE trcsbc          ! surface boundary condition          (trc_sbc routine) 
    2626   USE zpshde          ! partial step: hor. derivative       (zps_hde routine) 
     27   USE trcbdy          ! BDY open boundaries 
     28   USE bdy_par, only: lk_bdy 
    2729 
    2830#if defined key_agrif 
     
    6466         IF( ln_trcdmp )        CALL trc_dmp    ( kt )      ! internal damping trends 
    6567         IF( ln_trcdmp_clo )    CALL trc_dmp_clo( kt )      ! internal damping trends on closed seas only 
     68         IF( lk_bdy )           CALL trc_bdy_dmp( kt )      ! BDY damping trends 
    6669                                CALL trc_adv    ( kt )      ! horizontal & vertical advection  
    6770         !                                                         ! Partial top/bottom cell: GRADh( trb )   
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/TOP_SRC/TRP/trczdf.F90

    r6060 r6108  
    2828   PUBLIC   trc_zdf         ! called by step.F90  
    2929   PUBLIC   trc_zdf_ini     ! called by nemogcm.F90  
    30    PUBLIC   trc_zdf_alloc   ! called by nemogcm.F90  
    3130    
    3231   !                                        !!** Vertical diffusion (nam_trczdf) ** 
     
    3635   INTEGER ::   nzdf = 0               ! type vertical diffusion algorithm used 
    3736      !                                ! defined from ln_zdf...  namlist logicals) 
    38    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) ::  r2dt   ! vertical profile time-step, = 2 rdttra 
    39       !                                                 ! except at nittrc000 (=rdttra) if neuler=0 
     37   REAL(wp) ::  r2dttrc   ! vertical profile time-step, = 2 rdt 
     38      !                   ! except at nittrc000 (=rdt) if neuler=0 
    4039 
    4140   !! * Substitutions 
     
    4847   !!---------------------------------------------------------------------- 
    4948CONTAINS 
    50     
    51    INTEGER FUNCTION trc_zdf_alloc() 
    52       !!---------------------------------------------------------------------- 
    53       !!                  ***  ROUTINE trc_zdf_alloc  *** 
    54       !!---------------------------------------------------------------------- 
    55       ALLOCATE( r2dt(jpk) , STAT=trc_zdf_alloc ) 
    56       ! 
    57       IF( trc_zdf_alloc /= 0 )   CALL ctl_warn('trc_zdf_alloc : failed to allocate array.') 
    58       ! 
    59    END FUNCTION trc_zdf_alloc 
    60  
    6149 
    6250   SUBROUTINE trc_zdf( kt ) 
     
    7664      ! 
    7765      IF( ( neuler == 0 .AND. kt == nittrc000 ) .OR. ln_top_euler ) THEN     ! at nittrc000 
    78          r2dt(:) =  rdttrc(:)           ! = rdttrc (use or restarting with Euler time stepping) 
     66         r2dttrc =  rdttrc           ! = rdttrc (use or restarting with Euler time stepping) 
    7967      ELSEIF( kt <= nittrc000 + nn_dttrc ) THEN          ! at nittrc000 or nittrc000+1 
    80          r2dt(:) = 2. * rdttrc(:)       ! = 2 rdttrc (leapfrog) 
     68         r2dttrc = 2. * rdttrc       ! = 2 rdttrc (leapfrog) 
    8169      ENDIF 
    8270 
     
    8775 
    8876      SELECT CASE ( nzdf )                       ! compute lateral mixing trend and add it to the general trend 
    89       CASE ( 0 ) ;  CALL tra_zdf_exp( kt, nittrc000, 'TRC', r2dt, nn_trczdf_exp, trb, tra, jptra )    !   explicit scheme  
    90       CASE ( 1 ) ;  CALL tra_zdf_imp( kt, nittrc000, 'TRC', r2dt,                trb, tra, jptra )    !   implicit scheme           
     77      CASE ( 0 ) ;  CALL tra_zdf_exp( kt, nittrc000, 'TRC', r2dttrc, nn_trczdf_exp, trb, tra, jptra )    !   explicit scheme  
     78      CASE ( 1 ) ;  CALL tra_zdf_imp( kt, nittrc000, 'TRC', r2dttrc,                trb, tra, jptra )    !   implicit scheme           
    9179      END SELECT 
    9280 
     
    9482         DO jn = 1, jptra 
    9583            DO jk = 1, jpkm1 
    96                ztrtrd(:,:,jk,jn) = ( ( tra(:,:,jk,jn) - trb(:,:,jk,jn) ) / r2dt(jk) ) - ztrtrd(:,:,jk,jn) 
     84               ztrtrd(:,:,jk,jn) = ( ( tra(:,:,jk,jn) - trb(:,:,jk,jn) ) / r2dttrc ) - ztrtrd(:,:,jk,jn) 
    9785            END DO 
    9886            CALL trd_tra( kt, 'TRC', jn, jptra_zdf, ztrtrd(:,:,:,jn) ) 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/TOP_SRC/TRP/trdmxl_trc.F90

    r6060 r6108  
    329329      !!  
    330330      !! ** Purpose :  Compute and cumulate the mixed layer trends over an analysis 
    331       !!               period, and write NetCDF (or dimg) outputs. 
     331      !!               period, and write NetCDF outputs. 
    332332      !! 
    333333      !! ** Method/usage : 
     
    389389      ! 
    390390      CHARACTER (LEN=10) ::   clvar 
    391 #if defined key_dimgout 
    392       INTEGER ::   iyear,imon,iday 
    393       CHARACTER(LEN=80) ::   cltext, clmode 
    394 #endif 
    395391      !!---------------------------------------------------------------------- 
    396392 
     
    773769      ! ====================================================================== 
    774770 
    775       ! IV.1 Code for dimg mpp output 
    776       ! ----------------------------- 
    777  
    778 # if defined key_dimgout 
    779       STOP 'Not implemented' 
    780 # else 
    781        
    782       ! IV.2 Code for IOIPSL/NetCDF output 
     771      ! IV.1 Code for IOIPSL/NetCDF output 
    783772      ! ---------------------------------- 
    784773 
     
    864853      icount = 1 
    865854 
    866 # endif /* key_dimgout */ 
    867  
    868855      IF( MOD( itmod, nn_trd_trc ) == 0 ) THEN 
    869856         ! 
     
    895882      !! 
    896883      !! ** Purpose :  Compute and cumulate the mixed layer biological trends over an analysis 
    897       !!               period, and write NetCDF (or dimg) outputs. 
     884      !!               period, and write NetCDF outputs. 
    898885      !! 
    899886      !! ** Method/usage : 
     
    942929      LOGICAL  :: llwarn  = .TRUE., lldebug = .TRUE. 
    943930      REAL(wp) :: zfn, zfn2 
    944 #if defined key_dimgout 
    945       INTEGER ::  iyear,imon,iday 
    946       CHARACTER(LEN=80) :: cltext, clmode 
    947 #endif 
    948931      !!---------------------------------------------------------------------- 
    949932      ! ... Warnings 
     
    10541037      ! ====================================================================== 
    10551038 
    1056       ! IV.1 Code for dimg mpp output 
    1057       ! ----------------------------- 
    1058  
    1059 # if defined key_dimgout 
    1060       STOP 'Not implemented' 
    1061 # else 
    1062  
    1063       ! IV.2 Code for IOIPSL/NetCDF output 
     1039      ! IV.1 Code for IOIPSL/NetCDF output 
    10641040      ! ---------------------------------- 
    10651041 
     
    11061082 
    11071083 
    1108 # endif /* key_dimgout */ 
    11091084 
    11101085      IF( MOD( itmod, nn_trd_trc ) == 0 ) THEN 
     
    12571232      ! ====================================================================== 
    12581233 
    1259 #if defined key_dimgout  
    1260       ??? 
    1261 #else 
    12621234      ! clmxl = legend root for netCDF output 
    12631235      IF( nn_ctls_trc == 0 ) THEN                                   ! control surface = mixed-layer with density criterion 
     
    14021374#endif 
    14031375 
    1404 #endif        /* key_dimgout */ 
    14051376   END SUBROUTINE trd_mxl_trc_init 
    14061377 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/TOP_SRC/TRP/trdmxl_trc_rst.F90

    r6060 r6108  
    146146      clpath = TRIM(cn_trcrst_indir) 
    147147      IF( clpath(LEN_TRIM(clpath):) /= '/' ) clpath = TRIM(clpath) // '/' 
    148  
    149       IF ( jprstlib == jprstdimg ) THEN 
    150         ! eventually read netcdf file (monobloc)  for restarting on different number of processors 
    151         ! if {cn_trdrst_trc_in}.nc exists, then set jlibalt to jpnf90 
    152         INQUIRE( FILE = TRIM(clpath)//TRIM(cn_trdrst_trc_in)//'.nc', EXIST = llok ) 
    153         IF ( llok ) THEN ; jlibalt = jpnf90  ; ELSE ; jlibalt = jprstlib ; ENDIF 
    154       ENDIF 
    155  
    156148      CALL iom_open( TRIM(clpath)//TRIM(cn_trdrst_trc_in), inum, kiolib = jlibalt )  
    157149       
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/TOP_SRC/trc.F90

    r5836 r6108  
    1414   USE par_oce 
    1515   USE par_trc 
     16#if defined key_bdy 
     17   USE bdy_oce, only: nb_bdy, OBC_DATA 
     18#endif 
    1619    
    1720   IMPLICIT NONE 
     
    6467   CHARACTER(len = 80) , PUBLIC                                    ::  cn_trcrst_out  !: suffix of pass. tracer restart name (output) 
    6568   CHARACTER(len = 256), PUBLIC                                    ::  cn_trcrst_outdir  !: restart output directory 
    66    REAL(wp)            , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)   ::  rdttrc         !: vertical profile of passive tracer time step 
     69   REAL(wp)            , PUBLIC                                    ::  rdttrc         !: passive tracer time step 
    6770   LOGICAL             , PUBLIC                                    ::  ln_top_euler  !: boolean term for euler integration  
    6871   LOGICAL             , PUBLIC                                    ::  ln_trcdta      !: Read inputs data from files 
     
    9194       CHARACTER(len = 20)  :: clunit   !: unit 
    9295       LOGICAL              :: llinit   !: read in a file or not 
     96#if defined  key_my_trc 
     97       LOGICAL              :: llsbc   !: read in a file or not 
     98       LOGICAL              :: llcbc   !: read in a file or not 
     99       LOGICAL              :: llobc   !: read in a file or not 
     100#endif 
    93101       LOGICAL              :: llsave   !: save the tracer or not 
    94102   END TYPE PTRACER 
     
    181189# endif 
    182190   ! 
     191#if defined key_bdy 
     192   CHARACTER(len=20), PUBLIC, ALLOCATABLE,  SAVE,  DIMENSION(:)   ::  cn_trc_dflt          ! Default OBC condition for all tracers 
     193   CHARACTER(len=20), PUBLIC, ALLOCATABLE,  SAVE,  DIMENSION(:)   ::  cn_trc               ! Choice of boundary condition for tracers 
     194   INTEGER,           PUBLIC, ALLOCATABLE,  SAVE,  DIMENSION(:)   ::  nn_trcdmp_bdy        !: =T Tracer damping 
     195   ! External data structure of BDY for TOP. Available elements: cn_obc, ll_trc, trcnow, dmp 
     196   TYPE(OBC_DATA),    PUBLIC, ALLOCATABLE, DIMENSION(:,:), TARGET ::  trcdta_bdy           !: bdy external data (local process) 
     197#endif 
     198   ! 
    183199 
    184200   !!---------------------------------------------------------------------- 
     
    201217         &      gtrui(jpi,jpj,jptra)  , gtrvi(jpi,jpj,jptra)                          ,       & 
    202218         &      sbc_trc_b(jpi,jpj,jptra), sbc_trc(jpi,jpj,jptra)                      ,       &   
    203          &      cvol(jpi,jpj,jpk)     , rdttrc(jpk)           , trai(jptra)           ,       & 
     219         &      cvol(jpi,jpj,jpk)     , trai(jptra)                                   ,       & 
    204220         &      ctrcnm(jptra)         , ctrcln(jptra)         , ctrcun(jptra)         ,       &  
    205          &      ln_trc_ini(jptra)     , ln_trc_wri(jptra)     , qsr_mean(jpi,jpj)     ,  STAT = trc_alloc  )   
     221         &      ln_trc_ini(jptra)     , ln_trc_wri(jptra)     , qsr_mean(jpi,jpj)     ,       & 
     222#if defined key_my_trc 
     223         &      ln_trc_sbc(jptra)     , ln_trc_cbc(jptra)     , ln_trc_obc(jptra)     ,       & 
     224#endif 
     225#if defined key_bdy 
     226         &      cn_trc_dflt(nb_bdy)   , cn_trc(nb_bdy)        , nn_trcdmp_bdy(nb_bdy) ,       & 
     227         &      trcdta_bdy(jptra,nb_bdy)                                              ,       & 
     228#endif 
     229         &      STAT = trc_alloc  ) 
    206230 
    207231      IF( trc_alloc /= 0 )   CALL ctl_warn('trc_alloc: failed to allocate arrays') 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/TOP_SRC/trcbc.F90

    r6060 r6108  
    44   !! TOP :  module for passive tracer boundary conditions 
    55   !!===================================================================== 
    6    !!---------------------------------------------------------------------- 
    7 #if  defined key_top  
     6   !! History :  3.5 !  2014-04  (M. Vichi, T. Lovato)  Original 
     7   !!            3.6 !  2015-03  (T . Lovato) Revision and BDY support 
     8   !!---------------------------------------------------------------------- 
     9#if defined key_top 
    810   !!---------------------------------------------------------------------- 
    911   !!   'key_top'                                                TOP model  
    1012   !!---------------------------------------------------------------------- 
    11    !!   trc_dta    : read and time interpolated passive tracer data 
     13   !!   trc_bc       : read and time interpolated tracer Boundary Conditions 
    1214   !!---------------------------------------------------------------------- 
    1315   USE par_trc       !  passive tracers parameters 
     
    1719   USE lib_mpp       !  MPP library 
    1820   USE fldread       !  read input fields 
     21#if defined key_bdy 
     22   USE bdy_oce, only: nb_bdy , idx_bdy, ln_coords_file, rn_time_dmp, rn_time_dmp_out 
     23#endif 
    1924 
    2025   IMPLICIT NONE 
     
    2429   PUBLIC   trc_bc_read    ! called in trcstp.F90 or within 
    2530 
    26    INTEGER  , SAVE, PUBLIC                             :: nb_trcobc   ! number of tracers with open BC 
    27    INTEGER  , SAVE, PUBLIC                             :: nb_trcsbc   ! number of tracers with surface BC 
    28    INTEGER  , SAVE, PUBLIC                             :: nb_trccbc   ! number of tracers with coastal BC 
     31   INTEGER  , SAVE, PUBLIC                             :: nb_trcobc    ! number of tracers with open BC 
     32   INTEGER  , SAVE, PUBLIC                             :: nb_trcsbc    ! number of tracers with surface BC 
     33   INTEGER  , SAVE, PUBLIC                             :: nb_trccbc    ! number of tracers with coastal BC 
    2934   INTEGER  , SAVE, PUBLIC, ALLOCATABLE, DIMENSION(:)  :: n_trc_indobc ! index of tracer with OBC data 
    3035   INTEGER  , SAVE, PUBLIC, ALLOCATABLE, DIMENSION(:)  :: n_trc_indsbc ! index of tracer with SBC data 
    3136   INTEGER  , SAVE, PUBLIC, ALLOCATABLE, DIMENSION(:)  :: n_trc_indcbc ! index of tracer with CBC data 
    32    INTEGER  , SAVE, PUBLIC                             :: ntra_obc     ! MAX( 1, nb_trcxxx ) to avoid compilation error with bounds checking 
    33    INTEGER  , SAVE, PUBLIC                             :: ntra_sbc     ! MAX( 1, nb_trcxxx ) to avoid compilation error with bounds checking 
    34    INTEGER  , SAVE, PUBLIC                             :: ntra_cbc     ! MAX( 1, nb_trcxxx ) to avoid compilation error with bounds checking 
    35    REAL(wp) , SAVE, PUBLIC, ALLOCATABLE, DIMENSION(:)  :: rf_trofac   ! multiplicative factor for OBCtracer values 
    36    TYPE(FLD), SAVE, PUBLIC, ALLOCATABLE, DIMENSION(:)  :: sf_trcobc   ! structure of data input OBC (file informations, fields read) 
    37    REAL(wp) , SAVE, PUBLIC, ALLOCATABLE, DIMENSION(:)  :: rf_trsfac   ! multiplicative factor for SBC tracer values 
    38    TYPE(FLD), SAVE, PUBLIC, ALLOCATABLE, DIMENSION(:)  :: sf_trcsbc   ! structure of data input SBC (file informations, fields read) 
    39    REAL(wp) , SAVE, PUBLIC, ALLOCATABLE, DIMENSION(:)  :: rf_trcfac   ! multiplicative factor for CBC tracer values 
    40    TYPE(FLD), SAVE, PUBLIC, ALLOCATABLE, DIMENSION(:)  :: sf_trccbc   ! structure of data input CBC (file informations, fields read) 
    41  
    42    !!---------------------------------------------------------------------- 
    43    !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
    44    !! $Id$  
     37   REAL(wp) , SAVE, PUBLIC, ALLOCATABLE, DIMENSION(:)  :: rf_trsfac    ! multiplicative factor for SBC tracer values 
     38   TYPE(FLD), SAVE, PUBLIC, ALLOCATABLE, DIMENSION(:)  :: sf_trcsbc    ! structure of data input SBC (file informations, fields read) 
     39   REAL(wp) , SAVE, PUBLIC, ALLOCATABLE, DIMENSION(:)  :: rf_trcfac    ! multiplicative factor for CBC tracer values 
     40   TYPE(FLD), SAVE, PUBLIC, ALLOCATABLE, DIMENSION(:)  :: sf_trccbc    ! structure of data input CBC (file informations, fields read) 
     41   REAL(wp) , SAVE, PUBLIC, ALLOCATABLE, DIMENSION(:)  :: rf_trofac    ! multiplicative factor for OBCtracer values 
     42   TYPE(FLD), SAVE, PUBLIC, ALLOCATABLE, DIMENSION(:), TARGET  :: sf_trcobc    ! structure of data input OBC (file informations, fields read) 
     43   TYPE(MAP_POINTER), ALLOCATABLE, DIMENSION(:) :: nbmap_ptr   ! array of pointers to nbmap 
     44 
     45   !!---------------------------------------------------------------------- 
     46   !! NEMO/OPA 3.6 , NEMO Consortium (2015) 
     47   !! $Id$ 
    4548   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    4649   !!---------------------------------------------------------------------- 
     
    5659      !!              - allocates passive tracer BC data structure  
    5760      !!---------------------------------------------------------------------- 
    58       INTEGER,INTENT(IN) ::   ntrc   ! number of tracers 
    59       ! 
    60       INTEGER ::  jl, jn                       ! dummy loop indices 
    61       INTEGER ::  ierr0, ierr1, ierr2, ierr3   ! temporary integers 
    62       INTEGER ::  ios                         ! Local integer output status for namelist read 
     61      ! 
     62      INTEGER,INTENT(IN) :: ntrc                           ! number of tracers 
     63      INTEGER            :: jl, jn , ib, ibd, ii, ij, ik   ! dummy loop indices 
     64      INTEGER            :: ierr0, ierr1, ierr2, ierr3     ! temporary integers 
     65      INTEGER            :: ios                            ! Local integer output status for namelist read 
     66      INTEGER            :: nblen, igrd                    ! support arrays for BDY 
    6367      CHARACTER(len=100) :: clndta, clntrc 
    64       !! 
    65       CHARACTER(len=100) :: cn_dir 
     68      ! 
     69      CHARACTER(len=100) :: cn_dir_sbc, cn_dir_cbc, cn_dir_obc 
     70 
    6671      TYPE(FLD_N), ALLOCATABLE, DIMENSION(:) :: slf_i  ! local array of namelist informations on the fields to read 
    6772      TYPE(FLD_N), DIMENSION(jpmaxtrc) :: sn_trcobc    ! open 
     
    7277      REAL(wp)   , DIMENSION(jpmaxtrc) :: rn_trcfac    ! multiplicative factor for tracer values 
    7378      !! 
    74       NAMELIST/namtrc_bc/ cn_dir, sn_trcobc, rn_trofac, sn_trcsbc, rn_trsfac, sn_trccbc, rn_trcfac  
     79      NAMELIST/namtrc_bc/ cn_dir_sbc, cn_dir_cbc, cn_dir_obc, sn_trcobc, rn_trofac, sn_trcsbc, rn_trsfac, sn_trccbc, rn_trcfac 
     80#if defined key_bdy 
     81      NAMELIST/namtrc_bdy/ cn_trc_dflt, cn_trc, nn_trcdmp_bdy 
     82#endif 
    7583      !!---------------------------------------------------------------------- 
    7684      IF( nn_timing == 1 )  CALL timing_start('trc_bc_init') 
    7785      ! 
     86      IF( lwp ) THEN 
     87         WRITE(numout,*) ' ' 
     88         WRITE(numout,*) 'trc_bc_init : Tracers Boundary Conditions (BC)' 
     89         WRITE(numout,*) '~~~~~~~~~~~ ' 
     90      ENDIF 
    7891      !  Initialisation and local array allocation 
    7992      ierr0 = 0  ;  ierr1 = 0  ;  ierr2 = 0  ;  ierr3 = 0   
     
    105118      n_trc_indcbc(:) = 0 
    106119      ! 
    107       DO jn = 1, ntrc 
    108          IF( ln_trc_obc(jn) ) THEN 
    109              nb_trcobc       = nb_trcobc + 1  
    110              n_trc_indobc(jn) = nb_trcobc  
    111          ENDIF 
    112          IF( ln_trc_sbc(jn) ) THEN 
    113              nb_trcsbc       = nb_trcsbc + 1 
    114              n_trc_indsbc(jn) = nb_trcsbc 
    115          ENDIF 
    116          IF( ln_trc_cbc(jn) ) THEN 
    117              nb_trccbc       = nb_trccbc + 1 
    118              n_trc_indcbc(jn) = nb_trccbc 
    119          ENDIF 
    120       ENDDO 
    121       ntra_obc = MAX( 1, nb_trcobc )   ! To avoid compilation error with bounds checking 
    122       IF( lwp ) WRITE(numout,*) ' ' 
    123       IF( lwp ) WRITE(numout,*) ' Number of passive tracers to be initialized with open boundary data :', nb_trcobc 
    124       IF( lwp ) WRITE(numout,*) ' ' 
    125       ntra_sbc = MAX( 1, nb_trcsbc )   ! To avoid compilation error with bounds checking 
    126       IF( lwp ) WRITE(numout,*) ' ' 
    127       IF( lwp ) WRITE(numout,*) ' Number of passive tracers to be initialized with surface boundary data :', nb_trcsbc 
    128       IF( lwp ) WRITE(numout,*) ' ' 
    129       ntra_cbc = MAX( 1, nb_trccbc )   ! To avoid compilation error with bounds checking 
    130       IF( lwp ) WRITE(numout,*) ' ' 
    131       IF( lwp ) WRITE(numout,*) ' Number of passive tracers to be initialized with coastal boundary data :', nb_trccbc 
    132       IF( lwp ) WRITE(numout,*) ' ' 
    133  
     120      ! Read Boundary Conditions Namelists 
    134121      REWIND( numnat_ref )              ! Namelist namtrc_bc in reference namelist : Passive tracer data structure 
    135122      READ  ( numnat_ref, namtrc_bc, IOSTAT = ios, ERR = 901) 
     
    141128      IF(lwm) WRITE ( numont, namtrc_bc ) 
    142129 
    143       ! print some information for each  
     130#if defined key_bdy 
     131      REWIND( numnat_ref )              ! Namelist namtrc_bc in reference namelist : Passive tracer data structure 
     132      READ  ( numnat_ref, namtrc_bdy, IOSTAT = ios, ERR = 903) 
     133903   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_bdy in reference namelist', lwp ) 
     134 
     135      REWIND( numnat_cfg )              ! Namelist namtrc_bc in configuration namelist : Passive tracer data structure 
     136      READ  ( numnat_cfg, namtrc_bdy, IOSTAT = ios, ERR = 904 ) 
     137904   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_bdy in configuration namelist', lwp ) 
     138      IF(lwm) WRITE ( numont, namtrc_bdy ) 
     139      ! setup up preliminary informations for BDY structure 
     140      DO jn = 1, ntrc 
     141         DO ib = 1, nb_bdy 
     142            ! Set type of obc in BDY data structure (around here we may plug user override of obc type from nml) 
     143            IF ( ln_trc_obc(jn) ) THEN 
     144               trcdta_bdy(jn,ib)%cn_obc = TRIM( cn_trc(ib) ) 
     145            ELSE 
     146               trcdta_bdy(jn,ib)%cn_obc = TRIM( cn_trc_dflt(ib) ) 
     147            ENDIF 
     148            ! set damping use in BDY data structure 
     149            trcdta_bdy(jn,ib)%dmp = .false. 
     150            IF(nn_trcdmp_bdy(ib) .EQ. 1 .AND. ln_trc_obc(jn) ) trcdta_bdy(jn,ib)%dmp = .true. 
     151            IF(nn_trcdmp_bdy(ib) .EQ. 2 ) trcdta_bdy(jn,ib)%dmp = .true. 
     152            IF(trcdta_bdy(jn,ib)%cn_obc == 'frs' .AND. nn_trcdmp_bdy(ib) .NE. 0 )  & 
     153                & CALL ctl_stop( 'Use FRS OR relaxation' ) 
     154            IF (nn_trcdmp_bdy(ib) .LT. 0 .OR. nn_trcdmp_bdy(ib) .GT. 2)            & 
     155                & CALL ctl_stop( 'Not a valid option for nn_trcdmp_bdy. Allowed: 0,1,2.' ) 
     156         ENDDO 
     157      ENDDO 
     158 
     159#else 
     160      ! Force all tracers OBC to false if bdy not used 
     161      ln_trc_obc = .false. 
     162#endif 
     163      ! compose BC data indexes 
     164      DO jn = 1, ntrc 
     165         IF( ln_trc_obc(jn) ) THEN 
     166             nb_trcobc       = nb_trcobc + 1  ; n_trc_indobc(jn) = nb_trcobc 
     167         ENDIF 
     168         IF( ln_trc_sbc(jn) ) THEN 
     169             nb_trcsbc       = nb_trcsbc + 1  ; n_trc_indsbc(jn) = nb_trcsbc 
     170         ENDIF 
     171         IF( ln_trc_cbc(jn) ) THEN 
     172             nb_trccbc       = nb_trccbc + 1  ; n_trc_indcbc(jn) = nb_trccbc 
     173         ENDIF 
     174      ENDDO 
     175 
     176      ! Print summmary of Boundary Conditions 
    144177      IF( lwp ) THEN 
     178         WRITE(numout,*) ' ' 
     179         WRITE(numout,'(a,i3)') '   Total tracers to be initialized with SURFACE BCs data:', nb_trcsbc 
     180         IF ( nb_trcsbc > 0 ) THEN 
     181            WRITE(numout,*) '   #trc        NAME        Boundary     Mult.Fact. ' 
     182            DO jn = 1, ntrc 
     183               IF ( ln_trc_sbc(jn) ) WRITE(numout,9001) jn, TRIM( sn_trcsbc(jn)%clvar ), 'SBC', rn_trsfac(jn) 
     184            ENDDO 
     185         ENDIF 
     186         WRITE(numout,'(2a)') '   SURFACE BC data repository : ', TRIM(cn_dir_sbc) 
     187 
     188         WRITE(numout,*) ' ' 
     189         WRITE(numout,'(a,i3)') '   Total tracers to be initialized with COASTAL BCs data:', nb_trccbc 
     190         IF ( nb_trccbc > 0 ) THEN 
     191            WRITE(numout,*) '   #trc        NAME        Boundary     Mult.Fact. ' 
     192            DO jn = 1, ntrc 
     193               IF ( ln_trc_cbc(jn) ) WRITE(numout, 9001) jn, TRIM( sn_trccbc(jn)%clvar ), 'CBC', rn_trcfac(jn) 
     194            ENDDO 
     195         ENDIF 
     196         WRITE(numout,'(2a)') '   COASTAL BC data repository : ', TRIM(cn_dir_cbc) 
     197 
     198         WRITE(numout,*) ' ' 
     199         WRITE(numout,'(a,i3)') '   Total tracers to be initialized with OPEN BCs data:', nb_trcobc 
     200#if defined key_bdy 
     201         IF ( nb_trcobc > 0 ) THEN 
     202            WRITE(numout,*) '   #trc        NAME        Boundary     Mult.Fact.   OBC Settings' 
     203            DO jn = 1, ntrc 
     204               IF ( ln_trc_obc(jn) )  WRITE(numout, 9001) jn, TRIM( sn_trcobc(jn)%clvar ), 'OBC', rn_trofac(jn), (trcdta_bdy(jn,ib)%cn_obc,ib=1,nb_bdy) 
     205               IF ( .NOT. ln_trc_obc(jn) )  WRITE(numout, 9002) jn, 'Set data to IC and use default condition', (trcdta_bdy(jn,ib)%cn_obc,ib=1,nb_bdy) 
     206            ENDDO 
     207            WRITE(numout,*) ' ' 
     208            DO ib = 1, nb_bdy 
     209                IF (nn_trcdmp_bdy(ib) .EQ. 0) WRITE(numout,9003) '   Boundary ',ib,' -> NO damping of tracers' 
     210                IF (nn_trcdmp_bdy(ib) .EQ. 1) WRITE(numout,9003) '   Boundary ',ib,' -> damping ONLY for tracers with external data provided' 
     211                IF (nn_trcdmp_bdy(ib) .EQ. 2) WRITE(numout,9003) '   Boundary ',ib,' -> damping of ALL tracers' 
     212                IF (nn_trcdmp_bdy(ib) .GT. 0) THEN 
     213                   WRITE(numout,9003) '     USE damping parameters from nambdy for boundary ', ib,' : ' 
     214                   WRITE(numout,'(a,f10.2,a)') '     - Inflow damping time scale  : ',rn_time_dmp(ib),' days' 
     215                   WRITE(numout,'(a,f10.2,a)') '     - Outflow damping time scale : ',rn_time_dmp_out(ib),' days' 
     216                ENDIF 
     217            ENDDO 
     218         ENDIF 
     219#endif 
     220         WRITE(numout,'(2a)') '   OPEN BC data repository : ', TRIM(cn_dir_obc) 
     221      ENDIF 
     2229001  FORMAT(2x,i5, 3x, a15, 3x, a5, 6x, e11.3, 4x, 10a13) 
     2239002  FORMAT(2x,i5, 3x, a41, 3x, 10a13) 
     2249003  FORMAT(a, i5, a) 
     225 
     226      ! 
     227#if defined key_bdy 
     228      ! OPEN Lateral boundary conditions 
     229      IF( nb_trcobc > 0 ) THEN  
     230         ALLOCATE ( sf_trcobc(nb_trcobc), rf_trofac(nb_trcobc), nbmap_ptr(nb_trcobc), STAT=ierr1 ) 
     231         IF( ierr1 > 0 ) THEN 
     232            CALL ctl_stop( 'trc_bc_init: unable to allocate sf_trcobc structure' )   ;   RETURN 
     233         ENDIF 
     234 
     235         igrd = 1                       ! Everything is at T-points here 
     236 
    145237         DO jn = 1, ntrc 
    146             IF( ln_trc_obc(jn) )  THEN     
    147                clndta = TRIM( sn_trcobc(jn)%clvar )  
    148                IF(lwp) WRITE(numout,*) 'Preparing to read OBC data file for passive tracer number :', jn, ' name : ', clndta, &  
    149                &               ' multiplicative factor : ', rn_trofac(jn) 
    150             ENDIF 
    151             IF( ln_trc_sbc(jn) )  THEN     
    152                clndta = TRIM( sn_trcsbc(jn)%clvar )  
    153                IF(lwp) WRITE(numout,*) 'Preparing to read SBC data file for passive tracer number :', jn, ' name : ', clndta, &  
    154                &               ' multiplicative factor : ', rn_trsfac(jn) 
    155             ENDIF 
    156             IF( ln_trc_cbc(jn) )  THEN     
    157                clndta = TRIM( sn_trccbc(jn)%clvar )  
    158                IF(lwp) WRITE(numout,*) 'Preparing to read CBC data file for passive tracer number :', jn, ' name : ', clndta, &  
    159                &               ' multiplicative factor : ', rn_trcfac(jn) 
    160             ENDIF 
    161          END DO 
    162       ENDIF 
    163       ! 
    164       ! The following code is written this way to reduce memory usage and repeated for each boundary data 
    165       ! MAV: note that this is just a placeholder and the dimensions must be changed according to  
    166       !      what will be done with BDY. A new structure will probably need to be included 
    167       ! 
    168       ! OPEN Lateral boundary conditions 
    169       IF( nb_trcobc > 0 ) THEN       !  allocate only if the number of tracer to initialise is greater than zero 
    170          ALLOCATE( sf_trcobc(nb_trcobc), rf_trofac(nb_trcobc), STAT=ierr1 ) 
    171          IF( ierr1 > 0 ) THEN 
    172             CALL ctl_stop( 'trc_bc_init: unable to allocate  sf_trcobc structure' )   ;   RETURN 
    173          ENDIF 
    174          ! 
    175          DO jn = 1, ntrc 
    176             IF( ln_trc_obc(jn) ) THEN      ! update passive tracers arrays with input data read from file 
    177                jl = n_trc_indobc(jn) 
    178                slf_i(jl)    = sn_trcobc(jn) 
    179                rf_trofac(jl) = rn_trofac(jn) 
    180                                             ALLOCATE( sf_trcobc(jl)%fnow(jpi,jpj,jpk)   , STAT=ierr2 ) 
    181                IF( sn_trcobc(jn)%ln_tint )  ALLOCATE( sf_trcobc(jl)%fdta(jpi,jpj,jpk,2) , STAT=ierr3 ) 
    182                IF( ierr2 + ierr3 > 0 ) THEN 
    183                  CALL ctl_stop( 'trc_bc_init : unable to allocate passive tracer OBC data arrays' )   ;   RETURN 
     238            DO ib = 1, nb_bdy 
     239 
     240               nblen = idx_bdy(ib)%nblen(igrd) 
     241 
     242               IF ( ln_trc_obc(jn) ) THEN 
     243               ! Initialise from external data 
     244                  jl = n_trc_indobc(jn) 
     245                  slf_i(jl)    = sn_trcobc(jn) 
     246                  rf_trofac(jl) = rn_trofac(jn) 
     247                                               ALLOCATE( sf_trcobc(jl)%fnow(nblen,1,jpk)   , STAT=ierr2 ) 
     248                  IF( sn_trcobc(jn)%ln_tint )  ALLOCATE( sf_trcobc(jl)%fdta(nblen,1,jpk,2) , STAT=ierr3 ) 
     249                  IF( ierr2 + ierr3 > 0 ) THEN 
     250                    CALL ctl_stop( 'trc_bc_init : unable to allocate passive tracer OBC data arrays' )   ;   RETURN 
     251                  ENDIF 
     252                  trcdta_bdy(jn,ib)%trc => sf_trcobc(jl)%fnow(:,1,:) 
     253                  trcdta_bdy(jn,ib)%rn_fac = rf_trofac(jl) 
     254                  ! create OBC mapping array 
     255                  nbmap_ptr(jl)%ptr => idx_bdy(ib)%nbmap(:,igrd) 
     256                  nbmap_ptr(jl)%ll_unstruc = ln_coords_file(igrd) 
     257               ELSE 
     258               ! Initialise obc arrays from initial conditions 
     259                  ALLOCATE ( trcdta_bdy(jn,ib)%trc(nblen,jpk) ) 
     260                  DO ibd = 1, nblen 
     261                     DO ik = 1, jpkm1 
     262                        ii = idx_bdy(ib)%nbi(ibd,igrd) 
     263                        ij = idx_bdy(ib)%nbj(ibd,igrd) 
     264                        trcdta_bdy(jn,ib)%trc(ibd,ik) = trn(ii,ij,ik,jn) * tmask(ii,ij,ik) 
     265                     END DO 
     266                  END DO 
     267                  trcdta_bdy(jn,ib)%rn_fac = 1._wp 
    184268               ENDIF 
    185             ENDIF 
    186             !    
     269            ENDDO 
    187270         ENDDO 
    188          !                         ! fill sf_trcdta with slf_i and control print 
    189          CALL fld_fill( sf_trcobc, slf_i, cn_dir, 'trc_bc_init', 'Passive tracer OBC data', 'namtrc_bc' ) 
    190          ! 
    191       ENDIF 
    192       ! 
     271 
     272         CALL fld_fill( sf_trcobc, slf_i, cn_dir_obc, 'trc_bc_init', 'Passive tracer OBC data', 'namtrc_bc' ) 
     273      ENDIF 
     274#endif 
    193275      ! SURFACE Boundary conditions 
    194276      IF( nb_trcsbc > 0 ) THEN       !  allocate only if the number of tracer to initialise is greater than zero 
     
    212294         ENDDO 
    213295         !                         ! fill sf_trcsbc with slf_i and control print 
    214          CALL fld_fill( sf_trcsbc, slf_i, cn_dir, 'trc_bc_init', 'Passive tracer SBC data', 'namtrc_bc' ) 
     296         CALL fld_fill( sf_trcsbc, slf_i, cn_dir_sbc, 'trc_bc_init', 'Passive tracer SBC data', 'namtrc_bc' ) 
    215297         ! 
    216298      ENDIF 
     
    237319         ENDDO 
    238320         !                         ! fill sf_trccbc with slf_i and control print 
    239          CALL fld_fill( sf_trccbc, slf_i, cn_dir, 'trc_bc_init', 'Passive tracer CBC data', 'namtrc_bc' ) 
     321         CALL fld_fill( sf_trccbc, slf_i, cn_dir_cbc, 'trc_bc_init', 'Passive tracer CBC data', 'namtrc_bc' ) 
    240322         ! 
    241323      ENDIF 
     
    247329 
    248330 
    249    SUBROUTINE trc_bc_read(kt) 
     331   SUBROUTINE trc_bc_read(kt, jit) 
    250332      !!---------------------------------------------------------------------- 
    251333      !!                   ***  ROUTINE trc_bc_init  *** 
     
    257339      !!---------------------------------------------------------------------- 
    258340      USE fldread 
    259       ! 
    260       INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
     341       
     342      !! * Arguments 
     343      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index 
     344      INTEGER, INTENT( in ), OPTIONAL ::   jit   ! subcycle time-step index (for timesplitting option) 
    261345      !!--------------------------------------------------------------------- 
    262346      ! 
    263347      IF( nn_timing == 1 )  CALL timing_start('trc_bc_read') 
    264348 
    265       IF( kt == nit000 ) THEN 
    266          IF(lwp) WRITE(numout,*) 
    267          IF(lwp) WRITE(numout,*) 'trc_bc_read : Surface boundary conditions for passive tracers.' 
    268          IF(lwp) WRITE(numout,*) '~~~~~~~ ' 
    269       ENDIF 
    270  
    271       ! OPEN boundary conditions: DOES NOT WORK. Waiting for stable BDY 
    272       IF( nb_trcobc > 0 ) THEN 
    273         if (lwp) write(numout,'(a,i5,a,i5)') '   reading OBC data for ', nb_trcobc ,' variables at step ', kt 
    274         CALL fld_read(kt,1,sf_trcobc) 
    275         ! vertical interpolation on s-grid and partial step to be added 
    276       ENDIF 
    277  
    278       ! SURFACE boundary conditions        
    279       IF( nb_trcsbc > 0 ) THEN 
    280         if (lwp) write(numout,'(a,i5,a,i5)') '   reading SBC data for ', nb_trcsbc ,' variables at step ', kt 
    281         CALL fld_read(kt,1,sf_trcsbc) 
    282       ENDIF 
    283  
    284       ! COASTAL boundary conditions        
    285       IF( nb_trccbc > 0 ) THEN 
    286         if (lwp) write(numout,'(a,i5,a,i5)') '   reading CBC data for ', nb_trccbc ,' variables at step ', kt 
    287         CALL fld_read(kt,1,sf_trccbc) 
    288       ENDIF    
     349      IF( kt == nit000 .AND. lwp) THEN 
     350         WRITE(numout,*) 
     351         WRITE(numout,*) 'trc_bc_read : Surface boundary conditions for passive tracers.' 
     352         WRITE(numout,*) '~~~~~~~~~~~ ' 
     353      ENDIF 
     354 
     355      IF ( PRESENT(jit) ) THEN  
     356 
     357         ! OPEN boundary conditions (use time_offset=+1 as they are applied at the end of the step) 
     358         IF( nb_trcobc > 0 ) THEN 
     359           if (lwp) write(numout,'(a,i5,a,i10)') '   reading OBC data for ', nb_trcobc ,' variable(s) at step ', kt 
     360           CALL fld_read(kt=kt, kn_fsbc=1, sd=sf_trcobc, map=nbmap_ptr, kit=jit, kt_offset=+1) 
     361         ENDIF 
     362 
     363         ! SURFACE boundary conditions 
     364         IF( nb_trcsbc > 0 ) THEN 
     365           if (lwp) write(numout,'(a,i5,a,i10)') '   reading SBC data for ', nb_trcsbc ,' variable(s) at step ', kt 
     366           CALL fld_read(kt=kt, kn_fsbc=1, sd=sf_trcsbc, kit=jit) 
     367         ENDIF 
     368 
     369         ! COASTAL boundary conditions 
     370         IF( nb_trccbc > 0 ) THEN 
     371           if (lwp) write(numout,'(a,i5,a,i10)') '   reading CBC data for ', nb_trccbc ,' variable(s) at step ', kt 
     372           CALL fld_read(kt=kt, kn_fsbc=1, sd=sf_trccbc, kit=jit) 
     373         ENDIF 
     374 
     375      ELSE 
     376 
     377         ! OPEN boundary conditions (use time_offset=+1 as they are applied at the end of the step) 
     378         IF( nb_trcobc > 0 ) THEN 
     379           if (lwp) write(numout,'(a,i5,a,i10)') '   reading OBC data for ', nb_trcobc ,' variable(s) at step ', kt 
     380           CALL fld_read(kt=kt, kn_fsbc=1, sd=sf_trcobc, map=nbmap_ptr, kt_offset=+1) 
     381         ENDIF 
     382 
     383         ! SURFACE boundary conditions 
     384         IF( nb_trcsbc > 0 ) THEN 
     385           if (lwp) write(numout,'(a,i5,a,i10)') '   reading SBC data for ', nb_trcsbc ,' variable(s) at step ', kt 
     386           CALL fld_read(kt=kt, kn_fsbc=1, sd=sf_trcsbc) 
     387         ENDIF 
     388 
     389         ! COASTAL boundary conditions 
     390         IF( nb_trccbc > 0 ) THEN 
     391           if (lwp) write(numout,'(a,i5,a,i10)') '   reading CBC data for ', nb_trccbc ,' variable(s) at step ', kt 
     392           CALL fld_read(kt=kt, kn_fsbc=1, sd=sf_trccbc) 
     393         ENDIF 
     394 
     395      ENDIF 
     396 
    289397      ! 
    290398      IF( nn_timing == 1 )  CALL timing_stop('trc_bc_read') 
     
    297405   !!---------------------------------------------------------------------- 
    298406CONTAINS 
     407 
     408   SUBROUTINE trc_bc_init( ntrc )        ! Empty routine 
     409      INTEGER,INTENT(IN) :: ntrc                           ! number of tracers 
     410      WRITE(*,*) 'trc_bc_init: You should not have seen this print! error?', kt 
     411   END SUBROUTINE trc_bc_init 
     412 
    299413   SUBROUTINE trc_bc_read( kt )        ! Empty routine 
    300414      WRITE(*,*) 'trc_bc_read: You should not have seen this print! error?', kt 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/TOP_SRC/trcdia.F90

    r5836 r6108  
    106106      CHARACTER (len=20) :: cltra, cltrau 
    107107      CHARACTER (len=80) :: cltral 
    108       REAL(wp) :: zsto, zout, zdt 
     108      REAL(wp) :: zsto, zout 
    109109      INTEGER  :: iimi, iima, ijmi, ijma, ipk, it, itmod, iiter 
    110110      !!---------------------------------------------------------------------- 
     
    118118 
    119119      ! Define frequency of output and means 
    120       zdt = rdt 
    121120      IF( ln_mskland )   THEN   ;   clop = "only(x)"   ! put 1.e+20 on land (very expensive!!) 
    122121      ELSE                      ;   clop = "x"         ! no use of the mask value (require less cpu time) 
     
    126125      clop = "inst("//TRIM(clop)//")" 
    127126# else 
    128       zsto = zdt 
     127      zsto = rdt 
    129128      clop = "ave("//TRIM(clop)//")" 
    130129# endif 
    131       zout = nn_writetrc * zdt 
     130      zout = nn_writetrc * rdt 
    132131 
    133132      ! Define indices of the horizontal output zoom and vertical limit storage 
     
    182181         CALL histbeg( clhstnam, jpi, glamt, jpj, gphit,     & 
    183182            &          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) 
    185184 
    186185         ! Vertical grid for tracer : gdept 
     
    250249      INTEGER  ::   jl 
    251250      INTEGER  ::   iimi, iima, ijmi, ijma, ipk, it, itmod, iiter 
    252       REAL(wp) ::   zsto, zout, zdt 
     251      REAL(wp) ::   zsto, zout 
    253252      !!---------------------------------------------------------------------- 
    254253 
     
    261260      ! 
    262261      ! Define frequency of output and means 
    263       zdt = rdt 
    264262      IF( ln_mskland )   THEN   ;   clop = "only(x)"   ! put 1.e+20 on land (very expensive!!) 
    265263      ELSE                      ;   clop = "x"         ! no use of the mask value (require less cpu time) 
    266264      ENDIF 
    267265#  if defined key_diainstant 
    268       zsto = nn_writedia * zdt 
     266      zsto = nn_writedia * rdt 
    269267      clop = "inst("//TRIM(clop)//")" 
    270268#  else 
    271       zsto = zdt 
     269      zsto = rdt 
    272270      clop = "ave("//TRIM(clop)//")" 
    273271#  endif 
    274       zout = nn_writedia * zdt 
     272      zout = nn_writedia * rdt 
    275273 
    276274      ! Define indices of the horizontal output zoom and vertical limit storage 
     
    302300         CALL histbeg( clhstnam, jpi, glamt, jpj, gphit,             & 
    303301            &          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 ) 
    305303 
    306304         ! Vertical grid for 2d and 3d arrays 
     
    387385      INTEGER  ::   ji, jj, jk, jl 
    388386      INTEGER  ::   iimi, iima, ijmi, ijma, ipk, it, itmod, iiter 
    389       REAL(wp) ::   zsto, zout, zdt 
     387      REAL(wp) ::   zsto, zout 
    390388      !!---------------------------------------------------------------------- 
    391389 
     
    398396 
    399397      ! Define frequency of output and means 
    400       zdt = rdt 
    401398      IF( ln_mskland )   THEN   ;   clop = "only(x)"   ! put 1.e+20 on land (very expensive!!) 
    402399      ELSE                      ;   clop = "x"         ! no use of the mask value (require less cpu time) 
    403400      ENDIF 
    404401#        if defined key_diainstant 
    405       zsto = nn_writebio * zdt 
     402      zsto = nn_writebio * rdt 
    406403      clop = "inst("//TRIM(clop)//")" 
    407404#        else 
    408       zsto = zdt 
     405      zsto = rdt 
    409406      clop = "ave("//TRIM(clop)//")" 
    410407#        endif 
    411       zout = nn_writebio * zdt 
     408      zout = nn_writebio * rdt 
    412409 
    413410      ! Define indices of the horizontal output zoom and vertical limit storage 
     
    435432         CALL histbeg( clhstnam, jpi, glamt, jpj, gphit,      & 
    436433            &    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 ) 
    438435         ! Vertical grid for biological trends 
    439436         CALL histvert(nitb, 'deptht', 'Vertical T levels', 'm', ipk, gdept_1d, ndepitb) 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/TOP_SRC/trcdta.F90

    r6060 r6108  
    99   !!            3.4   !  2010-11  (C. Ethe, G. Madec)  use of fldread + dynamical allocation  
    1010   !!            3.5   !  2013-08  (M. Vichi)  generalization for other BGC models 
    11    !!---------------------------------------------------------------------- 
    12 #if  defined key_top  
     11   !!            3.6   !  2015-03  (T. Lovato) revision of code log info 
     12   !!---------------------------------------------------------------------- 
     13#if defined key_top  
    1314   !!---------------------------------------------------------------------- 
    1415   !!   'key_top'                                                TOP model  
     
    7172      IF( nn_timing == 1 )  CALL timing_start('trc_dta_init') 
    7273      ! 
     74      IF( lwp ) THEN 
     75         WRITE(numout,*) ' ' 
     76         WRITE(numout,*) '  trc_dta_init : Tracers Initial Conditions (IC)' 
     77         WRITE(numout,*) '  ~~~~~~~~~~~ ' 
     78      ENDIF 
     79      ! 
    7380      !  Initialisation 
    7481      ierr0 = 0  ;  ierr1 = 0  ;  ierr2 = 0  ;  ierr3 = 0   
     
    7683      ALLOCATE( n_trc_index(ntrc), slf_i(ntrc), STAT=ierr0 ) 
    7784      IF( ierr0 > 0 ) THEN 
    78          CALL ctl_stop( 'trc_nam: unable to allocate n_trc_index' )   ;   RETURN 
     85         CALL ctl_stop( 'trc_dta_init: unable to allocate n_trc_index' )   ;   RETURN 
    7986      ENDIF 
    8087      nb_trcdta      = 0 
     
    96103      REWIND( numnat_ref )              ! Namelist namtrc_dta in reference namelist : Passive tracer input data 
    97104      READ  ( numnat_ref, namtrc_dta, IOSTAT = ios, ERR = 901) 
    98 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_dta in reference namelist', lwp ) 
     105901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_dta_init in reference namelist', lwp ) 
    99106 
    100107      REWIND( numnat_cfg )              ! Namelist namtrc_dta in configuration namelist : Passive tracer input data 
    101108      READ  ( numnat_cfg, namtrc_dta, IOSTAT = ios, ERR = 902 ) 
    102 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_dta in configuration namelist', lwp ) 
     109902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_dta_init in configuration namelist', lwp ) 
    103110      IF(lwm) WRITE ( numont, namtrc_dta ) 
    104111 
     
    108115               clndta = TRIM( sn_trcdta(jn)%clvar )  
    109116               clntrc = TRIM( ctrcnm   (jn)       )  
     117               if (jn > jptra) clntrc='Dummy' ! By pass weird formats in ocean.output if ntrc > jptra 
    110118               zfact  = rn_trfac(jn) 
    111119               IF( clndta /=  clntrc ) THEN  
    112                   CALL ctl_warn( 'trc_dta_init: passive tracer data initialisation :  ',   & 
    113                   &              'the variable name in the data file : '//clndta//   &  
    114                   &              '  must be the same than the name of the passive tracer : '//clntrc//' ') 
     120                  CALL ctl_warn( 'trc_dta_init: passive tracer data initialisation    ',   & 
     121                  &              'Input name of data file : '//TRIM(clndta)//   & 
     122                  &              ' differs from that of tracer : '//TRIM(clntrc)//' ') 
    115123               ENDIF 
    116                WRITE(numout,*) ' read an initial file for passive tracer number :', jn, ' name : ', clndta, &  
    117                &               ' multiplicative factor : ', zfact 
     124               WRITE(numout,*) ' ' 
     125               WRITE(numout,'(a, i3,3a,e11.3)') ' Read IC file for tracer number :', & 
     126               &            jn, ', name : ', TRIM(clndta), ', Multiplicative Scaling factor : ', zfact 
    118127            ENDIF 
    119128         END DO 
     
    123132         ALLOCATE( sf_trcdta(nb_trcdta), rf_trfac(nb_trcdta), STAT=ierr1 ) 
    124133         IF( ierr1 > 0 ) THEN 
    125             CALL ctl_stop( 'trc_dta_ini: unable to allocate  sf_trcdta structure' )   ;   RETURN 
     134            CALL ctl_stop( 'trc_dta_init: unable to allocate  sf_trcdta structure' )   ;   RETURN 
    126135         ENDIF 
    127136         ! 
     
    134143               IF( sn_trcdta(jn)%ln_tint )  ALLOCATE( sf_trcdta(jl)%fdta(jpi,jpj,jpk,2) , STAT=ierr3 ) 
    135144               IF( ierr2 + ierr3 > 0 ) THEN 
    136                  CALL ctl_stop( 'trc_dta : unable to allocate passive tracer data arrays' )   ;   RETURN 
     145                 CALL ctl_stop( 'trc_dta_init : unable to allocate passive tracer data arrays' )   ;   RETURN 
    137146               ENDIF 
    138147            ENDIF 
     
    140149         ENDDO 
    141150         !                         ! fill sf_trcdta with slf_i and control print 
    142          CALL fld_fill( sf_trcdta, slf_i, cn_dir, 'trc_dta', 'Passive tracer data', 'namtrc' ) 
     151         CALL fld_fill( sf_trcdta, slf_i, cn_dir, 'trc_dta_init', 'Passive tracer data', 'namtrc' ) 
    143152         ! 
    144153      ENDIF 
     
    222231                           sf_dta(1)%fnow(ji,jj,ik) = (1.-zl) * sf_dta(1)%fnow(ji,jj,ik) + zl * sf_dta(1)%fnow(ji,jj,ik-1) 
    223232                        ENDIF 
    224                         ik = mikt(ji,jj) 
    225                         IF( ik > 1 ) THEN 
    226                            zl = ( gdept_0(ji,jj,ik) - gdept_1d(ik) ) / ( gdept_1d(ik+1) - gdept_1d(ik) ) 
    227                            sf_dta(1)%fnow(ji,jj,ik) = (1.-zl) * sf_dta(1)%fnow(ji,jj,ik) + zl * sf_dta(1)%fnow(ji,jj,ik+1) 
    228                         ENDIF 
    229233                     END DO 
    230234                  END DO 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/TOP_SRC/trcini.F90

    r6069 r6108  
    2626   USE sbc_oce 
    2727   USE trcice          ! tracers in sea ice 
     28   USE trcbc,   only : trc_bc_init ! generalized Boundary Conditions 
    2829  
    2930   IMPLICIT NONE 
     
    206207      !!---------------------------------------------------------------------- 
    207208      ! 
     209      ! Initialisation of tracers Initial Conditions 
    208210      IF( ln_trcdta )      CALL trc_dta_init(jptra) 
     211 
     212      ! Initialisation of tracers Boundary Conditions 
     213      IF( lk_my_trc )     CALL trc_bc_init(jptra) 
    209214 
    210215      IF( ln_rsttr ) THEN 
     
    250255      !! ** Purpose :   Allocate all the dynamic arrays of the OPA modules 
    251256      !!---------------------------------------------------------------------- 
    252       USE trcadv        , ONLY:   trc_adv_alloc          ! TOP-related alloc routines... 
    253257      USE trc           , ONLY:   trc_alloc 
    254       USE trcnxt        , ONLY:   trc_nxt_alloc 
    255       USE trczdf        , ONLY:   trc_zdf_alloc 
    256258      USE trdtrc_oce    , ONLY:   trd_trc_oce_alloc 
    257259#if defined key_trdmxl_trc  
     
    262264      !!---------------------------------------------------------------------- 
    263265      ! 
    264       ierr =        trc_adv_alloc()          ! Start of TOP-related alloc routines... 
    265       ierr = ierr + trc_alloc    () 
    266       ierr = ierr + trc_nxt_alloc() 
    267       ierr = ierr + trc_zdf_alloc() 
     266      ierr =        trc_alloc() 
    268267      ierr = ierr + trd_trc_oce_alloc() 
    269268#if defined key_trdmxl_trc  
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/TOP_SRC/trcnam.F90

    r5836 r6108  
    9898 
    9999       
    100       rdttrc(:) = rdttra(:) * FLOAT( nn_dttrc )   ! vertical profile of passive tracer time-step 
     100      rdttrc = rdt * FLOAT( nn_dttrc )   ! passive tracer time-step 
    101101   
    102102      IF(lwp) THEN                   ! control print 
    103103        WRITE(numout,*)  
    104         WRITE(numout,*) '    Passive Tracer  time step    rdttrc  = ', rdttrc(1) 
     104        WRITE(numout,*) '    Passive Tracer  time step    rdttrc  = ', rdttrc 
    105105        WRITE(numout,*)  
    106106      ENDIF 
     
    173173      !!--------------------------------------------------------------------- 
    174174      ! 
    175       IF(lwp) WRITE(numout,*) 'trc_nam : read the passive tracer namelists' 
     175      IF(lwp) WRITE(numout,*) 'trc_nam_run : read the passive tracer namelists' 
    176176      IF(lwp) WRITE(numout,*) '~~~~~~~' 
    177177 
     
    271271      TYPE(PTRACER), DIMENSION(jptra) :: sn_tracer  ! type of tracer for saving if not key_iomput 
    272272      !! 
    273       NAMELIST/namtrc/ sn_tracer, ln_trcdta,ln_trcdmp, ln_trcdmp_clo 
     273      NAMELIST/namtrc/ sn_tracer, ln_trcdta, ln_trcdmp, ln_trcdmp_clo 
    274274      !!--------------------------------------------------------------------- 
    275275      IF(lwp) WRITE(numout,*) 
    276       IF(lwp) WRITE(numout,*) 'trc_nam : read the passive tracer namelists' 
     276      IF(lwp) WRITE(numout,*) 'trc_nam_trc : read the passive tracer namelists' 
    277277      IF(lwp) WRITE(numout,*) '~~~~~~~' 
    278278 
     
    291291         ctrcun    (jn) = TRIM( sn_tracer(jn)%clunit  ) 
    292292         ln_trc_ini(jn) =       sn_tracer(jn)%llinit 
     293#if defined key_my_trc 
     294         ln_trc_sbc(jn) =       sn_tracer(jn)%llsbc 
     295         ln_trc_cbc(jn) =       sn_tracer(jn)%llcbc 
     296         ln_trc_obc(jn) =       sn_tracer(jn)%llobc 
     297#endif 
    293298         ln_trc_wri(jn) =       sn_tracer(jn)%llsave 
    294299      END DO 
     
    317322      NAMELIST/namtrc_dia/ ln_diatrc, ln_diabio, nn_writedia, nn_writebio 
    318323      !!--------------------------------------------------------------------- 
    319  
    320       IF(lwp) WRITE(numout,*)  
    321       IF(lwp) WRITE(numout,*) 'trc_nam_dia : read the passive tracer diagnostics options' 
    322       IF(lwp) WRITE(numout,*) '~~~~~~~' 
    323324 
    324325      IF(lwp) WRITE(numout,*) 
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/TOP_SRC/trcrst.F90

    r6060 r6108  
    130130      !!---------------------------------------------------------------------- 
    131131      ! 
    132       CALL iom_rstput( kt, nitrst, numrtw, 'rdttrc1', rdttrc(1) )   ! surface passive tracer time step 
     132      CALL iom_rstput( kt, nitrst, numrtw, 'rdttrc1', rdttrc )   ! passive tracer time step 
    133133      ! prognostic variables  
    134134      ! --------------------  
     
    198198         IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~' 
    199199 
    200          IF ( jprstlib == jprstdimg ) THEN 
    201            ! eventually read netcdf file (monobloc)  for restarting on different number of processors 
    202            ! if {cn_trcrst_in}.nc exists, then set jlibalt to jpnf90  
    203            INQUIRE( FILE = TRIM(cn_trcrst_indir)//'/'//TRIM(cn_trcrst_in)//'.nc', EXIST = llok ) 
    204            IF ( llok ) THEN ; jlibalt = jpnf90  ; ELSE ; jlibalt = jprstlib ; ENDIF 
    205          ENDIF 
    206  
    207200         IF( ln_rsttr ) THEN 
    208201            CALL iom_open( TRIM(cn_trcrst_indir)//'/'//cn_trcrst_in, numrtr, kiolib = jlibalt ) 
     
    234227             ELSE 
    235228               ndastp = ndate0 - 1     ! ndate0 read in the namelist in dom_nam 
    236                adatrj = ( REAL( nittrc000-1, wp ) * rdttra(1) ) / rday 
     229               adatrj = ( REAL( nittrc000-1, wp ) * rdt ) / rday 
    237230               ! note this is wrong if time step has changed during run 
    238231            ENDIF 
  • branches/2015/dev_merge_2015/NEMOGCM/TOOLS/NESTING/src/agrif_create_restart.f90

    r2455 r6108  
    411411        ENDIF 
    412412        ! 
    413      CASE('nfice','nfbulk','kt','ndastp','adatrj','rdt','rdttra1')  
     413     CASE('nfice','nfbulk','kt','ndastp','adatrj','rdt')  
    414414        IF(.NOT. dimg ) THEN 
    415415           WRITE(*,*) 'copy ',TRIM(Ncdf_varname(i)) 
     
    417417              CALL Read_Ncdf_var(TRIM(Ncdf_varname(i)),TRIM(restart_file),tabtemp0dreal)   
    418418              SELECT CASE (TRIM(Ncdf_varname(i))) 
    419               CASE('rdt','rdttra1') 
     419              CASE('rdt') 
    420420                 tabtemp0dreal = tabtemp0dreal/rhot 
    421421              CASE('kt') 
  • branches/2015/dev_merge_2015/NEMOGCM/TOOLS/OBSTOOLS/src/in_out_manager.F90

    r3000 r6108  
    3737   INTEGER       ::   nn_write      =   10        !: model standard output frequency 
    3838   INTEGER       ::   nn_stock      =   10        !: restart file frequency 
    39    LOGICAL       ::   ln_dimgnnn    = .FALSE.     !: type of dimgout. (F): 1 file for all proc 
    40                                                        !:                  (T): 1 file per proc 
    4139   LOGICAL       ::   ln_mskland    = .FALSE.     !: mask land points in NetCDF outputs (costly: + ~15%) 
    4240   LOGICAL       ::   ln_clobber    = .FALSE.     !: clobber (overwrite) an existing file 
  • branches/2015/dev_merge_2015/NEMOGCM/TOOLS/SIREN/cfg/variable.cfg

    r5617 r6108  
    4343kt           |                |      |   |                 |                                       |                                   
    4444rdt          |                |      |   |                 |                                       |                                   
    45 rdttra1      |                |      |   |                 |                                       |                                   
    4645utau_b       |                | XY   | U |                 |                                       |surface_downward_eastward_stress   
    4746vtau_b       |                | XY   | V |                 |                                       |surface_downward_northward_stress  
Note: See TracChangeset for help on using the changeset viewer.