22 #ifndef _aspect_model_grain_size_h 23 #define _aspect_model_grain_size_h 30 #include <deal.II/matrix_free/fe_point_evaluation.h> 31 #include <deal.II/sundials/arkode.h> 37 namespace MaterialModel
52 std::vector<double> get_nth_output(
const unsigned int idx)
const override;
111 bool is_compressible ()
const override;
131 parse_parameters (ParameterHandler &prm)
override;
147 const Point<dim> &position)
const;
160 std::array<std::pair<double, unsigned int>,2>
244 if (input ==
"paleowattmeter")
245 return Formulation::paleowattmeter;
246 else if (input ==
"paleopiezometer")
247 return Formulation::paleopiezometer;
248 else if (input ==
"pinned grain damage")
249 return Formulation::pinned_grain_damage;
251 AssertThrow(
false, ExcNotImplemented());
269 double compute_partitioning_fraction (
const double temperature)
const;
329 double diffusion_viscosity (
const double temperature,
330 const double adiabatic_temperature,
331 const double adiabatic_pressure,
332 const double grain_size,
333 const double second_strain_rate_invariant,
334 const unsigned int phase_index)
const;
347 double dislocation_viscosity (
const double temperature,
348 const double adiabatic_temperature,
349 const double adiabatic_pressure,
351 const unsigned int phase_index,
352 const double diffusion_viscosity,
353 const double viscosity_guess = 0)
const;
355 double density (
const double temperature,
356 const double pressure,
357 const std::vector<double> &compositional_fields,
358 const Point<dim> &position)
const;
361 const double pressure,
362 const std::vector<double> &compositional_fields,
363 const Point<dim> &position)
const;
366 const double pressure,
367 const std::vector<double> &compositional_fields,
368 const Point<dim> &position)
const;
371 const double pressure,
372 const std::vector<double> &compositional_fields,
373 const Point<dim> &position)
const;
378 double seismic_Vp (
const double temperature,
379 const double pressure,
380 const std::vector<double> &compositional_fields,
381 const Point<dim> &position)
const;
386 double seismic_Vs (
const double temperature,
387 const double pressure,
388 const std::vector<double> &compositional_fields,
389 const Point<dim> &position)
const;
406 std::vector<std::vector<double>>
408 const std::vector<double> &adiabatic_pressure,
409 const std::vector<unsigned int> &phase_indices)
const;
458 } material_file_format;
465 std::vector<std::unique_ptr<MaterialModel::MaterialUtilities::Lookup::MaterialLookup>>
material_lookup;
std::vector< double > grain_growth_rate_constant
std::vector< double > diffusion_activation_volume
Rheology::DruckerPrager< dim > drucker_prager_plasticity
double max_thermal_expansivity
std::vector< double > grain_boundary_energy
std::vector< std::string > material_file_names
MaterialUtilities::PhaseFunction< dim > phase_function
double reference_specific_heat
double maximum_grain_size_reduction_work_fraction
std::vector< double > grain_growth_activation_energy
unsigned int grain_size_index
std::vector< double > diffusion_creep_exponent
double dislocation_viscosity_iteration_threshold
double temperature_minimum_partitioning_power
std::vector< double > dislocation_activation_volume
std::vector< double > reciprocal_required_strain
bool use_table_properties
double phase_distribution
void declare_parameters(ParameterHandler &prm)
std::vector< std::unique_ptr< MaterialModel::MaterialUtilities::Lookup::MaterialLookup > > material_lookup
double temperature_maximum_partitioning_power
Rheology::DruckerPragerParameters drucker_prager_parameters
double grain_size_reduction_work_fraction_exponent
std::vector< double > geometric_constant
std::vector< double > grain_growth_exponent
std::vector< double > diffusion_creep_grain_size_exponent
double roughness_to_grain_size
std::vector< double > diffusion_creep_prefactor
std::vector< double > dislocation_activation_energy
double reference_compressibility
unsigned int dislocation_viscosity_iteration_number
double minimum_grain_size_reduction_work_fraction
bool use_adiabatic_pressure_for_yielding
std::vector< double > grain_growth_activation_volume
std::vector< double > dislocation_creep_exponent
std::vector< double > recrystallized_grain_size
std::vector< double > dislocation_viscosities
std::vector< double > diffusion_viscosities
std::unique_ptr< FEPointEvaluation< 1, dim > > temperature_evaluator
std::vector< double > diffusion_activation_energy
bool enable_drucker_prager_rheology
unsigned int n_material_data
std::vector< double > boundary_area_change_work_fraction
double max_temperature_dependence_of_eta
bool use_bilinear_interpolation
unsigned int max_latent_heat_substeps
std::string datadirectory
double min_thermal_expansivity
double minimum_grain_size
unsigned int n_phase_transitions
Formulation::Kind grain_size_evolution_formulation
std::vector< std::string > derivatives_file_names
std::unique_ptr< FEPointEvaluation< 1, dim > > pressure_evaluator
std::vector< double > dislocation_creep_prefactor