Membrane elements are used to represent thin surfaces which have no bending stiffness, only stiffness in the plane of the surface is retained. Use the Mem3D module to model membranes for 3D analysis.
All symmetric shell resultants are given in the order Nxx, Nzz, Nxz, Mxx, Mzz. Mxz. Qxy. Qzy. Note that in plane strain, the ezz, gxz and kzz, kxz and gzy components of strain are identically zero, while the Nxz and Mxx, Mxz and Qzy components of stress are zero. In plane stress, the gxz and kzz, kxz and gzy components of strain are identically zero, while the Nzz, Nxz and Mxx, Mxz and Qzy components of stress are zero.
2D Shell elements are one-dimensional elements in 2D space which support in-plane deformation, bending and tranverse shear through the thickness of the shell. The stress normal to the shell surface is assumed to be zero. The methods associated with a Shell2D object are the following.
*vfe_Shell2DBegin - create an instance of a Shell2D object vfe_Shell2DEnd - destroy an instance of a Shell2D object vfe_Shell2DError - return Shell2D object error flag
vfe_Shell2DSetHistPtr - set pointers to material history vfe_Shell2DSetObject - set attribute object vfe_Shell2DSetParamd - set element formulation parameters vfe_Shell2DSetParami - set element formulation parameters vfe_Shell2DSetPropPtr - set pointer to element nodal properties vfe_Shell2DSetTopology - set input element topology
vfe_Shell2DDofMap - query element degree of freedom map vfe_Shell2DNumDof - query number of element degrees of freedom vfe_Shell2DNumIntPnt - query number of element integration points
vfe_Shell2DConcLoad - concentrated load vector vfe_Shell2DDirCos - compute shell local direction cosines vfe_Shell2DDistLoad - distributed load vector. vfe_Shell2DElemLoad - body force vector vfe_Shell2DGeomStiff - geometric stiffness matrix vfe_Shell2DInitHist - initialize material history vfe_Shell2DMass - consistent mass matrix vfe_Shell2DMassDiag - diagonal mass matrix vfe_Shell2DReact - reaction vector vfe_Shell2DReactStiff - reaction vector, stiffness matrix vfe_Shell2DStiff - linear stiffness matrix vfe_Shell2DStrsAdapt - stress based error analysis vfe_Shell2DStrsStrn - resultant stress and strain/curvature vfe_Shell2DStressStrain - three-dimensional stress and strain
If the node offsets are zero, the shell midsurface is coincident with the shell reference surface. In general, large midsurface offset values, which are much greater than the shell thickness, should be avoided. By default the shell node normals are computed to be normal to the shell reference surface. The user may optionally enter node normals to achieve a "miter" joint between adjacent shell elements. Shell thickness and offset are always measured in the direction of the normal to the shell reference surface regardless of the direction of the shell node normals. The element natural coordinate, r, lies on the shell midsurface with the positive direction in the direction of the element connectivity. The element local coordinate system for stress and material orientation is the local x' axis along the element local r direction and the local z'. direction along the global z axis. The local y' axis is normal to the shell reference surface. The local axes form a right handed orthogonal system.
The element technology to be used is set using the function vfe_Shell2DSetParami with type VFE_TECH. Standard fully integrated, VFE_TECH_ISOP, formulations exist for all orders. The default technology is VFE_TECH_ISOP.
Note that when using the general integrated shell wall defined by vfe_ShellPropSetIntegrate, the actual distance of the shell wall integration point from the midsurface is computed internally by multiplying the integration point coordinates input in vfe_ShellPropSetIntegrate by one-half of the thickness specified using vfe_Shell2DSetPropPtr. Therefore, if the actual shell thickness is specified using vfe_Shell2DSetPropPtr, the shell wall integration point coordinates input in vfe_ShellPropSetIntegrate should be in the range [-1.,1.] from the bottom to the top shell surface, with the coordinate 0. lying on the midsurface.
Use the function vfe_Shell2DStrsAdapt to aid in computing element strain energy, strain energy error and other useful quantities to aid in solution error estimation and mesh adaptation.
*vfe_Shell2DBegin - create an instance of a Shell2D object
vfe_Shell2D *vfe_Shell2DBegin ()
None
Destroy an instance of a Shell2D object using
void vfe_Shell2DEnd (vfe_Shell2D *shell2d)
Return the current value of a Shell2D object error flag using
Vint vfe_Shell2DError (vfe_Shell2D *shell2d)
vfe_Shell2DSetHistPtr - set pointers to material history
void vfe_Shell2DSetHistPtr (vfe_Shell2D *shell2d, Vdouble *oldhist, Vdouble *newhist)
shell2d Pointer to Shell2D object. oldhist Pointer to start of material history at previous step newhist Pointer to start of material history at current step
None
vfe_Shell2DSetObject - set attribute object
void vfe_Shell2DSetObject (vfe_Shell2D *shell2d, Vint objecttype, Vobject *object)
shell2d Pointer to Shell2D object. objecttype The object type identifier =VFE_MATLFUN MatlFun object object Pointer to the object to be set.
None
vfe_Shell2DSetParamd - set element formulation parameters
void vfe_Shell2DSetParamd (vfe_Shell2D *shell2d, Vint type, Vdouble dparam)
shell2d Pointer to Shell2D object. type Type of formulation parameter to set =VFE_MAXPROJANG Maximum nodal projection angle =VFE_ADDEDMASS Additional mass/area dparam Double precision parameter value.
None
Use VFE_MAXPROJANG to set the maximum angle in degrees between the shell normal at an element integration point and the shell normal at a node. By default VFE_MAXPROJANG is set to 90. degrees.
Use VFE_ADDEDMASS to add non-structural mass/area to the shell element. By default VFE_ADDEDMASS is set to 0..
vfe_Shell2DSetParami - set element formulation parameters
void vfe_Shell2DSetParami (vfe_Shell2D *shell2d, Vint type, Vint iparam)
shell2d Pointer to Shell2D object. type Type of formulation parameter to set =VFE_TECH Element technology =VFE_LARGEROTATION Toggle for large rotations =VFE_ROTINERTIA Enable rotary inertias =VFE_TEMPMATLAVE Average material temperature flag =VFE_2D 2D Approximation =VFE_CHECKCORNNORM Corner normal checking iparam Integer parameter value. =VFE_TECH_ISOP Standard isoparametric technology =VFE_TECH_KIRCHHOFF Kirchhoff technology =VFE_AXISYMMETRIC 2D axisymmetric =VFE_PLANESTRAIN 2D plane strain =VFE_PLANESTRESS 2D plane stress =SYS_OFF Disable =SYS_ON Enable
None
The basic element technology is set with the VFE_TECH parameter. By default VFE_TECH is set to VFE_TECH_ISOP.
Toggle large rotations using VFE_LARGEROTATION. By default VFE_LARGEROTATION is set to SYS_OFF.
The addition of rotary inertias to the element mass matrix is set with the VFE_ROTINERTIA parameter. By default VFE_ROTINERTIA is set to SYS_OFF.
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.
The parameter VFE_CHECKCORNNORM toggles a comparison between computed normals at integration points in shells and a computed normal interpolated from corner node values. If this parameter is enabled then the dot product of these two normals is computed and, if negative, an error is flagged. By default VFE_CHECKCORNNORM is set to SYS_ON.
vfe_Shell2DSetPropPtr - set pointer to element nodal properties
void vfe_Shell2DSetPropPtr (vfe_Shell2D *shell2d, Vint type, Vdouble *propptr)
shell2d Pointer to Shell2D object. type Type of element property =VFE_PROP_TEMPERATURE Temperatures =VFE_PROP_TEMPREF Reference temperatures =VFE_PROP_THICKNESS Thicknesses =VFE_PROP_NORMAL Normals =VFE_PROP_OFFSET Offsets =VFE_PROP_KS Effective shear factor propptr Pointer to start of element nodal properties
None
vfe_Shell2DSetTopology - set element topology
void vfe_Shell2DSetTopology (vfe_Shell2D *shell2d, Vint maxi)
maxi The number of points along the i direction. If maxi = 0 then the linear Serendipity element form is assumed.
None
vfe_Shell2DDofMap - query element degree of freedom map
void vfe_Shell2DDofMap (vfe_Shell2D *shell2d, Vint analysistype, Vint loc[], Vint tag[])
shell2d Pointer to Shell2D object. analysistype The type of analysis =VFE_ANALYSIS_STRUCTURAL Structural 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, rotation, temperature, etc.
The length of the loc and tag vectors is equal to the number of element degrees of freedom. Use vfe_Shell2DNumDof to return the number of element degrees of freedom.
vfe_Shell2DNumDof - query number of element degrees of freedom
void vfe_Shell2DNumDof (vfe_Shell2D *shell2d, Vint analysistype, Vint *nedofs)
shell2d Pointer to Shell2D object. analysistype The type of analysis =VFE_ANALYSIS_STRUCTURAL Structural analysis
nedofs Number of element degrees of freedom
vfe_Shell2DNumIntPnt - query number of element integration points
void vfe_Shell2DNumIntPnt (vfe_Shell2D *shell2d, Vint analysistype, Vint *nepnts)
shell2d Pointer to Shell2D object. analysistype The type of analysis =VFE_ANALYSIS_STRUCTURAL Structural analysis
nepnts Number of element integration points
vfe_Shell2DConcLoad - concentrated load vector
void vfe_Shell2DConcLoad (vfe_Shell2D *shell2d, Vdouble x[][3], Vint enttype, Vint no, Vint loadtype, Vdouble xc[3], Vdouble v[], Vdouble f[],
shell2d Pointer to Shell2D object. x Array of node locations. enttype Entity type on which load is applied =SYS_EDGE Element edge no Element edge number (ignored) 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_Shell2DDirCos - compute shell local direction cosines
void vfe_Shell2DDirCos (vfe_Shell2D *shell2d, Vdouble x[][3], Vdouble u[], Vdouble tm[][3][3])
shell2d Pointer to Shell2D object. x Array of point locations defining shell surface. u Degree of freedom vector of displacements
tm Array of direction cosine matrices at the shell nodes.
tm[0][0] = X'x tm[0][1] = X'y tm[0][2] = X'z tm[1][0] = Y'x tm[1][1] = Y'y tm[1][2] = Y'z tm[2][0] = Z'x tm[2][1] = Z'y tm[2][2] = Z'z
The element degrees of freedom, u, are only required if large rotations have been enabled. Otherwise this argument is ignored.
vfe_Shell2DDistLoad - distributed load vector
void vfe_Shell2DDistLoad (vfe_Shell2D *shell2d, Vdouble x[][3], Vint enttype, Vint no, Vint loadtype, Vdouble q[], Vdouble f[],
shell2d Pointer to Shell2D 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 face 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 edge of interest. Correspondingly the output array of consistent degree of freedom loads, f, contains loads for all degrees of freedom in the element.
vfe_Shell2DElemLoad - body force vector
void vfe_Shell2DElemLoad (vfe_Shell2D *shell2d, Vdouble x[][3], Vdouble q[][3], Vdouble f[],
shell2d Pointer to Shell2D object. x Array of node locations. q Array of node accelerations
f Degree of freedom vector of consistent loads.
vfe_Shell2DGeomStiff - geometric stiffness matrix
void vfe_Shell2DGeomStiff (vfe_Shell2D *shell2d, Vdouble x[][3], Vdouble u[], Vdouble kg[])
shell2d Pointer to Shell2D object. x Array of node locations. u Degree of freedom vector of displacements
kg Degree of freedom geometric stiffness matrix
vfe_Shell2DInitHist - initialize material history
void vfe_Shell2DInitHist (vfe_Shell2D *shell2d)
shell2d Pointer to Shell2D object.
None
vfe_Shell2DMass - consistent mass matrix
void vfe_Shell2DMass (vfe_Shell2D *shell2d, Vdouble x[][3], Vdouble m[])
shell2d Pointer to Shell2D object. x Array of node locations.
m Degree of freedom consistent mass matrix
vfe_Shell2DMassDiag - diagonal mass matrix
void vfe_Shell2DMassDiag (vfe_Shell2D *shell2d, Vdouble x[][3], Vdouble md[])
shell2d Pointer to Shell2D object. x Array of node locations.
md Degree of freedom diagonal mass vector
vfe_Shell2DReact - reaction vector
void vfe_Shell2DReact (vfe_Shell2D *shell2d, Vdouble x[][3], Vdouble u[], Vdouble r[])
shell2d Pointer to Shell2D object. x Array of node locations. u Degree of freedom vector of displacements
r Degree of freedom reaction vector
vfe_Shell2DReactStiff - reaction vector, stiffness matrix
void vfe_Shell2DReactStiff (vfe_Shell2D *shell2d, Vdouble x[][3], Vdouble u[], Vdouble kflag, Vdouble r[], Vdouble k[])
shell2d Pointer to Shell2D 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_Shell2DStiff - linear stiffness matrix
void vfe_Shell2DStiff (vfe_Shell2D *shell2d, Vdouble x[][3], Vdouble kl[])
shell2d Pointer to Shell2D object. x Array of node locations.
kl Degree of freedom stiffness matrix
vfe_Shell2DStrsAdapt - stress based error analysis
void vfe_Shell2DStrsAdapt (vfe_Shell2D *shell2d, Vdouble x[][3], Vdouble u[], Vdouble strss[], Vdouble *setot, Vdouble *seerr, Vdouble *h, Vdouble *p, Vdouble *d)
shell2d Pointer to Shell2D 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_Shell2DStrsStrn - resultant stress and strain/curvature
void vfe_Shell2DStrsStrn (vfe_Shell2D *shell2d, Vdouble x[][3], Vdouble u[], Vdouble strs[], Vdouble strn[])
shell2d Pointer to Shell2D object. x Array of node locations. u Degree of freedom vector of displacements
strs Array of nodal stresses strn Array of nodal strains
The stresses and strains are computed in the shell local coordinate system. The actual direction cosine matrices of the shell local systems at the element output locations may be returned using vfe_Shell2DDirCos.
The strs is composed of 8 stress resultants and the strn is composed of 8 associated midsurface strains and curvatures at each output location. The stress and strain values are ordered first by the 8 stress resultant or strain components followed by the the number of element nodes. For example, for a 3 node shell element a total of 8*3 = 24 stress values will be returned in strs and 24 strain values returned in strn.
vfe_Shell2DStressStrain - three-dimensional stress and strain
void vfe_Shell2DStressStrain (vfe_Shell2D *shell2d, Vdouble x[][3], Vdouble u[], Vdouble strs[], Vdouble strn[], Vdouble stress[], Vdouble strain[])
shell2d Pointer to Shell2D object. x Array of node locations. u Degree of freedom vector of displacements
strs Array of nodal stress resultants strn Array of nodal strains/curvatures stress Array of nodal three dimensional stresses at recovery points strain Array of nodal three dimensional strains at recovery points
The stress resultants and strain/curvatures are the same as those obtained with vfe_Shell2DStrsStrn, and the same remarks regarding local coordinate systems apply.
The three-dimensional stresses and strains are computed at a series of points in the beam's cross section. The number of cross sectional points is obtained using vfe_MatlFunNumStressStrain and depend on the type of cross section used. See ShellProp for more details on each cross section type.
The methods associated with a Shell3D object are the following.
*vfe_Shell3DBegin - create an instance of a Shell3D object vfe_Shell3DEnd - destroy an instance of a Shell3D object vfe_Shell3DError - return Shell3D object error flag
vfe_Shell3DSetHistPtr - set pointers to material history vfe_Shell3DSetLocalSystem - set stress axes direction vfe_Shell3DSetMatlSystem - set material axes direction vfe_Shell3DSetObject - set attribute object vfe_Shell3DSetParamd - set element formulation parameters vfe_Shell3DSetParami - set element formulation parameters vfe_Shell3DSetPropPtr - set pointer to element nodal properties vfe_Shell3DSetTopology - set input element topology
vfe_Shell3DDofMap - query element degree of freedom map vfe_Shell3DNumDof - query number of element degrees of freedom vfe_Shell3DNumIntPnt - query number of element integration points
vfe_Shell3DBMatrix - B(beta) matrix vfe_Shell3DConcLoad - concentrated load vector vfe_Shell3DDirCos - compute shell local direction cosines vfe_Shell3DDistLoad - distributed load vector. vfe_Shell3DElemLoad - body force vector vfe_Shell3DGeomStiff - geometric stiffness matrix vfe_Shell3DInitHist - initialize material history vfe_Shell3DMass - consistent mass matrix vfe_Shell3DMassDiag - diagonal mass matrix vfe_Shell3DReact - reaction vector vfe_Shell3DReactStiff - reaction vector, stiffness matrix vfe_Shell3DStiff - linear stiffness matrix vfe_Shell3DStrsAdapt - stress based error analysis vfe_Shell3DStrsStrn - resultant stress and strain/curvature vfe_Shell3DStressStrain - three-dimensional stress and strain
If the node offsets are zero, the shell midsurface is coincident with the shell reference surface. In general, large midsurface offset values, which are much greater than the shell thickness, should be avoided. By default the shell node normals are computed to be normal to the shell reference surface. The user may optionally enter node normals to achieve a "miter" joint between adjacent shell elements. Shell thickness and offset are always measured in the direction of the normal to the shell reference surface regardless of the direction of the shell node normals. The element natural coordinates, r,s, lie in the shell midsurface.
The element technology to be used is set using the function vfe_Shell2DSetParami 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.
Note that when using the general integrated shell wall defined by vfe_ShellPropSetIntegrate, the actual distance of the shell wall integration point from the midsurface is computed internally by multiplying the integration point coordinates input in vfe_ShellPropSetIntegrate by one-half of the thickness specified using vfe_Shell3DSetPropPtr. Therefore, if the actual shell thickness is specified using vfe_Shell3DSetPropPtr, the shell wall integration point coordinates input in vfe_ShellPropSetIntegrate should be in the range [-1.,1.] from the bottom to the top shell surface, with the coordinate 0. lying on the midsurface.
Use the function vfe_Shell3DStrsAdapt to aid in computing element strain energy, strain energy error and other useful quantities to aid in solution error estimation and mesh adaptation.
*vfe_Shell3DBegin - create an instance of a Shell3D object
vfe_Shell3D *vfe_Shell3DBegin ()
None
Destroy an instance of a Shell3D object using
void vfe_Shell3DEnd (vfe_Shell3D *shell3d)
Return the current value of a Shell3D object error flag using
Vint vfe_Shell3DError (vfe_Shell3D *shell3d)
vfe_Shell3DSetHistPtr - set pointers to material history
void vfe_Shell3DSetHistPtr (vfe_Shell3D *shell3d, Vdouble *oldhist, Vdouble *newhist)
shell3d Pointer to Shell3D object. oldhist Pointer to start of material history at previous step newhist Pointer to start of material history at current step
None
vfe_Shell3DSetLocalSystem - set local coordinate system convention
void vfe_Shell3DSetLocalSystem (vfe_Shell3D *shell3d, Vint type, Vdouble vec[], Vdouble angle)
shell3d Pointer to Shell3D object. type Local system convention vec Orientation vector data angle Angle to rotate shell x',y' axes about the shell z' axis in degrees.
None
The z' axis is always constructed to be normal to the shell reference surface. The orientation of the x' and y' axes in the plane of the shell reference surface is determined by type. The vec array is only used if the specified type requires position or direction vectors. An additional rotation of the x',y' axes about the z' axis can be specified with angle. By default the local system convention is SYS_ELEMSYS_STANDARD with angle set to 0.
For a description of element coordinate systems, type, and associated
orientation vector data, please see
1.4 Element Coordinate Systems
vfe_Shell3DSetMatlSystem - set material system convention
void vfe_Shell3DSetMatlSystem (vfe_Shell3D *shell3d, Vint type, Vdouble vec[], Vdouble angle)
shell3d Pointer to Shell3D object. type Local system convention vec Orientation vector data angle Angle to rotate shell x',y' axes about the shell z' axis in degrees.
None
The z' axis is always constructed to be normal to the shell reference surface. The orientation of the x' and y' axes in the plane of the shell reference surface is determined by type. The vec array is only used if the specified type requires position or direction vectors. An additional rotation of the x',y' axes about the z' axis can be specified with angle. By default the local system convention is SYS_ELEMSYS_STANDARD with angle set to 0.
For a description of element coordinate systems, type, and associated
orientation vector data, please see
1.4 Element Coordinate Systems
vfe_Shell3DSetObject - set attribute object
void vfe_Shell3DSetObject (vfe_Shell3D *shell3d, Vint objecttype, Vobject *object)
shell3d Pointer to Shell3D object. objecttype The object type identifier =VFE_MATLFUN MatlFun object object Pointer to the object to be set.
None
vfe_Shell3DSetParamd - set element formulation parameters
void vfe_Shell3DSetParamd (vfe_Shell3D *shell3d, Vint type, Vdouble dparam)
shell3d Pointer to Shell3D object. type Type of formulation parameter to set =VFE_DRILLFACTOR Drill stiffness factor =VFE_MAXPROJANG Maximum nodal projection angle =VFE_ADDEDMASS Additional mass/area dparam Double precision parameter value.
None
The factor applied to the drilling stiffness in the shell element stiffness matrix is set with the VFE_DRILLFACTOR parameter. By default VFE_DRILLFACTOR is set to 1. If unique shell normal directions are supplied then the drill factor can be reduced to a value of .01 . The addition of drill stiffness is enabled using vfe_Shell3DSetParami.
Use VFE_MAXPROJANG to set the maximum angle in degrees between the shell normal at an element integration point and the shell normal at a node. By default VFE_MAXPROJANG is set to 90. degrees.
Use VFE_ADDEDMASS to add non-structural mass/area to the shell element. By default VFE_ADDEDMASS is set to 0..
vfe_Shell3DSetParami - set element formulation parameters
void vfe_Shell3DSetParami (vfe_Shell3D *shell3d, Vint type, Vint iparam)
shell3d Pointer to Shell3D object. type Type of formulation parameter to set =VFE_TECH Element technology =VFE_LARGEROTATION Toggle for large rotations =VFE_DRILLSTIFF Enable drill stiffness =VFE_ROTINERTIA Enable rotary inertias =VFE_TEMPMATLAVE Average material temperature flag =VFE_CHECKCORNNORM Corner normal checking iparam Integer parameter value. =VFE_TECH_ISOP Standard isoparametric technology =VFE_TECH_URED Uniform reduced technology =VFE_TECH_MIXED Mixed technology =VFE_TECH_ANS Assumed natural strains technology =VFE_TECH_KIRCHHOFF Kirchhoff technology =SYS_OFF Disable =SYS_ON Enable
None
The basic element technology is set with the VFE_TECH parameter. By default VFE_TECH is set to VFE_TECH_ISOP.
Toggle large rotations using VFE_LARGEROTATION. By default VFE_LARGEROTATION is set to SYS_OFF.
The addition of drilling stiffness to the shell element stiffness matrix is set with the VFE_DRILLSTIFF parameter. By default VFE_DRILLSTIFF is set to SYS_ON.
The addition of rotary inertias to the element mass matrix is set with the VFE_ROTINERTIA parameter. By default VFE_ROTINERTIA is set to SYS_OFF.
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.
The parameter VFE_CHECKCORNNORM toggles a comparison between computed normals at integration points in shells and a computed normal interpolated from corner node values. If this parameter is enabled then the dot product of these two normals is computed and, if negative, an error is flagged. By default VFE_CHECKCORNNORM is set to SYS_ON.
vfe_Shell3DSetPropPtr - set pointer to element nodal properties
void vfe_Shell3DSetPropPtr (vfe_Shell3D *shell3d, Vint type, Vdouble *propptr)
shell3d Pointer to Shell3D object. type Type of element property =VFE_PROP_TEMPERATURE Temperatures =VFE_PROP_TEMPREF Reference temperatures =VFE_PROP_THICKNESS Thicknesses =VFE_PROP_NORMAL Normals =VFE_PROP_OFFSET Offsets =VFE_PROP_KS Effective shear factor =VFE_PROP_VOLFACT Volume scale factor propptr Pointer to start of element nodal properties
None
vfe_Shell3DSetTopology - set element topology
void vfe_Shell3DSetTopology (vfe_Shell3D *shell3d, Vint shape, Vint maxi, Vint maxj)
shell3d Pointer to Shell3D 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 <= 3 and 2 <= maxi <= 3, then a Lagrange finite element is assumed. If maxi != 0 then maxj = 0 or maxj = maxi.
None
vfe_Shell3DDofMap - query element degree of freedom map
void vfe_Shell3DDofMap (vfe_Shell3D *shell3d, Vint analysistype, Vint loc[], Vint tag[])
shell3d Pointer to Shell3D 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, rotation, temperature, etc.
The length of the loc and tag vectors is equal to the number of element degrees of freedom. Use vfe_Shell3DNumDof to return the number of element degrees of freedom.
vfe_Shell3DNumDof - query number of element degrees of freedom
void vfe_Shell3DNumDof (vfe_Shell3D *shell3d, Vint analysistype, Vint *nedofs)
shell3d Pointer to Shell3D object. analysistype The type of analysis =VFE_ANALYSIS_STRUCTURAL Structural analysis =VFE_ANALYSIS_THERMAL Thermal analysis
nedofs Number of element degrees of freedom
vfe_Shell3DNumIntPnt - query number of element integration points
void vfe_Shell3DNumIntPnt (vfe_Shell3D *shell3d, Vint analysistype, Vint *nepnts)
shell3d Pointer to Shell3D object. analysistype The type of analysis =VFE_ANALYSIS_STRUCTURAL Structural analysis =VFE_ANALYSIS_THERMAL Thermal analysis
nepnts Number of element integration points
vfe_Shell3DBMatrix - B(beta) matrix
void vfe_Shell3DBMatrix (vfe_Shell3D *shell3d, Vdouble x[][3], Vint *nipt, Vdouble rst[][2], Vdouble h[], Vdouble phr[][2], Vdouble w[], Vdouble dj[], Vdouble tm[][3][3], Vdouble dm[][36], Vdouble b[][8])
shell3d Pointer to Shell3D 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 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 integration point weights w at each integration point; the determinant of the Jacobian transformation d(x,y,z)/d(r,s); 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 8x8 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_Shell3DConcLoad - concentrated load vector
void vfe_Shell3DConcLoad (vfe_Shell3D *shell3d, Vdouble x[][3], Vint enttype, Vint no, Vint loadtype, Vdouble xc[3], Vdouble v[], Vdouble f[],
shell3d Pointer to Shell3D object. x Array of node locations. enttype Entity type on which load is applied =SYS_FACE Element face no Element face number (ignored) 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_Shell3DDirCos - compute shell local direction cosines
void vfe_Shell3DDirCos (vfe_Shell3D *shell3d, Vdouble x[][3], Vdouble u[], Vdouble tm[][3][3])
shell3d Pointer to Shell3D object. x Array of point locations defining shell surface. u Degree of freedom vector of displacements
tm Array of direction cosine matrices at the shell nodes.
tm[0][0] = X'x tm[0][1] = X'y tm[0][2] = X'z tm[1][0] = Y'x tm[1][1] = Y'y tm[1][2] = Y'z tm[2][0] = Z'x tm[2][1] = Z'y tm[2][2] = Z'z
The element degrees of freedom, u, are only required if large rotations have been enabled. Otherwise this argument is ignored.
The local coordinate system is determined by the local system convention set using vfe_Shell3DSetLocalSystem.
vfe_Shell3DDistLoad - distributed load vector
void vfe_Shell3DDistLoad (vfe_Shell3D *shell3d, Vdouble x[][3], Vint enttype, Vint no, Vint loadtype, Vdouble q[], Vdouble f[],
shell3d Pointer to Shell3D object. x Array of node locations. enttype Entity type on which load is applied =SYS_EDGE Element edge =SYS_FACE Element face no Element edge number loadtype Distributed load type =VFE_DISTLOAD_TRAC Load directed along vector to element face or element edge =VFE_DISTLOAD_PRES Load directed along inward normal to element face or element edge =VFE_DISTLOAD_TANGFORCE Load directed along element edge =VFE_DISTLOAD_TANGMOMENT Moment directed about element edge q Vector of distributed load values
f Degree of freedom vector of consistent loads.
vfe_Shell3DElemLoad - body force vector
void vfe_Shell3DElemLoad (vfe_Shell3D *shell3d, Vdouble x[][3], Vdouble q[][3], Vdouble f[],
shell3d Pointer to Shell3D object. x Array of node locations. q Array of node accelerations
f Degree of freedom vector of consistent loads.
vfe_Shell3DGeomStiff - geometric stiffness matrix
void vfe_Shell3DGeomStiff (vfe_Shell3D *shell3d, Vdouble x[][3], Vdouble u[], Vdouble kg[])
shell3d Pointer to Shell3D object. x Array of node locations. u Degree of freedom vector of displacements
kg Degree of freedom geometric stiffness matrix
vfe_Shell3DInitHist - initialize material history
void vfe_Shell3DInitHist (vfe_Shell3D *shell3d)
shell3d Pointer to Shell3D object.
None
vfe_Shell3DMass - consistent mass matrix
void vfe_Shell3DMass (vfe_Shell3D *shell3d, Vdouble x[][3], Vdouble m[])
shell3d Pointer to Shell3D object. x Array of node locations.
m Degree of freedom consistent mass matrix
vfe_Shell3DMassDiag - diagonal mass matrix
void vfe_Shell3DMassDiag (vfe_Shell3D *shell3d, Vdouble x[][3], Vdouble md[])
shell3d Pointer to Shell3D object. x Array of node locations.
md Degree of freedom diagonal mass vector
vfe_Shell3DReact - reaction vector
void vfe_Shell3DReact (vfe_Shell3D *shell3d, Vdouble x[][3], Vdouble u[], Vdouble r[])
shell3d Pointer to Shell3D object. x Array of node locations. u Degree of freedom vector of displacements
r Degree of freedom reaction vector
vfe_Shell3DReactStiff - reaction vector, stiffness matrix
void vfe_Shell3DReactStiff (vfe_Shell3D *shell3d, Vdouble x[][3], Vdouble u[], Vdouble kflag, Vdouble r[], Vdouble k[])
shell3d Pointer to Shell3D 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_Shell3DStiff - linear stiffness matrix
void vfe_Shell3DStiff (vfe_Shell3D *shell3d, Vdouble x[][3], Vdouble kl[])
shell3d Pointer to Shell3D object. x Array of node locations.
kl Degree of freedom stiffness matrix
vfe_Shell3DStrsAdapt - stress based error analysis
void vfe_Shell3DStrsAdapt (vfe_Shell3D *shell3d, Vdouble x[][3], Vdouble u[], Vdouble strss[], Vdouble *setot, Vdouble *seerr, Vdouble *h, Vdouble *p, Vdouble *d)
shell3d Pointer to Shell3D 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_Shell3DStrsStrn - resultant stress and strain/curvature
void vfe_Shell3DStrsStrn (vfe_Shell3D *shell3d, Vdouble x[][3], Vdouble u[], Vdouble strs[], Vdouble strn[])
shell3d Pointer to Shell3D object. x Array of node locations. u Degree of freedom vector of displacements
strs Array of nodal stresses strn Array of nodal strains
The stresses and strains are computed in the shell local coordinate system. The convention used to generate local coordinate systems is specified using vfe_Shell3DSetLocalSystem. The actual direction cosine matrices of the shell local systems at the element output locations may be returned using vfe_Shell3DDirCos.
The strs is composed of 8 stress resultants and the strn is composed of 8 associated midsurface strains and curvatures at each output location. The stress and strain values are ordered first by the 8 stress resultant or strain components followed by the the number of element nodes. For example, for a 4 node shell element a total of 8*4 = 32 stress values will be returned in strs and 32 strain values returned in strn.
vfe_Shell3DStressStrain - three-dimensional stress and strain
void vfe_Shell3DStressStrain (vfe_Shell3D *shell2d, Vdouble x[][3], Vdouble u[], Vdouble strs[], Vdouble strn[], Vdouble stress[], Vdouble strain[])
shell2d Pointer to Shell3D object. x Array of node locations. u Degree of freedom vector of displacements
strs Array of nodal stress resultants strn Array of nodal strains/curvatures stress Array of nodal three dimensional stresses at recovery points strain Array of nodal three dimensional strains at recovery points
The stress resultants and strain/curvatures are the same as those obtained with vfe_Shell3DStrsStrn, and the same remarks regarding local coordinate systems apply.
The three-dimensional stresses and strains are computed at a series of points in the beam's cross section. The number of cross sectional points is obtained using vfe_MatlFunNumStressStrain and depend on the type of cross section used. See ShellProp for more details on each cross section type.
The methods associated with a Mem3D object are the following.
*vfe_Mem3DBegin - create an instance of a Mem3D object vfe_Mem3DEnd - destroy an instance of a Mem3D object vfe_Mem3DError - return Mem3D object error flag
vfe_Mem3DSetHistPtr - set pointers to material history vfe_Mem3DSetLocalSystem - set stress axes direction vfe_Mem3DSetMatlSystem - set material axes direction vfe_Mem3DSetObject - set attribute object vfe_Mem3DSetParamd - set element formulation parameters vfe_Mem3DSetParami - set element formulation parameters vfe_Mem3DSetPropPtr - set pointer to element nodal properties vfe_Mem3DSetTopology - set input element topology
vfe_Mem3DDofMap - query element degree of freedom map vfe_Mem3DNumDof - query number of element degrees of freedom vfe_Mem3DNumIntPnt - query number of element integration points
vfe_Mem3DConcLoad - concentrated load vector vfe_Mem3DDirCos - compute membrane local direction cosines vfe_Mem3DDistLoad - distributed load vector. vfe_Mem3DElemLoad - body force vector vfe_Mem3DGeomStiff - geometric stiffness matrix vfe_Mem3DInitHist - initialize material history vfe_Mem3DMass - consistent mass matrix vfe_Mem3DMassDiag - diagonal mass matrix vfe_Mem3DReact - reaction vector vfe_Mem3DReactStiff - reaction vector, stiffness matrix vfe_Mem3DStiff - linear stiffness matrix vfe_Mem3DStrsAdapt - stress based error analysis vfe_Mem3DStrsStrn - stress and strain
vfe_Mem3DDistHeat - distributed heat loads. vfe_Mem3DElemHeat - body heat generation vfe_Mem3DCap - consistent capacitance matrix vfe_Mem3DCapDiag - diagonal capacitance matrix vfe_Mem3DPower - thermal power vfe_Mem3DPowerCond - thermal power, conductance matrix vfe_Mem3DCond - conductance matrix vfe_Mem3DHFlxAdapt - heat flux based error analysis vfe_Mem3DHFlxTGrd - 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_Mem3DSetHistPtr and vfe_Mem3DInitHist. Since all element geometry is available directly to the element in terms of node coordinates and thicknesses, the material function should point to a primitive material.
*vfe_Mem3DBegin - create an instance of a Mem3D object
vfe_Mem3D *vfe_Mem3DBegin ()
None
Destroy an instance of a Mem3D object using
void vfe_Mem3DEnd (vfe_Mem3D *mem3d)
Return the current value of a Mem3D object error flag using
Vint vfe_Mem3DError (vfe_Mem3D *mem3d)
vfe_Mem3DSetHistPtr - set pointers to material history
void vfe_Mem3DSetHistPtr (vfe_Mem3D *mem3d, Vdouble *oldhist, Vdouble *newhist)
mem3d Pointer to Mem3D object. oldhist Pointer to start of material history at previous step newhist Pointer to start of material history at current step
None
vfe_Mem3DSetLocalSystem - set local coordinate system convention
void vfe_Mem3DSetLocalSystem (vfe_Mem3D *mem3d, Vint type, Vdouble vec[], Vdouble angle)
mem3d Pointer to Mem3D object. type Local system convention vec Orientation vector data angle Angle to rotate membrane x',y' axes about the membrane z' axis in degrees.
None
The z' axis is always constructed to be normal to the membrane reference surface. The orientation of the x' and y' axes in the plane of the membrane reference surface is determined by type. The vec array is only used if the specified type requires position or direction vectors. An additional rotation of the x',y' axes about the z' axis can be specified with angle. By default the local system convention is SYS_ELEMSYS_STANDARD with angle set to 0.
For a description of element coordinate systems, type, and associated
orientation vector data, please see
1.4 Element Coordinate Systems
vfe_Mem3DSetMatlSystem - set material system convention
void vfe_Mem3DSetMatlSystem (vfe_Mem3D *mem3d, Vint type, Vdouble vec[], Vdouble angle)
mem3d Pointer to Mem3D object. type Local system convention vec Orientation vector data angle Angle to rotate membrane x',y' axes about the membrane z' axis in degrees.
None
The z' axis is always constructed to be normal to the membrane reference surface. The orientation of the x' and y' axes in the plane of the membrane reference surface is determined by type. The vec array is only used if the specified type requires position or direction vectors. An additional rotation of the x',y' axes about the z' axis can be specified with angle. By default the local system convention is SYS_ELEMSYS_STANDARD with angle set to 0.
For a description of element coordinate systems, type, and associated
orientation vector data, please see
1.4 Element Coordinate Systems
vfe_Mem3DSetObject - set attribute object
void vfe_Mem3DSetObject (vfe_Mem3D *mem3d, Vint objecttype, Vobject *object)
mem3d Pointer to Mem3D object. objecttype The object type identifier =VFE_MATLFUN MatlFun object object Pointer to the object to be set.
None
vfe_Mem3DSetParamd - set element formulation parameters
void vfe_Mem3DSetParamd (vfe_Mem3D *mem3d, Vint type, Vdouble dparam)
mem3d Pointer to Mem3D object. type Type of formulation parameter to set =VFE_MAXPROJANG Maximum nodal projection angle =VFE_ADDEDMASS Additional mass/area dparam Double precision parameter value.
None
Use VFE_MAXPROJANG to set the maximum angle in degrees between the membrane surface normal at an element integration point and the membrane normal at a node. By default VFE_MAXPROJANG is set to 90. degrees.
Use VFE_ADDEDMASS to add non-structural mass/area to the membrane element. By default VFE_ADDEDMASS is set to 0..
vfe_Mem3DSetParami - set element formulation parameters
void vfe_Mem3DSetParami (vfe_Mem3D *mem3d, Vint type, Vint iparam)
mem3d Pointer to Mem3D object. type Type of formulation parameter to set =VFE_TECH Element technology =VFE_STRAINTYPE Element strain type =VFE_TEMPMATLAVE Average material temperature flag =VFE_CHECKCORNNORM Corner normal checking iparam Integer parameter value. =VFE_TECH_ISOP Standard isoparametric technology =VFE_TECH_URED Uniform reduced technology =VFE_SMALLSTRAIN Small strain =VFE_LARGESTRAIN Large strain =SYS_OFF Disable =SYS_ON Enable
None
The basic element technology is set with the VFE_TECH parameter. By default VFE_TECH is set to VFE_TECH_ISOP.
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. If a small strain material is used under VFE_LARGESTRAIN then it is assumed that the material law relates the Green-Lagrange strain tensor with the second second Piola-Kirchhoff stress tensor. Otherwise, the material law relates the deformation gradient with the Cauchy stress.
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.
The parameter VFE_CHECKCORNNORM toggles a comparison between computed normals at integration points in shells and a computed normal interpolated from corner node values. If this parameter is enabled then the dot product of these two normals is computed and, if negative, an error is flagged. By default VFE_CHECKCORNNORM is set to SYS_ON.
vfe_Mem3DSetPropPtr - set pointer to element nodal properties
void vfe_Mem3DSetPropPtr (vfe_Mem3D *mem3d, Vint type, Vdouble *propptr)
mem3d Pointer to Mem3D object. type Type of element property =VFE_PROP_TEMPERATURE Temperatures =VFE_PROP_TEMPREF Reference temperatures =VFE_PROP_THICKNESS Thicknesses =VFE_PROP_PRESTRESS Pre-stress propptr Pointer to start of element nodal properties
None
vfe_Mem3DSetTopology - set element topology
void vfe_Mem3DSetTopology (vfe_Mem3D *mem3d, Vint shape, Vint maxi, Vint maxj)
mem3d Pointer to Mem3D 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 <= 3 and 2 <= maxi <= 3, then a Lagrange finite element is assumed. If maxi != 0 then maxj = 0 or maxj = maxi.
None
vfe_Mem3DDofMap - query element degree of freedom map
void vfe_Mem3DDofMap (vfe_Mem3D *mem3d, Vint analysistype, Vint loc[], Vint tag[])
mem3d Pointer to Mem3D 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 or temperature.
The length of the loc and tag vectors is equal to the number of element degrees of freedom. Use vfe_Mem3DNumDof to return the number of element degrees of freedom.
vfe_Mem3DNumDof - query number of element degrees of freedom
void vfe_Mem3DNumDof (vfe_Mem3D *mem3d, Vint analysistype, Vint *nedofs)
mem3d Pointer to Mem3D object. analysistype The type of analysis =VFE_ANALYSIS_STRUCTURAL Structural analysis =VFE_ANALYSIS_THERMAL Thermal analysis
nedofs Number of element degrees of freedom
vfe_Mem3DNumIntPnt - query number of element integration points
void vfe_Mem3DNumIntPnt (vfe_Mem3D *mem3d, Vint analysistype, Vint *nepnts)
mem3d Pointer to Mem3D object. analysistype The type of analysis =VFE_ANALYSIS_STRUCTURAL Structural analysis =VFE_ANALYSIS_THERMAL Thermal analysis
nepnts Number of element integration points
vfe_Mem3DConcLoad - concentrated load vector
void vfe_Mem3DConcLoad (vfe_Mem3D *mem3d, Vdouble x[][3], Vint enttype, Vint no, Vint loadtype, Vdouble xc[3], Vdouble v[], Vdouble f[],
mem3d Pointer to Mem3D object. x Array of node locations. enttype Entity type on which load is applied =SYS_FACE Element face no Element face number (ignored) 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_Mem3DDirCos - compute membrane local direction cosines
void vfe_Mem3DDirCos (vfe_Mem3D *mem3d, Vdouble x[][3], Vdouble tm[][3][3])
mem3d Pointer to Mem3D object. x Array of point locations defining membrane surface.
tm Array of direction cosine matrices at the membrane nodes.
tm[0][0] = X'x tm[0][1] = X'y tm[0][2] = X'z tm[1][0] = Y'x tm[1][1] = Y'y tm[1][2] = Y'z tm[2][0] = Z'x tm[2][1] = Z'y tm[2][2] = Z'z
The local coordinate system is determined by the local system convention set using vfe_Mem3DSetLocalSystem.
vfe_Mem3DDistLoad - distributed load vector
void vfe_Mem3DDistLoad (vfe_Mem3D *mem3d, Vdouble x[][3], Vint enttype, Vint no, Vint loadtype, Vdouble q[], Vdouble f[],
mem3d Pointer to Mem3D object. x Array of node locations. enttype Entity type on which load is applied =SYS_EDGE Element edge =SYS_FACE Element face no Element edge number loadtype Distributed load type =VFE_DISTLOAD_TRAC Load directed along vector to element face or element edge =VFE_DISTLOAD_PRES Load directed along inward normal to element face or 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_Mem3DElemLoad - body force vector
void vfe_Mem3DElemLoad (vfe_Mem3D *mem3d, Vdouble x[][3], Vdouble q[][3], Vdouble f[],
mem3d Pointer to Mem3D object. x Array of node locations. q Array of node accelerations
f Degree of freedom vector of consistent loads.
vfe_Mem3DGeomStiff - geometric stiffness matrix
void vfe_Mem3DGeomStiff (vfe_Mem3D *mem3d, Vdouble x[][3], Vdouble u[], Vdouble kg[])
mem3d Pointer to Mem3D object. x Array of node locations. u Degree of freedom vector of displacements
kg Degree of freedom geometric stiffness matrix
vfe_Mem3DInitHist - initialize material history
void vfe_Mem3DInitHist (vfe_Mem3D *mem3d)
mem3d Pointer to Mem3D object.
None
vfe_Mem3DMass - consistent mass matrix
void vfe_Mem3DMass (vfe_Mem3D *mem3d, Vdouble x[][3], Vdouble m[])
mem3d Pointer to Mem3D object. x Array of node locations.
m Degree of freedom consistent mass matrix
vfe_Mem3DMassDiag - diagonal mass matrix
void vfe_Mem3DMassDiag (vfe_Mem3D *mem3d, Vdouble x[][3], Vdouble md[])
mem3d Pointer to Mem3D object. x Array of node locations.
md Degree of freedom diagonal mass vector
vfe_Mem3DReact - reaction vector
void vfe_Mem3DReact (vfe_Mem3D *mem3d, Vdouble x[][3], Vdouble u[], Vdouble r[])
mem3d Pointer to Mem3D object. x Array of node locations. u Degree of freedom vector of displacements
r Degree of freedom reaction vector
vfe_Mem3DReactStiff - reaction vector, stiffness matrix
void vfe_Mem3DReactStiff (vfe_Mem3D *mem3d, Vdouble x[][3], Vdouble u[], Vdouble kflag, Vdouble r[], Vdouble k[])
mem3d Pointer to Mem3D 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_Mem3DStiff - linear stiffness matrix
void vfe_Mem3DStiff (vfe_Mem3D *mem3d, Vdouble x[][3], Vdouble kl[])
mem3d Pointer to Mem3D object. x Array of node locations.
kl Degree of freedom stiffness matrix
vfe_Mem3DStrsAdapt - stress based error analysis
void vfe_Mem3DStrsAdapt (vfe_Mem3D *mem3d, Vdouble x[][3], Vdouble u[], Vdouble strss[], Vdouble *setot, Vdouble *seerr, Vdouble *h, Vdouble *p, Vdouble *d)
mem3d Pointer to Mem3D 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_Mem3DStrsStrn - stress and strain
void vfe_Mem3DStrsStrn (vfe_Mem3D *mem3d, Vdouble x[][3], Vdouble u[], Vdouble strs[], Vdouble strn[])
mem3d Pointer to Mem3D object. x Array of node locations. u Degree of freedom vector of displacements
strs Array of nodal stresses strn Array of nodal strains
The stresses and strains are computed in the membrane local coordinate system. The convention used to generate local coordinate systems is specified using vfe_Mem3DSetLocalSystem. The actual direction cosine matrices of the membrane local systems at the element output locations may be returned using vfe_Mem3DDirCos.
The strs is composed of 6 stresses and the strn is composed of 6 associated strains at each output location. The stress and strain values are ordered first by the 6 tensor components followed by the the number of element nodes. For example, for a 4 node membrane element a total of 6*4 = 24 stress values will be returned in strs and 24 strain values returned in strn.
vfe_Mem3DDistHeat - distributed heat loads
void vfe_Mem3DDistHeat (vfe_Mem3D *mem3d, Vdouble x[][3], Vint enttype, Vint no, Vdouble q[], Vdouble f[],
mem3d Pointer to Mem3D 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_Mem3DElemHeat - body heat generation
void vfe_Mem3DElemHeat (vfe_Mem3D *mem3d, Vdouble x[][3], Vdouble q[], Vdouble f[],
mem3d Pointer to Mem3D object. x Array of node locations. q Array of node heat fluxes
f Degree of freedom vector of consistent loads.
vfe_Mem3DCap - consistent capacitance matrix
void vfe_Mem3DCap (vfe_Mem3D *mem3d, Vdouble x[][3], Vdouble u[], Vdouble c[])
mem3d Pointer to Mem3D object. x Array of node locations. u Degree of freedom vector of temperatures
c Degree of freedom consistent capacitance matrix
vfe_Mem3DCapDiag - diagonal capacitance matrix
void vfe_Mem3DCapDiag (vfe_Mem3D *mem3d, Vdouble x[][3], Vdouble u[], Vdouble cd[])
mem3d Pointer to Mem3D object. x Array of node locations. u Degree of freedom vector of temperatures
cd Degree of freedom diagonal capacitance matrix
vfe_Mem3DCond - thermal conductance matrix
void vfe_Mem3DCond (vfe_Mem3D *mem3d, Vdouble x[][3], Vdouble kl[])
mem3d Pointer to Mem3D object. x Array of node locations.
kl Degree of freedom conductance matrix
vfe_Mem3DPower - thermal power vector
void vfe_Mem3DPower (vfe_Mem3D *mem3d, Vdouble x[][3], Vdouble u[], Vdouble r[])
mem3d Pointer to Mem3D object. x Array of node locations. u Degree of freedom vector of temperatures
r Degree of freedom power vector
vfe_Mem3DPowerCond - thermal power, conductance matrix
void vfe_Mem3DPowerCond (vfe_Mem3D *mem3d, Vdouble x[][3], Vdouble u[], Vdouble kflag, Vdouble r[], Vdouble k[])
mem3d Pointer to Mem3D 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_Mem3DHFlxAdapt - heat flux based error analysis
void vfe_Mem3DHFlxAdapt (vfe_Mem3D *mem3d, Vdouble x[][3], Vdouble u[], Vdouble hflxs[], Vdouble *hetot, Vdouble *heerr, Vdouble *h, Vdouble *p, Vdouble *d)
mem3d Pointer to Mem3D 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_Mem3DHFlxTGrd - heat flux and thermal gradient
void vfe_Mem3DHFlxTGrd (vfe_Mem3D *mem3d, Vdouble x[][3], Vdouble u[], Vdouble hflx[], Vdouble tgrd[])
mem3d Pointer to Mem3D 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 flux and gradient values are ordered first by the 3 vectoral components followed by the number of element nodes.