PRISMS-PF Manual v3.0-pre
All Classes Functions Variables Enumerations Pages
explicit_constant_solver.h
1// SPDX-FileCopyrightText: © 2025 PRISMS Center at the University of Michigan
2// SPDX-License-Identifier: GNU Lesser General Public Version 2.1
3
4#ifndef explicit_constant_solver_h
5#define explicit_constant_solver_h
6
7#include <prismspf/config.h>
8#include <prismspf/core/constraint_handler.h>
9#include <prismspf/core/dof_handler.h>
10#include <prismspf/core/invm_handler.h>
11#include <prismspf/core/matrix_free_handler.h>
12#include <prismspf/core/solution_handler.h>
13#include <prismspf/core/type_enums.h>
14#include <prismspf/solvers/explicit_base.h>
15#include <prismspf/user_inputs/user_input_parameters.h>
16
17#ifdef PRISMS_PF_WITH_CALIPER
18# include <caliper/cali.h>
19#endif
20
21PRISMS_PF_BEGIN_NAMESPACE
22
26template <int dim, int degree>
27class explicitConstantSolver : public explicitBase<dim, degree>
28{
29public:
34 const matrixfreeHandler<dim> &_matrix_free_handler,
35 const invmHandler<dim, degree> &_invm_handler,
36 const constraintHandler<dim> &_constraint_handler,
37 const dofHandler<dim> &_dof_handler,
38 const dealii::MappingQ1<dim> &_mapping,
39 solutionHandler<dim> &_solution_handler);
40
45
49 void
50 init() override;
51
55 void
56 solve() override;
57};
58
59template <int dim, int degree>
61 const userInputParameters<dim> &_user_inputs,
62 const matrixfreeHandler<dim> &_matrix_free_handler,
63 const invmHandler<dim, degree> &_invm_handler,
64 const constraintHandler<dim> &_constraint_handler,
65 const dofHandler<dim> &_dof_handler,
66 const dealii::MappingQ1<dim> &_mapping,
67 solutionHandler<dim> &_solution_handler)
68 : explicitBase<dim, degree>(_user_inputs,
69 _matrix_free_handler,
70 _invm_handler,
71 _constraint_handler,
72 _dof_handler,
73 _mapping,
74 _solution_handler)
75{}
76
77template <int dim, int degree>
78inline void
80{
81 this->compute_subset_attributes(fieldSolveType::EXPLICIT_CONSTANT);
82
83 // If the subset attribute is empty return early
84 if (this->subset_attributes.empty())
85 {
86 return;
87 }
88
89 this->set_initial_condition();
90}
91
92template <int dim, int degree>
93inline void
96
97PRISMS_PF_END_NAMESPACE
98
99#endif
The class handles the generation and application of boundary conditions based on the user-inputs.
Definition constraint_handler.h:25
Class that manages the deal.II DoFHandlers.
Definition dof_handler.h:25
Base class for explicit solves.
Definition explicit_base.h:34
This class handles the explicit solves of all constant fields.
Definition explicit_constant_solver.h:28
void solve() override
Solve a single update step.
Definition explicit_constant_solver.h:94
explicitConstantSolver(const userInputParameters< dim > &_user_inputs, const matrixfreeHandler< dim > &_matrix_free_handler, const invmHandler< dim, degree > &_invm_handler, const constraintHandler< dim > &_constraint_handler, const dofHandler< dim > &_dof_handler, const dealii::MappingQ1< dim > &_mapping, solutionHandler< dim > &_solution_handler)
Constructor.
Definition explicit_constant_solver.h:60
~explicitConstantSolver()=default
Destructor.
void init() override
Initialize system.
Definition explicit_constant_solver.h:79
This class handles the computation and access of the inverted mass matrix for explicit solves.
Definition invm_handler.h:25
This class handlers the management and access of the matrix-free objects.
Definition matrix_free_handler.h:25
Class that manages solution initialization and swapping with old solutions.
Definition solution_handler.h:22
Definition user_input_parameters.h:22