PISM, A Parallel Ice Sheet Model
stable v2.1.1 committed by Constantine Khrulev on 2024-12-04 13:36:58 -0900
|
Scalar diagnostic reporting a "flux". More...
#include <Diagnostic.hh>
Public Member Functions | |
TSFluxDiagnostic (std::shared_ptr< const Grid > g, const std::string &name) | |
Public Member Functions inherited from pism::TSRateDiagnostic | |
TSRateDiagnostic (std::shared_ptr< const Grid > g, const std::string &name) | |
Public Member Functions inherited from pism::TSDiagnostic | |
TSDiagnostic (std::shared_ptr< const Grid > g, const std::string &name) | |
virtual | ~TSDiagnostic () |
void | update (double t0, double t1) |
void | flush () |
void | init (const File &output_file, std::shared_ptr< std::vector< double > > requested_times) |
const VariableMetadata & | metadata () const |
Private Member Functions | |
void | update_impl (double t0, double t1) |
Additional Inherited Members | |
Public Types inherited from pism::TSDiagnostic | |
typedef std::shared_ptr< TSDiagnostic > | Ptr |
Protected Member Functions inherited from pism::TSRateDiagnostic | |
void | evaluate (double t0, double t1, double change) |
Protected Member Functions inherited from pism::TSDiagnostic | |
virtual double | compute ()=0 |
void | set_units (const std::string &units, const std::string &output_units) |
Protected Attributes inherited from pism::TSRateDiagnostic | |
double | m_accumulator |
accumulator of changes (used to compute rates of change) More... | |
Protected Attributes inherited from pism::TSDiagnostic | |
std::shared_ptr< const Grid > | m_grid |
the grid More... | |
const Config::ConstPtr | m_config |
Configuration flags and parameters. More... | |
const units::System::Ptr | m_sys |
the unit system More... | |
std::string | m_time_name |
time series object used to store computed values and metadata More... | |
VariableMetadata | m_variable |
VariableMetadata | m_dimension |
VariableMetadata | m_time_bounds |
std::vector< double > | m_time |
std::vector< double > | m_bounds |
std::vector< double > | m_values |
std::shared_ptr< std::vector< double > > | m_requested_times |
requested times More... | |
unsigned int | m_current_time |
index into m_times More... | |
std::string | m_output_filename |
unsigned int | m_start |
starting index used when flushing the buffer More... | |
size_t | m_buffer_size |
size of the buffer used to store data More... | |
Scalar diagnostic reporting a "flux".
The flux is averaged over reporting intervals.
The method compute() should return the change due to a flux over a time step.
Fluxes can be computed using TSRateDiagnostic, but that would require keeping track of the total change due to a flux. It is possible for the magnitude of the total change to grow indefinitely, leading to the loss of precision; this is why we use changes over individual time steps instead.
(The total change due to a flux can grow in magnitude even it the amount does not change. For example: if calving removes as much ice as we have added due to the SMB, the total mass is constant, but total SMB will grow.)
Definition at line 395 of file Diagnostic.hh.