|
FEBio
1.5.0
|
Surface mesh. More...
#include <FESurface.h>
Public Member Functions | |
| FESurface (FEMesh *pm) | |
| constructor | |
| virtual | ~FESurface () |
| destructor | |
| void | create (int n) |
| creates surface | |
| void | Serialize (DumpFile &ar) |
| serialization | |
| FESurfaceElement & | Element (int i) |
| return an element of the surface | |
| FEElement & | ElementRef (int n) |
| int | Elements () |
| return number of surface elements | |
| vec3d | ProjectToSurface (FESurfaceElement &el, vec3d x, double &r, double &s) |
| Project a node onto a surface element. | |
| void | UnpackLM (FEElement &el, vector< int > &lm) |
| Unpack surface element data. | |
| FEMesh * | GetMesh () |
| return the mesh to which this surface is attached | |
| int | Nodes () |
| number of nodes on this surface | |
| virtual bool | Init () |
| initialize surface data structure | |
| FENode & | Node (int n) |
| return the FENode object for local node n | |
| double | FaceArea (FESurfaceElement &el) |
| calculate the surface area of a surface element | |
| mat2d | Metric (FESurfaceElement &el, double r, double s) |
| calculate the metric tensor in the reference configuration | |
| mat2d | Metric0 (FESurfaceElement &el, double r, double s) |
| calculate the metric tensor in the reference configuration | |
| vec3d | SurfaceNormal (FESurfaceElement &el, double r, double s) |
| calculate the surface normal | |
| vec3d | SurfaceNormal (FESurfaceElement &el, int n) |
| calculate the surface normal at an integration point | |
| vec3d | Local2Global (FESurfaceElement &el, double r, double s) |
| calculate the global position of a point on the surface | |
| vec3d | Local2Global (FESurfaceElement &el, int n) |
| calculate the global position of an integration point | |
| bool | IsInsideElement (FESurfaceElement &el, double r, double s, double tol=0) |
| check to see if a point is on element | |
| void | CoBaseVectors (FESurfaceElement &el, int j, vec3d t[2]) |
| calculates the covariant base vectors of a surface at an integration point | |
| void | CoBaseVectors (FESurfaceElement &el, double r, double s, vec3d t[2]) |
| calculates the covariant base vectors of a surface at an integration point | |
| void | CoBaseVectors0 (FESurfaceElement &el, double r, double s, vec3d t[2]) |
| calculates covariant base vectors of a surface | |
| void | ContraBaseVectors (FESurfaceElement &el, double r, double s, vec3d t[2]) |
| calculates contravariant base vectors of a surface | |
| void | ContraBaseVectors0 (FESurfaceElement &el, double r, double s, vec3d t[2]) |
| calculates contravariant base vectors of a surface | |
| FESurfaceElement * | FindIntersection (vec3d r, vec3d n, double rs[2], double eps, int *pei=0) |
| find the intersection of a ray with the surface | |
| bool | Intersect (FESurfaceElement &el, vec3d r, vec3d n, double rs[2], double &g, double eps) |
| bool | IntersectTri (vec3d *y, vec3d r, vec3d n, double rs[2], double &g, double eps) |
| bool | IntersectQuad (vec3d *y, vec3d r, vec3d n, double rs[2], double &g, double eps) |
| int | FindElement (FESurfaceElement &el) |
Data Fields | |
| vector< int > | node |
| array of node indices | |
| FENodeElemList | m_NEL |
| the node element list | |
Protected Attributes | |
| vector< FESurfaceElement > | m_el |
| surface elements | |
Surface mesh.
This class implements the basic functionality for an FE surface. More specialized surfaces are derived from this class
| void FESurface::CoBaseVectors | ( | FESurfaceElement & | el, |
| int | j, | ||
| vec3d | t[2] | ||
| ) |
calculates the covariant base vectors of a surface at an integration point
This function calculates the covariant base vectors of a surface element at an integration point
| void FESurface::CoBaseVectors | ( | FESurfaceElement & | el, |
| double | r, | ||
| double | s, | ||
| vec3d | t[2] | ||
| ) |
calculates the covariant base vectors of a surface at an integration point
This function calculates the covariant base vectors of a surface element at an integration point
| void FESurface::CoBaseVectors0 | ( | FESurfaceElement & | el, |
| double | r, | ||
| double | s, | ||
| vec3d | t[2] | ||
| ) |
calculates covariant base vectors of a surface
This function calculates the covariant base vectors of a surface element at the natural coordinates (r,s)
| double FESurface::FaceArea | ( | FESurfaceElement & | el | ) |
calculate the surface area of a surface element
This function calculates the area of a surface element.
| int FESurface::FindElement | ( | FESurfaceElement & | el | ) |
Find the element that a face belongs to
| FESurfaceElement * FESurface::FindIntersection | ( | vec3d | r, |
| vec3d | n, | ||
| double | rs[2], | ||
| double | eps, | ||
| int * | pei = 0 |
||
| ) |
find the intersection of a ray with the surface
This function finds the element which is intersected by the ray (r,n). It returns a pointer to the element, as well as the isoparametric coordinates of the intersection point.
| bool FESurface::Init | ( | ) | [virtual] |
initialize surface data structure
Initialize surface node data structure Note that it is assumed that the element array is already created and initialized.
Reimplemented in FERigidWallSurface, FESlidingSurface, FETiedContactSurface, FESlidingSurface3, FEFacetSlidingSurface, FEMergedSurface, FEPeriodicSurface, FESurfaceConstraintSurface, and FESlidingSurface2.
| bool FESurface::Intersect | ( | FESurfaceElement & | el, |
| vec3d | r, | ||
| vec3d | n, | ||
| double | rs[2], | ||
| double & | g, | ||
| double | eps | ||
| ) |
This function calculates the intersection of a ray with a surface element. It simply calls the tri or quad intersection function based on the type of element.
This function calculates the intersection of a ray with a quad and returns true if the ray intersected.
| bool FESurface::IsInsideElement | ( | FESurfaceElement & | el, |
| double | r, | ||
| double | s, | ||
| double | tol = 0 |
||
| ) |
check to see if a point is on element
This function checks whether the point with natural coordinates (r,s) is inside the element, within a tolerance of tol.
| vec3d FESurface::Local2Global | ( | FESurfaceElement & | el, |
| int | n | ||
| ) |
calculate the global position of an integration point
This function calculates the global location of an integration point
| mat2d FESurface::Metric | ( | FESurfaceElement & | el, |
| double | r, | ||
| double | s | ||
| ) |
calculate the metric tensor in the reference configuration
Calculates the metric tensor at the point with surface coordinates (r,s)
| mat2d FESurface::Metric0 | ( | FESurfaceElement & | el, |
| double | r, | ||
| double | s | ||
| ) |
calculate the metric tensor in the reference configuration
Calculates the metric tensor at the point with surface coordinates (r,s)
| vec3d FESurface::ProjectToSurface | ( | FESurfaceElement & | el, |
| vec3d | x, | ||
| double & | r, | ||
| double & | s | ||
| ) |
Project a node onto a surface element.
This function calculates the projection of x on the surface element el. It does this by finding the solution of the nonlinear equation (x-y)*y,[a]=0, where the comma denotes differentation and a ranges from 1 to 2. The system is solved using the Newton-Raphson method. The surface element may be either a quad or a triangular element.
| vec3d FESurface::SurfaceNormal | ( | FESurfaceElement & | el, |
| double | r, | ||
| double | s | ||
| ) |
calculate the surface normal
This function calculates the normal of a surface element at the natural coordinates (r,s)
| vec3d FESurface::SurfaceNormal | ( | FESurfaceElement & | el, |
| int | n | ||
| ) |
calculate the surface normal at an integration point
This function calculates the noraml of a surface element at integration point n
1.7.5.1