[MITgcm-support] Error Messages for 'seaice_growth.f' during compile

Jean-Michel Campin jmc at ocean.mit.edu
Fri Aug 9 16:59:56 EDT 2013


Hi Erick,

we have 2 separated problems:
1) to use seaice, you cannot just provided pre-computed surface fluxes
 but you will need to use some bulk-formulae to compute surface
 fluxes over seaice. It means you will need to have
> #define ALLOW_ATM_TEMP in EXF_OPTIONS.h
 There is a "STOP" statement in pkg/seaice/seaice_check.F (~ line 580)
 to avoid this situation (i.e., ALLOW_ATM_TEMP undefined).
2) there is a problem in pkg/seaice/seaice_growth.F since it should have 
 compiled even if ALLOW_ATM_TEMP is undef. This will be fixed later today.

And just a comment regarding this:
> For SEAICE_OPTIONS.h, I attempted to undefine as much as possible from the
> start with the intent to build the options up as I learn how the module works.
Although I understand this approach, and it's generally a good approach,
 this might not be the easiest route to go with pkg/seaice (for instance,
 regarding seaice-dynamics, it's simpler and safer to have #define SEAICE_CGRID 
 since the B-grid alternative is not really used anymore).
Instead, you might consider to start from a verification experiment
 example (e.g., global_ocean.cs32x15/code/SEAICE_OPTIONS.h and 
 global_ocean.cs32x15/input.seaice), and remove or add things from there.

Cheers,
Jean-Michel

On Mon, Aug 05, 2013 at 05:20:32PM +0000, Edwards, Erick (LCDR) wrote:
> Dr. Campin,
> 
> I appreciate the quick response!
> 
> Here's a list of what I'm using:
> 
> MITgcm_c64h
> 
> In packages.conf: gfd, kpp, rbcs, exf, cal, seaice
> 
> For SEAICE_OPTIONS.h, I attempted to undefine as much as possible from the start with the intent to build the options up as I learn how the module works.  I did the same with kpp and exf.  I'm only using exf to input time-varying hflux and ustress.  In essence, I'm running with WIND, TEMP, DOWN, BULK, and EVAP undefined (like Case 1 in the comments section of EXF_OPTIONS.h) but I do not read-in a vstress, swflux or sflux.  I was able to run the model and get output that reflected time-varying hflux (just like I wanted).  I don't need time-varying ustress, so it remains constant (but it is still read-in).
> 
> I'm not sure how to proceed to get the model to compile and run.
> 
> Erick
> 
> 
> Here is SEAICE_OPTIONS.h:
> 
> C $Header: /u/gcmpack/MITgcm/verification/lab_sea/code/SEAICE_OPTIONS.h,v 1.32 2012/12/27 23:00:58 gforget Exp $
> C $Name: checkpoint64h $
> C     *==========================================================*
> C     | SEAICE_OPTIONS.h
> C     | o CPP options file for sea ice package.
> C     *==========================================================*
> C     | Use this file for selecting options within the sea ice
> C     | package.
> C     *==========================================================*
> #ifndef SEAICE_OPTIONS_H
> #define SEAICE_OPTIONS_H
> #include "PACKAGES_CONFIG.h"
> #include "CPP_OPTIONS.h"
> #ifdef ALLOW_SEAICE
> C     Package-specific Options & Macros go here
> C--   Write "text-plots" of certain fields in STDOUT for debugging.
> #undef SEAICE_DEBUG
> C--   Allow sea-ice dynamic code.
> C     This option is provided to allow use of TAMC
> C     on the thermodynamics component of the code only.
> C     Sea-ice dynamics can also be turned off at runtime
> C     using variable SEAICEuseDYNAMICS.
> #undef SEAICE_ALLOW_DYNAMICS
> C--   By default, the sea-ice package uses its own integrated bulk
> C     formulae to compute fluxes (fu, fv, EmPmR, Qnet, and Qsw) over
> C     open-ocean.  When this flag is set, these variables are computed
> C     in a separate external package, for example, pkg/exf, and then
> C     modified for sea-ice effects by pkg/seaice.
> #undef SEAICE_EXTERNAL_FLUXES
> C--   This CPP flag has been retired.  The number of ice categories
> C     used to solve for seaice flux is now specified by run-time
> C     parameter SEAICE_multDim.
> C     Note: be aware of pickup_seaice.* compatibility issues when
> C     restarting a simulation with a different number of categories.
> c#undef SEAICE_MULTICATEGORY
> C--   run with sea Ice Thickness Distribution (ITD);
> C     set number of categories (nITD) in SEAICE_SIZE.h
> #undef SEAICE_ITD
> C--   Since the missing sublimation term is now included
> C     this flag is needed for backward compatibility
> #undef SEAICE_DISABLE_SUBLIM
> C--   Suspected missing term in coupled ocn-ice heat budget (to be confirmed)
> #undef SEAICE_DISABLE_HEATCONSFIX
> C--   Default is constant seaice salinity (SEAICE_salt0); Define the following
> C     flag to consider (space & time) variable salinity: advected and forming
> C     seaice with a fraction (=SEAICE_saltFrac) of freezing seawater salinity.
> C- Note: SItracer also offers an alternative way to handle variable salinity.
> #undef SEAICE_VARIABLE_SALINITY
> C--   Tracers of ice and/or ice cover.
> #undef ALLOW_SITRACER
> #ifdef ALLOW_SITRACER
> C--   To try avoid 'spontaneous generation' of tracer maxima by advdiff.
> # undef ALLOW_SITRACER_ADVCAP
> #endif
> C--   By default the seaice model is discretized on a B-Grid (for
> C     historical reasons). Define the following flag to use a new
> C     (not thoroughly) test version on a C-grid
> #undef SEAICE_CGRID
> C--   Only for the C-grid version it is possible to
> #ifdef SEAICE_CGRID
> C     enable JFNK code by defining the following flag
> # undef SEAICE_ALLOW_JFNK
> C     enable LSR to use global (multi-tile) tri-diagonal solver
> # undef SEAICE_GLOBAL_3DIAG_SOLVER
> C     enable EVP code by defining the following flag
> # undef SEAICE_ALLOW_EVP
> # ifdef SEAICE_ALLOW_EVP
> C--   When set use SEAICE_zetaMin and SEAICE_evpDampC to limit viscosities
> C     from below and above in seaice_evp: not necessary, and not recommended
> #  undef SEAICE_ALLOW_CLIPZETA
> # endif /* SEAICE_ALLOW_EVP */
> C     regularize zeta to zmax with a smooth tanh-function instead
> C     of a min(zeta,zmax). This improves convergence of iterative
> C     solvers (Lemieux and Tremblay 2009, JGR). No effect on EVP
> # undef SEAICE_ZETA_SMOOTHREG
> C     allow the truncated ellipse rheology (runtime flag SEAICEuseTEM)
> # undef SEAICE_ALLOW_TEM
> #else /* not SEAICE_CGRID, but old B-grid */
> C--   By default for B-grid dynamics solver wind stress under sea-ice is
> C     set to the same value as it would be if there was no sea-ice.
> C     Define following CPP flag for B-grid ice-ocean stress coupling.
> # undef SEAICE_BICE_STRESS
> C--   By default for B-grid dynamics solver surface tilt is obtained
> C     indirectly via geostrophic velocities. Define following CPP
> C     in order to use ETAN instead.
> # undef EXPLICIT_SSH_SLOPE
> C--   Defining this flag turns on FV-discretization of the B-grid LSOR solver.
> C     It is smoother and includes all metric terms, similar to C-grid solvers.
> C     It is here for completeness, but its usefulness is unclear.
> # undef SEAICE_LSRBNEW
> #endif /* SEAICE_CGRID */
> C--   When set limit the Ice-Loading to mass of 1/5 of Surface ocean grid-box
> #undef SEAICE_CAP_ICELOAD
> C--   When set use SEAICE_clipVelocties = .true., to clip U/VICE at 40cm/s,
> C     not recommended
> #undef SEAICE_ALLOW_CLIPVELS
> C--   When set cap the sublimation latent heat flux in solve4temp according
> C     to the available amount of ice+snow. Otherwise this term is treated
> C     like all of the others -- residuals heat and fw stocks are passed to
> C     the ocean at the end of seaice_growth in a conservative manner.
> C     SEAICE_CAP_SUBLIM is not needed as of now, but kept just in case.
> #undef SEAICE_CAP_SUBLIM
> C--   Enable free drift code
> #undef SEAICE_ALLOW_FREEDRIFT
> #endif /* ALLOW_SEAICE */
> #endif /* SEAICE_OPTIONS_H */
> CEH3 ;;; Local Variables: ***
> CEH3 ;;; mode:fortran ***
> CEH3 ;;; End: ***
> 
> And here is EXF_OPTIONS.h:
> 
> C $Header: /u/gcmpack/MITgcm/verification/global_ocean.cs32x15/code/EXF_OPTIONS.h,v 1.7 2012/08/09 20:31:54 jmc Exp $
> C $Name: checkpoint64h $
> CBOP
> C !ROUTINE: EXF_OPTIONS.h
> C !INTERFACE:
> C #include "EXF_OPTIONS.h"
> C !DESCRIPTION:
> C *==================================================================*
> C | CPP options file for EXternal Forcing (EXF) package:
> C | Control which optional features to compile in this package code.
> C *==================================================================*
> CEOP
> #ifndef EXF_OPTIONS_H
> #define EXF_OPTIONS_H
> #include "PACKAGES_CONFIG.h"
> #include "CPP_OPTIONS.h"
> #ifdef ALLOW_EXF
> #ifdef ECCO_CPPOPTIONS_H
> C-- When multi-package option-file ECCO_CPPOPTIONS.h is used (directly included
> C    in CPP_OPTIONS.h), this option file is left empty since all options that
> C   are specific to this package are assumed to be set in ECCO_CPPOPTIONS.h
> #else /* ndef ECCO_CPPOPTIONS_H */
> C-- Package-specific Options & Macros go here
> C   pkg/exf CPP options:
> C   --------------------
> C
> C   > ( EXF_VERBOSE ) < replaced with run-time, logical parameter "exf_verbose".
> C
> C   >>> ALLOW_ATM_WIND <<<
> C       If defined, 10-m wind fields can be read-in from files.
> C
> C   >>> ALLOW_ATM_TEMP <<<
> C       If defined, atmospheric temperature and specific
> C       humidity fields can be read-in from files.
> C
> C   >>> ALLOW_DOWNWARD_RADIATION <<<
> C       If defined, downward long-wave and short-wave radiation
> C       can be read-in from files or computed from lwflux and swflux.
> C
> C   >>> ALLOW_ZENITHANGLE <<<
> C       If defined, ocean albedo varies with the zenith angle, and
> C       incoming fluxes at the top of the atmosphere are computed
> C
> C   >>> ALLOW_BULKFORMULAE <<<
> C       Allows the use of bulk formulae in order to estimate
> C       turbulent and radiative fluxes at the ocean surface.
> C
> C   >>> EXF_READ_EVAP <<<
> C       If defined, evaporation fields are read-in, rather than
> C       computed from atmospheric state.
> C
> C   >>> ALLOW_RUNOFF <<<
> C       If defined, river and glacier runoff can be read-in from files.
> C
> C   >>> ATMOSPHERIC_LOADING <<<
> C       If defined, atmospheric pressure can be read-in from files.
> C   WARNING: this flag is set (define/undef) in CPP_OPTIONS.h
> C            and cannot be changed here (in EXF_OPTIONS)
> C
> C   >>> ICE_AREAMASK <<<
> C       If defined, fractional ice-covered area MASK can be read-in from files.
> C
> C   >>> ALLOW_CLIMSST_RELAXATION <<<
> C       Allow the relaxation to a monthly climatology of sea surface
> C       temperature, e.g. the Reynolds climatology.
> C
> C   >>> ALLOW_CLIMSSS_RELAXATION <<<
> C       Allow the relaxation to a monthly climatology of sea surface
> C       salinity, e.g. the Levitus climatology.
> C
> C   >>> USE_EXF_INTERPOLATION <<<
> C       Allows specification of arbitrary Cartesian input grids.
> C
> C   ====================================================================
> C
> C       The following CPP options:
> C
> C          ALLOW_ATM_WIND              (WIND)
> C          ALLOW_ATM_TEMP              (TEMP)
> C          ALLOW_DOWNWARD_RADIATION    (DOWN)
> C          ALLOW_BULKFORMULAE          (BULK)
> C          EXF_READ_EVAP               (EVAP)
> C
> C       permit the ocean-model forcing configurations listed in the
> C       table below.  The first configuration is the default,
> C       flux-forced, ocean model.  The next four are stand-alone
> C       configurations that use pkg/exf, open-water bulk formulae to
> C       compute the missing surface fluxes from atmospheric variables.
> C       The last four configurations can be used in conjunction with
> C       pkg/seaice to model ice-covered regions.  The forcing fields
> C       in the rightmost column are defined in exf_fields.
> C
> C
> C    WIND |TEMP |DOWN |BULK |EVAP |            actions
> C    -----|-----|-----|-----|-----|-------------------------------------
> C         |     |     |     |     |
> C      -  |  -  |  -  |  -  |  -  | Read-in ustress, vstress, hflux,
> C         |     |     |     |     | swflux, and sflux.
> C         |     |     |     |     |
> C     def | def | def | def |  -  | Read-in uwind, vwind, atemp, aqh,
> C         |     |     |     |     | swdown, lwdown, precip, and runoff.
> C         |     |     |     |     | Compute ustress, vstress, hflux,
> C         |     |     |     |     | swflux, and sflux.
> C         |     |     |     |     |
> C     def | def |  -  | def |  -  | Read-in uwind, vwind, atemp, aqh,
> C         |     |     |     |     | swflux, lwflux, precip, and runoff.
> C         |     |     |     |     | Compute ustress, vstress, hflux,
> C         |     |     |     |     | and sflux.
> C         |     |     |     |     |
> C     def |  -  |  -  | def |  -  | Read-in uwind, vwind, hflux,
> C         |     |     |     |     | swflux, and sflux.
> C         |     |     |     |     | Compute ustress and vstress.
> C         |     |     |     |     |
> C      -  | def |  -  | def |  -  | Read-in ustress, vstress, atemp,
> C         |     |     |     |     | aqh, swflux, lwflux, precip, and
> C         |     |     |     |     | runoff.  Compute hflux and sflux.
> C         |     |     |     |     |
> C     def | def |  -  |  -  | def | Read-in uwind, vwind, atemp, aqh,
> C         |     |     |     |     | swflux, lwflux, precip, runoff,
> C         |     |     |     |     | and evap.
> C         |     |     |     |     |
> C     def | def |  -  | def |  -  | Read-in uwind, vwind, atemp, aqh,
> C         |     |     |     |     | swflux, lwflux, precip, and runoff.
> C         |     |     |     |     | Compute open-water ustress, vstress,
> C         |     |     |     |     | hflux, swflux, and evap.
> C         |     |     |     |     |
> C     def | def | def |  -  | def | Read-in uwind, vwind, atemp, aqh,
> C         |     |     |     |     | swdown, lwdown, precip, runoff,
> C         |     |     |     |     | and evap.
> C         |     |     |     |     |
> C     def | def | def | def |  -  | Read-in uwind, vwind, atemp, aqh,
> C         |     |     |     |     | swdown, lwdown, precip, and runoff.
> C         |     |     |     |     | Compute open-water ustress, vstress,
> C         |     |     |     |     | hflux, swflux, and evap.
> C
> C   ====================================================================
> C   Bulk formulae related flags.
> #undef   ALLOW_ATM_TEMP
> #undef   ALLOW_ATM_WIND
> #undef   ALLOW_DOWNWARD_RADIATION
> #undef   ALLOW_RUNOFF
> #if (defined (ALLOW_ATM_TEMP) || defined (ALLOW_ATM_WIND))
> #undef   ALLOW_BULKFORMULAE
> #undef   ALLOW_BULK_LARGEYEAGER04
> #endif
> C   Zenith Angle/Albedo related flags.
> #ifdef ALLOW_DOWNWARD_RADIATION
> # undef ALLOW_ZENITHANGLE
> #endif
> C   Use ocean_emissivity*lwdwon in lwFlux. This flag should be define
> C   unless to reproduce old results (obtained with inconsistent old code)
> #ifdef ALLOW_DOWNWARD_RADIATION
> # define EXF_LWDOWN_WITH_EMISSIVITY
> #endif
> C   Relaxation to monthly climatologies.
> #undef  ALLOW_CLIMSST_RELAXATION
> #undef  ALLOW_CLIMSSS_RELAXATION
> C   Use spatial interpolation to interpolate
> C   forcing files from input grid to model grid.
> #undef USE_EXF_INTERPOLATION
> C   for interpolated vector fields, rotate towards model-grid axis
> C   using old rotation formulae (instead of grid-angles)
> #undef EXF_USE_OLD_VEC_ROTATION
> C   for interpolation around N & S pole, use the old formulation
> C   (no pole symmetry, single vector-comp interp, reset to 0 zonal-comp @ N.pole)
> #undef EXF_USE_OLD_INTERP_POLE
> #define EXF_INTERP_USE_DYNALLOC
> #if ( defined (EXF_INTERP_USE_DYNALLOC) && defined (USING_THREADS) )
> # define EXF_IREAD_USE_GLOBAL_POINTER
> #endif
> #endif /* ndef ECCO_CPPOPTIONS_H */
> #endif /* ALLOW_EXF */
> #endif /* EXF_OPTIONS_H */
> 
> 
> Hi,
> 
> 
> 
> My comments below are not accurate:
> 
> On Thu, Aug 01, 2013 at 06:35:12PM -0400, Jean-Michel Campin wrote:
> 
> > Hi Erick,
> 
> >
> 
> > Assuming you are using a recent version of the code (otherwise, will
> 
> > need to know which version it is), if you can provide the list of packages
> 
> > you compile (packages.conf) and the CPP option files (specially the
> 
> > one for pkg/seaice, i.e.: SEAICE_OPTIONS.h), we will have a better idea
> 
> > of what is the problem.
> 
> >
> 
> > One thing that has changed recently (pkg/pkg_depend, on May 25, 2013)
> 
> > is that compiling pkg/seaice does not turn on pkg/exf anymore.
> 
> > The verification experiments that uses pkg/seaice has been changed
> 
> > accordingly, but may be you did not start from an up-to-date
> 
> > verification experiment ?
> 
> The modifications from May 25 have been made safely, seaice_growth.F will
> 
> compile even without pkg/exf, but the routine SEACIE_GROWTH will
> 
> be mostly empty except an unconditional STOP.
> 
> 
> 
> Jean-Michel
> 
> 
> 
> >
> 
> > Cheers,
> 
> > Jean-Michel
> 
> >
> 
> > On Thu, Aug 01, 2013 at 08:58:21PM +0000, Edwards, Erick (LCDR) wrote:
> 
> > > MITgcm Support,
> 
> > >
> 
> > > I'm attempting to use the 'seaice' package but during the compile (after the 'make' command), I get the following messages:
> 
> > >
> 
> > > seaice_growth.f(5895): error #6404: This name does not have a type, and must have an explicit type.   [SNOWPRECIP]
> 
> > >      &             snowPrecip(i,j,bi,bj) * (ONE-AREApreTH(I,J))
> 
> > > -------------------^
> 
> > > seaice_growth.f(5982): error #6404: This name does not have a type, and must have an explicit type.   [EVAP]
> 
> > >      &       ( ( EVAP(I,J,bi,bj)-PRECIP(I,J,bi,bj) )
> 
> > > -----------------^
> 
> > > seaice_growth.f(5982): error #6404: This name does not have a type, and must have an explicit type.   [PRECIP]
> 
> > >      &       ( ( EVAP(I,J,bi,bj)-PRECIP(I,J,bi,bj) )
> 
> > > ---------------------------------^
> 
> > > compilation aborted for seaice_growth.f (code 1)
> 
> > > make[1]: *** [seaice_growth.o] Error 1
> 
> > > make[1]: *** Waiting for unfinished jobs....
> 
> > > make: *** [fwd_exe_target] Error 2
> 
> > >
> 
> > > Has anyone else experienced this?
> 
> > >
> 
> > > Erick
> 
> > >
> 
> > >
> 
> >
> 
> > > _______________________________________________
> 
> > > MITgcm-support mailing list
> 
> > > MITgcm-support at mitgcm.org<http://mitgcm.org/mailman/listinfo/mitgcm-support>
> 
> > > http://mitgcm.org/mailman/listinfo/mitgcm-support
> 
> >
> 
> >
> 
> > _______________________________________________
> 
> > MITgcm-support mailing list
> 
> > MITgcm-support at mitgcm.org<http://mitgcm.org/mailman/listinfo/mitgcm-support>
> 
> > http://mitgcm.org/mailman/listinfo/mitgcm-support
> 
> 
> 

> _______________________________________________
> MITgcm-support mailing list
> MITgcm-support at mitgcm.org
> http://mitgcm.org/mailman/listinfo/mitgcm-support




More information about the MITgcm-support mailing list