ASPECT
Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
aspect::Postprocess::GravityPointValues< dim > Class Template Reference
Inheritance diagram for aspect::Postprocess::GravityPointValues< dim >:
Inheritance graph
[legend]

Public Member Functions

 GravityPointValues ()
 
void initialize () override
 
std::pair< std::string, std::string > execute (TableHandler &) override
 
void parse_parameters (ParameterHandler &prm) override
 
template<class Archive >
void serialize (Archive &ar, const unsigned int version)
 
void save (std::map< std::string, std::string > &status_strings) const override
 
void load (const std::map< std::string, std::string > &status_strings) override
 
- Public Member Functions inherited from aspect::Postprocess::Interface< dim >
virtual std::list< std::string > required_other_postprocessors () const
 
- Public Member Functions inherited from aspect::Plugins::InterfaceBase
virtual ~InterfaceBase ()=default
 
virtual void update ()
 
- Public Member Functions inherited from aspect::SimulatorAccess< dim >
 SimulatorAccess ()
 
 SimulatorAccess (const Simulator< dim > &simulator_object)
 
virtual ~SimulatorAccess ()
 
virtual void initialize_simulator (const Simulator< dim > &simulator_object)
 
const Introspection< dim > & introspection () const
 
const Simulator< dim > & get_simulator () const
 
const Parameters< dim > & get_parameters () const
 
SimulatorSignals< dim > & get_signals () const
 
MPI_Comm get_mpi_communicator () const
 
TimerOutputget_computing_timer () const
 
const ConditionalOStreamget_pcout () const
 
double get_time () const
 
double get_timestep () const
 
double get_old_timestep () const
 
unsigned int get_timestep_number () const
 
const TimeStepping::Manager< dim > & get_timestepping_manager () const
 
unsigned int get_nonlinear_iteration () const
 
const parallel::distributed::Triangulation< dim > & get_triangulation () const
 
double get_volume () const
 
const Mapping< dim > & get_mapping () const
 
std::string get_output_directory () const
 
unsigned int get_checkpoint_id () const
 
bool include_adiabatic_heating () const
 
bool include_latent_heat () const
 
bool include_melt_transport () const
 
int get_stokes_velocity_degree () const
 
double get_adiabatic_surface_temperature () const
 
double get_surface_pressure () const
 
bool convert_output_to_years () const
 
unsigned int get_pre_refinement_step () const
 
unsigned int n_compositional_fields () const
 
double get_end_time () const
 
void get_refinement_criteria (Vector< float > &estimated_error_per_cell) const
 
void get_artificial_viscosity (Vector< float > &viscosity_per_cell, const bool skip_interior_cells=false) const
 
void get_artificial_viscosity_composition (Vector< float > &viscosity_per_cell, const unsigned int compositional_variable) const
 
const LinearAlgebra::BlockVectorget_current_linearization_point () const
 
const LinearAlgebra::BlockVectorget_solution () const
 
const LinearAlgebra::BlockVectorget_old_solution () const
 
const LinearAlgebra::BlockVectorget_old_old_solution () const
 
const LinearAlgebra::BlockVectorget_reaction_vector () const
 
const LinearAlgebra::BlockVectorget_mesh_velocity () const
 
const DoFHandler< dim > & get_dof_handler () const
 
const FiniteElement< dim > & get_fe () const
 
const LinearAlgebra::BlockSparseMatrixget_system_matrix () const
 
const LinearAlgebra::BlockSparseMatrixget_system_preconditioner_matrix () const
 
const MaterialModel::Interface< dim > & get_material_model () const
 
const GravityModel::Interface< dim > & get_gravity_model () const
 
const InitialTopographyModel::Interface< dim > & get_initial_topography_model () const
 
const std::shared_ptr< const InitialTopographyModel::Interface< dim > > get_initial_topography_model_pointer () const
 
const GeometryModel::Interface< dim > & get_geometry_model () const
 
const AdiabaticConditions::Interface< dim > & get_adiabatic_conditions () const
 
bool has_boundary_temperature () const
 
const BoundaryTemperature::Manager< dim > & get_boundary_temperature_manager () const
 
const BoundaryConvectiveHeating::Manager< dim > & get_boundary_convective_heating_manager () const
 
const BoundaryHeatFlux::Interface< dim > & get_boundary_heat_flux () const
 
bool has_boundary_composition () const
 
const BoundaryComposition::Manager< dim > & get_boundary_composition_manager () const
 
const BoundaryTraction::Manager< dim > & get_boundary_traction_manager () const
 
std::shared_ptr< const InitialTemperature::Manager< dim > > get_initial_temperature_manager_pointer () const
 
const InitialTemperature::Manager< dim > & get_initial_temperature_manager () const
 
std::shared_ptr< const InitialComposition::Manager< dim > > get_initial_composition_manager_pointer () const
 
const InitialComposition::Manager< dim > & get_initial_composition_manager () const
 
const std::set< types::boundary_id > & get_fixed_temperature_boundary_indicators () const
 
const std::set< types::boundary_id > & get_fixed_heat_flux_boundary_indicators () const
 
const std::set< types::boundary_id > & get_fixed_convective_heating_boundary_indicators () const
 
const std::set< types::boundary_id > & get_fixed_composition_boundary_indicators () const
 
const std::set< types::boundary_id > & get_mesh_deformation_boundary_indicators () const
 
const BoundaryVelocity::Manager< dim > & get_boundary_velocity_manager () const
 
const HeatingModel::Manager< dim > & get_heating_model_manager () const
 
const MeshRefinement::Manager< dim > & get_mesh_refinement_manager () const
 
const MeltHandler< dim > & get_melt_handler () const
 
const VolumeOfFluidHandler< dim > & get_volume_of_fluid_handler () const
 
const NewtonHandler< dim > & get_newton_handler () const
 
const MeshDeformation::MeshDeformationHandler< dim > & get_mesh_deformation_handler () const
 
const LateralAveraging< dim > & get_lateral_averaging () const
 
const AffineConstraints< double > & get_current_constraints () const
 
bool simulator_is_past_initialization () const
 
double get_pressure_scaling () const
 
bool pressure_rhs_needs_compatibility_modification () const
 
bool model_has_prescribed_stokes_solution () const
 
TableHandlerget_statistics_object () const
 
const Postprocess::Manager< dim > & get_postprocess_manager () const
 
unsigned int n_particle_managers () const
 
const Particle::Manager< dim > & get_particle_manager (const unsigned int particle_manager_index) const
 
Particle::Manager< dim > & get_particle_manager (const unsigned int particle_manager_index)
 
bool is_stokes_matrix_free ()
 
const StokesMatrixFreeHandler< dim > & get_stokes_matrix_free () const
 
const PrescribedSolution::Manager< dim > & get_prescribed_solution () const
 
RotationProperties< dim > compute_net_angular_momentum (const bool use_constant_density, const LinearAlgebra::BlockVector &solution, const bool limit_to_top_faces=false) const
 
void remove_nullspace (LinearAlgebra::BlockVector &solution, LinearAlgebra::BlockVector &distributed_stokes_solution) const
 
double normalize_pressure (LinearAlgebra::BlockVector &vector) const
 
void denormalize_pressure (const double pressure_adjustment, LinearAlgebra::BlockVector &vector) const
 

Static Public Member Functions

static void declare_parameters (ParameterHandler &prm)
 
- Static Public Member Functions inherited from aspect::Plugins::InterfaceBase
static void declare_parameters (ParameterHandler &prm)
 
- Static Public Member Functions inherited from aspect::SimulatorAccess< dim >
static void get_composition_values_at_q_point (const std::vector< std::vector< double >> &composition_values, const unsigned int q, std::vector< double > &composition_values_at_q_point)
 

Private Types

enum  SamplingScheme { map , fibonacci_spiral , list_of_points }
 

Private Member Functions

void set_last_output_time (const double current_time)
 

Private Attributes

double output_interval
 
double last_output_time
 
unsigned int maximum_timesteps_between_outputs
 
unsigned int last_output_timestep
 
unsigned int output_file_number
 
double end_time
 
unsigned int precision
 
unsigned int quadrature_degree_increase
 
unsigned int n_points_spiral
 
unsigned int n_points_radius
 
unsigned int n_points_longitude
 
unsigned int n_points_latitude
 
double minimum_radius
 
double maximum_radius
 
double minimum_colongitude
 
double maximum_colongitude
 
double minimum_colatitude
 
double maximum_colatitude
 
double reference_density
 
enum aspect::Postprocess::GravityPointValues::SamplingScheme sampling_scheme
 
std::vector< double > radius_list
 
std::vector< double > longitude_list
 
std::vector< double > latitude_list
 
double model_outer_radius
 
double model_inner_radius
 
std::vector< std::array< double, dim > > satellite_positions_spherical
 
std::vector< Point< dim > > satellite_positions_cartesian
 

Detailed Description

template<int dim>
class aspect::Postprocess::GravityPointValues< dim >

A postprocessor that computes gravity, gravity anomalies, gravity potential and gravity gradients for a set of points (e.g. satellites) in or above the model surface for a user-defined range of latitudes, longitudes and radius, or a list of point coordinates. Spherical coordinates in the output file are radius, colatitude and colongitude. Gravity is here based on the density distribution from the material model (and non adiabatic). This means that the density may come directly from an ascii file. This postprocessor also computes theoretical gravity and its derivatives, which corresponds to the analytical solution of gravity in the same geometry but filled with a reference density. The reference density is also used to determine the density difference for computing gravity anomalies. Thus one must carefully evaluate the meaning of the gravity anomaly output, because the solution may not reflect the actual gravity anomaly (due to differences in the assumed reference density). One way to guarantee correct gravity anomalies is to subtract the gravity of a certain point from the average gravity on the map. Another way is to directly use density anomalies for this postprocessor. The average- minimum- and maximum gravity acceleration and potential are written into the statistics file.

Definition at line 57 of file gravity_point_values.h.

Member Enumeration Documentation

◆ SamplingScheme

Specify the sampling scheme determining if gravity calculation is performed.

Enumerator
map 
fibonacci_spiral 
list_of_points 

Definition at line 263 of file gravity_point_values.h.

Constructor & Destructor Documentation

◆ GravityPointValues()

Constructor.

Member Function Documentation

◆ initialize()

template<int dim>
void aspect::Postprocess::GravityPointValues< dim >::initialize ( )
overridevirtual

Initialization function. This function is called once at the beginning of the program after parse_parameters() is run and after the SimulatorAccess (if applicable) is initialized.

The default implementation of this function does nothing, but plugins that derive from this class (via the Interface classes of their respective plugin systems) may overload it if they want something to happen upon startup of the Simulator object to which the plugin contributes.

Reimplemented from aspect::Plugins::InterfaceBase.

◆ execute()

template<int dim>
std::pair<std::string,std::string> aspect::Postprocess::GravityPointValues< dim >::execute ( TableHandler )
overridevirtual

Specify the creation of output_gravity.txt.

Implements aspect::Postprocess::Interface< dim >.

◆ declare_parameters()

template<int dim>
static void aspect::Postprocess::GravityPointValues< dim >::declare_parameters ( ParameterHandler prm)
static

Declare the parameters this class takes through input files.

◆ parse_parameters()

template<int dim>
void aspect::Postprocess::GravityPointValues< dim >::parse_parameters ( ParameterHandler prm)
overridevirtual

Read the parameters this class declares from the parameter file.

Reimplemented from aspect::Plugins::InterfaceBase.

◆ serialize()

template<int dim>
template<class Archive >
void aspect::Postprocess::GravityPointValues< dim >::serialize ( Archive &  ar,
const unsigned int  version 
)

Serialize the contents of this class as far as they are not read from input parameter files.

◆ save()

template<int dim>
void aspect::Postprocess::GravityPointValues< dim >::save ( std::map< std::string, std::string > &  status_strings) const
overridevirtual

Save the state of this object.

Reimplemented from aspect::Plugins::InterfaceBase.

◆ load()

template<int dim>
void aspect::Postprocess::GravityPointValues< dim >::load ( const std::map< std::string, std::string > &  status_strings)
overridevirtual

Restore the state of the object.

Reimplemented from aspect::Plugins::InterfaceBase.

◆ set_last_output_time()

template<int dim>
void aspect::Postprocess::GravityPointValues< dim >::set_last_output_time ( const double  current_time)
private

Set the time output was supposed to be written. In the simplest case, this is the previous last output time plus the interval, but in general we'd like to ensure that it is the largest supposed output time, which is smaller than the current time, to avoid falling behind with last_output_time and having to catch up once the time step becomes larger. This is done after every output.

Member Data Documentation

◆ output_interval

template<int dim>
double aspect::Postprocess::GravityPointValues< dim >::output_interval
private

Interval between the generation of gravity output.

This variable is read from the parameter file through a parameter called 'Time between gravity output'.

Definition at line 111 of file gravity_point_values.h.

◆ last_output_time

template<int dim>
double aspect::Postprocess::GravityPointValues< dim >::last_output_time
private

A time (in seconds) at which the last graphical output was supposed to be produced. Used to check for the next necessary output time.

Definition at line 117 of file gravity_point_values.h.

◆ maximum_timesteps_between_outputs

template<int dim>
unsigned int aspect::Postprocess::GravityPointValues< dim >::maximum_timesteps_between_outputs
private

Maximum number of steps between the generation of gravity output. This variable is read from the parameter file through a parameter called 'Time steps between gravity output'.

Definition at line 123 of file gravity_point_values.h.

◆ last_output_timestep

template<int dim>
unsigned int aspect::Postprocess::GravityPointValues< dim >::last_output_timestep
private

Timestep at which the last gravity output was produced Used to check for the next necessary output time.

Definition at line 129 of file gravity_point_values.h.

◆ output_file_number

template<int dim>
unsigned int aspect::Postprocess::GravityPointValues< dim >::output_file_number
private

Consecutively counted number indicating the how-manyth time we will create output the next time we get to it.

Definition at line 135 of file gravity_point_values.h.

◆ end_time

template<int dim>
double aspect::Postprocess::GravityPointValues< dim >::end_time
private

end_time is taken from parameter file. It is used to tell the postprocessor to write gravity output at the end time. This variable is read from the parameter file through a parameter called 'End time'.

Definition at line 142 of file gravity_point_values.h.

◆ precision

template<int dim>
unsigned int aspect::Postprocess::GravityPointValues< dim >::precision
private

Set the precision of the gravity acceleration, potential and gradients in the gravity output and statistics file. This variable is read from the parameter file through a parameter called 'Precision in gravity output'.

Definition at line 159 of file gravity_point_values.h.

◆ quadrature_degree_increase

template<int dim>
unsigned int aspect::Postprocess::GravityPointValues< dim >::quadrature_degree_increase
private

Quadrature degree increase over the velocity element degree may be required when gravity is calculated near the surface or inside the model. An increase in the quadrature element adds accuracy to the gravity solution from noise due to the model grid. This variable is read from the parameter file through a parameter called 'Quadrature degree increase'.

Definition at line 168 of file gravity_point_values.h.

◆ n_points_spiral

template<int dim>
unsigned int aspect::Postprocess::GravityPointValues< dim >::n_points_spiral
private

Parameter for the fibonacci spiral sampling scheme: This variable is read from the parameter file through a parameter called 'Number points fibonacci spiral'.

Definition at line 174 of file gravity_point_values.h.

◆ n_points_radius

template<int dim>
unsigned int aspect::Postprocess::GravityPointValues< dim >::n_points_radius
private

Parameter for the map and fibonacci spiral sampling scheme: Gravity may be calculated for a sets of points along the radius (e.g. depth profile) between a minimum and maximum radius. Number of points along the radius is specified with n_points_radius. This variable is read from the parameter file through a parameter called 'Number points radius'.

Definition at line 183 of file gravity_point_values.h.

◆ n_points_longitude

template<int dim>
unsigned int aspect::Postprocess::GravityPointValues< dim >::n_points_longitude
private

Parameter for the map sampling scheme: Gravity may be calculated for a sets of points along the longitude (e.g. satellite mapping) between a minimum and maximum longitude. Number of points along the longitude is specified with n_points_longitude. This variable is read from the parameter file through a parameter called 'Number points longitude'.

Definition at line 192 of file gravity_point_values.h.

◆ n_points_latitude

template<int dim>
unsigned int aspect::Postprocess::GravityPointValues< dim >::n_points_latitude
private

Parameter for the map sampling scheme: Gravity may be calculated for a sets of points along the latitude (e.g. satellite mapping) between a minimum and maximum latitude. Number of points along the latitude is specified with n_points_latitude. This variable is read from the parameter file through a parameter called 'Number points latitude'.

Definition at line 201 of file gravity_point_values.h.

◆ minimum_radius

template<int dim>
double aspect::Postprocess::GravityPointValues< dim >::minimum_radius
private

Parameter for the map and fibonacci spiral sampling scheme: Prescribe a minimum radius for a sampling coverage at a specific height. May be set in- or outside the model domain. This variable is read from the parameter file through a parameter called 'Minimum radius'.

Definition at line 209 of file gravity_point_values.h.

◆ maximum_radius

template<int dim>
double aspect::Postprocess::GravityPointValues< dim >::maximum_radius
private

Parameter for the map and fibonacci spiral sampling scheme: Maximum radius for the radius range. May be set in- or outside the model domain. No need to specify maximum_radius if n_points_radius is 1. This variable is read from the parameter file through a parameter called 'Maximum radius'.

Definition at line 218 of file gravity_point_values.h.

◆ minimum_colongitude

template<int dim>
double aspect::Postprocess::GravityPointValues< dim >::minimum_colongitude
private

Parameter for the map sampling scheme: Minimum longitude for longitude range. This variable is read from the parameter file through a parameter called 'Minimum longitude'.

Definition at line 225 of file gravity_point_values.h.

◆ maximum_colongitude

template<int dim>
double aspect::Postprocess::GravityPointValues< dim >::maximum_colongitude
private

Parameter for the map sampling scheme: Maximum longitude for the longitude range. No need to specify maximum_longitude if n_points_longitude is 1. This variable is read from the parameter file through a parameter called 'Maximum longitude'.

Definition at line 233 of file gravity_point_values.h.

◆ minimum_colatitude

template<int dim>
double aspect::Postprocess::GravityPointValues< dim >::minimum_colatitude
private

Parameter for the map sampling scheme: Minimum latitude for the latitude range. This variable is read from the parameter file through a parameter called 'Minimum latitude'.

Definition at line 240 of file gravity_point_values.h.

◆ maximum_colatitude

template<int dim>
double aspect::Postprocess::GravityPointValues< dim >::maximum_colatitude
private

Parameter for the map sampling scheme: Maximum latitude for the latitude range. No need to specify maximum_latitude if n_points_latitude is 1. This variable is read from the parameter file through a parameter called 'Maximum latitude'.

Definition at line 248 of file gravity_point_values.h.

◆ reference_density

template<int dim>
double aspect::Postprocess::GravityPointValues< dim >::reference_density
private

A reference density is required for two purposes: 1) benchmark the gravity postprocessor with computing analytically gravity acceleration and gradients in the domain filled with a constant density. 2) calculate the density difference of the density given by the material model and a constant density, in order to compute gravity anomalies. This variable is read from the parameter file through a parameter called 'Reference density'.

Definition at line 258 of file gravity_point_values.h.

◆ sampling_scheme

◆ radius_list

template<int dim>
std::vector<double> aspect::Postprocess::GravityPointValues< dim >::radius_list
private

Parameter for the list of points sampling scheme: List of radius coordinates for the list of points sampling scheme. Must follow the same order as the lists of longitude and latitude. This variable is read from the parameter file through a parameter called 'List of radius'.

Definition at line 276 of file gravity_point_values.h.

◆ longitude_list

template<int dim>
std::vector<double> aspect::Postprocess::GravityPointValues< dim >::longitude_list
private

Parameter for the list of points sampling scheme: List of longitude coordinates for the list of points sampling scheme. Must follow the same order as the lists of radius and latitude. This variable is read from the parameter file through a parameter called 'List of longitude'.

Definition at line 284 of file gravity_point_values.h.

◆ latitude_list

template<int dim>
std::vector<double> aspect::Postprocess::GravityPointValues< dim >::latitude_list
private

Parameter for the list of points sampling scheme: List of latitude coordinates for the list of points sampling scheme. Must follow the same order as the lists of longitude and longitude.

This variable is read from the parameter file through a parameter called 'List of latitude'.

Definition at line 293 of file gravity_point_values.h.

◆ model_outer_radius

template<int dim>
double aspect::Postprocess::GravityPointValues< dim >::model_outer_radius
private

Definition at line 298 of file gravity_point_values.h.

◆ model_inner_radius

template<int dim>
double aspect::Postprocess::GravityPointValues< dim >::model_inner_radius
private

Definition at line 299 of file gravity_point_values.h.

◆ satellite_positions_spherical

template<int dim>
std::vector<std::array<double,dim> > aspect::Postprocess::GravityPointValues< dim >::satellite_positions_spherical
private

The positions of all satellite positions in spherical and Cartesian coordinate systems.

Definition at line 305 of file gravity_point_values.h.

◆ satellite_positions_cartesian

template<int dim>
std::vector<Point<dim> > aspect::Postprocess::GravityPointValues< dim >::satellite_positions_cartesian
private

Definition at line 306 of file gravity_point_values.h.


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