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 12377 for NEMO/trunk/src/OCE/DOM/domain.F90 – NEMO

Ignore:
Timestamp:
2020-02-12T15:39:06+01:00 (4 years ago)
Author:
acc
Message:

The big one. Merging all 2019 developments from the option 1 branch back onto the trunk.

This changeset reproduces 2019/dev_r11943_MERGE_2019 on the trunk using a 2-URL merge
onto a working copy of the trunk. I.e.:

svn merge --ignore-ancestry \

svn+ssh://acc@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/NEMO/trunk \
svn+ssh://acc@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/NEMO/branches/2019/dev_r11943_MERGE_2019 ./

The --ignore-ancestry flag avoids problems that may otherwise arise from the fact that
the merge history been trunk and branch may have been applied in a different order but
care has been taken before this step to ensure that all applicable fixes and updates
are present in the merge branch.

The trunk state just before this step has been branched to releases/release-4.0-HEAD
and that branch has been immediately tagged as releases/release-4.0.2. Any fixes
or additions in response to tickets on 4.0, 4.0.1 or 4.0.2 should be done on
releases/release-4.0-HEAD. From now on future 'point' releases (e.g. 4.0.2) will
remain unchanged with periodic releases as needs demand. Note release-4.0-HEAD is a
transitional naming convention. Future full releases, say 4.2, will have a release-4.2
branch which fulfills this role and the first point release (e.g. 4.2.0) will be made
immediately following the release branch creation.

2020 developments can be started from any trunk revision later than this one.

Location:
NEMO/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk

    • Property svn:externals
      •  

        old new  
        33^/utils/build/mk@HEAD         mk 
        44^/utils/tools@HEAD            tools 
        5 ^/vendors/AGRIF/dev@HEAD      ext/AGRIF 
         5^/vendors/AGRIF/dev_r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
        77^/vendors/IOIPSL@HEAD         ext/IOIPSL 
  • NEMO/trunk/src/OCE/DOM/domain.F90

    r11536 r12377  
    3030   USE trc_oce        ! shared ocean & passive tracers variab 
    3131   USE phycst         ! physical constants 
    32    USE closea         ! closed seas 
    3332   USE domhgr         ! domain: set the horizontal mesh 
    3433   USE domzgr         ! domain: set the vertical mesh 
     
    3837   USE c1d            ! 1D configuration 
    3938   USE dyncor_c1d     ! 1D configuration: Coriolis term    (cor_c1d routine) 
    40    USE wet_dry,  ONLY : ll_wd 
     39   USE wet_dry, ONLY : ll_wd 
     40   USE closea , ONLY : dom_clo ! closed seas 
    4141   ! 
    4242   USE in_out_manager ! I/O manager 
     
    5858CONTAINS 
    5959 
    60    SUBROUTINE dom_init(cdstr) 
     60   SUBROUTINE dom_init( Kbb, Kmm, Kaa, cdstr ) 
    6161      !!---------------------------------------------------------------------- 
    6262      !!                  ***  ROUTINE dom_init  *** 
     
    7373      !!              - 1D configuration, move Coriolis, u and v at T-point 
    7474      !!---------------------------------------------------------------------- 
     75      INTEGER          , INTENT(in) :: Kbb, Kmm, Kaa          ! ocean time level indices 
     76      CHARACTER (len=*), INTENT(in) :: cdstr                  ! model: NEMO or SAS. Determines core restart variables 
     77      ! 
    7578      INTEGER ::   ji, jj, jk, ik   ! dummy loop indices 
    7679      INTEGER ::   iconf = 0    ! local integers 
    7780      CHARACTER (len=64) ::   cform = "(A12, 3(A13, I7))"  
    78       CHARACTER (len=*), INTENT(IN) :: cdstr                  ! model: NEMO or SAS. Determines core restart variables 
    7981      INTEGER , DIMENSION(jpi,jpj) ::   ik_top , ik_bot       ! top and bottom ocean level 
    8082      REAL(wp), DIMENSION(jpi,jpj) ::   z1_hu_0, z1_hv_0 
     
    134136      ENDIF 
    135137      ! 
    136       CALL dom_hgr                     ! Horizontal mesh 
    137       CALL dom_zgr( ik_top, ik_bot )   ! Vertical mesh and bathymetry 
    138       CALL dom_msk( ik_top, ik_bot )   ! Masks 
    139       IF( ln_closea )   CALL dom_clo   ! ln_closea=T : closed seas included in the simulation 
    140                                        ! Read in masks to define closed seas and lakes  
    141       ! 
    142       DO jj = 1, jpj                   ! depth of the iceshelves 
    143          DO ji = 1, jpi 
    144             ik = mikt(ji,jj) 
    145             risfdep(ji,jj) = gdepw_0(ji,jj,ik) 
    146          END DO 
    147       END DO 
     138      CALL dom_hgr                      ! Horizontal mesh 
     139 
     140      IF( ln_closea ) CALL dom_clo      ! Read in masks to define closed seas and lakes 
     141 
     142      CALL dom_zgr( ik_top, ik_bot )    ! Vertical mesh and bathymetry 
     143 
     144      CALL dom_msk( ik_top, ik_bot )    ! Masks 
    148145      ! 
    149146      ht_0(:,:) = 0._wp  ! Reference ocean thickness 
     
    161158      ! 
    162159         !       before        !          now          !       after         ! 
    163             gdept_b = gdept_0  ;   gdept_n = gdept_0   !        ---          ! depth of grid-points 
    164             gdepw_b = gdepw_0  ;   gdepw_n = gdepw_0   !        ---          ! 
    165                                    gde3w_n = gde3w_0   !        ---          ! 
     160            gdept(:,:,:,Kbb) = gdept_0  ;   gdept(:,:,:,Kmm) = gdept_0   ;   gdept(:,:,:,Kaa) = gdept_0   ! depth of grid-points 
     161            gdepw(:,:,:,Kbb) = gdepw_0  ;   gdepw(:,:,:,Kmm) = gdepw_0   ;   gdepw(:,:,:,Kaa) = gdepw_0   ! 
     162                                   gde3w = gde3w_0   !        ---          ! 
    166163         !                                                                   
    167               e3t_b =   e3t_0  ;     e3t_n =   e3t_0   ;   e3t_a =  e3t_0    ! scale factors 
    168               e3u_b =   e3u_0  ;     e3u_n =   e3u_0   ;   e3u_a =  e3u_0    ! 
    169               e3v_b =   e3v_0  ;     e3v_n =   e3v_0   ;   e3v_a =  e3v_0    ! 
    170                                      e3f_n =   e3f_0   !        ---          ! 
    171               e3w_b =   e3w_0  ;     e3w_n =   e3w_0   !        ---          ! 
    172              e3uw_b =  e3uw_0  ;    e3uw_n =  e3uw_0   !        ---          ! 
    173              e3vw_b =  e3vw_0  ;    e3vw_n =  e3vw_0   !        ---          ! 
     164              e3t(:,:,:,Kbb) =   e3t_0  ;     e3t(:,:,:,Kmm) =   e3t_0   ;   e3t(:,:,:,Kaa) =  e3t_0    ! scale factors 
     165              e3u(:,:,:,Kbb) =   e3u_0  ;     e3u(:,:,:,Kmm) =   e3u_0   ;   e3u(:,:,:,Kaa) =  e3u_0    ! 
     166              e3v(:,:,:,Kbb) =   e3v_0  ;     e3v(:,:,:,Kmm) =   e3v_0   ;   e3v(:,:,:,Kaa) =  e3v_0    ! 
     167                                     e3f =   e3f_0   !        ---          ! 
     168              e3w(:,:,:,Kbb) =   e3w_0  ;     e3w(:,:,:,Kmm) =   e3w_0   ;    e3w(:,:,:,Kaa) =   e3w_0   !  
     169             e3uw(:,:,:,Kbb) =  e3uw_0  ;    e3uw(:,:,:,Kmm) =  e3uw_0   ;   e3uw(:,:,:,Kaa) =  e3uw_0   !   
     170             e3vw(:,:,:,Kbb) =  e3vw_0  ;    e3vw(:,:,:,Kmm) =  e3vw_0   ;   e3vw(:,:,:,Kaa) =  e3vw_0   ! 
    174171         ! 
    175172         z1_hu_0(:,:) = ssumask(:,:) / ( hu_0(:,:) + 1._wp - ssumask(:,:) )     ! _i mask due to ISF 
     
    177174         ! 
    178175         !        before       !          now          !       after         ! 
    179                                       ht_n =    ht_0   !                     ! water column thickness 
    180                hu_b =    hu_0  ;      hu_n =    hu_0   ;    hu_a =    hu_0   !  
    181                hv_b =    hv_0  ;      hv_n =    hv_0   ;    hv_a =    hv_0   ! 
    182             r1_hu_b = z1_hu_0  ;   r1_hu_n = z1_hu_0   ; r1_hu_a = z1_hu_0   ! inverse of water column thickness 
    183             r1_hv_b = z1_hv_0  ;   r1_hv_n = z1_hv_0   ; r1_hv_a = z1_hv_0   ! 
     176                                      ht =    ht_0   !                     ! water column thickness 
     177               hu(:,:,Kbb) =    hu_0  ;      hu(:,:,Kmm) =    hu_0   ;    hu(:,:,Kaa) =    hu_0   !  
     178               hv(:,:,Kbb) =    hv_0  ;      hv(:,:,Kmm) =    hv_0   ;    hv(:,:,Kaa) =    hv_0   ! 
     179            r1_hu(:,:,Kbb) = z1_hu_0  ;   r1_hu(:,:,Kmm) = z1_hu_0   ; r1_hu(:,:,Kaa) = z1_hu_0   ! inverse of water column thickness 
     180            r1_hv(:,:,Kbb) = z1_hv_0  ;   r1_hv(:,:,Kmm) = z1_hv_0   ; r1_hv(:,:,Kaa) = z1_hv_0   ! 
    184181         ! 
    185182         ! 
    186183      ELSE                       != time varying : initialize before/now/after variables 
    187184         ! 
    188          IF( .NOT.l_offline )  CALL dom_vvl_init  
     185         IF( .NOT.l_offline )  CALL dom_vvl_init( Kbb, Kmm, Kaa ) 
    189186         ! 
    190187      ENDIF 
     
    192189      IF( lk_c1d         )   CALL cor_c1d       ! 1D configuration: Coriolis set at T-point 
    193190      ! 
    194       IF( ln_meshmask .AND. .NOT.ln_iscpl )                        CALL dom_wri     ! Create a domain file 
    195       IF( ln_meshmask .AND.      ln_iscpl .AND. .NOT.ln_rstart )   CALL dom_wri     ! Create a domain file 
    196       IF(                                       .NOT.ln_rstart )   CALL dom_ctl     ! Domain control 
    197       ! 
    198       IF( ln_write_cfg )   CALL cfg_write         ! create the configuration file 
     191      IF( ln_meshmask    )   CALL dom_wri       ! Create a domain file 
     192      IF( .NOT.ln_rstart )   CALL dom_ctl       ! Domain control 
     193      ! 
     194      IF( ln_write_cfg   )   CALL cfg_write     ! create the configuration file 
    199195      ! 
    200196      IF(lwp) THEN 
     
    292288         &             nn_it000, nn_itend , nn_date0    , nn_time0     , nn_leapy  , nn_istate ,     & 
    293289         &             nn_stock, nn_write , ln_mskland  , ln_clobber   , nn_chunksz, nn_euler  ,     & 
    294          &             ln_cfmeta, ln_iscpl, ln_xios_read, nn_wxios 
    295       NAMELIST/namdom/ ln_linssh, rn_isfhmin, rn_rdt, rn_atfp, ln_crs, ln_meshmask 
     290         &             ln_cfmeta, ln_xios_read, nn_wxios 
     291      NAMELIST/namdom/ ln_linssh, rn_rdt, rn_atfp, ln_crs, ln_meshmask 
    296292#if defined key_netcdf4 
    297293      NAMELIST/namnc4/ nn_nchunks_i, nn_nchunks_j, nn_nchunks_k, ln_nc4zip 
     
    306302      ! 
    307303      ! 
    308       REWIND( numnam_ref )              ! Namelist namrun in reference namelist : Parameters of the run 
    309304      READ  ( numnam_ref, namrun, IOSTAT = ios, ERR = 901) 
    310305901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namrun in reference namelist' ) 
    311       REWIND( numnam_cfg )              ! Namelist namrun in configuration namelist : Parameters of the run 
    312306      READ  ( numnam_cfg, namrun, IOSTAT = ios, ERR = 902 ) 
    313307902   IF( ios >  0 )   CALL ctl_nam ( ios , 'namrun in configuration namelist' ) 
     
    343337         WRITE(numout,*) '      overwrite an existing file      ln_clobber      = ', ln_clobber 
    344338         WRITE(numout,*) '      NetCDF chunksize (bytes)        nn_chunksz      = ', nn_chunksz 
    345          WRITE(numout,*) '      IS coupling at the restart step ln_iscpl        = ', ln_iscpl 
    346339         IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
    347340            WRITE(numout,*) '      READ restart for a single file using XIOS ln_xios_read =', ln_xios_read 
     
    404397#endif 
    405398 
    406       REWIND( numnam_ref )              ! Namelist namdom in reference namelist : space & time domain (bathymetry, mesh, timestep) 
    407399      READ  ( numnam_ref, namdom, IOSTAT = ios, ERR = 903) 
    408400903   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namdom in reference namelist' ) 
    409       REWIND( numnam_cfg )              ! Namelist namdom in configuration namelist : space & time domain (bathymetry, mesh, timestep) 
    410401      READ  ( numnam_cfg, namdom, IOSTAT = ios, ERR = 904 ) 
    411402904   IF( ios >  0 )   CALL ctl_nam ( ios , 'namdom in configuration namelist' ) 
     
    417408         WRITE(numout,*) '      linear free surface (=T)                ln_linssh   = ', ln_linssh 
    418409         WRITE(numout,*) '      create mesh/mask file                   ln_meshmask = ', ln_meshmask 
    419          WRITE(numout,*) '      treshold to open the isf cavity         rn_isfhmin  = ', rn_isfhmin, ' [m]' 
    420410         WRITE(numout,*) '      ocean time step                         rn_rdt      = ', rn_rdt 
    421411         WRITE(numout,*) '      asselin time filter parameter           rn_atfp     = ', rn_atfp 
     
    436426#if defined key_netcdf4 
    437427      !                             ! NetCDF 4 case   ("key_netcdf4" defined) 
    438       REWIND( numnam_ref )              ! Namelist namnc4 in reference namelist : NETCDF 
    439428      READ  ( numnam_ref, namnc4, IOSTAT = ios, ERR = 907) 
    440429907   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namnc4 in reference namelist' ) 
    441       REWIND( numnam_cfg )              ! Namelist namnc4 in configuration namelist : NETCDF 
    442430      READ  ( numnam_cfg, namnc4, IOSTAT = ios, ERR = 908 ) 
    443431908   IF( ios >  0 )   CALL ctl_nam ( ios , 'namnc4 in configuration namelist' ) 
Note: See TracChangeset for help on using the changeset viewer.