PISM, A Parallel Ice Sheet Model  stable v2.1-1-g6902d5502 committed by Ed Bueler on 2023-12-20 08:38:27 -0800
Classes | Public Types | Public Member Functions | Public Attributes | Protected Attributes | Private Attributes | Friends | List of all members
pism::icebin::IBIceModel Class Reference

#include <IBIceModel.hh>

+ Inheritance diagram for pism::icebin::IBIceModel:

Classes

struct  Params
 

Public Types

typedef pism::IceModel super
 

Public Member Functions

virtual void accumulateFluxes_massContExplicitStep (int i, int j, double surface_mass_balance, double basal_melt_rate, double divQ_SIA, double divQ_SSA, double Href_to_H_flux, double nonneg_rule_flux)
 
virtual void massContExplicitStep ()
 
void set_rate (double dt)
 
void reset_rate ()
 
 IBIceModel (std::shared_ptr< pism::Grid > grid, const std::shared_ptr< Context > &context, IBIceModel::Params const &_params)
 
virtual ~IBIceModel ()
 
virtual void allocate_subglacial_hydrology ()
 Decide which subglacial hydrology model to use. More...
 
virtual void allocate_couplers ()
 
virtual void time_setup ()
 Initialize time from an input file or command-line options. More...
 
virtual void misc_setup ()
 Miscellaneous initialization tasks plus tasks that need the fields that can come from regridding. More...
 
void compute_enth2 (pism::array::Scalar &enth2, pism::array::Scalar &mass2)
 
pism::icebin::IBSurfaceModelib_surface_model ()
 
pism::icebin::NullTransportHydrologynull_hydrology ()
 
double mass_t () const
 
double enthalpy_t () const
 
void massContPreHook ()
 
void massContPostHook ()
 
void energy_step ()
 Manage the solution of the energy equation, and related parallel communication. More...
 
void prepare_outputs (double time_s)
 
void dumpToFile (const std::string &filename) const
 
void prepare_initial_outputs ()
 
void construct_surface_temp (pism::array::Scalar &deltah, double default_val, double timestep_s, pism::array::Scalar &surface_temp)
 
- Public Member Functions inherited from pism::IceModel
 IceModel (std::shared_ptr< Grid > grid, const std::shared_ptr< Context > &context)
 
virtual ~IceModel ()
 
std::shared_ptr< Gridgrid () const
 Return the grid used by this model. More...
 
std::shared_ptr< Contextctx () const
 Return the context this model is running in. More...
 
void init ()
 Manage the initialization of the IceModel object. More...
 
IceModelTerminationReason run ()
 
IceModelTerminationReason run_to (double run_end)
 
virtual void save_results ()
 Save model state in NetCDF format. More...
 
void list_diagnostics (const std::string &list_type) const
 
const array::Scalarcalving () const
 
const array::Scalarfrontal_melt () const
 
const array::Scalarforced_retreat () const
 
double ice_volume_temperate (double thickness_threshold) const
 Computes the temperate ice volume, in m^3. More...
 
double ice_volume_cold (double thickness_threshold) const
 Computes the cold ice volume, in m^3. More...
 
double temperate_base_area (double thickness_threshold) const
 Computes area of basal ice which is temperate, in m^2. More...
 
double cold_base_area (double thickness_threshold) const
 Computes area of basal ice which is cold, in m^2. More...
 
const stressbalance::StressBalancestress_balance () const
 
const ocean::OceanModelocean_model () const
 
const energy::BedThermalUnitbedrock_thermal_model () const
 
const energy::EnergyModelenergy_balance_model () const
 
const YieldStressbasal_yield_stress_model () const
 
const bed::BedDefbed_deformation_model () const
 
void set_python_ocean_model (std::shared_ptr< ocean::PyOceanModel > model)
 
const Geometrygeometry () const
 
const GeometryEvolutiongeometry_evolution () const
 
double dt () const
 

Public Attributes

Params const params
 
pism::array::Scalar elevmask_ice
 
pism::array::Scalar elevmask_land
 
std::unique_ptr< pism::Filepre_mass_nc
 Write variables every time massContPostHook() is called. More...
 
std::unique_ptr< pism::Filepost_mass_nc
 
std::unique_ptr< pism::Filepre_energy_nc
 
std::unique_ptr< pism::Filepost_energy_nc
 

Protected Attributes

MassEnergyBudget base
 
MassEnergyBudget cur
 
MassEnergyBudget rate
 
pism::array::Scalar ice_top_senth
 
- Protected Attributes inherited from pism::IceModel
const std::shared_ptr< Gridm_grid
 Computational grid. More...
 
const Config::Ptr m_config
 Configuration flags and parameters. More...
 
const std::shared_ptr< Contextm_ctx
 Execution context. More...
 
const units::System::Ptr m_sys
 Unit system. More...
 
const Logger::Ptr m_log
 Logger. More...
 
const Time::Ptr m_time
 Time manager. More...
 
const int m_wide_stencil
 
VariableMetadata m_output_global_attributes
 stores global attributes saved in a PISM output file More...
 
std::map< std::string, const Component * > m_submodels
 the list of sub-models, for writing model states and obtaining diagnostics More...
 
std::unique_ptr< hydrology::Hydrologym_subglacial_hydrology
 
std::shared_ptr< YieldStressm_basal_yield_stress_model
 
std::shared_ptr< array::Forcingm_surface_input_for_hydrology
 
std::shared_ptr< energy::BedThermalUnitm_btu
 
std::shared_ptr< energy::EnergyModelm_energy_model
 
std::shared_ptr< AgeModelm_age_model
 
std::shared_ptr< Isochronesm_isochrones
 
std::shared_ptr< calving::IcebergRemoverm_iceberg_remover
 
std::shared_ptr< calving::FloatKillm_float_kill_calving
 
std::shared_ptr< calving::CalvingAtThicknessm_thickness_threshold_calving
 
std::shared_ptr< calving::EigenCalvingm_eigen_calving
 
std::shared_ptr< calving::HayhurstCalvingm_hayhurst_calving
 
std::shared_ptr< calving::vonMisesCalvingm_vonmises_calving
 
std::shared_ptr< PrescribedRetreatm_prescribed_retreat
 
std::unique_ptr< ScalarForcingm_calving_rate_factor
 
std::shared_ptr< FrontRetreatm_front_retreat
 
std::shared_ptr< surface::SurfaceModelm_surface
 
std::shared_ptr< ocean::OceanModelm_ocean
 
std::shared_ptr< frontalmelt::FrontalMeltm_frontal_melt
 
std::shared_ptr< ocean::sea_level::SeaLevelm_sea_level
 
std::shared_ptr< bed::BedDefm_beddef
 
Geometry m_geometry
 
std::unique_ptr< GeometryEvolutionm_geometry_evolution
 
bool m_new_bed_elevation
 
array::Scalar2 m_basal_yield_stress
 ghosted More...
 
array::Scalar m_basal_melt_rate
 rate of production of basal meltwater (ice-equivalent); no ghosts More...
 
array::Scalar m_bedtoptemp
 temperature at the top surface of the bedrock thermal layer More...
 
std::shared_ptr< FractureDensitym_fracture
 
array::Scalar2 m_velocity_bc_mask
 mask to determine Dirichlet boundary locations for the sliding velocity More...
 
array::Vector2 m_velocity_bc_values
 Dirichlet boundary velocities. More...
 
array::Scalar1 m_ice_thickness_bc_mask
 Mask prescribing locations where ice thickness is held constant. More...
 
double m_dt
 mass continuity time step, s More...
 
double t_TempAge
 time of last update for enthalpy/temperature More...
 
double dt_TempAge
 enthalpy/temperature and age time-steps More...
 
unsigned int m_skip_countdown
 
std::string m_adaptive_timestep_reason
 
std::string m_stdout_flags
 
unsigned int m_step_counter
 
std::vector< std::shared_ptr< array::Scalar2 > > m_work2d
 
std::shared_ptr< petsc::Vecm_work2d_proc0
 
std::shared_ptr< stressbalance::StressBalancem_stress_balance
 
ThicknessChanges m_thickness_change
 
std::set< array::Array * > m_model_state
 
std::map< std::string, Diagnostic::Ptrm_diagnostics
 Requested spatially-variable diagnostics. More...
 
std::map< std::string, TSDiagnostic::Ptrm_ts_diagnostics
 Requested scalar diagnostics. More...
 
std::set< std::string > m_output_vars
 
std::string m_snapshots_filename
 
bool m_save_snapshots
 
bool m_snapshots_file_is_ready
 
bool m_split_snapshots
 
std::vector< double > m_snapshot_times
 
std::set< std::string > m_snapshot_vars
 
unsigned int m_current_snapshot
 
std::string m_ts_filename
 file to write scalar time-series to More...
 
std::shared_ptr< std::vector< double > > m_ts_times
 requested times for scalar time-series More...
 
std::set< std::string > m_ts_vars
 
bool m_save_extra
 
bool m_extra_file_is_ready
 
bool m_split_extra
 
std::string m_extra_filename
 
std::vector< double > m_extra_times
 
unsigned int m_next_extra
 
double m_last_extra
 
std::set< std::string > m_extra_vars
 
VariableMetadata m_extra_bounds
 
std::unique_ptr< Filem_extra_file
 
std::string m_checkpoint_filename
 
double m_last_checkpoint_time
 
std::set< std::string > m_checkpoint_vars
 
double m_timestep_hit_multiples_last_time
 
std::map< std::string, std::vector< std::shared_ptr< petsc::Viewer > > > m_viewers
 

Private Attributes

double m_ice_density
 
double m_meter_per_s_to_kg_per_m2
 

Friends

class ::icebin::gpism::IceCoupler_PISM
 

Additional Inherited Members

- Protected Types inherited from pism::IceModel
enum  OutputKind { INCLUDE_MODEL_STATE = 0 , JUST_DIAGNOSTICS }
 
enum  HistoryTreatment { OVERWRITE_HISTORY = 0 , PREPEND_HISTORY }
 
enum  MappingTreatment { WRITE_MAPPING = 0 , SKIP_MAPPING }
 
enum  ConsistencyFlag { REMOVE_ICEBERGS , DONT_REMOVE_ICEBERGS }
 
- Protected Member Functions inherited from pism::IceModel
virtual void allocate_submodels ()
 Allocate PISM's sub-models implementing some physical processes. More...
 
virtual void allocate_stressbalance ()
 Decide which stress balance model to use. More...
 
virtual void allocate_age_model ()
 
virtual void allocate_isochrones ()
 
virtual void allocate_bed_deformation ()
 
virtual void allocate_bedrock_thermal_unit ()
 Decide which bedrock thermal unit to use. More...
 
virtual void allocate_energy_model ()
 
virtual void allocate_basal_yield_stress ()
 Decide which basal yield stress model to use. More...
 
virtual void allocate_geometry_evolution ()
 
virtual void allocate_iceberg_remover ()
 
virtual stressbalance::Inputs stress_balance_inputs ()
 
virtual energy::Inputs energy_model_inputs ()
 
virtual YieldStressInputs yield_stress_inputs ()
 
virtual void model_state_setup ()
 Sets the starting values of model state variables. More...
 
virtual void init_diagnostics ()
 
virtual void init_calving ()
 Initialize calving mechanisms. More...
 
virtual void init_frontal_melt ()
 
virtual void init_front_retreat ()
 
virtual void prune_diagnostics ()
 
virtual void update_diagnostics (double dt)
 
virtual void reset_diagnostics ()
 
virtual void step (bool do_mass_continuity, bool do_skip)
 The contents of the main PISM time-step. More...
 
virtual void pre_step_hook ()
 Virtual. Does nothing in IceModel. Derived classes can do more computation in each time step. More...
 
virtual void post_step_hook ()
 Virtual. Does nothing in IceModel. Derived classes can do more computation in each time step. More...
 
void reset_counters ()
 
virtual void bootstrap_2d (const File &input_file)
 
virtual void process_options ()
 
virtual std::set< std::string > output_variables (const std::string &keyword)
 Assembles a list of diagnostics corresponding to an output file size. More...
 
virtual void compute_lat_lon ()
 
virtual void restart_2d (const File &input_file, unsigned int record)
 Initialize 2D model state fields managed by IceModel from a file (for re-starting). More...
 
virtual void initialize_2d ()
 
virtual void save_variables (const File &file, OutputKind kind, const std::set< std::string > &variables, double time, io::Type default_diagnostics_type=io::PISM_FLOAT) const
 
virtual void define_model_state (const File &file) const
 
virtual void write_model_state (const File &file) const
 
virtual void write_metadata (const File &file, MappingTreatment mapping_flag, HistoryTreatment history_flag) const
 Write time-independent metadata to a file. More...
 
virtual void define_diagnostics (const File &file, const std::set< std::string > &variables, io::Type default_type) const
 
virtual void write_diagnostics (const File &file, const std::set< std::string > &variables) const
 Writes variables listed in vars to filename, using nctype to write fields stored in dedicated Arrays. More...
 
std::string save_state_on_error (const std::string &suffix, const std::set< std::string > &additional_variables)
 
virtual void allocate_storage ()
 Allocate all Arrays defined in IceModel. More...
 
virtual TimesteppingInfo max_timestep (unsigned int counter)
 Use various stability criteria to determine the time step for an evolution run. More...
 
virtual MaxTimestep max_timestep_diffusivity ()
 Compute the maximum time step allowed by the diffusive SIA. More...
 
virtual unsigned int skip_counter (double input_dt, double input_dt_diffusivity)
 Compute the skip counter using "long" (usually determined using the CFL stability criterion) and "short" (typically determined using the diffusivity-based stability criterion) time step lengths. More...
 
virtual void bedrock_thermal_model_step ()
 
virtual void hydrology_step ()
 
virtual void combine_basal_melt_rate (const Geometry &geometry, const array::Scalar &shelf_base_mass_flux, const array::Scalar &grounded_basal_melt_rate, array::Scalar &result)
 Combine basal melt rate in grounded and floating areas. More...
 
void enforce_consistency_of_geometry (ConsistencyFlag flag)
 Update the surface elevation and the flow-type mask when the geometry has changed. More...
 
void identify_open_ocean (const array::CellType &cell_type, array::Scalar &result)
 
virtual void front_retreat_step ()
 
void compute_geometry_change (const array::Scalar &thickness, const array::Scalar &Href, const array::Scalar &thickness_old, const array::Scalar &Href_old, bool add_values, array::Scalar &output)
 
virtual void regrid ()
 Manage regridding based on user options. More...
 
virtual void update_fracture_density ()
 
virtual double compute_temperate_base_fraction (double ice_area)
 
virtual double compute_original_ice_fraction (double ice_volume)
 
virtual void print_summary (bool tempAndAge)
 
virtual void print_summary_line (bool printPrototype, bool tempAndAge, double delta_t, double volume, double area, double meltfrac, double max_diffusivity)
 Print a line to stdout which summarizes the state of the modeled ice sheet at the end of the time step. More...
 
virtual int process_signals ()
 Catch signals -USR1, -USR2 and -TERM. More...
 
virtual void prepend_history (const std::string &string)
 Get time and user/host name and add it to the given string. More...
 
VariableMetadata run_stats () const
 
void init_snapshots ()
 Initializes the snapshot-saving mechanism. More...
 
void write_snapshot ()
 Writes a snapshot of the model state (if necessary) More...
 
MaxTimestep save_max_timestep (double my_t)
 Computes the maximum time-step we can take and still hit all -save_times. More...
 
void init_timeseries ()
 Initializes the code writing scalar time-series. More...
 
void flush_timeseries ()
 Flush scalar time-series. More...
 
MaxTimestep ts_max_timestep (double my_t)
 Computes the maximum time-step we can take and still hit all -ts_times. More...
 
void init_extras ()
 Initialize the code saving spatially-variable diagnostic quantities. More...
 
void write_extras ()
 Write spatially-variable diagnostic quantities. More...
 
MaxTimestep extras_max_timestep (double my_t)
 Computes the maximum time-step we can take and still hit all -extra_times. More...
 
void init_checkpoints ()
 Initialize checkpointing (snapshot-on-wallclock-time) mechanism. More...
 
bool write_checkpoint ()
 Write a checkpoint (i.e. an intermediate result of a run). More...
 
virtual void update_viewers ()
 Update the runtime graphical viewers. More...
 
virtual void view_field (const array::Array *field)
 
- Static Protected Attributes inherited from pism::IceModel
static const int m_n_work2d = 4
 

Detailed Description

This is the IceBin customized version of PISM's pism::IceModel class.

See https://github.com/pism/pism/issues/219

Here's a short term solution, though: create a new class IBIceModel derived from IceModel and re-implement IceModel::allocate_couplers(). In it, set IceModel::external_surface_model and IceModel::external_ocean_model as you see fit (IceModel will not de-allocate a surface (ocean) model if it is set to true) and allocate PSConstantICEBIN. You might also want to add IBIceModel::get_surface_model() which returns IceModel::surface to get access to PSConstantICEBIN from outside of IBIceModel.

Definition at line 35 of file IBIceModel.hh.


The documentation for this class was generated from the following files: