PISM, A Parallel Ice Sheet Model  stable v2.1.1 committed by Constantine Khrulev on 2024-12-04 13:36:58 -0900
Public Member Functions | Private Member Functions | Private Attributes | List of all members
pism::bed::LingleClarkSerial Class Reference

Class implementing the bed deformation model described in [BLKfastearth]. More...

#include <LingleClarkSerial.hh>

Public Member Functions

 LingleClarkSerial (Logger::ConstPtr log, const Config &config, bool include_elastic, int Mx, int My, double dx, double dy, int Nx, int Ny)
 
 ~LingleClarkSerial ()
 
void init (petsc::Vec &viscous_displacement, petsc::Vec &elastic_displacement)
 
void bootstrap (petsc::Vec &thickness, petsc::Vec &uplift)
 
void step (double dt_seconds, petsc::Vec &H)
 
const petsc::Vectotal_displacement () const
 
const petsc::Vecviscous_displacement () const
 
const petsc::Vecelastic_displacement () const
 
void compute_load_response_matrix (fftw_complex *output)
 

Private Member Functions

void compute_elastic_response (petsc::Vec &H, petsc::Vec &dE)
 
void uplift_problem (petsc::Vec &load_thickness, petsc::Vec &bed_uplift, petsc::Vec &output)
 
void precompute_coefficients ()
 
void update_displacement (petsc::Vec &V, petsc::Vec &dE, petsc::Vec &dU)
 
void tweak (petsc::Vec &load_thickness, petsc::Vec &U, int Nx, int Ny, double time)
 

Private Attributes

bool m_include_elastic
 
int m_Mx
 
int m_My
 
double m_dx
 
double m_dy
 
double m_load_density
 load density (for computing load from its thickness) More...
 
double m_mantle_density
 mantle density More...
 
double m_eta
 mantle viscosity More...
 
double m_D
 lithosphere flexural rigidity More...
 
double m_standard_gravity
 
int m_Nx
 
int m_Ny
 
int m_i0_offset
 
int m_j0_offset
 
double m_Lx
 
double m_Ly
 
std::vector< double > m_cx
 
std::vector< double > m_cy
 
petsc::Vec m_Uv
 
petsc::Vec m_Ue
 
petsc::Vec m_U
 
fftw_complex * m_fftw_input
 
fftw_complex * m_fftw_output
 
fftw_complex * m_loadhat
 
fftw_complex * m_lrm_hat
 
fftw_plan m_dft_forward
 
fftw_plan m_dft_inverse
 
Logger::ConstPtr m_log
 

Detailed Description

Class implementing the bed deformation model described in [BLKfastearth].

This class implements the [LingleClark] bed deformation model by a Fourier spectral collocation method, as described in [BLKfastearth]. (The former reference is where the continuum model arose, and a flow-line application is given. The latter reference describes a new, fast method and gives verification results. See also [BLK2006earth] if more technical detail and/or Matlab programs are desired.)

Both a viscous half-space model (with elastic lithosphere) and a spherical elastic model are computed. They are superposed because the underlying earth model is linear.

The class assumes that the supplied Petsc Vecs are sequential. It is expected to be run only on processor zero (or possibly by each processor once each processor owns the entire 2D gridded load thicknesses and bed elevations.)

This model always assumes that we start with no load. Note that this does not mean that we starting state is the equilibrium: the viscous plate may be "pre-bent" by using a provided displacement field or by computing its displacement using an uplift field.

Definition at line 54 of file LingleClarkSerial.hh.


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