The BeamSect module is designed to manage the cross sectional properties of the beam. The BeamElem module models the complete beam element by managing the axial properties of the beam explicitly and the cross sectional properties using a BeamSect object as an attribute object.
The BeamElem module does not directly draw results quantities on beam surfaces, however it provides functions to compute coordinates and results on beam surfaces in a form which can be directed to an isovalue, marker or value object for drawing the results quantities in some way.
The functions associated with a BeamElem object are the following.
*vis_BeamElemBegin - create an instance of a BeamElem object vis_BeamElemEnd - destroy an instance of a BeamElem object vis_BeamElemError - return BeamElem object error flag
vis_BeamElemCoords - compute beam coordinates vis_BeamElemCurv - draw beam element vis_BeamElemDiagram - draw beam element diagram vis_BeamElemDirCos - compute beam local direction cosines vis_BeamElemSetEndFactors - set endpoint node section factors vis_BeamElemSetEndFlag - set ends to be drawn vis_BeamElemSetLocalSystem - set local coordinate system convention vis_BeamElemSetObject - set pointers to attribute objects vis_BeamElemSetParami - set display parameters vis_BeamElemSetTopology - set input beam topology
Tapered beams may be modelled by specifying separate scale factors to be applied to the beam section geometry at each beam end point. These scale factors are set using vis_BeamElemSetEndFactors. Intermediate nodes on the beam, if they exist, are given scale factors which linearly vary between the end points.
The orientation of the sections of the beam relative to the beam axis are specified using two optional orientation vectors at each node. If orientation vectors are not supplied the convention used for constructing the local coordinate system of the beam sections at each node is specified using vis_BeamElemSetLocalSystem. Use vis_BeamElemDirCos to compute the local coordinate system direction cosine matrix at the beam centroid or beam nodes. Use vis_BeamElemCoords to compute the coordinates of the beam nodes at a beam section point.
A complete beam element is drawn using vis_BeamElemCurv. If the beam topology has been set to VIS_SHAPEPOINT by vis_BeamElemSetTopology, then only a single cross section is drawn. If the beam shape is VIS_SHAPELINE then a specified number of cross sections and the beam reference axis or external surfaces along the beam axis are drawn. Beams may be drawn with up to 13 nodes along the length of the beam. Pipe bends and axisymmetric ring stiffeners may be drawn by computing a series of "nodes" (less than or equal to 13) which approximate the curved beam in space.
A contour diagram, such as a shear or bending moment diagram, may be drawn using vis_BeamElemDiagram. The argument list is identical to vis_BeamElemCurv with the addition of a vector of scalar data at the nodes and an axis identifier to have the diagram oriented along the beam y' or z' axis.
*vis_BeamElemBegin - create an instance of an BeamElem object
vis_BeamElem *vis_BeamElemBegin ()
None
Destroy an instance of a BeamElem object using
void vis_BeamElemEnd (vis_BeamElem *beamelem)
Return the current value of a BeamElem object error flag using
Vint vis_BeamElemError (vis_BeamElem *beamelem)
vis_BeamElemCoords - compute beam coordinates
void vis_BeamElemCoords (vis_BeamElem *beamelem, Vint id, Vint reflectflag, Vfloat x[][3], Vint v1flag, Vfloat v1[][3], Vint v2flag, Vfloat v2[][3], Vfloat xp[][3])
beamelem Pointer to BeamElem object. id Beam section point id. reflectflag Reverse sense of output coordinates in array xp. =VIS_OFF Do no reverse sense. =VIS_ON Reverse sense. x Array of point locations defining beam axis. v1flag User supplied beam y' axis normal flag =VIS_NODATA No normals provided =VIS_VERTEXDATA Vertex normals are provided v1 Array of user supplied normals v2flag User supplied beam z' axis normal flag =VIS_NODATA No normals provided =VIS_VERTEXDATA Vertex normals are provided v2 Array of user supplied normals
xp Array of point locations of beam at beam section point id.
vis_BeamElemCurv - draw beam element
void vis_BeamElemCurv (vis_BeamElem *beamelem, Vfloat x[][3], Vint v1flag, Vfloat v1[][3], Vint v2flag, Vfloat v2[][3])
beamelem Pointer to BeamElem object. x Array of point locations defining beam axis. v1flag User supplied beam y' axis normal flag =VIS_NODATA No normals provided =VIS_VERTEXDATA Vertex normals are provided v1 Array of user supplied normals v2flag User supplied beam z' axis normal flag =VIS_NODATA No normals provided =VIS_VERTEXDATA Vertex normals are provided v2 Array of user supplied normals
None
If the beam section shear center and/or centroid are to be properly drawn be sure that the section properties have been computed or set in the BeamSect attribute object.
vis_BeamElemDiagram - draw beam element diagram
void vis_BeamElemDiagram (vis_BeamElem *beamelem, Vfloat s[], Vint iaxis, Vfloat x[][3], Vint v1flag, Vfloat v1[][3], Vint v2flag, Vfloat v2[][3])
beamelem Pointer to BeamElem object. s Array of scalar field values. iaxis Axis indicator =SYS_YAXIS Diagram along y' axis =SYS_ZAXIS Diagram along z' axis x Array of point locations defining beam axis. v1flag User supplied beam y' axis normal flag =VIS_NODATA No normals provided =VIS_VERTEXDATA Vertex normals are provided v1 Array of user supplied normals v2flag User supplied beam z' axis normal flag =VIS_NODATA No normals provided =VIS_VERTEXDATA Vertex normals are provided v2 Array of user supplied normals
None
vis_BeamElemDirCos - compute beam local direction cosines
void vis_BeamElemDirCos (vis_BeamElem *beamelem, Vint centroidflag, Vfloat x[][3], Vint v1flag, Vfloat v1[][3], Vint v2flag, Vfloat v2[][3], Vfloat tm[][3][3])
beamelem Pointer to BeamElem object. centroidflag Compute direction cosine matrix at beam centroid flag. =VIS_OFF Return direction cosine matrices at beam nodes =VIS_ON Return direction cosine matrix at beam centroid x Array of point locations defining beam axis. v1flag User supplied beam y' axis normal flag =VIS_NODATA No normals provided =VIS_VERTEXDATA Vertex normals are provided v1 Array of user supplied normals v2flag User supplied beam z' axis normal flag =VIS_NODATA No normals provided =VIS_VERTEXDATA Vertex normals are provided v2 Array of user supplied normals
tm Array of direction cosine matrices at the beam nodes or a single direction cosine matrix at the beam centroid.
vis_BeamElemSetEndFactors - set beam endpoint section factors
void vis_BeamElemSetEndFactors (vis_BeamElem *beamelem, Vfloat factors[2])
beamelem Pointer to BeamElem object. factors Scale factors to be applied to the beam endpoint sections.
None
vis_BeamElemSetEndFlag - set ends to be drawn
void vis_BeamElemSetEndFlag (vis_BeamElem *beamelem, Vint flag)
beamelem Pointer to BeamElem object. flag Element end bit flags to indicate which beam ends are to have cross sections drawn.
None
This flag is used only if a ElemRep of VIS_ELEMREP_SOLID is specified in the visualization context. The default end flag is 3.
vis_BeamElemSetLocalSystem - set local coordinate system convention
void vis_BeamElemSetLocalSystem (vis_BeamElem *beamelem, Vint type, Vfloat vec[], Vfloat angle)
beamelem Pointer to BeamElem object. type Local system convention =SYS_ELEMSYS_STANDARD Standard orientation =SYS_ELEMSYS_POSITION Orient to position vector =SYS_ELEMSYS_GLOBALPROJECT Orient to global axis =SYS_ELEMSYS_VECTOR Orient to direction vector =SYS_ELEMSYS_VECTORELEMNODE Orient to nodal direction vectors =SYS_ELEMSYS_BISECTOR Orient to element bisector =SYS_ELEMSYS_FIRSTEDGE Orient to element first edge vec Orientation position or direction vector(s) angle Angle to rotate beam y',z' axes about the beam x' axis in degrees.
None
If the beam element shape is VIS_SHAPEPOINT, then the axis of the beam is assumed to be the global x axis. In order to orient a point beam element arbitrarily in space, the orientation vectors v1 and v2 must be specified directly in the call to vis_BeamElemCurv.
For a description of element coordinate systems, type, and associated
orientation vector data, please see
1.4 Element Coordinate Systems
vis_BeamElemSetObject - set pointers to attribute objects
void vis_BeamElemSetObject (vis_BeamElem *beamelem, Vint objecttype, Vobject *object)
beamelem Pointer to BeamElem object. objecttype The name of the object type to be set. =VIS_BEAMSECT BeamSect object =VIS_COLORMAP ColorMap object =VGL_DRAWFUN DrawFun object =VIS_LEVELS Levels object =VIS_TRANSMAP TransMap object =VIS_VISCONTEXT VisContext object object Pointer to the object to be set.
None
vis_BeamElemSetParami - set display parameters
void vis_BeamElemSetParami (vis_BeamElem *beamelem, Vint ptype, Vint iparam)
beamelem Pointer to BeamElem object. ptype Type of display parameter to set =BEAMELEM_HOLE Toggle drawing of holes surfaces. =BEAMELEM_SECT Draw iparam Specifies the integer value that ptype will be set to. =VIS_OFF Turn parameter off =VIS_ON Turn parameter on
None
The parameter BEAMELEM_SECT toggles the coloring of beam axial surfaces and edges depending upon the color settings in the BeamSect attribute object. This flag is used only if an ElemRep of VIS_ELEMREP_SOLID is specified. By default BEAMELEM_SECT is set to VIS_ON.
vis_BeamElemSetTopology - set beam element topology
void vis_BeamElemSetTopology (vis_BeamElem *beamelem, Vint shape, Vint maxi)
beamelem Pointer to BeamElem object. shape Element shape parameter =VIS_SHAPEPOINT Point =VIS_SHAPELINE Line maxi The number of points defining subsequent beam elements. If maxi = 0 then the linear element form of the element is assumed (defined by 2 endpoints). If 2 <= maxi <= 4 then a Lagrange finite element is assumed. If shape is VIS_SHAPEPOINT, then maxi is ignored.
None
The BeamSect module may also be used as an attribute object for a BeamElem object. In this case, beam section geometry is drawn indirectly by calling the drawing methods of the BeamElem object.
The functions associated with a BeamSect object are the following.
*vis_BeamSectBegin - create an instance of a BeamSect object vis_BeamSectEnd - destroy an instance of a BeamSect object vis_BeamSectError - return BeamSect object error flag
vis_BeamSectCoords - compute coordinates on beam section vis_BeamSectDef - define beam section type Inq - inquire beam section type vis_BeamSectDraw - draw beam section vis_BeamSectElemStrsStrn - compute stress and strain at element nodes vis_BeamSectGetDouble - get double precision solution information vis_BeamSectGetNum - get number of points, loops and triangles vis_BeamSectGetQualTri - get quality triangle connectivity. vis_BeamSectGetTri - get minimum triangle connectivity. vis_BeamSectProps - compute beam section properties vis_BeamSectSetDimensions - set dimensions of built-in section type GetDimensions - get dimensions of built-in section type vis_BeamSectSetElasProp - set elastic material properties. vis_BeamSectSetLoop - set loop point connectivity, etc. GetLoop - get loop point connectivity, etc. vis_BeamSectSetObject - set pointers to attribute objects vis_BeamSectSetParamd - set beam section compute parameters vis_BeamSectSetParami - set beam section display parameters vis_BeamSectSetPoint - set location of point on beam section GetPoint - get location of point on beam section vis_BeamSectSetPolyLine - set polyline point connectivity, etc. GetPolyLine - get polyline point connectivity, etc. vis_BeamSectSetProps - set beam section properties GetProps - get beam section properties vis_BeamSectSetReflect - set beam section reflection vis_BeamSectSetRotate - set beam section rotation vis_BeamSectSetRound - set beam section point round flag GetRound - get beam section point round flag vis_BeamSectNumSegments - get number of segments vis_BeamSectSetSegments - set segments section type GetSegments - get segments section type vis_BeamSectStrsStrn - compute stress and strain at point id vis_BeamSectStrsStrnCoord - compute stress and strain at coordinate vis_BeamSectTransformCoord - transform coordinates
vis_BeamSectWrite - write input section geometry to file vis_BeamSectRead - read input section geometry from file
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_BeamSectSetRotate, the coordinate reflections are specified using vis_BeamSectSetReflect. 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_BeamSectSetElasProp. General beam section properties, type BEAMSECT_PROPS, are input using vis_BeamSectSetProps. Use vis_BeamSectSetParami to set display options to draw the section centroid, shear center, etc. A generic diagram of a beam cross section appears below illustrating the beam section yz axis system and the y'z' centroidal principal axis system.
By default, BeamSect assumes a homogeneous isotropic beam. If a composite beam is to be analyzed, then the user must use vis_BeamSectSetParami 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_BeamSectSetElasProp must use material identifier 1 and be of type SYS_MAT_ISOTROPIC. Any material loops defined using vis_BeamSectSetLoop must reference material identifier 1.
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.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
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 BeamSect 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_BeamSectProps. 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.
The number of points, loops, polylines, and minimum and quality triangles defined at any time may be returned using vis_BeamSectGetNum. Use vis_BeamSectGetPoint and vis_BeamSectGetLoop to access the current point coordinates and loop connectivity. Use vis_BeamSectGetPolyLineto access the current polyline connectivity. Use vis_BeamSectGetTri and vis_BeamSectGetQualTri to access triangle connectivity.
Functions are also available to compute the world coordinates and results quantities of a point on a beam section positioned in space. Use vis_BeamSectCoords to perform these computations. The function vis_BeamSectStrsStrn computes the tensor stress and strain at a point with a given id on a point on the cross section given the centroidal strains, curvatures and twist. This function is not valid in a composite beam because a point may be shared by several materials and the resulting stress is ambiguous. Instead, use vis_BeamSectElemStrsStrn. Likewise, vis_BeamSectStrsStrnCoord computes the same quantities given a coordinate value. If the coordinate is located on the boundary of two materials in a composite beam then the value returned is that of the first element where the point is found. For a more precise evaluation use vis_BeamSectElemStrsStrn.
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 * ewhere dmat can be obtained with vis_BeamSectGetProps. 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*Nywhere 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_BeamSectGetProps:
Dsy = props[11] Dsz = props[12]
Together with other VisTools modules such as Contour and using the beam section geometry access routines the user may generate customized displays of results quantities such as contours of stress on the 3D surfaces of a beam element cross section.
The BeamSect 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
*vis_BeamSectBegin - create an instance of an BeamSect object
vis_BeamSect *vis_BeamSectBegin ()
None
Destroy an instance of a BeamSect object using
void vis_BeamSectEnd (vis_BeamSect *beamsect)
Return the current value of a BeamSect object error flag using
Vint vis_BeamSectError (vis_BeamSect *beamsect)
vis_BeamSectCoords - compute coordinates on beam section
void vis_BeamSectCoords (vis_BeamSect *beamsect, Vint id, Vfloat x[3], Vfloat vy[3], Vfloat vz[3], Vfloat xp[3]) void vis_BeamSectCoordsdv (vis_BeamSect *beamsect, Vint id, Vdouble x[3], Vdouble vy[3], Vdouble vz[3], Vdouble xp[3])
beamsect Pointer to BeamSect object. id Beam section point id. x Location of origin of beam section yz axes vy Normal vector in direction of section y axis in space vz Normal vector in direction of section z axis in space
xp Location of beam section point id.
vis_BeamSectDef - define beam section type
void vis_BeamSectDef (vis_BeamSect *beamsect, Vint type)
beamsect Pointer to BeamSect object. type Beam section type =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
None
Inquire of defined type as an output argument using
void vis_BeamSectInq (vis_BeamSect *beamsect, Vint *type)
vis_BeamSectDraw - draw beam section
void vis_BeamSectDraw (vis_BeamSect *beamsect, Vfloat x[3], Vfloat tm[3][3], Vint reflectflag)
beamsect Pointer to BeamSect object. x Location of beam section coordinate origin tm Orientation of beam section coordinate system. reflectflag Reverse sense of output polygons =VIS_OFF Do no reverse sense. =VIS_ON Reverse sense.
None
If beam section geometry has been defined then points are drawn at the points on loops defining the beam section. Lines are drawn to represent the defined loops. The loop lines may be color mapped to the loop id. The section surface may be filled.
In addition, if the appropriate flags have been set using vis_BeamSectSetParami, axes are drawn to represent the beam section coordinate system, shear center, etc.
vis_BeamSectElemStrsStrn - compute beam stress and strain at element nodes
void vis_BeamSectElemStrsStrn (vis_BeamSect *beamsect, Vint eid, Vfloat eks[6], Vfloat strs[], Vfloat strn[]); void vis_BeamSectStrsStrndv (vis_BeamSect *beamsect, Vint eid, Vdouble eks[6], Vdouble strs[], Vdouble strn[]);
beamsect Pointer to BeamSect object. eid Beam section quality element id. eks Strains, curvatures and twist.
strs Stress tensor at element nodes strn Strain tensor at element nodes
Note that if the right-hand rotations about the x,y,z axes are denoted by rx,ry,rz, then the twist, twist and curvatures, kyy,kzz are given by:
twist = rx,x kyy = ry,x kzz = -rz,x
vis_BeamSectGetDouble - get double precision solution information
void vis_BeamSectGetDouble (vis_BeamSect *beamsect, Vint type, Vdouble param[])
beamsect Pointer to BeamSect object. type Type of integer information to query =BEAMSECT_EDGELEN Target quality triangle edge length =BEAMSECT_ERROR Achieved error measure
param Returned double precision information
vis_BeamSectGetNum - get number of points, loops and generated triangles
void vis_BeamSectGetNum (vis_BeamSect *beamsect, Vint *npoints, Vint *nloops, Vint *npolylines, Vint *ntris) Vint *nqualpnts, Vint *nqualtris)
beamsect Pointer to BeamSect object.
npoints Number of points defined or generated nloops Number of loops defined or generated npolylines Number of polylines defined or generated ntris Number of minimum triangles generated nqualpnts Number of quality points generated nqualtris Number of quality triangles generated
The number of minimum triangles required to fill the beam section may also be returned. Use vis_BeamSectGetTri to return the minimum triangle point connectivity. The number of quality points and triangles is zero until vis_BeamSectProps is called. The quality points and triangles are related to the finite element mesh generated for the beam section property analysis. Use vis_BeamSectGetQualTri 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. Use vis_BeamSectGetPoint to return the quality points.
vis_BeamSectGetTri - get minimum triangle connectivity
void vis_BeamSectGetTri (vis_BeamSect *beamsect, Vint id, Vint ix[3])
beamsect Pointer to BeamSect object. id Beam section minimum triangle id.
ix Point connectivity of triangle
vis_BeamSectGetQualTri - get triangle connectivity
void vis_BeamSectGetQualTri (vis_BeamSect *beamsect, Vint id, Vint ix[6], Vint *mid)
beamsect Pointer to BeamSect object. id Beam section quality triangle id.
ix Point connectivity of triangle mid Material property id
vis_BeamSectProps - compute beam section properties
void vis_BeamSectProps (vis_BeamSect *beamsect)
beamsect Pointer to BeamSect object.
None
Material stiffness properties consist of the beam section extensional (including torsional), bending and transverse shear stiffness matrices. Material stiffness properties are only computed if material properties have been defined using vis_BeamSectSetElasProp. Use vis_BeamSectGetProps to return the computed beam section properties. The beam section properties may be explicitly set using vis_BeamSectSetProps.
vis_BeamSectSetDimensions - set dimensions of built-in geometries
void vis_BeamSectSetDimensions (vis_BeamSect *beamsect, Vfloat dimes[]) void vis_BeamSectSetDimensionsdv (vis_BeamSect *beamsect, Vdouble dimes[])
beamsect Pointer to BeamSect object. dimes Dimensions of section.
None
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_BeamSectGetDimensions (vis_BeamSect *beamsect, Vfloat dimes[]) void vis_BeamSectGetDimensionsdv (vis_BeamSect *beamsect, Vdouble dimes[])
vis_BeamSectSetElasProp - set elastic material properties
void vis_BeamSectSetElasProp (vis_BeamSect *beamsect, Vint mid, Vint type, Vfloat elas[]) void vis_BeamSectSetElasPropdv (vis_BeamSect *beamsect, Vint mid, Vint type, Vdouble elas[])
beamsect Pointer to BeamSect object. mid Material property id type Material property type =SYS_MAT_ISOTROPIC Isotropic material =SYS_MAT_ORTHOTROPIC Orthotropic material elas Array of elastic properties
None
vis_BeamSectSetLoop - set loop point connectivity, etc.
void vis_BeamSectSetLoop (vis_BeamSect *beamsect, Vint id, Vint mid, Vint npts, Vint ix[])
beamsect Pointer to BeamSect object. id Loop id mid Material id. A value of 0 indicates a hole. npts Number of points defining loop ix Point connectivity of loop
None
The loop is assumed to be closed, therefore the last point identifier in the loop should not duplicate the first. All loops must be input with a counter clockwise connectivity in the beam section yz plane.
Inquire of loop geometry for a given loop id as output arguments using
void vis_BeamSectGetLoop (vis_BeamSect *beamsect, Vint id, Vint *mid, Vint *npts, Vint ix[])
vis_BeamSectSetObject - set pointers to attribute objects
void vis_BeamSectSetObject (vis_BeamSect *beamsect, Vint objecttype, Vobject *object)
beamsect Pointer to BeamSect object. objecttype The name of the object type to be set. =VIS_COLORMAP ColorMap object =VGL_DRAWFUN DrawFun object =VIS_LEVELS Levels object =VIS_TRANSMAP TransMap object =VIS_VISCONTEXT VisContext object object Pointer to the object to be set.
None
vis_BeamSectSetParamd - set beam section compute parameters
void vis_BeamSectSetParamd (vis_BeamSect *beamsect, Vint ptype, Vdouble dparam)
beamsect Pointer to BeamSect object. ptype Type of compute parameter to set =BEAMSECT_EDGELENGTH Target quality edge length =BEAMSECT_ERROROL Error tolerance dparam Specifies the value that ptype will be set to.
None
The parameter BEAMSECT_ERRORTOL sets the error tolerance to be achieved when adaptive refinement is enabled. Use vis_BeamSectSetParami with parameter BEAMSECT_REFINE to enable adaptive error refinement. By default BEAMSECT_ERRORTOL is set to .01 (one percent).
vis_BeamSectSetParami - set beam section display parameters
void vis_BeamSectSetParami (vis_BeamSect *beamsect, Vint ptype, Vint iparam)
beamsect Pointer to BeamSect object. ptype Type of display parameter to set =BEAMSECT_AXESBASIC Draw basic local coordinate system =BEAMSECT_AXESPRINCIPAL Draw principal axes =BEAMSECT_CENTROID Draw centroid glyph =BEAMSECT_SHEARCENTER Draw shear center marker =BEAMSECT_QUALITYGRID Draw edges of internal finite element mesh flag. =BEAMSECT_POLYLINE Draw section using polylines flag =BEAMSECT_MESHREFCORN Refine quality grid near corners =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. =VIS_OFF Turn parameter off =VIS_ON Turn parameter on =BEAMSECT_CENTROID_NONE Centroid not drawn =BEAMSECT_CENTROID_CIRCLE Centroid drawn as circle =BEAMSECT_CENTROID_SPHERE Centroid drawn as sphere
None
The parameter BEAMSECT_AXESPRINCIPAL draws the beam section principal axes at the section centroid. By default BEAMSECT_AXESPRINCIPAL is set to VIS_OFF.
The parameter BEAMSECT_CENTROID draws a circle or sphere glyph at the beam section centroid. By default BEAMSECT_CENTROID is set to BEAMSECT_CENTROID_NONE.
The parameter BEAMSECT_SHEARCENTER draws a marker at the beam section shear center location. By default BEAMSECT_SHEARCENTER is set to VIS_OFF.
The parameter BEAMSECT_QUALITYGRID draws the edges of the internal finite element mesh. This mesh is the quality triangulation. By default BEAMSECT_QUALITYGRID is set to VIS_OFF.
The parameter BEAMSECT_POLYLINE draws the beam section using the polyline representation rather than the loop representation. By default BEAMSECT_POLYLINE is set to VIS_OFF.
The parameter BEAMSECT_MESHREFCORN toggles the refinement of the quality grid near reentrant corners. By default BEAMSECT_MESHREFCORN is set to VIS_OFF.
The parameter BEAMSECT_MESHSMOOTH toggles the smoothing of the quality grid. By default BEAMSECT_MESHSMOOTH is set to VIS_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 default BEAMSECT_MAXELEMENTS is set to 0.
The parameter BEAMSECT_MAXERRITER sets the maximum number of iterations to be performed during adaptive error refinement. By default BEAMSECT_MAXERRITER is set to 10.
The parameter BEAMSECT_REFINE toggles adaptive error refinement. By default BEAMSECT_REFINE is set to VIS_OFF.
The parameter BEAMSECT_VABS toggles the VABS technology. This is required for either multi-material or orthotropic material models. By default BEAMSECT_VABS is set to VIS_OFF.
vis_BeamSectSetPoint - set location of point on beam section
void vis_BeamSectSetPoint (vis_BeamSect *beamsect, Vint id, Vfloat yz[2]) void vis_BeamSectSetPointdv (vis_BeamSect *beamsect, Vint id, Vdouble yz[2])
beamsect Pointer to BeamSect object. id Point id, 0 < id yz Vector of y and z coordinates of point on beam section
None
Inquire of point coordinates for a given point id as an output argument using
void vis_BeamSectGetPoint (vis_BeamSect *beamsect, Vint id, Vfloat yz[2]) void vis_BeamSectGetPointdv (vis_BeamSect *beamsect, Vint id, Vdouble yz[2])
vis_BeamSectSetPolyLine - set polyline point connectivity, etc.
void vis_BeamSectSetPolyLine (vis_BeamSect *beamsect, Vint id, Vint type, Vint npts, Vint ix[])
beamsect Pointer to BeamSect object. id Polyline id, 0 < id < 8 type Polyline closed loop flag =VIS_OFF polyline is not a closed loop =VIS_ON polyline is a closed loop npts Number of points defining polyline ix Point connectivity of polyline
None
Any polyline forming a closed loop should be input with a counter clockwise connectivity in the beam section yz plane.
Inquire of polyline geometry for a given polyline id as output arguments using
void vis_BeamSectGetPolyLine (vis_BeamSect *beamsect, Vint id, Vint *type, Vint *npts, Vint ix[])
vis_BeamSectSetProps - set general beam section properties
void vis_BeamSectSetProps (vis_BeamSect *beamsect, Vfloat props[BEAMSECT_MAXPROPS], Vfloat dmat[21]) void vis_BeamSectSetPropsdv (vis_BeamSect *beamsect, Vdouble props[BEAMSECT_MAXPROPS], Vdouble dmat[21])
beamsect Pointer to BeamSect object. props Overall beam section properties dmat Beam material stiffness matrix
None
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, BeamSect can compute dmat using vis_BeamSectProps. The material stiffness is computed about the beam centroid.dmat[ 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
Inquire of beam section properties and material stiffness matrices as output arguments using
void vis_BeamSectGetProps (vis_BeamSect *beamsect, Vfloat props[BEAMSECT_MAXPROPS], Vfloat dmat[21]) void vis_BeamSectGetPropsdv (vis_BeamSect *beamsect, Vdouble props[BEAMSECT_MAXPROPS], Vdouble dmat[21])
vis_BeamSectSetReflect - set beam section reflection
void vis_BeamSectSetReflect (vis_BeamSect *beamsect, Vint reflecty, Vint reflectz)
beamsect Pointer to BeamSect object. reflecty Flag to reflect y-coordinate reflectz Flag to reflect z-coordinate
None
vis_BeamSectSetRotate - set beam section rotation
void vis_BeamSectSetRotate (vis_BeamSect *beamsect, Vfloat angle) void vis_BeamSectSetRotatedv (vis_BeamSect *beamsect, Vdouble angle)
beamsect Pointer to BeamSect object. angle Angle of rotation in degrees
None
vis_BeamSectSetRound - set round flag of point on beam section
void vis_BeamSectSetRound (vis_BeamSect *beamsect, Vint id, Vint roundflag)
beamsect Pointer to BeamSect object. id Point id, 0 < id roundflag "Round" flag at point
None
Inquire of the point roundflag for a given point id as an output argument using
void vis_BeamSectGetRound (vis_BeamSect *beamsect, Vint id, Vint *roundflag)
vis_BeamSectNumSegments - get number of segments
void vis_BeamSectNumSegments (vis_BeamSect *beamsect, Vint *nsegs,
beamsect Pointer to BeamSect object.
nsegs Number of segments
vis_BeamSectSetSegments - set segments section type
void vis_BeamSectSetSegments (vis_BeamSect *beamsect, Vint nsegs, Vfloat thick[], Vfloat yz[][2]) void vis_BeamSectSetSegmentsdv (vis_BeamSect *beamsect, Vint nsegs, Vdouble thick[], Vdouble yz[][2])
beamsect Pointer to BeamSect object. nsegs Number of segments thick Vector of nsegs segment thicknesses yz Vector of nsegs+1 segment points
None
Inquire of segment geometry using
void vis_BeamSectGetSegments (vis_BeamSect *beamsect, Vint *nsegs, Vfloat thick[], Vfloat yz[][2]) void vis_BeamSectGetSegmentsdv (vis_BeamSect *beamsect, Vint *nsegs, Vdouble thick[], Vdouble yz[][2])
vis_BeamSectStrsStrn - compute beam stress and strain
void vis_BeamSectStrsStrn (vis_BeamSect *beamsect, Vint id, Vfloat eks[6], Vfloat strs[6], Vfloat strn[6]); void vis_BeamSectStrsStrndv (vis_BeamSect *beamsect, Vint id, Vdouble eks[6], Vdouble strs[6], Vdouble strn[6]);
beamsect Pointer to BeamSect object. id Beam section point id. eks Strains, curvatures and twist.
strs Stress tensor strn Strain tensor
Note that if the right-hand rotations about the x,y,z axes are denoted by rx,ry,rz, then the twist, twist and curvatures, kyy,kzz are given by:
twist = rx,x kyy = ry,x kzz = -rz,x
vis_BeamSectStrsStrnCoord - compute beam stress and strain
void vis_BeamSectStrsStrnCoord (vis_BeamSect *beamsect, Vfloat yz[2], Vfloat eks[6], Vfloat strs[6], Vfloat strn[6], Vint *status); void vis_BeamSectStrsStrnCoorddv (vis_BeamSect *beamsect, Vdouble yz[2], Vdouble eks[6], Vdouble strs[6], Vdouble strn[6], Vint *status);
beamsect Pointer to BeamSect object. yx Beam section point coordinates. eks Strains, curvatures and twist.
strs Stress tensor strn Strain tensor status Result status
If the function is unable to locate the given point in the cross section status is set to 1. Otherwise it is set to 0.
If the point is on a boundary between multiple material models then the material of the first element is chosen.
vis_BeamSectTransformCoord - transform coordinates
void vis_BeamSectTransformCoord (vis_BeamSect *beamsect, Vfloat x[3], Vfloat y[3]) void vis_BeamSectTransformCoorddv (vis_BeamSect *beamsect, Vdouble x[3], Vdouble y[3])
beamsect Pointer to BeamSect object. x Untransformed coordinate
y Transformed coordinate
vis_BeamSectRead - read input section geometry from file
void vis_BeamSectRead (vis_BeamSect *beamsect, Vint type, const Vchar *path)
beamsect Pointer to BeamSect object. type File type =SYS_ASCII ASCII format =SYS_BINARY Binary format path File path
None
vis_BeamSectWrite - write input section geometry to file
void vis_BeamSectWrite (vis_BeamSect *beamsect, Vint type, const Vchar *path)
beamsect Pointer to BeamSect object. type File type =SYS_ASCII ASCII format =SYS_BINARY Binary format path File path
None