Changeset 5114
- Timestamp:
- 2015-03-02T20:34:59+01:00 (8 years ago)
- Location:
- branches/2015/dev_r5094_UKMO_ISFCLEAN/NEMOGCM/NEMO/OPA_SRC
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_r5094_UKMO_ISFCLEAN/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90
r5111 r5114 298 298 ENDIF 299 299 300 !IF ( ln_isfcav ) THEN300 IF ( ln_isfcav ) THEN 301 301 ! need to be like this to compute the pressure gradient with ISF. If not, level beneath the ISF are not aligned (sum(e3t) /= depth) 302 302 ! define e3t_0 and e3w_0 as the differences between gdept and gdepw respectively … … 310 310 END DO 311 311 e3w_1d(1 ) = 2._wp * (gdept_1d(1) - gdepw_1d(1)) 312 !END IF312 END IF 313 313 314 314 !!gm BUG in s-coordinate this does not work! … … 1146 1146 END DO 1147 1147 END DO 1148 !IF ( ln_isfcav ) THEN1148 IF ( ln_isfcav ) THEN 1149 1149 ! (ISF) define e3uw (adapted for 2 cells in the water column) 1150 ! Need to test if the modification of only mikt and mbkt levels is enough 1150 1151 DO jk = 2,jpk 1151 1152 DO jj = 1, jpjm1 … … 1158 1159 END DO 1159 1160 END DO 1160 !END IF 1161 !End (ISF) 1161 END IF 1162 1162 1163 1163 CALL lbc_lnk( e3u_0 , 'U', 1._wp ) ; CALL lbc_lnk( e3uw_0, 'U', 1._wp ) ! lateral boundary conditions … … 1258 1258 SUBROUTINE zgr_isf 1259 1259 !!---------------------------------------------------------------------- 1260 !! *** ROUTINE zgr_ bat_ctl***1260 !! *** ROUTINE zgr_isf *** 1261 1261 !! 1262 1262 !! ** Purpose : check the bathymetry in levels -
branches/2015/dev_r5094_UKMO_ISFCLEAN/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90
r5111 r5114 168 168 & the pressure jacobian formulation hpg_prj') 169 169 170 IF( ln_hpg_isf .AND. .NOT. ln_isfcav ) & 171 & CALL ctl_stop( ' hpg_isf not available is ln_isfcav = false ' ) 170 IF( ln_hpg_isf .AND. .NOT. ln_isfcav ) & 171 & CALL ctl_stop( ' hpg_isf not available if ln_isfcav = false ' ) 172 IF( .NOT. ln_hpg_isf .AND. ln_isfcav ) & 173 & CALL ctl_stop( 'Only hpg_isf has been corrected to work with ice shelf cavity.' ) 172 174 ! 173 175 ! ! Set nhpg from ln_hpg_... flags … … 188 190 IF( ln_hpg_isf ) ioptio = ioptio + 1 189 191 IF( ioptio /= 1 ) CALL ctl_stop( 'NO or several hydrostatic pressure gradient options used' ) 190 IF( ( .NOT. ln_hpg_isf ) .AND. ln_isfcav ) &191 & CALL ctl_stop( 'Only hpg_isf has been corrected to work with ice shelf cavity.' )192 192 ! 193 193 ! initialisation of ice load -
branches/2015/dev_r5094_UKMO_ISFCLEAN/NEMOGCM/NEMO/OPA_SRC/TRA/zpshde.F90
r5111 r5114 112 112 iku = mbku(ji,jj) ; ikum1 = MAX( iku - 1 , 1 ) ! last and before last ocean level at u- & v-points 113 113 ikv = mbkv(ji,jj) ; ikvm1 = MAX( ikv - 1 , 1 ) ! if level first is a p-step, ik.m1=1 114 ! (ISF) case partial step top and bottom in adjacent cell in vertical 115 ! cannot used e3w because if 2 cell water column, we have ps at top and bottom 116 ! in this case e3w(i,j) - e3w(i,j+1) is not the distance between Tj~ and Tj 117 ! the only common depth between cells (i,j) and (i,j+1) is gdepw_0 118 ze3wu = (gdept_0(ji+1,jj,iku) - gdepw_0(ji+1,jj,iku)) - (gdept_0(ji,jj,iku) - gdepw_0(ji,jj,iku)) 119 ze3wv = (gdept_0(ji,jj+1,ikv) - gdepw_0(ji,jj+1,ikv)) - (gdept_0(ji,jj,ikv) - gdepw_0(ji,jj,ikv)) 114 ze3wu = fse3w(ji+1,jj ,iku) - fse3w(ji,jj,iku) 115 ze3wv = fse3w(ji ,jj+1,ikv) - fse3w(ji,jj,ikv) 120 116 ! 121 117 ! i- direction … … 125 121 zti (ji,jj,jn) = pta(ji+1,jj,iku,jn) + zmaxu * ( pta(ji+1,jj,ikum1,jn) - pta(ji+1,jj,iku,jn) ) 126 122 ! gradient of tracers 127 pgtu(ji,jj,jn) = umask(ji,jj, iku) * ( zti(ji,jj,jn) - pta(ji,jj,iku,jn) )123 pgtu(ji,jj,jn) = umask(ji,jj,1) * ( zti(ji,jj,jn) - pta(ji,jj,iku,jn) ) 128 124 ELSE ! case 2 129 125 zmaxu = -ze3wu / fse3w(ji,jj,iku) … … 131 127 zti (ji,jj,jn) = pta(ji,jj,iku,jn) + zmaxu * ( pta(ji,jj,ikum1,jn) - pta(ji,jj,iku,jn) ) 132 128 ! gradient of tracers 133 pgtu(ji,jj,jn) = umask(ji,jj, iku) * ( pta(ji+1,jj,iku,jn) - zti(ji,jj,jn) )129 pgtu(ji,jj,jn) = umask(ji,jj,1) * ( pta(ji+1,jj,iku,jn) - zti(ji,jj,jn) ) 134 130 ENDIF 135 131 ! … … 140 136 ztj (ji,jj,jn) = pta(ji,jj+1,ikv,jn) + zmaxv * ( pta(ji,jj+1,ikvm1,jn) - pta(ji,jj+1,ikv,jn) ) 141 137 ! gradient of tracers 142 pgtv(ji,jj,jn) = vmask(ji,jj, ikv) * ( ztj(ji,jj,jn) - pta(ji,jj,ikv,jn) )138 pgtv(ji,jj,jn) = vmask(ji,jj,1) * ( ztj(ji,jj,jn) - pta(ji,jj,ikv,jn) ) 143 139 ELSE ! case 2 144 140 zmaxv = -ze3wv / fse3w(ji,jj,ikv) … … 146 142 ztj (ji,jj,jn) = pta(ji,jj,ikv,jn) + zmaxv * ( pta(ji,jj,ikvm1,jn) - pta(ji,jj,ikv,jn) ) 147 143 ! gradient of tracers 148 pgtv(ji,jj,jn) = vmask(ji,jj, ikv) * ( pta(ji,jj+1,ikv,jn) - ztj(ji,jj,jn) )144 pgtv(ji,jj,jn) = vmask(ji,jj,1) * ( pta(ji,jj+1,ikv,jn) - ztj(ji,jj,jn) ) 149 145 ENDIF 150 146 END DO … … 161 157 iku = mbku(ji,jj) 162 158 ikv = mbkv(ji,jj) 163 ze3wu = (gdept_0(ji+1,jj,iku) - gdepw_0(ji+1,jj,iku)) - (gdept_0(ji,jj,iku) - gdepw_0(ji,jj,iku)) 164 ze3wv = (gdept_0(ji,jj+1,ikv) - gdepw_0(ji,jj+1,ikv)) - (gdept_0(ji,jj,ikv) - gdepw_0(ji,jj,ikv)) 165 166 IF( ze3wu >= 0._wp ) THEN ; zhi(ji,jj) = fsdept(ji+1,jj,iku) - ze3wu ! i-direction: case 1 167 ELSE ; zhi(ji,jj) = fsdept(ji ,jj,iku) + ze3wu ! - - case 2 168 ENDIF 169 IF( ze3wv >= 0._wp ) THEN ; zhj(ji,jj) = fsdept(ji,jj+1,ikv) - ze3wv ! j-direction: case 1 170 ELSE ; zhj(ji,jj) = fsdept(ji,jj ,ikv) + ze3wv ! - - case 2 159 ze3wu = fse3w(ji+1,jj ,iku) - fse3w(ji,jj,iku) 160 ze3wv = fse3w(ji ,jj+1,ikv) - fse3w(ji,jj,ikv) 161 IF( ze3wu >= 0._wp ) THEN ; zhi(ji,jj) = fsdept(ji ,jj,iku) ! i-direction: case 1 162 ELSE ; zhi(ji,jj) = fsdept(ji+1,jj,iku) ! - - case 2 163 ENDIF 164 IF( ze3wv >= 0._wp ) THEN ; zhj(ji,jj) = fsdept(ji,jj ,ikv) ! j-direction: case 1 165 ELSE ; zhj(ji,jj) = fsdept(ji,jj+1,ikv) ! - - case 2 171 166 ENDIF 172 167 END DO … … 181 176 DO jj = 1, jpjm1 182 177 DO ji = 1, jpim1 183 iku = mbku(ji,jj) ; ikum1 = MAX( iku - 1 , 1 ) ! last and before last ocean level at u- & v-points184 ikv = mbkv(ji,jj) ; ikvm1 = MAX( ikv - 1 , 1 ) ! last and before last ocean level at u- & v-points185 ze3wu = (gdept_0(ji+1,jj,iku) - gdepw_0(ji+1,jj,iku)) - (gdept_0(ji,jj,iku) - gdepw_0(ji,jj,iku))186 ze3wv = (gdept_0(ji,jj+1,ikv) - gdepw_0(ji,jj+1,ikv)) - (gdept_0(ji,jj,ikv) - gdepw_0(ji,jj,ikv))187 IF( ze3wu >= 0._wp ) THEN ; pgru(ji,jj) = umask(ji,jj,iku) * ( zri(ji ,jj) - prd(ji,jj,iku) ) ! i: 1188 ELSE ; pgru(ji,jj) = umask(ji,jj,iku) * ( prd(ji+1,jj,iku) - zri(ji,jj) ) ! i: 2189 ENDIF 190 IF( ze3wv >= 0._wp ) THEN ; pgrv(ji,jj) = vmask(ji,jj,ikv) * ( zrj(ji,jj) - prd(ji,jj,ikv) ) ! j: 1191 ELSE ; pgrv(ji,jj) = vmask(ji,jj,ikv) * ( prd(ji,jj+1,ikv) - zrj(ji,jj) ) ! j: 2178 iku = mbku(ji,jj) 179 ikv = mbkv(ji,jj) 180 ze3wu = fse3w(ji+1,jj ,iku) - fse3w(ji,jj,iku) 181 ze3wv = fse3w(ji ,jj+1,ikv) - fse3w(ji,jj,ikv) 182 IF( ze3wu >= 0._wp ) THEN ; pgru(ji,jj) = umask(ji,jj,1) * ( zri(ji ,jj ) - prd(ji,jj,iku) ) ! i: 1 183 ELSE ; pgru(ji,jj) = umask(ji,jj,1) * ( prd(ji+1,jj,iku) - zri(ji,jj ) ) ! i: 2 184 ENDIF 185 IF( ze3wv >= 0._wp ) THEN ; pgrv(ji,jj) = vmask(ji,jj,1) * ( zrj(ji,jj ) - prd(ji,jj,ikv) ) ! j: 1 186 ELSE ; pgrv(ji,jj) = vmask(ji,jj,1) * ( prd(ji,jj+1,ikv) - zrj(ji,jj ) ) ! j: 2 192 187 ENDIF 193 188 END DO
Note: See TracChangeset
for help on using the changeset viewer.