ASPECT
global.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2011 - 2024 by the authors of the ASPECT code.
3 
4  This file is part of ASPECT.
5 
6  ASPECT is free software; you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation; either version 2, or (at your option)
9  any later version.
10 
11  ASPECT is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with ASPECT; see the file LICENSE. If not see
18  <http://www.gnu.org/licenses/>.
19 */
20 
21 
22 #ifndef _aspect_global_h
23 #define _aspect_global_h
24 
25 #include <aspect/config.h>
26 #include <aspect/citation_info.h>
27 
28 #include <deal.II/base/mpi.h>
29 
30 DEAL_II_DISABLE_EXTRA_DIAGNOSTICS
31 
32 #include <deal.II/lac/generic_linear_algebra.h>
33 
34 #include <boost/archive/binary_oarchive.hpp>
35 #include <boost/archive/binary_iarchive.hpp>
36 
37 DEAL_II_ENABLE_EXTRA_DIAGNOSTICS
38 
39 #include <boost/container/small_vector.hpp>
40 
41 #include <aspect/compat.h>
42 
43 namespace aspect
44 {
49  using namespace dealii;
50 
55  namespace constants
56  {
60  constexpr double year_in_seconds = 60*60*24*365.2425;
61 
65  constexpr double celsius_to_kelvin = 273.15;
66 
70  constexpr double degree_to_radians = ::numbers::PI / 180.;
71 
75  constexpr double radians_to_degree = 180. / ::numbers::PI;
76 
80  constexpr double gas_constant = 8.3144621;
84  constexpr double avogadro = 6.02214129e23;
92  constexpr double big_g = 6.67430e-11;
93 
97  namespace earth
98  {
99 
103  namespace masses
104  {
108  constexpr double planet = 5.9736e24;
112  constexpr double core = 1.932e24;
116  constexpr double mantle = 4.043e24;
117  }
118 
122  namespace iasp91_radii
123  {
127  constexpr double inner_core = 1.2171e6;
131  constexpr double core = 3.482e6;
135  constexpr double lower_mantle = 5.711e6;
139  constexpr double planet = 6.371e6;
140  }
141 
145  namespace prem_gravity
146  {
150  constexpr double icb = 4.4002;
154  constexpr double cmb = 10.6823;
158  constexpr double ulmb = 10.0143;
162  constexpr double surface = 9.8156;
163  }
164 
169  constexpr double surface_gravity = 9.80665;
170  }
171 
175  namespace mars
176  {
180  namespace radii
181  {
185  constexpr double planet = 3.3895e6;
189  constexpr double core = 1.794e6;
190  }
194  constexpr double surface_gravity = 3.711;
195  }
196  }
197 
202 
203 
209  using iarchive = boost::archive::binary_iarchive;
210 
216  using oarchive = boost::archive::binary_oarchive;
217 
229  class QuietException {};
230 
250  template <class T, unsigned int N = 100>
251  using small_vector = boost::container::small_vector<T, N>;
252 
257  namespace LinearAlgebra
258  {
263 
269 
274 
280 
285 
291 
297 
303 
309 
313  using BlockDynamicSparsityPattern = ::TrilinosWrappers::BlockSparsityPattern;
314 
318  using DynamicSparsityPattern = ::TrilinosWrappers::SparsityPattern;
319  }
320 }
321 
322 
328 template <class Stream>
329 void print_aspect_header(Stream &stream);
330 
337 #define ASPECT_INSTANTIATE(INSTANTIATIONS) \
338  INSTANTIATIONS(2) \
339  INSTANTIATIONS(3)
340 
341 #endif
constexpr double surface_gravity
Definition: global.h:194
constexpr double radians_to_degree
Definition: global.h:75
constexpr double year_in_seconds
Definition: global.h:60
constexpr double mantle
Definition: global.h:116
::TrilinosWrappers::MPI::BlockVector BlockVector
Definition: global.h:268
void print_aspect_header(Stream &stream)
::TrilinosWrappers::PreconditionBase PreconditionBase
Definition: global.h:284
boost::archive::binary_iarchive iarchive
Definition: global.h:209
constexpr double gas_constant
Definition: global.h:80
::TrilinosWrappers::MPI::Vector Vector
Definition: global.h:262
::TrilinosWrappers::BlockSparseMatrix BlockSparseMatrix
Definition: global.h:279
::TrilinosWrappers::PreconditionAMG PreconditionAMG
Definition: global.h:290
::TrilinosWrappers::BlockSparsityPattern BlockDynamicSparsityPattern
Definition: global.h:313
::TrilinosWrappers::PreconditionIC PreconditionIC
Definition: global.h:296
constexpr double degree_to_radians
Definition: global.h:70
::TrilinosWrappers::SparsityPattern DynamicSparsityPattern
Definition: global.h:318
constexpr double core
Definition: global.h:189
Definition: compat.h:59
constexpr double celsius_to_kelvin
Definition: global.h:65
::TrilinosWrappers::PreconditionJacobi PreconditionJacobi
Definition: global.h:308
boost::archive::binary_oarchive oarchive
Definition: global.h:216
boost::container::small_vector< T, N > small_vector
Definition: global.h:251
::TrilinosWrappers::SparseMatrix SparseMatrix
Definition: global.h:273
Definition: compat.h:42
constexpr double avogadro
Definition: global.h:84
constexpr double big_g
Definition: global.h:92
constexpr double planet
Definition: global.h:185
::TrilinosWrappers::PreconditionILU PreconditionILU
Definition: global.h:302