[cdftools] 180/228: JMM+MB : merging improvements/modifications from Magdalena Balmaseda (ECMWF)

Alastair McKinstry mckinstry at moszumanska.debian.org
Fri Jun 12 08:21:47 UTC 2015


This is an automated email from the git hooks/post-receive script.

mckinstry pushed a commit to branch master
in repository cdftools.

commit 6f211f5b82d7cf431a76e5ef2a1d42e428e73d12
Author: molines <molines at 1055176f-818a-41d9-83e1-73fbe5b947c5>
Date:   Fri Nov 2 19:55:03 2012 +0000

    JMM+MB : merging improvements/modifications from Magdalena Balmaseda (ECMWF)
    
    
    git-svn-id: http://servforge.legi.grenoble-inp.fr/svn/CDFTOOLS/trunk@628 1055176f-818a-41d9-83e1-73fbe5b947c5
---
 cdfio.f90       | 93 ++++++++++++++++++++++++++++++++++++---------------------
 cdfmhst.f90     |  2 +-
 cdfmoc.f90      | 70 ++++++++++++++++++++++++++++++++++++++-----
 cdfvT.f90       | 20 ++++++++-----
 modcdfnames.f90 |  1 +
 modutils.f90    | 15 ++++++++--
 6 files changed, 149 insertions(+), 52 deletions(-)

diff --git a/cdfio.f90 b/cdfio.f90
index 269da2c..b00e0d5 100644
--- a/cdfio.f90
+++ b/cdfio.f90
@@ -200,7 +200,7 @@ CONTAINS
   END FUNCTION copyatt
 
 
-  INTEGER(KIND=4) FUNCTION create( cdfile, cdfilref ,kx,ky,kz ,cdep, cdepvar)
+  INTEGER(KIND=4) FUNCTION create( cdfile, cdfilref ,kx,ky,kz ,cdep, cdepvar, ld_xycoo)
     !!---------------------------------------------------------------------
     !!                  ***  FUNCTION create  ***
     !!
@@ -215,10 +215,12 @@ CONTAINS
     CHARACTER(LEN=*), OPTIONAL, INTENT(in) :: cdep    ! name of vertical dim name if not standard
     CHARACTER(LEN=*), OPTIONAL, INTENT(in) :: cdepvar ! name of vertical var name if it differs
                                                       ! from vertical dimension name
-  
+    LOGICAL,          OPTIONAL, INTENT(in) :: ld_xycoo ! if false then DO NOT read nav_lat nav_lat from input file
+
     INTEGER(KIND=4)               :: istatus, icout, incid, idum
     INTEGER(KIND=4) ,DIMENSION(4) :: invdim
     CHARACTER(LEN=256)            :: cldep, cldepref, cldepvar
+    LOGICAL                       :: ll_xycoo
     !!----------------------------------------------------------------------
     istatus = NF90_CREATE(cdfile,cmode=or(NF90_CLOBBER,NF90_64BIT_OFFSET), ncid=icout)
     istatus = NF90_DEF_DIM(icout, cn_x, kx, nid_x)
@@ -253,11 +255,18 @@ CONTAINS
        incid = -9999
     ENDIF
 
+    IF (PRESENT (ld_xycoo) ) THEN
+      ll_xycoo = ld_xycoo
+    ELSE
+      ll_xycoo = .true.
+    ENDIF 
     ! define variables and copy attributes
-    istatus = NF90_DEF_VAR(icout,cn_vlon2d,NF90_FLOAT,(/nid_x, nid_y/), nid_lon)
-    istatus = copyatt(cn_vlon2d, nid_lon,incid,icout)
-    istatus = NF90_DEF_VAR(icout,cn_vlat2d,NF90_FLOAT,(/nid_x, nid_y/), nid_lat)
-    istatus = copyatt(cn_vlat2d, nid_lat,incid,icout)
+    IF ( ll_xycoo ) THEN
+       istatus = NF90_DEF_VAR(icout,cn_vlon2d,NF90_FLOAT,(/nid_x, nid_y/), nid_lon)
+       istatus = copyatt(cn_vlon2d, nid_lon,incid,icout)
+       istatus = NF90_DEF_VAR(icout,cn_vlat2d,NF90_FLOAT,(/nid_x, nid_y/), nid_lat)
+       istatus = copyatt(cn_vlat2d, nid_lat,incid,icout)
+    ENDIF
     IF ( kz /= 0 ) THEN
        istatus = NF90_DEF_VAR(icout,TRIM(cldepvar),NF90_FLOAT,(/nid_z/), nid_dep)
        ! JMM bug fix : if cdep present, then chose attribute from cldepref
@@ -1699,7 +1708,7 @@ CONTAINS
   END FUNCTION getvare3
 
 
-  INTEGER(KIND=4) FUNCTION putheadervar(kout, cdfile, kpi, kpj, kpk, pnavlon, pnavlat , pdep, cdep)
+  INTEGER(KIND=4) FUNCTION putheadervar(kout, cdfile, kpi, kpj, kpk, pnavlon, pnavlat , pdep, cdep, ld_xycoo)
     !!---------------------------------------------------------------------
     !!                  ***  FUNCTION  putheadervar  ***
     !!
@@ -1720,6 +1729,7 @@ CONTAINS
     CHARACTER(LEN=*),                           INTENT(in) :: cdfile   ! file from where the headers will be copied
     INTEGER(KIND=4),                            INTENT(in) :: kpi, kpj ! dimension of nav_lon (kpi,kpj)
     INTEGER(KIND=4),                            INTENT(in) :: kpk      ! dimension of depht(kpk)
+    LOGICAL,      OPTIONAL,                     INTENT(in) :: ld_xycoo ! option to put yx info
     REAL(KIND=4), OPTIONAL, DIMENSION(kpi,kpj), INTENT(in) :: pnavlon  ! array provided optionaly to overrid the
     REAL(KIND=4), OPTIONAL, DIMENSION(kpi,kpj), INTENT(in) :: pnavlat  ! corresponding arrays in cdfile 
     REAL(KIND=4), OPTIONAL, DIMENSION(kpk),     INTENT(in) :: pdep     ! dep array if not on cdfile
@@ -1731,36 +1741,46 @@ CONTAINS
     REAL(KIND=4), DIMENSION(kpk)              :: z1d
     CHARACTER(LEN=256), DIMENSION(jpdep )     :: cldept= (/'deptht ','depthu ','depthv ','depthw ','nav_lev','z      '/)
     CHARACTER(LEN=256)                        :: cldep
+    LOGICAL                                   :: ll_xycoo
     !!----------------------------------------------------------------------
-    ALLOCATE ( z2d (kpi,kpj) )
-    
+    IF (PRESENT(ld_xycoo) ) THEN 
+      ll_xycoo = ld_xycoo
+    ELSE
+      ll_xycoo = .true.
+    ENDIF
+
     cldept = (/cn_vdeptht, cn_vdepthu, cn_vdepthv, cn_vdepthw,'nav_lev','z      '/)
 
-    IF (PRESENT(pnavlon) ) THEN 
-       z2d = pnavlon
-    ELSE
-       IF ( chkvar ( cdfile, cn_vlon2d )) THEN
-         PRINT *, '... dummy value used!'
-         z2d = 0.
+    IF ( ll_xycoo  ) THEN   
+       ALLOCATE ( z2d (kpi,kpj) )
+   
+       IF (PRESENT(pnavlon) ) THEN 
+          z2d = pnavlon
        ELSE
-         z2d=getvar(cdfile,cn_vlon2d, 1,kpi,kpj)
+          IF ( chkvar ( cdfile, cn_vlon2d )) THEN
+            PRINT *, '... dummy value used!'
+            z2d = 0.
+          ELSE
+            z2d=getvar(cdfile,cn_vlon2d, 1,kpi,kpj)
+          ENDIF
        ENDIF
-    ENDIF
-    istatus = putvar(kout, nid_lon,z2d,1,kpi,kpj)
-
-    IF (PRESENT(pnavlat) ) THEN
-       z2d = pnavlat
-    ELSE
-       IF ( chkvar ( cdfile, cn_vlat2d )) THEN
-         PRINT *, '... dummy value used!'
-         z2d = 0.
+       istatus = putvar(kout, nid_lon,z2d,1,kpi,kpj)
+   
+       IF (PRESENT(pnavlat) ) THEN
+          z2d = pnavlat
        ELSE
-         z2d=getvar(cdfile,cn_vlat2d, 1,kpi,kpj)
+          IF ( chkvar ( cdfile, cn_vlat2d )) THEN
+            PRINT *, '... dummy value used!'
+            z2d = 0.
+          ELSE
+            z2d=getvar(cdfile,cn_vlat2d, 1,kpi,kpj)
+          ENDIF
        ENDIF
+   
+       istatus = putvar(kout, nid_lat,z2d,1,kpi,kpj)
+       DEALLOCATE (z2d)
     ENDIF
 
-    istatus = putvar(kout, nid_lat,z2d,1,kpi,kpj)
-
     IF (kpk /= 0 ) THEN
        IF (PRESENT(pdep) ) THEN
           z1d = pdep
@@ -1789,8 +1809,6 @@ CONTAINS
 
     putheadervar=istatus
 
-    DEALLOCATE (z2d)
-
   END FUNCTION putheadervar
 
 
@@ -2274,7 +2292,7 @@ CONTAINS
 
   END SUBROUTINE gettimeseries
 
-  LOGICAL FUNCTION chkfile (cd_file) 
+  LOGICAL FUNCTION chkfile (cd_file, ld_verbose ) 
     !!---------------------------------------------------------------------
     !!                  ***  FUNCTION chkfile  ***
     !!
@@ -2286,17 +2304,24 @@ CONTAINS
     !!              IF ( chkfile( cf_toto) ) STOP  ! missing file
     !!
     !!----------------------------------------------------------------------
-    CHARACTER(LEN=*), INTENT(in) :: cd_file
+    CHARACTER(LEN=*),  INTENT(in) :: cd_file
+    LOGICAL, OPTIONAL, INTENT(in) :: ld_verbose
 
-    LOGICAL                      :: ll_exist
+    LOGICAL                      :: ll_exist, ll_verbose
     !!----------------------------------------------------------------------
+    IF ( PRESENT(ld_verbose) ) THEN
+       ll_verbose = ld_verbose
+    ELSE
+       ll_verbose = .TRUE.
+    ENDIF
+
     IF ( TRIM(cd_file) /= 'none')  THEN 
        INQUIRE (file = TRIM(cd_file), EXIST=ll_exist)
 
        IF (ll_exist) THEN
           chkfile = .false.
        ELSE
-          PRINT *, ' File ',TRIM(cd_file),' is missing '
+          IF ( ll_verbose ) PRINT *, ' File ',TRIM(cd_file),' is missing '
           chkfile = .true.
        ENDIF
     ELSE  
diff --git a/cdfmhst.f90 b/cdfmhst.f90
index a9ebccc..d986662 100644
--- a/cdfmhst.f90
+++ b/cdfmhst.f90
@@ -120,7 +120,7 @@ PROGRAM cdfmhst
      PRINT *,'                     [ ', TRIM(cv_zomst),cbasin(1),' : Meridional Salt Transport (global) ] '
      PRINT *,'       If ',TRIM(cn_fbasins),' is available, per basin meridional transport '
      PRINT *,'       are also available:' 
-              DO jbasins=2, 5
+              DO jbasins=2, 6
      PRINT *,'                       ', TRIM(cv_zomht),cbasin(jbasins),' : Meridional Heat Transport'
      PRINT *,'                     [ ', TRIM(cv_zomst),cbasin(jbasins),' : Meridional Salt Transport ]'
               END DO
diff --git a/cdfmoc.f90 b/cdfmoc.f90
index c392b56..75d3e74 100644
--- a/cdfmoc.f90
+++ b/cdfmoc.f90
@@ -12,15 +12,17 @@ PROGRAM cdfmoc
   !!               is performed (this is adequate for a basin configuration).
   !!               In new_maskglo.nc the masking corresponds to the global
   !!               configuration. MOC for Global, Atlantic, Indo-Pacific, 
-  !!               Indian, Pacific ocean.
+  !!               Indian, Pacific ocean, inp0=Global-Atlantic
   !!               Results are saved on moc.nc file with variables name 
-  !!               respectively zomsfglo, zomsfatl, zomsfinp, zomsfind, zomsfpac
+  !!               respectively zomsfglo, zomsfatl, zomsfinp, zomsfind, zomsfpac, zomsinp0
   !!
   !! History : 2.1  : 07/2005  : J.M. Molines  : Original code
   !!                : 04/2006  : A.M. Treguier : Adaptation to NATL4 case
   !!                : 09/2007  : G. Smith      : MOC decomposition
   !!                : 01/2008  : A. Lecointre  : MOC decomposition adaptation 
   !!           3.0  : 03/2011  : J.M. Molines  : Merge all MOC prog, Doctor norm + Lic.
+  !!                : 10/2012  : M.A. Balmaseda: it adds basin INP0=GLOBAL-ATL, different from INP.            : Avoid 3d variables in e3v
+  !!         
   !!
   !! References :  For MOC decomposition : Lee & Marotzke (1998), 
   !!               Baehr, Hirschi, Beismann &  Marotzke (2004),
@@ -44,12 +46,12 @@ PROGRAM cdfmoc
 
   INTEGER(KIND=2), DIMENSION(:,:,:), ALLOCATABLE :: ibmask       !  nbasins x npiglo x npjglo
   INTEGER(KIND=2), DIMENSION(:,:), ALLOCATABLE :: ivmask         ! ivmask (used to mask e3v)
-
-  INTEGER(KIND=4)                             :: npglo, npatl, npinp
+  INTEGER(KIND=4)                             :: npglo, npatl, npinp, npinp0
   INTEGER(KIND=4)                             :: npind, nppac
   INTEGER(KIND=4)                             :: jbasin, jj, jk  ! dummy loop index
   INTEGER(KIND=4)                             :: ji, jt          ! dummy loop index
   INTEGER(KIND=4)                             :: nbasins, ibasin ! number of sub basins
+  INTEGER(KIND=4)                             :: nbasinso        ! number of sub output basins nbasins+1 to include INDP0
   INTEGER(KIND=4)                             :: ierr            ! working integer
   INTEGER(KIND=4)                             :: narg, iargc     ! command line browser
   INTEGER(KIND=4)                             :: ijarg, ii       !  "             "
@@ -157,6 +159,7 @@ PROGRAM cdfmoc
      PRINT *,'       variables ',TRIM( cn_zomsfinp),' : Indo Pacific '
      PRINT *,'       variables ',TRIM( cn_zomsfind),' : Indian Ocean alone'
      PRINT *,'       variables ',TRIM( cn_zomsfpac),' : Pacific Ocean alone'
+     PRINT *,'       variables ',TRIM( cn_zomsfinp0),' : Indo Pacific Net'
      PRINT *,'      '
      PRINT *,'       If decomposition is required , ( option -decomp ) add 3 additional'
      PRINT *,'       variables per basin with suffixes _sh, _bt, _ag.'
@@ -224,14 +227,16 @@ PROGRAM cdfmoc
 
   IF (lbas) THEN
      nbasins = 5
+     nbasinso= 6
   ELSE
      nbasins = 1
+     nbasinso= 1
   ENDIF
 
   IF ( ldec ) THEN
-     nvarout=nbasins * 4   ! total, _sh, _bt, _ag
+     nvarout=nbasinso * 4   ! total, _sh, _bt, _ag
   ELSE
-     nvarout=nbasins       ! total
+     nvarout=nbasinso       ! total
   ENDIF
 
   ALLOCATE ( stypvar(nvarout), ipk(nvarout), id_varout(nvarout) )
@@ -372,6 +377,31 @@ PROGRAM cdfmoc
         stypvar(ii)%cname       = TRIM(cn_zomsfpac)//'_ag'
         stypvar(ii)%clong_name  = 'Ageostroph_Merid_StreamFunction_Pacif'
         stypvar(ii)%cshort_name = TRIM(cn_zomsfpac)//'_ag'
+        ii=ii+1
+     ENDIF
+
+     npinp0=ibasin  ; ibasin = ibasin + 1
+     PRINT *, 'Variable ',ii,' is zomsfinp0'
+     stypvar(ii)%cname       = TRIM(cn_zomsfinp0)
+     stypvar(ii)%clong_name  = 'Meridional_Overt.Cell_IndPac0'
+     stypvar(ii)%cshort_name = TRIM(cn_zomsfinp0)
+     ii= ii+1
+
+     IF ( ldec ) THEN
+        PRINT *, 'Variable ',ii,' is zomsfinp0_sh'
+        stypvar(ii)%cname       = TRIM(cn_zomsfinp0)//'_sh'
+        stypvar(ii)%clong_name  = 'GeoShear_Merid_StreamFunction_IndPac0'
+        stypvar(ii)%cshort_name = TRIM(cn_zomsfinp0)//'_sh'
+        ii= ii+1
+        PRINT *, 'Variable ',ii,' is zomsfinp0_bt'
+        stypvar(ii)%cname       = TRIM(cn_zomsfinp0)//'_bt'
+        stypvar(ii)%clong_name  = 'Barotropic_Merid_StreamFunction_IndPac0'
+        stypvar(ii)%cshort_name = TRIM(cn_zomsfinp0)//'_bt'
+        ii= ii+1
+        PRINT *, 'Variable ',ii,' is zomsfinp0_ag'
+        stypvar(ii)%cname       = TRIM(cn_zomsfinp0)//'_ag'
+        stypvar(ii)%clong_name  = 'Ageostroph_Merid_StreamFunction_IndPac0'
+        stypvar(ii)%cshort_name = TRIM(cn_zomsfinp0)//'_ag'
      ENDIF
   ENDIF
 
@@ -384,6 +414,7 @@ PROGRAM cdfmoc
   ALLOCATE ( tim(npt) )
   ALLOCATE ( dmoc( nbasins, npjglo, npk   ) )
   ALLOCATE ( ivmask(npiglo, npjglo) )
+
   IF ( ldec ) THEN 
      ALLOCATE ( iumask(npiglo, npjglo) )
      ALLOCATE ( itmask(npiglo, npjglo) )
@@ -524,7 +555,7 @@ PROGRAM cdfmoc
               iumask(:,:) = getvar(cn_fmsk, 'umask', jk, npiglo, npjglo)
               itmask(:,:) = getvar(cn_fmsk, 'tmask', jk, npiglo, npjglo)
               ztemp(:,:)  = getvar(cf_tfil, cn_votemper, jk, npiglo, npjglo, ktime=jt )
-              zsal(:,:)   = getvar(cf_tfil, cn_vosaline, jk, npiglo, npjglo, ktime=jt )
+              zsal(:,:)   = getvar(cf_sfil, cn_vosaline, jk, npiglo, npjglo, ktime=jt )
               zsig0(:,:)  = sigmai (ztemp, zsal, gdept(jk), npiglo, npjglo )* itmask(:,:)
 
               ! dgeo is Drho/dx at V point ( average on the 4 neighbours U points)
@@ -608,6 +639,7 @@ PROGRAM cdfmoc
               ierr = putvar (ncout, id_varout(ijvar), REAL(dmoc(jbasin,:,jk)), jk, 1, npjglo, ktime=jt)
            END DO
            ijvar = ijvar + 1
+
            IF ( ldec ) THEN
               !           print *, dmoc_sh(jbasin,60,10)
               DO jk = 1, npk 
@@ -626,6 +658,30 @@ PROGRAM cdfmoc
               ijvar = ijvar + 1 
            ENDIF
         END DO
+
+        jbasin=nbasinso
+           DO jk = 1, npk
+              ierr = putvar (ncout, id_varout(ijvar), REAL(dmoc(npglo,:,jk)-dmoc(npatl,:,jk)), jk, 1, npjglo, ktime=jt)
+           END DO
+           ijvar = ijvar + 1
+           IF ( ldec ) THEN
+
+              DO jk = 1, npk 
+                 ierr = putvar (ncout, id_varout(ijvar), REAL(dmoc_sh(npglo,:,jk)-dmoc_sh(npatl,:,jk)), jk, 1, npjglo, ktime=jt)
+              END DO
+
+              ijvar = ijvar + 1 
+              DO jk = 1, npk 
+                 ierr = putvar (ncout, id_varout(ijvar), REAL(dmoc_bt(npglo,:,jk)-dmoc_bt(npatl,:,jk)), jk, 1, npjglo, ktime=jt)
+              END DO
+
+              ijvar = ijvar + 1 
+              DO jk = 1, npk 
+                 ierr = putvar (ncout, id_varout(ijvar), REAL(dmoc_ag(npglo,:,jk)-dmoc_ag(npatl,:,jk)), jk, 1, npjglo, ktime=jt)
+              END DO
+              ijvar = ijvar + 1 
+           ENDIF
+
      ENDDO  ! time loop
 
      ierr = closeout(ncout)
diff --git a/cdfvT.f90 b/cdfvT.f90
index 5aada21..9b0d7ab 100644
--- a/cdfvT.f90
+++ b/cdfvT.f90
@@ -11,6 +11,7 @@ PROGRAM cdfvT
   !! History : 2.1  : 11/2004  : J.M. Molines : Original code
   !!           2.1  : 02/2010  : J.M. Molines : handle multiframes input files.
   !!           3.0  : 04/2011  : J.M. Molines : Doctor norm + Lic.
+  !!                : 10/2012  : M. Balmaseda : Split T and S file eventually
   !!----------------------------------------------------------------------
   USE cdfio
   USE modcdfnames
@@ -43,7 +44,8 @@ PROGRAM cdfvT
   REAL(KIND=8), DIMENSION(:,:), ALLOCATABLE :: dcumulvt, dcumulvs   ! Arrays for cumulated values
   REAL(KIND=8)                              :: dtotal_time          ! cumulated time
 
-  CHARACTER(LEN=256)                        :: cf_tfil              ! TS file name
+  CHARACTER(LEN=256)                        :: cf_tfil              ! T file name
+  CHARACTER(LEN=256)                        :: cf_sfil              ! S file name [default: idem T file]
   CHARACTER(LEN=256)                        :: cf_ufil              ! zonal velocity file
   CHARACTER(LEN=256)                        :: cf_vfil              ! meridional velocity file
   CHARACTER(LEN=256)                        :: cf_out='vt.nc'       ! output file
@@ -68,6 +70,8 @@ PROGRAM cdfvT
      PRINT *,'       CONFIG is the config name of a given experiment (eg ORCA025-G70)'
      PRINT *,'            The program will look for gridT, gridU and gridV files for' 
      PRINT *,'            this config ( grid_T, grid_U and grid_V are also accepted).'
+     PRINT *,'            Additionaly, if gridS or grid_S file is found, it will be taken'
+     PRINT *,'            in place of gridT for the salinity variable.'
      PRINT *,'       list_of_tags : a list of time tags that will be used for time'
      PRINT *,'            averaging. e.g. y2000m01d05 y2000m01d10 ...'
      PRINT *,'      '
@@ -120,10 +124,10 @@ PROGRAM cdfvT
   ALLOCATE( zmean(npiglo,npjglo))
 
   ! create output fileset
-  ncout = create      (cf_out, cf_tfil, npiglo, npjglo, npk       )
-  ierr  = createvar   (ncout , stypvar, 4,      ipk,    id_varout )
-  ierr  = putheadervar(ncout,  cf_tfil, npiglo, npjglo, npk       )
-
+  ncout = create      (cf_out, cf_tfil, npiglo, npjglo, npk, ld_xycoo=.TRUE. )
+  ierr  = createvar   (ncout , stypvar, 4,      ipk,    id_varout            )
+  ierr  = putheadervar(ncout,  cf_tfil, npiglo, npjglo, npk, ld_xycoo=.TRUE. )
+  
   lcaltmean=.TRUE.
   DO jk = 1, npk
      PRINT *,'level ',jk
@@ -133,7 +137,9 @@ PROGRAM cdfvT
      DO jt = 2, narg           ! loop on tags
         CALL getarg (jt, ctag)
 
-        cf_tfil = SetFileName( config, ctag, 'T' )
+        cf_tfil = SetFileName( config, ctag, 'T', ld_stop=.TRUE. )
+        cf_sfil = SetFileName( config, ctag, 'S', ld_stop=.FALSE.)      ! do not stop if gridS/grid_S not found !
+        IF ( chkfile (cf_sfil, ld_verbose=.FALSE.) ) cf_sfil = cf_tfil  ! do not complain if not found
 
         npt = getdim (cf_tfil, cn_t)
         IF ( lcaltmean ) THEN
@@ -152,7 +158,7 @@ PROGRAM cdfvT
            zu(:,:)    = getvar(cf_ufil, cn_vozocrtx, jk, npiglo, npjglo, ktime=jtt )
            zv(:,:)    = getvar(cf_vfil, cn_vomecrty, jk, npiglo, npjglo, ktime=jtt )
            ztemp(:,:) = getvar(cf_tfil, cn_votemper, jk, npiglo, npjglo, ktime=jtt )
-           zsal(:,:)  = getvar(cf_tfil, cn_vosaline, jk, npiglo, npjglo, ktime=jtt )
+           zsal(:,:)  = getvar(cf_sfil, cn_vosaline, jk, npiglo, npjglo, ktime=jtt )
 
            ! temperature at u point, v points
            zworku(:,:) = 0. ; zworkv(:,:) = 0.
diff --git a/modcdfnames.f90 b/modcdfnames.f90
index 3d5d969..4dcb86f 100644
--- a/modcdfnames.f90
+++ b/modcdfnames.f90
@@ -82,6 +82,7 @@ MODULE modCdfNames
   CHARACTER(LEN=20) :: cn_zomsfpac='zomsfpac' !: moc in the Pacific
   CHARACTER(LEN=20) :: cn_zomsfinp='zomsfinp' !: moc in the Indo-Pacific
   CHARACTER(LEN=20) :: cn_zomsfind='zomsfind' !: moc in the Indian ocean
+  CHARACTER(LEN=20) :: cn_zomsfinp0='zomsfinp0' !: moc in the Indo-Pacific Net
   
   ! transport variables
   CHARACTER(LEN=20) :: cn_vozout='vozout'     !: product U x T at U point
diff --git a/modutils.f90 b/modutils.f90
index b6a0ff1..06ca13e 100644
--- a/modutils.f90
+++ b/modutils.f90
@@ -68,7 +68,7 @@ CONTAINS
 
   END SUBROUTINE SetGlobalAtt
 
-  CHARACTER(LEN=256) FUNCTION SetFileName(cdconf, cdtag, cdgrid )
+  CHARACTER(LEN=256) FUNCTION SetFileName(cdconf, cdtag, cdgrid ,ld_stop )
     !!---------------------------------------------------------------------
     !!                  ***  FUNCTION SetFileName  ***
     !!
@@ -78,12 +78,21 @@ CONTAINS
     !!               error is file is missing
     !!
     !!----------------------------------------------------------------------
-    CHARACTER(LEN=*), INTENT(in) :: cdconf, cdtag, cdgrid
+    CHARACTER(LEN=*),  INTENT(in) :: cdconf, cdtag, cdgrid
+    LOGICAL, OPTIONAL, INTENT(in) :: ld_stop
+
+    LOGICAL :: ll_stop
     !!----------------------------------------------------------------------
+    IF ( PRESENT(ld_stop) ) THEN
+       ll_stop = ld_stop
+    ELSE
+       ll_stop = .TRUE.
+    ENDIF
+
     WRITE( SetFileName,'(a,"_",a,"_grid",a,".nc")') TRIM(cdconf), TRIM(cdtag), TRIM(cdgrid)
     IF ( chkfile(SetFileName ) ) THEN ! look for another name
        WRITE(SetFileName,'(a,"_",a,"_grid_",a,".nc")') TRIM(cdconf), TRIM(cdtag), TRIM(cdgrid)
-       IF ( chkfile( SetFileName)  ) THEN
+       IF ( chkfile( SetFileName) .AND. ll_stop  ) THEN
           PRINT *,' ERROR : missing grid',TRIM(cdgrid),'or even grid_',TRIM(cdgrid),' file '
           STOP
        ENDIF

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/cdftools.git



More information about the debian-science-commits mailing list