PRISMS-PF Manual
Loading...
Searching...
No Matches
constraint_parameters.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/parameter_handler.h>
7#include <deal.II/base/point.h>
8#include <deal.II/base/tensor.h>
9#include <deal.II/base/types.h>
10#include <deal.II/base/utilities.h>
11
12#include <boost/algorithm/string/predicate.hpp>
13
17#include <prismspf/core/types.h>
18
20
21#include <prismspf/config.h>
22
23#include <map>
24#include <string>
25
27
38
42[[nodiscard]] inline Condition
43condition_from_string(const std::string &boundary_string)
44{
45 if (boundary_string == "Natural")
46 {
47 return Condition::Natural;
48 }
49 if (boundary_string == "Dirichlet")
50 {
52 }
53 if (boundary_string == "Neumann")
54 {
55 return Condition::Neumann;
56 }
57 if (boundary_string == "Periodic")
58 {
60 }
61 AssertThrow(false, dealii::ExcMessage("Invalid boundary condition " + boundary_string));
62 return Condition::Natural;
63}
64
70using ComponentConditions = std::map<unsigned int, Condition>;
71
73{
74 std::map<unsigned int, ComponentConditions> component_constraints;
75
76 bool time_dependent = false;
77};
78
83{
87 static void
88 declare(dealii::ParameterHandler &parameter_handler,
89 unsigned int n_subsections = Numbers::default_subsections);
90
94 template <unsigned int dim = 3>
95 void
96 assign(dealii::ParameterHandler &parameter_handler,
97 unsigned int n_subsections = Numbers::default_subsections);
98
102 void
103 validate(const std::vector<FieldAttributes> &field_attributes,
104 const std::vector<SolveBlock> &solve_blocks) const;
105
106 // Map of boundary conditions. The first key is the field name.
107 std::unordered_map<std::string, BoundaryConditionSet> boundary_condition_list;
108};
109
110PRISMS_PF_END_NAMESPACE
Condition condition_from_string(const std::string &boundary_string)
Enum to string for type.
Definition constraint_parameters.h:43
std::map< unsigned int, Condition > ComponentConditions
Map of boundary conditions and domain boundary for which they correspond to. For a simple geometry li...
Definition constraint_parameters.h:70
Condition
Condition of boundary condition.
Definition constraint_parameters.h:32
@ Neumann
Definition constraint_parameters.h:35
@ Periodic
Definition constraint_parameters.h:36
@ Natural
Definition constraint_parameters.h:33
@ Dirichlet
Definition constraint_parameters.h:34
static constexpr unsigned int default_subsections
Max number of subsections.
Definition types.h:33
Definition conditional_ostreams.cc:20
Definition constraint_parameters.h:73
bool time_dependent
Definition constraint_parameters.h:76
std::map< unsigned int, ComponentConditions > component_constraints
Definition constraint_parameters.h:74
Struct that holds boundary parameters.
Definition constraint_parameters.h:83
std::unordered_map< std::string, BoundaryConditionSet > boundary_condition_list
Definition constraint_parameters.h:107
void validate(const std::vector< FieldAttributes > &field_attributes, const std::vector< SolveBlock > &solve_blocks) const
Validate.
Definition constraint_parameters.cc:110
void assign(dealii::ParameterHandler &parameter_handler, unsigned int n_subsections=Numbers::default_subsections)
Assign the parameters from file.
Definition constraint_parameters.cc:43
static void declare(dealii::ParameterHandler &parameter_handler, unsigned int n_subsections=Numbers::default_subsections)
Declare the parameters to be read from file.
Definition constraint_parameters.cc:12