[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