- Timestamp:
- 2017-11-20T17:29:54+01:00 (7 years ago)
- Location:
- branches/2017/dev_r8126_ROBUST08_no_ghost/NEMOGCM/NEMO
- Files:
-
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r8126_ROBUST08_no_ghost/NEMOGCM/NEMO/NST_SRC/agrif_user.F90
r7761 r8758 28 28 jpiglo = nbcellsx + 2 + 2*nbghostcells 29 29 jpjglo = nbcellsy + 2 + 2*nbghostcells 30 jpi = ( jpiglo-2* jpreci + (jpni-1+0) ) / jpni + 2*jpreci31 jpj = ( jpjglo-2* jprecj + (jpnj-1+0) ) / jpnj + 2*jprecj30 jpi = ( jpiglo-2*nn_hls + (jpni-1+0) ) / jpni + 2*nn_hls 31 jpj = ( jpjglo-2*nn_hls + (jpnj-1+0) ) / jpnj + 2*nn_hls 32 32 ! JC: change to allow for different vertical levels 33 33 ! jpk is already set -
branches/2017/dev_r8126_ROBUST08_no_ghost/NEMOGCM/NEMO/OFF_SRC/nemogcm.F90
r8314 r8758 150 150 !! ** Purpose : initialization of the nemo model in off-line mode 151 151 !!---------------------------------------------------------------------- 152 INTEGER :: ji ! dummy loop indices 153 INTEGER :: ilocal_comm ! local integer 154 INTEGER :: ios, inum 152 INTEGER :: ji ! dummy loop indices 153 INTEGER :: ilocal_comm ! local integer 154 INTEGER :: ios, inum ! local integers 155 INTEGER :: iiarea, ijarea ! local integers 156 INTEGER :: iirest, ijrest ! local integers 155 157 REAL(wp) :: ziglo, zjglo, zkglo, zperio ! local scalars 156 158 CHARACTER(len=120), DIMENSION(30) :: cltxt, cltxt2, clnam … … 198 200 CALL usr_def_nam( cltxt2, clnam, cn_cfg, nn_cfg, jpiglo, jpjglo, jpkglo, jperio ) 199 201 ENDIF 200 jpk = jpkglo201 202 ! 202 203 ! … … 246 247 END IF 247 248 248 ! Calculate domain dimensions given calculated jpni and jpnj 249 ! This used to be done in par_oce.F90 when they were parameters rather 250 ! than variables 251 jpi = ( jpiglo-2*jpreci + (jpni-1) ) / jpni + 2*jpreci ! first dim. 252 jpj = ( jpjglo-2*jprecj + (jpnj-1) ) / jpnj + 2*jprecj ! second dim. 249 iiarea = 1 + MOD( narea - 1 , jpni ) 250 ijarea = 1 + ( narea - 1 ) / jpni 251 iirest = 1 + MOD( jpiglo - 2*nn_hls - 1 , jpni ) 252 ijrest = 1 + MOD( jpjglo - 2*nn_hls - 1 , jpnj ) 253 #if defined key_nemocice_decomp 254 jpi = ( nx_global+2-2*nn_hls + (jpni-1) ) / jpni + 2*nn_hls ! first dim. 255 jpj = ( ny_global+2-2*nn_hls + (jpnj-1) ) / jpnj + 2*nn_hls ! second dim. 256 jpimax = jpi 257 jpjmax = jpj 258 IF( iiarea == jpni ) jpi = jpiglo - (jpni - 1) * (jpi - 2*nn_hls) 259 IF( ijarea == jpnj ) jpj = jpjglo - (jpnj - 1) * (jpj - 2*nn_hls) 260 #else 261 jpi = ( jpiglo -2*nn_hls + (jpni-1) ) / jpni + 2*nn_hls ! first dim. 262 jpj = ( jpjglo -2*nn_hls + (jpnj-1) ) / jpnj + 2*nn_hls ! second dim. 263 jpimax = jpi 264 jpjmax = jpj 265 IF( iiarea > iirest ) jpi = jpi - 1 266 IF( ijarea > ijrest ) jpj = jpj - 1 267 #endif 268 269 jpk = jpkglo ! third dim 270 253 271 jpim1 = jpi-1 ! inner domain indices 254 272 jpjm1 = jpj-1 ! " " 255 jpkm1 = jpk-1! " "273 jpkm1 = MAX( 1, jpk-1 ) ! " " 256 274 jpij = jpi*jpj ! jpi x j 275 257 276 258 277 -
branches/2017/dev_r8126_ROBUST08_no_ghost/NEMOGCM/NEMO/OPA_SRC/CRS/crsdom.F90
r7646 r8758 1895 1895 jpjglo_crsm1 = jpjglo_crs - 1 1896 1896 1897 jpi_crs = ( jpiglo_crs - 2 * jpreci + (jpni-1) ) / jpni + 2 * jpreci1898 jpj_crs = ( jpjglo_crsm1 - 2 * jprecj + (jpnj-1) ) / jpnj + 2 * jprecj1897 jpi_crs = ( jpiglo_crs - 2 * nn_hls + (jpni-1) ) / jpni + 2 * nn_hls 1898 jpj_crs = ( jpjglo_crsm1 - 2 * nn_hls + (jpnj-1) ) / jpnj + 2 * nn_hls 1899 1899 1900 1900 IF( noso < 0 ) jpj_crs = jpj_crs + 1 ! add a local band on southern processors … … 1940 1940 CASE ( -1 ) 1941 1941 IF( MOD( jpjglo - njmppt(jn), nn_facty) > 0 ) nlejt_crs(jn) = nlejt_crs(jn) + 1 1942 nlcjt_crs(jn) = nlejt_crs(jn) + jprecj1942 nlcjt_crs(jn) = nlejt_crs(jn) + nn_hls 1943 1943 nldjt_crs(jn) = nldjt(jn) 1944 1944 … … 1947 1947 nldjt_crs(jn) = nldjt(jn) 1948 1948 IF( nldjt(jn) == 1 ) nlejt_crs(jn) = nlejt_crs(jn) + 1 1949 nlejt_crs(jn) = nlejt_crs(jn) + jprecj1950 nlcjt_crs(jn) = nlejt_crs(jn) + jprecj1949 nlejt_crs(jn) = nlejt_crs(jn) + nn_hls 1950 nlcjt_crs(jn) = nlejt_crs(jn) + nn_hls 1951 1951 1952 1952 CASE ( 1, 2 ) 1953 1953 1954 nlejt_crs(jn) = nlejt_crs(jn) + jprecj1954 nlejt_crs(jn) = nlejt_crs(jn) + nn_hls 1955 1955 nlcjt_crs(jn) = nlejt_crs(jn) 1956 1956 nldjt_crs(jn) = nldjt(jn) … … 1990 1990 SELECT CASE( ibonit(jn) ) 1991 1991 CASE ( -1 ) 1992 nleit_crs(jn) = nleit_crs(jn) + jpreci1993 nlcit_crs(jn) = nleit_crs(jn) + jpreci1992 nleit_crs(jn) = nleit_crs(jn) + nn_hls 1993 nlcit_crs(jn) = nleit_crs(jn) + nn_hls 1994 1994 nldit_crs(jn) = nldit(jn) 1995 1995 1996 1996 CASE ( 0 ) 1997 nleit_crs(jn) = nleit_crs(jn) + jpreci1998 nlcit_crs(jn) = nleit_crs(jn) + jpreci1997 nleit_crs(jn) = nleit_crs(jn) + nn_hls 1998 nlcit_crs(jn) = nleit_crs(jn) + nn_hls 1999 1999 nldit_crs(jn) = nldit(jn) 2000 2000 2001 2001 CASE ( 1, 2 ) 2002 2002 IF( MOD( jpiglo - nimppt(jn), nn_factx) > 0 ) nleit_crs(jn) = nleit_crs(jn) + 1 2003 nleit_crs(jn) = nleit_crs(jn) + jpreci2003 nleit_crs(jn) = nleit_crs(jn) + nn_hls 2004 2004 nlcit_crs(jn) = nleit_crs(jn) 2005 2005 nldit_crs(jn) = nldit(jn) -
branches/2017/dev_r8126_ROBUST08_no_ghost/NEMOGCM/NEMO/OPA_SRC/CRS/crsdomwri.F90
r6140 r8758 133 133 134 134 tmask_i_crs(:,:) = tmask_crs(:,:,1) 135 iif = jpreci136 iil = nlci_crs - jpreci+ 1137 ijf = jpreci138 ijl = nlcj_crs - jprecj+ 1135 iif = nn_hls 136 iil = nlci_crs - nn_hls + 1 137 ijf = nn_hls 138 ijl = nlcj_crs - nn_hls + 1 139 139 140 140 tmask_i_crs( 1:iif , : ) = 0._wp -
branches/2017/dev_r8126_ROBUST08_no_ghost/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90
r7822 r8758 98 98 WRITE(numout,cform) ' ' ,' jpij : ', jpij 99 99 WRITE(numout,*) ' mpp local domain info (mpp):' 100 WRITE(numout,*) ' jpni : ', jpni, ' jpreci : ', jpreci101 WRITE(numout,*) ' jpnj : ', jpnj, ' jprecj : ', jprecj100 WRITE(numout,*) ' jpni : ', jpni, ' nn_hls : ', nn_hls 101 WRITE(numout,*) ' jpnj : ', jpnj, ' nn_hls : ', nn_hls 102 102 WRITE(numout,*) ' jpnij : ', jpnij 103 103 WRITE(numout,*) ' lateral boundary of the Global domain : jperio = ', jperio -
branches/2017/dev_r8126_ROBUST08_no_ghost/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90
r7753 r8758 212 212 ! -------------------- 213 213 ! 214 iif = jpreci ; iil = nlci - jpreci+ 1215 ijf = jprecj ; ijl = nlcj - jprecj+ 1214 iif = nn_hls ; iil = nlci - nn_hls + 1 215 ijf = nn_hls ; ijl = nlcj - nn_hls + 1 216 216 ! 217 217 ! ! halo mask : 0 on the halo and 1 elsewhere -
branches/2017/dev_r8126_ROBUST08_no_ghost/NEMOGCM/NEMO/OPA_SRC/IOM/prtctl.F90
r5025 r8758 441 441 442 442 #if defined key_nemocice_decomp 443 ijpi = ( nx_global+2-2* jpreci + (isplt-1) ) / isplt + 2*jpreci444 ijpj = ( ny_global+2-2* jprecj + (jsplt-1) ) / jsplt + 2*jprecj443 ijpi = ( nx_global+2-2*nn_hls + (isplt-1) ) / isplt + 2*nn_hls 444 ijpj = ( ny_global+2-2*nn_hls + (jsplt-1) ) / jsplt + 2*nn_hls 445 445 #else 446 ijpi = ( jpiglo-2* jpreci + (isplt-1) ) / isplt + 2*jpreci447 ijpj = ( jpjglo-2* jprecj + (jsplt-1) ) / jsplt + 2*jprecj446 ijpi = ( jpiglo-2*nn_hls + (isplt-1) ) / isplt + 2*nn_hls 447 ijpj = ( jpjglo-2*nn_hls + (jsplt-1) ) / jsplt + 2*nn_hls 448 448 #endif 449 449 450 450 451 nrecil = 2 * jpreci452 nrecjl = 2 * jprecj451 nrecil = 2 * nn_hls 452 nrecjl = 2 * nn_hls 453 453 irestil = MOD( jpiglo - nrecil , isplt ) 454 454 irestjl = MOD( jpjglo - nrecjl , jsplt ) … … 563 563 ibonitl(jn) = nbondil 564 564 565 nldil = 1 + jpreci566 nleil = nlcil - jpreci565 nldil = 1 + nn_hls 566 nleil = nlcil - nn_hls 567 567 IF( nbondil == -1 .OR. nbondil == 2 ) nldil = 1 568 568 IF( nbondil == 1 .OR. nbondil == 2 ) nleil = nlcil 569 nldjl = 1 + jprecj570 nlejl = nlcjl - jprecj569 nldjl = 1 + nn_hls 570 nlejl = nlcjl - nn_hls 571 571 IF( nbondjl == -1 .OR. nbondjl == 2 ) nldjl = 1 572 572 IF( nbondjl == 1 .OR. nbondjl == 2 ) nlejl = nlcjl -
branches/2017/dev_r8126_ROBUST08_no_ghost/NEMOGCM/NEMO/OPA_SRC/LBC/lib_mpp.F90
r8186 r8758 535 535 INTEGER, DIMENSION(MPI_STATUS_SIZE) :: ml_stat ! for key_mpi_isend 536 536 !! 537 REAL(wp), DIMENSION(1-jpri:jpi+jpri, jprecj+jprj,2) :: r2dns538 REAL(wp), DIMENSION(1-jpri:jpi+jpri, jprecj+jprj,2) :: r2dsn539 REAL(wp), DIMENSION(1-jprj:jpj+jprj, jpreci+jpri,2) :: r2dwe540 REAL(wp), DIMENSION(1-jprj:jpj+jprj, jpreci+jpri,2) :: r2dew541 !!---------------------------------------------------------------------- 542 543 ipreci = jpreci+ jpri ! take into account outer extra 2D overlap area544 iprecj = jprecj+ jprj537 REAL(wp), DIMENSION(1-jpri:jpi+jpri,nn_hls+jprj,2) :: r2dns 538 REAL(wp), DIMENSION(1-jpri:jpi+jpri,nn_hls+jprj,2) :: r2dsn 539 REAL(wp), DIMENSION(1-jprj:jpj+jprj,nn_hls+jpri,2) :: r2dwe 540 REAL(wp), DIMENSION(1-jprj:jpj+jprj,nn_hls+jpri,2) :: r2dew 541 !!---------------------------------------------------------------------- 542 543 ipreci = nn_hls + jpri ! take into account outer extra 2D overlap area 544 iprecj = nn_hls + jprj 545 545 546 546 … … 553 553 pt2d(:, jpj :jpj+jprj) = pt2d ( :, 2 :2+jprj) 554 554 ELSE !* closed 555 IF( .NOT. cd_type == 'F' ) pt2d(:, 1-jprj : jprecj) = 0._wp ! south except at F-point556 pt2d(:,nlcj- jprecj+1:jpj+jprj) = 0._wp ! north555 IF( .NOT. cd_type == 'F' ) pt2d(:, 1-jprj : nn_hls ) = 0._wp ! south except at F-point 556 pt2d(:,nlcj-nn_hls+1:jpj+jprj) = 0._wp ! north 557 557 ENDIF 558 558 ! !== East-West boundaries … … 562 562 pt2d( jpi :jpi+jpri,:) = pt2d( 2 :2+jpri,:) ! west 563 563 ELSE !* closed 564 IF( .NOT. cd_type == 'F' ) pt2d( 1-jpri : jpreci,:) = 0._wp ! south except at F-point565 pt2d(nlci- jpreci+1:jpi+jpri,:) = 0._wp ! north564 IF( .NOT. cd_type == 'F' ) pt2d( 1-jpri :nn_hls ,:) = 0._wp ! south except at F-point 565 pt2d(nlci-nn_hls+1:jpi+jpri,:) = 0._wp ! north 566 566 ENDIF 567 567 ! … … 585 585 iihom = nlci-nreci-jpri 586 586 DO jl = 1, ipreci 587 r2dew(:,jl,1) = pt2d( jpreci+jl,:)587 r2dew(:,jl,1) = pt2d(nn_hls+jl,:) 588 588 r2dwe(:,jl,1) = pt2d(iihom +jl,:) 589 589 END DO … … 612 612 ! 613 613 ! ! Write Dirichlet lateral conditions 614 iihom = nlci - jpreci614 iihom = nlci - nn_hls 615 615 ! 616 616 SELECT CASE ( nbondi ) … … 638 638 DO jl = 1, iprecj 639 639 r2dsn(:,jl,1) = pt2d(:,ijhom +jl) 640 r2dns(:,jl,1) = pt2d(:, jprecj+jl)640 r2dns(:,jl,1) = pt2d(:,nn_hls+jl) 641 641 END DO 642 642 ENDIF … … 664 664 ! 665 665 ! ! Write Dirichlet lateral conditions 666 ijhom = nlcj - jprecj666 ijhom = nlcj - nn_hls 667 667 ! 668 668 SELECT CASE ( nbondj ) … … 1739 1739 INTEGER, DIMENSION(MPI_STATUS_SIZE) :: ml_stat ! for key_mpi_isend 1740 1740 !! 1741 REAL(wp), DIMENSION(1-jpri:jpi+jpri, jprecj+jprj,2) :: r2dns, r2dsn1742 REAL(wp), DIMENSION(1-jprj:jpj+jprj, jpreci+jpri,2) :: r2dwe, r2dew1743 !!---------------------------------------------------------------------- 1744 1745 ipreci = jpreci+ jpri ! take into account outer extra 2D overlap area1746 iprecj = jprecj+ jprj1741 REAL(wp), DIMENSION(1-jpri:jpi+jpri,nn_hls+jprj,2) :: r2dns, r2dsn 1742 REAL(wp), DIMENSION(1-jprj:jpj+jprj,nn_hls+jpri,2) :: r2dwe, r2dew 1743 !!---------------------------------------------------------------------- 1744 1745 ipreci = nn_hls + jpri ! take into account outer extra 2D overlap area 1746 iprecj = nn_hls + jprj 1747 1747 1748 1748 … … 1758 1758 ! 1759 1759 ELSE !* closed 1760 IF( .NOT. cd_type == 'F' ) pt2d( 1-jpri : jpreci,:) = 0._wp ! south except at F-point1761 pt2d(nlci- jpreci+1:jpi+jpri,:) = 0._wp ! north1760 IF( .NOT. cd_type == 'F' ) pt2d( 1-jpri :nn_hls ,:) = 0._wp ! south except at F-point 1761 pt2d(nlci-nn_hls+1:jpi+jpri,:) = 0._wp ! north 1762 1762 ENDIF 1763 1763 ! … … 1782 1782 iihom = nlci-nreci-jpri 1783 1783 DO jl = 1, ipreci 1784 r2dew(:,jl,1) = pt2d( jpreci+jl,:)1784 r2dew(:,jl,1) = pt2d(nn_hls+jl,:) 1785 1785 r2dwe(:,jl,1) = pt2d(iihom +jl,:) 1786 1786 END DO … … 1809 1809 ! 1810 1810 ! ! Write Dirichlet lateral conditions 1811 iihom = nlci - jpreci1811 iihom = nlci - nn_hls 1812 1812 ! 1813 1813 SELECT CASE ( nbondi ) … … 1836 1836 DO jl = 1, iprecj 1837 1837 r2dsn(:,jl,1) = pt2d(:,ijhom +jl) 1838 r2dns(:,jl,1) = pt2d(:, jprecj+jl)1838 r2dns(:,jl,1) = pt2d(:,nn_hls+jl) 1839 1839 END DO 1840 1840 ENDIF … … 1862 1862 ! 1863 1863 ! ! Write Dirichlet lateral conditions 1864 ijhom = nlcj - jprecj1864 ijhom = nlcj - nn_hls 1865 1865 ! 1866 1866 SELECT CASE ( nbondj ) -
branches/2017/dev_r8126_ROBUST08_no_ghost/NEMOGCM/NEMO/OPA_SRC/LBC/mpp_bdy_generic.h90
r8591 r8758 93 93 ipf = F_SIZE(ptab) ! 5th - use in "multi" case (array of pointers) 94 94 ! 95 ALLOCATE( zt3ns(jpi, jprecj,ipk,ipl,ipf,2), zt3sn(jpi,jprecj,ipk,ipl,ipf,2), &96 & zt3ew(jpj, jpreci,ipk,ipl,ipf,2), zt3we(jpj,jpreci,ipk,ipl,ipf,2) )95 ALLOCATE( zt3ns(jpi,nn_hls,ipk,ipl,ipf,2), zt3sn(jpi,nn_hls,ipk,ipl,ipf,2), & 96 & zt3ew(jpj,nn_hls,ipk,ipl,ipf,2), zt3we(jpj,nn_hls,ipk,ipl,ipf,2) ) 97 97 98 98 zland = 0._wp … … 111 111 ARRAY_IN(jpi,:,:,:,jf) = ARRAY_IN( 2 ,:,:,:,jf) 112 112 ELSE !* Closed 113 IF( .NOT. NAT_IN(jf) == 'F' ) ARRAY_IN( 1 : jpreci,:,:,:,jf) = zland ! east except F-point114 ARRAY_IN(nlci- jpreci+1:jpi ,:,:,:,jf) = zland ! west113 IF( .NOT. NAT_IN(jf) == 'F' ) ARRAY_IN( 1 :nn_hls,:,:,:,jf) = zland ! east except F-point 114 ARRAY_IN(nlci-nn_hls+1:jpi ,:,:,:,jf) = zland ! west 115 115 ENDIF 116 116 ELSEIF(nbondi == -1) THEN ! subdomain to the east only 117 IF( .NOT. NAT_IN(jf) == 'F' ) ARRAY_IN(1: jpreci,:,:,:,jf) = zland ! south except F-point117 IF( .NOT. NAT_IN(jf) == 'F' ) ARRAY_IN(1:nn_hls,:,:,:,jf) = zland ! south except F-point 118 118 ! 119 119 ELSEIF(nbondi == 1) THEN ! subdomain to the west only 120 ARRAY_IN(nlci- jpreci+1:jpi,:,:,:,jf) = zland ! north120 ARRAY_IN(nlci-nn_hls+1:jpi,:,:,:,jf) = zland ! north 121 121 ENDIF 122 122 ! ! North-South boundaries 123 123 ! 124 124 IF (nbondj == 2 .OR. nbondj == -1) THEN !* closed 125 IF( .NOT. NAT_IN(jf) == 'F' ) ARRAY_IN(:,1: jprecj,:,:,jf) = zland ! south except F-point125 IF( .NOT. NAT_IN(jf) == 'F' ) ARRAY_IN(:,1:nn_hls,:,:,jf) = zland ! south except F-point 126 126 ELSEIF (nbondj == 2 .OR. nbondj == 1) THEN 127 ARRAY_IN(:,nlcj- jprecj+1:jpj,:,:,jf) = zland ! north127 ARRAY_IN(:,nlcj-nn_hls+1:jpj,:,:,jf) = zland ! north 128 128 ENDIF 129 129 END DO … … 140 140 DO jl = 1, ipl 141 141 DO jk = 1, ipk 142 DO jh = 1, jpreci143 zt3ew(:,jh,jk,jl,jf,1) = ARRAY_IN( jpreci+jh,:,jk,jl,jf)142 DO jh = 1, nn_hls 143 zt3ew(:,jh,jk,jl,jf,1) = ARRAY_IN(nn_hls+jh,:,jk,jl,jf) 144 144 zt3we(:,jh,jk,jl,jf,1) = ARRAY_IN(iihom +jh,:,jk,jl,jf) 145 145 END DO … … 149 149 ! 150 150 ! ! Migrations 151 !!gm imigr = jpreci* jpj * ipk * ipl * ipf152 imigr = jpreci* jpj * ipk * ipl151 !!gm imigr = nn_hls * jpj * ipk * ipl * ipf 152 imigr = nn_hls * jpj * ipk * ipl 153 153 ! 154 154 SELECT CASE ( nbondi_bdy(IBD_IN(jf)) ) … … 171 171 ! 172 172 ! ! Write Dirichlet lateral conditions 173 iihom = nlci- jpreci173 iihom = nlci-nn_hls 174 174 ! 175 175 ! … … 178 178 DO jl = 1, ipl 179 179 DO jk = 1, ipk 180 DO jh = 1, jpreci180 DO jh = 1, nn_hls 181 181 ARRAY_IN(iihom+jh,:,jk,jl,jf) = zt3ew(:,jh,jk,jl,jf,2) 182 182 END DO … … 186 186 DO jl = 1, ipl 187 187 DO jk = 1, ipk 188 DO jh = 1, jpreci188 DO jh = 1, nn_hls 189 189 ARRAY_IN(jh ,:,jk,jl,jf) = zt3we(:,jh,jk,jl,jf,2) 190 190 ARRAY_IN(iihom+jh,:,jk,jl,jf) = zt3ew(:,jh,jk,jl,jf,2) … … 195 195 DO jl = 1, ipl 196 196 DO jk = 1, ipk 197 DO jh = 1, jpreci197 DO jh = 1, nn_hls 198 198 ARRAY_IN(jh ,:,jk,jl,jf) = zt3we(:,jh,jk,jl,jf,2) 199 199 END DO … … 213 213 DO jl = 1, ipl 214 214 DO jk = 1, ipk 215 DO jh = 1, jprecj215 DO jh = 1, nn_hls 216 216 zt3sn(:,jh,jk,jl,jf,1) = ARRAY_IN(:,ijhom +jh,jk,jl,jf) 217 zt3ns(:,jh,jk,jl,jf,1) = ARRAY_IN(:, jprecj+jh,jk,jl,jf)217 zt3ns(:,jh,jk,jl,jf,1) = ARRAY_IN(:,nn_hls+jh,jk,jl,jf) 218 218 END DO 219 219 END DO … … 222 222 ! 223 223 ! ! Migrations 224 !!gm imigr = jprecj* jpi * ipk * ipl * ipf225 imigr = jprecj* jpi * ipk * ipl224 !!gm imigr = nn_hls * jpi * ipk * ipl * ipf 225 imigr = nn_hls * jpi * ipk * ipl 226 226 ! 227 227 SELECT CASE ( nbondj_bdy(IBD_IN(jf)) ) … … 244 244 ! 245 245 ! ! Write Dirichlet lateral conditions 246 ijhom = nlcj- jprecj246 ijhom = nlcj-nn_hls 247 247 ! 248 248 SELECT CASE ( nbondj_bdy_b(IBD_IN(jf)) ) … … 250 250 DO jl = 1, ipl 251 251 DO jk = 1, ipk 252 DO jh = 1, jprecj252 DO jh = 1, nn_hls 253 253 ARRAY_IN(:,ijhom+jh,jk,jl,jf) = zt3ns(:,jh,jk,jl,jf,2) 254 254 END DO … … 258 258 DO jl = 1, ipl 259 259 DO jk = 1, ipk 260 DO jh = 1, jprecj260 DO jh = 1, nn_hls 261 261 ARRAY_IN(:, jh,jk,jl,jf) = zt3sn(:,jh,jk,jl,jf,2) 262 262 ARRAY_IN(:,ijhom+jh,jk,jl,jf) = zt3ns(:,jh,jk,jl,jf,2) … … 267 267 DO jl = 1, ipl 268 268 DO jk = 1, ipk 269 DO jh = 1, jprecj269 DO jh = 1, nn_hls 270 270 ARRAY_IN(:,jh,jk,jl,jf) = zt3sn(:,jh,jk,jl,jf,2) 271 271 END DO -
branches/2017/dev_r8126_ROBUST08_no_ghost/NEMOGCM/NEMO/OPA_SRC/LBC/mpp_lnk_generic.h90
r8591 r8758 72 72 ipf = F_SIZE(ptab) ! 5th - use in "multi" case (array of pointers) 73 73 ! 74 ALLOCATE( zt3ns(jpi, jprecj,ipk,ipl,ipf,2), zt3sn(jpi,jprecj,ipk,ipl,ipf,2), &75 & zt3ew(jpj, jpreci,ipk,ipl,ipf,2), zt3we(jpj,jpreci,ipk,ipl,ipf,2) )74 ALLOCATE( zt3ns(jpi,nn_hls,ipk,ipl,ipf,2), zt3sn(jpi,nn_hls,ipk,ipl,ipf,2), & 75 & zt3ew(jpj,nn_hls,ipk,ipl,ipf,2), zt3we(jpj,nn_hls,ipk,ipl,ipf,2) ) 76 76 ! 77 77 ll_Iperio = nbondi == 2 .AND. (nperio == 1 .OR. nperio == 4 .OR. nperio == 6) … … 116 116 ARRAY_IN(jpi,:,:,:,jf) = ARRAY_IN( 2 ,:,:,:,jf) 117 117 ELSE !* closed 118 IF( .NOT. NAT_IN(jf) == 'F' ) ARRAY_IN( 1 : jpreci,:,:,:,jf) = zland ! east except F-point119 ARRAY_IN(nlci- jpreci+1:jpi ,:,:,:,jf) = zland ! west118 IF( .NOT. NAT_IN(jf) == 'F' ) ARRAY_IN( 1 :nn_hls,:,:,:,jf) = zland ! east except F-point 119 ARRAY_IN(nlci-nn_hls+1:jpi ,:,:,:,jf) = zland ! west 120 120 ENDIF 121 121 ! ! North-South boundaries … … 124 124 ARRAY_IN(:,jpj,:,:,jf) = ARRAY_IN(:, 2 ,:,:,jf) 125 125 ELSE !* closed 126 IF( .NOT. NAT_IN(jf) == 'F' ) ARRAY_IN(:, 1 : jprecj,:,:,jf) = zland ! south except F-point127 ARRAY_IN(:,nlcj- jprecj+1:jpj ,:,:,jf) = zland ! north126 IF( .NOT. NAT_IN(jf) == 'F' ) ARRAY_IN(:, 1 :nn_hls,:,:,jf) = zland ! south except F-point 127 ARRAY_IN(:,nlcj-nn_hls+1:jpj ,:,:,jf) = zland ! north 128 128 ENDIF 129 129 END DO … … 142 142 DO jl = 1, ipl 143 143 DO jk = 1, ipk 144 DO jh = 1, jpreci145 zt3ew(:,jh,jk,jl,jf,1) = ARRAY_IN( jpreci+jh,:,jk,jl,jf)144 DO jh = 1, nn_hls 145 zt3ew(:,jh,jk,jl,jf,1) = ARRAY_IN(nn_hls+jh,:,jk,jl,jf) 146 146 zt3we(:,jh,jk,jl,jf,1) = ARRAY_IN(iihom +jh,:,jk,jl,jf) 147 147 END DO … … 152 152 ! 153 153 ! ! Migrations 154 imigr = jpreci* jpj * ipk * ipl * ipf154 imigr = nn_hls * jpj * ipk * ipl * ipf 155 155 ! 156 156 SELECT CASE ( nbondi ) … … 173 173 ! 174 174 ! ! Write Dirichlet lateral conditions 175 iihom = nlci- jpreci175 iihom = nlci-nn_hls 176 176 ! 177 177 SELECT CASE ( nbondi ) … … 180 180 DO jl = 1, ipl 181 181 DO jk = 1, ipk 182 DO jh = 1, jpreci182 DO jh = 1, nn_hls 183 183 ARRAY_IN(iihom+jh,:,jk,jl,jf) = zt3ew(:,jh,jk,jl,jf,2) 184 184 END DO … … 190 190 DO jl = 1, ipl 191 191 DO jk = 1, ipk 192 DO jh = 1, jpreci192 DO jh = 1, nn_hls 193 193 ARRAY_IN(jh ,:,jk,jl,jf) = zt3we(:,jh,jk,jl,jf,2) 194 194 ARRAY_IN(iihom+jh,:,jk,jl,jf) = zt3ew(:,jh,jk,jl,jf,2) … … 201 201 DO jl = 1, ipl 202 202 DO jk = 1, ipk 203 DO jh = 1, jpreci203 DO jh = 1, nn_hls 204 204 ARRAY_IN(jh ,:,jk,jl,jf) = zt3we(:,jh,jk,jl,jf,2) 205 205 END DO … … 218 218 DO jl = 1, ipl 219 219 DO jk = 1, ipk 220 DO jh = 1, jprecj220 DO jh = 1, nn_hls 221 221 zt3sn(:,jh,jk,jl,jf,1) = ARRAY_IN(:,ijhom +jh,jk,jl,jf) 222 zt3ns(:,jh,jk,jl,jf,1) = ARRAY_IN(:, jprecj+jh,jk,jl,jf)222 zt3ns(:,jh,jk,jl,jf,1) = ARRAY_IN(:,nn_hls+jh,jk,jl,jf) 223 223 END DO 224 224 END DO … … 228 228 ! 229 229 ! ! Migrations 230 imigr = jprecj* jpi * ipk * ipl * ipf230 imigr = nn_hls * jpi * ipk * ipl * ipf 231 231 ! 232 232 SELECT CASE ( nbondj ) … … 249 249 ! 250 250 ! ! Write Dirichlet lateral conditions 251 ijhom = nlcj- jprecj251 ijhom = nlcj-nn_hls 252 252 ! 253 253 SELECT CASE ( nbondj ) … … 256 256 DO jl = 1, ipl 257 257 DO jk = 1, ipk 258 DO jh = 1, jprecj258 DO jh = 1, nn_hls 259 259 ARRAY_IN(:,ijhom+jh,jk,jl,jf) = zt3ns(:,jh,jk,jl,jf,2) 260 260 END DO … … 266 266 DO jl = 1, ipl 267 267 DO jk = 1, ipk 268 DO jh = 1, jprecj268 DO jh = 1, nn_hls 269 269 ARRAY_IN(:, jh,jk,jl,jf) = zt3sn(:,jh,jk,jl,jf,2) 270 270 ARRAY_IN(:,ijhom+jh,jk,jl,jf) = zt3ns(:,jh,jk,jl,jf,2) … … 277 277 DO jl = 1, ipl 278 278 DO jk = 1, ipk 279 DO jh = 1, jprecj279 DO jh = 1, nn_hls 280 280 ARRAY_IN(:,jh,jk,jl,jf) = zt3sn(:,jh,jk,jl,jf,2) 281 281 END DO -
branches/2017/dev_r8126_ROBUST08_no_ghost/NEMOGCM/NEMO/OPA_SRC/LBC/mpp_nfd_generic.h90
r8314 r8758 73 73 ipj = 4 ! 2nd dimension of message transfers (last j-lines) 74 74 ! 75 ALLOCATE( znorthloc(jpi ,4,ipk,ipl,ipf) )75 ALLOCATE( znorthloc(jpimax,4,ipk,ipl,ipf) ) 76 76 ! 77 77 znorthloc(:,:,:,:,:) = 0._wp … … 82 82 DO jj = nlcj - ipj +1, nlcj 83 83 ij = jj - nlcj + ipj 84 znorthloc( :,ij,jk,jl,jf) = ARRAY_IN(:,jj,jk,jl,jf)84 znorthloc(1:jpi,ij,jk,jl,jf) = ARRAY_IN(1:jpi,jj,jk,jl,jf) 85 85 END DO 86 86 END DO … … 89 89 ! 90 90 ! 91 itaille = jpi * ipj * ipk * ipl * ipf91 itaille = jpimax * ipj * ipk * ipl * ipf 92 92 ! 93 93 IF( l_north_nogather ) THEN !== ???? ==! … … 177 177 ELSE !== ???? ==! 178 178 ALLOCATE( ztab (jpiglo,4,ipk,ipl,ipf ) ) 179 ALLOCATE( znorthgloio(jpi 179 ALLOCATE( znorthgloio(jpimax,4,ipk,ipl,ipf,jpni) ) 180 180 ! 181 181 CALL MPI_ALLGATHER( znorthloc , itaille, MPI_DOUBLE_PRECISION, & -
branches/2017/dev_r8126_ROBUST08_no_ghost/NEMOGCM/NEMO/OPA_SRC/LBC/mppini.F90
r8375 r8758 153 153 ! dimensions divided by the number of processors minus the overlap array. 154 154 ! 155 nreci = 2 * jpreci156 nrecj = 2 * jprecj155 nreci = 2 * nn_hls 156 nrecj = 2 * nn_hls 157 157 iresti = 1 + MOD( jpiglo - nreci -1 , jpni ) 158 158 irestj = 1 + MOD( jpjglo - nrecj -1 , jpnj ) 159 159 ! 160 ! Need to use jpimax and jpjmax here since jpi and jpj have already been 161 ! shrunk to local sizes in nemogcm 160 162 #if defined key_nemocice_decomp 161 163 ! Change padding to be consistent with CICE 162 ilci(1:jpni-1 ,:) = jpi 163 ilci(jpni ,:) = jpiglo - (jpni - 1) * (jpi - nreci)164 ! 165 ilcj(:, 1:jpnj-1) = jpj 166 ilcj(:, jpnj) = jpjglo - (jpnj - 1) * (jpj - nrecj)164 ilci(1:jpni-1 ,:) = jpimax 165 ilci(jpni ,:) = jpiglo - (jpni - 1) * (jpimax - nreci) 166 ! 167 ilcj(:, 1:jpnj-1) = jpjmax 168 ilcj(:, jpnj) = jpjglo - (jpnj - 1) * (jpjmax - nrecj) 167 169 #else 168 ilci(1:iresti ,:) = jpi 169 ilci(iresti+1:jpni ,:) = jpi -1170 171 ilcj(:, 1:irestj) = jpj 172 ilcj(:, irestj+1:jpnj) = jpj -1170 ilci(1:iresti ,:) = jpimax 171 ilci(iresti+1:jpni ,:) = jpimax-1 172 173 ilcj(:, 1:irestj) = jpjmax 174 ilcj(:, irestj+1:jpnj) = jpjmax-1 173 175 #endif 174 176 ! … … 237 239 ioea(ii,ij) = iproc + 1 238 240 iono(ii,ij) = iproc + jpni 239 ildi(ii,ij) = 1 + jpreci240 ilei(ii,ij) = ili - jpreci241 ildi(ii,ij) = 1 + nn_hls 242 ilei(ii,ij) = ili - nn_hls 241 243 242 244 IF( ibondi(ii,ij) == -1 .OR. ibondi(ii,ij) == 2 ) ildi(ii,ij) = 1 243 245 IF( ibondi(ii,ij) == 1 .OR. ibondi(ii,ij) == 2 ) ilei(ii,ij) = ili 244 ildj(ii,ij) = 1 + jprecj245 ilej(ii,ij) = ilj - jprecj246 ildj(ii,ij) = 1 + nn_hls 247 ilej(ii,ij) = ilj - nn_hls 246 248 IF( ibondj(ii,ij) == -1 .OR. ibondj(ii,ij) == 2 ) ildj(ii,ij) = 1 247 249 IF( ibondj(ii,ij) == 1 .OR. ibondj(ii,ij) == 2 ) ilej(ii,ij) = ilj … … 441 443 IF (lwp) THEN 442 444 CALL ctl_opn( inum, 'layout.dat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE., narea ) 443 WRITE(inum,'(a)') ' jpnij jpi jpj jpk jpiglo jpjglo' 444 WRITE(inum,'(6i8)') jpnij,jpi,jpj,jpk,jpiglo,jpjglo 445 WRITE(inum,'(a)') ' jpnij jpimax jpjmax jpk jpiglo jpjglo'//& 446 & ' ( local: narea jpi jpj)' 447 WRITE(inum,'(6i8,a,3i8,a)') jpnij,jpimax,jpjmax,jpk,jpiglo,jpjglo,& 448 & ' ( local: ',narea,jpi,jpj,' )' 445 449 WRITE(inum,'(a)') 'NAREA nlci nlcj nldi nldj nlei nlej nimp njmp nono noso nowe noea nbondi nbondj ' 446 450 … … 488 492 WRITE(numout,*) ' nreci = ', nreci 489 493 WRITE(numout,*) ' nrecj = ', nrecj 490 WRITE(numout,*) ' jpreci = ', jpreci 491 WRITE(numout,*) ' jprecj = ', jprecj 494 WRITE(numout,*) ' nn_hls = ', nn_hls 492 495 ENDIF 493 496 -
branches/2017/dev_r8126_ROBUST08_no_ghost/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90
r8314 r8758 239 239 INTEGER :: ji ! dummy loop indices 240 240 INTEGER :: ios, ilocal_comm ! local integer 241 INTEGER :: iiarea, ijarea ! local integers 242 INTEGER :: iirest, ijrest ! local integers 241 243 CHARACTER(len=120), DIMENSION(30) :: cltxt, cltxt2, clnam 242 244 ! … … 282 284 ENDIF 283 285 ! 284 jpk = jpkglo285 !286 #if defined key_agrif287 IF( .NOT. Agrif_Root() ) THEN ! AGRIF children: specific setting (cf. agrif_user.F90)288 jpiglo = nbcellsx + 2 + 2*nbghostcells289 jpjglo = nbcellsy + 2 + 2*nbghostcells290 jpi = ( jpiglo-2*jpreci + (jpni-1+0) ) / jpni + 2*jpreci291 jpj = ( jpjglo-2*jprecj + (jpnj-1+0) ) / jpnj + 2*jprecj292 nperio = 0293 jperio = 0294 ln_use_jattr = .false.295 ENDIF296 #endif297 286 ! 298 287 ! !--------------------------------------------! … … 353 342 #endif 354 343 ENDIF 344 ! 345 #if defined key_agrif 346 IF( .NOT. Agrif_Root() ) THEN ! AGRIF children: specific setting (cf. agrif_user.F90) 347 jpiglo = nbcellsx + 2 + 2*nbghostcells 348 jpjglo = nbcellsy + 2 + 2*nbghostcells 349 jpi = ( jpiglo-2*nn_hls + (jpni-1+0) ) / jpni + 2*nn_hls 350 jpj = ( jpjglo-2*nn_hls + (jpnj-1+0) ) / jpnj + 2*nn_hls 351 jpimax = jpi 352 jpjmax = jpj 353 nperio = 0 354 jperio = 0 355 ln_use_jattr = .false. 356 ENDIF 357 #endif 355 358 356 359 IF( Agrif_Root() ) THEN ! AGRIF mother: specific setting from jpni and jpnj 360 iiarea = 1 + MOD( narea - 1 , jpni ) 361 ijarea = 1 + ( narea - 1 ) / jpni 362 iirest = 1 + MOD( jpiglo - 2*nn_hls - 1 , jpni ) 363 ijrest = 1 + MOD( jpjglo - 2*nn_hls - 1 , jpnj ) 357 364 #if defined key_nemocice_decomp 358 jpi = ( nx_global+2-2*jpreci + (jpni-1) ) / jpni + 2*jpreci ! first dim. 359 jpj = ( ny_global+2-2*jprecj + (jpnj-1) ) / jpnj + 2*jprecj ! second dim. 365 jpi = ( nx_global+2-2*nn_hls + (jpni-1) ) / jpni + 2*nn_hls ! first dim. 366 jpj = ( ny_global+2-2*nn_hls + (jpnj-1) ) / jpnj + 2*nn_hls ! second dim. 367 jpimax = jpi 368 jpjmax = jpj 369 IF( iiarea == jpni ) jpi = jpiglo - (jpni - 1) * (jpi - 2*nn_hls) 370 IF( ijarea == jpnj ) jpj = jpjglo - (jpnj - 1) * (jpj - 2*nn_hls) 360 371 #else 361 jpi = ( jpiglo -2*jpreci + (jpni-1) ) / jpni + 2*jpreci ! first dim. 362 jpj = ( jpjglo -2*jprecj + (jpnj-1) ) / jpnj + 2*jprecj ! second dim. 363 #endif 364 ENDIF 365 366 !!gm ??? why here it has already been done in line 301 ! 372 jpi = ( jpiglo -2*nn_hls + (jpni-1) ) / jpni + 2*nn_hls ! first dim. 373 jpj = ( jpjglo -2*nn_hls + (jpnj-1) ) / jpnj + 2*nn_hls ! second dim. 374 jpimax = jpi 375 jpjmax = jpj 376 IF( iiarea > iirest ) jpi = jpi - 1 377 IF( ijarea > ijrest ) jpj = jpj - 1 378 #endif 379 ENDIF 380 367 381 jpk = jpkglo ! third dim 368 !!gm end369 382 370 383 #if defined key_agrif … … 414 427 ! ! Domain decomposition 415 428 CALL mpp_init 429 IF( ln_nnogather ) CALL nemo_northcomms! northfold neighbour lists (must be done after the masks are defined) 416 430 ! 417 431 IF( nn_timing == 1 ) CALL timing_init … … 424 438 CALL dom_init ! Domain 425 439 IF( ln_crs ) CALL crs_init ! coarsened grid: domain initialization 426 IF( ln_nnogather ) CALL nemo_northcomms! northfold neighbour lists (must be done after the masks are defined)440 !IF( ln_nnogather ) CALL nemo_northcomms! northfold neighbour lists (must be done after the masks are defined) 427 441 IF( ln_ctl ) CALL prt_ctl_init ! Print control 428 442 -
branches/2017/dev_r8126_ROBUST08_no_ghost/NEMOGCM/NEMO/OPA_SRC/par_oce.F90
r7646 r8758 54 54 55 55 ! local domain size !!! * local computational domain * 56 INTEGER, PUBLIC :: jpi ! = ( jpiglo-2* jpreci + (jpni-1) ) / jpni + 2*jpreci!: first dimension57 INTEGER, PUBLIC :: jpj ! = ( jpjglo-2* jprecj + (jpnj-1) ) / jpnj + 2*jprecj!: second dimension56 INTEGER, PUBLIC :: jpi ! = ( jpiglo-2*nn_hls + (jpni-1) ) / jpni + 2*nn_hls !: first dimension 57 INTEGER, PUBLIC :: jpj ! = ( jpjglo-2*nn_hls + (jpnj-1) ) / jpnj + 2*nn_hls !: second dimension 58 58 INTEGER, PUBLIC :: jpk ! = jpkglo 59 59 INTEGER, PUBLIC :: jpim1 ! = jpi-1 !: inner domain indices … … 61 61 INTEGER, PUBLIC :: jpkm1 ! = jpk-1 !: - - - 62 62 INTEGER, PUBLIC :: jpij ! = jpi*jpj !: jpi x jpj 63 INTEGER, PUBLIC :: jpimax! = maximum jpi across all areas 64 INTEGER, PUBLIC :: jpjmax! = maximum jpj across all areas 63 65 64 66 !!--------------------------------------------------------------------- … … 78 80 INTEGER, PUBLIC, PARAMETER :: jpr2di = 0 !: number of columns for extra outer halo 79 81 INTEGER, PUBLIC, PARAMETER :: jpr2dj = 0 !: number of rows for extra outer halo 80 INTEGER, PUBLIC, PARAMETER :: jpreci = 1 !: number of columns for overlap 81 INTEGER, PUBLIC, PARAMETER :: jprecj = 1 !: number of rows for overlap 82 INTEGER, PUBLIC, PARAMETER :: nn_hls = 1 !: halo width (applies to both rows and columns) 82 83 83 84 !!---------------------------------------------------------------------- -
branches/2017/dev_r8126_ROBUST08_no_ghost/NEMOGCM/NEMO/SAO_SRC/nemogcm.F90
r8314 r8758 93 93 INTEGER :: ji ! dummy loop indices 94 94 INTEGER :: ios, ilocal_comm ! local integer 95 INTEGER :: iiarea, ijarea ! local integers 96 INTEGER :: iirest, ijrest ! local integers 95 97 CHARACTER(len=120), DIMENSION(30) :: cltxt, cltxt2, clnam 96 98 ! … … 209 211 #endif 210 212 ENDIF 213 ! 214 #if defined key_agrif 215 IF( .NOT. Agrif_Root() ) THEN ! AGRIF children: specific setting (cf. agrif_user.F90) 216 jpiglo = nbcellsx + 2 + 2*nbghostcells 217 jpjglo = nbcellsy + 2 + 2*nbghostcells 218 jpi = ( jpiglo-2*nn_hls + (jpni-1+0) ) / jpni + 2*nn_hls 219 jpj = ( jpjglo-2*nn_hls + (jpnj-1+0) ) / jpnj + 2*nn_hls 220 jpimax = jpi 221 jpjmax = jpj 222 nperio = 0 223 jperio = 0 224 ln_use_jattr = .false. 225 ENDIF 226 #endif 211 227 212 228 IF( Agrif_Root() ) THEN ! AGRIF mother: specific setting from jpni and jpnj 229 iiarea = 1 + MOD( narea - 1 , jpni ) 230 ijarea = 1 + ( narea - 1 ) / jpni 231 iirest = 1 + MOD( jpiglo - 2*nn_hls - 1 , jpni ) 232 ijrest = 1 + MOD( jpjglo - 2*nn_hls - 1 , jpnj ) 213 233 #if defined key_nemocice_decomp 214 jpi = ( nx_global+2-2*jpreci + (jpni-1) ) / jpni + 2*jpreci ! first dim. 215 jpj = ( ny_global+2-2*jprecj + (jpnj-1) ) / jpnj + 2*jprecj ! second dim. 234 jpi = ( nx_global+2-2*nn_hls + (jpni-1) ) / jpni + 2*nn_hls ! first dim. 235 jpj = ( ny_global+2-2*nn_hls + (jpnj-1) ) / jpnj + 2*nn_hls ! second dim. 236 jpimax = jpi 237 jpjmax = jpj 238 IF( iiarea == jpni ) jpi = jpiglo - (jpni - 1) * (jpi - 2*nn_hls) 239 IF( ijarea == jpnj ) jpj = jpjglo - (jpnj - 1) * (jpj - 2*nn_hls) 216 240 #else 217 jpi = ( jpiglo -2*jpreci + (jpni-1) ) / jpni + 2*jpreci ! first dim. 218 jpj = ( jpjglo -2*jprecj + (jpnj-1) ) / jpnj + 2*jprecj ! second dim. 219 #endif 220 ENDIF 221 222 !!gm ??? why here it has already been done in line 301 ! 241 jpi = ( jpiglo -2*nn_hls + (jpni-1) ) / jpni + 2*nn_hls ! first dim. 242 jpj = ( jpjglo -2*nn_hls + (jpnj-1) ) / jpnj + 2*nn_hls ! second dim. 243 jpimax = jpi 244 jpjmax = jpj 245 IF( iiarea > iirest ) jpi = jpi - 1 246 IF( ijarea > ijrest ) jpj = jpj - 1 247 #endif 248 ENDIF 249 223 250 jpk = jpkglo ! third dim 224 !!gm end 251 252 #if defined key_agrif 253 ! simple trick to use same vertical grid as parent but different number of levels: 254 ! Save maximum number of levels in jpkglo, then define all vertical grids with this number. 255 ! Suppress once vertical online interpolation is ok 256 IF(.NOT.Agrif_Root()) jpkglo = Agrif_Parent( jpkglo ) 257 #endif 225 258 jpim1 = jpi-1 ! inner domain indices 226 259 jpjm1 = jpj-1 ! " " 227 jpkm1 = jpk-1! " "260 jpkm1 = MAX( 1, jpk-1 ) ! " " 228 261 jpij = jpi*jpj ! jpi x j 229 262 … … 381 414 ! 382 415 IF( numstp /= -1 ) CLOSE( numstp ) ! time-step file 383 IF( num sol /= -1 ) CLOSE( numsol ) ! solverfile416 IF( numrun /= -1 ) CLOSE( numrun ) ! run statistics file 384 417 IF( numnam_ref /= -1 ) CLOSE( numnam_ref ) ! oce reference namelist 385 418 IF( numnam_cfg /= -1 ) CLOSE( numnam_cfg ) ! oce configuration namelist -
branches/2017/dev_r8126_ROBUST08_no_ghost/NEMOGCM/NEMO/SAS_SRC/nemogcm.F90
r8314 r8758 74 74 ! 75 75 #if defined key_agrif 76 CALL Agrif_Init_Grids() ! AGRIF: set the meshes76 CALL Agrif_Init_Grids() ! AGRIF: set the meshes 77 77 #endif 78 78 ! … … 167 167 INTEGER :: ilocal_comm ! local integer 168 168 INTEGER :: ios, inum ! - - 169 INTEGER :: iiarea, ijarea ! local integers 170 INTEGER :: iirest, ijrest ! local integers 169 171 CHARACTER(len=120), DIMENSION(30) :: cltxt, cltxt2, clnam 170 172 CHARACTER(len=80) :: clname … … 220 222 ENDIF 221 223 ! 222 jpk = jpkglo223 !224 #if defined key_agrif225 IF( .NOT. Agrif_Root() ) THEN ! AGRIF children: specific setting (cf. agrif_user.F90)226 jpiglo = nbcellsx + 2 + 2*nbghostcells227 jpjglo = nbcellsy + 2 + 2*nbghostcells228 jpi = ( jpiglo-2*jpreci + (jpni-1+0) ) / jpni + 2*jpreci229 jpj = ( jpjglo-2*jprecj + (jpnj-1+0) ) / jpnj + 2*jprecj230 nperio = 0231 jperio = 0232 ln_use_jattr = .false.233 ENDIF234 #endif235 224 ! 236 225 ! !--------------------------------------------! … … 289 278 #endif 290 279 ENDIF 280 ! 281 #if defined key_agrif 282 IF( .NOT. Agrif_Root() ) THEN ! AGRIF children: specific setting (cf. agrif_user.F90) 283 jpiglo = nbcellsx + 2 + 2*nbghostcells 284 jpjglo = nbcellsy + 2 + 2*nbghostcells 285 jpi = ( jpiglo-2*nn_hls + (jpni-1+0) ) / jpni + 2*nn_hls 286 jpj = ( jpjglo-2*nn_hls + (jpnj-1+0) ) / jpnj + 2*nn_hls 287 jpimax = jpi 288 jpjmax = jpj 289 nperio = 0 290 jperio = 0 291 ln_use_jattr = .false. 292 ENDIF 293 #endif 291 294 292 295 IF( Agrif_Root() ) THEN ! AGRIF mother: specific setting from jpni and jpnj 296 iiarea = 1 + MOD( narea - 1 , jpni ) 297 ijarea = 1 + ( narea - 1 ) / jpni 298 iirest = 1 + MOD( jpiglo - 2*nn_hls - 1 , jpni ) 299 ijrest = 1 + MOD( jpjglo - 2*nn_hls - 1 , jpnj ) 293 300 #if defined key_nemocice_decomp 294 jpi = ( nx_global+2-2*jpreci + (jpni-1) ) / jpni + 2*jpreci ! first dim. 295 jpj = ( ny_global+2-2*jprecj + (jpnj-1) ) / jpnj + 2*jprecj ! second dim. 301 jpi = ( nx_global+2-2*nn_hls + (jpni-1) ) / jpni + 2*nn_hls ! first dim. 302 jpj = ( ny_global+2-2*nn_hls + (jpnj-1) ) / jpnj + 2*nn_hls ! second dim. 303 jpimax = jpi 304 jpjmax = jpj 305 IF( iiarea == jpni ) jpi = jpiglo - (jpni - 1) * (jpi - 2*nn_hls) 306 IF( ijarea == jpnj ) jpj = jpjglo - (jpnj - 1) * (jpj - 2*nn_hls) 296 307 #else 297 jpi = ( jpiglo -2*jpreci + (jpni-1) ) / jpni + 2*jpreci ! first dim. 298 jpj = ( jpjglo -2*jprecj + (jpnj-1) ) / jpnj + 2*jprecj ! second dim. 299 #endif 300 ENDIF 308 jpi = ( jpiglo -2*nn_hls + (jpni-1) ) / jpni + 2*nn_hls ! first dim. 309 jpj = ( jpjglo -2*nn_hls + (jpnj-1) ) / jpnj + 2*nn_hls ! second dim. 310 jpimax = jpi 311 jpjmax = jpj 312 IF( iiarea > iirest ) jpi = jpi - 1 313 IF( ijarea > ijrest ) jpj = jpj - 1 314 #endif 315 ENDIF 316 317 jpk = jpkglo ! third dim 301 318 302 319 #if defined key_agrif … … 676 693 IF ((sxM .gt. sxT) .AND. (sxM .lt. dxT)) THEN 677 694 nsndto = nsndto + 1 678 695 isendto(nsndto) = jn 679 696 ELSEIF ((sxM .le. sxT) .AND. (dxM .ge. dxT)) THEN 680 697 nsndto = nsndto + 1
Note: See TracChangeset
for help on using the changeset viewer.