- Timestamp:
- 2017-11-15T12:39:36+01:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_rev8689_LIM3_RST/NEMOGCM/NEMO/OPA_SRC/LBC/lib_mpp.F90
r7753 r8708 351 351 !! 352 352 !!---------------------------------------------------------------------- 353 REAL(wp), DIMENSION( jpi,jpj,jpk), INTENT(inout) :: ptab ! 3D array on which the boundary condition is applied353 REAL(wp), DIMENSION(:,:,:) , INTENT(inout) :: ptab ! 3D array on which the boundary condition is applied 354 354 CHARACTER(len=1) , INTENT(in ) :: cd_type ! define the nature of ptab array grid-points 355 355 ! ! = T , U , V , F , W points … … 359 359 REAL(wp) , OPTIONAL , INTENT(in ) :: pval ! background value (used at closed boundaries) 360 360 ! 361 INTEGER :: ji, jj, jk, jl 361 INTEGER :: ji, jj, jk, jl, ilev ! dummy loop indices 362 362 INTEGER :: imigr, iihom, ijhom ! temporary integers 363 363 INTEGER :: ml_req1, ml_req2, ml_err ! for key_mpi_isend … … 367 367 REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: zt3ew, zt3we ! 3d for east-west & west-east 368 368 !!---------------------------------------------------------------------- 369 370 ALLOCATE( zt3ns(jpi,jprecj, jpk,2), zt3sn(jpi,jprecj,jpk,2), &371 & zt3ew(jpj,jpreci, jpk,2), zt3we(jpj,jpreci,jpk,2) )369 ilev = SIZE(ptab, 3) 370 ALLOCATE( zt3ns(jpi,jprecj,ilev,2), zt3sn(jpi,jprecj,ilev,2), & 371 & zt3ew(jpj,jpreci,ilev,2), zt3we(jpj,jpreci,ilev,2) ) 372 372 373 373 ! … … 381 381 ! 382 382 ! WARNING ptab is defined only between nld and nle 383 DO jk = 1, jpk383 DO jk = 1, ilev 384 384 DO jj = nlcj+1, jpj ! added line(s) (inner only) 385 385 ptab(nldi :nlei , jj ,jk) = ptab(nldi:nlei, nlej,jk) … … 430 430 ! 431 431 ! ! Migrations 432 imigr = jpreci * jpj * jpk432 imigr = jpreci * jpj * ilev 433 433 ! 434 434 SELECT CASE ( nbondi ) … … 482 482 ! 483 483 ! ! Migrations 484 imigr = jprecj * jpi * jpk484 imigr = jprecj * jpi * ilev 485 485 ! 486 486 SELECT CASE ( nbondj ) … … 1055 1055 !! 1056 1056 !!---------------------------------------------------------------------- 1057 REAL(wp), DIMENSION( jpi,jpj,jpk), INTENT(inout) :: ptab1 ! first and second 3D array on which1058 REAL(wp), DIMENSION( jpi,jpj,jpk), INTENT(inout) :: ptab2 ! the boundary condition is applied1057 REAL(wp), DIMENSION(:,:,:) , INTENT(inout) :: ptab1 ! first and second 3D array on which 1058 REAL(wp), DIMENSION(:,:,:) , INTENT(inout) :: ptab2 ! the boundary condition is applied 1059 1059 CHARACTER(len=1) , INTENT(in ) :: cd_type1 ! nature of ptab1 and ptab2 arrays 1060 1060 CHARACTER(len=1) , INTENT(in ) :: cd_type2 ! i.e. grid-points = T , U , V , F or W points 1061 1061 REAL(wp) , INTENT(in ) :: psgn ! =-1 the sign change across the north fold boundary 1062 1062 !! ! = 1. , the sign is kept 1063 INTEGER :: jl ! dummy loop indices1063 INTEGER :: jl, ilev ! dummy loop indices 1064 1064 INTEGER :: imigr, iihom, ijhom ! temporary integers 1065 1065 INTEGER :: ml_req1, ml_req2, ml_err ! for key_mpi_isend … … 1069 1069 !!---------------------------------------------------------------------- 1070 1070 ! 1071 ALLOCATE( zt4ns(jpi,jprecj,jpk,2,2), zt4sn(jpi,jprecj,jpk,2,2) , & 1072 & zt4ew(jpj,jpreci,jpk,2,2), zt4we(jpj,jpreci,jpk,2,2) ) 1071 ilev = SIZE(ptab1, 3) 1072 ALLOCATE( zt4ns(jpi,jprecj,ilev,2,2), zt4sn(jpi,jprecj,ilev,2,2) , & 1073 & zt4ew(jpj,jpreci,ilev,2,2), zt4we(jpj,jpreci,ilev,2,2) ) 1073 1074 ! 1074 1075 ! 1. standard boundary treatment … … 1117 1118 ! 1118 1119 ! ! Migrations 1119 imigr = jpreci * jpj * jpk*21120 imigr = jpreci * jpj * ilev *2 1120 1121 ! 1121 1122 SELECT CASE ( nbondi ) … … 1176 1177 ! 1177 1178 ! ! Migrations 1178 imigr = jprecj * jpi * jpk* 21179 imigr = jprecj * jpi * ilev * 2 1179 1180 ! 1180 1181 SELECT CASE ( nbondj ) … … 1451 1452 !! 1452 1453 !!---------------------------------------------------------------------- 1453 REAL(wp), DIMENSION( jpi,jpj,jpk), INTENT(inout) :: ptab ! 3D array on which the boundary condition is applied1454 REAL(wp), DIMENSION(:,:,:), INTENT(inout) :: ptab ! 3D array on which the boundary condition is applied 1454 1455 CHARACTER(len=1) , INTENT(in ) :: cd_type ! define the nature of ptab array grid-points 1455 1456 ! ! = T , U , V , F , W points … … 1459 1460 REAL(wp) , OPTIONAL , INTENT(in ) :: pval ! background value (used at closed boundaries) 1460 1461 !! 1461 INTEGER :: ji, jj, jk, jl 1462 INTEGER :: ji, jj, jk, jl,ilev ! dummy loop indices 1462 1463 INTEGER :: imigr, iihom, ijhom ! temporary integers 1463 1464 INTEGER :: ml_req1, ml_req2, ml_err ! for key_mpi_isend … … 1469 1470 1470 1471 !!---------------------------------------------------------------------- 1471 1472 ALLOCATE( zt3ns(jpi,jprecj, jpk,2), zt3sn(jpi,jprecj,jpk,2), &1473 & zt3ew(jpj,jpreci, jpk,2), zt3we(jpj,jpreci,jpk,2) )1472 ilev = SIZE(ptab, 3) 1473 ALLOCATE( zt3ns(jpi,jprecj,ilev,2), zt3sn(jpi,jprecj,ilev,2), & 1474 & zt3ew(jpj,jpreci,ilev,2), zt3we(jpj,jpreci,ilev,2) ) 1474 1475 1475 1476 ! … … 1494 1495 ! 1495 1496 ! ! Migrations 1496 imigr = jpreci * jpj * jpk1497 imigr = jpreci * jpj * ilev 1497 1498 ! 1498 1499 SELECT CASE ( nbondi ) … … 1547 1548 ! 1548 1549 ! ! Migrations 1549 imigr = jprecj * jpi * jpk1550 imigr = jprecj * jpi * ilev 1550 1551 ! 1551 1552 SELECT CASE ( nbondj )
Note: See TracChangeset
for help on using the changeset viewer.