In plane stress and plane strain structural analysis, all symmetric tensors are given in the order xx, yy, zz, xy, yz, zx. Note that in plane strain, the zz, yz, and zx components of strain are identically zero, while the yz and the zx components of stress are zero. In plane stress, yz and zx components of strain are zero, while the zz, yz, and zx components of stress are zero. In the axisymmetric case, the tensor order becomes rr, zz, theta-theta, rz, z-theta, theta-r.
In planar thermal analysis, all vectors are given in the order x, y, z where the z component of the temperature gradient is zero. In the axisymmetric case, the vectoral order becomes r, z, theta where the theta component of the temperature gradient is zero.
The methods associated with a Solid2D object are the following.
*vfe_Solid2DBegin - create an instance of a Solid2D object vfe_Solid2DEnd - destroy an instance of a Solid2D object vfe_Solid2DError - return Solid2D object error flag
vfe_Solid2DSetHistPtr - set pointers to material history vfe_Solid2DSetMatlSystem - set material axes direction vfe_Solid2DSetObject - set attribute object vfe_Solid2DSetParami - set element formulation parameters vfe_Solid2DSetPropPtr - set pointer to element nodal properties vfe_Solid2DSetTopology - set input element topology
vfe_Solid2DDofMap - query element degree of freedom map vfe_Solid2DNumDof - query number of element degrees of freedom vfe_Solid2DNumIntPnt - query number of element integration points
vfe_Solid2DShapeGrad - shape functions and gradients
vfe_Solid2DConcLoad - concentrated load vector vfe_Solid2DDistLoad - distributed load vector. vfe_Solid2DElemLoad - body force vector vfe_Solid2DGeomStiff - geometric stiffness matrix vfe_Solid2DInitHist - initialize material history vfe_Solid2DMass - consistent mass matrix vfe_Solid2DMassDiag - diagonal mass matrix vfe_Solid2DReact - reaction vector vfe_Solid2DReactStiff - reaction vector, stiffness matrix vfe_Solid2DStiff - linear stiffness matrix vfe_Solid2DStrsAdapt - stress based error analysis vfe_Solid2DStrsStrn - stress and strain
vfe_Solid2DDistHeat - distributed heat loads. vfe_Solid2DElemHeat - body heat generation vfe_Solid2DCap - consistent capacitance matrix vfe_Solid2DCapDiag - diagonal capacitance matrix vfe_Solid2DPower - thermal power vfe_Solid2DPowerCond - thermal power, conductance matrix vfe_Solid2DCond - conductance matrix vfe_Solid2DHFlxAdapt - heat flux based error analysis vfe_Solid2DHFlxTGrd - heat flux and temperature gradient
If the element is to support a material model, such as a plastic material model, which requires a material history then the user must manage the material history information using vfe_Solid2DSetHistPtr and vfe_Solid2DInitHist.
Use the function vfe_Solid2DStrsAdapt to aid in computing element strain energy, strain energy error and other useful quantities to aid in solution error estimation and mesh adaptation. The function vfe_Solid2DHFlxAdapt performs a similar computation for heat transfer analysis.
It is useful to use reduced integration rules for certain parabolic 2D and 3D solids for performance reasons. In general reduced integration rules can introduce zero energy modes within a single element. These zero energy modes are suppressed in most practical circumstances by attachments to adjacent elements or constraints across the element edges or faces. The number of adjacent elements required to suppress the zero energy modes for each Serendipity element type is listed below.
The element technology to be used is set using the function vfe_Solid2DSetParami with type VFE_TECH. Standard fully integrated, VFE_TECH_ISOP, and underintegrated, VFE_TECH_URED exist for all elements. The default technology is VFE_TECH_ISOP which will work in all cases. However for some element types, alternative technologies should be considered for improved performance. The recommended technology varies with element topology, order and 2D approximation and is listed below. The number of integration points used for fully integrated technologies appears in paraenthesis. Underintegrated technologies use a single integration point for the linear element forms and for the higher order element forms use the fully integrated rule for the one-less order.
*vfe_Solid2DBegin - create an instance of a Solid2D object
vfe_Solid2D *vfe_Solid2DBegin ()
None
Destroy an instance of a Solid2D object using
void vfe_Solid2DEnd (vfe_Solid2D *solid2d)
Return the current value of a Solid2D object error flag using
Vint vfe_Solid2DError (vfe_Solid2D *solid2d)
vfe_Solid2DSetHistPtr - set pointers to material history
void vfe_Solid2DSetHistPtr (vfe_Solid2D *solid2d, Vdouble *oldhist, Vdouble *newhist)
solid2d Pointer to Solid2D object. oldhist Pointer to start of material history at previous step newhist Pointer to start of material history at current step
None
vfe_Solid2DSetMatlSystem - set material axes direction
void vfe_Solid2DSetMatlSystem (vfe_Solid2D *solid2d, Vint type, Vdouble vec[], Vdouble angle)
solid2d Pointer to Solid2D object. type Material system convention vec Orientation vector data angle Angle to rotate material x',y' axes about the z' axis in degrees.
None
For a description of element coordinate systems, type, and associated
orientation vector data, please see
1.4 Element Coordinate Systems
vfe_Solid2DSetObject - set attribute object
void vfe_Solid2DSetObject (vfe_Solid2D *solid2d, Vint objecttype, Vobject *object)
solid2d Pointer to Solid2D object. objecttype The object type identifier =VFE_MATLFUN MatlFun object object Pointer to the object to be set.
None
vfe_Solid2DSetParami - set element formulation parameters
void vfe_Solid2DSetParami (vfe_Solid2D *solid2d, Vint type, Vint iparam)
solid2d Pointer to Solid2D object. type Type of formulation parameter to set =VFE_TECH Element technology =VFE_CHECKTOTALVOL Total Jacobian checking =VFE_STRAINTYPE Element strain type =VFE_TEMPMATLAVE Average material temperature flag =VFE_2D 2D Approximation iparam Integer parameter value. =SYS_ON Enable =SYS_OFF Disable =VFE_TECH_ISOP Standard isoparametric technology =VFE_TECH_URED Uniform reduced technology =VFE_TECH_MIXED Mixed technology =VFE_TECH_ENHANCED Enhanced technology =VFE_AXISYMMETRIC 2D axisymmetric =VFE_PLANESTRAIN 2D plane strain =VFE_PLANESTRESS 2D plane stress =VFE_SMALLSTRAIN Small strain =VFE_LARGESTRAIN Large strain
None
The parameter VFE_CHECKTOTALVOL toggles of Jacobian checking performed during element volume integrations. If this parameter is not enabled, then an error is generated if the Jacobian contribution of any integration point is non-positive. If this parameter is enabled then an error is generated only if the total Jacobian contribution over all integration points is non-positive. By default VFE_CHECKTOTALVOL is set to SYS_OFF.
Set element strain type using VFE_STRAINTYPE with a value of either VFE_LARGESTRAIN to enable large strain or VFE_SMALLSTRAIN to enable small strains. By default VFE_STRAINTYPE is set to VFE_SMALLSTRAIN.
The parameter VFE_2D sets the particular 2D approximation for the element. The choices include plane stress, VFE_PLANESTRESS, plane strain, VFE_PLANESTRAIN and axisymmetric, VFE_AXISYMMETRIC. By default VFE_2D is set to VFE_PLANESTRESS.
The parameter VFE_TEMPMATLAVG toggles the method for computing the temperature used for evaluating temperature dependent material properties. If enabled, the temperature used for temperature dependent material properties is the average of the element node point temperatures. If disabled, the temperature is isoparametrically interpolated from the node point temperatures at each element integration point. By default VFE_TEMPMATLAVG is set to SYS_ON.
vfe_Solid2DSetPropPtr - set pointer to element nodal properties
void vfe_Solid2DSetPropPtr (vfe_Solid2D *solid2d, Vint type, Vdouble *propptr)
solid2d Pointer to Solid2D object. type Type of element property =VFE_PROP_TEMPERATURE Temperatures =VFE_PROP_TEMPREF Reference temperatures =VFE_PROP_DEPTH Depth propptr Pointer to start of element nodal properties
None
vfe_Solid2DSetTopology - set element topology
void vfe_Solid2DSetTopology (vfe_Solid2D *solid2d, Vint shape, Vint maxi, Vint maxj)
solid2d Pointer to Solid2D object. shape The topological shape for the element =SYS_SHAPETRI Triangle =SYS_SHAPEQUAD Quadrilateral maxi The number of points along the i direction. If maxi = 0 then the linear Serendipity element form of the specified shape is assumed. maxj The number of points along the j direction. If maxj = 0 then a Serendipity finite element is assumed. If 2 <= maxj <= 4 and 2 <= maxi <= 4, then a Lagrange finite element is assumed. If maxi != 0 then maxj = 0 or maxj = maxi.
None
vfe_Solid2DDofMap - query element degree of freedom map
void vfe_Solid2DDofMap (vfe_Solid2D *solid2d, Vint analysistype, Vint loc[], Vint tag[])
solid2d Pointer to Solid2D object. analysistype The type of analysis =VFE_ANALYSIS_STRUCTURAL Structural analysis =VFE_ANALYSIS_THERMAL Thermal analysis
loc Vector of degree of freedom locations tag Vector of degree of freedom types
The location index is either a positive node index into the element connectivity indicating a nodal freedom or a zero value indicating an elemental degree of freedom. The tag indicates the type of the degree of freedom. Tag values are one of a set of enumerated types which indicate whether the degree of freedom is a translation, temperature, etc.
The length of the loc and tag vectors is equal to the number of element degrees of freedom. Use vfe_Solid2DNumDof to return the number of element degrees of freedom.
vfe_Solid2DNumDof - query number of element degrees of freedom
void vfe_Solid2DNumDof (vfe_Solid2D *solid2d, Vint analysistype, Vint *nedofs)
solid2d Pointer to Solid2D object. analysistype The type of analysis =VFE_ANALYSIS_STRUCTURAL Structural analysis =VFE_ANALYSIS_THERMAL Thermal analysis
nedofs Number of element degrees of freedom
vfe_Solid2DNumIntPnt - query number of element integration points
void vfe_Solid2DNumIntPnt (vfe_Solid2D *solid2d, Vint analysistype, Vint *nepnts)
solid2d Pointer to Solid2D object. analysistype The type of analysis =VFE_ANALYSIS_STRUCTURAL Structural analysis =VFE_ANALYSIS_THERMAL Thermal analysis
nepnts Number of element integration points
vfe_Solid2DShapeGrad - shape functions and gradients
void vfe_Solid2DShapeGrad (vfe_Solid2D *solid2d, Vdouble x[][3], Vint centflag, Vdouble h[], Vdouble phr[][2], Vdouble dj[], Vdouble phx[][3])
solid2d Pointer to Solid2D object. x Array of node locations. centflag Centroid flag =SYS_ON Centroid location only =SYS_OFF Element node locations
h Shape functions phr Gradient of shape function wrt. natural coordinates dj Determinant of Jacobian phx Gradient of shape function wrt. coordinates
vfe_Solid2DConcLoad - concentrated load vector
void vfe_Solid2DConcLoad (vfe_Solid2D *solid2d, Vdouble x[][3], Vint enttype, Vint no, Vint loadtype, Vdouble xc[3], Vdouble v[], Vdouble f[],
solid2d Pointer to Solid2D object. x Array of node locations. enttype Entity type on which load is applied =SYS_EDGE Element edge no Element edge number loadtype Concentrated load type =VFE_CONCLOAD_TRAC Concentrated force vector =VFE_CONCLOAD_PRES Concentrated force along normal direction xc Location of concentrated load v Concentrated load vector
f Degree of freedom vector of consistent loads.
The vector q contains three values if loadtype is VFE_CONCLOAD_TRAC, or a single value if loadtype is VFE_CONCLOAD_PRES. The output array of consistent degree of freedom loads, f, contains loads for all degrees of freedom in the element. The load is in units of force for both VFE_CONCLOAD_TRAC and VFE_CONCLOAD_PRES.
vfe_Solid2DDistLoad - distributed load vector
void vfe_Solid2DDistLoad (vfe_Solid2D *solid2d, Vdouble x[][3], Vint enttype, Vint no, Vint loadtype, Vdouble q[], Vdouble f[],
solid2d Pointer to Solid2D object. x Array of node locations. enttype Entity type on which load is applied =SYS_EDGE Element edge no Element edge number loadtype Distributed load type =VFE_DISTLOAD_TRAC Load directed along vector =VFE_DISTLOAD_PRES Load directed along inward normal to element edge =VFE_DISTLOAD_TANGFORCE Load directed along element edge q Vector of distributed load values
f Degree of freedom vector of consistent loads.
vfe_Solid2DElemLoad - body force vector
void vfe_Solid2DElemLoad (vfe_Solid2D *solid2d, Vdouble x[][3], Vdouble q[][3], Vdouble f[],
solid2d Pointer to Solid2D object. x Array of node locations. q Array of node accelerations
f Degree of freedom vector of consistent loads.
vfe_Solid2DGeomStiff - geometric stiffness matrix
void vfe_Solid2DGeomStiff (vfe_Solid2D *solid2d, Vdouble x[][3], Vdouble u[], Vdouble kg[])
solid2d Pointer to Solid2D object. x Array of node locations. u Degree of freedom vector of displacements
kg Degree of freedom geometric stiffness matrix
vfe_Solid2DInitHist - initialize material history
void vfe_Solid2DInitHist (vfe_Solid2D *solid2d)
solid2d Pointer to Solid2D object.
None
vfe_Solid2DMass - consistent mass matrix
void vfe_Solid2DMass (vfe_Solid2D *solid2d, Vdouble x[][3], Vdouble m[])
solid2d Pointer to Solid2D object. x Array of node locations.
m Degree of freedom consistent mass matrix
vfe_Solid2DMassDiag - diagonal mass matrix
void vfe_Solid2DMassDiag (vfe_Solid2D *solid2d, Vdouble x[][3], Vdouble md[])
solid2d Pointer to Solid2D object. x Array of node locations.
md Degree of freedom diagonal mass vector
vfe_Solid2DReact - reaction vector
void vfe_Solid2DReact (vfe_Solid2D *solid2d, Vdouble x[][3], Vdouble u[], Vdouble r[])
solid2d Pointer to Solid2D object. x Array of node locations. u Degree of freedom vector of displacements
r Degree of freedom reaction vector
vfe_Solid2DReactStiff - reaction vector, stiffness matrix
void vfe_Solid2DReactStiff (vfe_Solid2D *solid2d, Vdouble x[][3], Vdouble u[], Vdouble kflag, Vdouble r[], Vdouble k[])
solid2d Pointer to Solid2D object. x Array of node locations. u Degree of freedom vector of displacements kflag Flag to compute stiffness matrix, k =SYS_OFF Do not compute stiffness matrix =SYS_ON Compute and return stiffness matrix
r Degree of freedom reaction vector k Degree of freedom stiffness matrix
vfe_Solid2DStiff - linear stiffness matrix
void vfe_Solid2DStiff (vfe_Solid2D *solid2d, Vdouble x[][3], Vdouble kl[])
solid2d Pointer to Solid2D object. x Array of node locations.
kl Degree of freedom stiffness matrix
vfe_Solid2DStrsAdapt - stress based error analysis
void vfe_Solid2DStrsAdapt (vfe_Solid2D *solid2d, Vdouble x[][3], Vdouble u[], Vdouble strss[], Vdouble *setot, Vdouble *seerr, Vdouble *h, Vdouble *p, Vdouble *d)
solid2d Pointer to Solid2D object. x Array of node locations. u Degree of freedom vector of displacements strss Array of recovered nodal stresses
setot Total strain energy seerr Strain energy error h Characteristic length p Effective polynomial order d Dimension
vfe_Solid2DStrsStrn - stress and strain
void vfe_Solid2DStrsStrn (vfe_Solid2D *solid2d, Vdouble x[][3], Vdouble u[], Vdouble strs[], Vdouble strn[])
solid2d Pointer to Solid2D object. x Array of node locations. u Degree of freedom vector of displacements
strs Array of nodal stresses strn Array of nodal strains
vfe_Solid2DDistHeat - distributed heat loads
void vfe_Solid2DDistHeat (vfe_Solid2D *solid2d, Vdouble x[][3], Vint enttype, Vint no, Vdouble q[], Vdouble f[],
solid2d Pointer to Solid2D object. x Array of node locations. enttype Entity type on which load is applied =SYS_EDGE Element edge no Element edge number q Vector of distributed load values
f Degree of freedom vector of consistent loads.
vfe_Solid2DElemHeat - body heat generation
void vfe_Solid2DElemHeat (vfe_Solid2D *solid2d, Vdouble x[][3], Vdouble q[], Vdouble f[],
solid2d Pointer to Solid2D object. x Array of node locations. q Array of node heat fluxes
f Degree of freedom vector of consistent loads.
vfe_Solid2DCap - consistent capacitance matrix
void vfe_Solid2DCap (vfe_Solid2D *solid2d, Vdouble x[][3], Vdouble u[], Vdouble c[])
solid2d Pointer to Solid2D object. x Array of node locations. u Degree of freedom vector of temperatures
c Degree of freedom consistent capacitance matrix
vfe_Solid2DCapDiag - diagonal capacitance matrix
void vfe_Solid2DCapDiag (vfe_Solid2D *solid2d, Vdouble x[][3], Vdouble u[], Vdouble cd[])
solid2d Pointer to Solid2D object. x Array of node locations. u Degree of freedom vector of temperatures
cd Degree of freedom diagonal capacitance matrix
vfe_Solid2DCond - thermal conductance matrix
void vfe_Solid2DCond (vfe_Solid2D *solid2d, Vdouble x[][3], Vdouble kl[])
solid2d Pointer to Solid2D object. x Array of node locations.
kl Degree of freedom conductance matrix
vfe_Solid2DPower - thermal power vector
void vfe_Solid2DPower (vfe_Solid2D *solid2d, Vdouble x[][3], Vdouble u[], Vdouble r[])
solid2d Pointer to Solid2D object. x Array of node locations. u Degree of freedom vector of temperatures
r Degree of freedom power vector
vfe_Solid2DPowerCond - thermal power, conductance matrix
void vfe_Solid2DPowerCond (vfe_Solid2D *solid2d, Vdouble x[][3], Vdouble u[], Vdouble kflag, Vdouble r[], Vdouble k[])
solid2d Pointer to Solid2D object. x Array of node locations. u Degree of freedom vector of temperatures kflag Flag to compute conductance matrix, k =SYS_OFF Do not compute conductance matrix =SYS_ON Compute and return conductance matrix
r Degree of freedom power vector k Degree of freedom conductance matrix
vfe_Solid2DHFlxAdapt - heat flux based error analysis
void vfe_Solid2DHFlxTGrd (vfe_Solid2D *solid2d, Vdouble x[][3], Vdouble u[], Vdouble hflxs[], Vdouble *hetot, Vdouble *heerr, Vdouble *h, Vdouble *p, Vdouble *d)
solid2d Pointer to Solid2D object. x Array of node locations. u Degree of freedom vector of temperatures hflxs Array of recovered nodal heat flux
hetot Total heat energy heerr Heat energy error h Characteristic length p Effective polynomial order d Dimension
vfe_Solid2DHFlxTGrd - Heat flux and thermal gradient
void vfe_Solid2DHFlxTGrd (vfe_Solid2D *solid2d, Vdouble x[][3], Vdouble u[], Vdouble hflx[], Vdouble tgrd[])
solid2d Pointer to Solid2D object. x Array of node locations. u Degree of freedom vector of temperatures
hflx Array of nodal heat fluxes tgrd Array of nodal temperature gradients
The methods associated with a Solid3D object are the following.
*vfe_Solid3DBegin - create an instance of a Solid3D object vfe_Solid3DEnd - destroy an instance of a Solid3D object vfe_Solid3DError - return Solid3D object error flag
vfe_Solid3DSetHistPtr - set pointers to material history vfe_Solid3DSetMatlSystem - set material axes direction vfe_Solid3DSetObject - set attribute object vfe_Solid3DSetParami - set element formulation parameters vfe_Solid3DSetPropPtr - set pointer to element nodal properties vfe_Solid3DSetTopology - set input element topology
vfe_Solid3DDofMap - query element degree of freedom map vfe_Solid3DNumDof - query number of element degrees of freedom vfe_Solid3DNumIntPnt - query number of element integration points
vfe_Solid3DShapeGrad - shape functions and gradients
vfe_Solid3DBMatrix - B(beta) matrix vfe_Solid3DConcLoad - concentrated load vector vfe_Solid3DDistLoad - distributed load vector. vfe_Solid3DElemLoad - body force vector vfe_Solid3DGeomStiff - geometric stiffness matrix vfe_Solid3DInitHist - initialize material history vfe_Solid3DMass - consistent mass matrix vfe_Solid3DMassDiag - diagonal mass matrix vfe_Solid3DReact - reaction vector vfe_Solid3DReactStiff - reaction vector, stiffness matrix vfe_Solid3DStiff - linear stiffness matrix vfe_Solid3DStrsAdapt - stress based error analysis vfe_Solid3DStrsStrn - stress and strain
vfe_Solid3DDistHeat - distributed heat loads. vfe_Solid3DElemHeat - body heat generation vfe_Solid3DCap - consistent capacitance matrix vfe_Solid3DCapDiag - diagonal capacitance matrix vfe_Solid3DPower - thermal power vfe_Solid3DPowerCond - thermal power, conductance matrix vfe_Solid3DCond - conductance matrix vfe_Solid3DHFlxAdapt - heat flux based error analysis vfe_Solid3DHFlxTGrd - heat flux and temperature gradient
Use the function vfe_Solid3DStrsAdapt to aid in computing element strain energy, strain energy error and other useful quantities to aid in solution error estimation and mesh adaptation. The function vfe_Solid3DHFlxAdapt performs a similar computation for heat transfer analysis.
The element technology to be used is set using the function vfe_Solid3DSetParami with type VFE_TECH. Standard fully integrated, VFE_TECH_ISOP, and underintegrated, VFE_TECH_URED exist for all elements. The default technology is VFE_TECH_ISOP which will work in all cases. However for some element types, alternative technologies should be considered for improved performance. The recommended technology varies with element topology and order and is listed below. The number of integration points used for fully integrated technologies appears in paraenthesis. Underintegrated technologies use a single integration point for the linear element forms and for the higher order element forms use the fully integrated rule for the one-less order.
*vfe_Solid3DBegin - create an instance of a Solid3D object
vfe_Solid3D *vfe_Solid3DBegin ()
None
Destroy an instance of a Solid3D object using
void vfe_Solid3DEnd (vfe_Solid3D *solid3d)
Return the current value of a Solid3D object error flag using
Vint vfe_Solid3DError (vfe_Solid3D *solid3d)
vfe_Solid3DSetHistPtr - set pointers to material history
void vfe_Solid3DSetHistPtr (vfe_Solid3D *solid3d, Vdouble *oldhist, Vdouble *newhist)
solid3d Pointer to Solid3D object. oldhist Pointer to start of material history at previous step newhist Pointer to start of material history at current step
None
vfe_Solid3DSetMatlSystem - set material axes direction
void vfe_Solid3DSetMatlSystem (vfe_Solid3D *solid3d, Vint type, Vdouble vec[], Vdouble angle)
solid3d Pointer to Solid3D object. type Material system convention vec Orientation vector data angle Angle to rotate material x',y' axes about the z' axis in degrees.
None
For a description of element coordinate systems, type, and associated
orientation vector data, please see
1.4 Element Coordinate Systems
vfe_Solid3DSetObject - set attribute object
void vfe_Solid3DSetObject (vfe_Solid3D *solid3d, Vint objecttype, Vobject *object)
solid3d Pointer to Solid3D object. objecttype The object type identifier =VFE_MATLFUN MatlFun object object Pointer to the object to be set.
None
vfe_Solid3DSetParami - set element formulation parameters
void vfe_Solid3DSetParami (vfe_Solid3D *solid3d, Vint type, Vint iparam)
solid3d Pointer to Solid3D object. type Type of formulation parameter to set =VFE_TECH Element technology =VFE_CHECKTOTALVOL Total Jacobian checking =VFE_TEMPMATLAVE Average material temperature flag =VFE_STRAINTYPE Element strain type iparam Integer parameter value. =SYS_ON Enable =SYS_OFF Disable =VFE_TECH_ISOP Standard isoparametric technology =VFE_TECH_URED Uniform reduced technology =VFE_TECH_MIXED Mixed technology =VFE_TECH_ENHANCED Enhanced technology =VFE_SMALLSTRAIN Small strain =VFE_LARGESTRAIN Large strain
None
The parameter VFE_CHECKTOTALVOL toggles of Jacobian checking performed during element volume integrations. If this parameter is not enabled, then an error is generated if the Jacobian contribution of any integration point is non-positive. If this parameter is enabled then an error is generated only if the total Jacobian contribution over all integration points is non-positive. By default VFE_CHECKTOTALVOL is set to SYS_OFF.
Set element strain type using VFE_STRAINTYPE with a value of either VFE_LARGESTRAIN to enable large strain or VFE_SMALLSTRAIN to enable small strains. By default VFE_STRAINTYPE is set to VFE_SMALLSTRAIN.
The parameter VFE_TEMPMATLAVG toggles the method for computing the temperature used for evaluating temperature dependent material properties. If enabled, the temperature used for temperature dependent material properties is the average of the element node point temperatures. If disabled, the temperature is isoparametrically interpolated from the node point temperatures at each element integration point. By default VFE_TEMPMATLAVG is set to SYS_ON.
vfe_Solid3DSetPropPtr - set pointer to element nodal properties
void vfe_Solid3DSetPropPtr (vfe_Solid3D *solid3d, Vint type, Vdouble *propptr)
solid3d Pointer to Solid3D object. type Type of element property =VFE_PROP_TEMPERATURE Temperatures =VFE_PROP_TEMPREF Reference temperatures =VFE_PROP_VOLFACT Volume scale factor propptr Pointer to start of element nodal properties
None
vfe_Solid3DSetTopology - set element topology
void vfe_Solid3DSetTopology (vfe_Solid3D *solid3d, Vint shape, Vint maxi, Vint maxj, Vint maxk)
solid3d Pointer to Solid3D object. shape The topological shape for the element =VIS_SHAPETET Tetrahedron =VIS_SHAPEPYR Pyramid =VIS_SHAPEWED Wedge =VIS_SHAPEHEX Hexahedron maxi The number of points along the i direction. If maxi = 0 then the linear Serendipity element form of the specified shape is assumed. maxj The number of points along the j direction. If maxj = 0 then a Serendipity finite element is assumed. If 2 <= maxj <= 4 and 2 <= maxi <= 4, then a Lagrange finite element is assumed. If maxi != 0 then maxj = 0 or maxj = maxi. maxk The number of points along the k direction. Currently maxk must be equal to maxj.
None
vfe_Solid3DDofMap - query element degree of freedom map
void vfe_Solid3DDofMap (vfe_Solid3D *solid3d, Vint analysistype, Vint loc[], Vint tag[])
solid3d Pointer to Solid3D object. analysistype The type of analysis =VFE_ANALYSIS_STRUCTURAL Structural analysis =VFE_ANALYSIS_THERMAL Thermal analysis
loc Vector of degree of freedom locations tag Vector of degree of freedom types
The location index is either a positive node index into the element connectivity indicating a nodal freedom or a zero value indicating an elemental degree of freedom. The tag indicates the type of the degree of freedom. Tag values are one of a set of enumerated types which indicate whether the degree of freedom is a translation, temperature, etc.
The length of the loc and tag vectors is equal to the number of element degrees of freedom. Use vfe_Solid3DNumDof to return the number of element degrees of freedom.
vfe_Solid3DNumDof - query number of element degrees of freedom
void vfe_Solid3DNumDof (vfe_Solid3D *solid3d, Vint analysistype, Vint *nedofs)
solid3d Pointer to Solid3D object. analysistype The type of analysis =VFE_ANALYSIS_STRUCTURAL Structural analysis =VFE_ANALYSIS_THERMAL Thermal analysis
nedofs Number of element degrees of freedom
vfe_Solid3DNumIntPnt - query number of element integration points
void vfe_Solid3DNumIntPnt (vfe_Solid3D *solid3d, Vint analysistype, Vint *nepnts)
solid3d Pointer to Solid3D object. analysistype The type of analysis =VFE_ANALYSIS_STRUCTURAL Structural analysis =VFE_ANALYSIS_THERMAL Thermal analysis
nepnts Number of element integration points
vfe_Solid3DShapeGrad - shape functions and gradients
void vfe_Solid3DShapeGrad (vfe_Solid3D *solid3d, Vdouble x[][3], Vint centflag, Vdouble h[], Vdouble phr[][3], Vdouble dj[], Vdouble phx[][3])
solid3d Pointer to Solid3D object. x Array of node locations. centflag Centroid flag =SYS_ON Centroid location only =SYS_OFF Element node locations
h Shape functions phr Gradient of shape function wrt. natural coordinates dj Determinant of Jacobian phx Gradient of shape function wrt. coordinates
The strain-displacement matrix for 3D isoparametric solid elements (B-Matrix) relates the 3D strain measures to the nodal displacements. For a 3D element defined by N nodes, the displacements are given by shape functions h_i(r,s,t), with 1=1,M, as follows:
| ux | | ux_i | | uy | = SUM_(i=1,N) h_i(r,s,t) * | uy_i | | uz | | uz_i |where ux_i, uy_i, and uz_i are the components of the nodal displacement vector.ui.
The 3D strains E are given by
| e_xx | | ux,x | | h_i,x 0 0 | | e_yy | | uy,y | | 0 h_i,y 0 | | ux_i | E = | e_zz | = | uz,z | = SUM_(i=1,N) | 0 0 h_i,z | * | uy_i | | g_xy | | ux,y + uy,x | | h_i,y h_i,x 0 | | uz_i | | g_yz | | uy,z + uz,y | | 0 h_i,z h_i,y | | g_zx | | uz,x + ux,z | | h_i,z 0 h_i,x |We rewrite the above equations as
E = SUM_(i=1,N) B_i * U_iwhere
| h_i,x 0 0 | | 0 h_i,y 0 | B_i = | 0 0 h_i,z | | h_i,y h_i,x 0 | | 0 h_i,z h_i,y | | h_i,z 0 h_i,x |The resulting B-Matrix is given by
B = | B_1 B_2 ... B_N |
vfe_Solid3DBMatrix - B(beta) matrix
void vfe_Solid3DBMatrix (vfe_Solid3D *solid3d, Vdouble x[][3], Vint *nipt, Vdouble rst[][3], Vdouble h[], Vdouble phr[][3], Vdouble phx[][3], Vdouble w[], Vdouble dj[], Vdouble tm[][3][3], Vdouble dm[][21], Vdouble b[][6])
solid3d Pointer to Solid3D object. x Array of node locations.
nipt Number of integration points rst Natural coordinates (r,s,t) at integration points h Nodal shape functions at integration points phr Gradient of h w.r.t. natural coordinates at integration points phx Gradient of h w.r.t. global coordinates at integration points w Weights at integration points dj Determinant of Jacobian matrix at integration points tm Material coordinate system at integration points dm Material matrix at integration points b B(beta) matrix relating element dofs to strains
This function also returns the number of integration points needed to form the element stiffness matrix, nipt; the (r,s,t) natural coordinates of the element at the integration points; the nodal shape functions at each integration point in the order h_(i1,n1), h_(i1,n2), ... , h_(i1,nen), h_(i2,n1), h_(i2,n2), ... h_(nipt,nen) where i1, i2, ..., nipt are integration point numbers, and n1, n2, ... , nen are node numbers; the gradient phr of the shape functions h with respect to the natural coordinates (r,s,t); the gradient phx of the shape functions h with respect to the global coordinates (x,y,z); the integration point weights w at each integration point; the determinant of the Jacobian transformation d(x,y,z)/d(r,s,t); the orthogonal material matrices tm at each integration point; the material matrix dm at each integration point, where the 21 entries refer to the lower triangle of the 6x6 matrix relating the strains to the stresses; and the B(beta) matrix at each integration point relating the strains to the element degrees of freedom. The rows of B are defined for all element degrees of freedom for the first integration point, followed by the values at the second integration point, etc.
vfe_Solid3DConcLoad - concentrated load vector
void vfe_Solid3DConcLoad (vfe_Solid3D *solid3d, Vdouble x[][3], Vint enttype, Vint no, Vint loadtype, Vdouble xc[3], Vdouble v[], Vdouble f[],
solid3d Pointer to Solid3D object. x Array of node locations. enttype Entity type on which load is applied =SYS_FACE Element face no Element face number loadtype Concentrated load type =VFE_CONCLOAD_TRAC Concentrated force vector =VFE_CONCLOAD_PRES Concentrated force along normal direction xc Location of concentrated load v Concentrated load vector
f Degree of freedom vector of consistent loads.
The vector q contains three values if loadtype is VFE_CONCLOAD_TRAC, or a single value if loadtype is VFE_CONCLOAD_PRES. The output array of consistent degree of freedom loads, f, contains loads for all degrees of freedom in the element. The load is in units of force for both VFE_CONCLOAD_TRAC and VFE_CONCLOAD_PRES.
vfe_Solid3DDistLoad - distributed load vector
void vfe_Solid3DDistLoad (vfe_Solid3D *solid3d, Vdouble x[][3], Vint enttype, Vint no, Vint loadtype, Vdouble q[], Vdouble f[],
solid3d Pointer to Solid3D object. x Array of node locations. enttype Entity type on which load is applied =SYS_EDGE Element edge =SYS_FACE Element face no Element face number loadtype Distributed load type =VFE_DISTLOAD_TRAC Load directed along vector =VFE_DISTLOAD_PRES Load directed along inward normal to element face =VFE_DISTLOAD_TANGFORCE Load directed along element edge q Vector of distributed load values
f Degree of freedom vector of consistent loads.
Note that the input array of node locations, x, contains the coordinate locations for all nodes in the element - not just on the face of interest. Correspondingly the output array of consistent degree of freedom loads, f, contains loads for all degrees of freedom in the element.
vfe_Solid3DElemLoad - body force vector
void vfe_Solid3DElemLoad (vfe_Solid3D *solid3d, Vdouble x[][3], Vdouble q[][3], Vdouble f[],
solid3d Pointer to Solid3D object. x Array of node locations. q Array of node accelerations
f Degree of freedom vector of consistent loads.
vfe_Solid3DGeomStiff - geometric stiffness matrix
void vfe_Solid3DGeomStiff (vfe_Solid3D *solid3d, Vdouble x[][3], Vdouble u[], Vdouble kg[])
solid3d Pointer to Solid3D object. x Array of node locations. u Degree of freedom vector of displacements
kg Degree of freedom geometric stiffness matrix
vfe_Solid3DInitHist - initialize material history
void vfe_Solid3DInitHist (vfe_Solid3D *solid3d)
solid3d Pointer to Solid3D object.
None
vfe_Solid3DMass - consistent mass matrix
void vfe_Solid3DMass (vfe_Solid3D *solid3d, Vdouble x[][3], Vdouble m[])
solid3d Pointer to Solid3D object. x Array of node locations.
m Degree of freedom consistent mass matrix
vfe_Solid3DMassDiag - diagonal mass matrix
void vfe_Solid3DMassDiag (vfe_Solid3D *solid3d, Vdouble x[][3], Vdouble md[])
solid3d Pointer to Solid3D object. x Array of node locations.
md Degree of freedom diagonal mass vector
vfe_Solid3DReact - reaction vector
void vfe_Solid3DReact (vfe_Solid3D *solid3d, Vdouble x[][3], Vdouble u[], Vdouble r[])
solid3d Pointer to Solid3D object. x Array of node locations. u Degree of freedom vector of displacements
r Degree of freedom reaction vector
vfe_Solid3DReactStiff - reaction vector, stiffness matrix
void vfe_Solid3DReactStiff (vfe_Solid3D *solid3d, Vdouble x[][3], Vdouble u[], Vdouble kflag, Vdouble r[], Vdouble k[])
solid3d Pointer to Solid3D object. x Array of node locations. u Degree of freedom vector of displacements kflag Flag to compute stiffness matrix, k =SYS_OFF Do not compute stiffness matrix =SYS_ON Compute and return stiffness matrix
r Degree of freedom reaction vector k Degree of freedom stiffness matrix
vfe_Solid3DStiff - linear stiffness matrix
void vfe_Solid3DStiff (vfe_Solid3D *solid3d, Vdouble x[][3], Vdouble kl[])
solid3d Pointer to Solid3D object. x Array of node locations.
kl Degree of freedom stiffness matrix
vfe_Solid3DStrsAdapt - stress based error analysis
void vfe_Solid3DStrsAdapt (vfe_Solid3D *solid3d, Vdouble x[][3], Vdouble u[], Vdouble strss[], Vdouble *setot, Vdouble *seerr, Vdouble *h, Vdouble *p, Vdouble *d)
solid3d Pointer to Solid3D object. x Array of node locations. u Degree of freedom vector of displacements strss Array of recovered nodal stresses
setot Total strain energy seerr Strain energy error h Characteristic length p Effective polynomial order d Dimension
vfe_Solid3DStrsStrn - stress and strain
void vfe_Solid3DStrsStrn (vfe_Solid3D *solid3d, Vdouble x[][3], Vdouble u[], Vdouble strs[], Vdouble strn[])
solid3d Pointer to Solid3D object. x Array of node locations. u Degree of freedom vector of displacements
strs Array of nodal stresses strn Array of nodal strains
vfe_Solid3DDistHeat - distributed heat loads
void vfe_Solid3DDistHeat (vfe_Solid3D *solid3d, Vdouble x[][3], Vint enttype, Vint no, Vdouble q[], Vdouble f[],
solid3d Pointer to Solid3D object. x Array of node locations. enttype Entity type on which load is applied =SYS_FACE Element face no Element face number q Vector of distributed load values
f Degree of freedom vector of consistent loads.
vfe_Solid3DElemHeat - body heat generation
void vfe_Solid3DElemHeat (vfe_Solid3D *solid3d, Vdouble x[][3], Vdouble q[], Vdouble f[],
solid3d Pointer to Solid3D object. x Array of node locations. q Array of node heat fluxes
f Degree of freedom vector of consistent loads.
vfe_Solid3DCap - consistent capacitance matrix
void vfe_Solid3DCap (vfe_Solid3D *solid3d, Vdouble x[][3], Vdouble u[], Vdouble c[])
solid3d Pointer to Solid3D object. x Array of node locations. u Degree of freedom vector of temperatures
c Degree of freedom consistent capacitance matrix
vfe_Solid3DCapDiag - diagonal capacitance matrix
void vfe_Solid3DCapDiag (vfe_Solid3D *solid3d, Vdouble x[][3], Vdouble u[], Vdouble cd[])
solid3d Pointer to Solid3D object. x Array of node locations. u Degree of freedom vector of temperatures
cd Degree of freedom diagonal capacitance matrix
vfe_Solid3DCond - thermal conductance matrix
void vfe_Solid3DCond (vfe_Solid3D *solid3d, Vdouble x[][3], Vdouble kl[])
solid3d Pointer to Solid3D object. x Array of node locations.
kl Degree of freedom conductance matrix
vfe_Solid3DPower - thermal power vector
void vfe_Solid3DPower (vfe_Solid3D *solid3d, Vdouble x[][3], Vdouble u[], Vdouble r[])
solid3d Pointer to Solid3D object. x Array of node locations. u Degree of freedom vector of temperatures
r Degree of freedom power vector
vfe_Solid3DPowerCond - thermal power, conductance matrix
void vfe_Solid3DPowerCond (vfe_Solid3D *solid3d, Vdouble x[][3], Vdouble u[], Vdouble kflag, Vdouble r[], Vdouble k[])
solid3d Pointer to Solid3D object. x Array of node locations. u Degree of freedom vector of temperatures kflag Flag to compute conductance matrix, k =SYS_OFF Do not compute conductance matrix =SYS_ON Compute and return conductance matrix
r Degree of freedom power vector k Degree of freedom conductance matrix
vfe_Solid3DHFlxAdapt - heat flux based error analysis
void vfe_Solid3DHFlxTGrd (vfe_Solid3D *solid3d, Vdouble x[][3], Vdouble u[], Vdouble hflxs[], Vdouble *hetot, Vdouble *heerr, Vdouble *h, Vdouble *p, Vdouble *d)
solid3d Pointer to Solid3D object. x Array of node locations. u Degree of freedom vector of temperatures hflxs Array of recovered nodal heat flux
hetot Total heat energy heerr Heat energy error h Characteristic length p Effective polynomial order d Dimension
vfe_Solid3DHFlxTGrd - Heat flux and thermal gradient
void vfe_Solid3DHFlxTGrd (vfe_Solid3D *solid3d, Vdouble x[][3], Vdouble u[], Vdouble hflx[], Vdouble tgrd[])
solid3d Pointer to Solid3D object. x Array of node locations. u Degree of freedom vector of temperatures
hflx Array of nodal heat fluxes tgrd Array of nodal temperature gradients