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 5989 for branches/2014/dev_r4650_UKMO10_Tidally_Meaned_Diagnostics/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90 – NEMO

Ignore:
Timestamp:
2015-12-03T09:10:32+01:00 (8 years ago)
Author:
deazer
Message:

Merging TMB and 25h diagnostics to head of trunk
added brief documentation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2014/dev_r4650_UKMO10_Tidally_Meaned_Diagnostics/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90

    r5260 r5989  
    1919   !!   dom_nam        : read and contral domain namelists 
    2020   !!   dom_ctl        : control print for the ocean domain 
     21   !!   dom_stiff      : diagnose maximum grid stiffness/hydrostatic consistency (s-coordinate) 
    2122   !!---------------------------------------------------------------------- 
    2223   USE oce             ! ocean variables 
     
    2526   USE phycst          ! physical constants 
    2627   USE closea          ! closed seas 
    27    USE in_out_manager  ! I/O manager 
    28    USE lib_mpp         ! distributed memory computing library 
    29  
    3028   USE domhgr          ! domain: set the horizontal mesh 
    3129   USE domzgr          ! domain: set the vertical mesh 
     
    3634   USE c1d             ! 1D vertical configuration 
    3735   USE dyncor_c1d      ! Coriolis term (c1d case)         (cor_c1d routine) 
     36   ! 
     37   USE in_out_manager  ! I/O manager 
     38   USE lib_mpp         ! distributed memory computing library 
     39   USE lbclnk          ! ocean lateral boundary condition (or mpp link) 
    3840   USE timing          ! Timing 
    39    USE lbclnk          ! ocean lateral boundary condition (or mpp link) 
    4041 
    4142   IMPLICIT NONE 
     
    8182      ENDIF 
    8283      ! 
    83                              CALL dom_nam      ! read namelist ( namrun, namdom, namcla ) 
     84                             CALL dom_nam      ! read namelist ( namrun, namdom ) 
    8485                             CALL dom_clo      ! Closed seas and lake 
    8586                             CALL dom_hgr      ! Horizontal mesh 
     
    8889      IF( ln_sco )           CALL dom_stiff    ! Maximum stiffness ratio/hydrostatic consistency 
    8990      ! 
    90       ht_0(:,:) = 0.0_wp                       ! Reference ocean depth at T-points 
    91       hu_0(:,:) = 0.0_wp                       ! Reference ocean depth at U-points 
    92       hv_0(:,:) = 0.0_wp                       ! Reference ocean depth at V-points 
     91      ht_0(:,:) = 0._wp                        ! Reference ocean depth at T-points 
     92      hu_0(:,:) = 0._wp                        ! Reference ocean depth at U-points 
     93      hv_0(:,:) = 0._wp                        ! Reference ocean depth at V-points 
    9394      DO jk = 1, jpk 
    9495         ht_0(:,:) = ht_0(:,:) + e3t_0(:,:,jk) * tmask(:,:,jk) 
     
    9798      END DO 
    9899      ! 
    99       IF( lk_vvl )           CALL dom_vvl_init ! Vertical variable mesh 
     100      IF( lk_vvl         )   CALL dom_vvl_init ! Vertical variable mesh 
    100101      ! 
    101102      IF( lk_c1d         )   CALL cor_c1d      ! 1D configuration: Coriolis set at T-point 
     
    131132      !! ** input   : - namrun namelist 
    132133      !!              - namdom namelist 
    133       !!              - namcla namelist 
    134134      !!              - namnc4 namelist   ! "key_netcdf4" only 
    135135      !!---------------------------------------------------------------------- 
    136136      USE ioipsl 
    137       NAMELIST/namrun/ nn_no   , cn_exp    , cn_ocerst_in, cn_ocerst_out, ln_rstart , nn_rstctl,   & 
     137      NAMELIST/namrun/ cn_ocerst_indir, cn_ocerst_outdir, nn_stocklist, ln_rst_list,               & 
     138         &             nn_no   , cn_exp    , cn_ocerst_in, cn_ocerst_out, ln_rstart , nn_rstctl,   & 
    138139         &             nn_it000, nn_itend  , nn_date0    , nn_leapy     , nn_istate , nn_stock ,   & 
    139          &             nn_write, ln_dimgnnn, ln_mskland  , ln_clobber   , nn_chunksz, nn_euler 
     140         &             nn_write, ln_dimgnnn, ln_mskland  , ln_cfmeta    , ln_clobber, nn_chunksz, nn_euler 
    140141      NAMELIST/namdom/ nn_bathy, rn_bathy , rn_e3zps_min, rn_e3zps_rat, nn_msh, rn_hmin,   & 
    141142         &             nn_acc   , rn_atfp     , rn_rdt      , rn_rdtmin ,                  & 
     
    145146         &             ppsur, ppa0, ppa1, ppkth, ppacr, ppdzmin, pphmax, ldbletanh, & 
    146147         &             ppa2, ppkth2, ppacr2 
    147       NAMELIST/namcla/ nn_cla 
    148148#if defined key_netcdf4 
    149149      NAMELIST/namnc4/ nn_nchunks_i, nn_nchunks_j, nn_nchunks_k, ln_nc4zip 
     
    154154      REWIND( numnam_ref )              ! Namelist namrun in reference namelist : Parameters of the run 
    155155      READ  ( numnam_ref, namrun, IOSTAT = ios, ERR = 901) 
    156 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namrun in reference namelist', lwp ) 
     156901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namrun in reference namelist', lwp ) 
    157157 
    158158      REWIND( numnam_cfg )              ! Namelist namrun in configuration namelist : Parameters of the run 
    159159      READ  ( numnam_cfg, namrun, IOSTAT = ios, ERR = 902 ) 
    160 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namrun in configuration namelist', lwp ) 
     160902   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namrun in configuration namelist', lwp ) 
    161161      IF(lwm) WRITE ( numond, namrun ) 
    162162      ! 
     
    169169         WRITE(numout,*) '      experiment name for output      cn_exp     = ', cn_exp 
    170170         WRITE(numout,*) '      file prefix restart input       cn_ocerst_in= ', cn_ocerst_in 
     171         WRITE(numout,*) '      restart input directory         cn_ocerst_indir= ', cn_ocerst_indir 
    171172         WRITE(numout,*) '      file prefix restart output      cn_ocerst_out= ', cn_ocerst_out 
     173         WRITE(numout,*) '      restart output directory        cn_ocerst_outdir= ', cn_ocerst_outdir 
    172174         WRITE(numout,*) '      restart logical                 ln_rstart  = ', ln_rstart 
    173175         WRITE(numout,*) '      start with forward time step    nn_euler   = ', nn_euler 
     
    178180         WRITE(numout,*) '      leap year calendar (0/1)        nn_leapy   = ', nn_leapy 
    179181         WRITE(numout,*) '      initial state output            nn_istate  = ', nn_istate 
    180          WRITE(numout,*) '      frequency of restart file       nn_stock   = ', nn_stock 
     182         IF( ln_rst_list ) THEN 
     183            WRITE(numout,*) '      list of restart dump times      nn_stocklist   =', nn_stocklist 
     184         ELSE 
     185            WRITE(numout,*) '      frequency of restart file       nn_stock   = ', nn_stock 
     186         ENDIF 
    181187         WRITE(numout,*) '      frequency of output file        nn_write   = ', nn_write 
    182188         WRITE(numout,*) '      multi file dimgout              ln_dimgnnn = ', ln_dimgnnn 
    183189         WRITE(numout,*) '      mask land points                ln_mskland = ', ln_mskland 
     190         WRITE(numout,*) '      additional CF standard metadata ln_cfmeta  = ', ln_cfmeta 
    184191         WRITE(numout,*) '      overwrite an existing file      ln_clobber = ', ln_clobber 
    185192         WRITE(numout,*) '      NetCDF chunksize (bytes)        nn_chunksz = ', nn_chunksz 
     
    195202      ninist = nn_istate 
    196203      nstock = nn_stock 
     204      nstocklist = nn_stocklist 
    197205      nwrite = nn_write 
    198206      neuler = nn_euler 
    199       IF ( neuler == 1 .AND. .NOT.ln_rstart ) THEN 
     207      IF ( neuler == 1 .AND. .NOT. ln_rstart ) THEN 
    200208         WRITE(ctmp1,*) 'ln_rstart =.FALSE., nn_euler is forced to 0 ' 
    201209         CALL ctl_warn( ctmp1 ) 
     
    242250904   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdom in configuration namelist', lwp ) 
    243251      IF(lwm) WRITE ( numond, namdom ) 
    244  
     252      ! 
    245253      IF(lwp) THEN 
    246254         WRITE(numout,*) 
     
    284292         WRITE(numout,*) '                                      ppacr2            = ', ppacr2 
    285293      ENDIF 
    286  
     294      ! 
    287295      ntopo     = nn_bathy          ! conversion DOCTOR names into model names (this should disappear soon) 
    288296      e3zps_min = rn_e3zps_min 
     
    295303      rdtmax    = rn_rdtmin 
    296304      rdth      = rn_rdth 
    297  
    298       REWIND( numnam_ref )              ! Namelist namcla in reference namelist : Cross land advection 
    299       READ  ( numnam_ref, namcla, IOSTAT = ios, ERR = 905) 
    300 905   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcla in reference namelist', lwp ) 
    301  
    302       REWIND( numnam_cfg )              ! Namelist namcla in configuration namelist : Cross land advection 
    303       READ  ( numnam_cfg, namcla, IOSTAT = ios, ERR = 906 ) 
    304 906   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcla in configuration namelist', lwp ) 
    305       IF(lwm) WRITE( numond, namcla ) 
    306  
    307       IF(lwp) THEN 
    308          WRITE(numout,*) 
    309          WRITE(numout,*) '   Namelist namcla' 
    310          WRITE(numout,*) '      cross land advection                 nn_cla    = ', nn_cla 
    311       ENDIF 
    312       IF ( nn_cla .EQ. 1 ) THEN 
    313          IF  ( cp_cfg == "orca" .AND. jp_cfg == 2 ) THEN   ! ORCA R2  
    314             CONTINUE 
    315          ELSE 
    316             CALL ctl_stop( 'STOP', 'Cross land advation iplemented only for ORCA2 configuration: cp_cfg = "orca" and jp_cfg = 2 ' ) 
    317          ENDIF 
    318       ENDIF 
    319305 
    320306#if defined key_netcdf4 
     
    400386   END SUBROUTINE dom_ctl 
    401387 
     388 
    402389   SUBROUTINE dom_stiff 
    403390      !!---------------------------------------------------------------------- 
     
    418405      REAL(wp), DIMENSION(4) :: zr1 
    419406      !!---------------------------------------------------------------------- 
    420       rx1(:,:) = 0.e0 
    421       zrxmax   = 0.e0 
    422       zr1(:)   = 0.e0 
    423        
     407      rx1(:,:) = 0._wp 
     408      zrxmax   = 0._wp 
     409      zr1(:)   = 0._wp 
     410      ! 
    424411      DO ji = 2, jpim1 
    425412         DO jj = 2, jpjm1 
     
    446433         END DO 
    447434      END DO 
    448  
    449435      CALL lbc_lnk( rx1, 'T', 1. ) 
    450  
    451       zrxmax = MAXVAL(rx1) 
    452  
     436      ! 
     437      zrxmax = MAXVAL( rx1 ) 
     438      ! 
    453439      IF( lk_mpp )   CALL mpp_max( zrxmax ) ! max over the global domain 
    454  
     440      ! 
    455441      IF(lwp) THEN 
    456442         WRITE(numout,*) 
     
    458444         WRITE(numout,*) '~~~~~~~~~' 
    459445      ENDIF 
    460  
     446      ! 
    461447   END SUBROUTINE dom_stiff 
    462  
    463  
    464448 
    465449   !!====================================================================== 
Note: See TracChangeset for help on using the changeset viewer.