PRISMS-PF Manual
Loading...
Searching...
No Matches
pde_operator_base.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
11#include <prismspf/core/types.h>
12
14
15#include <prismspf/config.h>
16
18
19template <unsigned int dim, unsigned int degree, typename number>
20class SolveContext;
21
25template <unsigned int dim, unsigned int degree, typename number>
27{
28public:
29 using SizeType = dealii::VectorizedArray<number>;
30
34 explicit PDEOperatorBase(const UserInputParameters<dim> &_user_inputs,
35 const PhaseFieldTools<dim> &_pf_tools)
36 : user_inputs(&_user_inputs)
37 , pf_tools(&_pf_tools)
38 {}
39
43 virtual ~PDEOperatorBase() = default;
44
48 virtual void
49 set_initial_condition([[maybe_unused]] const unsigned int &index,
50 [[maybe_unused]] const unsigned int &component,
51 [[maybe_unused]] const dealii::Point<dim> &point,
52 [[maybe_unused]] number &scalar_value,
53 [[maybe_unused]] number &vector_component_value) const
54 {}
55
60 virtual void
61 set_dirichlet([[maybe_unused]] const unsigned int &index,
62 [[maybe_unused]] const unsigned int &boundary_id,
63 [[maybe_unused]] const unsigned int &component,
64 [[maybe_unused]] const dealii::Point<dim> &point,
65 [[maybe_unused]] number &scalar_value,
66 [[maybe_unused]] number &vector_component_value) const
67 {
68 this->set_initial_condition(index,
69 component,
70 point,
71 scalar_value,
72 vector_component_value);
73 }
74
78 virtual void
79 compute_rhs([[maybe_unused]] FieldContainer<dim, degree, number> &variable_list,
80 [[maybe_unused]] const SimulationTimer &sim_timer,
81 [[maybe_unused]] unsigned int solver_id) const
82 {}
83
87 virtual void
88 compute_lhs([[maybe_unused]] FieldContainer<dim, degree, number> &variable_list,
89 [[maybe_unused]] const SimulationTimer &sim_timer,
90 [[maybe_unused]] unsigned int solver_id) const
91 {}
92
97 virtual void
98 pre_solve_block([[maybe_unused]] SolveContext<dim, degree, number> &solve_context,
99 [[maybe_unused]] unsigned int solver_id)
100 {}
101
106 virtual void
108 [[maybe_unused]] unsigned int solver_id)
109 {}
110
114 [[nodiscard]] const UserInputParameters<dim> &
116 {
117 Assert(user_inputs != nullptr, dealii::StandardExceptions::ExcNotInitialized());
118 return *user_inputs;
119 }
120
124 [[nodiscard]] const PhaseFieldTools<dim> &
126 {
127 Assert(pf_tools != nullptr, dealii::StandardExceptions::ExcNotInitialized());
128 return *pf_tools;
129 }
130
131private:
136
141};
142
143PRISMS_PF_END_NAMESPACE
This class permits the access of a subset of indexed fields and gives an error if any non-allowed fie...
Definition field_container.h:47
PDEOperatorBase(const UserInputParameters< dim > &_user_inputs, const PhaseFieldTools< dim > &_pf_tools)
Constructor.
Definition pde_operator_base.h:34
dealii::VectorizedArray< number > SizeType
Definition pde_operator_base.h:29
virtual void set_dirichlet(const unsigned int &index, const unsigned int &boundary_id, const unsigned int &component, const dealii::Point< dim > &point, number &scalar_value, number &vector_component_value) const
User-implemented function for setting Dirichlet boundary conditions. Default behavior is to call init...
Definition pde_operator_base.h:61
const UserInputParameters< dim > * user_inputs
The user-inputs.
Definition pde_operator_base.h:135
virtual void compute_rhs(FieldContainer< dim, degree, number > &variable_list, const SimulationTimer &sim_timer, unsigned int solver_id) const
User-implemented class for the RHS of explicit equations.
Definition pde_operator_base.h:79
const PhaseFieldTools< dim > * pf_tools
Phase field tools.
Definition pde_operator_base.h:140
const UserInputParameters< dim > & get_user_inputs() const
Get the user inputs (constant reference).
Definition pde_operator_base.h:115
virtual ~PDEOperatorBase()=default
Destructor.
const PhaseFieldTools< dim > & get_pf_tools() const
Get the phase field tools (constant reference).
Definition pde_operator_base.h:125
virtual void post_solve_block(SolveContext< dim, degree, number > &solve_context, unsigned int solver_id)
Function called right after a solve block.Gives access to all the internal classes,...
Definition pde_operator_base.h:107
virtual void set_initial_condition(const unsigned int &index, const unsigned int &component, const dealii::Point< dim > &point, number &scalar_value, number &vector_component_value) const
User-implemented class for the setting initial conditions.
Definition pde_operator_base.h:49
virtual void compute_lhs(FieldContainer< dim, degree, number > &variable_list, const SimulationTimer &sim_timer, unsigned int solver_id) const
User-implemented class for the RHS of nonexplicit equations.
Definition pde_operator_base.h:88
virtual void pre_solve_block(SolveContext< dim, degree, number > &solve_context, unsigned int solver_id)
Function called right before a solve block. Gives access to all the internal classes,...
Definition pde_operator_base.h:98
Definition simulation_timer.h:13
This class provides context for a solver with ptrs to all the relevant dependencies.
Definition solve_context.h:36
Definition user_input_parameters.h:32
Definition conditional_ostreams.cc:20
This class contains mutable utilities for phase field problems.
Definition phase_field_tools.h:21