Changeset 3079
- Timestamp:
- 2011-11-10T19:48:23+01:00 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_r2802_NOCL_prjhpg/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90
r3068 r3079 1150 1150 DO jj = 2, jpjm1 1151 1151 DO ji = 2, jpim1 1152 zu(ji,jj,1) = - ( 0.5_wp * fse3uw(ji,jj,1) - sshu_n(ji,jj) * znad)1153 zv(ji,jj,1) = - ( 0.5_wp * fse3vw(ji,jj,1) - sshv_n(ji,jj) * znad)1152 zu(ji,jj,1) = - ( fse3u(ji,jj,1) - sshu_n(ji,jj) * znad) 1153 zv(ji,jj,1) = - ( fse3v(ji,jj,1) - sshv_n(ji,jj) * znad) 1154 1154 END DO 1155 1155 END DO … … 1158 1158 DO jj = 2, jpjm1 1159 1159 DO ji = 2, jpim1 1160 zu(ji,jj,jk) = zu(ji,jj,jk-1)- fse3u w(ji,jj,jk)1161 zv(ji,jj,jk) = zv(ji,jj,jk-1)- fse3v w(ji,jj,jk)1160 zu(ji,jj,jk) = zu(ji,jj,jk-1)- fse3u(ji,jj,jk) 1161 zv(ji,jj,jk) = zv(ji,jj,jk-1)- fse3v(ji,jj,jk) 1162 1162 END DO 1163 1163 END DO 1164 1164 END DO 1165 1165 1166 ! Start pressure integration 1166 DO jk = 1, jpkm1 1167 DO jj = 2, jpjm1 1168 DO ji = 2, jpim1 1169 zu(ji,jj,jk) = zu(ji,jj,jk) + 0.5_wp * fse3u(ji,jj,jk) 1170 zv(ji,jj,jk) = zv(ji,jj,jk) + 0.5_wp * fse3v(ji,jj,jk) 1171 END DO 1172 END DO 1173 END DO 1167 1174 1168 1175 DO jk = 1, jpkm1 … … 1175 1182 1176 1183 !!!!! for u equation 1177 IF(-fsde3w(ji+1,jj,mbathy(ji+1,jj)) >= -fsde3w(ji,jj,mbathy(ji,jj))) THEN 1184 IF(jk <= mbku(ji,jj)) THEN 1185 IF(-fsde3w(ji+1,jj,mbku(ji,jj)) >= -fsde3w(ji,jj,mbku(ji,jj))) THEN 1178 1186 jis = ji + 1; jid = ji 1179 1187 ELSE … … 1184 1192 jk1 = jk 1185 1193 bhitwe = 0 1186 IF(jk1 == mbathy(jis,jj)) THEN 1187 bhitwe = 1 1188 ELSE 1189 DO WHILE ( -fsde3w(jis,jj,jk1+1) > zuijk ) 1190 pwes = pwes + & 1191 integ2(fsde3w(jis,jj,jk1),fsde3w(jis,jj,jk1+1),& 1192 asp(jis,jj,jk1),bsp(jis,jj,jk1),& 1193 csp(jis,jj,jk1),dsp(jis,jj,jk1)) 1194 jk1 = jk1 + 1 1195 IF(jk1 == mbathy(jis,jj)) THEN 1196 bhitwe = 1 1197 EXIT 1198 END IF 1199 END DO 1200 ENDIF 1201 1202 IF(bhitwe /= 1) THEN 1194 DO WHILE ( -fsde3w(jis,jj,jk1) > zuijk ) 1195 IF(jk1 == mbku(ji,jj)) THEN 1196 bhitwe = 1 1197 EXIT 1198 ENDIF 1199 deps = min(fsde3w(jis,jj,jk1+1), -zuijk) 1203 1200 pwes = pwes + & 1204 integ2(fsde3w(jis,jj,jk1), -zuijk,&1201 integ2(fsde3w(jis,jj,jk1),deps,& 1205 1202 asp(jis,jj,jk1),bsp(jis,jj,jk1),& 1206 1203 csp(jis,jj,jk1),dsp(jis,jj,jk1)) 1207 ELSE 1208 zuijk = -fsde3w(jis,jj,jk1) 1204 jk1 = jk1 + 1 1205 END DO 1206 1207 IF(bhitwe == 1) THEN 1208 zuijk = -fsde3w(jis,jj,jk1) 1209 1209 ENDIF 1210 1210 … … 1212 1212 jk1 = jk 1213 1213 bhitwe = 0 1214 IF(jk1 == 1) THEN 1215 bhitwe = 1 1216 ELSE 1217 DO WHILE ( -fsde3w(jid,jj,jk1-1) < zuijk ) 1218 pwed = pwed + & 1219 integ2(fsde3w(jid,jj,jk1-1),fsde3w(jid,jj,jk1),& 1220 asp(jid,jj,jk1-1),bsp(jid,jj,jk1-1),& 1221 csp(jid,jj,jk1-1),dsp(jid,jj,jk1-1)) 1222 jk1 = jk1 - 1 1223 IF(jk1 == 1) THEN 1224 bhitwe = 1 1225 EXIT 1226 END IF 1227 END DO 1228 ENDIF 1229 1230 IF(bhitwe /= 1) THEN 1214 DO WHILE ( -fsde3w(jid,jj,jk1) < zuijk ) 1215 IF(jk1 == 1) THEN 1216 bhitwe = 1 1217 EXIT 1218 END IF 1219 deps = max(fsde3w(jid,jj,jk1-1), -zuijk) 1231 1220 pwed = pwed + & 1232 integ2( -zuijk,fsde3w(jid,jj,jk1),&1221 integ2(deps,fsde3w(jid,jj,jk1),& 1233 1222 asp(jid,jj,jk1-1),bsp(jid,jj,jk1-1),& 1234 1223 csp(jid,jj,jk1-1),dsp(jid,jj,jk1-1)) 1235 ELSE 1224 jk1 = jk1 - 1 1225 END DO 1226 1227 IF(bhitwe == 1) THEN 1236 1228 deps = fsde3w(jid,jj,1) + min(zuijk, sshn(jid,jj)*znad) 1237 1229 rhdt1 = rhd(jid,jj,1) - interp3(fsde3w(jid,jj,1),asp(jid,jj,1), & … … 1241 1233 ENDIF 1242 1234 1243 IF(jid > jis) THEN1244 pe = pwed; pw = pwes1245 ELSE1246 pe = pwes; pw = pwed1247 ENDIF1248 1235 1249 1236 dpdx1 = zcoef0 / e1u(ji,jj) * (zhpi(ji+1,jj,jk) - zhpi(ji,jj,jk)) 1250 1237 IF(lk_vvl) THEN 1251 dpdx2 = zcoef0 / e1u(ji,jj) * (pw + pe + (sshn(ji+1,jj)-sshn(ji,jj))) 1238 dpdx2 = zcoef0 / e1u(ji,jj) * & 1239 (REAL(jis-jid, wp) * (pwes + pwed) + (sshn(ji+1,jj)-sshn(ji,jj))) 1252 1240 ELSE 1253 dpdx2 = zcoef0 / e1u(ji,jj) * (pw + pe)1241 dpdx2 = zcoef0 / e1u(ji,jj) * REAL(jis-jid, wp) * (pwes + pwed) 1254 1242 ENDIF 1255 1243 1256 1244 ua(ji,jj,jk) = ua(ji,jj,jk) + (dpdx1 + dpdx2)*& 1257 1245 & umask(ji,jj,jk)*tmask(ji,jj,jk)*tmask(ji+1,jj,jk) 1246 ENDIF 1258 1247 1259 1248 !!!!! for v equation 1260 1261 IF(-fsde3w(ji,jj+1,mb athy(ji,jj+1)) >= -fsde3w(ji,jj,mbathy(ji,jj))) THEN1249 IF(jk <= mbkv(ji,jj)) THEN 1250 IF(-fsde3w(ji,jj+1,mbkv(ji,jj)) >= -fsde3w(ji,jj,mbkv(ji,jj))) THEN 1262 1251 jjs = jj + 1; jjd = jj 1263 1252 ELSE … … 1268 1257 jk1 = jk 1269 1258 bhitns = 0 1270 IF(jk1 == mbathy(ji,jjs)) THEN 1271 bhitns = 1 1272 ELSE 1273 DO WHILE ( -fsde3w(ji,jjs,jk1+1) > zvijk ) 1274 pnss = pnss + & 1275 integ2(fsde3w(ji,jjs,jk1),fsde3w(ji,jjs,jk1+1),& 1276 asp(ji,jjs,jk1),bsp(ji,jjs,jk1),& 1277 csp(ji,jjs,jk1),dsp(ji,jjs,jk1)) 1278 jk1 = jk1 + 1 1279 IF(jk1 == mbathy(ji,jjs)) THEN 1280 bhitns = 1 1281 EXIT 1282 END IF 1283 END DO 1284 ENDIF 1285 1286 IF(bhitns /= 1) THEN 1259 DO WHILE ( -fsde3w(ji,jjs,jk1) > zvijk ) 1260 IF(jk1 == mbkv(ji,jj)) THEN 1261 bhitns = 1 1262 EXIT 1263 ENDIF 1264 deps = min(fsde3w(ji,jjs,jk1+1), -zvijk) 1287 1265 pnss = pnss + & 1288 integ2(fsde3w(ji,jjs,jk1), -zvijk,&1266 integ2(fsde3w(ji,jjs,jk1),deps,& 1289 1267 asp(ji,jjs,jk1),bsp(ji,jjs,jk1),& 1290 1268 csp(ji,jjs,jk1),dsp(ji,jjs,jk1)) 1291 ELSE 1292 zvijk = -fsde3w(ji,jjs,jk1) 1269 jk1 = jk1 + 1 1270 END DO 1271 1272 IF(bhitns == 1) THEN 1273 zvijk = -fsde3w(ji,jjs,jk1) 1293 1274 ENDIF 1294 1275 … … 1296 1277 jk1 = jk 1297 1278 bhitns = 0 1298 IF(jk1 == 1) THEN 1299 bhitns = 1 1300 ELSE 1301 DO WHILE ( -fsde3w(ji,jjd,jk1-1) < zvijk ) 1302 pnsd = pnsd + & 1303 integ2(fsde3w(ji,jjd,jk1-1),fsde3w(ji,jjd,jk1),& 1304 asp(ji,jjd,jk1-1),bsp(ji,jjd,jk1-1),& 1305 csp(ji,jjd,jk1-1),dsp(ji,jjd,jk1-1)) 1306 jk1 = jk1 - 1 1307 IF(jk1 == 1) THEN 1308 bhitns = 1 1309 EXIT 1310 END IF 1311 END DO 1312 ENDIF 1313 1314 IF(bhitns /= 1) THEN 1279 DO WHILE ( -fsde3w(ji,jjd,jk1) < zvijk ) 1280 IF(jk1 == 1) THEN 1281 bhitns = 1 1282 EXIT 1283 END IF 1284 deps = max(fsde3w(ji,jjd,jk1-1), -zvijk) 1315 1285 pnsd = pnsd + & 1316 integ2( -zvijk,fsde3w(ji,jjd,jk1),&1286 integ2(deps,fsde3w(ji,jjd,jk1),& 1317 1287 asp(ji,jjd,jk1-1),bsp(ji,jjd,jk1-1),& 1318 1288 csp(ji,jjd,jk1-1),dsp(ji,jjd,jk1-1)) 1319 ELSE 1289 jk1 = jk1 - 1 1290 END DO 1291 1292 IF(bhitns == 1) THEN 1320 1293 deps = fsde3w(ji,jjd,1) + min(zvijk, sshn(ji,jjd)*znad) 1321 1294 rhdt1 = rhd(ji,jjd,1) - interp3(fsde3w(ji,jjd,1),asp(ji,jjd,1), & … … 1325 1298 ENDIF 1326 1299 1327 IF(jjd > jjs) THEN1328 pn = pnsd; ps = pnss1329 ELSE1330 pn = pnss; ps = pnsd1331 ENDIF1332 1300 1333 1301 dpdy1 = zcoef0 / e2v(ji,jj) * (zhpi(ji,jj+1,jk) - zhpi(ji,jj,jk)) 1334 1302 if(lk_vvl) then 1335 dpdy2 = zcoef0 / e2v(ji,jj) * (ps + pn + (sshn(ji,jj+1)-sshn(ji,jj))) 1303 dpdy2 = zcoef0 / e2v(ji,jj) * & 1304 (REAL(jjs-jjd, wp) * (pnss + pnsd) + (sshn(ji,jj+1)-sshn(ji,jj))) 1336 1305 else 1337 dpdy2 = zcoef0 / e2v(ji,jj) * (ps + pn)1306 dpdy2 = zcoef0 / e2v(ji,jj) * REAL(jjs-jjd, wp) * (pnss + pnsd ) 1338 1307 end if 1339 1308 1340 1309 va(ji,jj,jk) = va(ji,jj,jk) + (dpdy1 + dpdy2)*& 1341 1310 & vmask(ji,jj,jk)*tmask(ji,jj,jk)*tmask(ji,jj+1,jk) 1311 ENDIF 1342 1312 1343 1313
Note: See TracChangeset
for help on using the changeset viewer.