Changeset 8363


Ignore:
Timestamp:
2017-07-24T09:59:20+02:00 (4 years ago)
Author:
cbricaud
Message:

commit change for in 2017WP/ENHANCE-14_Jerome_SAL branch ; see ticket #1926

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

Legend:

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

    r8284 r8363  
    526526&nam_tide      !   tide parameters 
    527527!----------------------------------------------------------------------- 
    528    ln_tide     = .false. 
    529    ln_tide_pot = .true.    !  use tidal potential forcing 
    530    ln_tide_ramp= .false.   ! 
    531    rdttideramp =    0.     ! 
    532    clname(1)   = 'DUMMY'   !  name of constituent - all tidal components must be set in namelist_cfg 
     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 
    533535/ 
    534536!----------------------------------------------------------------------- 
  • branches/2017/dev_r8329_ENHANCE14_SAL/NEMOGCM/NEMO/OPA_SRC/SBC/sbctide.F90

    r7646 r8363  
    1111   USE daymod         ! calandar 
    1212   USE tideini        !  
     13   USE wrk_nemo        ! Memory allocation 
    1314   ! 
    1415   USE in_out_manager ! I/O units 
     
    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_tide_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_tide_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' 
     147         WRITE(numout,*) '~~~~~~~~~~~~~~ ' 
     148      ENDIF 
     149      ! 
     150      CALL wrk_alloc( jpi, jpj, zti, ztr ) 
     151      ! 
     152      CALL iom_open ( filetide_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_r8329_ENHANCE14_SAL/NEMOGCM/NEMO/OPA_SRC/SBC/tideini.F90

    r7646 r8363  
    2727   LOGICAL , PUBLIC ::   ln_tide         !: 
    2828   LOGICAL , PUBLIC ::   ln_tide_pot     !: 
     29   LOGICAL , PUBLIC ::   ln_tide_load    !: 
    2930   LOGICAL , PUBLIC ::   ln_tide_ramp    !: 
    3031   INTEGER , PUBLIC ::   nb_harmo        !: 
    3132   INTEGER , PUBLIC ::   kt_tide         !: 
    3233   REAL(wp), PUBLIC ::   rdttideramp     !: 
    33     
     34   CHARACTER(len=80), PUBLIC ::   filetide_load   !: filename for input load potential     
     35 
    3436   INTEGER , PUBLIC, ALLOCATABLE, DIMENSION(:) ::   ntide   !: 
    3537 
     
    4951      INTEGER  ::   ios                 ! Local integer output status for namelist read 
    5052      ! 
    51       NAMELIST/nam_tide/ln_tide, ln_tide_pot, ln_tide_ramp, rdttideramp, clname 
     53      NAMELIST/nam_tide/ln_tide, ln_tide_load, filetide_load, ln_tide_pot, ln_tide_ramp, rdttideramp, clname 
    5254      !!---------------------------------------------------------------------- 
    5355      ! 
     
    7072            WRITE(numout,*) '              Use tidal components : ln_tide      = ', ln_tide 
    7173            WRITE(numout,*) '      Apply astronomical potential : ln_tide_pot  = ', ln_tide_pot 
     74            WRITE(numout,*) '      Read load potential          : ln_tide_load = ', ln_tide_load 
    7275            WRITE(numout,*) '                                     nb_harmo     = ', nb_harmo 
    7376            WRITE(numout,*) '                                     ln_tide_ramp = ', ln_tide_ramp 
     
    9396      IF( nb_harmo == 0 )   CALL ctl_stop( 'tide_init : No tidal components set in nam_tide' ) 
    9497      ! 
     98      IF( ln_tide_load.AND.(.NOT.ln_tide_pot) ) & 
     99          &   CALL ctl_stop('with load potential, activate astronomical potential') 
    95100      IF( ln_tide_ramp.AND.((nitend-nit000+1)*rdt/rday < rdttideramp) )   & 
    96101         &   CALL ctl_stop('rdttideramp must be lower than run duration') 
Note: See TracChangeset for help on using the changeset viewer.