ASPECT
advection_field.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) 2025 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 
16 #ifndef _aspect_advection_field_h
17 #define _aspect_advection_field_h
18 
19 #include <aspect/global.h>
20 #include <aspect/parameters.h>
21 
23 
24 namespace aspect
25 {
26  using namespace dealii;
27 
31  template <int dim> struct Introspection;
32 
40  {
45  enum FieldType { temperature_field, compositional_field };
46 
52 
58  const unsigned int compositional_variable;
59 
71  AdvectionField (const FieldType field_type,
72  const unsigned int compositional_variable = numbers::invalid_unsigned_int);
73 
81  static
83 
91  static
92  AdvectionField composition (const unsigned int compositional_variable);
93 
97  bool
98  is_temperature () const;
99 
104  template<int dim>
105  bool
106  is_discontinuous (const Introspection<dim> &introspection) const;
107 
112  template<int dim>
114  advection_method (const Introspection<dim> &introspection) const;
115 
120  template<int dim>
121  unsigned int
122  component_index(const Introspection<dim> &introspection) const;
123 
128  template<int dim>
129  unsigned int
130  block_index(const Introspection<dim> &introspection) const;
131 
139  template<int dim>
140  unsigned int
141  sparsity_pattern_block_index(const Introspection<dim> &introspection) const;
142 
149  unsigned int
150  field_index() const;
151 
157  template<int dim>
158  unsigned int
159  base_element(const Introspection<dim> &introspection) const;
160 
167  template<int dim>
169  scalar_extractor(const Introspection<dim> &introspection) const;
170 
175  template<int dim>
176  unsigned int
177  polynomial_degree(const Introspection<dim> &introspection) const;
178 
183  template<int dim>
184  std::string
185  name(const Introspection<dim> &introspection) const;
186  };
187 }
188 
189 
190 #endif
constexpr unsigned int invalid_unsigned_int
const unsigned int compositional_variable
const FieldType field_type