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 8993 for branches/2017/dev_METO_MERCATOR_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbctide.F90 – NEMO

Ignore:
Timestamp:
2017-12-12T16:42:29+01:00 (7 years ago)
Author:
timgraham
Message:

Merged Mercator branch in

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_METO_MERCATOR_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbctide.F90

    r7646 r8993  
    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 
Note: See TracChangeset for help on using the changeset viewer.