PISM, A Parallel Ice Sheet Model stable 0.4.1779
Public Member Functions | Private Member Functions | Private Attributes

IceMISMIPModel Class Reference

Derived class of IceModel which performs MISMIP experiments. More...

#include <iceMISMIPModel.hh>

Inheritance diagram for IceMISMIPModel:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 IceMISMIPModel (IceGrid &g, NCConfigVariable &config, NCConfigVariable &overrides)
virtual ~IceMISMIPModel ()
virtual PetscErrorCode createVecs ()
 Allocate all IceModelVecs defined in IceModel.
virtual PetscErrorCode set_grid_defaults ()
 Set default values of grid parameters.
virtual PetscErrorCode set_grid_from_options ()
 Initalizes the grid from options.
virtual PetscErrorCode setFromOptions ()
 Read runtime (command line) options and alter the corresponding parameters or flags as appropriate.
virtual PetscErrorCode allocate_flowlaw ()
 Decide which ice flow law to use.
virtual PetscErrorCode allocate_basal_resistance_law ()
 Decide which basal resistance law to use.
virtual PetscErrorCode allocate_stressbalance ()
 Decide which stress balance model to use.
virtual PetscErrorCode init_couplers ()
 Initializes atmosphere and ocean couplers.
virtual PetscErrorCode set_time_from_options ()
 Determine the run length, starting and ending years using command-line options.
virtual PetscErrorCode initFromFile (const char *)
 Read a saved PISM model state in NetCDF format, for complete initialization of an evolution or diagnostic run.
virtual PetscErrorCode set_vars_from_options ()
 Sets starting values of model state variables using command-line options.
virtual PetscErrorCode misc_setup ()
 Miscellaneous initialization tasks plus tasks that need the fields that can come from regridding.
PetscErrorCode additionalAtStartTimestep ()
 Virtual. Does nothing in IceModel. Derived classes can do more computation in each time step.
PetscErrorCode additionalAtEndTimestep ()
 Virtual. Does nothing in IceModel. Derived classes can do more computation in each time step.
virtual PetscErrorCode summaryPrintLine (PetscTruth printPrototype, bool tempAndAge, PetscScalar year, PetscScalar dt, PetscScalar volume, PetscScalar area, PetscScalar meltfrac, PetscScalar H0, PetscScalar T0)
 Print a line to stdout which summarizes the state of the modeled ice sheet at the end of the time step.
PetscErrorCode writeMISMIPFinalFiles ()

Private Member Functions

PetscErrorCode setBed ()
PetscErrorCode init_ocean_kill ()
 Initialize the mask used by the -ocean_kill code.
PetscErrorCode getMISMIPStats ()
PetscErrorCode getRoutineStats ()
PetscErrorCode calving ()
PetscErrorCode writeMISMIPasciiFile (const char mismiptype, char *filename)

Private Attributes

PetscInt exper
PetscInt gridmode
PetscInt stepindex
PetscInt modelnum
char sliding
PetscScalar initialthickness
PetscScalar runtimeyears
PetscScalar dHdtnorm_atol
PetscScalar dxgdt_atol
bool writeExtras
bool tryCalving
string initials
char mprefix [PETSC_MAX_PATH_LEN]
PetscViewer tviewfile
char tfilename [PETSC_MAX_PATH_LEN]
routineStatsType rstats
mismipStatsType mstats
PetscReal m_MISMIP
PetscReal C_MISMIP
PetscReal regularize_MISMIP

Detailed Description

Derived class of IceModel which performs MISMIP experiments.

See User's Manual and run script examples/mismip/mismip.sh.

WE'VE GOT A PROBLEM WITH FLUX ACROSS GROUNDING LINE; not surprising ... See "cflx" in output file.

I think the underlying issue *may* still be *regularity of the basal shear stress*, that is, of the shear stress coefficient, which jumps from C_MISMIP to zero across the grounding line.

I did an experiment that made the ice grounded all the way out to the calving front, but has zero basal resistance; the results are similar the intended MISMIP case, even though the surface is not at all what is given by the floatation criterion.

Damping out C_MISMIP in the 50km on the grounded side of the grounding line (a linear decrease linearly from C_MISMIP at xg - 50km to zero at xg) does not make a difference, really. In other words, I thought we needed

\[ \tau_b \in W^{1,\infty} \]

or something; without the damping all we have is

\[ \tau_b \in L^\infty. \]

The results in the former case, of smoother C_MISMIP, are no better, I think.

Definition at line 74 of file iceMISMIPModel.hh.


Constructor & Destructor Documentation

IceMISMIPModel ( IceGrid &  g,
NCConfigVariable &  config,
NCConfigVariable &  overrides 
)
~IceMISMIPModel ( ) [virtual]

Definition at line 86 of file iceMISMIPModel.cc.

References tviewfile.


Member Function Documentation

PetscErrorCode additionalAtEndTimestep ( ) [virtual]

Virtual. Does nothing in IceModel. Derived classes can do more computation in each time step.

Reimplemented from IceModel.

Definition at line 668 of file iceMISMIPModel.cc.

References calving(), and tryCalving.

PetscErrorCode additionalAtStartTimestep ( ) [virtual]

Virtual. Does nothing in IceModel. Derived classes can do more computation in each time step.

Reimplemented from IceModel.

Definition at line 656 of file iceMISMIPModel.cc.

References IceModel::grid, IceModel::maxdt_temporary, and secpera.

PetscErrorCode allocate_basal_resistance_law ( ) [virtual]

Decide which basal resistance law to use.

Reimplemented from IceModel.

Definition at line 396 of file iceMISMIPModel.cc.

References IceModel::basal, C_MISMIP, m_MISMIP, and regularize_MISMIP.

PetscErrorCode allocate_flowlaw ( ) [virtual]
PetscErrorCode allocate_stressbalance ( ) [virtual]
PetscErrorCode calving ( ) [private]
PetscErrorCode createVecs ( ) [virtual]

Allocate all IceModelVecs defined in IceModel.

This procedure allocates the memory used to store model state, diagnostic and work vectors and sets metadata.

Default values should not be set here; please use set_vars_from_options().

All the memory allocated here is freed by IceModelVecs' destructors.

Reimplemented from IceModel.

Definition at line 445 of file iceMISMIPModel.cc.

References IceModel::acab, and IceModel::artm.

PetscErrorCode getMISMIPStats ( ) [private]
PetscErrorCode getRoutineStats ( ) [private]
PetscErrorCode init_couplers ( ) [virtual]

Initializes atmosphere and ocean couplers.

Reimplemented from IceModel.

Definition at line 492 of file iceMISMIPModel.cc.

References IceModel::config, and IceModel::ocean.

PetscErrorCode init_ocean_kill ( ) [private, virtual]

Initialize the mask used by the -ocean_kill code.

Reimplemented from IceModel.

Definition at line 588 of file iceMISMIPModel.cc.

References IceModel::grid, IceModel::ocean_kill_mask, and exactV::x.

PetscErrorCode initFromFile ( const char *  filename) [virtual]

Read a saved PISM model state in NetCDF format, for complete initialization of an evolution or diagnostic run.

Before this is run, the method IceModel::grid_setup() determines the number of grid points (Mx,My,Mz,Mbz) and the dimensions (Lx,Ly,Lz) of the computational box from the same input file.

Reimplemented from IceModel.

Definition at line 426 of file iceMISMIPModel.cc.

References exper, IceModel::grid, gridmode, IceModel::ice, modelnum, sliding, CustomGlenIce::softnessParameter_from_temp(), and stepindex.

PetscErrorCode misc_setup ( ) [virtual]

Miscellaneous initialization tasks plus tasks that need the fields that can come from regridding.

Reimplemented from IceModel.

Definition at line 511 of file iceMISMIPModel.cc.

References exper, IceModel::grid, gridmode, initials, modelnum, mprefix, sliding, stepindex, tfilename, and tviewfile.

PetscErrorCode set_grid_defaults ( ) [virtual]

Set default values of grid parameters.

Derived classes (IceCompModel, for example) reimplement this to change the grid initialization when no -i option is set.

Reimplemented from IceModel.

Definition at line 92 of file iceMISMIPModel.cc.

References IceModel::grid.

PetscErrorCode set_grid_from_options ( ) [virtual]

Initalizes the grid from options.

Reads all of -Mx, -My, -Mz, -Mbz, -Lx, -Ly, -Lz, -Lbz, -z_spacing and -zb_spacing. Sets corresponding grid parameters.

Reimplemented from IceModel.

Definition at line 98 of file iceMISMIPModel.cc.

References IceModel::grid, L, modelnum, and sliding.

PetscErrorCode set_time_from_options ( ) [virtual]

Determine the run length, starting and ending years using command-line options.

Reimplemented from IceModel.

Definition at line 299 of file iceMISMIPModel.cc.

References IceModel::grid, and runtimeyears.

PetscErrorCode set_vars_from_options ( ) [virtual]

Sets starting values of model state variables using command-line options.

Sets starting values of model state variables using command-line options and (possibly) a bootstrapping file.

In the base class there is only one case: bootstrapping.

Reimplemented from IceModel.

Definition at line 454 of file iceMISMIPModel.cc.

References IceModel::acab, IceModel::artm, IceModel::compute_enthalpy_cold(), IceModel::Enth3, exper, IceModel::grid, gridmode, IceModel::ice, initialthickness, IceFlowLaw::melting_point_temp, modelnum, IceModel::regrid(), secpera, setBed(), sliding, CustomGlenIce::softnessParameter_from_temp(), stepindex, IceModel::T3, IceModel::vbmr, IceModel::vGhf, IceModel::vH, IceModel::vHmelt, and IceModel::vuplift.

PetscErrorCode setBed ( ) [private]

Definition at line 554 of file iceMISMIPModel.cc.

References exper, IceModel::grid, IceModel::vbed, and exactV::x.

Referenced by set_vars_from_options().

PetscErrorCode setFromOptions ( ) [virtual]

Read runtime (command line) options and alter the corresponding parameters or flags as appropriate.

A critical principle of this procedure is that it will not alter IceModel parameters and flags unless the user sets an option to do so. This base class setFromOptions() can be called by an IceModel-derived class after the it has set its own defaults.

In fact this procedure only reads the majority of the options. Some are read in initFromOptions(), writeFiles(), and setStartRunEndYearsFromOptions(), among other places.

There are no options to directly set dx, dy, dz, Lbz, and year as the user should not directly set these grid parameters. There are, however, options for directly setting Mx, My, Mz, Mbz and also Lx, Ly, Lz.

Note that additional options are read by PISM{Atmosphere|Surface|Ocean}Model instances, including -pdd... and -d?forcing options.

Reimplemented from IceModel.

Definition at line 131 of file iceMISMIPModel.cc.

References C_MISMIP, IceModel::config, dHdtnorm_atol, exper, IceModel::grid, gridmode, initials, initialthickness, m_MISMIP, modelnum, regularize_MISMIP, runtimeyears, secpera, sliding, stepindex, tryCalving, and writeExtras.

PetscErrorCode summaryPrintLine ( PetscTruth  printPrototype,
bool  tempAndAge,
PetscScalar  year,
PetscScalar  delta_t,
PetscScalar  volume,
PetscScalar  area,
PetscScalar  meltfrac,
PetscScalar  H0,
PetscScalar  T0 
) [virtual]

Print a line to stdout which summarizes the state of the modeled ice sheet at the end of the time step.

Generally, two lines are printed to stdout, the first starting with a space and the second starting with the character 'S' in the left-most column (column 1).

The first line shows flags for which processes executed, and the length of the time step (and/or substeps under option -skip). See IceModel::run() for meaning of these flags.

If IceModel::printPrototype is TRUE then the first line does not appear and the second line has alternate appearance. Specifically, different column 1 characters are printed:

  • 'P' line gives names of the quantities reported in the 'S' line, the "prototype", while
  • 'U' line gives units of these quantities. This column 1 convention allows automatic tools to read PISM stdout and produce time-series. The 'P' and 'U' lines are intended to appear once at the beginning of the run, while an 'S' line appears at every time step. This base class version gives a report based on the information included in the EISMINT II intercomparison of ice sheet models[EISMINT00].

Note that the inputs volume and area to this method are in m^3 and m^2, respectively. Thus all inputs to this method are in MKS except for year.

The resulting numbers on an 'S' line have the following meaning in this base class version:

  • ivol is the total ice sheet volume
  • iarea is the total area occupied by positive thickness ice
  • thick0 is the ice thickness at the center of the computational domain
  • temp0 is the ice basal temperature at the center of the computational domain The last two can be interpreted as "sanity checks", because they give information about a location which may or may not be "typical".

For more description and examples, see the PISM User's Manual. Derived classes of IceModel may redefine this method and print alternate information. Use of DiagnosticTimeseries may be superior, however.

Reimplemented from IceModel.

Definition at line 961 of file iceMISMIPModel.cc.

References routineStatsType::avubarF, routineStatsType::avubarG, mismipStatsType::b1, mismipStatsType::b2, mismipStatsType::b3, routineStatsType::dHdtnorm, dHdtnorm_atol, mismipStatsType::dxgdt, dxgdt_atol, e, getMISMIPStats(), getRoutineStats(), IceModel::grid, mismipStatsType::h1, mismipStatsType::h2, mismipStatsType::h3, routineStatsType::hxg, routineStatsType::maxubar, mstats, routineStatsType::Nfloating, routineStatsType::Ngrounded, mismipStatsType::q1, mismipStatsType::q2, mismipStatsType::q3, rstats, secpera, tfilename, tviewfile, mismipStatsType::x1, mismipStatsType::x2, mismipStatsType::x3, and routineStatsType::xg.

PetscErrorCode writeMISMIPasciiFile ( const char  mismiptype,
char *  filename 
) [private]
PetscErrorCode writeMISMIPFinalFiles ( )

Member Data Documentation

PetscReal C_MISMIP [private]
PetscScalar dHdtnorm_atol [private]
PetscScalar dxgdt_atol [private]

Definition at line 106 of file iceMISMIPModel.hh.

Referenced by IceMISMIPModel(), summaryPrintLine(), and writeMISMIPFinalFiles().

PetscInt exper [private]
PetscInt gridmode [private]
string initials [private]

Definition at line 108 of file iceMISMIPModel.hh.

Referenced by IceMISMIPModel(), misc_setup(), and setFromOptions().

PetscScalar initialthickness [private]

Definition at line 106 of file iceMISMIPModel.hh.

Referenced by IceMISMIPModel(), set_vars_from_options(), and setFromOptions().

PetscReal m_MISMIP [private]
PetscInt modelnum [private]
char mprefix[PETSC_MAX_PATH_LEN] [private]

Definition at line 109 of file iceMISMIPModel.hh.

Referenced by misc_setup(), and writeMISMIPFinalFiles().

Definition at line 114 of file iceMISMIPModel.hh.

Referenced by getMISMIPStats(), summaryPrintLine(), and writeMISMIPFinalFiles().

PetscScalar runtimeyears [private]

Definition at line 106 of file iceMISMIPModel.hh.

Referenced by IceMISMIPModel(), set_time_from_options(), and setFromOptions().

char sliding [private]
PetscInt stepindex [private]
char tfilename[PETSC_MAX_PATH_LEN] [private]

Definition at line 111 of file iceMISMIPModel.hh.

Referenced by misc_setup(), and summaryPrintLine().

bool tryCalving [private]

Definition at line 107 of file iceMISMIPModel.hh.

Referenced by additionalAtEndTimestep(), IceMISMIPModel(), and setFromOptions().

PetscViewer tviewfile [private]

Definition at line 110 of file iceMISMIPModel.hh.

Referenced by IceMISMIPModel(), misc_setup(), summaryPrintLine(), and ~IceMISMIPModel().

bool writeExtras [private]

Definition at line 107 of file iceMISMIPModel.hh.

Referenced by IceMISMIPModel(), setFromOptions(), and writeMISMIPFinalFiles().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines