PISM, A Parallel Ice Sheet Model
stable v2.1.1 committed by Constantine Khrulev on 2024-12-04 13:36:58 -0900
|
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::Vec & | total_displacement () const |
const petsc::Vec & | viscous_displacement () const |
const petsc::Vec & | elastic_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 |
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.