Changeset 14770 for NEMO/branches/2021/dev_r13747_HPC-11_mcastril_HPDAonline_DiagGPU/tests/VORTEX/MY_SRC/usrdef_istate.F90
- Timestamp:
- 2021-04-30T12:05:23+02:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/dev_r13747_HPC-11_mcastril_HPDAonline_DiagGPU/tests/VORTEX/MY_SRC/usrdef_istate.F90
r13295 r14770 8 8 !!====================================================================== 9 9 !! History : NEMO ! 2017-11 (J. Chanut) Original code 10 !! ! 2020-11 (S. Techene, G. Madec) separate tsuv from ssh 10 11 !!---------------------------------------------------------------------- 11 12 … … 16 17 USE dom_oce , ONLY : glamt, gphit, glamu, gphiu, glamv, gphiv 17 18 USE phycst ! physical constants 19 USE eosbn2 , ONLY : rn_a0 18 20 ! 19 21 USE in_out_manager ! I/O manager … … 26 28 PRIVATE 27 29 28 PUBLIC usr_def_istate ! called by istate.F90 30 PUBLIC usr_def_istate ! called by istate.F90 31 PUBLIC usr_def_istate_ssh ! called by domqco.F90 29 32 30 33 !! * Substitutions … … 37 40 CONTAINS 38 41 39 SUBROUTINE usr_def_istate( pdept, ptmask, pts, pu, pv , pssh)42 SUBROUTINE usr_def_istate( pdept, ptmask, pts, pu, pv ) 40 43 !!---------------------------------------------------------------------- 41 44 !! *** ROUTINE usr_def_istate *** … … 52 55 REAL(wp), DIMENSION(jpi,jpj,jpk) , INTENT( out) :: pu ! i-component of the velocity [m/s] 53 56 REAL(wp), DIMENSION(jpi,jpj,jpk) , INTENT( out) :: pv ! j-component of the velocity [m/s] 54 REAL(wp), DIMENSION(jpi,jpj) , INTENT( out) :: pssh ! sea-surface height55 57 ! 56 58 INTEGER :: ji, jj, jk ! dummy loop indices … … 67 69 zf0 = 2._wp * omega * SIN( rad * rn_ppgphi0 ) 68 70 zumax = 1._wp * SIGN(1._wp, zf0) ! Here Anticyclonic: set zumax=-1 for cyclonic 69 zlambda = SQRT(2._wp)*60.e3 ! Horizontal scale in meters 71 zlambda = SQRT(2._wp)*60.e3 ! Horizontal scale in meters 70 72 zn2 = 3.e-3**2 71 73 zH = 0.5_wp * 5000._wp 72 74 ! 73 75 zP0 = rho0 * zf0 * zumax * zlambda * SQRT(EXP(1._wp)/2._wp) 74 !75 ! Sea level:76 za = -zP0 * (1._wp-EXP(-zH)) / (grav*(zH-1._wp + EXP(-zH)))77 DO_2D( 1, 1, 1, 1 )78 zx = glamt(ji,jj) * 1.e379 zy = gphit(ji,jj) * 1.e380 zrho1 = rho0 + za * EXP(-(zx**2+zy**2)/zlambda**2)81 pssh(ji,jj) = zP0 * EXP(-(zx**2+zy**2)/zlambda**2)/(zrho1*grav) * ptmask(ji,jj,1)82 END_2D83 76 ! 84 77 ! temperature: … … 93 86 & * EXP(-(zx**2+zy**2)/zlambda**2) / (grav*(zH -1._wp + EXP(-zH))); 94 87 ENDIF 95 pts(ji,jj,jk,jp_tem) = (20._wp + (rho0-zrho1) / 0.28_wp) * ptmask(ji,jj,jk)88 pts(ji,jj,jk,jp_tem) = (20._wp + (rho0-zrho1) / rn_a0 ) * ptmask(ji,jj,jk) 96 89 END DO 97 90 END_2D 98 91 ! 99 92 ! salinity: 100 pts(:,:,:,jp_sal) = 35._wp 93 pts(:,:,:,jp_sal) = 35._wp * ptmask(:,:,:) 101 94 ! 102 95 ! velocities: … … 130 123 END_2D 131 124 ! 132 CALL lbc_lnk _multi( 'usrdef_istate', pu, 'U', -1., pv, 'V', -1. )125 CALL lbc_lnk( 'usrdef_istate', pu, 'U', -1., pv, 'V', -1. ) 133 126 ! 134 127 END SUBROUTINE usr_def_istate 135 128 129 130 SUBROUTINE usr_def_istate_ssh( ptmask, pssh ) 131 !!---------------------------------------------------------------------- 132 !! *** ROUTINE usr_def_istate *** 133 !! 134 !! ** Purpose : Initialization of ssh 135 !! Here VORTEX configuration 136 !! 137 !! ** Method : Set ssh according to a gaussian anomaly of pressure and associated 138 !! geostrophic velocities 139 !!---------------------------------------------------------------------- 140 REAL(wp), DIMENSION(jpi,jpj,jpk) , INTENT(in ) :: ptmask ! t-point ocean mask [m] 141 REAL(wp), DIMENSION(jpi,jpj) , INTENT( out) :: pssh ! sea-surface height [m] 142 ! 143 INTEGER :: ji, jj ! dummy loop indices 144 REAL(wp) :: zx, zy, zP0, zumax, zlambda, zf0, zH, zrho1, za 145 !!---------------------------------------------------------------------- 146 ! 147 IF(lwp) WRITE(numout,*) 148 IF(lwp) WRITE(numout,*) 'usr_def_istate_ssh : VORTEX configuration, analytical definition of initial state' 149 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~ ' 150 ! 151 ! 152 ! 153 zf0 = 2._wp * omega * SIN( rad * rn_ppgphi0 ) 154 zumax = 1._wp * SIGN(1._wp, zf0) ! Here Anticyclonic: set zumax=-1 for cyclonic 155 zlambda = SQRT(2._wp)*60.e3 ! Horizontal scale in meters 156 zH = 0.5_wp * 5000._wp 157 ! 158 zP0 = rho0 * zf0 * zumax * zlambda * SQRT(EXP(1._wp)/2._wp) 159 ! 160 ! Sea level: 161 za = -zP0 * (1._wp-EXP(-zH)) / (grav*(zH-1._wp + EXP(-zH))) 162 DO_2D( 1, 1, 1, 1 ) 163 zx = glamt(ji,jj) * 1.e3 164 zy = gphit(ji,jj) * 1.e3 165 zrho1 = rho0 + za * EXP(-(zx**2+zy**2)/zlambda**2) 166 pssh(ji,jj) = zP0 * EXP(-(zx**2+zy**2)/zlambda**2)/(zrho1*grav) * ptmask(ji,jj,1) 167 END_2D 168 169 END SUBROUTINE usr_def_istate_ssh 170 136 171 !!====================================================================== 137 172 END MODULE usrdef_istate
Note: See TracChangeset
for help on using the changeset viewer.