|
bool | is_compressible () const override |
|
double | p_c_scale (const MaterialModel::MaterialModelInputs< dim > &inputs, const MaterialModel::MaterialModelOutputs< dim > &outputs, const MeltHandler< dim > &melt_handler, const bool consider_is_melt_cell) const |
|
virtual void | evaluate (const MaterialModel::MaterialModelInputs< dim > &in, MaterialModel::MaterialModelOutputs< dim > &out) const =0 |
|
virtual void | fill_additional_material_model_inputs (MaterialModel::MaterialModelInputs< dim > &input, const LinearAlgebra::BlockVector &solution, const FEValuesBase< dim > &fe_values, const Introspection< dim > &introspection) const |
|
const NonlinearDependence::ModelDependence & | get_model_dependence () const |
|
virtual | ~InterfaceBase ()=default |
|
virtual | ~MeltFractionModel ()=default |
|
| SimulatorAccess () |
|
| SimulatorAccess (const Simulator< dim > &simulator_object) |
|
virtual | ~SimulatorAccess ()=default |
|
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 |
|
TimerOutput & | get_computing_timer () const |
|
const ConditionalOStream & | get_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 |
|
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::BlockVector & | get_current_linearization_point () const |
|
const LinearAlgebra::BlockVector & | get_solution () const |
|
const LinearAlgebra::BlockVector & | get_old_solution () const |
|
const LinearAlgebra::BlockVector & | get_old_old_solution () const |
|
const LinearAlgebra::BlockVector & | get_reaction_vector () const |
|
const LinearAlgebra::BlockVector & | get_mesh_velocity () const |
|
const DoFHandler< dim > & | get_dof_handler () const |
|
const FiniteElement< dim > & | get_fe () const |
|
const LinearAlgebra::BlockSparseMatrix & | get_system_matrix () const |
|
const LinearAlgebra::BlockSparseMatrix & | get_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 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 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_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 |
|
TableHandler & | get_statistics_object () const |
|
const Postprocess::Manager< dim > & | get_postprocess_manager () const |
|
unsigned int | n_particle_worlds () const |
|
const Particle::World< dim > & | get_particle_world (const unsigned int particle_world_index) const |
|
Particle::World< dim > & | get_particle_world (const unsigned int particle_world_index) |
|
bool | is_stokes_matrix_free () |
|
const StokesMatrixFreeHandler< dim > & | get_stokes_matrix_free () const |
|
RotationProperties< dim > | compute_net_angular_momentum (const bool use_constant_density, const LinearAlgebra::BlockVector &solution, const bool limit_to_top_faces=false) const |
|
|
enum | ReactionScheme { no_reaction,
zero_solubility,
tian_approximation,
katz2003
} |
|
std::unique_ptr< MaterialModel::Interface< dim > > | base_model |
|
double | reference_rho_f |
|
double | eta_f |
|
double | fluid_compressibility |
|
double | shear_to_bulk_viscosity_ratio |
|
double | min_compaction_visc |
|
double | max_compaction_visc |
|
double | reference_permeability |
|
double | alpha_phi |
|
double | reference_T |
|
double | fluid_reaction_time_scale |
|
double | tian_max_peridotite_water |
|
double | tian_max_gabbro_water |
|
double | tian_max_MORB_water |
|
double | tian_max_sediment_water |
|
std::vector< double > | LR_peridotite_poly_coeffs {-19.0609, 168.983, -630.032, 1281.84, -1543.14, 1111.88, -459.142, 95.4143, 1.97246} |
|
std::vector< double > | csat_peridotite_poly_coeffs {0.00115628, 2.42179} |
|
std::vector< double > | Td_peridotite_poly_coeffs {-15.4627, 94.9716, 636.603} |
|
std::vector< double > | LR_gabbro_poly_coeffs {-1.81745, 7.67198, -10.8507, 5.09329, 8.14519} |
|
std::vector< double > | csat_gabbro_poly_coeffs {-0.0176673, 0.0893044, 1.52732} |
|
std::vector< double > | Td_gabbro_poly_coeffs {-1.72277, 20.5898, 637.517} |
|
std::vector< double > | LR_MORB_poly_coeffs {-1.78177, 7.50871, -10.4840, 5.19725, 7.96365} |
|
std::vector< double > | csat_MORB_poly_coeffs {0.0102725, -0.115390, 0.324452, 1.41588} |
|
std::vector< double > | Td_MORB_poly_coeffs {-3.81280, 22.7809, 638.049} |
|
std::vector< double > | LR_sediment_poly_coeffs {-2.03283, 10.8186, -21.2119, 18.3351, -6.48711, 8.32459} |
|
std::vector< double > | csat_sediment_poly_coeffs {-0.150662, 0.301807, 1.01867} |
|
std::vector< double > | Td_sediment_poly_coeffs {2.83277, -24.7593, 85.9090, 524.898} |
|
const std::vector< double > | pressure_cutoffs {10, 26, 16, 50} |
|
std::vector< std::vector< double > > | devolatilization_enthalpy_changes |
|
std::vector< std::vector< double > > | water_mass_fractions |
|
std::vector< std::vector< double > > | devolatilization_onset_temperatures |
|
ReactionModel::Katz2003MantleMelting< dim > | katz2003_model |
|
enum aspect::MaterialModel::ReactiveFluidTransport::ReactionScheme | fluid_solid_reaction_scheme |
|
virtual double | reference_darcy_coefficient () const override |
|
std::vector< double > | tian_equilibrium_bound_water_content (const MaterialModel::MaterialModelInputs< dim > &in, unsigned int q) const |
|
virtual void | melt_fractions (const MaterialModel::MaterialModelInputs< dim > &in, std::vector< double > &melt_fractions) const override |
|
void | initialize () override |
|
void | update () override |
|
void | evaluate (const typename Interface< dim >::MaterialModelInputs &in, typename Interface< dim >::MaterialModelOutputs &out) const override |
|
void | parse_parameters (ParameterHandler &prm) override |
|
virtual void | create_additional_named_outputs (MaterialModel::MaterialModelOutputs< dim > &out) const override |
|
static void | declare_parameters (ParameterHandler &prm) |
|
template<int dim>
class aspect::MaterialModel::ReactiveFluidTransport< dim >
A material model that simulates both fluid-rock interactions and the advection of fluids. It is designed to be composited with another material model that computes the solid material properties.
Definition at line 50 of file reactive_fluid_transport.h.
Enumeration for selecting which type of scheme to use for reactions between fluids and solids. The available reaction models are described below.
The no reaction model does not include any reactions between the solid and fluid phases. As a result, there is no exchange between the bound fluid and porosity compositional fields. However, the values of each field may vary through the model evolution through advection from their initial configurations.
The zero solubility model describes a scenario where the solid cannot accommodate any fluid (i.e., zero solubility). The fluid volume fraction in equilibrium with the solid at any point (stored in the melt_fractions vector) is equal to the sum of the bound fluid content and porosity, with the latter determined by the assigned initial porosity, fluid boundary conditions, and fluid transport through the model. Significantly, this reaction model is thus assuming that the bound water fraction is a volume fraction (i.e., since porosity is always a volume fraction). This latter assumption also requires the selected base model to be incompressible, as otherwise the advection equation would only be valid for mass and not volume fractions.
The tian approximation model implements parametrized phase diagrams from Tian et al., 2019 G3, https://doi.org/10.1029/2019GC008488 and calculates the fluid-solid reactions for four different rock types: sediments, MORB, gabbro and peridotite. This is achieved by calculating the maximum allowed bound water content for each composition at the current Pressure-Temperature conditions, and releasing bound water as free water if: (maximum bound water content < current bound water content) or incorporating free water (if present) into the solid phase as bound water: maximum bound water content > current bound water content This model requires that 4 compositional fields named after the 4 different rock types exist in the input file.
The Katz2003 model implements anhydrous the mantle melting model from Katz et. al., 2003 G3, doi:10.1029/2002GC000433.
Enumerator |
---|
no_reaction | |
zero_solubility | |
tian_approximation | |
katz2003 | |
Definition at line 250 of file reactive_fluid_transport.h.