Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include <iosfwd> 7 : 8 0 : namespace evolution::BoundaryConditions { 9 : /*! 10 : * \brief The type of boundary condition. 11 : * 12 : * There are generally two categories or types of boundary conditions. Those 13 : * that: 14 : * 15 : * 1. set up additional cells or elements (called ghost cells or ghost elements) 16 : * outside the computational domain and then apply boundary corrections the 17 : * same way that is done in the the interior. For example, in a discontinuous 18 : * Galerkin scheme these would impose boundary conditions through a numerical 19 : * flux boundary correction term. 20 : * 21 : * 2. change the time derivatives at the external boundary 22 : */ 23 1 : enum class Type { 24 : /// Impose boundary conditions by setting values on ghost cells/elements. 25 : /// 26 : /// The ghost cell values can come either from internal data or from an 27 : /// analytic prescription 28 : Ghost, 29 : /// Impose boundary conditions on the time derivative of the evolved 30 : /// variables. 31 : /// 32 : /// These are imposed after all internal and external boundaries using a ghost 33 : /// cell prescription have been handled. 34 : TimeDerivative, 35 : /// Impose ghost boundary conditions on some of the evolved variables and time 36 : /// derivative boundary conditions on others. 37 : GhostAndTimeDerivative, 38 : /// Require all characteristics to be outgoing on the boundary. 39 : /// 40 : /// Typically this boundary condition should only check that all 41 : /// characteristic speeds are out of the domain. 42 : DemandOutgoingCharSpeeds 43 : }; 44 : 45 0 : std::ostream& operator<<(std::ostream& os, Type boundary_condition_type); 46 : } // namespace evolution::BoundaryConditions