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 #include <deal.II/base/exceptions.h>
30 
31 DEAL_II_DISABLE_EXTRA_DIAGNOSTICS
32 
33 #include <boost/archive/binary_oarchive.hpp>
34 #include <boost/archive/binary_iarchive.hpp>
35 
36 DEAL_II_ENABLE_EXTRA_DIAGNOSTICS
37 
38 #include <boost/container/small_vector.hpp>
39 
40 #ifdef ASPECT_USE_TPETRA
41 #include <deal.II/lac/trilinos_tpetra_vector.h>
42 #include <deal.II/lac/trilinos_tpetra_block_vector.h>
43 #include <deal.II/lac/trilinos_tpetra_sparse_matrix.h>
44 #include <deal.II/lac/trilinos_tpetra_block_sparse_matrix.h>
45 #else
46 #include <deal.II/lac/trilinos_sparse_matrix.h>
47 #include <deal.II/lac/trilinos_block_sparse_matrix.h>
48 #endif
49 
50 
51 #include <aspect/compat.h>
52 
53 namespace aspect
54 {
59  using namespace dealii;
60 
65  namespace constants
66  {
70  constexpr double year_in_seconds = 60*60*24*365.2425;
71 
75  constexpr double celsius_to_kelvin = 273.15;
76 
80  constexpr double degree_to_radians = ::numbers::PI / 180.;
81 
85  constexpr double radians_to_degree = 180. / ::numbers::PI;
86 
90  constexpr double gas_constant = 8.3144621;
94  constexpr double avogadro = 6.02214129e23;
102  constexpr double big_g = 6.67430e-11;
103 
107  namespace earth
108  {
109 
113  namespace masses
114  {
118  constexpr double planet = 5.9736e24;
122  constexpr double core = 1.932e24;
126  constexpr double mantle = 4.043e24;
127  }
128 
132  namespace iasp91_radii
133  {
137  constexpr double inner_core = 1.2171e6;
141  constexpr double core = 3.482e6;
145  constexpr double lower_mantle = 5.711e6;
149  constexpr double planet = 6.371e6;
150  }
151 
155  namespace prem_gravity
156  {
160  constexpr double icb = 4.4002;
164  constexpr double cmb = 10.6823;
168  constexpr double ulmb = 10.0143;
172  constexpr double surface = 9.8156;
173  }
174 
179  constexpr double surface_gravity = 9.80665;
180  }
181 
185  namespace mars
186  {
190  namespace radii
191  {
195  constexpr double planet = 3.3895e6;
199  constexpr double core = 1.794e6;
200  }
204  constexpr double surface_gravity = 3.711;
205  }
206  }
207 
212 
213 
219  using iarchive = boost::archive::binary_iarchive;
220 
226  using oarchive = boost::archive::binary_oarchive;
227 
239  class QuietException {};
240 
260  template <class T, unsigned int N = 100>
261  using small_vector = boost::container::small_vector<T, N>;
262 
267  namespace LinearAlgebra
268  {
269 #ifdef ASPECT_USE_TPETRA
270 
273  using Vector = ::LinearAlgebra::TpetraWrappers::Vector<double>;
274 
279  using BlockVector = ::LinearAlgebra::TpetraWrappers::BlockVector<double>;
280 
284  using SparseMatrix = ::LinearAlgebra::TpetraWrappers::SparseMatrix<double>;
285 
290  using BlockSparseMatrix = ::LinearAlgebra::TpetraWrappers::BlockSparseMatrix<double>;
291 #else
292 
296 
302 
307 
313 #endif
314  }
315 
321  template <class Stream>
322  void print_aspect_header(Stream &stream);
323 }
324 
325 
326 
327 #endif
constexpr double surface_gravity
Definition: global.h:204
constexpr double radians_to_degree
Definition: global.h:85
constexpr double year_in_seconds
Definition: global.h:70
constexpr double mantle
Definition: global.h:126
::TrilinosWrappers::MPI::BlockVector BlockVector
Definition: global.h:301
boost::archive::binary_iarchive iarchive
Definition: global.h:219
constexpr double gas_constant
Definition: global.h:90
::TrilinosWrappers::MPI::Vector Vector
Definition: global.h:295
::TrilinosWrappers::BlockSparseMatrix BlockSparseMatrix
Definition: global.h:312
constexpr double degree_to_radians
Definition: global.h:80
void print_aspect_header(Stream &stream)
constexpr double core
Definition: global.h:199
constexpr double celsius_to_kelvin
Definition: global.h:75
boost::archive::binary_oarchive oarchive
Definition: global.h:226
boost::container::small_vector< T, N > small_vector
Definition: global.h:261
::TrilinosWrappers::SparseMatrix SparseMatrix
Definition: global.h:306
constexpr double avogadro
Definition: global.h:94
constexpr double big_g
Definition: global.h:102
constexpr double planet
Definition: global.h:195