Skip to content

FEMesh

Inherits from FECoreMesh

Public Functions

Name
FEMesh()
FEMesh(FEMesh & m)
virtual ~FEMesh()
virtual void Create(int nodes, int elems, int faces =0, int edges =0)
allocate space for mesh
void ShallowCopy(FEMesh * pm)
void Clear()
— C L E A N U P —
void DeleteEdges()
virtual int Elements() const
return number of elements
FEElement & Element(int n)
return element
virtual FEElement_ & ElementRef(int n)
return reference to element
virtual FEElement * ElementPtr(int n =0)
return pointer to element
int FindFace(FEElement * pe, FEFace & f, FEFace & fe)
void FindNodesFromPart(int gid, vector< int > & node)
std::vector< FENode > & NodeArray()
std::vector< FEFace > & FaceArray()
std::vector< FEElement > & ElementArray()
double GetElementValue(int n)
void SetElementValue(int n, double v)
void UpdateValueRange()
void GetValueRange(double & vmin, double & vmax)
vec3d ProjectToSurface(vec3d r, vec3d t)
vec3d ProjectToFace(vec3d p, FEFace & f, double & r, double & s)
vec3d ProjectToEdge(vec3d e1, vec3d e2, vec3d p, double & r)
bool FindIntersection(FEFace & f, vec3d x, vec3d n, vec3d & q, double & g)
void Update()
void UpdateElementNeighbors()
void UpdateFaces()
void UpdateEdges()
void UpdateNodes()
void AutoSmooth(double w)
void UpdateNormals()
void PartitionSelection()
void RemoveIsolatedNodes()
void AddNode(FENode & n)
FEMesh * DetachSelectedMesh()
void DetachSelectedPart()
FEMesh * ExtractSelectedFaces()
void DeleteTaggedElements(int tag)
void DeleteTaggedFaces(int tag)
void DeleteTaggedEdges(int tag)
void FindDuplicateFaces(vector< int > & l)
void FindDuplicateEdges(vector< int > & l)
void DeleteSelectedElements()
void DeleteSelectedFaces()
void DeleteSelectedNodes()
void InvertTaggedElements(int ntag)
void InvertSelectedElements()
double ShellJacobian(FEElement & el)
void RemoveDuplicateElements()
void FixinvertedElements()
void FixReferenceSurface()
void InterpolateShellThickness(double )
void RemoveNonManifoldElements()
void FixElementWinding()
void FixElementWinding2()
void TagAllElements(int ntag)
int DataFields()
FEElementData * AddDataField(const char * szname, double v =0.0)
FEElementData & GetDataField(int i)
double ShortestEdge()
void BuildNodeElementTable(vector< vector< int > > & NET)
void BuildNodeFaceTable(vector< vector< int > > & NFT)
void BuildNodeEdgeTable(vector< vector< int > > & NET)
void BuildEdgeTable(vector< pair< int, int > > & ET)
void BuildNodeNodeTable(vector< set< int > > & NNT)
void BuildSurfaceNodeNodeTable(vector< set< int > > & NNT)
void BuildElementEdgeTable(vector< vector< int > > & EET, vector< pair< int, int > > & ET)
void BuildFaceTable(vector< FEFace > & FT)
void BuildElementFaceTable(vector< vector< int > > & EFT, vector< FEFace > & FT)
void BuildFaceEdgeTable(vector< vector< int > > & FET, vector< pair< int, int > > & ET)
void BuildFaceFaceTable(vector< int > & FFT, vector< FEFace > & FT)
void BuildEdgeEdgeTable(vector< int > & EET, vector< pair< int, int > > & ET)

Protected Functions

Name
bool IntersectTri(vec3d * y, vec3d x, vec3d n, vec3d & q, double & g)
bool IntersectQuad(vec3d * y, vec3d x, vec3d n, vec3d & q, double & g)

Protected Attributes

Name
std::vector< FEElement > m_Elem
FE elements.
std::vector< double > m_data
element values
double m_min
double m_max
value range of element data
vector< FEElementData > m_map

Additional inherited members

Public Functions inherited from FECoreMesh

Name
FECoreMesh()
constructor
virtual ~FECoreMesh()
destructor
bool IsType(int ntype)
check the type of the mesh
int Nodes() const
int Edges() const
int Faces() const
FENode & Node(int n)
FEEdge & Edge(int n)
FEFace & Face(int n)
FENode * NodePtr(int n =0)
FEEdge * EdgePtr(int n =0)
FEFace * FacePtr(int n =0)

Protected Attributes inherited from FECoreMesh

Name
std::vector< FENode > m_Node
FE nodes.
std::vector< FEEdge > m_Edge
FE edges.
std::vector< FEFace > m_Face
FE faces.

Public Functions Documentation

function FEMesh

FEMesh()

function FEMesh

FEMesh(
    FEMesh & m
)

function ~FEMesh

virtual ~FEMesh()

function Create

virtual void Create(
    int nodes,
    int elems,
    int faces =0,
    int edges =0
)

allocate space for mesh

Reimplements: FECoreMesh::Create

function ShallowCopy

void ShallowCopy(
    FEMesh * pm
)

function Clear

void Clear()

— C L E A N U P —

function DeleteEdges

inline void DeleteEdges()

function Elements

inline virtual int Elements() const

return number of elements

Reimplements: FECoreMesh::Elements

function Element

inline FEElement & Element(
    int n
)

return element

function ElementRef

inline virtual FEElement_ & ElementRef(
    int n
)

return reference to element

Reimplements: FECoreMesh::ElementRef

function ElementPtr

inline virtual FEElement * ElementPtr(
    int n =0
)

return pointer to element

Reimplements: FECoreMesh::ElementPtr

function FindFace

int FindFace(
    FEElement * pe,
    FEFace & f,
    FEFace & fe
)

function FindNodesFromPart

void FindNodesFromPart(
    int gid,
    vector< int > & node
)

function NodeArray

inline std::vector< FENode > & NodeArray()

Todo: Maybe I should delete these

Get the node array

function FaceArray

inline std::vector< FEFace > & FaceArray()

function ElementArray

inline std::vector< FEElement > & ElementArray()

function GetElementValue

inline double GetElementValue(
    int n
)

function SetElementValue

inline void SetElementValue(
    int n,
    double v
)

function UpdateValueRange

void UpdateValueRange()

function GetValueRange

void GetValueRange(
    double & vmin,
    double & vmax
)

function ProjectToSurface

vec3d ProjectToSurface(
    vec3d r,
    vec3d t
)

function ProjectToFace

vec3d ProjectToFace(
    vec3d p,
    FEFace & f,
    double & r,
    double & s
)

function ProjectToEdge

vec3d ProjectToEdge(
    vec3d e1,
    vec3d e2,
    vec3d p,
    double & r
)

function FindIntersection

bool FindIntersection(
    FEFace & f,
    vec3d x,
    vec3d n,
    vec3d & q,
    double & g
)

function Update

void Update()

function UpdateElementNeighbors

void UpdateElementNeighbors()

function UpdateFaces

void UpdateFaces()

function UpdateEdges

void UpdateEdges()

function UpdateNodes

void UpdateNodes()

function AutoSmooth

void AutoSmooth(
    double w
)

function UpdateNormals

void UpdateNormals()

function PartitionSelection

void PartitionSelection()

function RemoveIsolatedNodes

void RemoveIsolatedNodes()

function AddNode

inline void AddNode(
    FENode & n
)

function DetachSelectedMesh

FEMesh * DetachSelectedMesh()

function DetachSelectedPart

void DetachSelectedPart()

function ExtractSelectedFaces

FEMesh * ExtractSelectedFaces()

function DeleteTaggedElements

void DeleteTaggedElements(
    int tag
)

function DeleteTaggedFaces

void DeleteTaggedFaces(
    int tag
)

function DeleteTaggedEdges

void DeleteTaggedEdges(
    int tag
)

function FindDuplicateFaces

void FindDuplicateFaces(
    vector< int > & l
)

function FindDuplicateEdges

void FindDuplicateEdges(
    vector< int > & l
)

function DeleteSelectedElements

void DeleteSelectedElements()

function DeleteSelectedFaces

void DeleteSelectedFaces()

function DeleteSelectedNodes

void DeleteSelectedNodes()

function InvertTaggedElements

void InvertTaggedElements(
    int ntag
)

function InvertSelectedElements

void InvertSelectedElements()

function ShellJacobian

double ShellJacobian(
    FEElement & el
)

function RemoveDuplicateElements

void RemoveDuplicateElements()

function FixinvertedElements

void FixinvertedElements()

function FixReferenceSurface

void FixReferenceSurface()

function InterpolateShellThickness

void InterpolateShellThickness(
    double 
)

function RemoveNonManifoldElements

void RemoveNonManifoldElements()

function FixElementWinding

void FixElementWinding()

function FixElementWinding2

void FixElementWinding2()

function TagAllElements

void TagAllElements(
    int ntag
)

function DataFields

inline int DataFields()

function AddDataField

FEElementData * AddDataField(
    const char * szname,
    double v =0.0
)

function GetDataField

inline FEElementData & GetDataField(
    int i
)

function ShortestEdge

double ShortestEdge()

function BuildNodeElementTable

void BuildNodeElementTable(
    vector< vector< int > > & NET
)

function BuildNodeFaceTable

void BuildNodeFaceTable(
    vector< vector< int > > & NFT
)

function BuildNodeEdgeTable

void BuildNodeEdgeTable(
    vector< vector< int > > & NET
)

function BuildEdgeTable

void BuildEdgeTable(
    vector< pair< int, int > > & ET
)

function BuildNodeNodeTable

void BuildNodeNodeTable(
    vector< set< int > > & NNT
)

function BuildSurfaceNodeNodeTable

void BuildSurfaceNodeNodeTable(
    vector< set< int > > & NNT
)

function BuildElementEdgeTable

void BuildElementEdgeTable(
    vector< vector< int > > & EET,
    vector< pair< int, int > > & ET
)

function BuildFaceTable

void BuildFaceTable(
    vector< FEFace > & FT
)

function BuildElementFaceTable

void BuildElementFaceTable(
    vector< vector< int > > & EFT,
    vector< FEFace > & FT
)

function BuildFaceEdgeTable

void BuildFaceEdgeTable(
    vector< vector< int > > & FET,
    vector< pair< int, int > > & ET
)

function BuildFaceFaceTable

void BuildFaceFaceTable(
    vector< int > & FFT,
    vector< FEFace > & FT
)

function BuildEdgeEdgeTable

void BuildEdgeEdgeTable(
    vector< int > & EET,
    vector< pair< int, int > > & ET
)

Protected Functions Documentation

function IntersectTri

bool IntersectTri(
    vec3d * y,
    vec3d x,
    vec3d n,
    vec3d & q,
    double & g
)

function IntersectQuad

bool IntersectQuad(
    vec3d * y,
    vec3d x,
    vec3d n,
    vec3d & q,
    double & g
)

Protected Attributes Documentation

variable m_Elem

std::vector< FEElement > m_Elem;

FE elements.

variable m_data

std::vector< double > m_data;

element values

variable m_min

double m_min;

variable m_max

double m_max;

value range of element data

variable m_map

vector< FEElementData > m_map;

Updated on 2022-07-23 at 17:50:04 -0600