Changeset 15023 for NEMO/trunk/src/OCE/C1D
- Timestamp:
- 2021-06-18T16:35:25+02:00 (3 years ago)
- Location:
- NEMO/trunk/src/OCE/C1D
- Files:
-
- 2 deleted
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/OCE/C1D/c1d.F90
r12377 r15023 8 8 !! 3.5 ! 2013-10 (D. Calvert) add namelist 9 9 !!---------------------------------------------------------------------- 10 #if defined key_c1d 11 !!---------------------------------------------------------------------- 12 !! 'key_c1d' 1D column configuration 10 13 11 !!---------------------------------------------------------------------- 14 12 !! c1d_init : read in the C1D namelist … … 24 22 PUBLIC c1d_init ! called by nemogcm.F90 25 23 26 LOGICAL , PUBLIC, PARAMETER :: lk_c1d = .TRUE. ! 1D config. flag27 28 24 REAL(wp), PUBLIC :: rn_lat1d !: Column latitude 29 25 REAL(wp), PUBLIC :: rn_lon1d !: Column longitude 30 LOGICAL , PUBLIC :: ln_c1d_locpt !: Localization (or not) of 1D column in a grid31 26 32 27 !!---------------------------------------------------------------------- … … 47 42 INTEGER :: ios ! Local integer 48 43 !! 49 NAMELIST/namc1d/ rn_lat1d, rn_lon1d , ln_c1d_locpt44 NAMELIST/namc1d/ rn_lat1d, rn_lon1d 50 45 !!---------------------------------------------------------------------- 51 46 ! … … 64 59 WRITE(numout,*) ' column latitude rn_lat1d = ', rn_lat1d 65 60 WRITE(numout,*) ' column longitude rn_lon1d = ', rn_lon1d 66 WRITE(numout,*) ' column localization in a grid ln_c1d_locpt = ', ln_c1d_locpt67 61 ENDIF 68 62 ! 69 63 END SUBROUTINE c1d_init 70 64 71 #else72 !!----------------------------------------------------------------------73 !! Dummy module : No use of 1D configuration74 !!----------------------------------------------------------------------75 USE par_kind ! kind parameters76 LOGICAL, PUBLIC, PARAMETER :: lk_c1d = .FALSE. !: 1D config. flag de-activated77 REAL(wp) :: rn_lat1d, rn_lon1d78 LOGICAL , PUBLIC :: ln_c1d_locpt = .FALSE.79 CONTAINS80 SUBROUTINE c1d_init ! Dummy routine81 END SUBROUTINE c1d_init82 #endif83 84 65 !!====================================================================== 85 66 END MODULE c1d -
NEMO/trunk/src/OCE/C1D/dtauvd.F90
r13497 r15023 26 26 PUBLIC dta_uvd ! called by istate.F90 and dyndmp.90 27 27 28 LOGICAL , PUBLIC :: ln_uvd_init ! Flag to initialise with U & V current data29 LOGICAL , PUBLIC :: ln_uvd_dyndmp ! Flag for Newtonian damping toward U & V current data28 LOGICAL , PUBLIC :: ln_uvd_init = .FALSE. ! Flag to initialise with U & V current data 29 LOGICAL , PUBLIC :: ln_uvd_dyndmp = .FALSE. ! Flag for Newtonian damping toward U & V current data 30 30 31 31 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf_uvd ! structure for input U & V current (file information and data) … … 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/trunk/src/OCE/C1D/dyndmp.F90
r13295 r15023 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 ==!
Note: See TracChangeset
for help on using the changeset viewer.