12. Shell Elements and Shell Walls - ShellElem, ShellWall
The ShellElem and ShellWall modules together provide a comprehensive set of features for computing and visualizing shell element geometry and results. Designed primarily for applications in solid mechanics, these modules also have use in other fields of engineering analysis, such as thermodynamics, in which “shell” assumptions may be made. In general, a shell element is a specialization of a three dimensional volume in which a given direction, the shell thickness, may be assumed to be small with respect to the other two directions, the shell surface.
The ShellWall module is designed to manage the thickness properties of the shell. The ShellElem module models the complete shell element by managing the surface properties of the shell explicitly and the thickness properties using a ShellWall object as an attribute object.
12.1. Shell Elements - ShellElem
Use the ShellElem module to draw complete shell elements. Two basic representations may be selected when drawing shell elements. The simplest representation draws the shell reference surface and one or more icons which represent the thickness properties of the shell. The icons are drawn by the ShellWall attribute object and show the direction of the shell thickness, local coordinate systems and the layer thicknesses and offsets. The second representation reconstructs the three dimensional nature of the shell to some degree by drawing the top and bottom surfaces of the shell and filling the thickness of the shell edges. The laminated nature of the shell thickness properties may be color coded. The sense of the normals of the polygons used for drawing the shell bottom face are reversed so that back face culling may be used to eliminate hidden surface artifacts. If just the reference surface of the shell element is to be drawn, it is preferable to use the Face module which will draw this simple representation of a shell more efficiently.
The ShellElem module does not directly draw results quantities on shell surfaces, however it provides functions to compute coordinates and results at shell surfaces in a form which can be easily directed to an isovalue, marker or value object for drawing the results quantities in some way.
The functions associated with a ShellElem object are the following.
Begin and end an instance of an object, return object error flag
vis_ShellElemBegin()
- create an instance of a ShellElem objectvis_ShellElemEnd()
- destroy an instance of a ShellElem objectvis_ShellElemError()
- return ShellElem object error flag
Set, manipulate and query results
vis_ShellElemCoords()
- compute shell coordinatesvis_ShellElemCurv()
- draw shell elementvis_ShellElemDirCos()
- compute shell local direction cosinesvis_ShellElemSetCornerFactors()
- set shell corner node wall factorsvis_ShellElemSetEdgeFlag()
- set edges to be drawnvis_ShellElemSetLocalSystem()
- set local coordinate system conventionvis_ShellElemSetObject()
- set pointers to attribute objectsvis_ShellElemSetParami()
- set shell element display parametersvis_ShellElemSetTopology()
- set input shell topology
Instance a ShellElem object using vis_ShellElemBegin()
.
Set attribute objects using vis_ShellElemSetObject()
.
ShellWall and VisContext
attribute objects must be set for any computational and drawing methods.
The ShellWall
object defines the thickness properties of the shell element.
Tapered shells may be modelled by specifying separate scale factors to
be applied to the shell wall geometry at each shell corner point. These
scale factors are set using vis_ShellElemSetCornerFactors()
.
Intermediate nodes on the shell, if they exist, are given scale factors
which linearly vary between the corner points. Use
vis_ShellElemDirCos()
to compute the local coordinate system direction cosine matrix at the
shell centroid or shell nodes. Use vis_ShellElemCoords()
to compute the coordinates of the shell nodes at a shell wall point.
A complete shell element is drawn using vis_ShellElemCurv()
.
If the shell topology has been set to VIS_SHAPELINE by
vis_ShellElemSetTopology()
,
then only a single shell wall is drawn. If the shell shape is
VIS_SHAPETRI or VIS_SHAPEQUAD then a specified number of shell
walls and the shell reference surface or top and bottom shell surfaces
are drawn. Shells may be drawn with up to 13 by 13 nodes along the
surface of the shell. Axisymmetric shells may be drawn by computing a
series of “nodes” (less than or equal to 13) which approximate the
curved shell in space.
12.2. Attribute Objects
A ShellElem object uses ShellWall, DrawFun, VisContext, ColorMap and TransMap objects to define attributes to generate a shell element visualization entity. The ShellWall object is required for any drawing or computation functions. The DrawFun and VisContext objects are required for any drawing functions. The ColorMap and TransMap are optional. A ShellElem object uses the following VisContext components.
ElemAxes |
Element local coordinate system axes flags |
ElemLoc |
Element locations at which element coordinate systems and shell wall |
ElemRep |
Element representation. VIS_ELEMREP_SOLID draws the top and |
Color |
Color of reference surface or top surfaces and possibly the filled |
MinorColor |
Color of bottom surface. |
Edge |
Edge flag, the edges of the shell surfaces are drawn. If the |
Fill |
Fill flag, the surfaces of the shell are drawn and the shell |
LineWidth |
Line width of edges |
AColor |
Color of edges. |
MinorLineWidth |
Line width of element axes. |
Refinement |
Level of refinement |
Shade |
Flag to apply light source shading |
Shrink |
Shrink factor for shell surface directions. |
Size |
Length of coordinate system axes. |
Trans |
Surface transparency |
XColor |
Color of coordinate system x axes |
YColor |
Color of coordinate system y axes |
ZColor |
Color of coordinate system z axes |
The result of drawing a curved triangular shell element with 4 layers is
illustrated in Figure 11-1a. The ElemRep is set to VIS_ELEMREP_SEMI
and the ElemLoc is set to VIS_ELEMLOC_CENTROID. The reference
surface and shell wall icon of the shell element are drawn. Figure 11-1b
illustrates drawing the same shell element with the ElemRep is set to
VIS_ELEMREP_SOLID and the SHELLELEM_WALL parameter has been
enabled using vis_ShellElemSetParami()
.
The top and bottom surfaces of the shell as well as the shell wall
layers along the edges of the shell element have been drawn. The shell
wall layers have been color coded to the shell wall layer id.
12.3. Function Descriptions
The currently available ShellElem functions are described in detail in this section.
-
vis_ShellElem *vis_ShellElemBegin(void)
create an instance of an ShellElem object
Create an instance of an ShellElem 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 ShellElem object using
void vis_ShellElemEnd (vis_ShellElem *shellelem)
Return the current value of a ShellElem object error flag using
Vint vis_ShellElemError (vis_ShellElem *shellelem)
- Returns:
The function returns a pointer to the newly created ShellElem object. If the object creation fails, NULL is returned.
-
void vis_ShellElemEnd(vis_ShellElem *p)
destroy an instance of a ShellElem object
-
Vint vis_ShellElemError(vis_ShellElem *p)
return the current value of a ShellElem object error flag
-
void vis_ShellElemSetObject(vis_ShellElem *p, Vint objecttype, Vobject *object)
set pointers to attribute objects
Set a pointer to an attribute object. The attribute ShellWall object must be set before any shell drawing or computation functions are called.
- Errors
VIS_ERROR_OBJECTTYPE
is generated if an improper objecttype is specified.
- Parameters:
p – Pointer to ShellElem object.
objecttype – The name of the object type to be set.
x=VIS_COLORMAP ColorMap object =VGL_DRAWFUN DrawFun object =VIS_SHELLWALL ShellWall object =VIS_TRANSMAP TransMap object =VIS_VISCONTEXT VisContext object
object – Pointer to the object to be set.
-
void vis_ShellElemSetParami(vis_ShellElem *p, Vint ptype, Vint iparam)
set shell element display parameters
Set shell element display parameters. The parameter
SHELLELEM_WALL
draws the shell wall layers. This flag is used only if a ElemRep ofVIS_ELEMREP_SOLID
is specified. By defaultSHELLELEM_WALL
is set toVIS_ON
.- Errors
VIS_ERROR_ENUM
is generated if an improper ptype is specified.
- Parameters:
p – Pointer to ShellElem object.
ptype – Type of display parameter to set
x=SHELLELEM_WALL Draw shell wall layers
iparam – Specifies the integer value that type will be set to.
x=VIS_OFF Turn parameter off =VIS_ON Turn parameter on
-
void vis_ShellElemSetTopology(vis_ShellElem *p, Vint shape, Vint maxi, Vint maxj)
set shell element topology
Set shell element topology. All subsequent draw and compute methods such as
vis_ShellElemCurv()
assume elements of this topology. Refinement is only applied to Serendipity and Lagrange finite element topologies. If maxi or maxj > 4 then piecewise linear interpolation is used within each element. See section Computational Cells for a description of element topology conventions.- Errors
VIS_ERROR_VALUE
is generated if a maxi less than zero is input.VIS_ERROR_ENUM
is generated if an improper shape is input.
- Parameters:
p – Pointer to ShellElem object.
shape – Element shape parameter
maxi – The number of points along the i direction. If maxi = 0 then the linear element form of the specified shape is assumed.
maxj – The number of points along the j direction. If maxj = 0 and 2 <= maxi <= 4, then a Serendipity finite element is assumed. If 2 <= maxj <= 4 and 2 <= maxi <= 4, then a Lagrange finite element is assumed. For triangle shapes, set either maxj = 0 or maxj = maxi. If shape is
VIS_SHAPELINE
, then maxj is ignored.
-
void vis_ShellElemSetLocalSystem(vis_ShellElem *p, Vint type, Vfloat vec[], Vfloat ang)
set local coordinate system convention
Specify the convention to be used to construct the orientation of the shell element local x’,y’,z’ coordinate system with respect to the shell reference surface. 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 ang. By default the local system convention is
SYS_ELEMSYS_STANDARD
with ang set to 0.For a description of element coordinate systems, type, and associated orientation vector data, please see Element Coordinate Systems
- Errors
VIS_ERROR_ENUM
is generated if an improper type is input.
- Parameters:
p – Pointer to ShellElem object.
type – Local system convention
x=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_MIDPOINT Orient to element edge midpoints =SYS_ELEMSYS_FIRSTEDGE Orient to element first edge
vec – Orientation position or direction vector(s)
ang – Angle to rotate shell x’,y’ axes about the shell z’ axis in degrees.
-
void vis_ShellElemSetEdgeFlag(vis_ShellElem *p, Vint flag)
set edges to be drawn
Set shell element edge flag. The flag argument contains bit flags indicating which shell element edges are to be drawn. For example, to draw all edges of any triangular or quadrilateral shell set flag = 15; to draw the first edge only set flag = 1.
This flag is used only if a ElemRep of
VIS_ELEMREP_SOLID
is specified. in the visualization context. The default edge flag is 15.- Parameters:
p – Pointer to ShellElem object.
flag – Element edge bit flags to indicate which shell edges are to have walls drawn.
-
void vis_ShellElemSetCornerFactors(vis_ShellElem *p, Vfloat factors[])
set shell corner node wall factors
Set shell element corner factors. By default, the corner factors are unity. In this case the shell element has a constant thickness. It is possible to model tapered shells by setting different scale factors at the corners of the shell where factors[0], factors[1], etc. are applied to the shell wall at the first, second, etc. corners of the shell element respectively. Three factors are required for a triangle, four factors for a quadrilateral shell element. The shell wall factors are assumed to vary linearly between the corner points.
These factors are used only if an ElemRep of
VIS_ELEMREP_SOLID
is specified in the visualization context. The default factors are unity.- Parameters:
p – Pointer to ShellElem object.
factors – Scale factors to be applied to the shell corner node walls.
-
void vis_ShellElemCurv(vis_ShellElem *p, Vfloat x[][3], Vint vflag, Vfloat v[][3])
draw shell element
Draw a shell element with reference points, x, and optional user supplied normals v. If vertex normals are not provided, normals are calculated from the input reference geometry. Normals are used to construct the edge “faces” of the shell element. The user can input vertex normals to represent shell elements for which the vertex normals are not truely normal to the shell reference surface.
If the shell wall is to be properly drawn be sure that the wall properties have been computed or set in the ShellWall attribute object.
- Errors
VIS_ERROR_NULLOBJECT
is generated if ShellWall and VisContext attribute objects have not been set usingvis_ShellElemSetObject()
.
- Parameters:
p – Pointer to ShellElem object.
x – Array of point locations defining shell reference surface.
vflag – User supplied shell z’ axis normal flag
x=VIS_NODATA No normals provided =VIS_VERTEXDATA Vertex normals are provided
v – Array of user supplied vertex normals
-
void vis_ShellElemCoords(vis_ShellElem *p, Vint id, Vint reflectflag, Vfloat x[][3], Vint vflag, Vfloat v[][3], Vfloat xp[][3])
compute shell coordinates
Compute the coordinates of a shell surface passing through the shell wall point specified by id. If normals, v, are not provided the thickness direction is assumed to be normal to the shell reference surface specified by x.
- Parameters:
p – Pointer to ShellElem object.
id – Shell wall 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 shell surface.
vflag – User supplied shell normal flag
x=VIS_NODATA No normals provided =VIS_VERTEXDATA Vertex normals are provided
v – Array of user supplied shell normals
xp – [out] Array of point locations of shell at shell wall point id.
-
void vis_ShellElemDirCos(vis_ShellElem *p, Vint centroidflag, Vfloat x[][3], Vfloat tm[][3][3])
compute shell local direction cosines
Compute the direction cosine matrices of the shell element local coordinate system. The local coordinate system is determined by the local system convention set using
vis_ShellElemSetLocalSystem()
.- Parameters:
p – Pointer to ShellElem object.
centroidflag – Compute direction cosine matrix at shell centroid flag.
=VIS_OFF Return direction cosine matrices at shell nodes =VIS_ON Return direction cosine matrix at shell centroid
x – Array of point locations defining shell surface.
tm – [out] Array of direction cosine matrices at the shell nodes or a single direction cosine matrix at the shell centroid.
12.4. Shell Wall Properties - ShellWall
Use the ShellWall module to manage, compute and draw the through-the-thickness properties of shell elements. The ShellWall module can represent a laminated shell with up to 256 layers with independent material orientations and material identifiers specified for each layer. Functions are provided to draw a simple line and point representation of the shell wall layup and/or the shell wall coordinate system and material orientation axes. Overall geometric and laminate material stiffness properties of the defined laminate may be computed.
The ShellWall module may also be used as an attribute object for a ShellElem object. In this case, shell wall geometry is drawn indirectly by calling the drawing methods of the ShellElem object.
The functions associated with a ShellWall object are the following.
Begin and end an instance of an object, return object error flag
vis_ShellWallBegin()
- create an instance of a ShellWall objectvis_ShellWallEnd()
- destroy an instance of a ShellWall objectvis_ShellWallError()
- return ShellWall object error flag
Set, manipulate and query results
vis_ShellWallCoords()
- compute coordinates on shell wallvis_ShellWallDef()
- define shell wall typevis_ShellWallInq()
- inquire shell wall typevis_ShellWallDraw()
- draw shell wall iconvis_ShellWallGetNum()
- get number of points and layersvis_ShellWallProps()
- compute shell wall propertiesvis_ShellWallSetDimensions()
- set dimensions of built-in wall typevis_ShellWallSetElasProp()
- set layer elastic material properties.vis_ShellWallSetLayer()
- set layer point connectivity, etc.vis_ShellWallGetLayer()
- get layer point connectivity, etc.vis_ShellWallSetLaminate()
- set laminate propertiesvis_ShellWallSetObject()
- set pointers to attribute objectsvis_ShellWallSetParami()
- set shell wall display parametersvis_ShellWallSetPoint()
- set location of point on shell wallvis_ShellWallGetPoint()
- get location of point on shell wallvis_ShellWallSetProps()
- set shell wall propertiesvis_ShellWallGetProps()
- get shell wall propertiesvis_ShellWallStrsStrn()
- compute shell stress and strain
Instance a ShellWall object using vis_ShellWallBegin()
.
Once a ShellWall
is instanced, define the shell wall construction type using
vis_ShellWallDef()
.
Like the BeamSect module, the ShellWall
module allows three basic types of shell wall constructions to be
defined; 1) built-in parameterized geometries, 2) user defined laminate
geometries using points and line segments and 3) general shell wall
properties such as overall thickness and eccentricity and material
stiffness. If a built-in parameterized geometry such as
SHELLWALL_MONOCOQUE is defined, the geometry parameters or
dimensions are input using vis_ShellWallSetDimensions()
.
User defined laminates using points and line segments,
SHELLWALL_GEOMETRY, are input using vis_ShellWallSetPoint()
,
vis_ShellWallSetLayer()
and vis_ShellWallSetElasProp()
.
General shellwall properties, SHELLWALL_PROPS, are input using
vis_ShellWallSetProps()
.
A generic diagram of a layered shell wall appears below illustrating the
shell wall z axis system, and layer numbering convention. Use
vis_ShellWallSetParami()
to set display options to draw the layer material orientation axes, etc.
The shell wall geometry, coordinate system and/or layer material
orientations may be drawn using vis_ShellWallDraw()
.
General shell wall properties and material stiffnesses may be computed
using vis_ShellWallProps()
.
The user may access computed or previously defined shell wall properties
using vis_ShellWallGetProps()
.
The function vis_ShellWallStrsStrn()
computes the tensor stress and strain at a point within a layer given
the midsurface strains and curvatures.
12.5. Attribute Objects
A ShellWall object uses DrawFun, VisContext, Levels and ColorMap objects to define attributes to generate a shell wall visualization entity. The DrawFun and VisContext objects are required for any drawing operations. The Levels object is required for drawing shell walls with layer color mapping active. The ColorMap object is optional. A ShellWall object uses the following VisContext components.
Color |
Color of line drawn in thickness direction if not mapped to color. |
Spot |
Spot flag, the shell wall points are drawn. |
PointSize |
Point size of shell wall points. |
LineWidth |
Line width of thickness line |
MinorLineWidth |
Line width of coordinate system axes |
MapColor |
Map shell layer id or material id to color for drawing shell |
MinorColor |
Color of shell wall points. |
Scale |
Scale factor for shell wall point z coordinates. |
Size |
Length of shell wall basic coordinate system axes. The length of |
XColor |
Color of coordinate system x axes |
YColor |
Color of coordinate system y axes |
12.6. Function Descriptions
The currently available ShellWall functions are described in detail in this section.
-
vis_ShellWall *vis_ShellWallBegin(void)
create an instance of an ShellWall object
Create an instance of an ShellWall 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 ShellWall object using
void vis_ShellWallEnd (vis_ShellWall *shellwall)
Return the current value of a ShellWall object error flag using
Vint vis_ShellWallError (vis_ShellWall *shellwall)
- Returns:
The function returns a pointer to the newly created ShellWall object. If the object creation fails, NULL is returned.
-
void vis_ShellWallEnd(vis_ShellWall *p)
destroy an instance of a ShellWall object
-
Vint vis_ShellWallError(vis_ShellWall *p)
return the current value of a ShellWall object error
-
void vis_ShellWallDef(vis_ShellWall *p, Vint type)
define shell wall type
Define the type of shell wall construction to be represented. The types
SHELLWALL_GEOMETRY
andSHELLWALL_LAMINATE
are essentially equivalent, they provide two different ways to specify a laminated shell wall construction.If type is input as
SHELLWALL_GEOMETRY
, then the user specifies a layered shell by defining point locations, layers and material properties usingvis_ShellWallSetPoint()
,vis_ShellWallSetLayer()
andvis_ShellWallSetElasProp()
respectively.If type is
SHELLWALL_LAMINATE
the user must enter the shell wall dimensions and material identifiers usingvis_ShellWallSetLaminate()
and material properties usingvis_ShellWallSetElasProp()
.If type is
SHELLWALL_MONOCOQUE
orSHELLWALL_PSHELL
the user must enter the shell wall dimensions and material identifiers usingvis_ShellWallSetDimensions()
and material properties usingvis_ShellWallSetElasProp()
.If type is
SHELLWALL_PROPS
, the user must enter the overall thickness, eccentricity and material stiffness matrices explicitly usingvis_ShellWallSetProps()
.Inquire of defined type as an output argument using
void vis_ShellWallInq (vis_ShellWall *shellwall, Vint *type)
- Errors
VIS_ERROR_ENUM
is generated if an improper type is specified.
- Parameters:
p – Pointer to ShellWall object.
type – Shell wall type
x=SHELLWALL_GEOMETRY Laminated wall =SHELLWALL_LAMINATE Laminated wall =SHELLWALL_MONOCOQUE Single layer wall =SHELLWALL_PSHELL NASTRAN PSHELL bulk data specification =SHELLWALL_PROPS Generalized wall properties
-
void vis_ShellWallInq(vis_ShellWall *p, Vint *type)
inquire of defined type as an output argument
-
void vis_ShellWallSetObject(vis_ShellWall *p, Vint objecttype, Vobject *object)
set pointers to attribute objects
Set a pointer to an attribute object.
- Errors
VIS_ERROR_OBJECTTYPE
is generated if an improper objecttype is specified.
- Parameters:
p – Pointer to ShellWall object.
objecttype – The name of the object type to be set.
x=VIS_COLORMAP ColorMap object =VGL_DRAWFUN DrawFun object =VIS_LEVELS Levels object =VIS_VISCONTEXT VisContext object
object – Pointer to the object to be set.
-
void vis_ShellWallSetParami(vis_ShellWall *p, Vint ptype, Vint iparam)
set shell wall display parameters
Set shell wall display parameters. The parameter
SHELLWALL_AXESBASIC
draws the shell wall basic coordinate system x and y axes. By defaultSHELLWALL_AXESBASIC
is set toVIS_OFF
.The parameter
SHELLWALL_AXESLAYER
draws the shell wall layer material orientation x and y axes. By defaultSHELLWALL_AXESLAYER
is set toVIS_ON
.The parameter
SHELLWALL_MAPMATERIALID
maps layer material id to color rather than the default layer id if MapColor is enabled in the VisContext attribute object. By defaultSHELLWALL_MAPMATERIALID
is set toVIS_OFF
.- Errors
VIS_ERROR_ENUM
is generated if an improper ptype is specified.
- Parameters:
p – Pointer to ShellWall object.
ptype – Type of display parameter to set
x=SHELLWALL_AXESBASIC Draw basic local coordinate system =SHELLWALL_AXESLAYER Draw layer material orientation axes =SHELLWALL_MAPMATERIALID Map color to material id
iparam – Specifies the integer value that ptype will be set to
x=VIS_OFF Turn parameter off =VIS_ON Turn parameter on
-
void vis_ShellWallSetDimensions(vis_ShellWall *p, Vfloat dimes[], Vfloat phis[], Vint mids[])
set dimensions of built-in geometries
Set dimensions and material orientation angles and ids for a built-in shell wall type. The number and type of dimensions required are section dependent as defined by
vis_ShellWallDef()
. The dimensions and material identifiers required by theSHELLWALL_PSHELL
type are as defined by the NASTRAN PSHELL bulk data specification.MONOCOQUE PSHELL dimes[0] = t t dimes[1] = 12I/t**3 dimes[2] = ts/t phis[0] = phi phi mids[0] = mid mid1 mids[1] = mid2 mids[2] = mid3 mids[3] = mid4
- Errors
VIS_ERROR_OPERATION
is generated if the shell type as defined byvis_ShellWallDef()
is notSHELLWALL_MONOCOQUE
orSHELLWALL_PSHELL
.
- Parameters:
p – Pointer to ShellWall object.
dimes – Dimensions of wall.
phis – Material orientation angles in degrees
mids – Material property ids.
-
void vis_ShellWallSetDimensionsdv(vis_ShellWall *p, Vdouble dimes[], Vdouble phis[], Vint mids[])
set dimensions of built-in geometries
-
void vis_ShellWallSetLaminate(vis_ShellWall *p, Vfloat ecc, Vint nlayers, Vfloat thks[], Vfloat phis[], Vint mids[])
set laminate properties
Set laminate properties.
- Errors
VIS_ERROR_OPERATION
is generated if the shell type as defined byvis_ShellWallDef()
is notSHELLWALL_LAMINATE
.VIS_ERROR_VALUE
is generated if an improper nlayers is specified.
- Parameters:
p – Pointer to ShellWall object.
ecc – Offset of shell midsurface from shell reference surface
nlayers – Number of layers, nlayers > 0
thks – Layer thicknesses
phis – Material orientation angles in degrees
mids – Material property ids.
-
void vis_ShellWallSetLaminatedv(vis_ShellWall *p, Vdouble ecc, Vint nlayers, Vdouble thks[], Vdouble phis[], Vint mids[])
set laminate properties
-
void vis_ShellWallSetPoint(vis_ShellWall *p, Vint id, Vfloat z)
set location of point on shell wall
Set the z coordinate of a point, id, on the shell wall. Use
vis_ShellWallSetLayer()
to define layer geometry using points.Inquire of point coordinate for a given point id as an output argument using
void vis_ShellWallGetPoint (vis_ShellWall *shellwall, Vint id, Vfloat *z) void vis_ShellWallGetPointdv (vis_ShellWall *shellwall, Vint id, Vdouble *z)
- Errors
VIS_ERROR_OPERATION
is generated if the shell type as defined byvis_ShellWallDef()
is notSHELLWALL_GEOMETRY
.VIS_ERROR_VALUE
is generated if an improper id is input.
- Parameters:
p – Pointer to ShellWall object.
id – Point id, 1 <= id <= 256
z – Z coordinate of point on shell wall
-
void vis_ShellWallSetPointdv(vis_ShellWall *p, Vint id, Vdouble z)
set location of point on shell wall
-
void vis_ShellWallGetPoint(vis_ShellWall *p, Vint id, Vfloat *z)
get location of point on shell wall
-
void vis_ShellWallGetPointdv(vis_ShellWall *p, Vint id, Vdouble *z)
get location of point on shell wall
-
void vis_ShellWallSetLayer(vis_ShellWall *p, Vint id, Vint ix[], Vfloat phi, Vint mid)
set layer point connectivity, etc.
Set the end point connectivity, material orientation angle and material id or layer id. The end point connectivity consists of two point ids, the points defining the bottom and top of the layer respectively. The layer ids should be consecutively numbered from the bottom to the top of the shell wall.
Inquire of layer geometry for a given layer id as output arguments using
void vis_ShellWallGetLayer (vis_ShellWall *shellwall, Vint id, Vint ix[], Vfloat *phi, Vint *mid) void vis_ShellWallGetLayerdv (vis_ShellWall *shellwall, Vint id, Vint ix[], Vdouble *phi, Vint *mid)
- Errors
VIS_ERROR_OPERATION
is generated if the shell type as defined byvis_ShellWallDef()
is notSHELLWALL_GEOMETRY
.VIS_ERROR_VALUE
is generated if an improper id is input.
- Parameters:
p – Pointer to ShellWall object.
id – Layer id, 1 <= id <= 256
ix – End point connectivity of layer
phi – Material orientation angle in degrees
mid – Material property id.
-
void vis_ShellWallSetLayerdv(vis_ShellWall *p, Vint id, Vint ix[], Vdouble phi, Vint mid)
set layer point connectivity, etc.
-
void vis_ShellWallGetLayer(vis_ShellWall *p, Vint id, Vint ix[], Vfloat *phi, Vint *mid)
get layer point connectivity, etc.
-
void vis_ShellWallGetLayerdv(vis_ShellWall *p, Vint id, Vint ix[], Vdouble *phi, Vint *mid)
get layer point connectivity, etc.
-
void vis_ShellWallSetElasProp(vis_ShellWall *p, Vint id, Vint type, Vfloat material[])
set elastic material properties
Set material properties associated with a material identifier, the material identifier, id may be any positive integer. The material properties are input in array material in the order specified for a particular type. For isotropic materials input 2 values (E,Nu). For lamina materials input 6 values (Ex,Ey,Nuxy,Gxy,Gyz,Gxz). For orthotropic materials input 9 values (Ex,Ey,Ez,Nuxy,Nuyz,Nuxz,Gxy,Gyz,Gxz). For anisotropic materials input 21 values, the lower triangle of the 6x6 material D-matrix by rows.
- Errors
VIS_ERROR_VALUE
is generated if an improper material id is specified.VIS_ERROR_ENUM
is generated if an improper material type is specified.
- Parameters:
p – Pointer to ShellWall object.
id – Material id, 0 < id.
type – The material property type
x=SYS_MAT_ISOTROPIC Isotropic =SYS_MAT_LAMINA Lamina =SYS_MAT_ORTHOTROPIC Orthotropic =SYS_MAT_ANISOTROPIC Anisotropic
material – Array of material properties
-
void vis_ShellWallSetElasPropdv(vis_ShellWall *p, Vint id, Vint type, Vdouble props[])
set elastic material properties
-
void vis_ShellWallDraw(vis_ShellWall *p, Vfloat xs[3], Vfloat tm[3][3])
draw shell wall icon
Draw a shell wall icon at xs with orientation tm. The icon consists of lines and points which represent the shell wall geometry and a series of coordinate axes which represent the basic shell wall coordinate system and the orientation of the material properties in each layer.
If shell wall geometry has been defined then points are drawn at the end points of the shell layers and lines are drawn connecting the layer end points. The layer lines may be color mapped to the layer id. In addition, if the appropriate display parameters have been set using
vis_ShellWallSetParami()
, axes are drawn to represent the basic shell wall coordinate system and/or material orientation at each layer.If only shell wall geometry is to be drawn (no coordinate axes), then only the z’ orientation need appear in the tm matrix, ie. the x,y,z coordinates of a unit vector in the z’ direction tm[2][0], tm[2][1], tm[2][2].
- Parameters:
p – Pointer to ShellWall object.
xs – Location of shell wall thickness coordinate z = 0.
tm – Orientation of shell wall basic coordinate system.
-
void vis_ShellWallGetNum(vis_ShellWall *p, Vint *npoints, Vint *nlayers)
get number of points and layers
Return the number of shell wall geometry points and layers defined. The points and layers may have been explicitly specified using
vis_ShellWallSetPoint()
andvis_ShellWallSetLayer()
or implicitly defined as a built-in wall geometry usingvis_ShellWallSetDimensions()
. Information about individual points and layers may be returned usingvis_ShellWallGetPoint()
andvis_ShellWallGetLayer()
.- Parameters:
p – Pointer to ShellWall object.
npoints – [out] Number of points defined
nlayers – [out] Number of layers defined
-
void vis_ShellWallCoords(vis_ShellWall *p, Vint id, Vfloat x[3], Vfloat v[3], Vfloat xp[3])
compute coordinates on shell wall
Compute the coordinates of a shell wall point, id, given a position, xp, and orientation, v, of the shell wall z axis in space. If the orientation vector is not normalized to unity, the shell wall will be correspondingly scaled in space.
- Errors
VIS_ERROR_VALUE
is generated if an improper id is input.
- Parameters:
p – Pointer to ShellWall object.
id – Shell wall point id.
x – Location of origin of shell wall z axis.
v – Normal vector in direction of shell wall z axis in space.
xp – [out] Location of shell wall point id.
-
void vis_ShellWallSetProps(vis_ShellWall *p, Vfloat props[2], Vfloat abdmat[21], Vfloat qmat[3])
set general shell wall properties
Set the general shell wall properties. The overall thickness and eccenticity are set. The wall properties must appear as follows in the input props vector.
The shell wall properties may be accessed for any shell type. Inquire of shell wall properties as output arguments usingprops[0] - Thickness, T props[1] - Eccentricity of midsurface from origin along z axis, Ez
void vis_ShellWallGetProps (vis_ShellWall *shellwall, Vfloat props[2], Vfloat abdmat[6], Vfloat qmat[3]) void vis_ShellWallGetPropsdv (vis_ShellWall *shellwall, Vdouble props[2], Vdouble abdmat[6], Vdouble qmat[3])
- Errors
VIS_ERROR_OPERATION
is generated if the shell type as defined byvis_ShellWallDef()
is notSHELLWALL_PROPS
.
- Parameters:
p – Pointer to ShellWall object.
props – [out] Overall shell wall thickness and distance of midsurface from reference surface (z = 0.)
abdmat – [out] Lower triangle of extensional-bending stiffness matrix
qmat – [out] Lower triangle of transverse shear material stiffness matrix
-
void vis_ShellWallSetPropsdv(vis_ShellWall *p, Vdouble props[2], Vdouble abdmat[21], Vdouble qmat[3])
set general shell wall properties
-
void vis_ShellWallGetProps(vis_ShellWall *p, Vfloat props[2], Vfloat abdmat[21], Vfloat qmat[3])
get general shell wall properties
-
void vis_ShellWallGetPropsdv(vis_ShellWall *p, Vdouble props[2], Vdouble abdmat[21], Vdouble qmat[3])
get general shell wall properties
-
void vis_ShellWallProps(vis_ShellWall *p)
compute shell wall properties
Compute the geometric and material stiffness properties of the shell wall. The computed properties will replace any previously computed properties. The geometric properties consist of total thickness and offset to shellwall midsurface. Material stiffness properties consist of the shell wall extensional, coupling, bending and transverse shear stiffness matrices. Material stiffness properties are only computed if material properties have been defined using
vis_ShellWallSetElasProp()
. Usevis_ShellWallGetProps()
to return the computed shell wall properties. The shell wall properties may be explicitly set usingvis_ShellWallSetProps()
.- Errors
VIS_ERROR_OPERATION
is generated if no shellwall geometry has been defined.VIS_ERROR_OPERATION
is generated if no material properties have been defined.VIS_ERROR_VALUE
is generated if material properties are undefined for
- Parameters:
p – Pointer to ShellWall object.
-
void vis_ShellWallStrsStrn(vis_ShellWall *p, Vint id, Vint pos, Vfloat eks[8], Vfloat strs[6], Vfloat strn[6])
compute shell stress and strain
Compute the full stress, strs and strain, strn tensor at position, pos, in shell wall layer id given the strains and curvatures, eks. The stress and strain components are ordered (xx,yy,zz,xy,yz,zx) The components of eks are ordered (exx,eyy,exy,kxx,kyy,kxy,eyz,ezx).
Note that if the right-hand rotations about the x,y,z axes are denoted by rx,ry,rz, then the curvatures, kxx,kyy,kxy, are given by:
Given this definition, the components of curvature, (kxx,kyy,kxy), do not transform as a tensor.kxx = ry,x kyy = -rx,y kxy = ry,y - rx,x
The transverse shear stresses, assuming that no tangential tractions are applied to the shell surfaces, must be zero at the shell surfaces and peak at the center. The transverse shear stresses are therefore adjusted by the following factor:
where r is the normal coordinate which varies in the interval (-1.,1.) from the bottom to the top surface.1.5*(1-r*r)
- Errors
VIS_ERROR_OPERATION
is generated if no shellwall geometry has been defined.VIS_ERROR_OPERATION
is generated if no material properties have been defined.VIS_ERROR_VALUE
is generated if material properties are undefined for a particular layer or an improper layer id is specified.VIS_ERROR_ENUM
is generated if an improper layer position is specified.
- Parameters:
p – Pointer to ShellWall object.
id – Shell wall layer id.
pos – Shell wall layer position
x=VIS_BOTTOM Layer bottom =VIS_CENTER Layer center =VIS_TOP Layer top
eks – Strains and curvatures
strs – [out] Stress tensor
strn – [out] Strain tensor