Changeset 15008
- Timestamp:
- 2021-06-17T12:11:24+02:00 (3 years ago)
- Location:
- NEMO/branches/2021/ticket2680_C1D_PAPA/src/OCE
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/ticket2680_C1D_PAPA/src/OCE/C1D/dtauvd.F90
r14915 r15008 93 93 94 94 ! 95 IF( ln_uvd_init .OR. ln_uvd_dyndmp) THEN95 IF( ln_uvd_init .OR. ln_uvd_dyndmp ) THEN 96 96 ! !== allocate the data arrays ==! 97 97 ALLOCATE( sf_uvd(2), STAT=ierr0 ) … … 117 117 118 118 119 SUBROUTINE dta_uvd( kt, Kmm, pu vd )119 SUBROUTINE dta_uvd( kt, Kmm, pud, pvd ) 120 120 !!---------------------------------------------------------------------- 121 121 !! *** ROUTINE dta_uvd *** … … 134 134 INTEGER , INTENT(in ) :: kt ! ocean time-step 135 135 INTEGER , INTENT(in ) :: Kmm ! time level index 136 REAL(wp), DIMENSION(jpi,jpj,jpk,2), INTENT( out) :: puvd ! U & V current data 136 REAL(wp), DIMENSION(jpi,jpj,jpk) , INTENT( out) :: pud ! U & V current data 137 REAL(wp), DIMENSION(jpi,jpj,jpk) , INTENT( out) :: pvd ! U & V current data 137 138 ! 138 139 INTEGER :: ji, jj, jk, jl, jkk ! dummy loop indicies … … 146 147 CALL fld_read( kt, 1, sf_uvd ) !== read U & V current data at time step kt ==! 147 148 ! 148 pu vd(:,:,:,1) = sf_uvd(1)%fnow(:,:,:) ! NO mask149 p uvd(:,:,:,2) = sf_uvd(2)%fnow(:,:,:)149 pud(:,:,:) = sf_uvd(1)%fnow(:,:,:) ! NO mask 150 pvd(:,:,:) = sf_uvd(2)%fnow(:,:,:) 150 151 ! 151 152 IF( ln_sco ) THEN !== s- or mixed s-zps-coordinate ==! … … 162 163 zl = gdept(ji,jj,jk,Kmm) 163 164 IF ( zl < gdept_1d(1 ) ) THEN ! extrapolate above the first level of data 164 zup(jk) = pu vd(ji,jj,1,1)165 zvp(jk) = p uvd(ji,jj,1 ,2)165 zup(jk) = pud(ji,jj,1) 166 zvp(jk) = pvd(ji,jj,1) 166 167 ELSEIF( zl > gdept_1d(jpk) ) THEN ! extrapolate below the last level of data 167 zup(jk) = pu vd(ji,jj,jpkm1,1)168 zvp(jk) = p uvd(ji,jj,jpkm1,2)168 zup(jk) = pud(ji,jj,jpkm1) 169 zvp(jk) = pvd(ji,jj,jpkm1) 169 170 ELSE ! inbetween : vertical interpolation between jkk & jkk+1 170 171 DO jkk = 1, jpkm1 ! when gdept(jkk) < zl < gdept(jkk+1) 171 172 IF( (zl-gdept_1d(jkk)) * (zl-gdept_1d(jkk+1)) <= 0._wp ) THEN 172 173 zi = ( zl - gdept_1d(jkk) ) / (gdept_1d(jkk+1)-gdept_1d(jkk)) 173 zup(jk) = pu vd(ji,jj,jkk,1) + ( puvd(ji,jj,jkk+1,1 ) - puvd(ji,jj,jkk,1) ) * zi174 zvp(jk) = p uvd(ji,jj,jkk,2) + ( puvd(ji,jj,jkk+1,2 ) - puvd(ji,jj,jkk,2) ) * zi174 zup(jk) = pud(ji,jj,jkk) + ( pud(ji,jj,jkk+1) - pud(ji,jj,jkk) ) * zi 175 zvp(jk) = pvd(ji,jj,jkk) + ( pvd(ji,jj,jkk+1) - pvd(ji,jj,jkk) ) * zi 175 176 ENDIF 176 177 END DO … … 178 179 END DO 179 180 DO jk = 1, jpkm1 ! apply mask 180 pu vd(ji,jj,jk,1) = zup(jk) * umask(ji,jj,jk)181 p uvd(ji,jj,jk,2) = zvp(jk) * vmask(ji,jj,jk)181 pud(ji,jj,jk) = zup(jk) * umask(ji,jj,jk) 182 pvd(ji,jj,jk) = zvp(jk) * vmask(ji,jj,jk) 182 183 END DO 183 pu vd(ji,jj,jpk,1) = 0._wp184 p uvd(ji,jj,jpk,2) = 0._wp184 pud(ji,jj,jpk) = 0._wp 185 pvd(ji,jj,jpk) = 0._wp 185 186 END_2D 186 187 ! … … 189 190 ELSE !== z- or zps- coordinate ==! 190 191 ! 191 pu vd(:,:,:,1) = puvd(:,:,:,1) * umask(:,:,:) ! apply mask192 p uvd(:,:,:,2) = puvd(:,:,:,2) * vmask(:,:,:)192 pud(:,:,:) = pud(:,:,:) * umask(:,:,:) ! apply mask 193 pvd(:,:,:) = pvd(:,:,:) * vmask(:,:,:) 193 194 ! 194 195 IF( ln_zps ) THEN ! zps-coordinate (partial steps) interpolation at the last ocean level … … 197 198 IF( ik > 1 ) THEN 198 199 zl = ( gdept_1d(ik) - gdept_0(ji,jj,ik) ) / ( gdept_1d(ik) - gdept_1d(ik-1) ) 199 pu vd(ji,jj,ik,1) = (1.-zl) * puvd(ji,jj,ik,1) + zl * puvd(ji,jj,ik-1,1)200 p uvd(ji,jj,ik,2) = (1.-zl) * puvd(ji,jj,ik,2) + zl * puvd(ji,jj,ik-1,2)200 pud(ji,jj,ik) = (1.-zl) * pud(ji,jj,ik) + zl * pud(ji,jj,ik-1) 201 pvd(ji,jj,ik) = (1.-zl) * pvd(ji,jj,ik) + zl * pvd(ji,jj,ik-1) 201 202 ENDIF 202 203 END_2D -
NEMO/branches/2021/ticket2680_C1D_PAPA/src/OCE/C1D/dyndmp.F90
r13295 r15008 159 159 ! 160 160 ! !== read and interpolate U & V current data at kt ==! 161 CALL dta_uvd( kt, Kmm, zuv_dta ) !!! NOTE: This subroutine must be altered for use outside 162 !!! the C1D context (use of U,V grid variables) 161 CALL dta_uvd( kt, Kmm, zuv_dta(:,:,:,1), zuv_dta(:,:,:,2)) 163 162 ! 164 163 SELECT CASE ( nn_zdmp ) !== Calculate/add Newtonian damping to the momentum trend ==! -
NEMO/branches/2021/ticket2680_C1D_PAPA/src/OCE/DOM/domain.F90
r15006 r15008 11 11 !! NEMO 1.0 ! 2002-08 (G. Madec) F90: Free form and module 12 12 !! 2.0 ! 2005-11 (V. Garnier) Surface pressure gradient organization 13 !! 3.3 ! 2010-11 (G. Madec) initialisation in C1D configuration 13 14 !! 3.6 ! 2013 ( J. Simeon, C. Calone, G. Madec, C. Ethe ) Online coarsening of outputs 14 15 !! 3.7 ! 2015-11 (G. Madec, A. Coward) time varying zgr by default -
NEMO/branches/2021/ticket2680_C1D_PAPA/src/OCE/DOM/istate.F90
r15006 r15008 29 29 USE wet_dry ! wetting and drying (needed for wad_istate) 30 30 USE usrdef_istate ! User defined initial state 31 USE c1d32 31 ! 33 32 USE in_out_manager ! I/O manager … … 77 76 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 78 77 79 CALL dta_tsd_init ! Initialisation of T & S input data 80 81 ! IF( lk_c1d ) CALL dta_uvd_init ! Initialization of U & V input data 78 CALL dta_tsd_init ! Initialisation of T & S input data 79 IF( ln_c1d) CALL dta_uvd_init ! Initialisation of U & V input data (c1d only) 82 80 83 81 rhd (:,:,: ) = 0._wp ; rhop (:,:,: ) = 0._wp ! set one for all to 0 at level jpk … … 115 113 ! 116 114 IF( ln_tsd_init ) THEN 117 CALL dta_tsd( nit000, ts(:,:,:,:,Kbb) ) ! read 3D T and S data at nit000 118 ! 115 CALL dta_tsd( nit000, ts(:,:,:,:,Kbb) ) ! read 3D T and S data at nit000 116 ENDIF 117 ! 118 IF( ln_uvd_init .AND. ln_c1d ) THEN 119 CALL dta_uvd( nit000, Kbb, uu(:,:,:,Kbb), vv(:,:,:,Kbb) ) ! read 3D U and V data at nit000 120 ELSE 119 121 uu (:,:,:,Kbb) = 0._wp ! set the ocean at rest 120 122 vv (:,:,:,Kbb) = 0._wp 123 ENDIF 121 124 ! 122 ELSE ! user defined initial T and S 125 ! 126 IF( .NOT. ln_tsd_init .AND. .NOT. ln_uvd_init ) THEN 123 127 DO jk = 1, jpk 124 128 zgdept(:,:,jk) = gdept(:,:,jk,Kbb) … … 130 134 vv (:,:,:,Kmm) = vv (:,:,:,Kbb) 131 135 132 !133 !!gm ==>>> to be moved in usrdef_istate of C1D case134 IF ( ln_uvd_init .AND. lk_c1d ) THEN ! read 3D U and V data at nit000135 ALLOCATE( zuvd(jpi,jpj,jpk,2) )136 CALL dta_uvd( nit000, Kbb, zuvd )137 uu(:,:,:,Kbb) = zuvd(:,:,:,1) ; uu(:,:,:,Kmm) = uu(:,:,:,Kbb)138 vv(:,:,:,Kbb) = zuvd(:,:,:,2) ; vv(:,:,:,Kmm) = vv(:,:,:,Kbb)139 DEALLOCATE( zuvd )140 ENDIF141 !142 !143 136 ENDIF 144 137 #if defined key_agrif -
NEMO/branches/2021/ticket2680_C1D_PAPA/src/OCE/TRA/tradmp.F90
r14718 r15008 24 24 USE oce ! ocean: variables 25 25 USE dom_oce ! ocean: domain variables 26 USE c1d ! 1D vertical configuration27 26 USE trd_oce ! trends: ocean variables 28 27 USE trdtra ! trends manager: tracers -
NEMO/branches/2021/ticket2680_C1D_PAPA/src/OCE/step_oce.F90
r14239 r15008 44 44 USE dynspg ! surface pressure gradient (dyn_spg routine) 45 45 USE dynatf ! time-filtering (dyn_atf routine) 46 USE dyndmp ! current damping (dyn_dmp routine) 46 47 47 48 USE traqsr ! solar radiation penetration (tra_qsr routine) -
NEMO/branches/2021/ticket2680_C1D_PAPA/src/OCE/stpctl.F90
r14433 r15008 18 18 USE oce ! ocean dynamics and tracers variables 19 19 USE dom_oce ! ocean space and time domain variables 20 USE c1d ! 1D vertical configuration21 20 USE zdf_oce , ONLY : ln_zad_Aimp ! ocean vertical physics variables 22 21 USE wet_dry, ONLY : ll_wd, ssh_ref ! reference depth for negative bathy -
NEMO/branches/2021/ticket2680_C1D_PAPA/src/OCE/stpmlf.F90
r14834 r15008 232 232 vv(:,:,:,Nrhs) = 0._wp 233 233 234 IF( ln_dyndmp .AND. ln_c1d ) CALL dyn_dmp( kstp, Nbb, Nnn, uu(:,:,:,Nrhs), vv(:,:,:,Nrhs), Nrhs ) ! internal damping trends- momentum 235 234 236 IF( ln_tile ) CALL dom_tile_start ! [tiling] DYN tiling loop (1) 235 237 DO jtile = 1, nijtile
Note: See TracChangeset
for help on using the changeset viewer.