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