3 #include "pism/icebin/IBSurfaceModel.hh"
4 #include "pism/icebin/MassEnergyBudget.hh"
5 #include "pism/icebin/NullTransportHydrology.hh"
6 #include "pism/icemodel/IceModel.hh"
13 class IceCoupler_PISM;
37 friend class ::icebin::gpism::IceCoupler_PISM;
69 double surface_mass_balance,
70 double basal_melt_rate,
73 double Href_to_H_flux,
74 double nonneg_rule_flux);
95 IBIceModel(std::shared_ptr<pism::Grid>
grid,
const std::shared_ptr<Context> &context,
108 return std::dynamic_pointer_cast<IBSurfaceModel>(
m_surface).get();
133 void dumpToFile(
const std::string &filename)
const ;
std::shared_ptr< surface::SurfaceModel > m_surface
const Time::Ptr m_time
Time manager.
std::shared_ptr< Grid > grid() const
Return the grid used by this model.
double t_TempAge
time of last update for enthalpy/temperature
std::unique_ptr< hydrology::Hydrology > m_subglacial_hydrology
pism::array::Scalar elevmask_ice
pism::array::Scalar ice_top_senth
void construct_surface_temp(pism::array::Scalar &deltah, double default_val, double timestep_s, pism::array::Scalar &surface_temp)
std::unique_ptr< pism::File > post_mass_nc
virtual void misc_setup()
Miscellaneous initialization tasks plus tasks that need the fields that can come from regridding.
void dumpToFile(const std::string &filename) const
virtual void time_setup()
Initialize time from an input file or command-line options.
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)
double enthalpy_t() const
virtual void allocate_couplers()
std::unique_ptr< pism::File > post_energy_nc
virtual void massContExplicitStep()
std::unique_ptr< pism::File > pre_mass_nc
Write variables every time massContPostHook() is called.
IBIceModel(std::shared_ptr< pism::Grid > grid, const std::shared_ptr< Context > &context, IBIceModel::Params const &_params)
void compute_enth2(pism::array::Scalar &enth2, pism::array::Scalar &mass2)
pism::icebin::NullTransportHydrology * null_hydrology()
void prepare_outputs(double time_s)
void energy_step()
Manage the solution of the energy equation, and related parallel communication.
virtual void allocate_subglacial_hydrology()
Decide which subglacial hydrology model to use.
pism::icebin::IBSurfaceModel * ib_surface_model()
void prepare_initial_outputs()
pism::array::Scalar elevmask_land
std::unique_ptr< pism::File > pre_energy_nc
double m_meter_per_s_to_kg_per_m2