PISM, A Parallel Ice Sheet Model
stable v2.1-1-g6902d5502 committed by Ed Bueler on 2023-12-20 08:38:27 -0800
|
2D time-dependent inputs (for climate forcing, etc) More...
#include <Forcing.hh>
Classes | |
struct | Data |
Public Member Functions | |
Forcing (std::shared_ptr< const Grid > grid, const File &file, const std::string &short_name, const std::string &standard_name, unsigned int max_buffer_size, bool periodic, InterpolationType interpolation_type=PIECEWISE_CONSTANT) | |
virtual | ~Forcing () |
unsigned int | buffer_size () |
void | init (const std::string &filename, bool periodic) |
void | update (double t, double dt) |
Read some data to make sure that the interval (t, t + dt) is covered. More... | |
MaxTimestep | max_timestep (double t) const |
Given the time t determines the maximum possible time-step this Forcing allows. More... | |
void | interp (double t) |
void | interp (int i, int j, std::vector< double > &results) |
Compute values of the time-series using precomputed indices (and piece-wise constant or piece-wise linear interpolation). More... | |
void | average (double t, double dt) |
void | begin_access () const |
Checks if an Array is allocated and calls DAVecGetArray. More... | |
void | end_access () const |
Checks if an Array is allocated and calls DAVecRestoreArray. More... | |
void | init_interpolation (const std::vector< double > &ts) |
Compute weights for the piecewise-constant interpolation. This is used both for time-series and "snapshots". More... | |
Public Member Functions inherited from pism::array::Scalar | |
Scalar (std::shared_ptr< const Grid > grid, const std::string &name) | |
std::shared_ptr< Scalar > | duplicate () const |
int | as_int (int i, int j) const |
Public Member Functions inherited from pism::array::Array2D< double > | |
Array2D (std::shared_ptr< const Grid > grid, const std::string &short_name, Kind ghostedp, unsigned int stencil_width=1) | |
double ** | array () |
double const *const * | array () const |
double & | operator() (int i, int j) |
const double & | operator() (int i, int j) const |
void | add (double alpha, const Array2D< double > &x) |
void | add (double alpha, const Array2D< double > &x, Array2D< double > &result) const |
void | copy_from (const Array2D< double > &source) |
Public Member Functions inherited from pism::array::Array | |
virtual | ~Array () |
std::shared_ptr< const Grid > | grid () const |
unsigned int | ndims () const |
Returns the number of spatial dimensions. More... | |
std::vector< int > | shape () const |
unsigned int | ndof () const |
Returns the number of degrees of freedom per grid point. More... | |
unsigned int | stencil_width () const |
Get the stencil width of the current Array. Returns 0 if ghosts are not available. More... | |
const std::vector< double > & | levels () const |
std::array< double, 2 > | range () const |
Result: min <- min(v[j]), max <- max(v[j]). More... | |
std::vector< double > | norm (int n) const |
Computes the norm of all the components of an Array. More... | |
void | add (double alpha, const Array &x) |
Result: v <- v + alpha * x. Calls VecAXPY. More... | |
void | shift (double alpha) |
Result: v[j] <- v[j] + alpha for all j. Calls VecShift. More... | |
void | scale (double alpha) |
Result: v <- v * alpha. Calls VecScale. More... | |
petsc::Vec & | vec () const |
std::shared_ptr< petsc::DM > | dm () const |
void | set_name (const std::string &name) |
Sets the variable name to name . More... | |
const std::string & | get_name () const |
Get the name of an Array object. More... | |
void | define (const File &file, io::Type default_type) const |
Define variables corresponding to an Array in a file opened using file . More... | |
void | read (const std::string &filename, unsigned int time) |
void | read (const File &file, unsigned int time) |
void | write (const std::string &filename) const |
void | write (const File &file) const |
void | regrid (const std::string &filename, io::Default default_value) |
void | regrid (const File &file, io::Default default_value) |
void | update_ghosts () |
Updates ghost points. More... | |
std::shared_ptr< petsc::Vec > | allocate_proc0_copy () const |
void | put_on_proc0 (petsc::Vec &onp0) const |
Puts a local array::Scalar on processor 0. More... | |
void | get_from_proc0 (petsc::Vec &onp0) |
Gets a local Array2 from processor 0. More... | |
void | set (double c) |
Result: v[j] <- c for all j. More... | |
SpatialVariableMetadata & | metadata (unsigned int N=0) |
Returns a reference to the SpatialVariableMetadata object containing metadata for the compoment N. More... | |
const SpatialVariableMetadata & | metadata (unsigned int N=0) const |
int | state_counter () const |
Get the object state counter. More... | |
void | inc_state_counter () |
Increment the object state counter. More... | |
void | set_interpolation_type (InterpolationType type) |
void | view (std::vector< std::shared_ptr< petsc::Viewer > > viewers) const |
View a 2D vector field using existing PETSc viewers. More... | |
void | dump (const char filename[]) const |
Dumps a variable to a file, overwriting this file's contents (for debugging). More... | |
uint64_t | fletcher64_serial () const |
uint64_t | fletcher64 () const |
std::string | checksum (bool serial) const |
void | print_checksum (const char *prefix="", bool serial=false) const |
Public Member Functions inherited from pism::PetscAccessible | |
virtual | ~PetscAccessible ()=default |
Static Public Member Functions | |
static std::shared_ptr< Forcing > | Constant (std::shared_ptr< const Grid > grid, const std::string &short_name, double value) |
Private Member Functions | |
Forcing (std::shared_ptr< const Grid > grid, const std::string &short_name, unsigned int buffer_size, InterpolationType interpolation_type) | |
void | allocate (unsigned int buffer_size, InterpolationType interpolation_type) |
double *** | array3 () |
void | update (unsigned int start) |
Update by reading at most buffer_size records from the file. More... | |
void | discard (int N) |
Discard the first N records, shifting the rest of them towards the "beginning". More... | |
void | set_record (int n) |
Sets the record number n to the contents of the (internal) Vec v. More... | |
void | init_periodic_data (const File &file) |
Private Attributes | |
Data * | m_data |
Additional Inherited Members | |
Public Types inherited from pism::array::Array2D< double > | |
using | value_type = double |
Protected Member Functions inherited from pism::array::Scalar | |
stencils::Star< int > | star_int (int i, int j) const |
stencils::Box< int > | box_int (int i, int j) const |
Scalar (std::shared_ptr< const Grid > grid, const std::string &name, int width) | |
Protected Member Functions inherited from pism::array::Array2D< double > | |
stencils::Star< double > | star (int i, int j) const |
stencils::Box< double > | box (int i, int j) const |
Protected Member Functions inherited from pism::array::Array | |
Array (std::shared_ptr< const Grid > grid, const std::string &name, Kind ghostedp, size_t dof, size_t stencil_width, const std::vector< double > &zlevels) | |
void | set_begin_access_use_dof (bool flag) |
void | read_impl (const File &file, unsigned int time) |
Reads appropriate NetCDF variable(s) into an Array. More... | |
virtual void | regrid_impl (const File &file, io::Default default_value) |
Gets an Array from a file file , interpolating onto the current grid. More... | |
void | write_impl (const File &file) const |
Writes an Array to a NetCDF file. More... | |
void | checkCompatibility (const char *function, const Array &other) const |
Checks if two Arrays have compatible sizes, dimensions and numbers of degrees of freedom. More... | |
void | check_array_indices (int i, int j, unsigned int k) const |
Check array indices and warn if they are out of range. More... | |
void | copy_to_vec (std::shared_ptr< petsc::DM > destination_da, petsc::Vec &destination) const |
Copies v to a global vector 'destination'. Ghost points are discarded. More... | |
void | get_dof (std::shared_ptr< petsc::DM > da_result, petsc::Vec &result, unsigned int start, unsigned int count=1) const |
void | set_dof (std::shared_ptr< petsc::DM > da_source, petsc::Vec &source, unsigned int start, unsigned int count=1) |
void | put_on_proc0 (petsc::Vec ¶llel, petsc::Vec &onp0) const |
void | get_from_proc0 (petsc::Vec &onp0, petsc::Vec ¶llel) const |
Protected Attributes inherited from pism::array::Array | |
Impl * | m_impl |
void * | m_array |
2D time-dependent inputs (for climate forcing, etc)
This class was created to read time-dependent and spatially-varying climate forcing data, in particular snow temperatures and precipitation.
If requests (calls to update()) go in sequence, every record should be read only once.
Note that this class is optimized for use with a PDD scheme – it stores records so that data corresponding to a grid point are stored in adjacent memory locations.
Forcing
has no ghosts.
Definition at line 41 of file Forcing.hh.