obtain average values

General scientific issues regarding ROMS

Moderators: arango, robertson

Post Reply
Message
Author
togye176

obtain average values

#1 Unread post by togye176 »

Dear Members,

I am confusing how to get the average values(ocean_avg.nc). I activated the following two flags in the bash file

export MY_CPP_FLAGS="-DAVERAGES"
export MY_CPP_FLAGS="${MY_CPP_FLAGS} -DDEBUGGING"

But, I still can't get the 'ocean_ave.nc' file. Please let me know how to get it.
Thank you in advance.

I am attaching build and ocean_in files

Code: Select all

#!/bin/bash
#
# svn $Id: build.bash 710 2014-01-23 20:19:56Z arango $
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Copyright (c) 2002-2014 The ROMS/TOMS Group                           :::
#   Licensed under a MIT/X style license                                :::
#   See License_ROMS.txt                                                :::
#::::::::::::::::::::::::::::::::::::::::::::::::::::: Hernan G. Arango :::
#                                                                       :::
# ROMS/TOMS Compiling Script                                            :::
#                                                                       :::
# Script to compile an user application where the application-specific  :::
# files are kept separate from the ROMS source code.                    :::
#                                                                       :::
# Q: How/why does this script work?                                     :::
#                                                                       :::
# A: The ROMS makefile configures user-defined options with a set of    :::
#    flags such as ROMS_APPLICATION. Browse the makefile to see these.  :::
#    If an option in the makefile uses the syntax ?= in setting the     :::
#    default, this means that make will check whether an environment    :::
#    variable by that name is set in the shell that calls make. If so   :::
#    the environment variable value overrides the default (and the      :::
#    user need not maintain separate makefiles, or frequently edit      :::
#    the makefile, to run separate applications).                       :::
#                                                                       :::
# Usage:                                                                :::
#                                                                       :::
#    ./build.bash [options]                                             :::
#                                                                       :::
# Options:                                                              :::
#                                                                       :::
#    -j [N]      Compile in parallel using N CPUs                       :::
#                  omit argument for all available CPUs                 :::
#    -noclean    Do not clean already compiled objects                  :::
#                                                                       :::
# Notice that sometimes the parallel compilation fail to find MPI       :::
# include file "mpif.h".                                                :::
#                                                                       :::
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

parallel=0
clean=1

while [ $# -gt 0 ]
do
  case "$1" in
    -j )
      shift
      parallel=1
      test=`echo $1 | grep '^[0-9]\+$'`
      if [ "$test" != "" ]; then
        NCPUS="-j $1"
        shift
      else
        NCPUS="-j"
      fi
      ;;

    -noclean )
      shift
      clean=0
      ;;

    * )
      echo ""
      echo "$0 : Unknown option [ $1 ]"
      echo ""
      echo "Available Options:"
      echo ""
      echo "-j [N]      Compile in parallel using N CPUs"
      echo "              omit argument for all avaliable CPUs"
      echo "-noclean    Do not clean already compiled objects"
      echo ""
      exit 1
      ;;
  esac
done

# Set the CPP option defining the particular application. This will
# determine the name of the ".h" header file with the application
# CPP definitions.

export   ROMS_APPLICATION=INLET_TEST

# Set a local environmental variable to define the path to the directories
# where all this project's files are kept.

#export        MY_ROOT_DIR=/home/1450/ROM/work1/MyDir
export         MY_ROOT_DIR=/lustre/work/kirby/jung/MyDir
export         MY_PROJECT_DIR=/lustre/work/kirby/jung/work/ROM/work1/inlet_test

# The path to the user's local current ROMS source code.
#
# If using svn locally, this would be the user's Working Copy Path (WCPATH).
# Note that one advantage of maintaining your source code locally with svn
# is that when working simultaneously on multiple machines (e.g. a local
# workstation, a local cluster and a remote supercomputer) you can checkout
# the latest release and always get an up-to-date customized source on each
# machine. This script is designed to more easily allow for differing paths
# to the code and inputs on differing machines.

#export       MY_ROMS_SRC=${MY_ROOT_DIR}/branches/arango
 export       MY_ROMS_SRC=${MY_ROOT_DIR}/

# Set path of the directory containing makefile configuration (*.mk) files.
# The user has the option to specify a customized version of these files
# in a different directory than the one distributed with the source code,
# ${MY_ROMS_SRC}/Compilers. If this is the case, the you need to keep
# these configurations files up-to-date.

 export         COMPILERS=${MY_ROMS_SRC}/Compilers
#export         COMPILERS=${HOME}/Compilers

# Set tunable CPP options.
#
# Sometimes it is desirable to activate one or more CPP options to run
# different variants of the same application without modifying its header
# file. If this is the case, specify each options here using the -D syntax.
# Notice also that you need to use shell's quoting syntax to enclose the
# definition.  Both single or double quotes work. For example,
#
export      MY_CPP_FLAGS="-DAVERAGES"
export      MY_CPP_FLAGS="${MY_CPP_FLAGS} -DDEBUGGING"
#
# can be used to write time-averaged fields. Notice that you can have as
# many definitions as you want by appending values.

 export      MY_CPP_FLAGS="-DSWAN_COUPLING"
 export      MY_CPP_FLAGS="${MY_CPP_FLAGS} -DMCT_LIB"

#export      MY_CPP_FLAGS="${MY_CPP_FLAGS} -DDEBUGGING"
#export      MY_CPP_FLAGS="${MY_CPP_FLAGS} -DOUT_DOUBLE"
#export      MY_CPP_FLAGS="${MY_CPP_FLAGS} -DPOSITIVE_ZERO"

#export      MY_CPP_FLAGS="${MY_CPP_FLAGS} -DUV_LOGDRAG"
#export      MY_CPP_FLAGS="${MY_CPP_FLAGS} -DUV_QDRAG"

#export      MY_CPP_FLAGS="${MY_CPP_FLAGS} -DMB_BBL"
#export      MY_CPP_FLAGS="${MY_CPP_FLAGS} -DSG_BBL"
 export      MY_CPP_FLAGS="${MY_CPP_FLAGS} -DSSW_BBL"

 export      MY_CPP_FLAGS="${MY_CPP_FLAGS} -DNEARSHORE_MELLOR05"

#export      MY_CPP_FLAGS="${MY_CPP_FLAGS} -DBEDLOAD_SOULSBY"
#export      MY_CPP_FLAGS="${MY_CPP_FLAGS} -DBEDLOAD_MPM"

# Set deprecated lateral boundary conditions CPP flags for backward
# compatibility with older versions of the code.

# export BACK_COMPATIBILITY=on           # needed for ROMS 3.4 or older

if [ -n "${BACK_COMPATIBILITY:+1}" ]; then
 export      MY_CPP_FLAGS="${MY_CPP_FLAGS} -DSOUTHERN_WALL"

 export      MY_CPP_FLAGS="${MY_CPP_FLAGS} -DNORTH_FSGRADIENT"
 export      MY_CPP_FLAGS="${MY_CPP_FLAGS} -DNORTH_M2REDUCED"
 export      MY_CPP_FLAGS="${MY_CPP_FLAGS} -DFSOBC_REDUCED"
 export      MY_CPP_FLAGS="${MY_CPP_FLAGS} -DNORTH_M3GRADIENT"
 export      MY_CPP_FLAGS="${MY_CPP_FLAGS} -DNORTH_TGRADIENT"

 export      MY_CPP_FLAGS="${MY_CPP_FLAGS} -DWEST_FSGRADIENT"
 export      MY_CPP_FLAGS="${MY_CPP_FLAGS} -DWEST_M2GRADIENT"
 export      MY_CPP_FLAGS="${MY_CPP_FLAGS} -DWEST_M3GRADIENT"
 export      MY_CPP_FLAGS="${MY_CPP_FLAGS} -DWEST_TGRADIENT"

 export      MY_CPP_FLAGS="${MY_CPP_FLAGS} -DEAST_FSGRADIENT"
 export      MY_CPP_FLAGS="${MY_CPP_FLAGS} -DEAST_M2GRADIENT"
 export      MY_CPP_FLAGS="${MY_CPP_FLAGS} -DEAST_M3GRADIENT"
 export      MY_CPP_FLAGS="${MY_CPP_FLAGS} -DEAST_TGRADIENT"
fi

# Other user defined environmental variables. See the ROMS makefile for
# details on other options the user might want to set here. Be sure to
# leave the switches meant to be off set to an empty string or commented
# out. Any string value (including off) will evaluate to TRUE in
# conditional if-statements.

 export           USE_MPI=on            # distributed-memory parallelism
 export        USE_MPIF90=on            # compile with mpif90 script
#export         which_MPI=mpich         # compile with MPICH library
#export         which_MPI=mpich2        # compile with MPICH2 library
 export         which_MPI=openmpi       # compile with OpenMPI library

#export        USE_OpenMP=on            # shared-memory parallelism

export              FORT=ifort
#export              FORT=gfortran
#export              FORT=pgi

#export         USE_DEBUG=on            # use Fortran debugging flags
 export         USE_LARGE=on            # activate 64-bit compilation
#export       USE_NETCDF4=on            # compile with NetCDF-4 library
#export   USE_PARALLEL_IO=on            # Parallel I/O with Netcdf-4/HDF5

#export       USE_MY_LIBS=on            # use my library paths below

# There are several MPI libraries available. Here, we set the desired
# "mpif90" script to use during compilation. This only works if the make
# configuration file (say, Linux-pgi.mk) in the "Compilers" directory
# has the following definition for FC (Fortran Compiler) in the USE_MPI
# section:
#
#              FC := mpif90
#
# that is, "mpif90" defined without any path. Notice that the path
# where the MPI library is installed is computer dependent. Recall
# that you still need to use the appropriate "mpirun" to execute.

if [ -n "${USE_MPIF90:+1}" ]; then
  case "$FORT" in
    ifort )
      if [ "${which_MPI}" = "mpich" ]; then
        export PATH=/opt/intelsoft/mpich/bin:$PATH
      elif [ "${which_MPI}" = "mpich2" ]; then
        export PATH=/opt/intelsoft/mpich2/bin:$PATH
      elif [ "${which_MPI}" = "openmpi" ]; then
        export PATH=/opt/intelsoft/openmpi/bin:$PATH
      fi
      ;;

    pgi )
      if [ "${which_MPI}" = "mpich" ]; then
        export PATH=/opt/pgisoft/mpich/bin:$PATH
      elif [ "${which_MPI}" = "mpich2" ]; then
        export PATH=/opt/pgisoft/mpich2/bin:$PATH
      elif [ "${which_MPI}" = "openmpi" ]; then
        export PATH=/opt/pgisoft/openmpi/bin:$PATH
      fi
      ;;

    gfortran )
      if [ "${which_MPI}" = "mpich2" ]; then
        export PATH=/opt/gfortransoft/mpich2/bin:$PATH
      elif [ "${which_MPI}" = "openmpi" ]; then
        export PATH=/opt/gfortransoft/openmpi/bin:$PATH
      fi
      ;;

  esac
fi

# If the USE_MY_LIBS is activated above, the path of the libraries
# required by ROMS can be set here using environmental variables
# which take precedence to the values specified in the make macro
# definitions file (Compilers/*.mk). For most applications, only
# the location of the NetCDF library is needed during compilation.
#
# Notice that when the USE_NETCDF4 macro is activated, we need the
# serial or parallel version of the NetCDF-4/HDF5 library. The
# configuration script NC_CONFIG (available since NetCDF 4.0.1)
# is used to set up all the required libraries according to the
# installed options (openDAP, netCDF4/HDF5 file format). The
# parallel library uses the MPI-I/O layer (usually available
# in MPICH2 and OpenMPI) requiring compiling with the selected
# MPI library.
#
# In ROMS distributed-memory applications, you may use either the
# serial or parallel version of the NetCDF-4/HDF5 library. The
# parallel version is required when parallel I/O is activated
# (ROMS cpp option PARALLEL_IO and HDF5).
#
# However, in serial or shared-memory ROMS applications, we need
# to use the serial version of the NetCDF-4/HDF5 to avoid conflicts
# with the compiler. We cannot activate MPI constructs in serial
# or shared-memory ROMS code. Hybrid parallelism is not possible.
#
# Recall also that the MPI library comes in several flavors:
# MPICH, MPICH2, OpenMPI, etc.

if [ -n "${USE_MY_LIBS:+1}" ]; then
  case "$FORT" in
    ifort )
      export             ESMF_OS=Linux
      export       ESMF_COMPILER=ifort
      export           ESMF_BOPT=O
      export            ESMF_ABI=64
      export           ESMF_COMM=mpich
      export           ESMF_SITE=default

      export       ARPACK_LIBDIR=/opt/intelsoft/serial/ARPACK
      if [ -n "${USE_MPI:+1}" ]; then
        if [ "${which_MPI}" = "mpich" ]; then
          export        ESMF_DIR=/opt/intelsoft/mpich/esmf
          export      MCT_INCDIR=/opt/intelsoft/mpich/mct/include
          export      MCT_LIBDIR=/opt/intelsoft/mpich/mct/lib
          export  PARPACK_LIBDIR=/opt/intelsoft/mpich/PARPACK
        elif [ "${which_MPI}" = "mpich2" ]; then
          export        ESMF_DIR=/opt/intelsoft/mpich2/esmf
          export      MCT_INCDIR=/opt/intelsoft/mpich2/mct/include
          export      MCT_LIBDIR=/opt/intelsoft/mpich2/mct/lib
          export  PARPACK_LIBDIR=/opt/intelsoft/mpich2/PARPACK
        elif [ "${which_MPI}" = "openmpi" ]; then
          export        ESMF_DIR=/opt/intelsoft/openmpi/esmf
          export      MCT_INCDIR=/opt/intelsoft/openmpi/mct/include
          export      MCT_LIBDIR=/opt/intelsoft/openmpi/mct/lib
          export  PARPACK_LIBDIR=/opt/intelsoft/openmpi/PARPACK
        fi
      fi

      if [ -n "${USE_NETCDF4:+1}" ]; then
        if [ -n "${USE_PARALLEL_IO:+1}" ] && [ -n "${USE_MPI:+1}" ]; then
          if [ "${which_MPI}" = "mpich" ]; then
            export     NC_CONFIG=/opt/intelsoft/mpich/netcdf4/bin/nc-config
            export NETCDF_INCDIR=/opt/intelsoft/mpich/netcdf4/include
          elif [ "${which_MPI}" = "mpich2" ]; then
            export     NC_CONFIG=/opt/intelsoft/mpich2/netcdf4/bin/nc-config
            export NETCDF_INCDIR=/opt/intelsoft/mpich2/netcdf4/include
          elif [ "${which_MPI}" = "openmpi" ]; then
            export     NC_CONFIG=/opt/intelsoft/openmpi/netcdf4/bin/nc-config
            export NETCDF_INCDIR=/opt/intelsoft/openmpi/netcdf4/include
          fi
        else
          export       NC_CONFIG=/opt/intelsoft/serial/netcdf4/bin/nc-config
          export   NETCDF_INCDIR=/opt/intelsoft/serial/netcdf4/include
        fi
      else
        export     NETCDF_INCDIR=/opt/intelsoft/serial/netcdf3/include
        export     NETCDF_LIBDIR=/opt/intelsoft/serial/netcdf3/lib
      fi
      ;;

    pgi )
      export             ESMF_OS=Linux
      export       ESMF_COMPILER=pgi
      export           ESMF_BOPT=O
      export            ESMF_ABI=64
      export           ESMF_COMM=mpich
      export           ESMF_SITE=default

      export       ARPACK_LIBDIR=/opt/pgisoft/serial/ARPACK
      if [ -n "${USE_MPI:+1}" ]; then
        if [ "${which_MPI}" = "mpich" ]; then
          export        ESMF_DIR=/opt/pgisoft/mpich/esmf
          export      MCT_INCDIR=/opt/pgisoft/mpich/mct/include
          export      MCT_LIBDIR=/opt/pgisoft/mpich/mct/lib
          export  PARPACK_LIBDIR=/opt/pgisoft/mpich/PARPACK
        elif [ "${which_MPI}" = "mpich2" ]; then
          export        ESMF_DIR=/opt/pgisoft/mpich2/esmf
          export      MCT_INCDIR=/opt/pgisoft/mpich2/mct/include
          export      MCT_LIBDIR=/opt/pgisoft/mpich2/mct/lib
          export  PARPACK_LIBDIR=/opt/pgisoft/mpich2/PARPACK
        elif [ "${which_MPI}" = "openmpi" ]; then
          export        ESMF_DIR=/opt/pgisoft/openmpi/esmf
          export      MCT_INCDIR=/opt/pgisoft/openmpi/mct/include
          export      MCT_LIBDIR=/opt/pgisoft/openmpi/mct/lib
          export  PARPACK_LIBDIR=/opt/pgisoft/openmpi/PARPACK
        fi
      fi

      if [ -n "${USE_NETCDF4:+1}" ]; then
        if [ -n "${USE_PARALLEL_IO:+1}" ] && [ -n "${USE_MPI:+1}" ]; then
          if [ "${which_MPI}" = "mpich" ]; then
            export     NC_CONFIG=/opt/pgisoft/mpich/netcdf4/bin/nc-config
            export NETCDF_INCDIR=/opt/pgisoft/mpich/netcdf4/include
          elif [ "${which_MPI}" = "mpich2" ]; then
            export     NC_CONFIG=/opt/pgisoft/mpich2/netcdf4/bin/nc-config
            export NETCDF_INCDIR=/opt/pgisoft/mpich2/netcdf4/include
          elif [ "${which_MPI}" = "openmpi" ]; then
            export     NC_CONFIG=/opt/pgisoft/openmpi/netcdf4/bin/nc-config
            export NETCDF_INCDIR=/opt/pgisoft/openmpi/netcdf4/include
          fi
        else
          export       NC_CONFIG=/opt/pgisoft/serial/netcdf4/bin/nc-config
          export   NETCDF_INCDIR=/opt/pgisoft/serial/netcdf4/include
        fi
      else
        export     NETCDF_INCDIR=/opt/pgisoft/serial/netcdf3/include
        export     NETCDF_LIBDIR=/opt/pgisoft/serial/netcdf3/lib
      fi
      ;;

    gfortran )
      export             ESMF_OS=Linux
      export       ESMF_COMPILER=gfortran
      export           ESMF_BOPT=O
      export            ESMF_ABI=64
      export           ESMF_COMM=mpich
      export           ESMF_SITE=default

      export       ARPACK_LIBDIR=/opt/gfortransoft/serial/ARPACK
      if [ -n "${USE_MPI:+1}" ]; then
        if [ "${which_MPI}" = "mpich2" ]; then
          export        ESMF_DIR=/opt/gfortransoft/mpich2/esmf
          export      MCT_INCDIR=/opt/gfortransoft/mpich2/mct/include
          export      MCT_LIBDIR=/opt/gfortransoft/mpich2/mct/lib
          export  PARPACK_LIBDIR=/opt/gfortransoft/mpich2/PARPACK
        elif [ "${which_MPI}" = "openmpi" ]; then
          export        ESMF_DIR=/opt/gfortransoft/openmpi/esmf
          export      MCT_INCDIR=/opt/gfortransoft/openmpi/mct/include
          export      MCT_LIBDIR=/opt/gfortransoft/openmpi/mct/lib
          export  PARPACK_LIBDIR=/opt/gfortransoft/openmpi/PARPACK
        fi
      fi

      if [ -n "${USE_NETCDF4:+1}" ]; then
        if [ -n "${USE_PARALLEL_IO:+1}" ] && [ -n "${USE_MPI:+1}" ]; then
          if [ "${which_MPI}" = "mpich2" ]; then
            export     NC_CONFIG=/opt/gfortransoft/mpich2/netcdf4/bin/nc-config
            export NETCDF_INCDIR=/opt/gfortransoft/mpich2/netcdf4/include
          elif [ "${which_MPI}" = "openmpi" ]; then
            export     NC_CONFIG=/opt/gfortransoft/openmpi/netcdf4/bin/nc-config
            export NETCDF_INCDIR=/opt/gfortransoft/openmpi/netcdf4/include
          fi
        else
          export       NC_CONFIG=/opt/gfortransoft/serial/netcdf4/bin/nc-config
          export   NETCDF_INCDIR=/opt/gfortransoft/serial/netcdf4/include
        fi
      else
        export     NETCDF_INCDIR=/opt/gfortransoft/serial/netcdf3/include
        export     NETCDF_LIBDIR=/opt/gfortransoft/serial/netcdf3/lib
      fi
      ;;

  esac
fi

# The rest of this script sets the path to the users header file and
# analytical source files, if any. See the templates in User/Functionals.
#
# If applicable, use the MY_ANALYTICAL_DIR directory to place your
# customized biology model header file (like fennel.h, nemuro.h, ecosim.h,
# etc).

 export     MY_HEADER_DIR=${MY_PROJECT_DIR}

 export MY_ANALYTICAL_DIR=${MY_PROJECT_DIR}

# Put the binary to execute in the following directory.

 export            BINDIR=${MY_PROJECT_DIR}

# Put the f90 files in a project specific Build directory to avoid conflict
# with other projects.

 export       SCRATCH_DIR=${MY_PROJECT_DIR}/Build

# Go to the users source directory to compile. The options set above will
# pick up the application-specific code from the appropriate place.

 cd ${MY_ROMS_SRC}

# Remove build directory.

if [ $clean -eq 1 ]; then
  make clean
fi

# Compile (the binary will go to BINDIR set above).

if [ $parallel -eq 1 ]; then
  make $NCPUS
else
  make
fi

Code: Select all

!
!  ROMS/TOMS Standard Input parameters.
!
!svn $Id: ocean_inlet_test.in 720 2014-03-13 22:47:51Z arango $
!========================================================= Hernan G. Arango ===
!  Copyright (c) 2002-2014 The ROMS/TOMS Group                                !
!    Licensed under a MIT/X style license                                     !
!    See License_ROMS.txt                                                     !
!==============================================================================
!                                                                             !
! Input parameters can be entered in ANY order, provided that the parameter   !
! KEYWORD (usually, upper case) is typed correctly followed by "="  or "=="   !
! symbols. Any comment lines are allowed and must begin with an exclamation   !
! mark (!) in column one.  Comments may  appear to the right of a parameter   !
! specification to improve documentation.  Comments will be ignored  during   !
! reading.  Blank lines are also allowed and ignored. Continuation lines in   !
! a parameter specification are allowed and must be preceded by a backslash   !
! (\).  In some instances, more than one value is required for a parameter.   !
! If fewer values are provided, the  last value  is assigned for the entire   !
! parameter array.  The multiplication symbol (*),  without blank spaces in   !
! between, is allowed for a parameter specification.  For example, in a two   !
! grids nested application:                                                   !
!                                                                             !
!    AKT_BAK == 2*1.0d-6  2*5.0d-6              ! m2/s                        !
!                                                                             !
! indicates that the first two entries of array AKT_BAK,  in fortran column-  !
! major order, will have the same value of "1.0d-6" for grid 1,  whereas the  !
! next two entries will have the same value of "5.0d-6" for grid 2.           !
!                                                                             !
! In multiple levels of nesting and/or multiple connected domains  step-ups,  !
! "Ngrids" entries are expected for some of these parameters.  In such case,  !
! the order of the entries for a parameter is extremely important.  It  must  !
! follow the same order (1:Ngrids) as in the state variable declaration. The  !
! USER may follow the above guidelines for specifying his/her values.  These  !
! parameters are marked by "==" plural symbol after the KEYWORD.              !
!                                                                             !
! Multiple NetCDF files are allowed for input field(s).  This is useful when  !
! splitting input data (climatology,  boundary,  forcing)  time records into  !
! several files (say monthly, annual, etc). In this case, each multiple file  !
! entry line needs to be ended by the vertical bar (|) symbol. For example:   !
!                                                                             !
!    NFFILES == 7                          ! number of forcing files          !
!                                                                             !
!    FRCNAME == my_tides.nc       \                                           !
!               my_lwrad_year1.nc |                                           !
!               my_lwrad_year2.nc \                                           !
!               my_swrad_year1.nc |                                           !
!               my_swrad_year2.nc \                                           !
!               my_winds_year1.nc |                                           !
!               my_winds_year2.nc \                                           !
!               my_Pair_year1.nc  |                                           !
!               my_Pair_year2.nc  \                                           !
!               my_Qair_year1.nc  |                                           !
!               my_Qair_year2.nc  \                                           !
!               my_Tair_year1.nc  |                                           !
!               my_Tair_year2.nc                                              !
!                                                                             !
! Notice that NFFILES is 7 and not 13. There are 7 uniquely different fields  !
! in the file list,  we  DO NOT  count file entries followed by the vertical  !
! bar symbol.  This is because  multiple file  entries are processed in ROMS  !
! with derived type structures.                                               !
!                                                                             !
!==============================================================================
!
! Application title.

       TITLE = Inlet Test Case

! C-preprocessing Flag.

    MyAppCPP = INLET_TEST

! Input variable information file name.  This file needs to be processed
! first so all information arrays can be initialized properly.

     VARNAME = ./varinfo.dat

! Number of nested grids.

      Ngrids =  1

! Number of grid nesting layers.  This parameter is used to allow refinement
! and composite grid combinations.

  NestLayers =  1

! Number of grids in each nesting layer [1:NestLayers].

GridsInLayer =  1

! Grid dimension parameters. See notes below in the Glossary for how to set
! these parameters correctly.

          Lm == 75            ! Number of I-direction INTERIOR RHO-points
          Mm == 70            ! Number of J-direction INTERIOR RHO-points
           N == 8             ! Number of vertical levels

        Nbed =  1             ! Number of sediment bed layers

         NAT =  2             ! Number of active tracers (usually, 2)
         NPT =  0             ! Number of inactive passive tracers
         NCS =  1             ! Number of cohesive (mud) sediment tracers
         NNS =  0             ! Number of non-cohesive (sand) sediment tracers

! Domain decomposition parameters for serial, distributed-memory or
! shared-memory configurations used to determine tile horizontal range
! indices (Istr,Iend) and (Jstr,Jend), [1:Ngrids].

      NtileI == 2                               ! I-direction partition
      NtileJ == 2                               ! J-direction partition

! Set lateral boundary conditions keyword. Notice that a value is expected
! for each boundary segment per nested grid for each state variable.
!
! Each tracer variable requires [1:4,1:NAT+NPT,Ngrids] values. Otherwise,
! [1:4,1:Ngrids] values are expected for other variables. The boundary
! order is: 1=west, 2=south, 3=east, and 4=north. That is, anticlockwise
! starting at the western boundary.
!
! The keyword is case insensitive and usually has three characters. However,
! it is possible to have compound keywords, if applicable. For example, the
! keyword "RadNud" implies radiation boundary condition with nudging. This
! combination is usually used in active/passive radiation conditions.
!
!   Keyword    Lateral Boundary Condition Type
!
!   Cha        Chapman_implicit (free-surface)
!   Che        Chapman_explicit (free-surface)
!   Cla        Clamped
!   Clo        Closed
!   Fla        Flather (2D momentum)                  _____N_____     j=Mm
!   Gra        Gradient                              |     4     |
!   Nes        Nested (refinement)                   |           |
!   Nud        Nudging                             1 W           E 3
!   Per        Periodic                              |           |
!   Rad        Radiation                             |_____S_____|
!   Red        Reduced Physics (2D momentum)               2          j=1
!   Shc        Shchepetkin (2D momentum)            i=1         i=Lm
!
!                   W       S       E       N
!                   e       o       a       o
!                   s       u       s       r
!                   t       t       t       t
!                           h               h
!
!                   1       2       3       4

   LBC(isFsur) ==   Gra     Clo     Gra     Gra         ! free-surface
   LBC(isUbar) ==   Gra     Clo     Gra     Red         ! 2D U-momentum
   LBC(isVbar) ==   Gra     Clo     Gra     Red         ! 2D V-momentum
   LBC(isUvel) ==   Gra     Clo     Gra     Gra         ! 3D U-momentum
   LBC(isVvel) ==   Gra     Clo     Gra     Gra         ! 3D V-momentum
   LBC(isMtke) ==   Gra     Clo     Gra     Gra         ! mixing TKE

   LBC(isTvar) ==   Gra     Clo     Gra     Gra \       ! temperature
                    Gra     Clo     Gra     Gra         ! salinity

! Adjoint-based algorithms can have different lateral boundary
! conditions keywords.

ad_LBC(isFsur) ==   Gra     Clo     Gra     Gra         ! free-surface
ad_LBC(isUbar) ==   Gra     Clo     Gra     Red         ! 2D U-momentum
ad_LBC(isVbar) ==   Gra     Clo     Gra     Red         ! 2D U-momentum
ad_LBC(isUvel) ==   Gra     Clo     Gra     Gra         ! 3D U-momentum
ad_LBC(isVvel) ==   Gra     Clo     Gra     Gra         ! 3D V-momentum
ad_LBC(isMtke) ==   Gra     Clo     Gra     Gra         ! mixing TKE

ad_LBC(isTvar) ==   Gra     Clo     Gra     Gra \       ! temperature
                    Gra     Clo     Gra     Gra         ! salinity

! Set lateral open boundary edge volume conservation switch for
! nonlinear model and adjoint-based algorithms. Usually activated
! with radiation boundary conditions to enforce global mass
! conservation, except if tidal forcing is enabled. [1:Ngrids].

   VolCons(west)  ==  F                            ! western  boundary
   VolCons(east)  ==  F                            ! eastern  boundary
   VolCons(south) ==  F                            ! southern boundary
   VolCons(north) ==  F                            ! northern boundary

ad_VolCons(west)  ==  F                            ! western  boundary
ad_VolCons(east)  ==  F                            ! eastern  boundary
ad_VolCons(south) ==  F                            ! southern boundary
ad_VolCons(north) ==  F                            ! northern boundary

! Time-Stepping parameters.

      NTIMES == 34560
          DT == 5.0d0
     NDTFAST == 20

! Model iteration loops parameters.

       ERstr =  1
       ERend =  1
      Nouter =  1
      Ninner =  1
  Nintervals =  1

! Number of eigenvalues (NEV) and eigenvectors (NCV) to compute for the
! Lanczos/Arnoldi problem in the Generalized Stability Theory (GST)
! analysis. NCV must be greater than NEV (see documentation below).

         NEV =  2                               ! Number of eigenvalues
         NCV =  10                              ! Number of eigenvectors

! Input/Output parameters.

       NRREC == 0
   LcycleRST == T
        NRST == 720
        NSTA == 1
        NFLT == 1
       NINFO == 1

! Output history, average, diagnostic files parameters.

     LDEFOUT == T
        NHIS == 720
     NDEFHIS == 0
      NTSAVG == 1
        NAVG == 3600
     NDEFAVG == 0
      NTSDIA == 1
        NDIA == 3600
     NDEFDIA == 0

! Output tangent linear and adjoint models parameters.

   LcycleTLM == F
        NTLM == 720
     NDEFTLM == 0
   LcycleADJ == F
        NADJ == 720
     NDEFADJ == 0
        NSFF == 720
        NOBC == 720

! GST output and check pointing restart parameters.

   LmultiGST =  F                               ! one eigenvector per file
     LrstGST =  F                               ! GST restart switch
  MaxIterGST =  500                             ! maximum number of iterations
        NGST =  10                              ! check pointing interval

! Relative accuracy of the Ritz values computed in the GST analysis.

    Ritz_tol =  1.0d-15

! Harmonic/biharmonic horizontal diffusion of tracer for nonlinear model
! and adjoint-based algorithms: [1:NAT+NPT,Ngrids].

        TNU2 == 0.0d0  0.0d0                    ! m2/s
        TNU4 == 0.0d0  0.0d0                    ! m4/s

     ad_TNU2 == 0.0d0  0.0d0                    ! m2/s
     ad_TNU4 == 0.0d0  0.0d0                    ! m4/s

! Harmonic/biharmonic, horizontal viscosity coefficient for nonlinear model
! and adjoint-based algorithms: [Ngrids].

       VISC2 == 0.001d0                         ! m2/s
       VISC4 == 0.0d0                           ! m4/s

    ad_VISC2 == 0.0d0                           ! m2/s
    ad_VISC4 == 0.0d0                           ! m4/s

! Logical switches (TRUE/FALSE) to increase/decrease horizontal viscosity
! and/or diffusivity in specific areas of the application domain (like
! sponge areas) for the desired application grid.

    LuvSponge == F                              ! horizontal momentum
LtracerSponge == F F                            ! temperature, salinity, inert

! Vertical mixing coefficients for tracers in nonlinear model and
! basic state scale factor in adjoint-based algorithms: [1:NAT+NPT,Ngrids]

     AKT_BAK == 5.0d-6  5.0d-6                  ! m2/s

  ad_AKT_fac == 1.0d0  1.0d0                    ! nondimensional

! Vertical mixing coefficient for momentum for nonlinear model and
! basic state scale factor in adjoint-based algorithms: [Ngrids].

     AKV_BAK == 5.0d-5                          ! m2/s

  ad_AKV_fac == 1.0d0                           ! nondimensional

! Turbulent closure parameters.

     AKK_BAK == 5.0d-6                          ! m2/s
     AKP_BAK == 5.0d-6                          ! m2/s
      TKENU2 == 0.0d0                           ! m2/s
      TKENU4 == 0.0d0                           ! m4/s

! Generic length-scale turbulence closure parameters.

       GLS_P == 3.0d0                           ! K-epsilon
       GLS_M == 1.5d0
       GLS_N == -1.0d0
    GLS_Kmin == 7.6d-6
    GLS_Pmin == 1.0d-12

    GLS_CMU0 == 0.5477d0
      GLS_C1 == 1.44d0
      GLS_C2 == 1.92d0
     GLS_C3M == -0.4d0
     GLS_C3P == 1.0d0
    GLS_SIGK == 1.0d0
    GLS_SIGP == 1.30d0

! Constants used in surface turbulent kinetic energy flux computation.

  CHARNOK_ALPHA == 1400.0d0         ! Charnok surface roughness
 ZOS_HSIG_ALPHA == 0.5d0            ! roughness from wave amplitude
       SZ_ALPHA == 0.25d0           ! roughness from wave dissipation
      CRGBAN_CW == 100.0d0          ! Craig and Banner wave breaking

! Constants used in momentum stress computation.

        RDRG == 3.0d-04                    ! m/s
       RDRG2 == 0.025d0                    ! nondimensional
         Zob == 0.015d0                    ! m
         Zos == 0.5d0                      ! m

! Height (m) of atmospheric measurements for Bulk fluxes parameterization.

      BLK_ZQ == 10.0d0                     ! air humidity
      BLK_ZT == 10.0d0                     ! air temperature
      BLK_ZW == 10.0d0                     ! winds

! Minimum depth for wetting and drying.

       DCRIT == 0.10d0                     ! m

! Various parameters.

       WTYPE == 1
     LEVSFRC == 15
     LEVBFRC == 1

! Set vertical, terrain-following coordinates transformation equation and
! stretching function (see below for details), [1:Ngrids].

  Vtransform == 1                          ! transformation equation
 Vstretching == 1                          ! stretching function

! Vertical S-coordinates parameters (see below for details), [1:Ngrids].

     THETA_S == 1.0d0                      ! surface stretching parameter
     THETA_B == 1.0d0                      ! bottom  stretching parameter
      TCLINE == 0.0d0                      ! critical depth (m)

! Mean Density and Brunt-Vaisala frequency.

        RHO0 =  1025.0d0                   ! kg/m3
     BVF_BAK =  1.0d-5                     ! 1/s2

! Time-stamp assigned for model initialization, reference time
! origin for tidal forcing, and model reference time for output
! NetCDF units attribute.

      DSTART =  0.0d0                      ! days
  TIDE_START =  0.0d0                      ! days
    TIME_REF =  0.0d0                      ! yyyymmdd.dd

! Nudging/relaxation time scales, inverse scales will be computed
! internally, [1:Ngrids].

       TNUDG == 0.0d0  0.0d0               ! days
       ZNUDG == 0.0d0                      ! days
      M2NUDG == 0.0d0                      ! days
      M3NUDG == 0.0d0                      ! days

! Factor between passive (outflow) and active (inflow) open boundary
! conditions, [1:Ngrids]. If OBCFAC > 1, nudging on inflow is stronger
! than on outflow (recommended).

      OBCFAC == 0.0d0                      ! nondimensional

! Linear equation of State parameters:

          R0 == 1027.0d0                   ! kg/m3
          T0 == 10.0d0                     ! Celsius
          S0 == 30.0d0                     ! nondimensional
       TCOEF == 1.7d-4                     ! 1/Celsius
       SCOEF == 7.6d-4                     ! nondimensional

! Slipperiness parameter: 1.0 (free slip) or -1.0 (no slip)

      GAMMA2 == 1.0d0

! Logical switches (TRUE/FALSE) to activate horizontal momentum transport
! point Sources/Sinks (like river runoff transport) and mass point
! Sources/Sinks (like volume vertical influx), [1:Ngrids].

      LuvSrc == F                          ! horizontal momentum transport
       LwSrc == F                          ! volume vertical influx

! Logical switches (TRUE/FALSE) to activate tracers point Sources/Sinks
! (like river runoff) and to specify which tracer variables to consider:
! [1:NAT+NPT,Ngrids].  See glossary below for details.

  LtracerSrc == F F                        ! temperature, salinity, inert

! Logical switches (TRUE/FALSE) to read and process climatology fields.
! See glossary below for details.

     LsshCLM == F                          ! sea-surface height
      Lm2CLM == F                          ! 2D momentum
      Lm3CLM == F                          ! 3D momentum

  LtracerCLM == F F                        ! temperature, salinity, inert

! Logical switches (TRUE/FALSE) to nudge the desired climatology field(s).
! If not analytical climatology fields, users need to turn ON the logical
! switches above to process the fields from the climatology NetCDF file
! that are needed for nudging. See glossary below for details.

 LnudgeM2CLM == F                          ! 2D momentum
 LnudgeM3CLM == F                          ! 3D momentum

  LnudgeTCLM == F F                        ! temperature, salinity, inert

! Starting (DstrS) and ending (DendS) day for adjoint sensitivity forcing.
! DstrS must be less or equal to DendS. If both values are zero, their
! values are reset internally to the full range of the adjoint integration.

       DstrS == 0.0d0                      ! starting day
       DendS == 0.0d0                      ! ending day

! Starting and ending vertical levels of the 3D adjoint state variables
! whose sensitivity is required.

       KstrS == 1                          ! starting level
       KendS == 1                          ! ending level

! Logical switches (TRUE/FALSE) to specify the adjoint state variables
! whose sensitivity is required.

Lstate(isFsur) == F                        ! free-surface
Lstate(isUbar) == F                        ! 2D U-momentum
Lstate(isVbar) == F                        ! 2D V-momentum
Lstate(isUvel) == F                        ! 3D U-momentum
Lstate(isVvel) == F                        ! 3D V-momentum

Lstate(isTvar) == F F                      ! NT tracers

! Logical switches (TRUE/FALSE) to specify the state variables for
! which Forcing Singular Vectors or Stochastic Optimals is required.

Fstate(isFsur) == F                        ! free-surface
Fstate(isUbar) == F                        ! 2D U-momentum
Fstate(isVbar) == F                        ! 2D V-momentum
Fstate(isUvel) == F                        ! 3D U-momentum
Fstate(isVvel) == F                        ! 3D V-momentum
Fstate(isTvar) == F F                      ! NT tracers

Fstate(isUstr) == T                        ! surface U-stress
Fstate(isVstr) == T                        ! surface V-stress
Fstate(isTsur) == F F                      ! NT surface tracers flux

! Stochastic Optimals time decorrelation scale (days) assumed for
! red noise processes.

      SO_decay == 2.0d0                    ! days

! Stochastic Optimals surface forcing standard deviation for
! dimensionalization.

SO_sdev(isFsur) == 1.0d0                   ! free-surface
SO_sdev(isUbar) == 1.0d0                   ! 2D U-momentum
SO_sdev(isVbar) == 1.0d0                   ! 2D V-momentum
SO_sdev(isUvel) == 1.0d0                   ! 3D U-momentum
SO_sdev(isVvel) == 1.0d0                   ! 3D V-momentum
SO_sdev(isTvar) == 1.0d0 1.0d0             ! NT tracers

SO_sdev(isUstr) == 1.0d0                   ! surface U-stress
SO_sdev(isVstr) == 1.0d0                   ! surface V-stress
SO_sdev(isTsur) == 1.0d0 1.0d0             ! NT surface tracers flux

! Logical switches (TRUE/FALSE) to activate writing of fields into
! HISTORY output file.

Hout(idUvel) == T       ! u                  3D U-velocity
Hout(idVvel) == T       ! v                  3D V-velocity
Hout(idu3dE) == F       ! u_eastward         3D U-eastward  at RHO-points
Hout(idv3dN) == F       ! v_northward        3D V-northward at RHO-points
Hout(idWvel) == T       ! w                  3D W-velocity
Hout(idOvel) == F       ! omega              omega vertical velocity
Hout(idUbar) == F       ! ubar               2D U-velocity
Hout(idVbar) == F       ! vbar               2D V-velocity
Hout(idu2dE) == F       ! ubar_eastward      2D U-eastward  at RHO-points
Hout(idv2dN) == F       ! vbar_northward     2D V-northward at RHO-points
Hout(idFsur) == T       ! zeta               free-surface
Hout(idBath) == F       ! bath               time-dependent bathymetry

Hout(idTvar) == F F     ! temp, salt         temperature and salinity

Hout(idUsms) == F       ! sustr              surface U-stress
Hout(idVsms) == F       ! svstr              surface V-stress
Hout(idUbms) == F       ! bustr              bottom U-stress
Hout(idVbms) == F       ! bvstr              bottom V-stress

Hout(idUbrs) == F       ! bustrc             bottom U-current stress
Hout(idVbrs) == F       ! bvstrc             bottom V-current stress
Hout(idUbws) == F       ! bustrw             bottom U-wave stress
Hout(idVbws) == F       ! bvstrw             bottom V-wave stress
Hout(idUbcs) == F       ! bustrcwmax         bottom max wave-current U-stress
Hout(idVbcs) == F       ! bvstrcwmax         bottom max wave-current V-stress

Hout(idUbot) == F       ! Ubot               bed wave orbital U-velocity
Hout(idVbot) == F       ! Vbot               bed wave orbital V-velocity
Hout(idUbur) == F       ! Ur                 bottom U-velocity above bed
Hout(idVbvr) == F       ! Vr                 bottom V-velocity above bed

Hout(idW2xx) == F       ! Sxx_bar            2D radiation stress, Sxx component
Hout(idW2xy) == F       ! Sxy_bar            2D radiation stress, Sxy component
Hout(idW2yy) == F       ! Syy_bar            2D radiation stress, Syy component
Hout(idU2rs) == F       ! Ubar_Rstress       2D radiation U-stress
Hout(idV2rs) == F       ! Vbar_Rstress       2D radiation V-stress
Hout(idU2Sd) == F       ! ubar_stokes        2D U-Stokes velocity
Hout(idV2Sd) == F       ! vbar_stokes        2D V-Stokes velocity

Hout(idW3xx) == F       ! Sxx                3D radiation stress, Sxx component
Hout(idW3xy) == F       ! Sxy                3D radiation stress, Sxy component
Hout(idW3yy) == F       ! Syy                3D radiation stress, Syy component
Hout(idW3zx) == F       ! Szx                3D radiation stress, Szx component
Hout(idW3zy) == F       ! Szy                3D radiation stress, Szy component
Hout(idU3rs) == F       ! u_Rstress          3D U-radiation stress
Hout(idV3rs) == F       ! v_Rstress          3D V-radiation stress
Hout(idU3Sd) == F       ! u_stokes           3D U-Stokes velocity
Hout(idV3Sd) == F       ! v_stokes           3D V-Stokes velocity

Hout(idWamp) == T       ! Hwave              wave height
Hout(idWlen) == T       ! Lwave              wave length
Hout(idWdir) == T       ! Dwave              wave direction
Hout(idWptp) == F       ! Pwave_top          wave surface period
Hout(idWpbt) == F       ! Pwave_bot          wave bottom period
Hout(idWorb) == F       ! Ub_swan            wave bottom orbital velocity
Hout(idWdis) == F       ! Wave_dissip        wave dissipation

Hout(idPair) == F       ! Pair               surface air pressure
Hout(idUair) == F       ! Uair               surface U-wind component
Hout(idVair) == F       ! Vair               surface V-wind component

Hout(idTsur) == F F     ! shflux, ssflux     surface net heat and salt flux
Hout(idLhea) == F       ! latent             latent heat flux
Hout(idShea) == F       ! sensible           sensible heat flux
Hout(idLrad) == F       ! lwrad              longwave radiation flux
Hout(idSrad) == F       ! swrad              shortwave radiation flux
Hout(idEmPf) == F       ! EminusP            E-P flux
Hout(idevap) == F       ! evaporation        evaporation rate
Hout(idrain) == F       ! rain               precipitation rate

Hout(idDano) == F       ! rho                density anomaly
Hout(idVvis) == F       ! AKv                vertical viscosity
Hout(idTdif) == F       ! AKt                vertical T-diffusion
Hout(idSdif) == F       ! AKs                vertical Salinity diffusion
Hout(idHsbl) == F       ! Hsbl               depth of surface boundary layer
Hout(idHbbl) == F       ! Hbbl               depth of bottom boundary layer
Hout(idMtke) == F       ! tke                turbulent kinetic energy
Hout(idMtls) == F       ! gls                turbulent length scale

! Logical switches (TRUE/FALSE) to activate writing of extra inert passive
! tracers other than biological and sediment tracers. An inert passive tracer
! is one that it is only advected and diffused. Other processes are ignored.
! These tracers include, for example, dyes, pollutants, oil spills, etc.
! NPT values are expected. However, these switches can be activated using
! compact parameter specification.

 Hout(inert) == T       ! dye_01, ...        inert passive tracers

! Logical switches (TRUE/FALSE) to activate writing of exposed sediment
! layer properties into HISTORY output file.  Currently, MBOTP properties
! are expected for the bottom boundary layer and/or sediment models:
!
! idBott( 1=isd50)   grain_diameter          mean grain diameter
! idBott( 2=idens)   grain_density           mean grain density
! idBott( 3=iwsed)   settling_vel            mean settling velocity
! idBott( 4=itauc)   erosion_stress          critical erosion stress
! idBott( 5=irlen)   ripple_length           ripple length
! idBott( 6=irhgt)   ripple_height           ripple height
! idBott( 7=ibwav)   bed_wave_amp            wave excursion amplitude
! idBott( 8=izdef)   Zo_def                  default bottom roughness
! idBott( 9=izapp)   Zo_app                  apparent bottom roughness
! idBott(10=izNik)   Zo_Nik                  Nikuradse bottom roughness
! idBott(11=izbio)   Zo_bio                  biological bottom roughness
! idBott(12=izbfm)   Zo_bedform              bed form bottom roughness
! idBott(13=izbld)   Zo_bedload              bed load bottom roughness
! idBott(14=izwbl)   Zo_wbl                  wave bottom roughness
! idBott(15=iactv)   active_layer_thickness  active layer thickness
! idBott(16=ishgt)   saltation               saltation height
!
!                                 1 1 1 1 1 1 1
!               1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6

Hout(idBott) == T T T T T T T T T F F F F F F F

! Logical switches (TRUE/FALSE) to activate writing of time-averaged
! fields into AVERAGE output file.

Aout(idUvel) == T       ! u                  3D U-velocity
Aout(idVvel) == T       ! v                  3D V-velocity
Aout(idu3dE) == F       ! u_eastward         3D U-eastward  at RHO-points
Aout(idv3dN) == F       ! v_northward        3D V-northward at RHO-points
Aout(idWvel) == T       ! w                  3D W-velocity
Aout(idOvel) == F       ! omega              omega vertical velocity
Aout(idUbar) == F       ! ubar               2D U-velocity
Aout(idVbar) == F       ! vbar               2D V-velocity
Aout(idu2dE) == F       ! ubar_eastward      2D U-eastward  at RHO-points
Aout(idv2dN) == F       ! vbar_northward     2D V-northward at RHO-points
Aout(idFsur) == T       ! zeta               free-surface

Aout(idTvar) == F F     ! temp, salt         temperature and salinity

Aout(idUsms) == F       ! sustr              surface U-stress
Aout(idVsms) == F       ! svstr              surface V-stress
Aout(idUbms) == F       ! bustr              bottom U-stress
Aout(idVbms) == F       ! bvstr              bottom V-stress

Aout(idW2xx) == F       ! Sxx_bar            2D radiation stress, Sxx component
Aout(idW2xy) == F       ! Sxy_bar            2D radiation stress, Sxy component
Aout(idW2yy) == F       ! Syy_bar            2D radiation stress, Syy component
Aout(idU2rs) == F       ! Ubar_Rstress       2D radiation U-stress
Aout(idV2rs) == F       ! Vbar_Rstress       2D radiation V-stress
Aout(idU2Sd) == F       ! ubar_stokes        2D U-Stokes velocity
Aout(idV2Sd) == F       ! vbar_stokes        2D V-Stokes velocity

Aout(idW3xx) == F       ! Sxx                3D radiation stress, Sxx component
Aout(idW3xy) == F       ! Sxy                3D radiation stress, Sxy component
Aout(idW3yy) == F       ! Syy                3D radiation stress, Syy component
Aout(idW3zx) == F       ! Szx                3D radiation stress, Szx component
Aout(idW3zy) == F       ! Szy                3D radiation stress, Szy component
Aout(idU3rs) == F       ! u_Rstress          3D U-radiation stress
Aout(idV3rs) == F       ! v_Rstress          3D V-radiation stress
Aout(idU3Sd) == F       ! u_stokes           3D U-Stokes velocity
Aout(idV3Sd) == F       ! v_stokes           3D V-Stokes velocity

Aout(idPair) == F       ! Pair               surface air pressure
Aout(idUair) == F       ! Uair               surface U-wind component
Aout(idVair) == F       ! Vair               surface V-wind component

Aout(idTsur) == F F     ! shflux, ssflux     surface net heat and salt flux
Aout(idLhea) == F       ! latent             latent heat flux
Aout(idShea) == F       ! sensible           sensible heat flux
Aout(idLrad) == F       ! lwrad              longwave radiation flux
Aout(idSrad) == F       ! swrad              shortwave radiation flux
Aout(idevap) == F       ! evaporation        evaporation rate
Aout(idrain) == F       ! rain               precipitation rate

Aout(idDano) == F       ! rho                density anomaly
Aout(idVvis) == F       ! AKv                vertical viscosity
Aout(idTdif) == F       ! AKt                vertical T-diffusion
Aout(idSdif) == F       ! AKs                vertical Salinity diffusion
Aout(idHsbl) == F       ! Hsbl               depth of surface boundary layer
Aout(idHbbl) == F       ! Hbbl               depth of bottom boundary layer

Aout(id2dRV) == F       ! pvorticity_bar     2D relative vorticity
Aout(id3dRV) == F       ! pvorticity         3D relative vorticity
Aout(id2dPV) == F       ! rvorticity_bar     2D potential vorticity
Aout(id3dPV) == F       ! rvorticity         3D potential vorticity

Aout(idu3dD) == F       ! u_detided          detided 3D U-velocity
Aout(idv3dD) == F       ! v_detided          detided 3D V-velocity
Aout(idu2dD) == F       ! ubar_detided       detided 2D U-velocity
Aout(idv2dD) == F       ! vbar_detided       detided 2D V-velocity
Aout(idFsuD) == F       ! zeta_detided       detided free-surface

Aout(idTrcD) == F F     ! temp_detided, ...  detided temperature and salinity

Aout(idHUav) == F       ! Huon               u-volume flux, Huon
Aout(idHVav) == F       ! Hvom               v-volume flux, Hvom
Aout(idUUav) == F       ! uu                 quadratic <u*u> term
Aout(idUVav) == F       ! uv                 quadratic <u*v> term
Aout(idVVav) == F       ! vv                 quadratic <v*v> term
Aout(idU2av) == F       ! ubar2              quadratic <ubar*ubar> term
Aout(idV2av) == F       ! vbar2              quadratic <vbar*vbar> term
Aout(idZZav) == F       ! zeta2              quadratic <zeta*zeta> term

Aout(idTTav) == F F     ! temp_2, ...        quadratic <t*t> tracer terms
Aout(idUTav) == F F     ! u_temp, ...        quadratic <u*t> tracer terms
Aout(idVTav) == F F     ! v_temp, ...        quadratic <v*t> tracer terms
Aout(iHUTav) == F F     ! Huon_temp, ...     tracer volume flux, <Huon*t>
Aout(iHVTav) == F F     ! Hvom_temp, ...     tracer volume flux, <Hvom*t>

! Logical switches (TRUE/FALSE) to activate writing of extra inert passive
! tracers other than biological and sediment tracers into the AVERAGE file.

 Aout(inert) == T       ! dye_01, ...        inert passive tracers

! Logical switches (TRUE/FALSE) to activate writing of time-averaged,
! 2D momentum (ubar,vbar) diagnostic terms into DIAGNOSTIC output file.

Dout(M2rate) == T       ! ubar_accel, ...    acceleration
Dout(M2pgrd) == T       ! ubar_prsgrd, ...   pressure gradient
Dout(M2fcor) == T       ! ubar_cor, ...      Coriolis force
Dout(M2hadv) == T       ! ubar_hadv, ...     horizontal total advection
Dout(M2xadv) == T       ! ubar_xadv, ...     horizontal XI-advection
Dout(M2yadv) == T       ! ubar_yadv, ...     horizontal ETA-advection
Dout(M2hrad) == T       ! ubar_hrad, ...     horizontal total radiation stress
Dout(M2hvis) == T       ! ubar_hvisc, ...    horizontal total viscosity
Dout(M2xvis) == T       ! ubar_xvisc, ...    horizontal XI-viscosity
Dout(M2yvis) == T       ! ubar_yvisc, ...    horizontal ETA-viscosity
Dout(M2sstr) == T       ! ubar_sstr, ...     surface stress
Dout(M2bstr) == T       ! ubar_bstr, ...     bottom stress

! Logical switches (TRUE/FALSE) to activate writing of time-averaged,
! 3D momentum (u,v) diagnostic terms into DIAGNOSTIC output file.

Dout(M3rate) == T       ! u_accel, ...       acceleration
Dout(M3pgrd) == T       ! u_prsgrd, ...      pressure gradient
Dout(M3fcor) == T       ! u_cor, ...         Coriolis force
Dout(M3hadv) == T       ! u_hadv, ...        horizontal total advection
Dout(M3xadv) == T       ! u_xadv, ...        horizontal XI-advection
Dout(M3yadv) == T       ! u_yadv, ...        horizontal ETA-advection
Dout(M3vadv) == T       ! u_vadv, ...        vertical advection
Dout(M3hrad) == T       ! u_hrad, ...        horizontal total radiation stress
Dout(M3vrad) == T       ! u_vrad, ...        vertical radiation stress
Dout(M3hvis) == T       ! u_hvisc, ...       horizontal total viscosity
Dout(M3xvis) == T       ! u_xvisc, ...       horizontal XI-viscosity
Dout(M3yvis) == T       ! u_yvisc, ...       horizontal ETA-viscosity
Dout(M3vvis) == T       ! u_vvisc, ...       vertical viscosity

! Logical switches (TRUE/FALSE) to activate writing of time-averaged,
! active (temperature and salinity) and passive (inert) tracer diagnostic
! terms into DIAGNOSTIC output file: [1:NAT+NPT,Ngrids].

Dout(iTrate) == T T     ! temp_rate, ...     time rate of change
Dout(iThadv) == T T     ! temp_hadv, ...     horizontal total advection
Dout(iTxadv) == T T     ! temp_xadv, ...     horizontal XI-advection
Dout(iTyadv) == T T     ! temp_yadv, ...     horizontal ETA-advection
Dout(iTvadv) == T T     ! temp_vadv, ...     vertical advection
Dout(iThdif) == T T     ! temp_hdiff, ...    horizontal total diffusion
Dout(iTxdif) == T T     ! temp_xdiff, ...    horizontal XI-diffusion
Dout(iTydif) == T T     ! temp_ydiff, ...    horizontal ETA-diffusion
Dout(iTsdif) == T T     ! temp_sdiff, ...    horizontal S-diffusion
Dout(iTvdif) == T T     ! temp_vdiff, ...    vertical diffusion

! Generic User parameters, [1:NUSER].

       NUSER =  0
        USER =  0.d0

! NetCDF-4/HDF5 compression parameters for output files.

  NC_SHUFFLE =  1                 ! if non-zero, turn on shuffle filter
  NC_DEFLATE =  1                 ! if non-zero, turn on deflate filter
   NC_DLEVEL =  1                 ! deflate level [0-9]

! Input NetCDF file names, [1:Ngrids].

     GRDNAME == Data/inlet_test_grid.nc
     ININAME == ocean_ini.nc
     ITLNAME == ocean_itl.nc
     IRPNAME == ocean_irp.nc
     IADNAME == ocean_iad.nc
     FWDNAME == ocean_fwd.nc
     ADSNAME == ocean_ads.nc

! Nesting grids connectivity data: contact points information. This
! NetCDF file is special and complex. It is currently generated using
! the script "matlab/grid/contact.m" from the Matlab repository.

     NGCNAME =  ocean_ngc.nc

! Input lateral boundary conditions and climatology file names.  The
! USER has the option to split input data time records into several
! NetCDF files (see prologue instructions above). If so, use a single
! line per entry with a vertical bar (|) symbol after each entry,
! except the last one.

     BRYNAME == ocean_bry.nc
     CLMNAME == ocean_clm.nc

! Input climatology nudging coefficients file name.

     NUDNAME == ocean_nud.nc

! Input Sources/Sinks forcing (like river runoff) file name.

     SSFNAME == ocean_rivers.nc

! Input forcing NetCDF file name(s).  The USER has the option to enter
! several file names for each nested grid.  For example, the USER may
! have different files for wind products, heat fluxes, tides, etc.
! The model will scan the file list and will read the needed data from
! the first file in the list containing the forcing field. Therefore,
! the order of the file names is very important. If using multiple forcing
! files per grid, first enter all the file names for grid 1, then grid 2,
! and so on.  It is also possible to split input data time records into
! several NetCDF files (see prologue instructions above). Use a single line
! per entry with a continuation (\) or vertical bar (|) symbol after each
! entry, except the last one.

     NFFILES == 1                          ! number of unique forcing files

     FRCNAME == ocean_frc.nc               ! forcing file 1, grid 1

! Output NetCDF file names, [1:Ngrids].

     GSTNAME == ocean_gst.nc
     RSTNAME == ocean_rst.nc
     HISNAME == ocean_his.nc
     TLMNAME == ocean_tlm.nc
     TLFNAME == ocean_tlf.nc
     ADJNAME == ocean_adj.nc
     AVGNAME == ./ocean_avg.nc
     DIANAME == ocean_dia.nc
     STANAME == ocean_sta.nc
     FLTNAME == ocean_flt.nc

! Input ASCII parameter filenames.

     APARNAM =  s4dvar.in
     SPOSNAM =  stations.in
     FPOSNAM =  floats.in
     BPARNAM =  bio_Fennel.in
     SPARNAM =  sediment_inlet_test.in
     USRNAME =  MyFile.dat


User avatar
kate
Posts: 4091
Joined: Wed Jul 02, 2003 5:29 pm
Location: CFOS/UAF, USA

Re: obtain average values

#2 Unread post by kate »

Did you "make clean" and recompile? You can check your $SCRATCH_DIR/def_avg.f90 file and see if it contains the code for defining the averages file, also $SCRATCH_DIR/output.f90 to see the call to def_avg (or not).

togye176

Re: obtain average values

#3 Unread post by togye176 »

Thank you Kate,

I solved this problem. I define AVERAGES in the header file then it works well!
But I don't know why it doesn't work in the 'build.bash' files.

User avatar
kate
Posts: 4091
Joined: Wed Jul 02, 2003 5:29 pm
Location: CFOS/UAF, USA

Re: obtain average values

#4 Unread post by kate »

Code: Select all

export      MY_CPP_FLAGS="-DAVERAGES"
export      MY_CPP_FLAGS="${MY_CPP_FLAGS} -DDEBUGGING"
#
# can be used to write time-averaged fields. Notice that you can have as
# many definitions as you want by appending values.

 export      MY_CPP_FLAGS="-DSWAN_COUPLING"
 export      MY_CPP_FLAGS="${MY_CPP_FLAGS} -DMCT_LIB"
I believe the answer is here, where adding SWAN_COUPLING overwrites the previous value of MY_CPP_FLAGS instead of adding to it.

Post Reply