9. Beam Section Properties Calculator - BeamSectCalculator
Use the BeamSectCalculator module to manage and compute the section properties of beam elements. The BeamSectCalculator module can represent either a homogeneous isotropic beam of arbitrary cross section or a composite isotropic or orthotropic beam cross section with any number of holes. Functions are provided to draw either a line or surface representation of the beam section. Overall geometric and material stiffness properties of the defined section may be computed. The BeamSectCalculator module uses the finite element method internally to compute certain section properties such as the torsional constant, effective shear factors and warping coefficient.
The functions associated with a BeamSectCalculator object are the following.
Begin and end an instance of an object, return object error flag
vis_BeamSectCalculatorBegin()
- create an instance of a BeamSectCalculator objectvis_BeamSectCalculatorEnd()
- destroy an instance of a BeamSectCalculator objectvis_BeamSectCalculatorError()
- return BeamSectCalculator object error flag
Set, manipulate and query results
vis_BeamSectCalculatorDef()
- define beam section typevis_BeamSectCalculatorSetDimensionsdv()
- set dimensions of built-in geometriesvis_BeamSectCalculatorSetReflect()
- set beam section reflectionvis_BeamSectCalculatorSetRotatedv()
- set beam section rotationvis_BeamSectCalculatorSetElasPropdv()
- set elastic material propertiesvis_BeamSectCalculatorProps()
- compute general beam section propertiesvis_BeamSectCalculatorSetPropsdv()
- set general beam section propertiesvis_BeamSectCalculatorGetPropsdv()
- get general beam section propertiesvis_BeamSectCalculatorSetParamd()
- set beam section compute parametersvis_BeamSectCalculatorSetParami()
- set beam section display parametersvis_BeamSectCalculatorGetNum()
- get number of points, loops and triangles
Instance a BeamSectCalculator object using vis_BeamSectCalculatorBegin()
.
Once a BeamSectCalculator is instanced, define the beam section type using
vis_BeamSectCalculatorDef()
. The BeamSectCalculator
module allows four basic types of beam sections to be defined; 1)
built-in parameterized geometries, 2) user defined connected line
segment geometry, 3) user defined general geometries using points and
line loops and 4) general beam section properties such as overall area,
moments of inertia and material stiffness. If a built-in parameterized
geometry such as BEAMSECT_IBEAM is defined, the geometry parameters
or dimensions are input using vis_BeamSectCalculatorSetDimensionsdv()
.
All built-in sections and sections defined by BEAMSECT_SEGMENTS and
BEAMSECT_GEOMETRY are subject to optional, user defined, rotation
and/or coordinate reflections. The rotation is specified using
vis_BeamSectCalculatorSetRotatedv()
,
the coordinate reflections are specified using
vis_BeamSectCalculatorSetReflect()
.
These functions must be called before dimensions, segment geometry or
point locations are defined. The rotations are applied first followed by
the y and z coordinate reflections.
The elastic material properties for the beam section may be specified
using vis_BeamSectCalculatorSetElasPropdv()
.
By default, BeamSectCalculator
assumes a homogeneous isotropic beam. If a composite beam is to be
analyzed, then the user must use vis_BeamSectCalculatorSetParami()
with parameter BEAMSECT_VABS enabled. Composite beams can only be
defined using type BEAMSECT_GEOMETRY. This involves defining one or
more loops with possibly several materials. All other geometry types
assume homogeneous isotropic beams. In this case a single material with
identifer 1 is assumed. Any material properties defined using
vis_BeamSectCalculatorSetElasPropdv()
must use material identifier 1 and be of type SYS_MAT_ISOTROPIC.
General beam section properties and material stiffnesses may be computed
using vis_BeamSectCalculatorProps()
.
The user may access computed or previously defined beam section
properties using vis_BeamSectCalculatorGetPropsdv()
.
All section properties managed by BeamSectCalculator
are oriented with respect to the beam section yz axis system. For
example, moments of inertia are about the centroid, parallel to the beam
section yz system. The following section properties are maintained and
computed by BeamSectCalculator:
A , Area
Iyy , Moment of inertia about y axis through centroid
Izz , Moment of inertia about z axis through centroid
Iyz , Product of inertia with respect to centroidal axis
Ang , Angle of principal moments of inertia
J , Torsional constant about the shear center
Ksy , Shear factor along y axis
Ksz , Shear factor along z axis
Ksyz, Coupled shear factor
Ey , Eccentricity of centroid from origin along y axis
Ez , Eccentricity of centroid from origin along z axis
Dsy , Shear center offset from centroid along y axis
Dsz , Shear center offset from centroid along z axis
Cw , Warping coefficient for torsion about the shear center
Ny , Neutral axis offset from centroid along y axis
Nz , Neutral axis offset from centroid along z axis
For composite or orthotropic beams the shear factors Ksy, Ksz, and Ksyz, as well as the warping coefficient Cw are undefined and are set to zero. For homogeneous isotropic beams Ny = Nz = 0.
As mentioned above, the geometry of a beam section may be defined either
as a parameterized built-in section or as a series of user defined
points and loops. In any case the geometry is represented internally as
points and loops, each parameterized section generates a set of points
and loops which are dependent upon the section. The
BeamSectCalculator
module also performs two types of triangularization of the section, a
minimum triangularization and a quality triangularization. As the term
implies, the minimum triangularization generates just enough triangles
to represent the section for simple drawing purposes. The quality
triangularization is generated when beam section properties are computed
using vis_BeamSectCalculatorProps()
.
The triangles used are quadratic with Serendipity interpolation. The
quality triangles are those triangles in the internal finite element
mesh used to solve for the section properties. This triangularization
may be useful if results data is to be contoured over a beam section.
The quality triangularization will generate additional points within the
beam section. These points will be added to the points already defined.
When specifying user defined sections, each defined point will be included in the minimum and quality triangulations. This includes internal points which are not connected to a boundary loop. All defined point id’s are preserved in the minimum and quality triangulations.
If only the beam resultants r about the centroid are available, the centroidal strains, curvatures, and twist, e, can be obtained by inverting the relationship
r = dmat * e
where dmat can be obtained with vis_BeamSectCalculatorGetPropsdv()
.
Note that r are the resultants relative to the centroid. If the
torque about the shear center, Ts, is available, it can be
transformed to the centroid, Tc, using the expression
Tc = Ts + Dsy*Nz - Dsz*Ny
where Dsy and Dsz are the shear center offsets, and Ny and
Nz are the shear resultant forces. Dsy and Dsz can also be
obtained with vis_BeamSectCalculatorGetPropsdv()
:
Dsy = props[11]
Dsz = props[12]
The BeamSectCalculator module features a wide selection of parameterized built-in sections. These sections are diagrammed below. The y axis of the section yz system extends horizontally right, the z axis extends vertically up. The origin of the section yz system is indicated by a heavy black dot. The specific location of the origin for each section is as follows:
IBEAM , midpoint of w1 and h dimensions
CIRCLE , center
TUBE , center
PANEL , center
RECTANGLE, midpoint of w and h dimensions
TRAPEZOID, midpoint of w1 and h dimensions
HEXAGON , center
TEE , midpoint of w and h dimensions
ZEE , midpoint of d3 and h dimensions
CHANNEL , midpoint of w1 and h dimensions
SECTOR , center
ELLIPSE , center
HAT , midpoint of w1 and h dimensions
CROSS , midpoint of w and h dimensions
HAT1 , midpoint of w1 and h1 dimensions
ANGLE , midpoint of w and h dimensions
HATG , midpoint of w3 and h dimensions
QUAD , centroid
SOLIDHEXA, centroid
BOX , midpoint of w and h dimensions
DBOX , midpoint of w1+w2 and h dimensions
RECTTUBE , midpoint of w and h dimensions
HATT , midpoint of w1 and h dimensions
9.1. Function Descriptions
The currently available BeamSectCalculator functions are described in detail in this section.
-
vis_BeamSectCalculator *vis_BeamSectCalculatorBegin(void)
create an instance of a BeamSectCalculator object
Create an instance of an BeamSectCalculator object. Memory is allocated for the object private data and the pointer to the data is returned. By default all attribute object pointers are NULL.
Destroy an instance of a BeamSectCalculator object using
void vis_BeamSectCalculatorEnd (vis_BeamSectCalculator *BeamSectCalculator)
Return the current value of a BeamSectCalculator object error flag using
Vint vis_BeamSectCalculatorError (vis_BeamSectCalculator *BeamSectCalculator)
- Returns:
The function returns a pointer to the newly created BeamSectCalculator object. If the object creation fails, NULL is returned.
-
void vis_BeamSectCalculatorEnd(vis_BeamSectCalculator *p)
destroy an instance of a BeamSectCalculator object
-
Vint vis_BeamSectCalculatorError(vis_BeamSectCalculator *p)
return the current value of a BeamSectCalculator object error flag
-
void vis_BeamSectCalculatorDef(vis_BeamSectCalculator *p, Vint type)
define beam section type
Define the type of beam section to be represented. If type is
BEAMSECT_PROPS
, the user must enter the overall section properties and material stiffness matrices explicitly usingvis_BeamSectCalculatorSetProps()
. If type is input asBEAMSECT_GEOMETRY
, then the user specifies an arbitrary beam section by defining point locations and planar loops usingvis_BeamSectCalculaotrSetPoint()
andvis_BeamSectCalculaotrSetLoop()
respectively. If type is input asBEAMSECT_SEGMENTS
, then the user specifies a connected segments section by defining point locations and segment thicknesses usingvis_BeamSectCalculatorSetSegments()
. If type is input as a built-in parameterized section such asBEAMSECT_IBEAM
, then the user specifies the section dimensions usingvis_BeamSectCalculatorSetDimensions()
- Errors
VIS_ERROR_ENUM
is generated if an improper type is specified.
- Parameters:
p – Pointer to BeamSectCalculator object.
type – Beam section type
x=BEAMSECT_PROPS Generalized section properties =BEAMSECT_BOX Hollow Box =BEAMSECT_DBOX Hollow double Box =BEAMSECT_ANGLE Angle =BEAMSECT_IBEAM I beam =BEAMSECT_CIRCLE Solid circle =BEAMSECT_TUBE Hollow tube =BEAMSECT_PANEL Panel =BEAMSECT_RECTANGLE Rectangle =BEAMSECT_TRAPEZOID Trapezoid =BEAMSECT_HEXAGON Hollow hexagon =BEAMSECT_SOLIDHEXA Solid hexagon =BEAMSECT_TEE Tee =BEAMSECT_ZEE Zee =BEAMSECT_CHANNEL Channel =BEAMSECT_SECTOR Solid sector =BEAMSECT_ELLIPSE Solid ellipse =BEAMSECT_HAT Hat =BEAMSECT_HATG Hat general =BEAMSECT_HAT1 Hat with base =BEAMSECT_HATT Hat angled with base =BEAMSECT_CROSS Cross =BEAMSECT_RECTTUBE Rectangular tube =BEAMSECT_GEOMETRY Arbitrary section =BEAMSECT_SEGMENTS Connected segments section
-
void vis_BeamSectCalculatorSetPointdv(vis_BeamSectCalculator *p, Vint id, Vdouble x[2])
set location of point on beam section
Set the y and z coordinates of a point, id, on the beam section. The round flag for the point is set to zero. Use the function
vis_BeamSectCalculatorSetRound()
to set the round flag. Usevis_BeamSectCalculatorSetLoop()
to define section geometry using points.Inquire of point coordinates for a given point id as an output argument using
void vis_BeamSectCalculatorGetPointdv (vis_BeamSectCalculator *BeamSectCalculator, Vint id, Vdouble yz[2])
- Errors
VIS_ERROR_OPERATION
is generated if the beam type as defined byvis_BeamSectCalculatorDef()
is notBEAMSECT_GEOMETRY
.VIS_ERROR_VALUE
is generated if an improper id is input.
- Parameters:
p – Pointer to BeamSectCalculator object.
id – Point id, 0 < id
x – Vector of y and z coordinates of point on beam section
-
void vis_BeamSectCalculatorSetDimensionsdv(vis_BeamSectCalculator *p, Vdouble dimes[])
set dimensions of built-in geometries
Set dimensions for a built-in beam section type. The number and type of dimensions required are section dependent as defined by
vis_BeamSectCalculatorDef()
.BOX ANGLE IBEAM CIRCLE TUBE PANEL RECTANGLE dimes[0] = w w w1 r r r w dimes[1] = h h w2 t t h dimes[2] = d1 d1 h a dimes[3] = d2 d2 d1 dimes[4] = d3 r d2 dimes[5] = d4 d3 dimes[6] = r1 r1 dimes[7] = r2 r2 TRAPEZOID HEXAGON SOLIDHEXA TEE ZEE CHANNEL SECTOR ELLIPSE dimes[0] = w1 r w w w1 w1 r r1 dimes[1] = w2 t h h w2 w2 a r2 dimes[2] = h d1 d1 h h dimes[3] = d2 d1 d1 dimes[4] = r d2 d2 dimes[5] = d3 d3 dimes[6] = r1 r1 dimes[7] = r2 r2 HAT CROSS HAT1 DBOX HATG QUAD HATT RECTTUBE dimes[0] = w1 w w1 w1 w1 y1 w1 w dimes[1] = w2 h w2 w2 w2 z1 w2 h dimes[2] = h d1 h1 h w3 y2 w3 t dimes[3] = d1 d2 h2 d1 h z2 h r dimes[4] = d2 r1 d1 d2 d1 y3 d1 dimes[5] = d3 r2 d2 d3 d2 z3 d2 dimes[6] = r1 d3 d4 d3 y4 d3 dimes[7] = r2 r1 d5 d4 z4 dimes[8] = r2 d6 d5 dimes[9] = d7 r1 dimes[10] = r1 r2 dimes[11] = r2 dimes[12] = r3 dimes[13] = r4
Inquire of beam dimensions as output arguments using
void vis_BeamSectCalculatorGetDimensionsdv (vis_BeamSectCalculator *BeamSectCalculator, Vdouble dimes[])
- Errors
VIS_ERROR_OPERATION
is generated if the beam type as defined byvis_BeamSectCalculatorDef()
isBEAMSECT_PROPS
,BEAMSECT_SEGMENTS
orBEAMSECT_GEOMETRY
.
- Parameters:
p – Pointer to BeamSectCalculator object.
dimes – Dimensions of section.
-
void vis_BeamSectCalculatorSetReflect(vis_BeamSectCalculator *p, Vint reflecty, Vint reflectz)
set beam section reflection
Set the axis reflection flags for built-in sections. A non-zero value for reflecty and/or reflectz indicates that the built-in section coordinates are to be reflected. By default reflecty and reflectz are zero.
- Parameters:
p – Pointer to BeamSectCalculator object.
reflecty – Flag to reflect y-coordinate
reflectz – Flag to reflect z-coordinate
-
void vis_BeamSectCalculatorSetRotatedv(vis_BeamSectCalculator *p, Vdouble angle)
set beam section rotation
Set the rotation angle in degrees for built-in sections. A positive angle is a counter clockwise rotation in the y-z plane. By default angle is zero.
- Parameters:
p – Pointer to BeamSectCalculator object.
angle – Angle of rotation in degrees
-
void vis_BeamSectCalculatorProps(vis_BeamSectCalculator *p)
compute general beam section properties
Compute the general beam section properties. The overall area, moments of inertia, shear factors, etc. are set. The section properties will be stored as follows in the internal props vector.
If only a single isotropic material is present and the shear center offsets are both zero, then the material stiffness is as follows, where E and G are the elastic modulus and shear modulus:props[0] - Area, A props[1] - Moment of inertia about centroidal y axis, Iyy props[2] - Moment of inertia about centroidal z axis, Izz props[3] - Product of inertia with respect to centroidal axis, Iyz props[4] - Angle of principal moments of inertia, Ang props[5] - Torsional constant, J props[6] - Shear factor along y axis, Ksy props[7] - Shear factor along z axis, Ksz props[8] - Coupled shear factor, Ksyz props[9] - Eccentricity of centroid from origin along y axis, Ey props[10] - Eccentricity of centroid from origin along z axis, Ez props[11] - Shear center offset from centroid along y axis, Dsy props[12] - Shear center offset from centroid along z axis, Dsz props[13] - Warping coefficient, Cw props[14] - Neutral axis offset from centroid along y axis props[15] - Neutral axis offset from centroid along z axis
If the shear center offset is not zero, BeamSectCalculator can compute dmat usingdmat[ 0] = E * A dmat[ 2] = E * Iyy dmat[ 4] = E * Iyz dmat[ 5] = E * Izz dmat[ 9] = G * J dmat[14] = G * Ksy * A dmat[19] = G * Ksyz * A dmat[20] = G * Ksz * A
vis_BeamSectCalculatorProps()
. The material stiffness is computed about the beam centroid.Inquire of beam section properties and material stiffness matrices as output arguments using
void vis_BeamSectGetPropsdv (vis_BeamSectCalculator *BeamSectCalculator, Vdouble props[BEAMSECT_MAXPROPS], Vdouble dmat[21])
- Parameters:
p – Pointer to BeamSectCalculator object.
-
void vis_BeamSectCalculatorSetPropsdv(vis_BeamSectCalculator *p, Vdouble props[], Vdouble dmat[21])
set general beam section properties
Set the general beam section properties. he overall area, moments of inertia, shear factors, etc. are set. The section properties must appear as follows in the input props vector.
If only a single isotropic material is present and the shear center offsets are both zero, then the material stiffness is as follows, where E and G are the elastic modulus and shear modulus:props[0] - Area, A props[1] - Moment of inertia about centroidal y axis, Iyy props[2] - Moment of inertia about centroidal z axis, Izz props[3] - Product of inertia with respect to centroidal axis, Iyz props[4] - Angle of principal moments of inertia, Ang props[5] - Torsional constant, J props[6] - Shear factor along y axis, Ksy props[7] - Shear factor along z axis, Ksz props[8] - Coupled shear factor, Ksyz props[9] - Eccentricity of centroid from origin along y axis, Ey props[10] - Eccentricity of centroid from origin along z axis, Ez props[11] - Shear center offset from centroid along y axis, Dsy props[12] - Shear center offset from centroid along z axis, Dsz props[13] - Warping coefficient, Cw props[14] - Neutral axis offset from centroid along y axis props[15] - Neutral axis offset from centroid along z axis
If the shear center offset is not zero, BeamSectCalculator can compute dmat usingdmat[ 0] = E * A dmat[ 2] = E * Iyy dmat[ 4] = E * Iyz dmat[ 5] = E * Izz dmat[ 9] = G * J dmat[14] = G * Ksy * A dmat[19] = G * Ksyz * A dmat[20] = G * Ksz * A
vis_BeamSectCalculatorProps()
. The material stiffness is computed about the beam centroid.Inquire of beam section properties and material stiffness matrices as output arguments using
void vis_BeamSectCalculatorGetProps (vis_BeamSectCalculator *BeamSectCalculator, Vfloat props[BEAMSECT_MAXPROPS], Vfloat dmat[21]) void vis_BeamSectCalculatorGetPropsdv (vis_BeamSectCalculator *BeamSectCalculator, Vdouble props[BEAMSECT_MAXPROPS], Vdouble dmat[21])
- Parameters:
p – Pointer to BeamSectCalculator object.
props – Overall beam section properties
dmat – Beam material stiffness matrix
-
void vis_BeamSectCalculatorGetPropsdv(vis_BeamSectCalculator *p, Vdouble props[], Vdouble dmat[21])
get general beam section properties
See
vis_BeamSectCalculatorSetProps()
-
void vis_BeamSectCalculatorSetElasPropdv(vis_BeamSectCalculator *p, Vint mid, Vint type, Vdouble elas[])
set elastic material properties
Set material properties for the beam cross section. The default material properties are of type
SYS_MAT_ISOTROPIC
with Young’s modulus, E = 1. and Poisson’s ratio, nu = 0. The shear modulus, G, is set to E/(2.*(1+nu)). If type is set toSYS_MAT_ISOTROPIC
then input 2 values, E and Nu. If type is set toSYS_MAT_ORTHOTROPIC
then input 9 values, Ex, Ey, Ez, Nuxy, Nuyz, Nuxz, Gxy, Gyz, Gxz. The material id mid must match the id specified invis_BeamSectSetLoop()
.- Errors
VIS_ERROR_VALUE
is generated if an improper property is specified.
- Parameters:
p – Pointer to BeamSectCalculator object.
mid – Material property id
type – Material property type
x=SYS_MAT_ISOTROPIC Isotropic material =SYS_MAT_ORTHOTROPIC Orthotropic material
elas – Array of elastic properties
-
void vis_BeamSectCalculatorSetParamd(vis_BeamSectCalculator *p, Vint ptype, Vdouble dparam)
set beam section compute parameters
Set beam section compute parameters. The parameter
BEAMSECT_EDGELENGTH
sets the target edge length of the quality triangulation used to compute section properties. A value of zero forBEAMSECT_EDGELENGTH
means that the internally computed edge length will be used. By defaultBEAMSECT_EDGELENGTH
is set to zero.The parameter
BEAMSECT_ERRORTOL
sets the error tolerance to be achieved when adaptive refinement is enabled. Usevis_BeamSectSetParami()
with parameterBEAMSECT_REFINE
to enable adaptive error refinement. By defaultBEAMSECT_ERRORTOL
is set to.01
(one percent).- Errors
VIS_ERROR_ENUM
is generated if an improper ptype is specified.
- Parameters:
p – Pointer to BeamSectCalculator object.
ptype – Type of compute parameter to set
x=BEAMSECT_EDGELENGTH Target quality edge length =BEAMSECT_ERROROL Error tolerance
dparam – Specifies the value that ptype will be set to.
-
void vis_BeamSectCalculatorSetParami(vis_BeamSectCalculator *p, Vint ptype, Vint iparam)
set beam section display parameters
Set beam section display parameters.
The parameter
BEAMSECT_MESHSMOOTH
toggles the smoothing of the quality grid. By defaultBEAMSECT_MESHSMOOTH
is set toVIS_OFF
.The parameter
BEAMSECT_MAXELEMENTS
sets the maximum number of elements to be performed during adaptive error refinement. A value of zero means the number of elements is unlimited. By defaultBEAMSECT_MAXELEMENTS
is set to 0.The parameter
BEAMSECT_MAXERRITER
sets the maximum number of iterations to be performed during adaptive error refinement. By defaultBEAMSECT_MAXERRITER
is set to 10.The parameter
BEAMSECT_REFINE
toggles adaptive error refinement. By defaultBEAMSECT_REFINE
is set toVIS_OFF
.The parameter
BEAMSECT_VABS
toggles the VABS technology. This is required for either multi-material or orthotropic material models. By defaultBEAMSECT_VABS
is set toVIS_OFF
.- Errors
VIS_ERROR_ENUM
is generated if an improper ptype is specified.
- Parameters:
p – Pointer to BeamSectCalculator object.
ptype – Type of display parameter to set
x=BEAMSECT_MESHSMOOTH Smooth quality grid =BEAMSECT_MAXELEMENTS Maximum number of elements =BEAMSECT_MAXERRITER Maximum number of adaptive iterations =BEAMSECT_REFINE Toggle adaptive error refinement =BEAMSECT_VABS Toggle VABS technology
iparam – Specifies the integer value that ptype will be set to.
-
void vis_BeamSectCalculatorGetNum(vis_BeamSectCalculator *p, Vint *npoints, Vint *nloops, Vint *npolylines, Vint *ntris, Vint *nqualpnts, Vint *nqualtris)
get number of points, loops and generated triangles
Return the number of beam section geometry points and loops defined or generated. The points, loops and polylines may have been explicitly specified using
vis_BeamSectCalculatorSetPoint()
,or implicitly defined as a built-in section geometry using
vis_BeamSectCalculatorSetDimensions()`. Information about individual points may be returned usingvis_BeamSectCalculaotrGetPoint()
The number of minimum triangles required to fill the beam section may also be returned. Use
vis_BeamSectCalculatorGetTri()
to return the minimum triangle point connectivity. The number of quality points and triangles is zero untilvis_BeamSectCalculatorProps()
is called. The quality points and triangles are related to the finite element mesh generated for the beam section property analysis. Usevis_BeamSectCalculatorGetQualTri()
to return the quality triangle point connectivity. Quality points consist of the input boundary points and points generated in the interior of the beam section as a result of the internal finite element mesh generation. Usevis_BeamSectCalculatorGetPoint()
to return the quality points.- Parameters:
p – Pointer to BeamSectCalculator object.
npoints – [out] Number of points defined or generated
nloops – [out] Number of loops defined or generated
npolylines – [out] Number of polylines defined or generated (==0)
ntris – [out] Number of minimum triangles generated
nqualpnts – [out] Number of quality points generated
nqualtris – [out] Number of quality triangles generated