PRISMS-PF Manual
Loading...
Searching...
No Matches
solve_context.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: © 2025 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)
54 , sim_timer(user_inputs->temporal_discretization.dt)
55 , pde_operator(&_pde_operator)
56 {
58 };
59
63 [[nodiscard]] const std::vector<FieldAttributes> &
65 {
66 return field_attributes;
67 }
68
72 [[nodiscard]] const UserInputParameters<dim> &
74 {
75 Assert(user_inputs != nullptr, dealii::ExcNotInitialized());
76 return *user_inputs;
77 }
78
82 [[nodiscard]] const TriangulationManager<dim> &
84 {
85 Assert(triangulation_manager != nullptr, dealii::ExcNotInitialized());
87 }
88
92 [[nodiscard]] TriangulationManager<dim> &
94 {
95 Assert(triangulation_manager != nullptr, dealii::ExcNotInitialized());
97 }
98
102 [[nodiscard]] const DoFManager<dim, degree> &
104 {
105 Assert(dof_manager != nullptr, dealii::ExcNotInitialized());
106 return *dof_manager;
107 }
108
112 [[nodiscard]] DoFManager<dim, degree> &
114 {
115 Assert(dof_manager != nullptr, dealii::ExcNotInitialized());
116 return *dof_manager;
117 }
118
122 [[nodiscard]] const ConstraintManager<dim, degree, number> &
124 {
125 Assert(constraint_manager != nullptr, dealii::ExcNotInitialized());
126 return *constraint_manager;
127 }
128
134 {
135 Assert(constraint_manager != nullptr, dealii::ExcNotInitialized());
136 return *constraint_manager;
137 }
138
142 [[nodiscard]] const MatrixFreeManager<dim, number> &
144 {
145 return matrix_free_manager;
146 }
147
151 [[nodiscard]] MatrixFreeManager<dim, number> &
156
160 [[nodiscard]] SolutionIndexer<dim, number> &
162 {
163 Assert(solution_indexer != nullptr, dealii::ExcNotInitialized());
164 return *solution_indexer;
165 }
166
170 [[nodiscard]] const InvMManager<dim, degree, number> &
172 {
173 return invm_manager;
174 }
175
181 {
182 return invm_manager;
183 }
184
188 [[nodiscard]] const SimulationTimer &
190 {
191 return sim_timer;
192 }
193
197 [[nodiscard]] SimulationTimer &
199 {
200 return sim_timer;
201 }
202
206 [[nodiscard]] const PDEOperatorBase<dim, degree, number> &
208 {
209 Assert(pde_operator != nullptr, dealii::ExcNotInitialized());
210 return *pde_operator;
211 }
212
218 {
219 Assert(pde_operator != nullptr, dealii::ExcNotInitialized());
220 return *pde_operator;
221 }
222
223private:
227 std::vector<FieldAttributes> field_attributes;
228
233
238
243
248
253
258
263
268
273};
274
275PRISMS_PF_END_NAMESPACE
The class handles the generation and application of boundary conditions based on the user-inputs.
Definition constraint_manager.h:50
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:28
Containers for matrix free objects.
Definition matrix_free_manager.h:28
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 groups.
Definition solution_indexer.h:20
PDEOperatorBase< dim, degree, number > * pde_operator
PDE operator.
Definition solve_context.h:272
DoFManager< dim, degree > & get_dof_manager()
Get the dof manager.
Definition solve_context.h:113
ConstraintManager< dim, degree, number > & get_constraint_manager()
Get the constraint manager.
Definition solve_context.h:133
const DoFManager< dim, degree > & get_dof_manager() const
Get the dof manager.
Definition solve_context.h:103
const std::vector< FieldAttributes > & get_field_attributes() const
Get the field attributes.
Definition solve_context.h:64
SimulationTimer sim_timer
Simulation timer.
Definition solve_context.h:267
SimulationTimer & get_simulation_timer()
Get the simulation timer.
Definition solve_context.h:198
SolutionIndexer< dim, number > & get_solution_indexer() const
Get the solution manager.
Definition solve_context.h:161
const UserInputParameters< dim > * user_inputs
User-inputs.
Definition solve_context.h:232
PDEOperatorBase< dim, degree, number > & get_pde_operator()
Get a shared pointer to the pde operator.
Definition solve_context.h:217
const ConstraintManager< dim, degree, number > & get_constraint_manager() const
Get the constraint manager.
Definition solve_context.h:123
TriangulationManager< dim > & get_triangulation_manager()
Get the triangulation manager.
Definition solve_context.h:93
const UserInputParameters< dim > & get_user_inputs() const
Get the user-inputs.
Definition solve_context.h:73
const PDEOperatorBase< dim, degree, number > & get_pde_operator() const
Get a shared pointer to the pde operator.
Definition solve_context.h:207
TriangulationManager< dim > * triangulation_manager
Triangulation manager.
Definition solve_context.h:237
const SimulationTimer & get_simulation_timer() const
Get the simulation timer.
Definition solve_context.h:189
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:257
const InvMManager< dim, degree, number > & get_invm_manager() const
Get the invm manager.
Definition solve_context.h:171
std::vector< FieldAttributes > field_attributes
Field attributes.
Definition solve_context.h:227
InvMManager< dim, degree, number > invm_manager
Solution manager.
Definition solve_context.h:262
ConstraintManager< dim, degree, number > * constraint_manager
Constraint manager.
Definition solve_context.h:247
DoFManager< dim, degree > * dof_manager
DoF manager.
Definition solve_context.h:242
MatrixFreeManager< dim, number > & get_matrix_free_manager()
Get the MatrixFree manager.
Definition solve_context.h:152
const TriangulationManager< dim > & get_triangulation_manager() const
Get the triangulation manager.
Definition solve_context.h:83
MatrixFreeManager< dim, number > matrix_free_manager
MatrixFree object shared for all the fields.
Definition solve_context.h:252
const MatrixFreeManager< dim, number > & get_matrix_free_manager() const
Get the MatrixFree manager.
Definition solve_context.h:143
InvMManager< dim, degree, number > & get_invm_manager()
Get the invm manager.
Definition solve_context.h:180
This class handlers the generation and manipulation of triangulations.
Definition triangulation_manager.h:26
Definition user_input_parameters.h:31
Definition conditional_ostreams.cc:20
Definition vectorized_operations.h:17