Changes between Initial Version and Version 1 of ticket/1472_NOC2_JATTR


Ignore:
Timestamp:
2015-02-17T13:39:39+01:00 (6 years ago)
Author:
acc
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • ticket/1472_NOC2_JATTR

    v1 v1  
     1  
     2{{{ 
     3svn copy svn+ssh://acc@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/trunk   \ 
     4         svn+ssh://acc@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/branches/2015/dev_r5087_NOC2_JATTR \ 
     5               -m"#1472. Temporary development branch for testing use of file attributes to control starting j-row from input netcdf files" 
     6 
     7Committed revision 5088. 
     8 
     9svn co svn+ssh://acc@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/branches/2015/dev_r5087_NOC2_JATTR 
     10}}} 
     11 
     12Submit first stage changes (introduces option for bathymetry and coordinates only) 
     13 
     14 
     15{{{ 
     16 svn status 
     17M       CONFIG/SHARED/namelist_ref 
     18M       NEMO/OFF_SRC/nemogcm.F90 
     19M       NEMO/OOO_SRC/nemogcm.F90 
     20M       NEMO/OPA_SRC/DOM/domhgr.F90 
     21M       NEMO/OPA_SRC/DOM/domzgr.F90 
     22M       NEMO/OPA_SRC/IOM/iom.F90 
     23M       NEMO/OPA_SRC/LBC/mppini_2.h90 
     24M       NEMO/OPA_SRC/nemogcm.F90 
     25M       NEMO/OPA_SRC/par_oce.F90 
     26M       NEMO/SAS_SRC/nemogcm.F90 
     27 
     28 
     29svn diff 
     30Index: CONFIG/SHARED/namelist_ref 
     31=================================================================== 
     32--- CONFIG/SHARED/namelist_ref  (revision 5088) 
     33+++ CONFIG/SHARED/namelist_ref  (working copy) 
     34@@ -75,6 +75,8 @@ 
     35                                        !  = 4 cyclic East-West AND North fold T-point pivot 
     36                                        !  = 5 North fold F-point pivot 
     37                                        !  = 6 cyclic East-West AND North fold F-point pivot 
     38+   ln_use_jattr = .false.              !  use (T) the file attribute: open_ocean_jstart, if present  
     39+                                       !  in netcdf input files, as the start j-row for reading 
     40 / 
     41 !----------------------------------------------------------------------- 
     42 &namzgr        !   vertical coordinate 
     43Index: NEMO/OFF_SRC/nemogcm.F90 
     44=================================================================== 
     45--- NEMO/OFF_SRC/nemogcm.F90    (revision 5088) 
     46+++ NEMO/OFF_SRC/nemogcm.F90    (working copy) 
     47@@ -148,7 +148,7 @@ 
     48          &             nn_isplt, nn_jsplt, nn_jctls, nn_jctle,   & 
     49          &             nn_bench, nn_timing 
     50       NAMELIST/namcfg/ cp_cfg, cp_cfz, jp_cfg, jpidta, jpjdta, jpkdta, jpiglo, jpjglo, & 
     51-         &             jpizoom, jpjzoom, jperio 
     52+         &             jpizoom, jpjzoom, jperio, ln_use_jattr 
     53       !!---------------------------------------------------------------------- 
     54       cltxt = '' 
     55       ! 
     56@@ -358,6 +358,7 @@ 
     57          WRITE(numout,*) '      left bottom i index of the zoom (in data domain) jpizoom = ', jpizoom 
     58          WRITE(numout,*) '      left bottom j index of the zoom (in data domain) jpizoom = ', jpjzoom 
     59          WRITE(numout,*) '      lateral cond. type (between 0 and 6) jperio = ', jperio    
     60+         WRITE(numout,*) '      use file attribute if exists as i/p j-start ln_use_jattr = ', ln_use_jattr 
     61       ENDIF 
     62       !                             ! Parameter control 
     63       ! 
     64Index: NEMO/OOO_SRC/nemogcm.F90 
     65=================================================================== 
     66--- NEMO/OOO_SRC/nemogcm.F90    (revision 5088) 
     67+++ NEMO/OOO_SRC/nemogcm.F90    (working copy) 
     68@@ -128,7 +128,7 @@ 
     69          &             nn_isplt, nn_jsplt, nn_jctls, nn_jctle,   & 
     70          &             nn_bench, nn_timing 
     71       NAMELIST/namcfg/ cp_cfg, cp_cfz, jp_cfg, jpidta, jpjdta, jpkdta, jpiglo, jpjglo, & 
     72-         &             jpizoom, jpjzoom, jperio 
     73+         &             jpizoom, jpjzoom, jperio, ln_use_jattr 
     74       !!---------------------------------------------------------------------- 
     75       ! 
     76       cltxt = '' 
     77Index: NEMO/OPA_SRC/DOM/domhgr.F90 
     78=================================================================== 
     79--- NEMO/OPA_SRC/DOM/domhgr.F90 (revision 5088) 
     80+++ NEMO/OPA_SRC/DOM/domhgr.F90 (working copy) 
     81@@ -615,25 +615,25 @@ 
     82        
     83       CALL iom_open( 'coordinates', inum ) 
     84        
     85-      CALL iom_get( inum, jpdom_data, 'glamt', glamt ) 
     86-      CALL iom_get( inum, jpdom_data, 'glamu', glamu ) 
     87-      CALL iom_get( inum, jpdom_data, 'glamv', glamv ) 
     88-      CALL iom_get( inum, jpdom_data, 'glamf', glamf ) 
     89+      CALL iom_get( inum, jpdom_data, 'glamt', glamt, lrowattr=ln_use_jattr ) 
     90+      CALL iom_get( inum, jpdom_data, 'glamu', glamu, lrowattr=ln_use_jattr ) 
     91+      CALL iom_get( inum, jpdom_data, 'glamv', glamv, lrowattr=ln_use_jattr ) 
     92+      CALL iom_get( inum, jpdom_data, 'glamf', glamf, lrowattr=ln_use_jattr ) 
     93        
     94-      CALL iom_get( inum, jpdom_data, 'gphit', gphit ) 
     95-      CALL iom_get( inum, jpdom_data, 'gphiu', gphiu ) 
     96-      CALL iom_get( inum, jpdom_data, 'gphiv', gphiv ) 
     97-      CALL iom_get( inum, jpdom_data, 'gphif', gphif ) 
     98+      CALL iom_get( inum, jpdom_data, 'gphit', gphit, lrowattr=ln_use_jattr ) 
     99+      CALL iom_get( inum, jpdom_data, 'gphiu', gphiu, lrowattr=ln_use_jattr ) 
     100+      CALL iom_get( inum, jpdom_data, 'gphiv', gphiv, lrowattr=ln_use_jattr ) 
     101+      CALL iom_get( inum, jpdom_data, 'gphif', gphif, lrowattr=ln_use_jattr ) 
     102        
     103-      CALL iom_get( inum, jpdom_data, 'e1t', e1t ) 
     104-      CALL iom_get( inum, jpdom_data, 'e1u', e1u ) 
     105-      CALL iom_get( inum, jpdom_data, 'e1v', e1v ) 
     106-      CALL iom_get( inum, jpdom_data, 'e1f', e1f ) 
     107+      CALL iom_get( inum, jpdom_data, 'e1t', e1t, lrowattr=ln_use_jattr ) 
     108+      CALL iom_get( inum, jpdom_data, 'e1u', e1u, lrowattr=ln_use_jattr ) 
     109+      CALL iom_get( inum, jpdom_data, 'e1v', e1v, lrowattr=ln_use_jattr ) 
     110+      CALL iom_get( inum, jpdom_data, 'e1f', e1f, lrowattr=ln_use_jattr ) 
     111        
     112-      CALL iom_get( inum, jpdom_data, 'e2t', e2t ) 
     113-      CALL iom_get( inum, jpdom_data, 'e2u', e2u ) 
     114-      CALL iom_get( inum, jpdom_data, 'e2v', e2v ) 
     115-      CALL iom_get( inum, jpdom_data, 'e2f', e2f ) 
     116+      CALL iom_get( inum, jpdom_data, 'e2t', e2t, lrowattr=ln_use_jattr ) 
     117+      CALL iom_get( inum, jpdom_data, 'e2u', e2u, lrowattr=ln_use_jattr ) 
     118+      CALL iom_get( inum, jpdom_data, 'e2v', e2v, lrowattr=ln_use_jattr ) 
     119+      CALL iom_get( inum, jpdom_data, 'e2f', e2f, lrowattr=ln_use_jattr ) 
     120        
     121       CALL iom_close( inum ) 
     122        
     123Index: NEMO/OPA_SRC/DOM/domzgr.F90 
     124=================================================================== 
     125--- NEMO/OPA_SRC/DOM/domzgr.F90 (revision 5088) 
     126+++ NEMO/OPA_SRC/DOM/domzgr.F90 (working copy) 
     127@@ -533,7 +533,11 @@ 
     128          ENDIF 
     129          IF( ln_zps .OR. ln_sco )   THEN              ! zps or sco : read meter bathymetry 
     130             CALL iom_open ( 'bathy_meter.nc', inum )  
     131-            CALL iom_get  ( inum, jpdom_data, 'Bathymetry', bathy ) 
     132+            IF ( ln_isfcav ) THEN 
     133+               CALL iom_get  ( inum, jpdom_data, 'Bathymetry_isf', bathy, lrowattr=.false. ) 
     134+            ELSE 
     135+               CALL iom_get  ( inum, jpdom_data, 'Bathymetry'    , bathy, lrowattr=ln_use_jattr  ) 
     136+            END IF 
     137             CALL iom_close( inum ) 
     138             !   
     139             risfdep(:,:)=0._wp          
     140Index: NEMO/OPA_SRC/IOM/iom.F90 
     141=================================================================== 
     142--- NEMO/OPA_SRC/IOM/iom.F90    (revision 5088) 
     143+++ NEMO/OPA_SRC/IOM/iom.F90    (working copy) 
     144@@ -542,7 +542,7 @@ 
     145       ENDIF 
     146    END SUBROUTINE iom_g1d 
     147  
     148-   SUBROUTINE iom_g2d( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount ) 
     149+   SUBROUTINE iom_g2d( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount, lrowattr ) 
     150       INTEGER         , INTENT(in   )                           ::   kiomid    ! Identifier of the file 
     151       INTEGER         , INTENT(in   )                           ::   kdom      ! Type of domain to be read 
     152       CHARACTER(len=*), INTENT(in   )                           ::   cdvar     ! Name of the variable 
     153@@ -550,14 +550,19 @@ 
     154       INTEGER         , INTENT(in   )                , OPTIONAL ::   ktime     ! record number 
     155       INTEGER         , INTENT(in   ), DIMENSION(2)  , OPTIONAL ::   kstart    ! start axis position of the reading  
     156       INTEGER         , INTENT(in   ), DIMENSION(2)  , OPTIONAL ::   kcount    ! number of points in each axis 
     157+      LOGICAL         , INTENT(in   )                , OPTIONAL ::   lrowattr  ! logical flag telling iom_get to 
     158+                                                                               ! look for and use a file attribute 
     159+                                                                               ! called open_ocean_startj to set the start 
     160+                                                                               ! value for the 2nd dimension (netcdf only) 
     161       ! 
     162       IF( kiomid > 0 ) THEN 
     163          IF( iom_file(kiomid)%nfid > 0 ) CALL iom_get_123d( kiomid, kdom       , cdvar        , pv_r2d=pvar,   & 
     164-              &                                                     ktime=ktime, kstart=kstart, kcount=kcount ) 
     165+              &                                                     ktime=ktime, kstart=kstart, kcount=kcount, & 
     166+              &                                                     lrowattr=lrowattr ) 
     167       ENDIF 
     168    END SUBROUTINE iom_g2d 
     169  
     170-   SUBROUTINE iom_g3d( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount ) 
     171+   SUBROUTINE iom_g3d( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount, lrowattr ) 
     172       INTEGER         , INTENT(in   )                             ::   kiomid    ! Identifier of the file 
     173       INTEGER         , INTENT(in   )                             ::   kdom      ! Type of domain to be read 
     174       CHARACTER(len=*), INTENT(in   )                             ::   cdvar     ! Name of the variable 
     175@@ -565,17 +570,23 @@ 
     176       INTEGER         , INTENT(in   )                  , OPTIONAL ::   ktime     ! record number 
     177       INTEGER         , INTENT(in   ), DIMENSION(3)    , OPTIONAL ::   kstart    ! start axis position of the reading  
     178       INTEGER         , INTENT(in   ), DIMENSION(3)    , OPTIONAL ::   kcount    ! number of points in each axis 
     179+      LOGICAL         , INTENT(in   )                  , OPTIONAL ::   lrowattr  ! logical flag telling iom_get to 
     180+                                                                                 ! look for and use a file attribute 
     181+                                                                                 ! called open_ocean_startj to set the start 
     182+                                                                                 ! value for the 2nd dimension (netcdf only) 
     183       ! 
     184       IF( kiomid > 0 ) THEN 
     185          IF( iom_file(kiomid)%nfid > 0 ) CALL iom_get_123d( kiomid, kdom       , cdvar        , pv_r3d=pvar,   & 
     186-              &                                                     ktime=ktime, kstart=kstart, kcount=kcount ) 
     187+              &                                                     ktime=ktime, kstart=kstart, kcount=kcount, & 
     188+              &                                                     lrowattr=lrowattr ) 
     189       ENDIF 
     190    END SUBROUTINE iom_g3d 
     191    !!---------------------------------------------------------------------- 
     192  
     193    SUBROUTINE iom_get_123d( kiomid, kdom  , cdvar ,   & 
     194          &                  pv_r1d, pv_r2d, pv_r3d,   & 
     195-         &                  ktime , kstart, kcount  ) 
     196+         &                  ktime , kstart, kcount,   & 
     197+         &                  lrowattr                ) 
     198       !!----------------------------------------------------------------------- 
     199       !!                  ***  ROUTINE  iom_get_123d  *** 
     200       !! 
     201@@ -592,8 +603,14 @@ 
     202       INTEGER                    , INTENT(in   ), OPTIONAL ::   ktime      ! record number 
     203       INTEGER , DIMENSION(:)     , INTENT(in   ), OPTIONAL ::   kstart     ! start position of the reading in each axis  
     204       INTEGER , DIMENSION(:)     , INTENT(in   ), OPTIONAL ::   kcount     ! number of points to be read in each axis 
     205+      LOGICAL                    , INTENT(in   ), OPTIONAL ::   lrowattr   ! logical flag telling iom_get to 
     206+                                                                           ! look for and use a file attribute 
     207+                                                                           ! called open_ocean_startj to set the start 
     208+                                                                           ! value for the 2nd dimension (netcdf only) 
     209       ! 
     210       LOGICAL                        ::   llnoov      ! local definition to read overlap 
     211+      LOGICAL                        ::   luse_jattr  ! local definition to read open_ocean_startj file attribute 
     212+      INTEGER                        ::   jstartrow   ! start point for 2nd dimension optionally set by file attribute 
     213       INTEGER                        ::   jl          ! loop on number of dimension  
     214       INTEGER                        ::   idom        ! type of domain 
     215       INTEGER                        ::   idvar       ! id of the variable 
     216@@ -603,7 +620,7 @@ 
     217       INTEGER                        ::   istop       ! temporary value of nstop 
     218       INTEGER                        ::   ix1, ix2, iy1, iy2   ! subdomain indexes 
     219       INTEGER                        ::   ji, jj      ! loop counters 
     220-      INTEGER                        ::   irankpv       !  
     221+      INTEGER                        ::   irankpv     !  
     222       INTEGER                        ::   ind1, ind2  ! substring index 
     223       INTEGER, DIMENSION(jpmax_dims) ::   istart      ! starting point to read for each axis 
     224       INTEGER, DIMENSION(jpmax_dims) ::   icnt        ! number of value to read along each axis  
     225@@ -628,6 +645,23 @@ 
     226       IF( PRESENT(kstart) .AND. (.NOT. PRESENT(kcount)) ) CALL ctl_stop(trim(clinfo), 'kstart present needs kcount present') 
     227       IF( PRESENT(kstart) .AND. idom /= jpdom_unknown   ) CALL ctl_stop(trim(clinfo), 'kstart present needs kdom = jpdom_unknown') 
     228  
     229+      luse_jattr = .false. 
     230+      IF( PRESENT(lrowattr) ) THEN 
     231+         IF( lrowattr .AND. idom /= jpdom_data   ) CALL ctl_stop(trim(clinfo), 'lrowattr present and true needs kdom = jpdom_data') 
     232+         IF( lrowattr .AND. idom == jpdom_data   ) luse_jattr = .true. 
     233+      ENDIF 
     234+      IF( luse_jattr ) THEN 
     235+         SELECT CASE (iom_file(kiomid)%iolib) 
     236+         CASE (jpioipsl, jprstdimg ) 
     237+             CALL ctl_warn(trim(clinfo), 'lrowattr present and true but this only works with netcdf (jpnf90)') 
     238+             luse_jattr = .false. 
     239+         CASE (jpnf90   )    
     240+             ! Ok 
     241+         CASE DEFAULT     
     242+            CALL ctl_stop( TRIM(clinfo)//' accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 
     243+         END SELECT 
     244+      ENDIF 
     245+ 
     246       ! Search for the variable in the data base (eventually actualize data) 
     247       istop = nstop 
     248       idvar = iom_varid( kiomid, cdvar ) 
     249@@ -700,8 +734,14 @@ 
     250             IF(           idom == jpdom_unknown ) THEN                                       ; icnt(1:idmspc) = idimsz(1:idmspc) 
     251             ELSE  
     252                IF( .NOT. PRESENT(pv_r1d) ) THEN   !   not a 1D array 
     253-                  IF(     idom == jpdom_data    ) THEN ; istart(1:2) = (/ mig(1), mjg(1) /)  ! icnt(1:2) done bellow 
     254-                  ELSEIF( idom == jpdom_global  ) THEN ; istart(1:2) = (/ nimpp , njmpp  /)  ! icnt(1:2) done bellow 
     255+                  IF(     idom == jpdom_data    ) THEN 
     256+                     jstartrow = 1 
     257+                     IF( luse_jattr ) THEN 
     258+                        CALL iom_getatt(kiomid, 'open_ocean_startj', jstartrow ) ! -999 is returned if the attribute is not found 
     259+                        jstartrow = MAX(1,jstartrow) 
     260+                     ENDIF 
     261+                     istart(1:2) = (/ mig(1), mjg(1) + jstartrow - 1 /)  ! icnt(1:2) done below 
     262+                  ELSEIF( idom == jpdom_global  ) THEN ; istart(1:2) = (/ nimpp , njmpp  /)  ! icnt(1:2) done below 
     263                   ENDIF 
     264                   ! we do not read the overlap                     -> we start to read at nldi, nldj 
     265 ! JMM + SM: ugly patch before getting the new version of lib_mpp) 
     266Index: NEMO/OPA_SRC/LBC/mppini_2.h90 
     267=================================================================== 
     268--- NEMO/OPA_SRC/LBC/mppini_2.h90       (revision 5088) 
     269+++ NEMO/OPA_SRC/LBC/mppini_2.h90       (working copy) 
     270@@ -44,6 +44,7 @@ 
     271       INTEGER :: ji, jj, jn, jproc, jarea     ! dummy loop indices 
     272       INTEGER ::  inum                        ! temporary logical unit 
     273       INTEGER ::  idir                        ! temporary integers 
     274+      INTEGER ::  jstartrow                   ! temporary integers 
     275       INTEGER ::   ios                        ! Local integer output status for namelist read 
     276       INTEGER ::   & 
     277          ii, ij, ifreq, il1, il2,          &  ! temporary integers 
     278@@ -99,13 +100,26 @@ 
     279  
     280       ! open the file 
     281       ! Remember that at this level in the code, mpp is not yet initialized, so 
     282-      ! the file must be open with jpdom_unknown, and kstart amd kcount forced  
     283+      ! the file must be open with jpdom_unknown, and kstart and kcount forced  
     284+      jstartrow = 1 
     285       IF ( ln_zco ) THEN  
     286          CALL iom_open ( 'bathy_level.nc', inum )   ! Level bathymetry 
     287-         CALL iom_get ( inum, jpdom_unknown, 'Bathy_level', zdta, kstart=(/jpizoom,jpjzoom/), kcount=(/jpiglo,jpjglo/) ) 
     288+          ! Optionally use a file attribute (open_ocean_startj) to set a start row for reading from the global file 
     289+          ! This allows the unextended grid bathymetry to be stored in the same file as the under ice-shelf extended bathymetry 
     290+         CALL iom_getatt(inum, 'open_ocean_startj', jstartrow ) ! -999 is returned if the attribute is not found 
     291+         jstartrow = MAX(1,jstartrow) 
     292+         CALL iom_get ( inum, jpdom_unknown, 'Bathy_level', zdta, kstart=(/jpizoom,jpjzoom+jstartrow-1/), kcount=(/jpiglo,jpjglo/) ) 
     293       ELSE 
     294          CALL iom_open ( 'bathy_meter.nc', inum )   ! Meter bathy in case of partial steps 
     295-         CALL iom_get ( inum, jpdom_unknown, 'Bathymetry' , zdta, kstart=(/jpizoom,jpjzoom/), kcount=(/jpiglo,jpjglo/) ) 
     296+         IF ( ln_isfcav ) THEN 
     297+             CALL iom_get ( inum, jpdom_unknown, 'Bathymetry_isf' , zdta, kstart=(/jpizoom,jpjzoom/), kcount=(/jpiglo,jpjglo/) ) 
     298+         ELSE 
     299+             ! Optionally use a file attribute (open_ocean_startj) to set a start row for reading from the global file 
     300+             ! This allows the unextended grid bathymetry to be stored in the same file as the under ice-shelf extended bathymetry 
     301+             CALL iom_getatt(inum, 'open_ocean_startj', jstartrow ) ! -999 is returned if the attribute is not found 
     302+             jstartrow = MAX(1,jstartrow) 
     303+             CALL iom_get ( inum, jpdom_unknown, 'Bathymetry' , zdta, kstart=(/jpizoom,jpjzoom+jstartrow-1/), kcount=(/jpiglo,jpjglo/) ) 
     304+         ENDIF 
     305       ENDIF 
     306       CALL iom_close (inum) 
     307        
     308Index: NEMO/OPA_SRC/nemogcm.F90 
     309=================================================================== 
     310--- NEMO/OPA_SRC/nemogcm.F90    (revision 5088) 
     311+++ NEMO/OPA_SRC/nemogcm.F90    (working copy) 
     312@@ -221,7 +221,7 @@ 
     313          &             nn_isplt, nn_jsplt, nn_jctls, nn_jctle,   & 
     314          &             nn_bench, nn_timing 
     315       NAMELIST/namcfg/ cp_cfg, cp_cfz, jp_cfg, jpidta, jpjdta, jpkdta, jpiglo, jpjglo, & 
     316-         &             jpizoom, jpjzoom, jperio 
     317+         &             jpizoom, jpjzoom, jperio, ln_use_jattr 
     318       !!---------------------------------------------------------------------- 
     319       ! 
     320       cltxt = '' 
     321@@ -260,6 +260,7 @@ 
     322       jpjzoom = 1 
     323       nperio  = 0 
     324       jperio  = 0 
     325+      ln_use_jattr = .false. 
     326    ENDIF 
     327 #endif 
     328       ! 
     329@@ -505,6 +506,7 @@ 
     330          WRITE(numout,*) '      left bottom i index of the zoom (in data domain) jpizoom = ', jpizoom 
     331          WRITE(numout,*) '      left bottom j index of the zoom (in data domain) jpizoom = ', jpjzoom 
     332          WRITE(numout,*) '      lateral cond. type (between 0 and 6) jperio = ', jperio    
     333+         WRITE(numout,*) '      use file attribute if exists as i/p j-start ln_use_jattr = ', ln_use_jattr 
     334       ENDIF 
     335       !                             ! Parameter control 
     336       ! 
     337Index: NEMO/OPA_SRC/par_oce.F90 
     338=================================================================== 
     339--- NEMO/OPA_SRC/par_oce.F90    (revision 5088) 
     340+++ NEMO/OPA_SRC/par_oce.F90    (working copy) 
     341@@ -52,6 +52,13 @@ 
     342    !                                       !  = 5 North fold F-point pivot 
     343    !                                       !  = 6 cyclic East-West AND North fold F-point pivot 
     344  
     345+   ! Input file read offset 
     346+   LOGICAL       ::   ln_use_jattr     !: Use file global attribute: open_ocean_jstart to determine start j-row  
     347+                                           ! when reading input from those netcdf files that have the  
     348+                                           ! attribute defined. This is designed to enable input files associated  
     349+                                           ! with the extended grids used in the under ice shelf configurations to  
     350+                                           ! be used without redundant rows when the ice shelves are not in use. 
     351+ 
     352    !!  Values set to pp_not_used indicates that this parameter is not used in THIS config. 
     353    !!  Values set to pp_to_be_computed  indicates that variables will be computed in domzgr 
     354    REAL(wp)      ::   pp_not_used       = 999999._wp   !: vertical grid parameter 
     355Index: NEMO/SAS_SRC/nemogcm.F90 
     356=================================================================== 
     357--- NEMO/SAS_SRC/nemogcm.F90    (revision 5088) 
     358+++ NEMO/SAS_SRC/nemogcm.F90    (working copy) 
     359@@ -160,7 +160,7 @@ 
     360          &             nn_isplt, nn_jsplt, nn_jctls, nn_jctle,   & 
     361          &             nn_bench, nn_timing 
     362       NAMELIST/namcfg/ cp_cfg, cp_cfz, jp_cfg, jpidta, jpjdta, jpkdta, jpiglo, jpjglo, & 
     363-         &             jpizoom, jpjzoom, jperio 
     364+         &             jpizoom, jpjzoom, jperio, ln_use_jattr 
     365       !!---------------------------------------------------------------------- 
     366       cltxt = '' 
     367       ! 
     368@@ -347,6 +347,7 @@ 
     369          WRITE(numout,*) '      left bottom i index of the zoom (in data domain) jpizoom = ', jpizoom 
     370          WRITE(numout,*) '      left bottom j index of the zoom (in data domain) jpizoom = ', jpjzoom 
     371          WRITE(numout,*) '      lateral cond. type (between 0 and 6) jperio = ', jperio    
     372+         WRITE(numout,*) '      use file attribute if exists as i/p j-start ln_use_jattr = ', ln_use_jattr 
     373       ENDIF 
     374       !                             ! Parameter control 
     375       ! 
     376}}}