The Beam3D module is used to simulate 3D beam elements. Beam elements are one-dimensional elements in 3D space which support axial deformation, bending and torsion. In addition Beam3D supports the flexibility due to transverse shear deformation.
The methods associated with a Beam3D object are the following.
*vfe_Beam3DBegin - create an instance of a Beam3D object vfe_Beam3DEnd - destroy an instance of a Beam3D object vfe_Beam3DError - return Beam3D object error flag
vfe_Beam3DSetHistPtr - set pointers to material history vfe_Beam3DSetLocalSystem - set stress axes direction vfe_Beam3DSetObject - set attribute object vfe_Beam3DSetParamd - set element formulation parameters vfe_Beam3DSetParami - set element formulation parameters vfe_Beam3DSetPropPtr - set pointer to element nodal properties vfe_Beam3DSetTopology - set input element topology vfe_Beam3DDirCos - compute beam local direction cosines
vfe_Beam3DDofMap - query element degree of freedom map vfe_Beam3DNumDof - query number of element degrees of freedom vfe_Beam3DNumIntPnt - query number of element integration points vfe_Beam3DSetPins - set pin flags vfe_Beam3DSixDof - gather nodal displacements and rotations
vfe_Beam3DDistLoad - distributed load vector. vfe_Beam3DElemLoad - body force vector vfe_Beam3DGeomStiff - geometric stiffness matrix vfe_Beam3DInitHist - initialize material history vfe_Beam3DMass - consistent mass matrix vfe_Beam3DMassDiag - diagonal mass matrix vfe_Beam3DReact - reaction vector vfe_Beam3DReactStiff - reaction vector, stiffness matrix vfe_Beam3DStiff - linear stiffness matrix vfe_Beam3DStrsAdapt - stress based error analysis vfe_Beam3DStrsStrn - resultant stress and strain/curvature vfe_Beam3DStressStrain - three-dimensional stress and strain vfe_Beam3DUpdateDofs - update dofs for large-rotation problems
If the node offsets are zero, the beam centroidal axis is coincident with the beam reference axis. In general, large centroidal axis offset values, which are much greater than the beam section dimensions, should be avoided. By default the beam section is perpendicular to the tangent along the beam reference axis with the orientation of the section defined by a prescription specified by vfe_Beam3DSetLocalSystem. The user may optionally enter node normals to specifically define the orientation of the beam cross section. These user defined normals allow for beam section orientations which are not perpendicular to the beam reference axis and override the prescription for the node normals specified in vfe_Beam3DSetLocalSystem. If the both the node normal y and normal z are set using vfe_Beam3DSetPropPtr the beam section lies in the plane defined by the node normals. The node normal z is recomputed to be orthogonal to the normal y. If only the normal y is set then the normal z is computed to be orthogonal to the centroidal axis and the node normal y. Beam properties such as area, offsets, moments of inertia, shear center offsets, etc. are always measured in the plane perpendicular to the beam reference axis regardless of the direction of the beam node normals.
The element natural coordinate, r, is tangent to the the beam centroidal axis.
Note that when using the general integrated beam section defined by vfe_BeamPropSetIntegrate, the actual distance of the beam section integration point from the centroidal axis is computed internally by multiplying the integration point coordinates input in vfe_BeamPropSetIntegrate by one-half of the thicknesses specified using vfe_Beam3DSetPropPtr.
Use the function vfe_Beam3DStrsAdapt to aid in computing element strain energy, strain energy error and other useful quantities to aid in solution error estimation and mesh adaptation.
Pin flags can be set at either of the beam's ends with vfe_Beam3DSetPins. Degrees of freedom marked with a pin flag are not transmitted to neighboring elements. Every degree of freedom marked with a pin flag creates an additional internal degree of freedom in the element. If large rotations are used then the degrees of freedom in the element must be updated using vfe_Beam3DUpdateDofs, otherwise updated degrees of freedom are simply the addition of the degrees of freedom at the beginning of the step and the incremental values. If pin flags are defined, the element degrees of freedom may be recovered using vfe_Beam3DSixDof.
*vfe_Beam3DBegin - create an instance of a Beam3D object
vfe_Beam3D *vfe_Beam3DBegin ()
None
Destroy an instance of a Beam3D object using
void vfe_Beam3DEnd (vfe_Beam3D *beam3d)
Return the current value of a Beam3D object error flag using
Vint vfe_Beam3DError (vfe_Beam3D *beam3d)
vfe_Beam3DSetHistPtr - set pointers to material history
void vfe_Beam3DSetHistPtr (vfe_Beam3D *beam3d, Vdouble *oldhist, Vdouble *newhist)
beam3d Pointer to Beam3D object. oldhist Pointer to start of material history at previous step newhist Pointer to start of material history at current step
None
vfe_Beam3DSetLocalSystem - set local coordinate system convention
void vfe_Beam3DSetLocalSystem (vfe_Beam3D *beam3d, Vint type, Vdouble vec[], Vdouble angle)
beam3d Pointer to Beam3D object. type Local system convention vec Orientation vector data angle Angle to rotate beam y',z' axes about the beam x' axis in degrees.
None
The x' axis is always constructed to be tangent to the beam reference axis. The orientation of the y' and z' axes perpendicular to the beam reference axis is determined by type. The vec array is only used if the specified type requires position or direction vectors. An additional rotation of the y',z' axes about the x' 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_Beam3DSetObject - set attribute object
void vfe_Beam3DSetObject (vfe_Beam3D *beam3d, Vint objecttype, Vobject *object)
beam3d Pointer to Beam3D object. objecttype The object type identifier =VFE_MATLFUN MatlFun object object Pointer to the object to be set.
None
vfe_Beam3DSetParamd - set element formulation parameters
void vfe_Beam3DSetParamd (vfe_Beam3D *beam3d, Vint type, Vdouble dparam)
beam3d Pointer to Beam3D object. type Type of formulation parameter to set =VFE_MAXPROJANG Maximum nodal projection angle =VFE_ADDEDMASS Additional mass/length dparam Double precision parameter value.
None
Use VFE_MAXPROJANG to set the maximum angle in degrees between the beam tangent at an element integration point and the beam tangent at a node. By default VFE_MAXPROJANG is set to 90. degrees.
Use VFE_ADDEDMASS to add non-structural mass/length to the beam element. By default VFE_ADDEDMASS is set to 0..
vfe_Beam3DSetParami - set element formulation parameters
void vfe_Beam3DSetParami (vfe_Beam3D *beam3d, Vint type, Vint iparam)
beam3d Pointer to Beam3D 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 iparam Integer parameter value. =VFE_TECH_ISOP Mindlin isoparametric technology =VFE_TECH_KIRCHHOFF Kirchhoff technology =VFE_TECH_ENHANCED Enhanced technology =SYS_OFF Disable =SYS_ON Enable
None
The basic element technology is set with the VFE_TECH parameter. The Kirchhoff technology assumes a cubic variation of displacement transverse to the beam axis and is only available in a pre-integrated formulation and a two node topology. 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_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_Beam3DSetPropPtr - set pointer to element nodal properties
void vfe_Beam3DSetPropPtr (vfe_Beam3D *beam3d, Vint type, Vdouble *propptr)
beam3d Pointer to Beam3D object. type Type of element property =VFE_PROP_TEMPERATURE Temperatures =VFE_PROP_TEMPREF Reference temperatures =VFE_PROP_THICKNESSY Thicknesses in y' =VFE_PROP_THICKNESSZ Thicknesses in z' =VFE_PROP_OFFSETY Offsets in y' =VFE_PROP_OFFSETZ Offsets in z' =VFE_PROP_NORMALY Normals in y' =VFE_PROP_NORMALZ Normals in z' =VFE_PROP_AREA Areas =VFE_PROP_IYY Moments of inertia about y' =VFE_PROP_IZZ Moments of inertia about z' =VFE_PROP_IYZ Products of inertia =VFE_PROP_J Torsional constants =VFE_PROP_KSY Effective shear factor in y' =VFE_PROP_KSZ Effective shear factor in z' =VFE_PROP_DSY Shear center offsets in y' =VFE_PROP_DSZ Shear center offsets in z' propptr Pointer to start of element nodal properties
None
vfe_Beam3DSetTopology - set element topology
void vfe_Beam3DSetTopology (vfe_Beam3D *beam3d, Vint maxi)
beam3d Pointer to Beam3D object. maxi The number of points along the i direction. If maxi = 0 then the linear Serendipity element form of the specified shape is assumed.
None
vfe_Beam3DDofMap - query element degree of freedom map
void vfe_Beam3DDofMap (vfe_Beam3D *beam3d, Vint analysistype, Vint loc[], Vint tag[])
beam3d Pointer to Beam3D 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 or rotation.
The length of the loc and tag vectors is equal to the number of element degrees of freedom. Use vfe_Beam3DNumDof to return the number of element degrees of freedom.
vfe_Beam3DNumDof - query number of element degrees of freedom
void vfe_Beam3DNumDof (vfe_Beam3D *beam3d, Vint analysistype, Vint *nedofs)
beam3d Pointer to Beam3D object. analysistype The type of analysis =VFE_ANALYSIS_STRUCTURAL Structural analysis
nedofs Number of element degrees of freedom
vfe_Beam3DNumIntPnt - query number of element integration points
void vfe_Beam3DNumIntPnt (vfe_Beam3D *beam3d, Vint analysistype, Vint *nepnts)
beam3d Pointer to Beam3D object. analysistype The type of analysis =VFE_ANALYSIS_STRUCTURAL Structural analysis
nepnts Number of element integration points
vfe_Beam3DSetPins - set pin flags
void vfe_Beam3DSetPins (vfe_Beam3D *beam3d, Vint npins1, Vint tags1[], Vint npins2, Vint tags2[])
beam3d Pointer to Beam3D object. npins1 Number of pin flags set on first node tags1 List of npins1 degrees of freedom pinned on first node npins1 Number of pin flags set on second node tags1 List of npins1 degrees of freedom pinned on second node
None
vfe_Beam3DSixDof - gather nodal displacements and rotations
void vfe_Beam3DSixDof (vfe_Beam3D *beam3d, Vdouble x[][3], Vdouble u[], Vdouble sixdof[])
beam3d Pointer to Beam3D object. x Array of point locations defining beam surface. u The element degrees of freedom
sixdof Global displacements and rotations for each node
None
vfe_Beam3DDirCos - compute beam local direction cosines
void vfe_Beam3DDirCos (vfe_Beam3D *beam3d, Vdouble x[][3], Vdouble u[], Vdouble tm[][3][3])
beam3d Pointer to Beam3D object. x Array of point locations defining beam surface. u The element degrees of freedom
tm Array of direction cosine matrices at the element 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_Beam3DSetLocalSystem or alternatively the normals in the beam y' and z' directions using vfe_Beam3DSetPropPtr.
The element degrees of freedom, u, are only required if large rotations have been enabled. Otherwise this argument is ignored.
vfe_Beam3DDistLoad - distributed load vector
void vfe_Beam3DDistLoad (vfe_Beam3D *beam3d, Vdouble x[][3], Vint enttype, Vint no, Vint loadtype, Vdouble q[], Vdouble f[],
beam3d Pointer to Beam3D object. x Array of node locations. enttype Entity type on which load is applied =SYS_EDGE Element edge no Element edge number, currently unused and ignored. loadtype Distributed load type =VFE_DISTLOAD_TRAC Load directed along vector q Vector of distributed load values
f Degree of freedom vector of consistent loads.
vfe_Beam3DElemLoad - body force vector
void vfe_Beam3DElemLoad (vfe_Beam3D *beam3d, Vdouble x[][3], Vdouble q[][3], Vdouble f[],
beam3d Pointer to Beam3D object. x Array of node locations. q Array of node accelerations
f Degree of freedom vector of consistent loads.
vfe_Beam3DGeomStiff - geometric stiffness matrix
void vfe_Beam3DGeomStiff (vfe_Beam3D *beam3d, Vdouble x[][3], Vdouble u[], Vdouble kg[])
beam3d Pointer to Beam3D object. x Array of node locations. u Degree of freedom vector of displacements
kg Degree of freedom geometric stiffness matrix
vfe_Beam3DInitHist - initialize material history
void vfe_Beam3DInitHist (vfe_Beam3D *beam3d)
beam3d Pointer to Beam3D object.
None
vfe_Beam3DMass - consistent mass matrix
void vfe_Beam3DMass (vfe_Beam3D *beam3d, Vdouble x[][3], Vdouble m[])
beam3d Pointer to Beam3D object. x Array of node locations.
m Degree of freedom consistent mass matrix
vfe_Beam3DMassDiag - diagonal mass matrix
void vfe_Beam3DMassDiag (vfe_Beam3D *beam3d, Vdouble x[][3], Vdouble md[])
beam3d Pointer to Beam3D object. x Array of node locations.
md Degree of freedom diagonal mass vector
vfe_Beam3DReact - reaction vector
void vfe_Beam3DReact (vfe_Beam3D *beam3d, Vdouble x[][3], Vdouble u[], Vdouble r[])
beam3d Pointer to Beam3D object. x Array of node locations. u Degree of freedom vector of displacements
r Degree of freedom reaction vector
vfe_Beam3DReactStiff - reaction vector, stiffness matrix
void vfe_Beam3DReactStiff (vfe_Beam3D *beam3d, Vdouble x[][3], Vdouble u[], Vdouble kflag, Vdouble r[], Vdouble k[])
beam3d Pointer to Beam3D 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_Beam3DStiff - linear stiffness matrix
void vfe_Beam3DStiff (vfe_Beam3D *beam3d, Vdouble x[][3], Vdouble kl[])
beam3d Pointer to Beam3D object. x Array of node locations.
kl Degree of freedom stiffness matrix
vfe_Beam3DStrsAdapt - stress based error analysis
void vfe_Beam3DStrsAdapt (vfe_Beam3D *beam3d, Vdouble x[][3], Vdouble u[], Vdouble strss[], Vdouble *setot, Vdouble *seerr, Vdouble *h, Vdouble *p, Vdouble *d)
beam3d Pointer to Beam3D 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_Beam3DStrsStrn - resultant stress and strain/curvature
void vfe_Beam3DStrsStrn (vfe_Beam3D *beam3d, Vdouble x[][3], Vdouble u[], Vdouble strs[], Vdouble strn[])
beam3d Pointer to Beam3D object. x Array of node locations. u Degree of freedom vector of displacements
strs Array of nodal stress resultant strn Array of nodal strains/curvatures
The stress resultants and strains/curvatures are computed in the beam local coordinate system. The convention used to generate local coordinate systems is specified using vfe_Beam3DSetLocalSystem or alternatively setting normal directions using vfe_Beam3DSetPropPtr. The actual direction cosine matrices of the beam local systems at the element output locations may be returned using vfe_Beam3DDirCos.
The strs is composed of 6 stress resultants and the strn is composed of 6 associated midsurface strains, twists and curvatures at each output location. The stress and strain values are ordered first by the 6 stress resultant or strain components followed by the the number of element nodes. For example, for a 2 node beam element a total of 6*2 = 12 stress resultant values will be returned in strs and 12 strain values returned in strn.
vfe_Beam3DStressStrain - three-dimensional stress and strain
void vfe_Beam3DStressStrain (vfe_Beam3D *beam3d, Vdouble x[][3], Vdouble u[], Vdouble strs[], Vdouble strn[], Vdouble stress[], Vdouble strain[])
beam3d Pointer to Beam3D object. x Array of node locations. u Degree of freedom vector of displacements
strs Array of nodal stress resultant 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 strains/curvatures are the same as those obtained with vfe_Beam3DStrsStrn, 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 BeamProp for more details on each cross section type.
vfe_Beam3DUpdateDofs - update dofs for large-rotation problems
void vfe_Beam3DUpdateDofs (vfe_Beam3D *beam3d, Vdouble x[][3], Vdouble un[], Vdouble uinc[], Vdouble un1[])
beam3d Pointer to Beam3D object. x Array of point locations defining beam surface. un Dofs at the beginning of the step uinc Incremental dofs computed at the step
un1 Dofs at the end of the step
None