Logbook  (07-04-2025)
Static problems
solver.hpp
1 /******************************************************************************
2  * Copyright (C) Siarhei Uzunbajakau, 2023.
3  *
4  * This program is free software. You can use, modify, and redistribute it under
5  * the terms of the GNU Lesser General Public License as published by the Free
6  * Software Foundation, either version 3 or (at your option) any later version.
7  * This program is distributed without any warranty.
8  *
9  * Refer to COPYING.LESSER for more details.
10  ******************************************************************************/
11 
12 #ifndef SolverCVP_H__
13 #define SolverCVP_H__
14 
15 #include <deal.II/base/function.h>
16 #include <deal.II/base/tensor_function.h>
17 #include <deal.II/base/vectorization.h>
18 
19 #include <deal.II/grid/grid_in.h>
20 #include <deal.II/grid/grid_tools.h>
21 #include <deal.II/grid/manifold_lib.h>
22 
23 #include <deal.II/lac/precondition.h>
24 #include <deal.II/lac/solver_cg.h>
25 #include <deal.II/lac/solver_control.h>
26 #include <deal.II/lac/sparse_direct.h>
27 
28 #include <fstream>
29 #include <string>
30 
31 #include "exact_solution.hpp"
32 #include "settings.hpp"
33 #include "static_scalar_solver.hpp"
34 
35 using namespace StaticScalarSolver;
36 
43  : public SettingsCVPII
44  , public Solver<2>
45 {
46 public:
47  SolverCVPII() = delete;
48 
64  SolverCVPII(unsigned int p,
65  unsigned int mapping_degree,
66  unsigned int r,
67  std::string fname)
68  : Solver<2>(p,
69  mapping_degree,
70  2,
71  fname,
72  &exact_solution,
73  false,
74  true,
75  SettingsCVPII::print_time_tables,
76  SettingsCVPII::project_exact_solution,
77  true)
78  , fname(fname)
79  , r(r)
80  {
82  }
83 
84  ~SolverCVPII() = default;
85 
86 private:
87  const std::string fname;
88  const unsigned int r;
89 
90  SphericalManifold<2> sphere;
91 
92  ExactSolutionCVPII_T exact_solution;
93 
94  const dealii::Functions::ZeroFunction<2> dirichlet_bc;
95 
96  virtual void make_mesh() override final;
97  virtual void fill_dirichlet_stack() override final;
98  virtual void solve() override final;
99 };
100 
101 #endif
The exact solution, , in the Current vector potential (cvp-ii/) numerical experiment.
Global settings for the Current vector potential (cvp-ii/) numerical experiment.
Definition: settings.hpp:26
Implements the solver of the Current vector potential (cvp-ii/) numerical experiment.
Definition: solver.hpp:45
SolverCVPII(unsigned int p, unsigned int mapping_degree, unsigned int r, std::string fname)
Definition: solver.hpp:64
Solves static scalar boundary value problem.
void run()
Runs the simulation.