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 13151 for NEMO/branches/2020/dev_r12527_Gurvan_ShallowWater/src/SWE/domain.F90 – NEMO

Ignore:
Timestamp:
2020-06-24T14:38:26+02:00 (4 years ago)
Author:
gm
Message:

result from merge with qco r12983

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r12527_Gurvan_ShallowWater/src/SWE/domain.F90

    r12822 r13151  
    3434   USE dommsk         ! domain: set the mask system 
    3535   USE domwri         ! domain: write the meshmask file 
     36!!st5 
     37#if ! defined key_qco 
    3638   USE domvvl         ! variable volume 
     39#else 
     40   USE domqco          ! variable volume 
     41#endif 
     42!!st5 
    3743   USE c1d            ! 1D configuration 
    3844   USE dyncor_c1d     ! 1D configuration: Coriolis term    (cor_c1d routine) 
     
    7884      CHARACTER (len=*), INTENT(in) :: cdstr                  ! model: NEMO or SAS. Determines core restart variables 
    7985      ! 
    80       INTEGER ::   ji, jj, jk, ik   ! dummy loop indices 
     86!!st6 
     87      INTEGER ::   ji, jj, jk, jt   ! dummy loop indices 
     88!!st6 
    8189      INTEGER ::   iconf = 0    ! local integers 
    8290      CHARACTER (len=64) ::   cform = "(A12, 3(A13, I7))"  
     
    114122         CASE( 7 )   ;   WRITE(numout,*) '         (i.e. cyclic east-west and north-south)' 
    115123         CASE DEFAULT 
    116             CALL ctl_stop( 'jperio is out of range' ) 
     124            CALL ctl_stop( 'dom_init:   jperio is out of range' ) 
    117125         END SELECT 
    118126         WRITE(numout,*)     '      Ocean model configuration used:' 
     
    144152      IF( ln_closea ) CALL dom_clo      ! Read in masks to define closed seas and lakes 
    145153 
    146       CALL dom_zgr( ik_top, ik_bot )    ! Vertical mesh and bathymetry 
     154      CALL dom_zgr( ik_top, ik_bot )    ! Vertical mesh and bathymetry (return top and bottom ocean t-level indices) 
    147155 
    148156      CALL dom_msk( ik_top, ik_bot )    ! Masks 
    149  
    150       ht_0(:,:) = 0._wp                 ! Reference ocean thickness 
     157      ! 
     158      ht_0(:,:) = 0._wp  ! Reference ocean thickness 
    151159      hu_0(:,:) = 0._wp 
    152160      hv_0(:,:) = 0._wp 
     
    190198!            r1_e1e2t(ji,jj) = r1_e1e2t(ji,jj) / zcoeff 
    191199!!an45 
     200!!st7 : make it easier to use key_qco condition (gm stuff) 
     201#if defined key_qco 
     202      !           !==  initialisation of time varying coordinate  ==!   Quasi-Euerian coordinate case 
     203      ! 
     204      IF( .NOT.l_offline )   CALL dom_qco_init( Kbb, Kmm, Kaa ) 
     205      ! 
     206      IF( ln_linssh )        CALL ctl_stop('STOP','domain: key_qco and ln_linssh = T are incompatible') 
     207      ! 
     208#else 
    192209      !           !==  time varying part of coordinate system  ==! 
    193210      ! 
    194211      IF( ln_linssh ) THEN       != Fix in time : set to the reference one for all 
    195       ! 
    196          !       before        !          now          !       after         ! 
    197             gdept(:,:,:,Kbb) = gdept_0  ;   gdept(:,:,:,Kmm) = gdept_0   ;   gdept(:,:,:,Kaa) = gdept_0   ! depth of grid-points 
    198             gdepw(:,:,:,Kbb) = gdepw_0  ;   gdepw(:,:,:,Kmm) = gdepw_0   ;   gdepw(:,:,:,Kaa) = gdepw_0   ! 
    199                                    gde3w = gde3w_0   !        ---          ! 
    200          !                                                                   
    201               e3t(:,:,:,Kbb) =   e3t_0  ;     e3t(:,:,:,Kmm) =   e3t_0   ;   e3t(:,:,:,Kaa) =  e3t_0    ! scale factors 
    202               e3u(:,:,:,Kbb) =   e3u_0  ;     e3u(:,:,:,Kmm) =   e3u_0   ;   e3u(:,:,:,Kaa) =  e3u_0    ! 
    203               e3v(:,:,:,Kbb) =   e3v_0  ;     e3v(:,:,:,Kmm) =   e3v_0   ;   e3v(:,:,:,Kaa) =  e3v_0    ! 
    204                                      e3f =   e3f_0   !        ---          ! 
    205               e3w(:,:,:,Kbb) =   e3w_0  ;     e3w(:,:,:,Kmm) =   e3w_0   ;    e3w(:,:,:,Kaa) =   e3w_0   !  
    206              e3uw(:,:,:,Kbb) =  e3uw_0  ;    e3uw(:,:,:,Kmm) =  e3uw_0   ;   e3uw(:,:,:,Kaa) =  e3uw_0   !   
    207              e3vw(:,:,:,Kbb) =  e3vw_0  ;    e3vw(:,:,:,Kmm) =  e3vw_0   ;   e3vw(:,:,:,Kaa) =  e3vw_0   ! 
    208          ! 
    209          z1_hu_0(:,:) = ssumask(:,:) / ( hu_0(:,:) + 1._wp - ssumask(:,:) )     ! _i mask due to ISF 
    210          z1_hv_0(:,:) = ssvmask(:,:) / ( hv_0(:,:) + 1._wp - ssvmask(:,:) ) 
    211          ! 
    212          !        before       !          now          !       after         ! 
    213                                       ht =    ht_0   !                     ! water column thickness 
    214                hu(:,:,Kbb) =    hu_0  ;      hu(:,:,Kmm) =    hu_0   ;    hu(:,:,Kaa) =    hu_0   !  
    215                hv(:,:,Kbb) =    hv_0  ;      hv(:,:,Kmm) =    hv_0   ;    hv(:,:,Kaa) =    hv_0   ! 
    216             r1_hu(:,:,Kbb) = z1_hu_0  ;   r1_hu(:,:,Kmm) = z1_hu_0   ; r1_hu(:,:,Kaa) = z1_hu_0   ! inverse of water column thickness 
    217             r1_hv(:,:,Kbb) = z1_hv_0  ;   r1_hv(:,:,Kmm) = z1_hv_0   ; r1_hv(:,:,Kaa) = z1_hv_0   ! 
    218          ! 
     212         ! 
     213         DO jt = 1, jpt                         ! depth of t- and w-grid-points 
     214            gdept(:,:,:,jt) = gdept_0(:,:,:) 
     215            gdepw(:,:,:,jt) = gdepw_0(:,:,:) 
     216         END DO 
     217            gde3w(:,:,:)    = gde3w_0(:,:,:)    ! = gdept as the sum of e3t 
     218         ! 
     219         DO jt = 1, jpt                         ! vertical scale factors 
     220            e3t(:,:,:,jt) =  e3t_0(:,:,:) 
     221            e3u(:,:,:,jt) =  e3u_0(:,:,:) 
     222            e3v(:,:,:,jt) =  e3v_0(:,:,:) 
     223            e3w(:,:,:,jt) =  e3w_0(:,:,:) 
     224            e3uw(:,:,:,jt) = e3uw_0(:,:,:) 
     225            e3vw(:,:,:,jt) = e3vw_0(:,:,:) 
     226         END DO 
     227            e3f(:,:,:)    =  e3f_0(:,:,:) 
     228         ! 
     229         DO jt = 1, jpt                         ! water column thickness and its inverse 
     230            hu(:,:,jt)    =    hu_0(:,:) 
     231            hv(:,:,jt)    =    hv_0(:,:) 
     232            r1_hu(:,:,jt) = r1_hu_0(:,:) 
     233            r1_hv(:,:,jt) = r1_hv_0(:,:) 
     234         END DO 
     235            ht(:,:) =    ht_0(:,:) 
    219236         ! 
    220237      ELSE                       != time varying : initialize before/now/after variables 
    221238         ! 
    222          IF( .NOT.l_offline )  CALL dom_vvl_init( Kbb, Kmm, Kaa ) 
    223          ! 
    224       ENDIF 
     239         IF( .NOT.l_offline )   CALL dom_vvl_init( Kbb, Kmm, Kaa ) 
     240         ! 
     241      ENDIF 
     242#endif 
     243!!st7 
    225244      ! 
    226245      IF( lk_c1d         )   CALL cor_c1d       ! 1D configuration: Coriolis set at T-point 
     
    238257         WRITE(numout,*)  
    239258      ENDIF 
    240        
    241259      ! 
    242260   END SUBROUTINE dom_init 
Note: See TracChangeset for help on using the changeset viewer.