Raw File
LowerDimShapeTable.h
/**
 * \file
 * \copyright
 * Copyright (c) 2012-2021, OpenGeoSys Community (http://www.opengeosys.org)
 *            Distributed under a Modified BSD License.
 *              See accompanying file LICENSE.txt or
 *              http://www.opengeosys.org/project/license
 *
 */

#pragma once

#include "NumLib/Fem/ShapeFunction/ShapeHex20.h"
#include "NumLib/Fem/ShapeFunction/ShapeHex8.h"
#include "NumLib/Fem/ShapeFunction/ShapeLine2.h"
#include "NumLib/Fem/ShapeFunction/ShapeLine3.h"
#include "NumLib/Fem/ShapeFunction/ShapePrism15.h"
#include "NumLib/Fem/ShapeFunction/ShapePrism6.h"
#include "NumLib/Fem/ShapeFunction/ShapePyra13.h"
#include "NumLib/Fem/ShapeFunction/ShapePyra5.h"
#include "NumLib/Fem/ShapeFunction/ShapeQuad4.h"
#include "NumLib/Fem/ShapeFunction/ShapeQuad8.h"
#include "NumLib/Fem/ShapeFunction/ShapeQuad9.h"
#include "NumLib/Fem/ShapeFunction/ShapeTet10.h"
#include "NumLib/Fem/ShapeFunction/ShapeTet4.h"
#include "NumLib/Fem/ShapeFunction/ShapeTri3.h"
#include "NumLib/Fem/ShapeFunction/ShapeTri6.h"

namespace NumLib
{
template <typename SF>
struct LowerDim;

template <>
struct LowerDim<NumLib::ShapeLine3>
{
    using type = NumLib::ShapeLine2;
};
template <>
struct LowerDim<NumLib::ShapeQuad8>
{
    using type = NumLib::ShapeQuad4;
};
template <>
struct LowerDim<NumLib::ShapeQuad9>
{
    using type = NumLib::ShapeQuad4;
};
template <>
struct LowerDim<NumLib::ShapeHex20>
{
    using type = NumLib::ShapeHex8;
};
template <>
struct LowerDim<NumLib::ShapeTri6>
{
    using type = NumLib::ShapeTri3;
};
template <>
struct LowerDim<NumLib::ShapeTet10>
{
    using type = NumLib::ShapeTet4;
};
template <>
struct LowerDim<NumLib::ShapePrism15>
{
    using type = NumLib::ShapePrism6;
};
template <>
struct LowerDim<NumLib::ShapePyra13>
{
    using type = NumLib::ShapePyra5;
};

}  // namespace NumLib
back to top