Changeset 11763
- Timestamp:
- 2019-10-22T18:18:37+02:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OFF/nemogcm.F90
r11527 r11763 341 341 #endif 342 342 343 CALL trc_init 343 CALL trc_init( Nbb, Nnn, Naa ) ! Passive tracers initialization 344 344 CALL dia_ptr_init ! Poleward TRansports initialization 345 345 -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/tests/WAD/EXPREF/makebdy_tc7.py
r7609 r11763 4 4 pathout = "bdyssh_tc7" 5 5 6 nx = 346 nx = 23 7 7 ny = 1 8 8 nt = 24 … … 18 18 ssh = np.zeros((nt,ny,nx)) 19 19 for nnt in range(nd*nt,(nd+1)*nt): 20 tx = 2.5*np.cos((3.141592654/6.0)*(nnt +1.0))20 tx = 2.5*np.cos((3.141592654/6.0)*(nnt)) 21 21 print nnt, tx 22 22 for nnx in range(nx): -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/tests/WAD/EXPREF/namelist_cfg
r10075 r11763 169 169 !----------------------------------------------------------------------- 170 170 ctypebdy = 'E' 171 nbdyind = 50171 nbdyind = 33 172 172 nbdybeg = 1 173 nbdyend = 34173 nbdyend = 23 174 174 !ctypebdy = 'W' 175 175 !nbdyind = 2 -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/tests/WAD/MY_DOCS/Namelists/nam_wad_tc7
r7609 r11763 15 15 nb_bdy = 1 ! number of open boundary sets 16 16 / 17 !-----------------------------------------------------------------------18 &namwad ! Wetting and drying19 !-----------------------------------------------------------------------20 rn_wdmin1 = 0.150 ! Minimum wet depth on dried cells21 / -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/tests/WAD/MY_SRC/bdyini.F90
r10425 r11763 133 133 INTEGER :: i_offset, j_offset ! - - 134 134 INTEGER , POINTER :: nbi, nbj, nbr ! short cuts 135 REAL(wp), POINTER :: flagu, flagv ! - -136 135 REAL(wp), POINTER, DIMENSION(:,:) :: pmask ! pointer to 2D mask fields 137 136 REAL(wp) :: zefl, zwfl, znfl, zsfl ! local scalars … … 385 384 END SELECT 386 385 IF(lwp) WRITE(numout,*) 386 ! 387 ! sanity check if used with tides 388 IF( ln_tide ) THEN 389 IF(lwp) WRITE(numout,*) ' The total volume correction is not working with tides. ' 390 IF(lwp) WRITE(numout,*) ' Set ln_vol to .FALSE. ' 391 IF(lwp) WRITE(numout,*) ' or ' 392 IF(lwp) WRITE(numout,*) ' equilibriate your bdy input files ' 393 CALL ctl_stop( 'The total volume correction is not working with tides.' ) 394 END IF 387 395 ELSE 388 396 IF(lwp) WRITE(numout,*) 'No volume correction applied at open boundaries' … … 1203 1211 END DO 1204 1212 IF( icount /= 0 ) THEN 1205 IF(lwp) WRITE(numout,*) 1206 IF(lwp) WRITE(numout,*) ' E R R O R : Some ',cgrid(igrd),' grid points,', & 1213 WRITE(ctmp1,*) ' E R R O R : Some ',cgrid(igrd),' grid points,', & 1207 1214 ' are not boundary points (flagu calculation). Check nbi, nbj, indices for boundary set ',ib_bdy 1208 IF(lwp) WRITE(numout,*) ' ========== ' 1209 IF(lwp) WRITE(numout,*) 1210 nstop = nstop + 1 1215 WRITE(ctmp2,*) ' ========== ' 1216 CALL ctl_stop( ' ', ctmp1, ctmp2, ' ' ) 1211 1217 ENDIF 1212 1218 END DO … … 1238 1244 END DO 1239 1245 IF( icount /= 0 ) THEN 1240 IF(lwp) WRITE(numout,*) 1241 IF(lwp) WRITE(numout,*) ' E R R O R : Some ',cgrid(igrd),' grid points,', & 1246 WRITE(ctmp1,*) ' E R R O R : Some ',cgrid(igrd),' grid points,', & 1242 1247 ' are not boundary points (flagv calculation). Check nbi, nbj, indices for boundary set ',ib_bdy 1243 IF(lwp) WRITE(numout,*) ' ========== ' 1244 IF(lwp) WRITE(numout,*) 1245 nstop = nstop + 1 1248 WRITE(ctmp2,*) ' ========== ' 1249 CALL ctl_stop( ' ', ctmp1, ctmp2, ' ' ) 1246 1250 ENDIF 1247 1251 END DO 1248 1252 ! 1249 1253 END DO 1250 1251 ! Compute total lateral surface for volume correction:1252 ! ----------------------------------------------------1253 ! JC: this must be done at each time step with non-linear free surface1254 bdysurftot = 0._wp1255 IF( ln_vol ) THEN1256 igrd = 2 ! Lateral surface at U-points1257 DO ib_bdy = 1, nb_bdy1258 DO ib = 1, idx_bdy(ib_bdy)%nblenrim(igrd)1259 nbi => idx_bdy(ib_bdy)%nbi(ib,igrd)1260 nbj => idx_bdy(ib_bdy)%nbj(ib,igrd)1261 flagu => idx_bdy(ib_bdy)%flagu(ib,igrd)1262 bdysurftot = bdysurftot + hu_n (nbi , nbj) &1263 & * e2u (nbi , nbj) * ABS( flagu ) &1264 & * tmask_i(nbi , nbj) &1265 & * tmask_i(nbi+1, nbj)1266 END DO1267 END DO1268 1269 igrd=3 ! Add lateral surface at V-points1270 DO ib_bdy = 1, nb_bdy1271 DO ib = 1, idx_bdy(ib_bdy)%nblenrim(igrd)1272 nbi => idx_bdy(ib_bdy)%nbi(ib,igrd)1273 nbj => idx_bdy(ib_bdy)%nbj(ib,igrd)1274 flagv => idx_bdy(ib_bdy)%flagv(ib,igrd)1275 bdysurftot = bdysurftot + hv_n (nbi, nbj ) &1276 & * e1v (nbi, nbj ) * ABS( flagv ) &1277 & * tmask_i(nbi, nbj ) &1278 & * tmask_i(nbi, nbj+1)1279 END DO1280 END DO1281 !1282 CALL mpp_sum( 'bdyini', bdysurftot ) ! sum over the global domain1283 END IF1284 1254 ! 1285 1255 ! Tidy up … … 1288 1258 ! 1289 1259 END SUBROUTINE bdy_segs 1290 1291 1260 1292 1261 SUBROUTINE bdy_ctl_seg … … 1376 1345 icorns(ib2,1) = npckgw(ib1) 1377 1346 ELSEIF ((jpisft(ib2)==jpiwob(ib1)).AND.(jpjwft(ib1)==jpjsob(ib2))) THEN 1378 IF(lwp) WRITE(numout,*) 1379 IF(lwp) WRITE(numout,*) ' E R R O R : Found an acute open boundary corner at point (i,j)= ', & 1380 & jpisft(ib2), jpjwft(ib1) 1381 IF(lwp) WRITE(numout,*) ' ========== Not allowed yet' 1382 IF(lwp) WRITE(numout,*) ' Crossing problem with West segment: ',npckgw(ib1), & 1383 & ' and South segment: ',npckgs(ib2) 1384 IF(lwp) WRITE(numout,*) 1385 nstop = nstop + 1 1347 WRITE(ctmp1,*) ' E R R O R : Found an acute open boundary corner at point (i,j)= ', & 1348 & jpisft(ib2), jpjwft(ib1) 1349 WRITE(ctmp2,*) ' ========== Not allowed yet' 1350 WRITE(ctmp3,*) ' Crossing problem with West segment: ',npckgw(ib1), & 1351 & ' and South segment: ',npckgs(ib2) 1352 CALL ctl_stop( ' ', ctmp1, ctmp2, ctmp3, ' ' ) 1386 1353 ELSE 1387 IF(lwp) WRITE(numout,*) 1388 IF(lwp) WRITE(numout,*) ' E R R O R : Check South and West Open boundary indices' 1389 IF(lwp) WRITE(numout,*) ' ========== Crossing problem with West segment: ',npckgw(ib1) , & 1390 & ' and South segment: ',npckgs(ib2) 1391 IF(lwp) WRITE(numout,*) 1392 nstop = nstop+1 1354 WRITE(ctmp1,*) ' E R R O R : Check South and West Open boundary indices' 1355 WRITE(ctmp2,*) ' ========== Crossing problem with West segment: ',npckgw(ib1) , & 1356 & ' and South segment: ',npckgs(ib2) 1357 CALL ctl_stop( ' ', ctmp1, ctmp2, ' ' ) 1393 1358 END IF 1394 1359 END IF … … 1412 1377 icorns(ib2,2) = npckge(ib1) 1413 1378 ELSEIF ((jpjeft(ib1)==jpjsob(ib2)).AND.(jpisdt(ib2)==jpieob(ib1)+1)) THEN 1414 IF(lwp) WRITE(numout,*) 1415 IF(lwp) WRITE(numout,*) ' E R R O R : Found an acute open boundary corner at point (i,j)= ', & 1416 & jpisdt(ib2), jpjeft(ib1) 1417 IF(lwp) WRITE(numout,*) ' ========== Not allowed yet' 1418 IF(lwp) WRITE(numout,*) ' Crossing problem with East segment: ',npckge(ib1), & 1419 & ' and South segment: ',npckgs(ib2) 1420 IF(lwp) WRITE(numout,*) 1421 nstop = nstop + 1 1379 WRITE(ctmp1,*) ' E R R O R : Found an acute open boundary corner at point (i,j)= ', & 1380 & jpisdt(ib2), jpjeft(ib1) 1381 WRITE(ctmp2,*) ' ========== Not allowed yet' 1382 WRITE(ctmp3,*) ' Crossing problem with East segment: ',npckge(ib1), & 1383 & ' and South segment: ',npckgs(ib2) 1384 CALL ctl_stop( ' ', ctmp1, ctmp2, ctmp3, ' ' ) 1422 1385 ELSE 1423 IF(lwp) WRITE(numout,*) 1424 IF(lwp) WRITE(numout,*) ' E R R O R : Check South and East Open boundary indices' 1425 IF(lwp) WRITE(numout,*) ' ========== Crossing problem with East segment: ',npckge(ib1), & 1426 & ' and South segment: ',npckgs(ib2) 1427 IF(lwp) WRITE(numout,*) 1428 nstop = nstop + 1 1386 WRITE(ctmp1,*) ' E R R O R : Check South and East Open boundary indices' 1387 WRITE(ctmp2,*) ' ========== Crossing problem with East segment: ',npckge(ib1), & 1388 & ' and South segment: ',npckgs(ib2) 1389 CALL ctl_stop( ' ', ctmp1, ctmp2, ' ' ) 1429 1390 END IF 1430 1391 END IF … … 1448 1409 icornn(ib2,1) = npckgw(ib1) 1449 1410 ELSEIF ((jpjwdt(ib1)==jpjnob(ib2)+1).AND.(jpinft(ib2)==jpiwob(ib1))) THEN 1450 IF(lwp) WRITE(numout,*) 1451 IF(lwp) WRITE(numout,*) ' E R R O R : Found an acute open boundary corner at point (i,j)= ', & 1411 WRITE(ctmp1,*) ' E R R O R : Found an acute open boundary corner at point (i,j)= ', & 1452 1412 & jpinft(ib2), jpjwdt(ib1) 1453 IF(lwp) WRITE(numout,*) ' ========== Not allowed yet'1454 IF(lwp) WRITE(numout,*) ' Crossing problem with West segment: ',npckgw(ib1), &1413 WRITE(ctmp2,*) ' ========== Not allowed yet' 1414 WRITE(ctmp3,*) ' Crossing problem with West segment: ',npckgw(ib1), & 1455 1415 & ' and North segment: ',npckgn(ib2) 1456 IF(lwp) WRITE(numout,*) 1457 nstop = nstop + 1 1416 CALL ctl_stop( ' ', ctmp1, ctmp2, ctmp3, ' ' ) 1458 1417 ELSE 1459 IF(lwp) WRITE(numout,*) 1460 IF(lwp) WRITE(numout,*) ' E R R O R : Check North and West Open boundary indices' 1461 IF(lwp) WRITE(numout,*) ' ========== Crossing problem with West segment: ',npckgw(ib1), & 1418 WRITE(ctmp1,*) ' E R R O R : Check North and West Open boundary indices' 1419 WRITE(ctmp2,*) ' ========== Crossing problem with West segment: ',npckgw(ib1), & 1462 1420 & ' and North segment: ',npckgn(ib2) 1463 IF(lwp) WRITE(numout,*) 1464 nstop = nstop + 1 1421 CALL ctl_stop( ' ', ctmp1, ctmp2, ' ' ) 1465 1422 END IF 1466 1423 END IF … … 1484 1441 icornn(ib2,2) = npckge(ib1) 1485 1442 ELSEIF ((jpjedt(ib1)==jpjnob(ib2)+1).AND.(jpindt(ib2)==jpieob(ib1)+1)) THEN 1486 IF(lwp) WRITE(numout,*) 1487 IF(lwp) WRITE(numout,*) ' E R R O R : Found an acute open boundary corner at point (i,j)= ', & 1443 WRITE(ctmp1,*) ' E R R O R : Found an acute open boundary corner at point (i,j)= ', & 1488 1444 & jpindt(ib2), jpjedt(ib1) 1489 IF(lwp) WRITE(numout,*) ' ========== Not allowed yet' 1490 IF(lwp) WRITE(numout,*) ' Crossing problem with East segment: ',npckge(ib1), & 1491 & ' and North segment: ',npckgn(ib2) 1492 IF(lwp) WRITE(numout,*) 1493 nstop = nstop + 1 1445 WRITE(ctmp2,*) ' ========== Not allowed yet' 1446 WRITE(ctmp3,*) ' Crossing problem with East segment: ',npckge(ib1), & 1447 & ' and North segment: ',npckgn(ib2) 1448 CALL ctl_stop( ' ', ctmp1, ctmp2, ctmp3, ' ' ) 1494 1449 ELSE 1495 IF(lwp) WRITE(numout,*) 1496 IF(lwp) WRITE(numout,*) ' E R R O R : Check North and East Open boundary indices' 1497 IF(lwp) WRITE(numout,*) ' ========== Crossing problem with East segment: ',npckge(ib1), & 1498 & ' and North segment: ',npckgn(ib2) 1499 IF(lwp) WRITE(numout,*) 1500 nstop = nstop + 1 1450 WRITE(ctmp1,*) ' E R R O R : Check North and East Open boundary indices' 1451 WRITE(ctmp2,*) ' ========== Crossing problem with East segment: ',npckge(ib1), & 1452 & ' and North segment: ',npckgn(ib2) 1453 CALL ctl_stop( ' ', ctmp1, ctmp2, ' ' ) 1501 1454 END IF 1502 1455 END IF … … 1524 1477 IF (ztestmask(1)==1) THEN 1525 1478 IF (icornw(ib,1)==0) THEN 1526 IF(lwp) WRITE(numout,*) 1527 IF(lwp) WRITE(numout,*) ' E R R O R : Open boundary segment ', npckgw(ib) 1528 IF(lwp) WRITE(numout,*) ' ========== does not start on land or on a corner' 1529 IF(lwp) WRITE(numout,*) 1530 nstop = nstop + 1 1479 WRITE(ctmp1,*) ' E R R O R : Open boundary segment ', npckgw(ib) 1480 WRITE(ctmp2,*) ' ========== does not start on land or on a corner' 1481 CALL ctl_stop( ' ', ctmp1, ctmp2, ' ' ) 1531 1482 ELSE 1532 1483 ! This is a corner … … 1538 1489 IF (ztestmask(2)==1) THEN 1539 1490 IF (icornw(ib,2)==0) THEN 1540 IF(lwp) WRITE(numout,*) 1541 IF(lwp) WRITE(numout,*) ' E R R O R : Open boundary segment ', npckgw(ib) 1542 IF(lwp) WRITE(numout,*) ' ========== does not end on land or on a corner' 1543 IF(lwp) WRITE(numout,*) 1544 nstop = nstop + 1 1491 WRITE(ctmp1,*) ' E R R O R : Open boundary segment ', npckgw(ib) 1492 WRITE(ctmp2,*) ' ========== does not end on land or on a corner' 1493 CALL ctl_stop( ' ', ctmp1, ctmp2, ' ' ) 1545 1494 ELSE 1546 1495 ! This is a corner … … 1568 1517 IF (ztestmask(1)==1) THEN 1569 1518 IF (icorne(ib,1)==0) THEN 1570 IF(lwp) WRITE(numout,*) 1571 IF(lwp) WRITE(numout,*) ' E R R O R : Open boundary segment ', npckge(ib) 1572 IF(lwp) WRITE(numout,*) ' ========== does not start on land or on a corner' 1573 IF(lwp) WRITE(numout,*) 1574 nstop = nstop + 1 1519 WRITE(ctmp1,*) ' E R R O R : Open boundary segment ', npckge(ib) 1520 WRITE(ctmp2,*) ' ========== does not start on land or on a corner' 1521 CALL ctl_stop( ' ', ctmp1, ctmp2, ' ' ) 1575 1522 ELSE 1576 1523 ! This is a corner … … 1582 1529 IF (ztestmask(2)==1) THEN 1583 1530 IF (icorne(ib,2)==0) THEN 1584 IF(lwp) WRITE(numout,*) 1585 IF(lwp) WRITE(numout,*) ' E R R O R : Open boundary segment ', npckge(ib) 1586 IF(lwp) WRITE(numout,*) ' ========== does not end on land or on a corner' 1587 IF(lwp) WRITE(numout,*) 1588 nstop = nstop + 1 1531 WRITE(ctmp1,*) ' E R R O R : Open boundary segment ', npckge(ib) 1532 WRITE(ctmp2,*) ' ========== does not end on land or on a corner' 1533 CALL ctl_stop( ' ', ctmp1, ctmp2, ' ' ) 1589 1534 ELSE 1590 1535 ! This is a corner … … 1611 1556 1612 1557 IF ((ztestmask(1)==1).AND.(icorns(ib,1)==0)) THEN 1613 IF(lwp) WRITE(numout,*) 1614 IF(lwp) WRITE(numout,*) ' E R R O R : Open boundary segment ', npckgs(ib) 1615 IF(lwp) WRITE(numout,*) ' ========== does not start on land or on a corner' 1616 IF(lwp) WRITE(numout,*) 1617 nstop = nstop + 1 1558 WRITE(ctmp1,*) ' E R R O R : Open boundary segment ', npckgs(ib) 1559 WRITE(ctmp2,*) ' ========== does not start on land or on a corner' 1560 CALL ctl_stop( ' ', ctmp1, ctmp2, ' ' ) 1618 1561 ENDIF 1619 1562 IF ((ztestmask(2)==1).AND.(icorns(ib,2)==0)) THEN 1620 IF(lwp) WRITE(numout,*) 1621 IF(lwp) WRITE(numout,*) ' E R R O R : Open boundary segment ', npckgs(ib) 1622 IF(lwp) WRITE(numout,*) ' ========== does not end on land or on a corner' 1623 IF(lwp) WRITE(numout,*) 1624 nstop = nstop + 1 1563 WRITE(ctmp1,*) ' E R R O R : Open boundary segment ', npckgs(ib) 1564 WRITE(ctmp2,*) ' ========== does not end on land or on a corner' 1565 CALL ctl_stop( ' ', ctmp1, ctmp2, ' ' ) 1625 1566 ENDIF 1626 1567 END DO … … 1641 1582 1642 1583 IF ((ztestmask(1)==1).AND.(icornn(ib,1)==0)) THEN 1643 IF(lwp) WRITE(numout,*) 1644 IF(lwp) WRITE(numout,*) ' E R R O R : Open boundary segment ', npckgn(ib) 1645 IF(lwp) WRITE(numout,*) ' ========== does not start on land' 1646 IF(lwp) WRITE(numout,*) 1647 nstop = nstop + 1 1584 WRITE(ctmp1,*) ' E R R O R : Open boundary segment ', npckgn(ib) 1585 WRITE(ctmp2,*) ' ========== does not start on land' 1586 CALL ctl_stop( ' ', ctmp1, ctmp2, ' ' ) 1648 1587 ENDIF 1649 1588 IF ((ztestmask(2)==1).AND.(icornn(ib,2)==0)) THEN 1650 IF(lwp) WRITE(numout,*) 1651 IF(lwp) WRITE(numout,*) ' E R R O R : Open boundary segment ', npckgn(ib) 1652 IF(lwp) WRITE(numout,*) ' ========== does not end on land' 1653 IF(lwp) WRITE(numout,*) 1654 nstop = nstop + 1 1589 WRITE(ctmp1,*) ' E R R O R : Open boundary segment ', npckgn(ib) 1590 WRITE(ctmp2,*) ' ========== does not end on land' 1591 CALL ctl_stop( ' ', ctmp1, ctmp2, ' ' ) 1655 1592 ENDIF 1656 1593 END DO … … 1691 1628 ! 1692 1629 IF( itest>0 ) THEN 1693 IF(lwp) WRITE(numout,*) ' E R R O R : Segments ', ib1, 'and ', ib2 1694 IF(lwp) WRITE(numout,*) ' ========== have different open bdy schemes' 1695 IF(lwp) WRITE(numout,*) 1696 nstop = nstop + 1 1630 WRITE(ctmp1,*) ' E R R O R : Segments ', ib1, 'and ', ib2 1631 WRITE(ctmp2,*) ' ========== have different open bdy schemes' 1632 CALL ctl_stop( ' ', ctmp1, ctmp2, ' ' ) 1697 1633 ENDIF 1698 1634 !
Note: See TracChangeset
for help on using the changeset viewer.