hp2FEM  0.1
Public Member Functions | Protected Member Functions | Protected Attributes
FiniteElement Class Reference

Store the main finite element attributes and implement the element operators. More...

#include <FiniteElement.h>

Collaboration diagram for FiniteElement:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 FiniteElement ()
 Default constructor (without parameters).
 FiniteElement (FiniteElement &Instance, ElementShape_E ElementShape, ProblemType_E ProblemType, unsigned long MaxSolutionOrder, unsigned long Dim, unsigned long MappingOrder, CalculationProcedure_E CalculationProcedure=STANDARD, MeshType_E MeshType=NON_STRUCTURED, Kinematics_E Kinematics=INFINITE, StrainMeasure_E StrainMeasure=INFINITES, FiniteFormulation_E FiniteFormulation=INFINITESIMAL, pMesh_E pMeshDistribution=pUNIFORM, MappingType_E MappingType=ISOPARAMETRIC, MassStiffType_E MassType=CONSIST, StiffnessType_E StiffType=CONSISTENT, MaterialType_E MatType=HOOKE)
 Constructor with parameters.
 FiniteElement (FiniteElement &Instance)
 Copy-initializer constructor.
 ~FiniteElement ()
 Destructor.
FiniteElementoperator= (FiniteElement &Instance)
 Copies the contents of instance to the object.
 operator GradientMeasure & ()
 Cast operator for the reference of the class attribute "GM".
 operator ShapeFunctions & ()
 Cast operator for the reference of the class attribute "SF".
void Print (FILE *File)
 Prints to the ASCII file the main attributes of the finite element.
FiniteElementAttributes_SGetFiniteElementAttributes ()
 returns the finite element attributes.
void SetFiniteElementAttributes (FiniteElementAttributes_S &FiniteElementAttributes)
 Sets the class attributes input in an instance of FiniteElementAttributes_S instance.
void SetFiniteElementAttributes (ElementShape_E ElementShape, ProblemType_E ProblemType, unsigned long MaxSolutionOrder, unsigned long Dim, CalculationProcedure_E CalculationProcedure, MeshType_E MeshType, Kinematics_E Kinematics, StrainMeasure_E StrainMeasure, FiniteFormulation_E FiniteFormulation, pMesh_E pMeshDistribution, MappingType_E MappingType, unsigned long MappingOrder, MassStiffType_E MassType, StiffnessType_E StiffType, MaterialType_E MatType)
 Sets the class attributes as input parameters to be stored in the FiniteElementAttributes_S instance.
unsigned long GetMaxNumberElemDOFs ()
unsigned long GetMaxNumberElemPDOFs ()
void GetMassMatrix (unsigned long ElementNumber, unsigned long ElementOrder, unsigned long NumElemCoordinates, double *ElementCoordinates, Mapping &ElementMapping, GeometricProperties &GeoProp, SymmetricMatrix &MassMatrix, double &ElementMeasure, double Density=1)
 Returns the element mass matrix.
void GetLocalMassMatrix (unsigned long ElementNumber, unsigned long ElementOrder, unsigned long NumElemCoordinates, double *ElementCoordinates, GeometricProperties &GeoProp, SymmetricMatrix &MassMatrix, double Density=1)
 Returns the element mass matrix.
void GetLinearStiffnessMatrix (unsigned long ElementNumber, unsigned long ElementOrder, Mapping &ElementMapping, GeometricProperties &GeoProp, Material &Mater, unsigned long NumElemCoordinates, double *ElementCoordinates, SymmetricMatrix &StiffnessMatrix, double *Fe=NULL)
 Returns the element stiffness matrix.
void GetTangentStiffnessMatrix (unsigned long ElementNumber, unsigned long ElementOrder, unsigned long NumElemCoordinates, double *ElementCoordinatesi, double *ElementCoordinatesc, Mapping &ElementMap, GeometricProperties &GeoProp, Material &Mater, SymmetricMatrix &StiffnessMatrix, Vector &InternalForce)
 Returns the element tangent stiffness matrix.
void GetDTangentStiffnessMatrix (unsigned long ElementNumber, unsigned long ElementOrder, unsigned long NumElemCoordinates, double *ElementCoordinatesi, double *ElementCoordinatesc, Mapping &ElementMap, GeometricProperties &GeoProp, Material &Mater, SymmetricMatrix &StiffnessMatrix, Vector &InternalForce, Vector &Damage)
 Returns the element tangent stiffness matrix.
void GetQITangentStiffnessMatrix (unsigned long ElementNumber, unsigned long DisplacementOrder, unsigned long NumElemCoordinates, double *ElementCoordinatesi, double *ElementCoordinatesc, Mapping &ElementMap, GeometricProperties &GeoProp, Material &Mater, SymmetricMatrix &StiffnessMatrix, Vector &InternalForce)
 This method calculates the tangent stiffness matrix for a quasi-incompressible problem using the pressure projection procedure.
void GetDQITangentStiffnessMatrix (unsigned long ElementNumber, unsigned long DisplacementOrder, unsigned long NumElemCoordinates, double *ElementCoordinatesi, double *ElementCoordinatesc, Mapping &ElementMap, GeometricProperties &GeoProp, Material &Mater, SymmetricMatrix &StiffnessMatrix, Vector &InternalForce, Vector &Damage)
 This method calculates the tangent stiffness matrix for a quasi-incompressible problem using the pressure projection procedure.
void GetPbar (unsigned long NumIntPoints, double kappa, double *Jacobi, double *detJi, double *Jacobc, Vector &pbar)
 This operation returns the displacement calculated hidrostatic pressure, employed for quasi-incompressible materials.
void GetPproj (unsigned long ElemNum, double kappa, unsigned long DisplacementOrder, unsigned long PressureOrder, unsigned long NumElemCoords, double *ElemCoords, double *ElemCoords1, double *ShapeFunctions, unsigned long NumberSFU, unsigned long NumberSFP, double *Weights, unsigned long NumIntPoints, double *Jacobi, double *detJi, double *Jacobc)
 
  • This function performs the pressure projection procedure at the element level. The same number of integration points is used for the displacement and pressure orders. The same shape functions array is also used, calculated with the maximum number of shape functions.

void GetInternalForceVector (unsigned long ElementNumber, unsigned long ElementOrder, unsigned long NumElemCoords, double *ElementCoordinates, Mapping &ElementMapping, GeometricProperties &GeoProp, Material &Mater, double *Ue, double *Fe)
 Returns the internal force vector given the element solution.
void GetEdgeLoad (unsigned long ElementNumber, unsigned long ElementOrder, LoadIntensity &Load, Mapping &ElementMapping, unsigned long NumElemCoords, double *ElementCoordinates, unsigned long LocalEdge, double *Fe)
 Calculates the equivalent nodal load forf an edge distributed load.
void GetFaceLoad (unsigned long ElementNumber, unsigned long ElementOrder, LoadIntensity &Load, unsigned long NumElemCoords, double *ElementCoordinates, Mapping &ElementMapping, unsigned long LocalFace, double *Fe)
 Calculates the equivalent nodal load vector fro a face distributed load.
void GetBodyLoadVector (unsigned long ElementNumber, unsigned long ElementOrder, LoadIntensity &Load, unsigned long NumElemCoordinates, double *ElementCoordinates, Mapping &ElementMapping, double *Fe, double t=0)
 Returns the equivalent nodal load vector for a body load.
void GetEdgePressure (unsigned long ElementNumber, unsigned long ElementOrder, LoadIntensity &Load, unsigned long NumElemCoords, double *ElementCoordinates, Mapping &ElementMapping, double *Fe)
 Calculates the equivalent nodal load of an edge pressure load.
void GetFacePressure (unsigned long ElementNumber, unsigned long ElementOrder, LoadIntensity &Load, unsigned long NumElemCoords, double *ElementCoordinates, Mapping &ElementMapping, double *Fe)
 Calculates the equivalent nodal load of a face pressure load.
void GetEdgePressureStiffnessMatrix (unsigned long ElementNumber, unsigned long ElementOrder, unsigned long NumberEdgeNodes, LoadIntensity &Load, unsigned long NumElemCoords, double *ElementCoordinates, Mapping &ElementMapping, SymmetricMatrix &Ke, double *Fe)
 Computes the element edge pressure stiffness matrix.
void GetFacePressureStiffnessMatrix (unsigned long ElementNumber, unsigned long ElementOrder, unsigned long NumberFaceNodes, LoadIntensity &Load, unsigned long NumElemCoords, double *ElementCoordinates, Mapping &ElementMapping, SymmetricMatrix &Ke, double *Fe)
 Computes the element face pressure stiffness matrix.
void Run1DLocalMatrices (BuiltInArray< unsigned long > &ElementOrder)
 Calculates the 1D mass, stiffness and mixed matrices for each integration point and element order.
double * Get1DLocalMassMatrix (unsigned long ElementOrder, unsigned long IntegOrder, unsigned long &TotalNumberSF, unsigned long &MatrixOrder, unsigned long &NumberIP)
 Returns the 1D mass matrix stored for each integration point for a given element order.
double * Get1DLocalStiffnessMatrix (unsigned long ElementOrder, unsigned long IntegOrder, unsigned long &TotalNumberSF, unsigned long &MatrixOrder, unsigned long &NumberIP)
 Returns the 1D stifness matrix stored for each integration point for a given element order.
double * Get1DLocalMixedMatrix (unsigned long ElementOrder, unsigned long IntegOrder, unsigned long &TotalNumberSF, unsigned long &MatrixOrder, unsigned long &NumberIP)
 Returns the 1D mixed matrix stored for each integration point for a given element order.
double * Interpolation (Vector &UeSol, unsigned long CoefOrder, unsigned long PosOrder, unsigned long &UePosSize)
 Calculates the local solution vector to the post processing mesh.

Protected Member Functions

void Run1DLocalMatrices_copy ()
 Calculates the 1D mass, stiffness and mixed matrices for each integration point and element order.

Protected Attributes

FiniteElementAttributes_S FEAtr
 This variable stores a struct with all attributes of the FiniteElement class (Element shape, problem type, number of degrees of freedom, maximum polynomial order, calculation procedure, mesh type, kinematic consideration, strain measure, finite formulation, p-uniform or nonuniform mesh type, Mass type and Stiffness type).
TwoIndexTable< double > Local1DMassMatrix
 Stores the local 1D mass matrix for each element order and calculated for each integration point. These matrices are used for calculation procedure 1D_MATRICES.
TwoIndexTable< double > Local1DStiffMatrix
 Stores the local 1D stiffness matrix for each element order and calculated for each integration point. These matrices are used for calculation procedure 1D_MATRICES.
TwoIndexTable< double > Local1DMixedMatrix
 Stores the local 1D non-symmetric mixed matrix for each element order and calculated for each integration point. These matrices are used for calculation procedure 1D_MATRICES.
GradientMeasure GM
 Instance of GradientMeasure class which calculates the strain measures (deformation matrices) for the considered problem.
ShapeFunctions SF
 Instance of ShapeFunctions class which store the collocation points, integration poins and values of shape functions and dreivatives.
Matrix F
 Deformation gradient tensor.
Matrix gradU
 Displacement gradient tensor.
SymmetricMatrix S
 Stress tensor.
Vector Sv
 Stress tensor, stored in vector form.
SymmetricMatrix E
 Deformation tensor.
Vector Ev
 Deformation tensor stored in vector format.
SymmetricMatrix DMatrix
 Elasticity matrix, with material properties.
Matrix BMatrix
 Strain displacement matrix, stored as a class variable.
Matrix NLBMatrix
 Non-linear displacement matrix, used for finite strain analyses.
Matrix ISBMatrix
 Initial stress B Matrix.
Vector dJdE
 
  • Vector that stores the derivative between the third material invariant and the Green-Lagrange strain tensor

Vector GVector
 
  • Vector used for quasi-incompressible problems. It stores the product between the nonlinear deformation matrix (NLBMatrix) and the invariant/deformation tensor derivative (dJdE). e.g. GVector = NLBMatrix' * dJdE.

Vector AuxSF
 
  • Auxiliary vector used to rearrange the shape functions when applying edge and face loads using modal bases

Vector DispP
 Displacement calculated pressure. This is a variable used for problems involving incompressible materials.
Vector ProjP
 Projected hydrostatic pressure. This is a variable used for problems involving incompressible materials.
Vector Pcoefs
 Pressure coefficients. They are the nodal pressures when using a nodal basis, and the pressure modes when using a modal basis.
Vector Auxv
 General purpose auxiliary vector.
SymmetricMatrix Ke
 Element stiffness matrix stored as a class variable.
SymmetricMatrix Kteaux
SymmetricMatrix Me
 Element mass matrix stored as a class variable.
SymmetricMatrix Meaux
 Element mass matrix stored as a class variable.
SymmetricMatrix Kte
 Element tangent stiffness matrix, stored as a class variable.
Matrix Kp
Matrix Kpaux
Matrix Kpaux1
Vector Re
Vector Rhs
 Right hand side vector used for the pressure projection procedure.
Vector UePos
OneIndexTable< double > Mpq
 Table with the sum of all 1DLocalMassMatrices for the integration points, for each element order. This Table is used when the mesh is structured, thus allowing the product with the constant element jacobian.
OneIndexTable< double > Kpq
 Table with the sum of all 1DLocalStiffnessMatrices for the integration points, for each element order. This Table is used when the mesh is structured, thus allowing the product with the constant element jacobian.
OneIndexTable< double > Dpq
 Table with the sum of all 1DLocalMixedMatrices for the integration points, for each element order. This Table is used when the mesh is structured, thus allowing the product with the constant element jacobian.
BuiltInArray< long > ElementOrderSets
 This array has size for the maximum number of element order value. This array indicates the row number of the 1D matrices table that store the shape functions for each integration point. As the array is allocated for the maximum element order, some positions may not be used. In this case, this array will store -1.
BuiltInArray< unsigned long > SFIncid
 This is an auxiliary array for appropriate shape function indexing when using modal bases. It is used for edge and face loads. If the problem is two-dimensional it is only allocated with the size of line shape functions. If the problem is three-dimensional, we allocate it with the number of square shape functions, because face loads may be applied.

Detailed Description

Store the main finite element attributes and implement the element operators.

Author:
Marco Lucio Bittencourt/Fabiano Fernandes Bargos
Date:
March/23/2011

Constructor & Destructor Documentation

FiniteElement::FiniteElement ( FiniteElement Instance,
ElementShape_E  ElementShape,
ProblemType_E  ProblemType,
unsigned long  MaxSolutionOrder,
unsigned long  Dim,
unsigned long  MappingOrder,
CalculationProcedure_E  CalculationProcedure = STANDARD,
MeshType_E  MeshType = NON_STRUCTURED,
Kinematics_E  Kinematics = INFINITE,
StrainMeasure_E  StrainMeasure = INFINITES,
FiniteFormulation_E  FiniteFormulation = INFINITESIMAL,
pMesh_E  pMeshDistribution = pUNIFORM,
MappingType_E  MappingType = ISOPARAMETRIC,
MassStiffType_E  MassType = CONSIST,
StiffnessType_E  StiffType = CONSISTENT,
MaterialType_E  MatType = HOOKE 
)

Constructor with parameters.

Parameters:
[in]NDOFs- Number of degrees of freedom per node.
[in]Pmax- maximum polynomial order.
[in]ElementShape- shape of the finite element.
[in]ProblemType- problem type for the analysis
[in]CalculationProcedure- calculation procedure for the finite element operators (STANDARD or 1D_MATRICES).
[in]MeshType- mesh type which can be UNIFORM, NON_UNIFORM and UNSTRUCTURED.
[in]Kinematics- type of kinematics for the element between infinitesimal or finite.
[in]StrainMeasure- type of strain measure used by the element.
[in]FiniteFormulation- type of finite element formulation for non-linear analysis.
[in]pMeshDistribution- distribution of element orders in the mesh.
[in]MassType- type of mass matrix construction.
[in]StiffType- type of stiffness matrix construction.
[in]MatType- material type used for the analysis.

Copy-initializer constructor.

Parameters:
[in]Instance- instance of the finite element class.

Member Function Documentation

double * FiniteElement::Get1DLocalMassMatrix ( unsigned long  ElementOrder,
unsigned long  IntegOrder,
unsigned long &  TotalNumberSF,
unsigned long &  MatrixOrder,
unsigned long &  NumberIP 
)

Returns the 1D mass matrix stored for each integration point for a given element order.

Parameters:
[in]ElementOrder: element interpolation order.
[in]IntegOrder: integrand order.
[out]TotalNumberSF: Total number of shape functions.
[out]MatrixOrder: matrix order for each integration point.

[out]: NumberIP: number of integration points.

Returns:
Pointer to an array with the 1D matrices for each integration point.
double * FiniteElement::Get1DLocalMixedMatrix ( unsigned long  ElementOrder,
unsigned long  IntegOrder,
unsigned long &  TotalNumberSF,
unsigned long &  MatrixOrder,
unsigned long &  NumberIP 
)

Returns the 1D mixed matrix stored for each integration point for a given element order.

Parameters:
[in]ElementOrder: element interpolation order.
[in]IntegOrder: integrand order.
[out]TotalNumberSF : Total number of shape functions.
[out]MatrixOrder: matrix order for each integration point.

[out]: NumberIP: number of integration points.

Returns:
Pointer to an array with the 1D matrices for each integration point.
double * FiniteElement::Get1DLocalStiffnessMatrix ( unsigned long  ElementOrder,
unsigned long  IntegOrder,
unsigned long &  TotalNumberSF,
unsigned long &  MatrixOrder,
unsigned long &  NumberIP 
)

Returns the 1D stifness matrix stored for each integration point for a given element order.

Parameters:
[in]ElementOrder: element interpolation order.
[in]IntegOrder: integrand order.
[out]TotalNumberSF : Total number of shape functions.
[out]MatrixOrder: matrix order for each integration point.

[out]: NumberIP: number of integration points.

Returns:
Pointer to an array with the 1D matrices for each integration point.
void FiniteElement::GetBodyLoadVector ( unsigned long  ElementNumber,
unsigned long  ElementOrder,
LoadIntensity Load,
unsigned long  NumElemCoordinates,
double *  ElementCoordinates,
Mapping ElementMapping,
double *  Fe,
double  t = 0 
)

Returns the equivalent nodal load vector for a body load.

Parameters:
[in]ElementNumber- global element number.
[in]ElementOrder- order of interpolation functions for the element.
[in]ElementMapping- instance of Mapping with the Jacobian for each integration point.
[in]Load- Instance of LoadIntensity class with load attributes.
[in]ElementCoordinates- array with the nodal coordinates of the element stored in the format (X,Y,Z) for each node.
[out]Fe- element load vector stored in a double array.
[in]t- time for dynamic analysis
void FiniteElement::GetDQITangentStiffnessMatrix ( unsigned long  ElementNumber,
unsigned long  DisplacementOrder,
unsigned long  NumElemCoordinates,
double *  ElementCoordinatesi,
double *  ElementCoordinatesc,
Mapping ElementMap,
GeometricProperties GeoProp,
Material Mater,
SymmetricMatrix StiffnessMatrix,
Vector InternalForce,
Vector Damage 
)

This method calculates the tangent stiffness matrix for a quasi-incompressible problem using the pressure projection procedure.

Parameters:
[in]ElementNumber- global element number.
[in]DisplacementOrder- order of displacement interpolation functions for the element.
[in]NumElemCoordinatess- number of element coordinates.
[in]ElementCoordinatesi- Initial Element Coordinates.
[in]ElementCoordinatesc- Current element coordinates.
[in]ElementMap- instance of Mapping with the Jacobian for each integration point.
[in]GeoProp- instance of GeometricProperties.
[in]Mater- instance of the material class.
[out]StiffMatrix- element stiffness matrix stored in the SymmetricMatrix class.
[out]Fe- element internal load vector stored in a double array.
[out]Damage- damage calculated at the integration points.
void FiniteElement::GetDTangentStiffnessMatrix ( unsigned long  ElementNumber,
unsigned long  ElementOrder,
unsigned long  NumElemCoordinates,
double *  ElementCoordinatesi,
double *  ElementCoordinatesc,
Mapping ElementMap,
GeometricProperties GeoProp,
Material Mater,
SymmetricMatrix StiffnessMatrix,
Vector InternalForce,
Vector Damage 
)

Returns the element tangent stiffness matrix.

Returns the element stiffness matrix.

Parameters:
[in]ElementNumber- global element number.
[in]ElementOrder- order of interpolation functions for the element.
[in]NumElemCoordinatess- number of element coordinates.
[in]ElementCoordinatesi- Initial Element Coordinates.
[in]ElementCoordinatesc- Current element coordinates.
[in]ElementMap- instance of Mapping with the Jacobian for each integration point.
[in]GeoProp- instance of GeometricProperties.
[in]Mater- instance of the material class.
[out]StiffMatrix- element stiffness matrix stored in the SymmetricMatrix class.
[out]Fe- element internal load vector stored in a double array.
[out]Damage- damage calculated at the integration points.
void FiniteElement::GetEdgeLoad ( unsigned long  ElementNumber,
unsigned long  ElementOrder,
LoadIntensity Load,
Mapping ElementMapping,
unsigned long  NumElemCoords,
double *  ElementCoordinates,
unsigned long  LocalEdge,
double *  Fe 
)

Calculates the equivalent nodal load forf an edge distributed load.

Parameters:
[in]ElementNumber- global element number.
[in]ElementOrder- order of interpolation functions for the element.
[in]ElementMapping- instance of Mapping with the Jacobian for each integration point.
[in]Load- Instance of LoadIntensity class with load attributes.
[in]ElementCoordinates- array with the nodal coordinates of the element stored in the format (X,Y,Z) for each node.
[in]LocalEdge- Local edge to perform correction on shape functions for modal bases.
[out]Fe- element load vector stored in a double array.
void FiniteElement::GetEdgePressure ( unsigned long  ElementNumber,
unsigned long  ElementOrder,
LoadIntensity Load,
unsigned long  NumElemCoords,
double *  ElementCoordinates,
Mapping ElementMapping,
double *  Fe 
)

Calculates the equivalent nodal load of an edge pressure load.

Parameters:
[in]ElementNumber- global element number.
[in]ElementOrder- order of interpolation functions for the element.
[in]ElementMapping- instance of Mapping with the Jacobian for each integration point.
[in]Load- Instance of LoadIntensity class with load attributes.
[in]ElementCoordinates- array with the nodal coordinates of the element stored in the format (X,Y,Z) for each node.
[out]Fe- element load vector stored in a double array.
void FiniteElement::GetEdgePressureStiffnessMatrix ( unsigned long  ElementNumber,
unsigned long  ElementOrder,
unsigned long  NumberEdgeNodes,
LoadIntensity Load,
unsigned long  NumElemCoords,
double *  ElementCoordinates,
Mapping ElementMapping,
SymmetricMatrix Ke,
double *  Fe 
)

Computes the element edge pressure stiffness matrix.

Parameters:
[in]ElementNumber- global element number.
[in]ElementOrder- order of interpolation functions for the element.
[in]ElementMapping- instance of Mapping with the Jacobian for each integration point.
[in]Load- Instance of LoadIntensity class with load attributes.
[in]ElementCoordinates- array with the nodal coordinates of the element stored in the format (X,Y,Z) for each node.
[out]Ke- element stiffness matrix related to the pressure follower load.
[out]Fe- element load vector stored in a double array.
void FiniteElement::GetFaceLoad ( unsigned long  ElementNumber,
unsigned long  ElementOrder,
LoadIntensity Load,
unsigned long  NumElemCoords,
double *  ElementCoordinates,
Mapping ElementMapping,
unsigned long  LocalFace,
double *  Fe 
)

Calculates the equivalent nodal load vector fro a face distributed load.

Parameters:
[in]ElementNumber- global element number.
[in]ElementOrder- order of interpolation functions for the element.
[in]ElementMapping- instance of Mapping with the Jacobian for each integration point.
[in]Load- Instance of LoadIntensity class with load attributes.
[in]ElementCoordinates- array with the nodal coordinates of the element stored in the format (X,Y,Z) for each node.
[in]LocalFace- local element face.
[out]Fe- element load vector stored in a double array.
void FiniteElement::GetFacePressure ( unsigned long  ElementNumber,
unsigned long  ElementOrder,
LoadIntensity Load,
unsigned long  NumElemCoords,
double *  ElementCoordinates,
Mapping ElementMapping,
double *  Fe 
)

Calculates the equivalent nodal load of a face pressure load.

Parameters:
[in]ElementNumber- global element number.
[in]ElementOrder- order of interpolation functions for the element.
[in]ElementMapping- instance of Mapping with the Jacobian for each integration point.
[in]Load- Instance of LoadIntensity class with load attributes.
[in]ElementCoordinates- array with the nodal coordinates of the element stored in the format (X,Y,Z) for each node.
[out]Fe- element load vector stored in a double array.
void FiniteElement::GetFacePressureStiffnessMatrix ( unsigned long  ElementNumber,
unsigned long  ElementOrder,
unsigned long  NumberFaceNodes,
LoadIntensity Load,
unsigned long  NumElemCoords,
double *  ElementCoordinates,
Mapping ElementMapping,
SymmetricMatrix Ke,
double *  Fe 
)

Computes the element face pressure stiffness matrix.

Parameters:
[in]ElementNumber- global element number.
[in]ElementOrder- order of interpolation functions for the element.
[in]ElementMapping- instance of Mapping with the Jacobian for each integration point.
[in]Load- Instance of LoadIntensity class with load attributes.
[in]ElementCoordinates- array with the nodal coordinates of the element stored in the format (X,Y,Z) for each node.
[out]Ke- element stiffness matrix related to the pressure follower load.
[out]Fe- element load vector stored in a double array.

returns the finite element attributes.

Returns:
a struct with the finite element attributes.
void FiniteElement::GetInternalForceVector ( unsigned long  ElementNumber,
unsigned long  ElementOrder,
unsigned long  NumElemCoords,
double *  ElementCoordinates,
Mapping ElementMapping,
GeometricProperties GeoProp,
Material Mater,
double *  Ue,
double *  Fe 
)

Returns the internal force vector given the element solution.

Parameters:
[in]ElementNumber- global element number.
[in]ElementOrder- order of interpolation functions for the element.
[in]ElementMapping- instance of Mapping with the Jacobian for each integration point.
int]Ue - array with the element solution stored in a double array.
[out]Fe- element internal load vector stored in a double array.
void FiniteElement::GetLinearStiffnessMatrix ( unsigned long  ElementNumber,
unsigned long  ElementOrder,
Mapping ElementMapping,
GeometricProperties GeoProp,
Material Mater,
unsigned long  NumElemCoordinates,
double *  ElementCoordinates,
SymmetricMatrix StiffnessMatrix,
double *  Fe = NULL 
)

Returns the element stiffness matrix.

Parameters:
[in]ElementNumber- global element number.
[in]ElementOrder- order of interpolation functions for the element.

param[in] ElementMapping - instance of Mapping with the Jacobian for each integration point.

Parameters:
[in]GeometricProperties- instance with some geometric properties regarding the analysis.
[in]Mater- instance of material, storing properties.
[in]NumElemCoords- number of element cordinates.
[in]ElementCoordinates- Element Coordinates.
[out]StiffMatrix- element stiffness matrix stored in the SymmetricMatrix class.
[out]Fe- element load vector stored in a double array.
void FiniteElement::GetLocalMassMatrix ( unsigned long  ElementNumber,
unsigned long  ElementOrder,
unsigned long  NumElemCoordinates,
double *  ElementCoordinates,
GeometricProperties GeoProp,
SymmetricMatrix MassMatrix,
double  Density = 1 
)

Returns the element mass matrix.

Parameters:
[in]ElementNumber- global element number.
[in]ElementOrder- order of interpolation functions for the element.
[in]NumElemCoordinates- number of element coordinates.
[in]ElemCoordinates- Element Coordinates.

param[in] GeometricProperties - instance with some geometric properties regarding the analysis.

Parameters:
[out]MassMatrix- element mass matrix stored in the SymmetricMatrix class.
[in]Density- material density.
void FiniteElement::GetMassMatrix ( unsigned long  ElementNumber,
unsigned long  ElementOrder,
unsigned long  NumElemCoordinates,
double *  ElementCoordinates,
Mapping ElementMapping,
GeometricProperties GeoProp,
SymmetricMatrix MassMatrix,
double &  ElementMeasure,
double  Density = 1 
)

Returns the element mass matrix.

Parameters:
[in]ElementNumber- global element number.
[in]ElementOrder- order of interpolation functions for the element.
[in]NumElemCoordinates- number of element coordinates.
[in]ElemCoordinates- Element Coordinates.
[in]ElementMapping- instance of Mapping with the Jacobian for each integration point.
[in]GeometricProperties- instance with some geometric properties regarding the analysis.
[out]MassMatrix- element mass matrix stored in the SymmetricMatrix class.
[in]Density- material density.

@ brief Returns the number of DOFs for the element.

@ brief Returns the number of pressure DOFs for the element.

void FiniteElement::GetPbar ( unsigned long  NumIntPoints,
double  kappa,
double *  Jacobi,
double *  detJi,
double *  Jacobc,
Vector pbar 
)

This operation returns the displacement calculated hidrostatic pressure, employed for quasi-incompressible materials.

Parameters:
[in]-NumIntPoints - Number of integration points of the displacement field.
[in]-kappa - Bulk modulus of the quasi-incompressible material.
[in]-Jacobi - Initial Jacobian.
[in]-detJi - Determinant of the initial Jacobian.
[in]-Jacobc - Current Jacobian.
[out]-pbar - The displacement calculated pressure:
  • for the pressure projection procedure, it is applied at the right hand side vector of the projection, and it is manipulated with the mass matrix to yield the projected hidrostatic pressure.
  • for compressible materials, the pbar value is used directly in the stress and elasticity tensors, whithout the projection procedure.
void FiniteElement::GetPproj ( unsigned long  ElemNum,
double  kappa,
unsigned long  DisplacementOrder,
unsigned long  PressureOrder,
unsigned long  NumElemCoords,
double *  ElemCoords,
double *  ElemCoords1,
double *  ShapeFunctions,
unsigned long  NumberSFU,
unsigned long  NumberSFP,
double *  Weights,
unsigned long  NumIntPoints,
double *  Jacobi,
double *  detJi,
double *  Jacobc 
)

  • This function performs the pressure projection procedure at the element level. The same number of integration points is used for the displacement and pressure orders. The same shape functions array is also used, calculated with the maximum number of shape functions.

Parameters:
[in]ElemNum- Element number.
[in]kappa- Bulk modulus.
[in]DisplacementOrder- Displacement interpolation order.
[in]PressureOrder- Pressure interpolation order.
[in]NumElemCoords- Number of element coordinates.
[in]ElemCoords- initial Element coordinates.
[in]ElemCoords1- updated element coordinates.
[in]ShapeFunctions- Shape functions stored for the highest order (displacement).
[in]NumberSFU- Number displacement shape functions.
[in]NumberSFP- Number of pressure shape functions.
[in]Weights- Weights to perform the numerical integration.
[in]NumIntPoints- Number of integration points.
[in]Jacobi- Initial jacobian for the displacement field.
[in]detJi- Determinant of the initial jacobian for the displacement field.
[in]detJc- Determinant of the current jacobian for the displacement field.
[out]PMassMatrix- Mass matrix assembled with the pressure interpolation order.
[out]ProjP- Projected hidrostatic pressure.
void FiniteElement::GetQITangentStiffnessMatrix ( unsigned long  ElementNumber,
unsigned long  DisplacementOrder,
unsigned long  NumElemCoordinates,
double *  ElementCoordinatesi,
double *  ElementCoordinatesc,
Mapping ElementMap,
GeometricProperties GeoProp,
Material Mater,
SymmetricMatrix StiffnessMatrix,
Vector InternalForce 
)

This method calculates the tangent stiffness matrix for a quasi-incompressible problem using the pressure projection procedure.

Parameters:
[in]ElementNumber- global element number.
[in]DisplacementOrder- order of displacement interpolation functions for the element.
[in]NumElemCoordinatess- number of element coordinates.
[in]ElementCoordinatesi- Initial Element Coordinates.
[in]ElementCoordinatesc- Current element coordinates.
[in]ElementMap- instance of Mapping with the Jacobian for each integration point.
[in]GeoProp- instance of GeometricProperties.
[in]Mater- instance of the material class.
[out]StiffMatrix- element stiffness matrix stored in the SymmetricMatrix class.
[out]Fe- element internal load vector stored in a double array.
void FiniteElement::GetTangentStiffnessMatrix ( unsigned long  ElementNumber,
unsigned long  ElementOrder,
unsigned long  NumElemCoordinates,
double *  ElementCoordinatesi,
double *  ElementCoordinatesc,
Mapping ElementMap,
GeometricProperties GeoProp,
Material Mater,
SymmetricMatrix StiffnessMatrix,
Vector InternalForce 
)

Returns the element tangent stiffness matrix.

Returns the element stiffness matrix.

Parameters:
[in]ElementNumber- global element number.
[in]ElementOrder- order of interpolation functions for the element.
[in]NumElemCoordinatess- number of element coordinates.
[in]ElementCoordinatesi- Initial Element Coordinates.
[in]ElementCoordinatesc- Current element coordinates.
[in]ElementMap- instance of Mapping with the Jacobian for each integration point.
[in]GeoProp- instance of GeometricProperties.
[in]Mater- instance of the material class.
[out]StiffMatrix- element stiffness matrix stored in the SymmetricMatrix class.
[out]Fe- element internal load vector stored in a double array.
double * FiniteElement::Interpolation ( Vector UeSol,
unsigned long  CoefOrder,
unsigned long  PosOrder,
unsigned long &  UePosSize 
)

Calculates the local solution vector to the post processing mesh.

Parameters:
[in]UeSol- local solution vector calculated from the solution mesh.
[in]CoefOrder- element solution order.
[in]PosOrder- maximum post processing order.
[out]UePosSize- size of the local solution vector of the post processing mesh. This size is number of collocation points X number of shape functions.
Returns:
double pointer to return the initial position of the solution vector calculates to the processing mesh.
FiniteElement::operator GradientMeasure & ( )

Cast operator for the reference of the class attribute "GM".

Returns:
reference to the class attribute "GM" of type GradientMeasure.
FiniteElement::operator ShapeFunctions & ( )

Cast operator for the reference of the class attribute "SF".

Returns:
reference to the class attribute "SF" of type ShapeFunctions.
FiniteElement & FiniteElement::operator= ( FiniteElement Instance)

Copies the contents of instance to the object.

Parameters:
[in]Instance- instance of the FiniteElement class.
Returns:
Reference to the LoadIntensity instance.
void FiniteElement::Print ( FILE *  File)

Prints to the ASCII file the main attributes of the finite element.

Parameters:
[in]File- pointer to the ASCII file.
void FiniteElement::Run1DLocalMatrices ( BuiltInArray< unsigned long > &  ElementOrder)

Calculates the 1D mass, stiffness and mixed matrices for each integration point and element order.

Parameters:
[in]ElementOrder- An array of element order. If the pMesh type = pUNIFORM, this array will be just one position.

Sets the class attributes input in an instance of FiniteElementAttributes_S instance.

Parameters:
[in]FiniteElementAttributes- parameters of the finite element analysis.
void FiniteElement::SetFiniteElementAttributes ( ElementShape_E  ElementShape,
ProblemType_E  ProblemType,
unsigned long  MaxSolutionOrder,
unsigned long  Dim,
CalculationProcedure_E  CalculationProcedure,
MeshType_E  MeshType,
Kinematics_E  Kinematics,
StrainMeasure_E  StrainMeasure,
FiniteFormulation_E  FiniteFormulation,
pMesh_E  pMeshDistribution,
MappingType_E  MappingType,
unsigned long  MappingOrder,
MassStiffType_E  MassType,
StiffnessType_E  StiffType,
MaterialType_E  MatType 
)

Sets the class attributes as input parameters to be stored in the FiniteElementAttributes_S instance.

Parameters:
[in]ElementShape- shape of the finite element.
[in]EntityType- Entity type.
[in]ProblemType- problem type for the analysis
[in]CalculationProcedure- calculation procedure for the finite element operators (STANDARD or 1D_MATRICES).
[in]MeshType- mesh type which can be UNIFORM, NON_UNIFORM and UNSTRUCTURED.
[in]NumberDOFsNode- number of dofs for the element nodes/modes.
[in]Kinematics- type of kinematics for the element between infinitesimal or finite.
[in]StrainMeasure- type of strain measure used by the element.
[in]FiniteFormulation- type of finite element formulation for non-linear analysis.
[in]pMeshDistribution- distribution of element orders in the mesh.

Member Data Documentation

@ brief - Displacement/pressure stiffness matrix used for incompressible problems.

@ brief - Displacement/pressure auxiliary stiffness matrix used for incompressible problems.

@ brief - Displacement/pressure auxiliary stiffness matrix used for incompressible problems.

@ brief Auxiliary matrix used for operations.

@ brief Internal force vector, stored as a class variable.

@ brief the local solution vector allocates calculated to post processing mesh.


The documentation for this class was generated from the following files:
 All Classes Files Functions Variables Typedefs Friends Defines