- Timestamp:
- 2020-11-05T15:18:53+01:00 (4 years ago)
- Location:
- NEMO/branches/2020/dev_12905_xios_restart
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_12905_xios_restart
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEADext/AGRIF5 ^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 8 9 9 # SETTE 10 ^/utils/CI/sette@ HEADsette10 ^/utils/CI/sette@13559 sette
-
- Property svn:externals
-
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/BDY/bdyini.F90
r12377 r13727 19 19 USE oce ! ocean dynamics and tracers variables 20 20 USE dom_oce ! ocean space and time domain 21 USE sbc_oce , ONLY: nn_ice 21 22 USE bdy_oce ! unstructured open boundary conditions 22 23 USE bdydta ! open boundary cond. setting (bdy_dta_init routine) 23 24 USE bdytides ! open boundary cond. setting (bdytide_init routine) 24 25 USE tide_mod, ONLY: ln_tide ! tidal forcing 25 USE phycst 26 USE phycst , ONLY: rday 26 27 ! 27 28 USE in_out_manager ! I/O units … … 316 317 dta_bdy(ib_bdy)%lneed_ice = cn_ice(ib_bdy) /= 'none' 317 318 319 IF( dta_bdy(ib_bdy)%lneed_ice .AND. nn_ice /= 2 ) THEN 320 WRITE(ctmp1,*) 'bdy number ', ib_bdy,', needs ice model but nn_ice = ', nn_ice 321 CALL ctl_stop( ctmp1 ) 322 ENDIF 323 318 324 IF( lwp .AND. dta_bdy(ib_bdy)%lneed_ice ) THEN 319 325 SELECT CASE( nn_ice_dta(ib_bdy) ) ! … … 410 416 CALL iom_get( inum, jpdom_unknown, 'nbi'//cgrid(igrd), zz_read(1:nblendta(igrd,ib_bdy),:) ) 411 417 DO ii = 1,nblendta(igrd,ib_bdy) 412 nbidta(ii,igrd,ib_bdy) = NINT( zz_read(ii,1) ) 418 nbidta(ii,igrd,ib_bdy) = NINT( zz_read(ii,1) ) + nn_hls 413 419 END DO 414 420 CALL iom_get( inum, jpdom_unknown, 'nbj'//cgrid(igrd), zz_read(1:nblendta(igrd,ib_bdy),:) ) 415 421 DO ii = 1,nblendta(igrd,ib_bdy) 416 nbjdta(ii,igrd,ib_bdy) = NINT( zz_read(ii,1) ) 422 nbjdta(ii,igrd,ib_bdy) = NINT( zz_read(ii,1) ) + nn_hls 417 423 END DO 418 424 CALL iom_get( inum, jpdom_unknown, 'nbr'//cgrid(igrd), zz_read(1:nblendta(igrd,ib_bdy),:) ) … … 632 638 END DO 633 639 END DO 634 CALL lbc_lnk( 'bdyini', zfmask, 'F', 1. )640 CALL lbc_lnk( 'bdyini', zfmask, 'F', 1.0_wp ) 635 641 636 642 ! Read global 2D mask at T-points: bdytmask … … 648 654 END DO 649 655 END DO 650 CALL lbc_lnk_multi( 'bdyini', bdyumask, 'U', 1. , bdyvmask, 'V', 1. ) ! Lateral boundary cond.656 CALL lbc_lnk_multi( 'bdyini', bdyumask, 'U', 1.0_wp , bdyvmask, 'V', 1.0_wp ) ! Lateral boundary cond. 651 657 652 658 ! bdy masks are now set to zero on rim 0 points: … … 689 695 END DO 690 696 END DO 691 CALL lbc_lnk( 'bdyini', zfmask, 'F', 1. )697 CALL lbc_lnk( 'bdyini', zfmask, 'F', 1.0_wp ) 692 698 693 699 ! bdy masks are now set to zero on rim1 points: … … 780 786 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 781 787 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 782 IF( mig (ii) > 2 .AND. mig(ii) < jpiglo-2 .AND. mjg(ij) > 2 .AND. mjg(ij) < jpjglo-2 ) THEN788 IF( mig0(ii) > 2 .AND. mig0(ii) < Ni0glo-2 .AND. mjg0(ij) > 2 .AND. mjg0(ij) < Nj0glo-2 ) THEN 783 789 WRITE(ctmp1,*) ' Orlanski is not safe when the open boundaries are on the interior of the computational domain' 784 790 CALL ctl_stop( ctmp1 ) … … 865 871 ENDIF 866 872 SELECT CASE( igrd ) 867 CASE( 1 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'T', 1. )868 CASE( 2 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'U', 1. )869 CASE( 3 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'V', 1. )873 CASE( 1 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'T', 1.0_wp ) 874 CASE( 2 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'U', 1.0_wp ) 875 CASE( 3 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'V', 1.0_wp ) 870 876 END SELECT 871 877 DO ib = ibeg, iend … … 913 919 ENDIF 914 920 SELECT CASE( igrd ) 915 CASE( 1 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'T', 1. )916 CASE( 2 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'U', 1. )917 CASE( 3 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'V', 1. )921 CASE( 1 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'T', 1.0_wp ) 922 CASE( 2 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'U', 1.0_wp ) 923 CASE( 3 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'V', 1.0_wp ) 918 924 END SELECT 919 925 DO ib = ibeg, iend … … 1001 1007 END DO 1002 1008 SELECT CASE( igrd ) 1003 CASE( 1 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'T', 1. )1004 CASE( 2 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'U', 1. )1005 CASE( 3 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'V', 1. )1009 CASE( 1 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'T', 1.0_wp ) 1010 CASE( 2 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'U', 1.0_wp ) 1011 CASE( 3 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'V', 1.0_wp ) 1006 1012 END SELECT 1007 1013 DO ib = ibeg, iend … … 1065 1071 SUBROUTINE bdy_read_seg( kb_bdy, knblendta ) 1066 1072 !!---------------------------------------------------------------------- 1067 !! *** ROUTINE bdy_ coords_seg ***1073 !! *** ROUTINE bdy_read_seg *** 1068 1074 !! 1069 1075 !! ** Purpose : build bdy coordinates with segments defined in namelist … … 1105 1111 CASE( 'N' ) 1106 1112 IF( nbdyind == -1 ) THEN ! Automatic boundary definition: if nbdysegX = -1 1107 nbdyind = jpjglo - 2 ! set boundary to whole side of model domain.1113 nbdyind = Nj0glo - 2 ! set boundary to whole side of model domain. 1108 1114 nbdybeg = 2 1109 nbdyend = jpiglo - 11115 nbdyend = Ni0glo - 1 1110 1116 ENDIF 1111 1117 nbdysegn = nbdysegn + 1 1112 1118 npckgn(nbdysegn) = kb_bdy ! Save bdy package number 1113 jpjnob(nbdysegn) = nbdyind 1119 jpjnob(nbdysegn) = nbdyind 1114 1120 jpindt(nbdysegn) = nbdybeg 1115 1121 jpinft(nbdysegn) = nbdyend … … 1119 1125 nbdyind = 2 ! set boundary to whole side of model domain. 1120 1126 nbdybeg = 2 1121 nbdyend = jpiglo - 11127 nbdyend = Ni0glo - 1 1122 1128 ENDIF 1123 1129 nbdysegs = nbdysegs + 1 … … 1129 1135 CASE( 'E' ) 1130 1136 IF( nbdyind == -1 ) THEN ! Automatic boundary definition: if nbdysegX = -1 1131 nbdyind = jpiglo - 2 ! set boundary to whole side of model domain.1137 nbdyind = Ni0glo - 2 ! set boundary to whole side of model domain. 1132 1138 nbdybeg = 2 1133 nbdyend = jpjglo - 11139 nbdyend = Nj0glo - 1 1134 1140 ENDIF 1135 1141 nbdysege = nbdysege + 1 … … 1143 1149 nbdyind = 2 ! set boundary to whole side of model domain. 1144 1150 nbdybeg = 2 1145 nbdyend = jpjglo - 11151 nbdyend = Nj0glo - 1 1146 1152 ENDIF 1147 1153 nbdysegw = nbdysegw + 1 … … 1186 1192 IF(lwp) WRITE(numout,*) 'Number of north segments : ', nbdysegn 1187 1193 IF(lwp) WRITE(numout,*) 'Number of south segments : ', nbdysegs 1194 ! 1188 1195 ! 1. Check bounds 1189 1196 !---------------- 1190 1197 DO ib = 1, nbdysegn 1191 1198 IF (lwp) WRITE(numout,*) '**check north seg bounds pckg: ', npckgn(ib) 1192 IF ((jpjnob(ib).ge. jpjglo-1).or.&1199 IF ((jpjnob(ib).ge.Nj0glo-1).or.& 1193 1200 &(jpjnob(ib).le.1)) CALL ctl_stop( 'nbdyind out of domain' ) 1194 1201 IF (jpindt(ib).ge.jpinft(ib)) CALL ctl_stop( 'Bdy start index is greater than end index' ) 1195 1202 IF (jpindt(ib).lt.1 ) CALL ctl_stop( 'Start index out of domain' ) 1196 IF (jpinft(ib).gt. jpiglo) CALL ctl_stop( 'End index out of domain' )1203 IF (jpinft(ib).gt.Ni0glo) CALL ctl_stop( 'End index out of domain' ) 1197 1204 END DO 1198 1205 ! 1199 1206 DO ib = 1, nbdysegs 1200 1207 IF (lwp) WRITE(numout,*) '**check south seg bounds pckg: ', npckgs(ib) 1201 IF ((jpjsob(ib).ge. jpjglo-1).or.&1208 IF ((jpjsob(ib).ge.Nj0glo-1).or.& 1202 1209 &(jpjsob(ib).le.1)) CALL ctl_stop( 'nbdyind out of domain' ) 1203 1210 IF (jpisdt(ib).ge.jpisft(ib)) CALL ctl_stop( 'Bdy start index is greater than end index' ) 1204 1211 IF (jpisdt(ib).lt.1 ) CALL ctl_stop( 'Start index out of domain' ) 1205 IF (jpisft(ib).gt. jpiglo) CALL ctl_stop( 'End index out of domain' )1212 IF (jpisft(ib).gt.Ni0glo) CALL ctl_stop( 'End index out of domain' ) 1206 1213 END DO 1207 1214 ! 1208 1215 DO ib = 1, nbdysege 1209 1216 IF (lwp) WRITE(numout,*) '**check east seg bounds pckg: ', npckge(ib) 1210 IF ((jpieob(ib).ge. jpiglo-1).or.&1217 IF ((jpieob(ib).ge.Ni0glo-1).or.& 1211 1218 &(jpieob(ib).le.1)) CALL ctl_stop( 'nbdyind out of domain' ) 1212 1219 IF (jpjedt(ib).ge.jpjeft(ib)) CALL ctl_stop( 'Bdy start index is greater than end index' ) 1213 1220 IF (jpjedt(ib).lt.1 ) CALL ctl_stop( 'Start index out of domain' ) 1214 IF (jpjeft(ib).gt. jpjglo) CALL ctl_stop( 'End index out of domain' )1221 IF (jpjeft(ib).gt.Nj0glo) CALL ctl_stop( 'End index out of domain' ) 1215 1222 END DO 1216 1223 ! 1217 1224 DO ib = 1, nbdysegw 1218 1225 IF (lwp) WRITE(numout,*) '**check west seg bounds pckg: ', npckgw(ib) 1219 IF ((jpiwob(ib).ge. jpiglo-1).or.&1226 IF ((jpiwob(ib).ge.Ni0glo-1).or.& 1220 1227 &(jpiwob(ib).le.1)) CALL ctl_stop( 'nbdyind out of domain' ) 1221 1228 IF (jpjwdt(ib).ge.jpjwft(ib)) CALL ctl_stop( 'Bdy start index is greater than end index' ) 1222 1229 IF (jpjwdt(ib).lt.1 ) CALL ctl_stop( 'Start index out of domain' ) 1223 IF (jpjwft(ib).gt. jpjglo) CALL ctl_stop( 'End index out of domain' )1230 IF (jpjwft(ib).gt.Nj0glo) CALL ctl_stop( 'End index out of domain' ) 1224 1231 ENDDO 1225 !1226 1232 ! 1227 1233 ! 2. Look for segment crossings … … 1372 1378 DO ji = 1, jpi 1373 1379 DO jj = 1, jpj 1374 IF (((ji + nimpp - 1) == jpiwob(ib)).AND. & 1375 & ((jj + njmpp - 1) == jpjwdt(ib))) ztestmask(1)=tmask(ji,jj,1) 1376 IF (((ji + nimpp - 1) == jpiwob(ib)).AND. & 1377 & ((jj + njmpp - 1) == jpjwft(ib))) ztestmask(2)=tmask(ji,jj,1) 1380 IF( mig0(ji) == jpiwob(ib) .AND. mjg0(jj) == jpjwdt(ib) ) ztestmask(1) = tmask(ji,jj,1) 1381 IF( mig0(ji) == jpiwob(ib) .AND. mjg0(jj) == jpjwft(ib) ) ztestmask(2) = tmask(ji,jj,1) 1378 1382 END DO 1379 1383 END DO … … 1410 1414 DO ji = 1, jpi 1411 1415 DO jj = 1, jpj 1412 IF (((ji + nimpp - 1) == jpieob(ib)+1).AND. & 1413 & ((jj + njmpp - 1) == jpjedt(ib))) ztestmask(1)=tmask(ji,jj,1) 1414 IF (((ji + nimpp - 1) == jpieob(ib)+1).AND. & 1415 & ((jj + njmpp - 1) == jpjeft(ib))) ztestmask(2)=tmask(ji,jj,1) 1416 IF( mig0(ji) == jpieob(ib)+1 .AND. mjg0(jj) == jpjedt(ib) ) ztestmask(1) = tmask(ji,jj,1) 1417 IF( mig0(ji) == jpieob(ib)+1 .AND. mjg0(jj) == jpjeft(ib) ) ztestmask(2) = tmask(ji,jj,1) 1416 1418 END DO 1417 1419 END DO … … 1448 1450 DO ji = 1, jpi 1449 1451 DO jj = 1, jpj 1450 IF (((jj + njmpp - 1) == jpjsob(ib)).AND. & 1451 & ((ji + nimpp - 1) == jpisdt(ib))) ztestmask(1)=tmask(ji,jj,1) 1452 IF (((jj + njmpp - 1) == jpjsob(ib)).AND. & 1453 & ((ji + nimpp - 1) == jpisft(ib))) ztestmask(2)=tmask(ji,jj,1) 1452 IF( mjg0(jj) == jpjsob(ib) .AND. mig0(ji) == jpisdt(ib) ) ztestmask(1) = tmask(ji,jj,1) 1453 IF( mjg0(jj) == jpjsob(ib) .AND. mig0(ji) == jpisft(ib) ) ztestmask(2) = tmask(ji,jj,1) 1454 1454 END DO 1455 1455 END DO … … 1472 1472 DO ji = 1, jpi 1473 1473 DO jj = 1, jpj 1474 IF (((jj + njmpp - 1) == jpjnob(ib)+1).AND. & 1475 & ((ji + nimpp - 1) == jpindt(ib))) ztestmask(1)=tmask(ji,jj,1) 1476 IF (((jj + njmpp - 1) == jpjnob(ib)+1).AND. & 1477 & ((ji + nimpp - 1) == jpinft(ib))) ztestmask(2)=tmask(ji,jj,1) 1474 IF( mjg0(jj) == jpjnob(ib)+1 .AND. mig0(ji) == jpindt(ib) ) ztestmask(1) = tmask(ji,jj,1) 1475 IF( mjg0(jj) == jpjnob(ib)+1 .AND. mig0(ji) == jpinft(ib) ) ztestmask(2) = tmask(ji,jj,1) 1478 1476 END DO 1479 1477 END DO … … 1528 1526 DO ij = jpjedt(iseg), jpjeft(iseg) 1529 1527 icount = icount + 1 1530 nbidta(icount, igrd, ib_bdy) = jpieob(iseg) + 2 - ir 1531 nbjdta(icount, igrd, ib_bdy) = ij 1528 nbidta(icount, igrd, ib_bdy) = jpieob(iseg) + 2 - ir + nn_hls 1529 nbjdta(icount, igrd, ib_bdy) = ij + nn_hls 1532 1530 nbrdta(icount, igrd, ib_bdy) = ir 1533 1531 ENDDO … … 1540 1538 DO ij = jpjedt(iseg), jpjeft(iseg) 1541 1539 icount = icount + 1 1542 nbidta(icount, igrd, ib_bdy) = jpieob(iseg) + 1 - ir 1543 nbjdta(icount, igrd, ib_bdy) = ij 1540 nbidta(icount, igrd, ib_bdy) = jpieob(iseg) + 1 - ir + nn_hls 1541 nbjdta(icount, igrd, ib_bdy) = ij + nn_hls 1544 1542 nbrdta(icount, igrd, ib_bdy) = ir 1545 1543 ENDDO … … 1553 1551 DO ij = jpjedt(iseg), jpjeft(iseg) 1554 1552 icount = icount + 1 1555 nbidta(icount, igrd, ib_bdy) = jpieob(iseg) + 2 - ir 1556 nbjdta(icount, igrd, ib_bdy) = ij 1553 nbidta(icount, igrd, ib_bdy) = jpieob(iseg) + 2 - ir + nn_hls 1554 nbjdta(icount, igrd, ib_bdy) = ij + nn_hls 1557 1555 nbrdta(icount, igrd, ib_bdy) = ir 1558 1556 ENDDO … … 1573 1571 DO ij = jpjwdt(iseg), jpjwft(iseg) 1574 1572 icount = icount + 1 1575 nbidta(icount, igrd, ib_bdy) = jpiwob(iseg) + ir - 1 1576 nbjdta(icount, igrd, ib_bdy) = ij 1573 nbidta(icount, igrd, ib_bdy) = jpiwob(iseg) + ir - 1 + nn_hls 1574 nbjdta(icount, igrd, ib_bdy) = ij + nn_hls 1577 1575 nbrdta(icount, igrd, ib_bdy) = ir 1578 1576 ENDDO … … 1585 1583 DO ij = jpjwdt(iseg), jpjwft(iseg) 1586 1584 icount = icount + 1 1587 nbidta(icount, igrd, ib_bdy) = jpiwob(iseg) + ir - 1 1588 nbjdta(icount, igrd, ib_bdy) = ij 1585 nbidta(icount, igrd, ib_bdy) = jpiwob(iseg) + ir - 1 + nn_hls 1586 nbjdta(icount, igrd, ib_bdy) = ij + nn_hls 1589 1587 nbrdta(icount, igrd, ib_bdy) = ir 1590 1588 ENDDO … … 1598 1596 DO ij = jpjwdt(iseg), jpjwft(iseg) 1599 1597 icount = icount + 1 1600 nbidta(icount, igrd, ib_bdy) = jpiwob(iseg) + ir - 1 1601 nbjdta(icount, igrd, ib_bdy) = ij 1598 nbidta(icount, igrd, ib_bdy) = jpiwob(iseg) + ir - 1 + nn_hls 1599 nbjdta(icount, igrd, ib_bdy) = ij + nn_hls 1602 1600 nbrdta(icount, igrd, ib_bdy) = ir 1603 1601 ENDDO … … 1618 1616 DO ii = jpindt(iseg), jpinft(iseg) 1619 1617 icount = icount + 1 1620 nbidta(icount, igrd, ib_bdy) = ii 1621 nbjdta(icount, igrd, ib_bdy) = jpjnob(iseg) + 2 - ir 1618 nbidta(icount, igrd, ib_bdy) = ii + nn_hls 1619 nbjdta(icount, igrd, ib_bdy) = jpjnob(iseg) + 2 - ir + nn_hls 1622 1620 nbrdta(icount, igrd, ib_bdy) = ir 1623 1621 ENDDO … … 1631 1629 DO ii = jpindt(iseg), jpinft(iseg) 1632 1630 icount = icount + 1 1633 nbidta(icount, igrd, ib_bdy) = ii 1634 nbjdta(icount, igrd, ib_bdy) = jpjnob(iseg) + 2 - ir 1631 nbidta(icount, igrd, ib_bdy) = ii + nn_hls 1632 nbjdta(icount, igrd, ib_bdy) = jpjnob(iseg) + 2 - ir + nn_hls 1635 1633 nbrdta(icount, igrd, ib_bdy) = ir 1636 1634 ENDDO … … 1645 1643 DO ii = jpindt(iseg), jpinft(iseg) 1646 1644 icount = icount + 1 1647 nbidta(icount, igrd, ib_bdy) = ii 1648 nbjdta(icount, igrd, ib_bdy) = jpjnob(iseg) + 1 - ir 1645 nbidta(icount, igrd, ib_bdy) = ii + nn_hls 1646 nbjdta(icount, igrd, ib_bdy) = jpjnob(iseg) + 1 - ir + nn_hls 1649 1647 nbrdta(icount, igrd, ib_bdy) = ir 1650 1648 ENDDO … … 1663 1661 DO ii = jpisdt(iseg), jpisft(iseg) 1664 1662 icount = icount + 1 1665 nbidta(icount, igrd, ib_bdy) = ii 1666 nbjdta(icount, igrd, ib_bdy) = jpjsob(iseg) + ir - 1 1663 nbidta(icount, igrd, ib_bdy) = ii + nn_hls 1664 nbjdta(icount, igrd, ib_bdy) = jpjsob(iseg) + ir - 1 + nn_hls 1667 1665 nbrdta(icount, igrd, ib_bdy) = ir 1668 1666 ENDDO … … 1676 1674 DO ii = jpisdt(iseg), jpisft(iseg) 1677 1675 icount = icount + 1 1678 nbidta(icount, igrd, ib_bdy) = ii 1679 nbjdta(icount, igrd, ib_bdy) = jpjsob(iseg) + ir - 1 1676 nbidta(icount, igrd, ib_bdy) = ii + nn_hls 1677 nbjdta(icount, igrd, ib_bdy) = jpjsob(iseg) + ir - 1 + nn_hls 1680 1678 nbrdta(icount, igrd, ib_bdy) = ir 1681 1679 ENDDO … … 1690 1688 DO ii = jpisdt(iseg), jpisft(iseg) 1691 1689 icount = icount + 1 1692 nbidta(icount, igrd, ib_bdy) = ii 1693 nbjdta(icount, igrd, ib_bdy) = jpjsob(iseg) + ir - 1 1690 nbidta(icount, igrd, ib_bdy) = ii + nn_hls 1691 nbjdta(icount, igrd, ib_bdy) = jpjsob(iseg) + ir - 1 + nn_hls 1694 1692 nbrdta(icount, igrd, ib_bdy) = ir 1695 1693 ENDDO
Note: See TracChangeset
for help on using the changeset viewer.