[cdftools] 181/228: JMM: merge cdfmhst with Magdalena's one: allow for computing mhst from V T [S] files, allow for saving vertical structure of mhst.
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 d326d9aaa7f28503032d9042208e975bc23c3649
Author: molines <molines at 1055176f-818a-41d9-83e1-73fbe5b947c5>
Date: Fri Nov 2 23:23:39 2012 +0000
JMM: merge cdfmhst with Magdalena's one: allow for computing mhst from V T [S] files, allow for saving vertical structure
of mhst.
git-svn-id: http://servforge.legi.grenoble-inp.fr/svn/CDFTOOLS/trunk@629 1055176f-818a-41d9-83e1-73fbe5b947c5
---
cdfmhst.f90 | 263 +++++++++++++++++++++++++++++++++++++++++-------------------
1 file changed, 179 insertions(+), 84 deletions(-)
diff --git a/cdfmhst.f90 b/cdfmhst.f90
index d986662..db5f51c 100644
--- a/cdfmhst.f90
+++ b/cdfmhst.f90
@@ -5,14 +5,19 @@ PROGRAM cdfmhst
!! ** Purpose : Compute Meridional Heat Salt Transport.
!!
!! ** Method : Starts from the mean VT, VS fields computed by cdfvT.
+ !! Optionally, it can read V, T and S files in separate files
!! Zonal and vertical integration are performed for these
!! quantities. If a sub-basin mask is provided, then a
!! meridional H/S transoport is computed for each sub basin.
+ !! Meridional H/S transports at different depths
!!
!! History : 2.1 : 01/2005 : J.M. Molines : Original code
!! : 04/2005 : A.M. Treguier : adaptation to regional config
!! : 04/2007 : J.M. Molines : add netcdf output
!! 3.0 : 05/2011 : J.M. Molines : Doctor norm + Lic.
+ !! 10/2012 : M.A. Balmaseda: opt separate V,T,S infiles
+ !! opt z dimension
+ !! add inp0
!!----------------------------------------------------------------------
USE cdfio
USE modcdfnames
@@ -24,16 +29,19 @@ PROGRAM cdfmhst
!!----------------------------------------------------------------------
IMPLICIT NONE
- INTEGER(KIND=4) :: jj, jk, jt ! dummy loop index
+ INTEGER(KIND=4) :: ji, jj, jk, jt ! dummy loop index
INTEGER(KIND=4) :: jbasins, jvar ! dummy loop index
INTEGER(KIND=4) :: narg, iargc ! command line
+ INTEGER(KIND=4) :: ik0 ! working integer
+ INTEGER(KIND=4) :: ifile ! dummuy loop
INTEGER(KIND=4) :: ijarg ! argument counter
INTEGER(KIND=4) :: npiglo, npjglo ! size of the domain
- INTEGER(KIND=4) :: npk, npt ! size of the domain
+ INTEGER(KIND=4) :: npk, npt, npko ! size of the domain
INTEGER(KIND=4) :: numouth = 10 ! logical unit for heat
INTEGER(KIND=4) :: numouts = 11 ! logical unit for salt
INTEGER(KIND=4) :: npvar=1 ! number of variables type
INTEGER(KIND=4) :: nbasins ! number of basins
+ INTEGER(KIND=4) :: nbasinso ! basins in output
INTEGER(KIND=4) :: ierr ! error status
INTEGER(KIND=4) :: ncout ! ncid of output file
INTEGER(KIND=4) :: ivar ! variable index
@@ -44,12 +52,13 @@ PROGRAM cdfmhst
REAL(KIND=4), PARAMETER :: pprcp = 4000. ! specific heat
REAL(KIND=4), PARAMETER :: ppspval= 9999.99 ! missing value
- REAL(KIND=4), DIMENSION(1) :: gdep ! dummy depth array
+ REAL(KIND=4), DIMENSION(:), ALLOCATABLE :: gdep ! depth array
REAL(KIND=4), DIMENSION(:), ALLOCATABLE :: tim ! time counter
REAL(KIND=4), DIMENSION(:), ALLOCATABLE :: e31d ! 1D e3t for full step
REAL(KIND=4), DIMENSION(:,:), ALLOCATABLE :: zmask ! mask
REAL(KIND=4), DIMENSION(:,:), ALLOCATABLE :: e1v, e3v, gphiv ! metrics and latitude
REAL(KIND=4), DIMENSION(:,:), ALLOCATABLE :: zvt, zvs ! transport components
+ REAL(KIND=4), DIMENSION(:,:), ALLOCATABLE :: zv, zt, zs ! v,t,s
REAL(KIND=4), DIMENSION(:,:), ALLOCATABLE :: rdumlon ! dummy longitude = 0.
REAL(KIND=4), DIMENSION(:,:), ALLOCATABLE :: rdumlat ! latitude for i = north pole
@@ -71,26 +80,33 @@ PROGRAM cdfmhst
TYPE(variable), DIMENSION(:), ALLOCATABLE :: stypvar ! structure for attributes
- CHARACTER(LEN=256) :: cf_vtfil ! input VT file name
+ CHARACTER(LEN=256) :: cf_vtfil ! input VT or V file name
+ CHARACTER(LEN=256) :: cf_vfil ! separate V files
+ CHARACTER(LEN=256) :: cf_tfil ! separate T,S files
+ CHARACTER(LEN=256) :: cf_sfil ! separate T,S files
CHARACTER(LEN=256) :: cf_outh='zonal_heat_trp.dat'
CHARACTER(LEN=256) :: cf_outs='zonal_salt_trp.dat'
CHARACTER(LEN=256) :: cf_outnc='mhst.nc'
CHARACTER(LEN=256) :: cv_zomht='zomht' ! MHT variable name
CHARACTER(LEN=256) :: cv_zomst='zomst' ! MST variable name
CHARACTER(LEN=256) :: cldum ! dummy character variable
- CHARACTER(LEN=4), DIMENSION(5) :: cbasin=(/'_glo','_atl','_inp','_ind','_pac'/)
+ CHARACTER(LEN=5), DIMENSION(6) :: cbasin=(/'_glo','_atl','_inp','_ind','_pac','_inp0'/)
CHARACTER(LEN=80), DIMENSION(:), ALLOCATABLE :: cvarname ! varname arrays
+ CHARACTER(LEN=256) :: cldimension ! varname arrays
LOGICAL :: llglo = .FALSE. ! flag for sub basin file
LOGICAL :: lchk = .FALSE. ! flag for missing files
LOGICAL :: lfull = .FALSE. ! flag for missing files
+ LOGICAL :: lsepf = .FALSE. ! flag for separate files
+ LOGICAL :: lzdim = .FALSE. ! flag for separate files
!!----------------------------------------------------------------------
CALL ReadCdfNames()
!! Read command line and output usage message if not compliant.
narg= iargc()
IF ( narg == 0 ) THEN
- PRINT *,' usage : cdfmhst VT-file [MST] [-full]'
+ PRINT *,' usage : cdfmhst VT-file | (V-file T-file [S-file]) [MST] [-full] ...'
+ PRINT *,' ... [-Zdim] '
PRINT *,' '
PRINT *,' PURPOSE :'
PRINT *,' Compute the meridional heat/salt transport as a function of '
@@ -100,11 +116,15 @@ PROGRAM cdfmhst
PRINT *,' ARGUMENTS :'
PRINT *,' VT-file : netcdf file containing the mean value of the products'
PRINT *,' U.S, U.T, V.S and V.T (obtained with cdfvT).'
+ PRINT *,' or '
+ PRINT *,' V-file T-file [S-file] : specify V, T S file as separate files. If'
+ PRINT *,' S-file is not specified, assume that salinity is in T-file.'
PRINT *,' '
PRINT *,' OPTIONS :'
- PRINT *,' [MST ] : output flag for meridional salt transport on netcdf files.'
- PRINT *,' If not specified, only the MHT is output.'
+ PRINT *,' [MST ] : output flag for meridional salt transport on netcdf files.'
+ PRINT *,' If not specified, only the MHT is output.'
PRINT *,' [-full ] : to be set for full step case.'
+ PRINT *,' [-Zdim ] : to be set to output vertical structure of Heat/salt transport'
PRINT *,' '
PRINT *,' REQUIRED FILES :'
PRINT *,' ', TRIM(cn_fhgr),', ',TRIM(cn_fzgr),' and ',TRIM(cn_fmsk)
@@ -127,29 +147,57 @@ PROGRAM cdfmhst
STOP
ENDIF
- npvar = 1 ! default value ( no MST output)
- ijarg = 1
+ npvar = 1 ! default value ( no MST output)
+ ijarg = 1
+ ifile = 0
+ ! browse command line and detect the file name as argument different from any option
+ ! count the number of files. Assume VT if 1 only, V TS if 2 and V T S if 3
DO WHILE ( ijarg <= narg )
CALL getarg(ijarg, cldum) ; ijarg = ijarg+1
SELECT CASE ( cldum)
- CASE ( 'MST' ) ; npvar =2
+ CASE ( 'MST' ) ; npvar = 2
CASE ( '-full' ) ; lfull = .TRUE.
- CASE DEFAULT ; cf_vtfil = cldum
+ CASE ( '-Zdim' ) ; lzdim = .TRUE.
+ CASE DEFAULT ; ifile = ifile + 1
+ SELECT CASE (ifile)
+ CASE ( 1) ; cf_vtfil = cldum
+ CASE ( 2) ; cf_tfil = cldum
+ CASE ( 3) ; cf_sfil = cldum
+ CASE DEFAULT ; PRINT *,' WARNING: more than 3 files in input : weird '
+ END SELECT
END SELECT
END DO
+ ! security check
+ SELECT CASE (ifile )
+ CASE ( 0 ) ; PRINT *, ' You must provide at least 1 file name (VT) ' ; STOP
+ CASE ( 1 ) ; lsepf = .false.;
+ CASE ( 2 ) ; lsepf = .true. ; cf_vfil = cf_vtfil ; cf_sfil = cf_tfil
+ CASE ( 3 ) ; lsepf = .true. ; cf_vfil = cf_vtfil
+ END SELECT
+
! check for missing files
lchk = lchk .OR. chkfile( cn_fhgr )
lchk = lchk .OR. chkfile( cn_fzgr )
lchk = lchk .OR. chkfile( cn_fmsk )
lchk = lchk .OR. chkfile( cf_vtfil)
+ IF ( lsepf ) THEN
+ lchk = lchk .OR. chkfile( cf_tfil)
+ lchk = lchk .OR. chkfile( cf_sfil)
+ ENDIF
+
IF ( lchk ) STOP ! missing files
! check for sub basin file and set appropriate variables
- nbasins = 1
- IF ( .NOT. chkfile(cn_fbasins) ) THEN
- llglo = .TRUE.
- nbasins = 5
+ IF ( .NOT. chkfile(cn_fbasins ) ) THEN
+ llglo = .TRUE.
+ nbasins = 5
+ nbasinso = 6
+ ELSE
+ PRINT *,' Only compute for GLOBAL basin'
+ llglo = .FALSE.
+ nbasins = 1
+ nbasinso = 1
ENDIF
npiglo = getdim (cf_vtfil, cn_x)
@@ -162,6 +210,14 @@ PROGRAM cdfmhst
PRINT *, 'npk = ', npk
PRINT *, 'npt = ', npt
+ IF ( lzdim ) THEN ! output file hold heat/salt transport by levels
+ npko = npk
+ cldimension = 'TZY'
+ ELSE
+ npko = 1
+ cldimension = 'TY'
+ ENDIF
+
! Allocate arrays
ALLOCATE ( tim(npt) )
ALLOCATE ( dwkh(npiglo,npjglo), zmask(npiglo,npjglo), zvt(npiglo,npjglo) )
@@ -173,14 +229,24 @@ PROGRAM cdfmhst
ALLOCATE ( dzonal_heat_ind(npjglo), dzonal_heat_aus(npjglo), dzonal_heat_med(npjglo) )
ALLOCATE ( dzonal_salt_glo(npjglo), dzonal_salt_atl(npjglo), dzonal_salt_pac(npjglo) )
ALLOCATE ( dzonal_salt_ind(npjglo), dzonal_salt_aus(npjglo), dzonal_salt_med(npjglo) )
- ALLOCATE ( dmtrp(npjglo) )
ALLOCATE ( rdumlon(1,npjglo), rdumlat(1,npjglo))
+ ALLOCATE ( dmtrp(npjglo) )
+ ALLOCATE ( gdep (npko) )
+
+ IF ( lsepf ) THEN
+ ALLOCATE ( zv(npiglo,npjglo), zt(npiglo,npjglo), zs(npiglo,npjglo) )
+ ENDIF
IF ( lfull ) ALLOCATE ( e31d(npk) )
e1v(:,:) = getvar(cn_fhgr, cn_ve1v, 1, npiglo, npjglo)
gphiv(:,:) = getvar(cn_fhgr, cn_gphiv, 1, npiglo, npjglo)
- gdep(:) = 0. ! dummy depth for netcdf output
+
+ IF ( lzdim ) THEN
+ gdep(:) = getvare3(cn_fzgr, cn_gdept, npk )
+ ELSE
+ gdep(:) = 0. ! dummy depth for netcdf output
+ ENDIF
IF ( lfull ) e31d = getvare3(cn_fzgr, cn_ve3t, npk )
@@ -190,12 +256,11 @@ PROGRAM cdfmhst
! prepare output netcdf output file
! Allocate output variables
- ALLOCATE(stypvar(nbasins*npvar), cvarname(nbasins*npvar) )
- ALLOCATE( ipk(nbasins*npvar), id_varout(nbasins*npvar) )
-
- ipk(:)=1 ! all output variables have only 1 level !
- DO jbasins = 1,nbasins
-
+ ALLOCATE(stypvar(nbasinso*npvar), cvarname(nbasinso*npvar) )
+ ALLOCATE( ipk(nbasinso*npvar), id_varout(nbasinso*npvar) )
+
+ ipk(:)=npko ! all output variables either 1 or npko levels
+ DO jbasins = 1,nbasinso
cvarname(jbasins) = TRIM(cv_zomht)//TRIM(cbasin(jbasins))
stypvar(jbasins)%cname = cvarname(jbasins)
stypvar(jbasins)%cunits = 'PW'
@@ -205,11 +270,11 @@ PROGRAM cdfmhst
stypvar(jbasins)%clong_name = 'Meridional Heat Transport '//TRIM(cbasin(jbasins))
stypvar(jbasins)%cshort_name = cvarname(jbasins)
stypvar(jbasins)%conline_operation = 'N/A'
- stypvar(jbasins)%caxis = 'TY'
+ stypvar(jbasins)%caxis = cldimension
IF ( npvar == 2 ) THEN
! MST
- ivar = nbasins+jbasins
+ ivar = nbasinso+jbasins
cvarname(ivar) = TRIM(cv_zomst)//TRIM(cbasin(jbasins))
stypvar(ivar )%cname = cvarname(ivar)
stypvar(ivar )%cunits = 'T/sec'
@@ -219,30 +284,45 @@ PROGRAM cdfmhst
stypvar(ivar )%clong_name = 'Meridional Salt Transport '//TRIM(cbasin(jbasins))
stypvar(ivar )%cshort_name = cvarname(ivar)
stypvar(ivar )%conline_operation = 'N/A'
- stypvar(ivar )%caxis = 'TY'
+ stypvar(ivar )%caxis = cldimension
ENDIF
END DO
! create output fileset
- ncout = create (cf_outnc, cf_vtfil, 1, npjglo, 1, cdep='depthv' )
- ierr = createvar (ncout, stypvar, nbasins*npvar, ipk, id_varout )
- ierr = putheadervar(ncout, cf_vtfil, 1, npjglo, 1, pnavlon=rdumlon, pnavlat=rdumlat, pdep=gdep)
+ ncout = create (cf_outnc, cf_vtfil, 1, npjglo, npko, cdep='depthv' )
+ ierr = createvar (ncout, stypvar, nbasinso*npvar, ipk, id_varout )
+ ierr = putheadervar(ncout, cf_vtfil, 1, npjglo, npko, pnavlon=rdumlon, pnavlat=rdumlat, pdep=gdep)
- tim = getvar1d (cf_vtfil, cn_vtimec, npt )
+ tim = getvar1d (cf_vtfil, cn_vtimec, npt )
ierr = putvar1d (ncout, tim, npt, 'T')
OPEN(numouth,FILE=cf_outh,FORM='FORMATTED', RECL=256) ! to avoid wrapped line with ifort
OPEN(numouts,FILE=cf_outs,FORM='FORMATTED', RECL=256) ! to avoid wrapped line with ifort
+
DO jt=1, npt
dtrph(:,:) = 0.d0
dtrps(:,:) = 0.d0
DO jk = 1,npk
PRINT *,'level ',jk
! Get temperature and salinity at jk
- zvt(:,:)= getvar(cf_vtfil, cn_vomevt, jk, npiglo, npjglo, ktime=jt)
- zvs(:,:)= getvar(cf_vtfil, cn_vomevs, jk, npiglo, npjglo, ktime=jt)
+ IF ( lsepf ) THEN
+ zv(:,:)= getvar(cf_vfil, cn_vomecrty, jk, npiglo, npjglo, ktime=jt)
+ zt(:,:)= getvar(cf_tfil, cn_votemper, jk, npiglo, npjglo, ktime=jt)
+ zs(:,:)= getvar(cf_sfil, cn_vosaline, jk, npiglo, npjglo, ktime=jt)
+ zvt(:,:)=0.
+ zvs(:,:)=0.
+ DO ji=1, npiglo
+ DO jj = 1, npjglo -1
+ zvt(ji,jj) = 0.5 * ( zt(ji,jj) + zt(ji,jj+1) )*zv(ji,jj) ! temper at Vpoint
+ zvs(ji,jj) = 0.5 * ( zs(ji,jj) + zs(ji,jj+1) )*zv(ji,jj) ! salinity at Vpoint
+ END DO
+ END DO
+ ELSE
+ zvt(:,:)= getvar(cf_vtfil, cn_vomevt, jk, npiglo, npjglo, ktime=jt)
+ zvs(:,:)= getvar(cf_vtfil, cn_vomevs, jk, npiglo, npjglo, ktime=jt)
+ ENDIF
! get e3v at level jk
IF ( lfull ) THEN
e3v(:,:) = e31d(jk)
@@ -256,9 +336,8 @@ PROGRAM cdfmhst
dtrph(:,:) = dtrph(:,:) + dwkh(:,:) * pprau0 * pprcp
dtrps(:,:) = dtrps(:,:) + dwks(:,:)
- END DO ! loop to next level
- ! global
+ !global
zmask(:,:) = getvar(cn_fmsk, 'vmask', 1, npiglo, npjglo)
DO jj=1,npjglo
dzonal_heat_glo(jj) = SUM( dtrph(2:npiglo-1,jj)*zmask(2:npiglo-1,jj) )
@@ -307,60 +386,76 @@ PROGRAM cdfmhst
! dzonal_salt_med(jj)= SUM( dtrps(:,jj)*zmask(:,jj))
! END DO
ENDIF
-
-
- DO jvar=1,npvar ! MHT [ and MST ] (1 or 2 )
- IF ( jvar == 1 ) THEN
- ! MHT
- ivar=1
- dmtrp(:) = dzonal_heat_glo(:)/1.d15 ! GLO
- WHERE ( dmtrp == 0 ) dmtrp = ppspval
- ierr = putvar(ncout, id_varout(ivar), REAL(dmtrp), 1, 1, npjglo, ktime=jt)
- ivar=ivar+1
- IF ( nbasins == 5 ) THEN
- dmtrp(:) = dzonal_heat_atl(:)/1.d15 ! ATL
- WHERE ( dmtrp == 0 ) dmtrp = ppspval
- ierr = putvar(ncout, id_varout(ivar), REAL(dmtrp), 1, 1, npjglo, ktime=jt)
- ivar=ivar+1
- dmtrp(:) = (dzonal_heat_ind(:) + dzonal_heat_pac(:))/1.d15 ! INP
- WHERE ( dmtrp == 0 ) dmtrp = ppspval
- ierr = putvar(ncout, id_varout(ivar), REAL(dmtrp), 1, 1, npjglo, ktime=jt)
- ivar=ivar+1
- dmtrp(:) = dzonal_heat_ind(:)/1.d15 ! IND
- WHERE ( dmtrp == 0 ) dmtrp = ppspval
- ierr = putvar(ncout, id_varout(ivar), REAL(dmtrp), 1, 1, npjglo, ktime=jt)
- ivar=ivar+1
- dmtrp(:) = dzonal_heat_pac(:)/1.d15 ! PAC
- WHERE ( dmtrp == 0 ) dmtrp = ppspval
- ierr = putvar(ncout, id_varout(ivar), REAL(dmtrp), 1, 1, npjglo, ktime=jt)
- ivar=ivar+1
- ENDIF
- ELSE
- ! MST
- dmtrp(:) = dzonal_salt_glo(:)/1.d6 ! GLO
- WHERE ( dmtrp == 0 ) dmtrp = ppspval
- ierr=putvar(ncout, id_varout(ivar), REAL(dmtrp), 1, 1, npjglo, ktime=jt)
- ivar=ivar+1
- IF ( nbasins == 5 ) THEN
- dmtrp(:) = dzonal_salt_atl(:)/1.d6 ! ATL
+
+ IF ( lzdim .OR. ( jk == npk ) ) THEN !output this level
+ IF ( lzdim ) THEN ; ik0 = jk ; ELSE ; ik0 = 1 ; ENDIF
+
+ DO jvar=1,npvar ! MHT [ and MST ] (1 or 2 )
+ IF ( jvar == 1 ) THEN
+ ! MHT
+ ivar=1
+ dmtrp(:) = dzonal_heat_glo(:)/1.d15 ! GLO
WHERE ( dmtrp == 0 ) dmtrp = ppspval
- ierr = putvar(ncout, id_varout(ivar), REAL(dmtrp), 1, 1, npjglo, ktime=jt)
+ ierr = putvar(ncout, id_varout(ivar), REAL(dmtrp), ik0, 1, npjglo, ktime=jt)
ivar=ivar+1
- dmtrp(:) = (dzonal_salt_ind(:) + dzonal_salt_pac(:))/1.d6 ! INP
+ IF ( nbasins == 5 ) THEN
+ dmtrp(:) = dzonal_heat_atl(:)/1.d15 ! ATL
+ WHERE ( dmtrp == 0 ) dmtrp = ppspval
+ ierr = putvar(ncout, id_varout(ivar), REAL(dmtrp), ik0, 1, npjglo, ktime=jt)
+ ivar=ivar+1
+ dmtrp(:) = (dzonal_heat_ind(:) + dzonal_heat_pac(:))/1.d15 ! INP
+ WHERE ( dmtrp == 0 ) dmtrp = ppspval
+ ierr = putvar(ncout, id_varout(ivar), REAL(dmtrp), ik0, 1, npjglo, ktime=jt)
+ ivar=ivar+1
+ dmtrp(:) = dzonal_heat_ind(:)/1.d15 ! IND
+ WHERE ( dmtrp == 0 ) dmtrp = ppspval
+ ierr = putvar(ncout, id_varout(ivar), REAL(dmtrp), ik0, 1, npjglo, ktime=jt)
+ ivar=ivar+1
+ dmtrp(:) = dzonal_heat_pac(:)/1.d15 ! PAC
+ WHERE ( dmtrp == 0 ) dmtrp = ppspval
+ ierr = putvar(ncout, id_varout(ivar), REAL(dmtrp), ik0, 1, npjglo, ktime=jt)
+ ivar=ivar+1
+ ! now inp0
+ dmtrp(:) = ( dzonal_heat_glo(:) - dzonal_heat_atl(:) )/1.d15 ! INP0
+ WHERE ( dmtrp == 0 ) dmtrp = ppspval
+ ierr = putvar(ncout, id_varout(ivar), REAL(dmtrp), ik0, 1, npjglo, ktime=jt)
+ ivar=ivar+1
+ ENDIF
+ ELSE
+ ! MST
+ dmtrp(:) = dzonal_salt_glo(:)/1.d6 ! GLO
WHERE ( dmtrp == 0 ) dmtrp = ppspval
- ierr = putvar(ncout, id_varout(ivar), REAL(dmtrp), 1, 1, npjglo, ktime=jt)
- ivar=ivar+1
- dmtrp(:) = dzonal_salt_ind(:)/1.d6 ! IND
- WHERE ( dmtrp == 0 ) dmtrp = ppspval
- ierr = putvar(ncout, id_varout(ivar), REAL(dmtrp), 1, 1, npjglo, ktime=jt)
- ivar=ivar+1
- dmtrp(:) = dzonal_salt_pac(:)/1.d6 ! PAC
- WHERE ( dmtrp == 0 ) dmtrp = ppspval
- ierr=putvar(ncout, id_varout(ivar), REAL(dmtrp), 1, 1, npjglo, ktime=jt)
+ ierr=putvar(ncout, id_varout(ivar), REAL(dmtrp), ik0, 1, npjglo, ktime=jt)
ivar=ivar+1
+ IF ( nbasins == 5 ) THEN
+ dmtrp(:) = dzonal_salt_atl(:)/1.d6 ! ATL
+ WHERE ( dmtrp == 0 ) dmtrp = ppspval
+ ierr = putvar(ncout, id_varout(ivar), REAL(dmtrp), ik0, 1, npjglo, ktime=jt)
+ ivar=ivar+1
+ dmtrp(:) = (dzonal_salt_ind(:) + dzonal_salt_pac(:))/1.d6 ! INP
+ WHERE ( dmtrp == 0 ) dmtrp = ppspval
+ ierr = putvar(ncout, id_varout(ivar), REAL(dmtrp), ik0, 1, npjglo, ktime=jt)
+ ivar=ivar+1
+ dmtrp(:) = dzonal_salt_ind(:)/1.d6 ! IND
+ WHERE ( dmtrp == 0 ) dmtrp = ppspval
+ ierr = putvar(ncout, id_varout(ivar), REAL(dmtrp), ik0, 1, npjglo, ktime=jt)
+ ivar=ivar+1
+ dmtrp(:) = dzonal_salt_pac(:)/1.d6 ! PAC
+ WHERE ( dmtrp == 0 ) dmtrp = ppspval
+ ierr=putvar(ncout, id_varout(ivar), REAL(dmtrp), ik0, 1, npjglo, ktime=jt)
+ ivar=ivar+1
+ ! now inp0
+ dmtrp(:) = ( dzonal_salt_glo(:) - dzonal_salt_atl(:) )/1.d6 ! INP0
+ WHERE ( dmtrp == 0 ) dmtrp = ppspval
+ ierr = putvar(ncout, id_varout(ivar), REAL(dmtrp), ik0, 1, npjglo, ktime=jt)
+ ivar=ivar+1
+ ENDIF
ENDIF
- ENDIF
- END DO
+ END DO
+
+ ENDIF ! end loop on check for ouptut
+ END DO ! loop to next level
+
WRITE(numouth,*)'! Zonal heat transport (integrated alon I-model coordinate) (in Pw)'
IF ( llglo ) THEN
--
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