Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include <cstddef> 7 : #include <memory> 8 : #include <vector> 9 : 10 : #include "DataStructures/DataBox/Tag.hpp" 11 : #include "Domain/BoundaryConditions/BoundaryCondition.hpp" 12 : #include "Domain/Creators/DomainCreator.hpp" 13 : #include "Domain/Creators/OptionTags.hpp" 14 : #include "Domain/Structure/DirectionMap.hpp" 15 : 16 : namespace domain::Tags { 17 : 18 : /*! 19 : * The boundary conditions to be applied at external boundaries. Holds an entry 20 : * per block, and a boundary condition per external direction. 21 : */ 22 : template <size_t Dim> 23 1 : struct ExternalBoundaryConditions : db::SimpleTag { 24 0 : using type = std::vector<DirectionMap< 25 : Dim, std::unique_ptr<domain::BoundaryConditions::BoundaryCondition>>>; 26 0 : using option_tags = tmpl::list<domain::OptionTags::DomainCreator<Dim>>; 27 : 28 0 : static constexpr bool pass_metavariables = false; 29 0 : static type create_from_options( 30 : const std::unique_ptr<::DomainCreator<Dim>>& domain_creator) { 31 : return domain_creator->external_boundary_conditions(); 32 : } 33 : }; 34 : 35 : } // namespace domain::Tags