Skip to content
Snippets Groups Projects
Select Git revision
  • 25eacf333f08f1b59c356f362f5e9689e20c262d
  • develop default protected
  • feature/variational-hydro
  • origin/stage/bouguettaia
  • feature/gmsh-reader
  • feature/reconstruction
  • save_clemence
  • feature/kinetic-schemes
  • feature/local-dt-fsi
  • feature/composite-scheme-sources
  • feature/composite-scheme-other-fluxes
  • feature/serraille
  • feature/composite-scheme
  • hyperplastic
  • feature/polynomials
  • feature/gks
  • feature/implicit-solver-o2
  • feature/coupling_module
  • feature/implicit-solver
  • feature/merge-local-dt-fsi
  • master protected
  • v0.5.0 protected
  • v0.4.1 protected
  • v0.4.0 protected
  • v0.3.0 protected
  • v0.2.0 protected
  • v0.1.0 protected
  • Kidder
  • v0.0.4 protected
  • v0.0.3 protected
  • v0.0.2 protected
  • v0 protected
  • v0.0.1 protected
33 results

test_ASTBuilder.cpp

Blame
  • RusanovEulerianCompositeSolver_v2.cpp 73.93 KiB
    #include <scheme/RusanovEulerianCompositeSolver_v2.hpp>
    
    #include <language/utils/InterpolateItemArray.hpp>
    #include <mesh/Mesh.hpp>
    #include <mesh/MeshData.hpp>
    #include <mesh/MeshDataManager.hpp>
    #include <mesh/MeshEdgeBoundary.hpp>
    #include <mesh/MeshFaceBoundary.hpp>
    #include <mesh/MeshFlatEdgeBoundary.hpp>
    #include <mesh/MeshFlatFaceBoundary.hpp>
    #include <mesh/MeshFlatNodeBoundary.hpp>
    #include <mesh/MeshNodeBoundary.hpp>
    #include <mesh/MeshTraits.hpp>
    #include <mesh/MeshVariant.hpp>
    #include <scheme/DiscreteFunctionUtils.hpp>
    #include <scheme/InflowListBoundaryConditionDescriptor.hpp>
    #include <variant>
    
    template <MeshConcept MeshTypeT>
    class RusanovEulerianCompositeSolver_v2
    {
     private:
      using MeshType = MeshTypeT;
    
      static constexpr size_t Dimension = MeshType::Dimension;
    
      using Rdxd = TinyMatrix<Dimension>;
      using Rd   = TinyVector<Dimension>;
    
      using Rpxp = TinyMatrix<Dimension + 2>;
      using Rp   = TinyVector<Dimension + 2>;
    
      class SymmetryBoundaryCondition;
      class InflowListBoundaryCondition;
      class OutflowBoundaryCondition;
      class WallBoundaryCondition;
      class NeumannflatBoundaryCondition;
    
      using BoundaryCondition = std::variant<SymmetryBoundaryCondition,
                                             InflowListBoundaryCondition,
                                             OutflowBoundaryCondition,
                                             NeumannflatBoundaryCondition,
                                             WallBoundaryCondition>;
    
      using BoundaryConditionList = std::vector<BoundaryCondition>;
    
      BoundaryConditionList
      _getBCList(const MeshType& mesh,
                 const std::vector<std::shared_ptr<const IBoundaryConditionDescriptor>>& bc_descriptor_list) const
      {
        BoundaryConditionList bc_list;
    
        for (const auto& bc_descriptor : bc_descriptor_list) {
          bool is_valid_boundary_condition = true;
    
          switch (bc_descriptor->type()) {
          case IBoundaryConditionDescriptor::Type::wall: {
            if constexpr (Dimension == 2) {
              bc_list.emplace_back(WallBoundaryCondition(getMeshNodeBoundary(mesh, bc_descriptor->boundaryDescriptor()),
                                                         getMeshFaceBoundary(mesh, bc_descriptor->boundaryDescriptor())));
            } else {
              static_assert(Dimension == 3);
              bc_list.emplace_back(WallBoundaryCondition(getMeshNodeBoundary(mesh, bc_descriptor->boundaryDescriptor()),
                                                         getMeshEdgeBoundary(mesh, bc_descriptor->boundaryDescriptor()),
                                                         getMeshFaceBoundary(mesh, bc_descriptor->boundaryDescriptor())));
            }
            break;
          }
          case IBoundaryConditionDescriptor::Type::symmetry: {
            if constexpr (Dimension == 2) {