PRISMS-PF Manual
Loading...
Searching...
No Matches
solve_context.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: © 2026 PRISMS Center at the University of Michigan
2// SPDX-License-Identifier: GNU Lesser General Public Version 2.1
3
4#pragma once
5
6#include <deal.II/base/exceptions.h>
7
17
19
20#include <prismspf/config.h>
21
23
32template <unsigned int dim, unsigned int degree, typename number>
34{
35public:
39 SolveContext(std::vector<FieldAttributes> _field_attributes,
40 const UserInputParameters<dim> &_user_inputs,
41 TriangulationManager<dim> &_triangulation_manager,
42 DoFManager<dim, degree> &_dof_manager,
43 ConstraintManager<dim, degree, number> &_constraint_manager,
44 SolutionIndexer<dim, number> &_solution_indexer,
46 : field_attributes(std::move(_field_attributes))
47 , user_inputs(&_user_inputs)
48 , triangulation_manager(&_triangulation_manager)
49 , dof_manager(&_dof_manager)
50 , constraint_manager(&_constraint_manager)
52 , solution_indexer(&_solution_indexer)
53 , invm_manager()
54 , sim_timer(user_inputs->temporal_discretization.dt,
55 user_inputs->temporal_discretization.initial_time)
56 , pde_operator(&_pde_operator) {};
57
61 [[nodiscard]] const std::vector<FieldAttributes> &
63 {
64 return field_attributes;
65 }
66
70 [[nodiscard]] const UserInputParameters<dim> &
72 {
73 Assert(user_inputs != nullptr, dealii::ExcNotInitialized());
74 return *user_inputs;
75 }
76
80 [[nodiscard]] const TriangulationManager<dim> &
82 {
83 Assert(triangulation_manager != nullptr, dealii::ExcNotInitialized());
85 }
86
90 [[nodiscard]] TriangulationManager<dim> &
92 {
93 Assert(triangulation_manager != nullptr, dealii::ExcNotInitialized());
95 }
96
100 [[nodiscard]] const DoFManager<dim, degree> &
102 {
103 Assert(dof_manager != nullptr, dealii::ExcNotInitialized());
104 return *dof_manager;
105 }
106
110 [[nodiscard]] DoFManager<dim, degree> &
112 {
113 Assert(dof_manager != nullptr, dealii::ExcNotInitialized());
114 return *dof_manager;
115 }
116
120 [[nodiscard]] const ConstraintManager<dim, degree, number> &
122 {
123 Assert(constraint_manager != nullptr, dealii::ExcNotInitialized());
124 return *constraint_manager;
125 }
126
132 {
133 Assert(constraint_manager != nullptr, dealii::ExcNotInitialized());
134 return *constraint_manager;
135 }
136
140 [[nodiscard]] const MatrixFreeManager<dim, number> &
142 {
143 return matrix_free_manager;
144 }
145
149 [[nodiscard]] MatrixFreeManager<dim, number> &
154
158 [[nodiscard]] SolutionIndexer<dim, number> &
160 {
161 Assert(solution_indexer != nullptr, dealii::ExcNotInitialized());
162 return *solution_indexer;
163 }
164
168 [[nodiscard]] const InvMManager<dim, degree, number> &
170 {
171 return invm_manager;
172 }
173
179 {
180 return invm_manager;
181 }
182
186 [[nodiscard]] const SimulationTimer &
188 {
189 return sim_timer;
190 }
191
195 [[nodiscard]] SimulationTimer &
197 {
198 return sim_timer;
199 }
200
204 [[nodiscard]] const PDEOperatorBase<dim, degree, number> &
206 {
207 Assert(pde_operator != nullptr, dealii::ExcNotInitialized());
208 return *pde_operator;
209 }
210
216 {
217 Assert(pde_operator != nullptr, dealii::ExcNotInitialized());
218 return *pde_operator;
219 }
220
221private:
225 std::vector<FieldAttributes> field_attributes;
226
231
236
241
246
251
256
261
266
271};
272
273PRISMS_PF_END_NAMESPACE
The class handles the generation and application of boundary conditions based on the user-inputs.
Definition constraint_manager.h:52
Class that manages the deal.II DoFHandlers.
Definition dof_manager.h:25
A little class that computes the element volume for our triangulation.
Definition invm_manager.h:22
Containers for matrix free objects.
Definition matrix_free_manager.h:45
This class contains the user implementation of each PDE operator.
Definition pde_operator_base.h:27
Definition simulation_timer.h:13
Class that provides access to solution vectors spread across different blocks.
Definition solution_indexer.h:20
PDEOperatorBase< dim, degree, number > * pde_operator
PDE operator.
Definition solve_context.h:270
DoFManager< dim, degree > & get_dof_manager()
Get the dof manager.
Definition solve_context.h:111
ConstraintManager< dim, degree, number > & get_constraint_manager()
Get the constraint manager.
Definition solve_context.h:131
const DoFManager< dim, degree > & get_dof_manager() const
Get the dof manager.
Definition solve_context.h:101
const std::vector< FieldAttributes > & get_field_attributes() const
Get the field attributes.
Definition solve_context.h:62
SimulationTimer sim_timer
Simulation timer.
Definition solve_context.h:265
SimulationTimer & get_simulation_timer()
Get the simulation timer.
Definition solve_context.h:196
SolutionIndexer< dim, number > & get_solution_indexer() const
Get the solution manager.
Definition solve_context.h:159
const UserInputParameters< dim > * user_inputs
User-inputs.
Definition solve_context.h:230
PDEOperatorBase< dim, degree, number > & get_pde_operator()
Get a shared pointer to the pde operator.
Definition solve_context.h:215
const ConstraintManager< dim, degree, number > & get_constraint_manager() const
Get the constraint manager.
Definition solve_context.h:121
TriangulationManager< dim > & get_triangulation_manager()
Get the triangulation manager.
Definition solve_context.h:91
const UserInputParameters< dim > & get_user_inputs() const
Get the user-inputs.
Definition solve_context.h:71
const PDEOperatorBase< dim, degree, number > & get_pde_operator() const
Get a shared pointer to the pde operator.
Definition solve_context.h:205
TriangulationManager< dim > * triangulation_manager
Triangulation manager.
Definition solve_context.h:235
const SimulationTimer & get_simulation_timer() const
Get the simulation timer.
Definition solve_context.h:187
SolveContext(std::vector< FieldAttributes > _field_attributes, const UserInputParameters< dim > &_user_inputs, TriangulationManager< dim > &_triangulation_manager, DoFManager< dim, degree > &_dof_manager, ConstraintManager< dim, degree, number > &_constraint_manager, SolutionIndexer< dim, number > &_solution_indexer, PDEOperatorBase< dim, degree, number > &_pde_operator)
Constructor.
Definition solve_context.h:39
SolutionIndexer< dim, number > * solution_indexer
Solution manager.
Definition solve_context.h:255
const InvMManager< dim, degree, number > & get_invm_manager() const
Get the invm manager.
Definition solve_context.h:169
std::vector< FieldAttributes > field_attributes
Field attributes.
Definition solve_context.h:225
InvMManager< dim, degree, number > invm_manager
Solution manager.
Definition solve_context.h:260
ConstraintManager< dim, degree, number > * constraint_manager
Constraint manager.
Definition solve_context.h:245
DoFManager< dim, degree > * dof_manager
DoF manager.
Definition solve_context.h:240
MatrixFreeManager< dim, number > & get_matrix_free_manager()
Get the MatrixFree manager.
Definition solve_context.h:150
const TriangulationManager< dim > & get_triangulation_manager() const
Get the triangulation manager.
Definition solve_context.h:81
MatrixFreeManager< dim, number > matrix_free_manager
MatrixFree object shared for all the fields.
Definition solve_context.h:250
const MatrixFreeManager< dim, number > & get_matrix_free_manager() const
Get the MatrixFree manager.
Definition solve_context.h:141
InvMManager< dim, degree, number > & get_invm_manager()
Get the invm manager.
Definition solve_context.h:178
This class handlers the generation and manipulation of triangulations.
Definition triangulation_manager.h:24
Definition user_input_parameters.h:28
Definition conditional_ostreams.cc:20
Definition vectorized_operations.h:17