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 Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
pism::array::Forcing Class Reference

2D time-dependent inputs (for climate forcing, etc) More...

#include <Forcing.hh>

+ Inheritance diagram for pism::array::Forcing:

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< Scalarduplicate () 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 Gridgrid () 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::Vecvec () const
 
std::shared_ptr< petsc::DMdm () 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::Vecallocate_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...
 
SpatialVariableMetadatametadata (unsigned int N=0)
 Returns a reference to the SpatialVariableMetadata object containing metadata for the compoment N. More...
 
const SpatialVariableMetadatametadata (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< ForcingConstant (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

Datam_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 &parallel, petsc::Vec &onp0) const
 
void get_from_proc0 (petsc::Vec &onp0, petsc::Vec &parallel) const
 
- Protected Attributes inherited from pism::array::Array
Implm_impl
 
void * m_array
 

Detailed Description

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.


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