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 8903 – NEMO

Changeset 8903


Ignore:
Timestamp:
2017-12-05T16:59:03+01:00 (7 years ago)
Author:
jchanut
Message:

ENHANCE-14_Jerome_SAL - corrections after review - add scalar approximation - #1926

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

Legend:

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

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

    r7753 r8903  
    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_r8329_ENHANCE14_SAL/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90

    r7831 r8903  
    901901                 zu_spg = - grav * ( zsshp2_e(ji+1,jj) - zsshp2_e(ji,jj) ) * r1_e1u(ji,jj) 
    902902                 zv_spg = - grav * ( zsshp2_e(ji,jj+1) - zsshp2_e(ji,jj) ) * r1_e2v(ji,jj) 
    903                  zwx(ji,jj) = zu_spg * zcpx(ji,jj)  
    904                  zwy(ji,jj) = zv_spg * zcpy(ji,jj) 
     903                 zwx(ji,jj) = (1._wp - rn_scal_load) * zu_spg * zcpx(ji,jj)  
     904                 zwy(ji,jj) = (1._wp - rn_scal_load) * zv_spg * zcpy(ji,jj) 
    905905              END DO 
    906906           END DO 
     
    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 
    914                  zwy(ji,jj) = zv_spg 
     913                 zwx(ji,jj) = (1._wp - rn_scal_load) * zu_spg 
     914                 zwy(ji,jj) = (1._wp - rn_scal_load) * zv_spg 
    915915              END DO 
    916916           END DO 
  • branches/2017/dev_r8329_ENHANCE14_SAL/NEMOGCM/NEMO/OPA_SRC/SBC/sbctide.F90

    r8363 r8903  
    5454            ALLOCATE( amp_pot(jpi,jpj,nb_harmo),                      & 
    5555               &      phi_pot(jpi,jpj,nb_harmo), pot_astro(jpi,jpj)   ) 
    56             IF( ln_tide_load )THEN 
     56            IF( ln_read_load )THEN 
    5757               ALLOCATE( amp_load(jpi,jpj,nb_harmo), phi_load(jpi,jpj,nb_harmo) ) 
    5858               CALL tide_init_load 
     
    6060         ENDIF 
    6161         ! 
    62          IF( ln_tide_load )THEN 
     62         IF( ln_read_load )THEN 
    6363            amp_pot(:,:,:) = amp_load(:,:,:) 
    6464            phi_pot(:,:,:) = phi_load(:,:,:) 
     
    144144      IF(lwp) THEN 
    145145         WRITE(numout,*) 
    146          WRITE(numout,*) 'tide_init_load : Initialization of load potential' 
     146         WRITE(numout,*) 'tide_init_load : Initialization of load potential from file' 
    147147         WRITE(numout,*) '~~~~~~~~~~~~~~ ' 
    148148      ENDIF 
     
    150150      CALL wrk_alloc( jpi, jpj, zti, ztr ) 
    151151      ! 
    152       CALL iom_open ( filetide_load , inum ) 
     152      CALL iom_open ( cn_tide_load , inum ) 
    153153      ! 
    154154      DO itide = 1, nb_harmo 
  • branches/2017/dev_r8329_ENHANCE14_SAL/NEMOGCM/NEMO/OPA_SRC/SBC/tideini.F90

    r8363 r8903  
    2727   LOGICAL , PUBLIC ::   ln_tide         !: 
    2828   LOGICAL , PUBLIC ::   ln_tide_pot     !: 
    29    LOGICAL , PUBLIC ::   ln_tide_load    !: 
     29   LOGICAL , PUBLIC ::   ln_read_load    !: 
     30   LOGICAL , PUBLIC ::   ln_scal_load    !: 
    3031   LOGICAL , PUBLIC ::   ln_tide_ramp    !: 
    3132   INTEGER , PUBLIC ::   nb_harmo        !: 
    3233   INTEGER , PUBLIC ::   kt_tide         !: 
    3334   REAL(wp), PUBLIC ::   rdttideramp     !: 
    34    CHARACTER(len=80), PUBLIC ::   filetide_load   !: filename for input load potential     
     35   REAL(wp), PUBLIC ::   rn_scal_load    !: 
     36   CHARACTER(lc), PUBLIC ::   cn_tide_load   !: filename for input load potential     
    3537 
    3638   INTEGER , PUBLIC, ALLOCATABLE, DIMENSION(:) ::   ntide   !: 
     
    5153      INTEGER  ::   ios                 ! Local integer output status for namelist read 
    5254      ! 
    53       NAMELIST/nam_tide/ln_tide, ln_tide_load, filetide_load, ln_tide_pot, ln_tide_ramp, rdttideramp, clname 
     55      NAMELIST/nam_tide/ln_tide, ln_tide_pot, ln_read_load, ln_scal_load, cn_tide_load, & 
     56                  &     ln_tide_ramp, rn_scal_load, rdttideramp, clname 
    5457      !!---------------------------------------------------------------------- 
    5558      ! 
     
    7174            WRITE(numout,*) '   Namelist nam_tide' 
    7275            WRITE(numout,*) '              Use tidal components : ln_tide      = ', ln_tide 
    73             WRITE(numout,*) '      Apply astronomical potential : ln_tide_pot  = ', ln_tide_pot 
    74             WRITE(numout,*) '      Read load potential          : ln_tide_load = ', ln_tide_load 
    75             WRITE(numout,*) '                                     nb_harmo     = ', nb_harmo 
    76             WRITE(numout,*) '                                     ln_tide_ramp = ', ln_tide_ramp 
    77             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 
     80            WRITE(numout,*) '                                              nb_harmo     = ', nb_harmo 
     81            WRITE(numout,*) '                                              rn_scal_load = ', rn_scal_load 
     82            WRITE(numout,*) '                                              ln_tide_ramp = ', ln_tide_ramp 
     83            WRITE(numout,*) '                                              rdttideramp  = ', rdttideramp 
    7884         ENDIF 
    7985      ELSE 
     
    96102      IF( nb_harmo == 0 )   CALL ctl_stop( 'tide_init : No tidal components set in nam_tide' ) 
    97103      ! 
    98       IF( ln_tide_load.AND.(.NOT.ln_tide_pot) ) & 
    99           &   CALL ctl_stop('with load potential, activate astronomical potential') 
     104      IF( ln_read_load.AND.(.NOT.ln_tide_pot) ) & 
     105          &   CALL ctl_stop('ln_read_load requires ln_tide_pot') 
     106      IF( ln_scal_load.AND.(.NOT.ln_tide_pot) ) & 
     107          &   CALL ctl_stop('ln_scal_load requires ln_tide_pot') 
     108      IF( ln_scal_load.AND.ln_tide_pot ) & 
     109          &   CALL ctl_stop('Choose between ln_scal_load and ln_read_load') 
    100110      IF( ln_tide_ramp.AND.((nitend-nit000+1)*rdt/rday < rdttideramp) )   & 
    101111         &   CALL ctl_stop('rdttideramp must be lower than run duration') 
     
    117127      kt_tide = nit000 
    118128      ! 
     129      IF (.NOT.ln_scal_load ) rn_scal_load = 0._wp 
     130      ! 
    119131   END SUBROUTINE tide_init 
    120132      
Note: See TracChangeset for help on using the changeset viewer.