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 9366 for branches/UKMO/test_moci_test_suite_namelist_read/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90 – NEMO

Ignore:
Timestamp:
2018-02-28T16:29:13+01:00 (6 years ago)
Author:
andmirek
Message:

#2050 first version. Compiled OK in moci test suite

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/test_moci_test_suite_namelist_read/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90

    r8269 r9366  
    4444 
    4545   PUBLIC   dom_init   ! called by opa.F90 
     46   PRIVATE  run_namelist, dom_namelist, cla_namelist 
     47#if defined key_netcdf4 
     48   PRIVATE  nc4_namelist 
     49#endif 
    4650 
    4751   !! * Substitutions 
     
    156160      ln_xios_read = .false.            ! set in case ln_xios_read is not in namelist 
    157161      nn_wxios = 0 
    158       REWIND( numnam_ref )              ! Namelist namrun in reference namelist : Parameters of the run 
    159       READ  ( numnam_ref, namrun, IOSTAT = ios, ERR = 901) 
    160 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namrun in reference namelist', lwp ) 
    161  
    162       REWIND( numnam_cfg )              ! Namelist namrun in configuration namelist : Parameters of the run 
    163       READ  ( numnam_cfg, namrun, IOSTAT = ios, ERR = 902 ) 
    164 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namrun in configuration namelist', lwp ) 
     162      IF(lwm) THEN 
     163         REWIND( numnam_ref )              ! Namelist namrun in reference namelist : Parameters of the run 
     164         READ  ( numnam_ref, namrun, IOSTAT = ios, ERR = 901) 
     165901      IF( ios /= 0 ) CALL ctl_nam ( ios , 'namrun in reference namelist', lwm ) 
     166         REWIND( numnam_cfg )              ! Namelist namrun in configuration namelist : Parameters of the run 
     167         READ  ( numnam_cfg, namrun, IOSTAT = ios, ERR = 902 ) 
     168902      IF( ios /= 0 ) CALL ctl_nam ( ios , 'namrun in configuration namelist', lwm ) 
     169      ENDIF 
     170 
    165171      IF(lwm) WRITE ( numond, namrun ) 
    166172      ! 
     173      CALL run_namelist() 
     174 
    167175      IF(lwp) THEN                  ! control print 
    168176         WRITE(numout,*) 
     
    248256      ENDIF 
    249257#endif 
    250  
    251       REWIND( numnam_ref )              ! Namelist namdom in reference namelist : space & time domain (bathymetry, mesh, timestep) 
    252       READ  ( numnam_ref, namdom, IOSTAT = ios, ERR = 903) 
    253 903   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdom in reference namelist', lwp ) 
     258      IF(lwm) THEN 
     259         REWIND( numnam_ref )              ! Namelist namdom in reference namelist : space & time domain (bathymetry, mesh, timestep) 
     260         READ  ( numnam_ref, namdom, IOSTAT = ios, ERR = 903) 
     261903      IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdom in reference namelist', lwm ) 
     262         REWIND( numnam_cfg )              ! Namelist namdom in configuration namelist : space & time domain (bathymetry, mesh, timestep) 
     263         READ  ( numnam_cfg, namdom, IOSTAT = ios, ERR = 904 ) 
     264904      IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdom in configuration namelist', lwm ) 
     265      ENDIF 
     266 
     267      IF(lwm) WRITE ( numond, namdom ) 
    254268   
    255       ! 
    256       REWIND( numnam_cfg )              ! Namelist namdom in configuration namelist : space & time domain (bathymetry, mesh, timestep) 
    257       READ  ( numnam_cfg, namdom, IOSTAT = ios, ERR = 904 ) 
    258 904   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdom in configuration namelist', lwp ) 
    259       IF(lwm) WRITE ( numond, namdom ) 
     269      CALL dom_namelist() 
    260270 
    261271      IF(lwp) THEN 
     
    314324      wxioso = nn_wxios 
    315325 
    316       REWIND( numnam_ref )              ! Namelist namcla in reference namelist : Cross land advection 
    317       READ  ( numnam_ref, namcla, IOSTAT = ios, ERR = 905) 
    318 905   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcla in reference namelist', lwp ) 
    319  
    320       REWIND( numnam_cfg )              ! Namelist namcla in configuration namelist : Cross land advection 
    321       READ  ( numnam_cfg, namcla, IOSTAT = ios, ERR = 906 ) 
    322 906   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcla in configuration namelist', lwp ) 
     326      IF(lwm) THEN 
     327         REWIND( numnam_ref )              ! Namelist namcla in reference namelist : Cross land advection 
     328         READ  ( numnam_ref, namcla, IOSTAT = ios, ERR = 905) 
     329905      IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcla in reference namelist', lwm ) 
     330         REWIND( numnam_cfg )              ! Namelist namcla in configuration namelist : Cross land advection 
     331         READ  ( numnam_cfg, namcla, IOSTAT = ios, ERR = 906 ) 
     332906      IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcla in configuration namelist', lwm ) 
     333      ENDIF 
    323334      IF(lwm) WRITE( numond, namcla ) 
     335 
     336      CALL cla_namelist() 
    324337 
    325338      IF(lwp) THEN 
     
    338351#if defined key_netcdf4 
    339352      !                             ! NetCDF 4 case   ("key_netcdf4" defined) 
    340       REWIND( numnam_ref )              ! Namelist namnc4 in reference namelist : NETCDF 
    341       READ  ( numnam_ref, namnc4, IOSTAT = ios, ERR = 907) 
    342 907   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namnc4 in reference namelist', lwp ) 
    343  
    344       REWIND( numnam_cfg )              ! Namelist namnc4 in configuration namelist : NETCDF 
    345       READ  ( numnam_cfg, namnc4, IOSTAT = ios, ERR = 908 ) 
    346 908   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namnc4 in configuration namelist', lwp ) 
     353      IF(lwm) THEN 
     354         REWIND( numnam_ref )              ! Namelist namnc4 in reference namelist : NETCDF 
     355         READ  ( numnam_ref, namnc4, IOSTAT = ios, ERR = 907) 
     356907      IF( ios /= 0 ) CALL ctl_nam ( ios , 'namnc4 in reference namelist', lwm ) 
     357         REWIND( numnam_cfg )              ! Namelist namnc4 in configuration namelist : NETCDF 
     358         READ  ( numnam_cfg, namnc4, IOSTAT = ios, ERR = 908 ) 
     359908      IF( ios /= 0 ) CALL ctl_nam ( ios , 'namnc4 in configuration namelist', lwm ) 
     360      ENDIF 
     361 
    347362      IF(lwm) WRITE( numond, namnc4 ) 
     363 
     364      CALL nc4_namelist() 
    348365 
    349366      IF(lwp) THEN                        ! control print 
     
    479496   END SUBROUTINE dom_stiff 
    480497 
    481  
    482  
     498   SUBROUTINE run_namelist() 
     499     !!--------------------------------------------------------------------- 
     500     !!                   ***  ROUTINE run_namelist  *** 
     501     !!                      
     502     !! ** Purpose :   Broadcast namelist variables read by procesor lwm 
     503     !! 
     504     !! ** Method  :   use lib_mpp 
     505     !!---------------------------------------------------------------------- 
     506#if defined key_mpp_mpi 
     507      CALL mpp_bcast(cn_ocerst_indir, lc) 
     508      CALL mpp_bcast(cn_ocerst_outdir, lc) 
     509      CALL mpp_bcast(nn_stocklist, 10) 
     510      CALL mpp_bcast(ln_rst_list) 
     511      CALL mpp_bcast(nn_no) 
     512      CALL mpp_bcast(cn_exp, lc) 
     513      CALL mpp_bcast(cn_ocerst_in, lc) 
     514      CALL mpp_bcast(cn_ocerst_out, lc) 
     515      CALL mpp_bcast(ln_rstart) 
     516      CALL mpp_bcast(ln_rstdate) 
     517      CALL mpp_bcast(nn_rstctl) 
     518      CALL mpp_bcast(nn_it000) 
     519      CALL mpp_bcast(nn_itend) 
     520      CALL mpp_bcast(nn_date0) 
     521      CALL mpp_bcast(nn_leapy) 
     522      CALL mpp_bcast(nn_istate) 
     523      CALL mpp_bcast(nn_stock) 
     524      CALL mpp_bcast(nn_write) 
     525      CALL mpp_bcast(ln_dimgnnn) 
     526      CALL mpp_bcast(ln_mskland) 
     527      CALL mpp_bcast(ln_cfmeta) 
     528      CALL mpp_bcast(ln_clobber) 
     529      CALL mpp_bcast(nn_chunksz) 
     530      CALL mpp_bcast(nn_euler) 
     531      CALL mpp_bcast(ln_xios_read) 
     532      CALL mpp_bcast(nn_wxios) 
     533#endif 
     534   END SUBROUTINE run_namelist 
     535 
     536   SUBROUTINE dom_namelist() 
     537     !!--------------------------------------------------------------------- 
     538     !!                   ***  ROUTINE dom_namelist  *** 
     539     !!                      
     540     !! ** Purpose :   Broadcast namelist variables read by procesor lwm 
     541     !! 
     542     !! ** Method  :   use lib_mpp 
     543     !!---------------------------------------------------------------------- 
     544#if defined key_mpp_mpi 
     545      CALL mpp_bcast(nn_bathy) 
     546      CALL mpp_bcast(rn_bathy) 
     547      CALL mpp_bcast(rn_e3zps_min) 
     548      CALL mpp_bcast(rn_e3zps_rat) 
     549      CALL mpp_bcast(nn_msh) 
     550      CALL mpp_bcast(rn_hmin) 
     551      CALL mpp_bcast(nn_acc) 
     552      CALL mpp_bcast(rn_atfp) 
     553      CALL mpp_bcast(rn_rdt) 
     554      CALL mpp_bcast(rn_rdtmin) 
     555      CALL mpp_bcast(rn_rdtmax) 
     556      CALL mpp_bcast(rn_rdth) 
     557      CALL mpp_bcast(nn_closea) 
     558      CALL mpp_bcast(ln_crs) 
     559      CALL mpp_bcast(jphgr_msh) 
     560      CALL mpp_bcast(ppglam0) 
     561      CALL mpp_bcast(ppgphi0) 
     562      CALL mpp_bcast(ppe1_deg) 
     563      CALL mpp_bcast(ppe2_deg) 
     564      CALL mpp_bcast(ppe1_m) 
     565      CALL mpp_bcast(ppe2_m) 
     566      CALL mpp_bcast(ppsur) 
     567      CALL mpp_bcast(ppa0) 
     568      CALL mpp_bcast(ppa1) 
     569      CALL mpp_bcast(ppkth) 
     570      CALL mpp_bcast(ppacr) 
     571      CALL mpp_bcast(ppdzmin) 
     572      CALL mpp_bcast(pphmax) 
     573      CALL mpp_bcast(ldbletanh) 
     574      CALL mpp_bcast(ppa2) 
     575      CALL mpp_bcast(ppkth2) 
     576      CALL mpp_bcast(ppacr2) 
     577#endif 
     578   END SUBROUTINE dom_namelist 
     579 
     580   SUBROUTINE cla_namelist() 
     581     !!--------------------------------------------------------------------- 
     582     !!                   ***  ROUTINE cla_namelist  *** 
     583     !!                      
     584     !! ** Purpose :   Broadcast namelist variables read by procesor lwm 
     585     !! 
     586     !! ** Method  :   use lib_mpp 
     587     !!---------------------------------------------------------------------- 
     588#if defined key_mpp_mpi 
     589      CALL mpp_bcast(nn_cla) 
     590#endif 
     591   END SUBROUTINE cla_namelist 
     592 
     593#if defined key_netcdf4 
     594   SUBROUTINE nc4_namelist() 
     595     !!--------------------------------------------------------------------- 
     596     !!                   ***  ROUTINE nc4_namelist  *** 
     597     !!                      
     598     !! ** Purpose :   Broadcast namelist variables read by procesor lwm 
     599     !! 
     600     !! ** Method  :   use lib_mpp 
     601     !!---------------------------------------------------------------------- 
     602#if defined key_mpp_mpi 
     603      CALL mpp_bcast(nn_nchunks_i) 
     604      CALL mpp_bcast(nn_nchunks_j) 
     605      CALL mpp_bcast(nn_nchunks_k) 
     606      CALL mpp_bcast(ln_nc4zip) 
     607#endif 
     608   END SUBROUTINE nc4_namelist 
     609#endif 
    483610   !!====================================================================== 
    484611END MODULE domain 
Note: See TracChangeset for help on using the changeset viewer.