- Timestamp:
- 2019-03-18T13:38:52+01:00 (5 years ago)
- Location:
- NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/OCE
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/OCE/BDY/bdydta.F90
r10647 r10773 23 23 USE phycst ! physical constants 24 24 USE sbcapr ! atmospheric pressure forcing 25 USE sbctide ! Tidal forcing or not25 USE tide_mod, ONLY: ln_tide ! tidal forcing 26 26 USE bdy_oce ! ocean open boundary conditions 27 27 USE bdytides ! tidal forcing at boundaries -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/OCE/BDY/bdyini.F90
r10629 r10773 22 22 USE bdydta ! open boundary cond. setting (bdy_dta_init routine) 23 23 USE bdytides ! open boundary cond. setting (bdytide_init routine) 24 USE sbctide ! Tidal forcing or not24 USE tide_mod, ONLY: ln_tide ! tidal forcing 25 25 USE phycst , ONLY: rday 26 26 ! -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/OCE/DYN/dynspg.F90
r10068 r10773 23 23 USE sbctide ! 24 24 USE updtide ! 25 USE tide_mod ! 25 26 USE trd_oce ! trends: ocean variables 26 27 USE trddyn ! trend manager: dynamics -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/OCE/DYN/dynspg_ts.F90
r10742 r10773 46 46 USE sbctide ! tides 47 47 USE updtide ! tide potential 48 USE tide_mod ! 48 49 USE sbcwave ! surface wave 49 50 USE diatmb ! Top,middle,bottom output -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/OCE/SBC/sbctide.F90
r10772 r10773 18 18 19 19 IMPLICIT NONE 20 P UBLIC20 PRIVATE 21 21 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 33 23 34 24 !!---------------------------------------------------------------------- … … 50 40 IF( nsec_day == NINT(0.5_wp * rdt) .OR. kt == nit000 ) THEN ! start a new day 51 41 ! 52 IF( kt == nit000 )THEN53 ALLOCATE( amp_pot(jpi,jpj,nb_harmo), &54 & phi_pot(jpi,jpj,nb_harmo), pot_astro(jpi,jpj) )55 IF( ln_read_load )THEN56 ALLOCATE( amp_load(jpi,jpj,nb_harmo), phi_load(jpi,jpj,nb_harmo) )57 CALL tide_init_load58 ENDIF59 ENDIF60 42 ! 61 43 IF( ln_read_load )THEN 44 IF ( kt == nit000 ) CALL tide_init_load 62 45 amp_pot(:,:,:) = amp_load(:,:,:) 63 46 phi_pot(:,:,:) = phi_load(:,:,:) … … 98 81 END SUBROUTINE sbc_tide 99 82 100 101 SUBROUTINE tide_init_potential102 !!----------------------------------------------------------------------103 !! *** ROUTINE tide_init_potential ***104 !!----------------------------------------------------------------------105 INTEGER :: ji, jj, jk ! dummy loop indices106 REAL(wp) :: zcons, ztmp1, ztmp2, zlat, zlon, ztmp, zamp, zcs ! local scalar107 !!----------------------------------------------------------------------108 109 DO jk = 1, nb_harmo110 zcons = 0.7_wp * Wave(ntide(jk))%equitide * ftide(jk)111 DO ji = 1, jpi112 DO jj = 1, jpj113 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 radian116 zlon = glamt(ji,jj)*rad !! longitude en radian117 ztmp = v0tide(jk) + utide(jk) + Wave(ntide(jk))%nutide * zlon118 ! 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 )**2121 ELSE ; zcs = 0._wp122 ENDIF123 ztmp1 = ztmp1 + zcs * COS( ztmp )124 ztmp2 = ztmp2 - zcs * SIN( ztmp )125 zamp = SQRT( ztmp1*ztmp1 + ztmp2*ztmp2 )126 amp_pot(ji,jj,jk) = zamp127 phi_pot(ji,jj,jk) = ATAN2( -ztmp2 / MAX( 1.e-10_wp , zamp ) , &128 & ztmp1 / MAX( 1.e-10_wp, zamp ) )129 END DO130 END DO131 END DO132 !133 END SUBROUTINE tide_init_potential134 135 SUBROUTINE tide_init_load136 !!----------------------------------------------------------------------137 !! *** ROUTINE tide_init_load ***138 !!----------------------------------------------------------------------139 INTEGER :: inum ! Logical unit of input file140 INTEGER :: ji, jj, itide ! dummy loop indices141 REAL(wp), DIMENSION(jpi,jpj) :: ztr, zti !: workspace to read in tidal harmonics data142 !!----------------------------------------------------------------------143 IF(lwp) THEN144 WRITE(numout,*)145 WRITE(numout,*) 'tide_init_load : Initialization of load potential from file'146 WRITE(numout,*) '~~~~~~~~~~~~~~ '147 ENDIF148 !149 CALL iom_open ( cn_tide_load , inum )150 !151 DO itide = 1, nb_harmo152 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,jpi156 DO jj=1,jpj157 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 DO160 END DO161 !162 END DO163 CALL iom_close( inum )164 !165 END SUBROUTINE tide_init_load166 167 83 !!====================================================================== 168 84 END MODULE sbctide -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/OCE/SBC/updtide.F90
r10772 r10773 13 13 USE phycst ! physical constant 14 14 USE sbctide ! tide potential variable 15 USE tide_mod, ONLY: ln_tide_ramp, rdttideramp 15 USE tide_mod, ONLY: ln_tide_ramp, rdttideramp, kt_tide, omega_tide, pot_astro, amp_pot, phi_pot, nb_harmo 16 16 17 17 IMPLICIT NONE -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/OCE/TDE/tide_mod.F90
r10772 r10773 22 22 PUBLIC tide_harmo ! called by tideini and diaharm modules 23 23 PUBLIC tide_init_Wave ! called by tideini and diaharm modules 24 PUBLIC tide_init_load 25 PUBLIC tide_init_potential 24 26 25 27 INTEGER, PUBLIC, PARAMETER :: jpmax_harmo = 19 !: maximum number of harmonic … … 53 55 54 56 INTEGER , PUBLIC, ALLOCATABLE, DIMENSION(:) :: ntide !: 57 58 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:) :: pot_astro !: tidal potential 59 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:) :: amp_pot, phi_pot 60 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:) :: amp_load, phi_load 61 55 62 56 63 REAL(wp) :: sh_T, sh_s, sh_h, sh_p, sh_p1 ! astronomic angles … … 149 156 IF (.NOT.ln_scal_load ) rn_scal_load = 0._wp 150 157 ! 158 ALLOCATE( amp_pot(jpi,jpj,nb_harmo), & 159 & phi_pot(jpi,jpj,nb_harmo), pot_astro(jpi,jpj) ) 160 IF( ln_read_load ) THEN 161 ALLOCATE( amp_load(jpi,jpj,nb_harmo), phi_load(jpi,jpj,nb_harmo) ) 162 ENDIF 163 ! 151 164 END SUBROUTINE tide_init 152 165 … … 155 168 # include "tide.h90" 156 169 END SUBROUTINE tide_init_Wave 170 171 172 SUBROUTINE tide_init_potential 173 !!---------------------------------------------------------------------- 174 !! *** ROUTINE tide_init_potential *** 175 !!---------------------------------------------------------------------- 176 INTEGER :: ji, jj, jk ! dummy loop indices 177 REAL(wp) :: zcons, ztmp1, ztmp2, zlat, zlon, ztmp, zamp, zcs ! local scalar 178 !!---------------------------------------------------------------------- 179 180 DO jk = 1, nb_harmo 181 zcons = 0.7_wp * Wave(ntide(jk))%equitide * ftide(jk) 182 DO ji = 1, jpi 183 DO jj = 1, jpj 184 ztmp1 = ftide(jk) * amp_pot(ji,jj,jk) * COS( phi_pot(ji,jj,jk) + v0tide(jk) + utide(jk) ) 185 ztmp2 = -ftide(jk) * amp_pot(ji,jj,jk) * SIN( phi_pot(ji,jj,jk) + v0tide(jk) + utide(jk) ) 186 zlat = gphit(ji,jj)*rad !! latitude en radian 187 zlon = glamt(ji,jj)*rad !! longitude en radian 188 ztmp = v0tide(jk) + utide(jk) + Wave(ntide(jk))%nutide * zlon 189 ! le potentiel est composé des effets des astres: 190 IF ( Wave(ntide(jk))%nutide == 1 ) THEN ; zcs = zcons * SIN( 2._wp*zlat ) 191 ELSEIF( Wave(ntide(jk))%nutide == 2 ) THEN ; zcs = zcons * COS( zlat )**2 192 ELSE ; zcs = 0._wp 193 ENDIF 194 ztmp1 = ztmp1 + zcs * COS( ztmp ) 195 ztmp2 = ztmp2 - zcs * SIN( ztmp ) 196 zamp = SQRT( ztmp1*ztmp1 + ztmp2*ztmp2 ) 197 amp_pot(ji,jj,jk) = zamp 198 phi_pot(ji,jj,jk) = ATAN2( -ztmp2 / MAX( 1.e-10_wp , zamp ) , & 199 & ztmp1 / MAX( 1.e-10_wp, zamp ) ) 200 END DO 201 END DO 202 END DO 203 ! 204 END SUBROUTINE tide_init_potential 205 206 207 SUBROUTINE tide_init_load 208 !!---------------------------------------------------------------------- 209 !! *** ROUTINE tide_init_load *** 210 !!---------------------------------------------------------------------- 211 INTEGER :: inum ! Logical unit of input file 212 INTEGER :: ji, jj, itide ! dummy loop indices 213 REAL(wp), DIMENSION(jpi,jpj) :: ztr, zti !: workspace to read in tidal harmonics data 214 !!---------------------------------------------------------------------- 215 IF(lwp) THEN 216 WRITE(numout,*) 217 WRITE(numout,*) 'tide_init_load : Initialization of load potential from file' 218 WRITE(numout,*) '~~~~~~~~~~~~~~ ' 219 ENDIF 220 ! 221 CALL iom_open ( cn_tide_load , inum ) 222 ! 223 DO itide = 1, nb_harmo 224 CALL iom_get ( inum, jpdom_data,TRIM(Wave(ntide(itide))%cname_tide)//'_z1', ztr(:,:) ) 225 CALL iom_get ( inum, jpdom_data,TRIM(Wave(ntide(itide))%cname_tide)//'_z2', zti(:,:) ) 226 ! 227 DO ji=1,jpi 228 DO jj=1,jpj 229 amp_load(ji,jj,itide) = SQRT( ztr(ji,jj)**2. + zti(ji,jj)**2. ) 230 phi_load(ji,jj,itide) = ATAN2(-zti(ji,jj), ztr(ji,jj) ) 231 END DO 232 END DO 233 ! 234 END DO 235 CALL iom_close( inum ) 236 ! 237 END SUBROUTINE tide_init_load 157 238 158 239 -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/OCE/step_oce.F90
r10068 r10773 20 20 USE sbcapr ! surface boundary condition: atmospheric pressure 21 21 USE sbctide ! Tide initialisation 22 USE tide_mod, ONLY : ln_tide 22 23 USE sbcwave ! Wave intialisation 23 24
Note: See TracChangeset
for help on using the changeset viewer.