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)
53 , invm_manager()
54 , sim_timer(user_inputs->temporal_discretization.dt)
55 , pde_operator(&_pde_operator) {};
56
60 [[nodiscard]] const std::vector<FieldAttributes> &
62 {
63 return field_attributes;
64 }
65
69 [[nodiscard]] const UserInputParameters<dim> &
71 {
72 Assert(user_inputs != nullptr, dealii::ExcNotInitialized());
73 return *user_inputs;
74 }
75
79 [[nodiscard]] const TriangulationManager<dim> &
81 {
82 Assert(triangulation_manager != nullptr, dealii::ExcNotInitialized());
84 }
85
89 [[nodiscard]] TriangulationManager<dim> &
91 {
92 Assert(triangulation_manager != nullptr, dealii::ExcNotInitialized());
94 }
95
99 [[nodiscard]] const DoFManager<dim, degree> &
101 {
102 Assert(dof_manager != nullptr, dealii::ExcNotInitialized());
103 return *dof_manager;
104 }
105
109 [[nodiscard]] DoFManager<dim, degree> &
111 {
112 Assert(dof_manager != nullptr, dealii::ExcNotInitialized());
113 return *dof_manager;
114 }
115
119 [[nodiscard]] const ConstraintManager<dim, degree, number> &
121 {
122 Assert(constraint_manager != nullptr, dealii::ExcNotInitialized());
123 return *constraint_manager;
124 }
125
131 {
132 Assert(constraint_manager != nullptr, dealii::ExcNotInitialized());
133 return *constraint_manager;
134 }
135
139 [[nodiscard]] const MatrixFreeManager<dim, number> &
141 {
142 return matrix_free_manager;
143 }
144
148 [[nodiscard]] MatrixFreeManager<dim, number> &
153
157 [[nodiscard]] SolutionIndexer<dim, number> &
159 {
160 Assert(solution_indexer != nullptr, dealii::ExcNotInitialized());
161 return *solution_indexer;
162 }
163
167 [[nodiscard]] const InvMManager<dim, degree, number> &
169 {
170 return invm_manager;
171 }
172
178 {
179 return invm_manager;
180 }
181
185 [[nodiscard]] const SimulationTimer &
187 {
188 return sim_timer;
189 }
190
194 [[nodiscard]] SimulationTimer &
196 {
197 return sim_timer;
198 }
199
203 [[nodiscard]] const PDEOperatorBase<dim, degree, number> &
205 {
206 Assert(pde_operator != nullptr, dealii::ExcNotInitialized());
207 return *pde_operator;
208 }
209
215 {
216 Assert(pde_operator != nullptr, dealii::ExcNotInitialized());
217 return *pde_operator;
218 }
219
220private:
224 std::vector<FieldAttributes> field_attributes;
225
230
235
240
245
250
255
260
265
270};
271
272PRISMS_PF_END_NAMESPACE
The class handles the generation and application of boundary conditions based on the user-inputs.
Definition constraint_manager.h:51
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:269
DoFManager< dim, degree > & get_dof_manager()
Get the dof manager.
Definition solve_context.h:110
ConstraintManager< dim, degree, number > & get_constraint_manager()
Get the constraint manager.
Definition solve_context.h:130
const DoFManager< dim, degree > & get_dof_manager() const
Get the dof manager.
Definition solve_context.h:100
const std::vector< FieldAttributes > & get_field_attributes() const
Get the field attributes.
Definition solve_context.h:61
SimulationTimer sim_timer
Simulation timer.
Definition solve_context.h:264
SimulationTimer & get_simulation_timer()
Get the simulation timer.
Definition solve_context.h:195
SolutionIndexer< dim, number > & get_solution_indexer() const
Get the solution manager.
Definition solve_context.h:158
const UserInputParameters< dim > * user_inputs
User-inputs.
Definition solve_context.h:229
PDEOperatorBase< dim, degree, number > & get_pde_operator()
Get a shared pointer to the pde operator.
Definition solve_context.h:214
const ConstraintManager< dim, degree, number > & get_constraint_manager() const
Get the constraint manager.
Definition solve_context.h:120
TriangulationManager< dim > & get_triangulation_manager()
Get the triangulation manager.
Definition solve_context.h:90
const UserInputParameters< dim > & get_user_inputs() const
Get the user-inputs.
Definition solve_context.h:70
const PDEOperatorBase< dim, degree, number > & get_pde_operator() const
Get a shared pointer to the pde operator.
Definition solve_context.h:204
TriangulationManager< dim > * triangulation_manager
Triangulation manager.
Definition solve_context.h:234
const SimulationTimer & get_simulation_timer() const
Get the simulation timer.
Definition solve_context.h:186
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:254
const InvMManager< dim, degree, number > & get_invm_manager() const
Get the invm manager.
Definition solve_context.h:168
std::vector< FieldAttributes > field_attributes
Field attributes.
Definition solve_context.h:224
InvMManager< dim, degree, number > invm_manager
Solution manager.
Definition solve_context.h:259
ConstraintManager< dim, degree, number > * constraint_manager
Constraint manager.
Definition solve_context.h:244
DoFManager< dim, degree > * dof_manager
DoF manager.
Definition solve_context.h:239
MatrixFreeManager< dim, number > & get_matrix_free_manager()
Get the MatrixFree manager.
Definition solve_context.h:149
const TriangulationManager< dim > & get_triangulation_manager() const
Get the triangulation manager.
Definition solve_context.h:80
MatrixFreeManager< dim, number > matrix_free_manager
MatrixFree object shared for all the fields.
Definition solve_context.h:249
const MatrixFreeManager< dim, number > & get_matrix_free_manager() const
Get the MatrixFree manager.
Definition solve_context.h:140
InvMManager< dim, degree, number > & get_invm_manager()
Get the invm manager.
Definition solve_context.h:177
This class handlers the generation and manipulation of triangulations.
Definition triangulation_manager.h:24
Definition user_input_parameters.h:31
Definition conditional_ostreams.cc:20
Definition vectorized_operations.h:17