Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include <ostream>
7 :
8 : /// \cond
9 : namespace Options {
10 : class Option;
11 : template <typename T>
12 : struct create_from_yaml;
13 : } // namespace Options
14 : /// \endcond
15 :
16 : namespace elliptic {
17 :
18 : /// Identify types of boundary conditions for elliptic equations
19 1 : enum class BoundaryConditionType {
20 : /// Dirichlet boundary conditions like \f$u(x_0)=u_0\f$
21 : Dirichlet,
22 : /// Neumann boundary conditions like \f$n^i\partial_i u(x_0)=v_0\f$, where
23 : /// \f$\boldsymbol{n}\f$ is the normal to the domain boundary
24 : Neumann
25 : };
26 :
27 0 : std::ostream& operator<<(std::ostream& os,
28 : BoundaryConditionType boundary_condition_type);
29 :
30 : } // namespace elliptic
31 :
32 : /// \cond
33 : template <>
34 : struct Options::create_from_yaml<elliptic::BoundaryConditionType> {
35 : template <typename Metavariables>
36 : static elliptic::BoundaryConditionType create(
37 : const Options::Option& options) {
38 : return create<void>(options);
39 : }
40 : };
41 :
42 : template <>
43 : elliptic::BoundaryConditionType
44 : Options::create_from_yaml<elliptic::BoundaryConditionType>::create<void>(
45 : const Options::Option& options);
46 : /// \endcond
|