ASPECT
depth_dependent.h
Go to the documentation of this file.
1 // ------------------------------------------------------
2 //
3 // SPDX-License-Identifier: GPL-2.0-or-later
4 //
5 // SPDX-FileCopyrightText: Copyright (C) 2014-2026 by the ASPECT authors.
6 //
7 // This file is part of ASPECT.
8 //
9 // Detailed license information governing the source code and
10 // contributions can be found in the folder LICENSES and in
11 // LICENSE and CONTRIBUTING.md at the top level directory.
12 //
13 // ------------------------------------------------------
14 
15 #ifndef _aspect_material_model_depth_dependent_h
16 #define _aspect_material_model_depth_dependent_h
17 
21 
24 
25 namespace aspect
26 {
27  namespace MaterialModel
28  {
38  template <int dim>
40  {
41  public:
45  void initialize() override;
46 
51  void update() override;
52 
57  bool is_compressible () const override;
58 
63  void
65  typename Interface<dim>::MaterialModelOutputs &out) const override;
69  static void
71 
75  void
76  parse_parameters (ParameterHandler &prm) override;
77 
78  void
80 
81  private:
86  {
87  function,
91  };
92 
100 
106 
111  std::unique_ptr<Functions::InterpolatedTensorProductGridData<1>> viscosity_file_function;
112 
117  double
118  calculate_depth_dependent_prefactor(const double &depth) const;
119 
125  std::vector<double> depth_values;
129  std::vector<double> viscosity_values;
130 
136 
140  std::unique_ptr<MaterialModel::Interface<dim>> base_model;
141 
146  std::unique_ptr<Rheology::AsciiDepthProfile<dim>> depth_dependent_rheology;
147  };
148  }
149 }
150 
151 #endif
std::unique_ptr< Rheology::AsciiDepthProfile< dim > > depth_dependent_rheology
std::unique_ptr< Functions::InterpolatedTensorProductGridData< 1 > > viscosity_file_function
void create_additional_named_outputs(MaterialModel::MaterialModelOutputs< dim > &out) const override
Functions::ParsedFunction< 1 > viscosity_function
std::unique_ptr< MaterialModel::Interface< dim > > base_model
bool is_compressible() const override
static void declare_parameters(ParameterHandler &prm)
double calculate_depth_dependent_prefactor(const double &depth) const
void parse_parameters(ParameterHandler &prm) override
void evaluate(const typename Interface< dim >::MaterialModelInputs &in, typename Interface< dim >::MaterialModelOutputs &out) const override