PolyDiM
C++ library for POLYtopal DIscretization Methods
Loading...
Searching...
No Matches
VEM_MCC_3D_Creator.hpp
Go to the documentation of this file.
1// _LICENSE_HEADER_
2//
3// Copyright (C) 2019 - 2025.
4// Terms register on the GPL-3.0 license.
5//
6// This file can be redistributed and/or modified under the license terms.
7//
8// See top level LICENSE file for more details.
9//
10// This file can be used citing references in CITATION.cff file.
11
12#ifndef __VEM_MCC_3D_Creator_HPP
13#define __VEM_MCC_3D_Creator_HPP
14
18#include <memory>
19
20namespace Polydim
21{
22namespace VEM
23{
24namespace MCC
25{
30
31inline std::unique_ptr<I_VEM_MCC_3D_Pressure_ReferenceElement> create_VEM_MCC_3D_pressure_reference_element(
33{
34 switch (type)
35 {
37 return std::make_unique<VEM_MCC_3D_Pressure_ReferenceElement>();
38 default:
39 throw std::runtime_error("VEM type " + std::to_string((unsigned int)type) + " not supported");
40 }
41}
42
43inline std::unique_ptr<I_VEM_MCC_3D_Velocity_ReferenceElement> create_VEM_MCC_3D_velocity_reference_element(
45{
46 switch (type)
47 {
49 return std::make_unique<VEM_MCC_3D_Velocity_ReferenceElement>();
50 default:
51 throw std::runtime_error("VEM type " + std::to_string((unsigned int)type) + " not supported");
52 }
53}
54
55inline std::unique_ptr<I_VEM_MCC_3D_Pressure_LocalSpace> create_VEM_MCC_3D_pressure_local_space(const Polydim::VEM::MCC::VEM_MCC_3D_LocalSpace_Types &type)
56{
57 switch (type)
58 {
60 return std::make_unique<VEM_MCC_3D_Pressure_LocalSpace>();
61 default:
62 throw std::runtime_error("VEM type " + std::to_string((unsigned int)type) + " not supported");
63 }
64}
65
66inline std::unique_ptr<I_VEM_MCC_3D_Velocity_LocalSpace> create_VEM_MCC_3D_velocity_local_space(const Polydim::VEM::MCC::VEM_MCC_3D_LocalSpace_Types &type)
67{
68 switch (type)
69 {
71 return std::make_unique<VEM_MCC_3D_Velocity_LocalSpace>();
72 default:
73 throw std::runtime_error("VEM type " + std::to_string((unsigned int)type) + " not supported");
74 }
75}
76
77} // namespace MCC
78} // namespace VEM
79} // namespace Polydim
80
81#endif
std::unique_ptr< I_VEM_MCC_3D_Velocity_ReferenceElement > create_VEM_MCC_3D_velocity_reference_element(const Polydim::VEM::MCC::VEM_MCC_3D_LocalSpace_Types &type)
Definition VEM_MCC_3D_Creator.hpp:43
std::unique_ptr< I_VEM_MCC_3D_Pressure_LocalSpace > create_VEM_MCC_3D_pressure_local_space(const Polydim::VEM::MCC::VEM_MCC_3D_LocalSpace_Types &type)
Definition VEM_MCC_3D_Creator.hpp:55
std::unique_ptr< I_VEM_MCC_3D_Pressure_ReferenceElement > create_VEM_MCC_3D_pressure_reference_element(const Polydim::VEM::MCC::VEM_MCC_3D_LocalSpace_Types &type)
Definition VEM_MCC_3D_Creator.hpp:31
VEM_MCC_3D_LocalSpace_Types
Definition VEM_MCC_3D_Creator.hpp:27
std::unique_ptr< I_VEM_MCC_3D_Velocity_LocalSpace > create_VEM_MCC_3D_velocity_local_space(const Polydim::VEM::MCC::VEM_MCC_3D_LocalSpace_Types &type)
Definition VEM_MCC_3D_Creator.hpp:66
Definition FEM_MCC_2D_LocalSpace.cpp:17