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 8923 for branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM – NEMO

Ignore:
Timestamp:
2017-12-06T16:16:24+01:00 (6 years ago)
Author:
jchanut
Message:

Merge with SAL branch - #1965

Location:
branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/CONFIG/SHARED/namelist_ref

    r8901 r8923  
    525525&nam_tide      !   tide parameters 
    526526!----------------------------------------------------------------------- 
    527    ln_tide     = .false. 
    528    ln_tide_pot = .true.    !  use tidal potential forcing 
    529    ln_tide_ramp= .false.   ! 
    530    rdttideramp =    0.     ! 
    531    clname(1)   = 'DUMMY'   !  name of constituent - all tidal components must be set in namelist_cfg 
     527   ln_tide       = .false.                ! Activate tides 
     528      ln_tide_pot   = .true.                !  use tidal potential forcing 
     529         ln_scal_load  = .false.               ! Use scalar approximation for 
     530            rn_scal_load = 0.094               !     load potential 
     531         ln_read_load  = .false.               ! Or read load potential from file 
     532            cn_tide_load = 'tide_LOAD_grid_T.nc'  ! filename for load potential 
     533            !       
     534      ln_tide_ramp  = .false.               !  Use linear ramp for tides at startup 
     535         rdttideramp   =    0.                 !  ramp duration in days 
     536      clname(1)     = 'DUMMY'               !  name of constituent - all tidal components must be set in namelist_cfg 
    532537/ 
    533538!----------------------------------------------------------------------- 
  • branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90

    r8898 r8923  
    7474      ! 
    7575      INTEGER  ::   ji, jj, jk                             ! dummy loop indices 
    76       REAL(wp) ::   z2dt, zg_2, zintp, zgrau0r             ! temporary scalar 
     76      REAL(wp) ::   z2dt, zg_2, zintp, zgrau0r, zld        ! temporary scalar 
    7777      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdu, ztrdv 
    7878      REAL(wp), POINTER, DIMENSION(:,:)   ::  zpice 
     
    121121               END DO  
    122122            END DO 
     123            ! 
     124            IF (ln_scal_load) THEN 
     125               zld = rn_scal_load * grav 
     126               DO jj = 2, jpjm1                    ! add scalar approximation for load potential 
     127                  DO ji = fs_2, fs_jpim1   ! vector opt. 
     128                     spgu(ji,jj) = spgu(ji,jj) + zld * ( sshn(ji+1,jj) - sshn(ji,jj) ) * r1_e1u(ji,jj) 
     129                     spgv(ji,jj) = spgv(ji,jj) + zld * ( sshn(ji,jj+1) - sshn(ji,jj) ) * r1_e2v(ji,jj) 
     130                  END DO  
     131               END DO 
     132            ENDIF 
    123133         ENDIF 
    124134         ! 
  • branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90

    r8898 r8923  
    911911                 zu_spg = - grav * ( zsshp2_e(ji+1,jj) - zsshp2_e(ji,jj) ) * r1_e1u(ji,jj) 
    912912                 zv_spg = - grav * ( zsshp2_e(ji,jj+1) - zsshp2_e(ji,jj) ) * r1_e2v(ji,jj) 
    913                  zwx(ji,jj) = zu_spg * zcpx(ji,jj)  
    914                  zwy(ji,jj) = zv_spg * zcpy(ji,jj) 
     913                 zwx(ji,jj) = (1._wp - rn_scal_load) * zu_spg * zcpx(ji,jj)  
     914                 zwy(ji,jj) = (1._wp - rn_scal_load) * zv_spg * zcpy(ji,jj) 
    915915              END DO 
    916916           END DO 
     
    921921                 zu_spg = - grav * ( zsshp2_e(ji+1,jj) - zsshp2_e(ji,jj) ) * r1_e1u(ji,jj) 
    922922                 zv_spg = - grav * ( zsshp2_e(ji,jj+1) - zsshp2_e(ji,jj) ) * r1_e2v(ji,jj) 
    923                  zwx(ji,jj) = zu_spg 
    924                  zwy(ji,jj) = zv_spg 
     923                 zwx(ji,jj) = (1._wp - rn_scal_load) * zu_spg 
     924                 zwy(ji,jj) = (1._wp - rn_scal_load) * zv_spg 
    925925              END DO 
    926926           END DO 
  • branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/NEMO/OPA_SRC/SBC/sbctide.F90

    r7646 r8923  
    1616   USE ioipsl         ! NetCDF IPSL library 
    1717   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
     18   USE wrk_nemo       ! 
    1819 
    1920   IMPLICIT NONE 
     
    3031 
    3132   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   amp_pot, phi_pot 
    32  
     33   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   amp_load, phi_load 
     34  
    3335   !!---------------------------------------------------------------------- 
    3436   !! NEMO/OPA 3.5 , NEMO Consortium (2013) 
     
    4951      IF( nsec_day == NINT(0.5_wp * rdt) .OR. kt == nit000 ) THEN      ! start a new day 
    5052         ! 
    51          IF( kt == nit000 ) THEN 
     53         IF( kt == nit000 )THEN 
    5254            ALLOCATE( amp_pot(jpi,jpj,nb_harmo),                      & 
    5355               &      phi_pot(jpi,jpj,nb_harmo), pot_astro(jpi,jpj)   ) 
     56            IF( ln_read_load )THEN 
     57               ALLOCATE( amp_load(jpi,jpj,nb_harmo), phi_load(jpi,jpj,nb_harmo) ) 
     58               CALL tide_init_load 
     59            ENDIF 
    5460         ENDIF 
    5561         ! 
    56          amp_pot(:,:,:) = 0._wp 
    57          phi_pot(:,:,:) = 0._wp 
     62         IF( ln_read_load )THEN 
     63            amp_pot(:,:,:) = amp_load(:,:,:) 
     64            phi_pot(:,:,:) = phi_load(:,:,:) 
     65         ELSE  
     66            amp_pot(:,:,:) = 0._wp 
     67            phi_pot(:,:,:) = 0._wp 
     68         ENDIF 
    5869         pot_astro(:,:) = 0._wp 
    5970         ! 
     
    101112         DO ji = 1, jpi 
    102113            DO jj = 1, jpj 
    103                ztmp1 =  amp_pot(ji,jj,jk) * COS( phi_pot(ji,jj,jk) ) 
    104                ztmp2 = -amp_pot(ji,jj,jk) * SIN( phi_pot(ji,jj,jk) ) 
     114               ztmp1 =  ftide(jk) * amp_pot(ji,jj,jk) * COS( phi_pot(ji,jj,jk) + v0tide(jk) + utide(jk) ) 
     115               ztmp2 = -ftide(jk) * amp_pot(ji,jj,jk) * SIN( phi_pot(ji,jj,jk) + v0tide(jk) + utide(jk) ) 
    105116               zlat = gphit(ji,jj)*rad !! latitude en radian 
    106117               zlon = glamt(ji,jj)*rad !! longitude en radian 
     
    123134   END SUBROUTINE tide_init_potential 
    124135 
     136   SUBROUTINE tide_init_load 
     137      !!---------------------------------------------------------------------- 
     138      !!                 ***  ROUTINE tide_init_load  *** 
     139      !!---------------------------------------------------------------------- 
     140      INTEGER :: inum                 ! Logical unit of input file 
     141      INTEGER :: ji, jj, itide        ! dummy loop indices 
     142      REAL(wp), POINTER, DIMENSION(:,:) ::   ztr, zti   !: workspace to read in tidal harmonics data  
     143      !!---------------------------------------------------------------------- 
     144      IF(lwp) THEN 
     145         WRITE(numout,*) 
     146         WRITE(numout,*) 'tide_init_load : Initialization of load potential from file' 
     147         WRITE(numout,*) '~~~~~~~~~~~~~~ ' 
     148      ENDIF 
     149      ! 
     150      CALL wrk_alloc( jpi, jpj, zti, ztr ) 
     151      ! 
     152      CALL iom_open ( cn_tide_load , inum ) 
     153      ! 
     154      DO itide = 1, nb_harmo 
     155         CALL iom_get  ( inum, jpdom_data,TRIM(Wave(ntide(itide))%cname_tide)//'_z1', ztr(:,:) ) 
     156         CALL iom_get  ( inum, jpdom_data,TRIM(Wave(ntide(itide))%cname_tide)//'_z2', zti(:,:) ) 
     157         ! 
     158         DO ji=1,jpi 
     159            DO jj=1,jpj 
     160               amp_load(ji,jj,itide) =  SQRT( ztr(ji,jj)**2. + zti(ji,jj)**2. ) 
     161               phi_load(ji,jj,itide) = ATAN2(-zti(ji,jj), ztr(ji,jj) ) 
     162            END DO 
     163         END DO 
     164         ! 
     165      END DO 
     166      CALL iom_close( inum ) 
     167      ! 
     168      CALL wrk_dealloc( jpi, jpj, zti, ztr ) 
     169      ! 
     170   END SUBROUTINE tide_init_load 
     171 
    125172  !!====================================================================== 
    126173END MODULE sbctide 
  • branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/NEMO/OPA_SRC/SBC/tideini.F90

    r7646 r8923  
    88   USE oce            ! ocean dynamics and tracers variables 
    99   USE dom_oce        ! ocean space and time domain 
    10    USE phycst         ! physical constant 
    11    USE daymod         ! calandar 
     10   USE phycst         ! physical constants 
     11   USE daymod         ! calendar 
    1212   USE tide_mod       !  
    1313   ! 
     
    2727   LOGICAL , PUBLIC ::   ln_tide         !: 
    2828   LOGICAL , PUBLIC ::   ln_tide_pot     !: 
     29   LOGICAL , PUBLIC ::   ln_read_load    !: 
     30   LOGICAL , PUBLIC ::   ln_scal_load    !: 
    2931   LOGICAL , PUBLIC ::   ln_tide_ramp    !: 
    3032   INTEGER , PUBLIC ::   nb_harmo        !: 
    3133   INTEGER , PUBLIC ::   kt_tide         !: 
    3234   REAL(wp), PUBLIC ::   rdttideramp     !: 
    33     
     35   REAL(wp), PUBLIC ::   rn_scal_load    !: 
     36   CHARACTER(lc), PUBLIC ::   cn_tide_load   !:  
     37 
    3438   INTEGER , PUBLIC, ALLOCATABLE, DIMENSION(:) ::   ntide   !: 
    3539 
     
    4953      INTEGER  ::   ios                 ! Local integer output status for namelist read 
    5054      ! 
    51       NAMELIST/nam_tide/ln_tide, ln_tide_pot, ln_tide_ramp, rdttideramp, clname 
     55      NAMELIST/nam_tide/ln_tide, ln_tide_pot, ln_scal_load, ln_read_load, cn_tide_load, & 
     56                  &     ln_tide_ramp, rn_scal_load, rdttideramp, clname 
    5257      !!---------------------------------------------------------------------- 
    5358      ! 
     
    6974            WRITE(numout,*) '   Namelist nam_tide' 
    7075            WRITE(numout,*) '              Use tidal components : ln_tide      = ', ln_tide 
    71             WRITE(numout,*) '      Apply astronomical potential : ln_tide_pot  = ', ln_tide_pot 
    72             WRITE(numout,*) '                                     nb_harmo     = ', nb_harmo 
    73             WRITE(numout,*) '                                     ln_tide_ramp = ', ln_tide_ramp 
    74             WRITE(numout,*) '                                     rdttideramp  = ', rdttideramp 
     76            WRITE(numout,*) '      Apply astronomical potential          : ln_tide_pot  = ', ln_tide_pot 
     77            WRITE(numout,*) '      Use scalar approx. for load potential : ln_scal_load = ', ln_scal_load 
     78            WRITE(numout,*) '      Read load potential from file         : ln_read_load = ', ln_read_load 
     79            WRITE(numout,*) '      Apply ramp on tides at startup        : ln_tide_ramp = ', ln_tide_ramp 
     80            WRITE(numout,*) '      Fraction of SSH used in scal. approx. : rn_scal_load = ', rn_scal_load 
     81            WRITE(numout,*) '      Duration (days) of ramp               : rdttideramp  = ', rdttideramp 
    7582         ENDIF 
    7683      ELSE 
     
    93100      IF( nb_harmo == 0 )   CALL ctl_stop( 'tide_init : No tidal components set in nam_tide' ) 
    94101      ! 
     102      IF( ln_read_load.AND.(.NOT.ln_tide_pot) ) & 
     103          &   CALL ctl_stop('ln_read_load requires ln_tide_pot') 
     104      IF( ln_scal_load.AND.(.NOT.ln_tide_pot) ) & 
     105          &   CALL ctl_stop('ln_scal_load requires ln_tide_pot') 
     106      IF( ln_scal_load.AND.ln_read_load ) & 
     107          &   CALL ctl_stop('Choose between ln_scal_load and ln_read_load') 
    95108      IF( ln_tide_ramp.AND.((nitend-nit000+1)*rdt/rday < rdttideramp) )   & 
    96109         &   CALL ctl_stop('rdttideramp must be lower than run duration') 
     
    112125      kt_tide = nit000 
    113126      ! 
     127      IF (.NOT.ln_scal_load ) rn_scal_load = 0._wp 
     128      ! 
    114129   END SUBROUTINE tide_init 
    115130      
Note: See TracChangeset for help on using the changeset viewer.