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 10773 for NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/OCE/SBC/sbctide.F90 – NEMO

Ignore:
Timestamp:
2019-03-18T13:38:52+01:00 (5 years ago)
Author:
smueller
Message:

Transfer of five public variables, their allocation, and two subroutines from module sbctide to module tide_mod (ticket #2194)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/OCE/SBC/sbctide.F90

    r10772 r10773  
    1818 
    1919   IMPLICIT NONE 
    20    PUBLIC 
     20   PRIVATE 
    2121 
    22    REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:) ::   pot_astro   ! 
    23  
    24    !!---------------------------------------------------------------------- 
    25    !!   tidal potential 
    26    !!---------------------------------------------------------------------- 
    27    !!   sbc_tide            :  
    28    !!   tide_init_potential : 
    29    !!---------------------------------------------------------------------- 
    30  
    31    REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   amp_pot, phi_pot 
    32    REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   amp_load, phi_load 
     22   PUBLIC sbc_tide 
    3323  
    3424   !!---------------------------------------------------------------------- 
     
    5040      IF( nsec_day == NINT(0.5_wp * rdt) .OR. kt == nit000 ) THEN      ! start a new day 
    5141         ! 
    52          IF( kt == nit000 )THEN 
    53             ALLOCATE( amp_pot(jpi,jpj,nb_harmo),                      & 
    54                &      phi_pot(jpi,jpj,nb_harmo), pot_astro(jpi,jpj)   ) 
    55             IF( ln_read_load )THEN 
    56                ALLOCATE( amp_load(jpi,jpj,nb_harmo), phi_load(jpi,jpj,nb_harmo) ) 
    57                CALL tide_init_load 
    58             ENDIF 
    59          ENDIF 
    6042         ! 
    6143         IF( ln_read_load )THEN 
     44            IF ( kt == nit000 ) CALL tide_init_load 
    6245            amp_pot(:,:,:) = amp_load(:,:,:) 
    6346            phi_pot(:,:,:) = phi_load(:,:,:) 
     
    9881   END SUBROUTINE sbc_tide 
    9982 
    100  
    101    SUBROUTINE tide_init_potential 
    102       !!---------------------------------------------------------------------- 
    103       !!                 ***  ROUTINE tide_init_potential  *** 
    104       !!---------------------------------------------------------------------- 
    105       INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    106       REAL(wp) ::   zcons, ztmp1, ztmp2, zlat, zlon, ztmp, zamp, zcs   ! local scalar 
    107       !!---------------------------------------------------------------------- 
    108  
    109       DO jk = 1, nb_harmo 
    110          zcons = 0.7_wp * Wave(ntide(jk))%equitide * ftide(jk) 
    111          DO ji = 1, jpi 
    112             DO jj = 1, jpj 
    113                ztmp1 =  ftide(jk) * amp_pot(ji,jj,jk) * COS( phi_pot(ji,jj,jk) + v0tide(jk) + utide(jk) ) 
    114                ztmp2 = -ftide(jk) * amp_pot(ji,jj,jk) * SIN( phi_pot(ji,jj,jk) + v0tide(jk) + utide(jk) ) 
    115                zlat = gphit(ji,jj)*rad !! latitude en radian 
    116                zlon = glamt(ji,jj)*rad !! longitude en radian 
    117                ztmp = v0tide(jk) + utide(jk) + Wave(ntide(jk))%nutide * zlon 
    118                ! le potentiel est composé des effets des astres: 
    119                IF    ( Wave(ntide(jk))%nutide == 1 )  THEN  ;  zcs = zcons * SIN( 2._wp*zlat ) 
    120                ELSEIF( Wave(ntide(jk))%nutide == 2 )  THEN  ;  zcs = zcons * COS( zlat )**2 
    121                ELSE                                         ;  zcs = 0._wp 
    122                ENDIF 
    123                ztmp1 = ztmp1 + zcs * COS( ztmp ) 
    124                ztmp2 = ztmp2 - zcs * SIN( ztmp ) 
    125                zamp = SQRT( ztmp1*ztmp1 + ztmp2*ztmp2 ) 
    126                amp_pot(ji,jj,jk) = zamp 
    127                phi_pot(ji,jj,jk) = ATAN2( -ztmp2 / MAX( 1.e-10_wp , zamp ) ,   & 
    128                   &                        ztmp1 / MAX( 1.e-10_wp,  zamp )   ) 
    129             END DO 
    130          END DO 
    131       END DO 
    132       ! 
    133    END SUBROUTINE tide_init_potential 
    134  
    135    SUBROUTINE tide_init_load 
    136       !!---------------------------------------------------------------------- 
    137       !!                 ***  ROUTINE tide_init_load  *** 
    138       !!---------------------------------------------------------------------- 
    139       INTEGER :: inum                 ! Logical unit of input file 
    140       INTEGER :: ji, jj, itide        ! dummy loop indices 
    141       REAL(wp), DIMENSION(jpi,jpj) ::   ztr, zti   !: workspace to read in tidal harmonics data  
    142       !!---------------------------------------------------------------------- 
    143       IF(lwp) THEN 
    144          WRITE(numout,*) 
    145          WRITE(numout,*) 'tide_init_load : Initialization of load potential from file' 
    146          WRITE(numout,*) '~~~~~~~~~~~~~~ ' 
    147       ENDIF 
    148       ! 
    149       CALL iom_open ( cn_tide_load , inum ) 
    150       ! 
    151       DO itide = 1, nb_harmo 
    152          CALL iom_get  ( inum, jpdom_data,TRIM(Wave(ntide(itide))%cname_tide)//'_z1', ztr(:,:) ) 
    153          CALL iom_get  ( inum, jpdom_data,TRIM(Wave(ntide(itide))%cname_tide)//'_z2', zti(:,:) ) 
    154          ! 
    155          DO ji=1,jpi 
    156             DO jj=1,jpj 
    157                amp_load(ji,jj,itide) =  SQRT( ztr(ji,jj)**2. + zti(ji,jj)**2. ) 
    158                phi_load(ji,jj,itide) = ATAN2(-zti(ji,jj), ztr(ji,jj) ) 
    159             END DO 
    160          END DO 
    161          ! 
    162       END DO 
    163       CALL iom_close( inum ) 
    164       ! 
    165    END SUBROUTINE tide_init_load 
    166  
    16783  !!====================================================================== 
    16884END MODULE sbctide 
Note: See TracChangeset for help on using the changeset viewer.