22 #ifndef _aspect_melt_h 23 #define _aspect_melt_h 35 namespace MaterialModel
71 const FEValuesBase<dim> &fe_values,
82 compaction_viscosities.resize(n_points);
83 fluid_viscosities.resize(n_points);
84 permeabilities.resize(n_points);
85 fluid_densities.resize(n_points);
86 fluid_density_gradients.resize(n_points, Tensor<1,dim>());
125 const FullMatrix<double> &projection_matrix,
126 const FullMatrix<double> &expansion_matrix)
override;
159 std::vector<double> &melt_fractions)
const = 0;
168 template <
typename ModelType>
170 bool is_melt_fraction_model (
const ModelType &model_object);
177 template <
typename ModelType>
180 as_melt_fraction_model (
const ModelType &model_object);
186 template <
typename ModelType>
197 template <
typename ModelType>
202 Assert (is_melt_fraction_model(model_object) ==
true,
203 ExcMessage (
"This function can only be called for model objects " 204 "whose types are derived from MeltFractionModel."));
222 virtual double reference_darcy_coefficient ()
const = 0;
244 const bool consider_is_melt_cell)
const;
382 void parse_parameters (ParameterHandler &prm);
471 void initialize_simulator (
const Simulator<dim> &simulator_object)
override;
500 void apply_free_surface_stabilization_with_melt (
const double free_surface_theta,
501 const typename DoFHandler<dim>::active_cell_iterator &cell,
511 void add_current_constraints(AffineConstraints<double> &constraints);
518 bool is_melt_cell(
const typename DoFHandler<dim>::active_cell_iterator &cell)
const;
527 double limited_darcy_coefficient(
const double K_D,
528 const bool is_melt_cell)
const;
534 get_boundary_fluid_pressure ()
const;
bool average_melt_velocity
::TrilinosWrappers::MPI::BlockVector BlockVector
std::vector< bool > is_melt_cell_vector
Melt::Parameters< dim > melt_parameters
void average(const AveragingOperation operation, const typename DoFHandler< dim >::active_cell_iterator &cell, const Quadrature< dim > &quadrature_formula, const Mapping< dim > &mapping, MaterialModelOutputs< dim > &values_out)
std::vector< Tensor< 1, dim > > fluid_density_gradients
::TrilinosWrappers::BlockSparseMatrix BlockSparseMatrix
void declare_parameters(ParameterHandler &prm)
bool heat_advection_by_melt
std::vector< double > fluid_viscosities
std::vector< double > compaction_viscosities
std::vector< double > permeabilities
double melt_scaling_factor_threshold
const std::unique_ptr< aspect::BoundaryFluidPressure::Interface< dim > > boundary_fluid_pressure
std::vector< double > fluid_densities
bool use_discontinuous_p_c
MeltOutputs(const unsigned int n_points, const unsigned int)
AffineConstraints< double > current_constraints