23#include "pism/coupler/ocean/CompleteOceanModel.hh"
25#include "pism/coupler/ocean/PicoGeometry.hh"
29class VariableMetadata;
42 Pico(std::shared_ptr<const Grid>
g);
70 std::vector<double> &temperature,
71 std::vector<double> &salinity)
const;
78 const std::vector<double> &basin_temperature,
79 const std::vector<double> &basin_salinity,
121 std::vector<double> &result)
const;
126 std::vector<double> &result)
const;
Combines the max. time step with the flag indicating if a restriction is active. Makes is possible to...
"Cell type" mask. Adds convenience methods to array::Scalar.
void set_ocean_input_fields(const PicoPhysics &physics, const array::Scalar &ice_thickness, const array::CellType1 &mask, const array::Scalar &basin_mask, const array::Scalar &shelf_mask, const std::vector< double > &basin_temperature, const std::vector< double > &basin_salinity, array::Scalar &Toc_box0, array::Scalar &Soc_box0) const
Set ocean ocean input from box 0 as boundary condition for box 1.
void write_state_impl(const OutputFile &output) const
The default (empty implementation).
std::shared_ptr< array::Forcing > m_salinity_ocean
std::map< std::string, Diagnostic::Ptr > spatial_diagnostics_impl() const
MaxTimestep max_timestep_impl(double t) const
void process_box1(const PicoPhysics &physics, const array::Scalar &ice_thickness, const array::Scalar &shelf_mask, const array::Scalar &box_mask, const array::Scalar &Toc_box0, const array::Scalar &Soc_box0, array::Scalar &basal_melt_rate, array::Scalar &basal_temperature, array::Scalar &T_star, array::Scalar &Toc, array::Scalar &Soc, array::Scalar &overturning)
void compute_box_area(int box_id, const array::Scalar &shelf_mask, const array::Scalar &box_mask, std::vector< double > &result) const
array::Scalar1 m_basal_melt_rate
void compute_ocean_input_per_basin(const PicoPhysics &physics, const array::Scalar &basin_mask, const array::Scalar &continental_shelf_mask, const array::Scalar &salinity_ocean, const array::Scalar &theta_ocean, std::vector< double > &temperature, std::vector< double > &salinity) const
Compute temperature and salinity input from ocean data by averaging.
void compute_box_average(int box_id, const array::Scalar &field, const array::Scalar &shelf_mask, const array::Scalar &box_mask, std::vector< double > &result) const
std::shared_ptr< array::Forcing > m_theta_ocean
std::set< VariableMetadata > state_impl() const
void process_other_boxes(const PicoPhysics &physics, const array::Scalar &ice_thickness, const array::Scalar &shelf_mask, const array::Scalar &box_mask, array::Scalar &basal_melt_rate, array::Scalar &basal_temperature, array::Scalar &T_star, array::Scalar &Toc, array::Scalar &Soc) const
void init_impl(const Geometry &geometry)
void update_impl(const Inputs &inputs, double t, double dt)
void beckmann_goosse(const PicoPhysics &physics, const array::Scalar &ice_thickness, const array::Scalar &shelf_mask, const array::CellType &cell_type, const array::Scalar &Toc_box0, const array::Scalar &Soc_box0, array::Scalar &basal_melt_rate, array::Scalar &basal_temperature, array::Scalar &Toc, array::Scalar &Soc)
array::Scalar m_overturning
bool ocean(int M)
An ocean cell (floating ice or ice-free).