51 lines
1.1 KiB
C++
51 lines
1.1 KiB
C++
#pragma once
|
|
|
|
#include "../mesh/Mesh_Base.h"
|
|
#include "../common/define.h"
|
|
|
|
namespace Nedelec3D
|
|
{
|
|
inline int bfOrderParam(int elementOrder)
|
|
{
|
|
return (elementOrder == 2) ? BF_QUADFUNC : BF_LINEFUNC;
|
|
}
|
|
|
|
inline int gaussOrderVol(int elementOrder)
|
|
{
|
|
return (elementOrder == 2) ? 4 : (BF_LINEFUNC * 2);
|
|
}
|
|
|
|
inline int gaussOrderTri(int elementOrder)
|
|
{
|
|
return (elementOrder == 2) ? 6 : (BF_LINEFUNC * 2);
|
|
}
|
|
|
|
inline int localDofPerTet(int elementOrder)
|
|
{
|
|
return (elementOrder == 2) ? 20 : 6;
|
|
}
|
|
|
|
inline int globalDofCount(Mesh_3D* mesh, int elementOrder)
|
|
{
|
|
if (elementOrder == 2)
|
|
return 2 * mesh->GetNbrEdge() + 2 * mesh->GetNbrFace();
|
|
return mesh->GetNbrEdge();
|
|
}
|
|
|
|
void buildTetDofMap(Mesh_3D* mesh, int numTet, int elementOrder, int* map, int mapSize);
|
|
|
|
void sbcFaceSecondOrderBfIndex(int numFace, int bfIndex[8]);
|
|
|
|
void buildSbcSecondOrderDofMap(Mesh_3D* mesh, int numTet, int numFace, int mapIdx[8]);
|
|
|
|
inline int edgeGlobalDof(int edgeId, int slot, int nbrEdge)
|
|
{
|
|
return edgeId + slot * nbrEdge;
|
|
}
|
|
|
|
inline int faceGlobalDof(int faceId, int slot, int nbrEdge, int nbrFace)
|
|
{
|
|
return 2 * nbrEdge + faceId + slot * nbrFace;
|
|
}
|
|
}
|