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.

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
icons are drawn.

ElemRep

Element representation. VIS_ELEMREP_SOLID draws the top and
bottom surfaces of the shell element and fills the shell thickness
along the edges of the shell. The coloring of the shell thickness
fill depends upon the SHELLELEM_WALL parameter set using
vis_ShellElemSetParami().
If enabled, the layered nature of a shell through the thickness along
the shell edges may be represented. In this case the color settings
of the ShellWall
attribute object are used to determine coloring of the shell
thickness fill. if disabled, the shell thickness is filled using the
specified Color. The element coordinate system axes are drawn. Any
other element representation, such as VIS_ELEMREP_SEMI draws the
shell reference surface as well as element coordinate system axes and
shell wall icons at the specified element locations. The
representation of the shell wall icons and shell wall layers is
determined by the ShellWall attribute object.

Color

Color of reference surface or top surfaces and possibly the filled
shell thickness. If the SHELLELEM_WALL parameter is set then the
color of the filled shell thickness is determined by by the color
settings of the ShellWall attribute object.

MinorColor

Color of bottom surface.

Edge

Edge flag, the edges of the shell surfaces are drawn. If the
SHELLELEM_WALL parameter is set then the boundaries between shell
layers are drawn.

Fill

Fill flag, the surfaces of the shell are drawn and the shell
thickness is filled.

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.

../../_images/vistools-shell1a.gif

Figure 11-1a, Draw Shell Wall and Reference Surface of Shell Element

../../_images/vistools-shell1b.gif

Figure 11-1b, Draw Tapered Triangular Shell Element with Layers

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

See vis_ShellElemBegin()

Vint vis_ShellElemError(vis_ShellElem *p)

return the current value of a ShellElem object error flag

See vis_ShellElemBegin()

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 of VIS_ELEMREP_SOLID is specified. By default SHELLELEM_WALL is set to VIS_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 \docref{ComputationalCells} 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 \docref{ElementCoordinateSystems}

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 using vis_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.

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.

../../_images/vistools-shell2.gif

Figure 11-2, Diagram of Shell Wall with N Layers

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
thickness. Use vis_ShellWallSetParami()
to toggle between color mapping to shell layer id or material id.

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
layer material orientation axes is .707 * Size.

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

See vis_ShellWallBegin()

Vint vis_ShellWallError(vis_ShellWall *p)

return the current value of a ShellWall object error

See vis_ShellWallBegin()

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 and SHELLWALL_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 using vis_ShellWallSetPoint(), vis_ShellWallSetLayer() and vis_ShellWallSetElasProp() respectively.

If type is SHELLWALL_LAMINATE the user must enter the shell wall dimensions and material identifiers using vis_ShellWallSetLaminate() and material properties using vis_ShellWallSetElasProp().

If type is SHELLWALL_MONOCOQUE or SHELLWALL_PSHELL the user must enter the shell wall dimensions and material identifiers using vis_ShellWallSetDimensions() and material properties using vis_ShellWallSetElasProp().

If type is SHELLWALL_PROPS, the user must enter the overall thickness, eccentricity and material stiffness matrices explicitly using vis_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

See vis_ShellWallDef()

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 default SHELLWALL_AXESBASIC is set to VIS_OFF.

The parameter SHELLWALL_AXESLAYER draws the shell wall layer material orientation x and y axes. By default SHELLWALL_AXESLAYER is set to VIS_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 default SHELLWALL_MAPMATERIALID is set to VIS_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 the SHELLWALL_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 by vis_ShellWallDef() is not SHELLWALL_MONOCOQUE or SHELLWALL_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

See vis_ShellWallSetDimensions()

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 by vis_ShellWallDef() is not SHELLWALL_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

See vis_ShellWallSetLaminate()

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 by vis_ShellWallDef() is not SHELLWALL_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

See vis_ShellWallSetPoint()

void vis_ShellWallGetPoint(vis_ShellWall *p, Vint id, Vfloat *z)

get location of point on shell wall

See vis_ShellWallSetPoint()

void vis_ShellWallGetPointdv(vis_ShellWall *p, Vint id, Vdouble *z)

get location of point on shell wall

See vis_ShellWallSetPoint()

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 by vis_ShellWallDef() is not SHELLWALL_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.

See vis_ShellWallSetLayer()

void vis_ShellWallGetLayer(vis_ShellWall *p, Vint id, Vint ix[], Vfloat *phi, Vint *mid)

get layer point connectivity, etc.

See vis_ShellWallSetLayer()

void vis_ShellWallGetLayerdv(vis_ShellWall *p, Vint id, Vint ix[], Vdouble *phi, Vint *mid)

get layer point connectivity, etc.

See vis_ShellWallSetLayer()

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

See vis_ShellWallSetElasProp()

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() and vis_ShellWallSetLayer() or implicitly defined as a built-in wall geometry using vis_ShellWallSetDimensions(). Information about individual points and layers may be returned using vis_ShellWallGetPoint() and vis_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.

 props[0] - Thickness, T
 props[1] - Eccentricity of midsurface from origin along z axis, Ez
The shell wall properties may be accessed for any shell type. Inquire of shell wall properties as output arguments using
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 by vis_ShellWallDef() is not SHELLWALL_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

See vis_ShellWallSetProps()

void vis_ShellWallGetProps(vis_ShellWall *p, Vfloat props[2], Vfloat abdmat[21], Vfloat qmat[3])

get general shell wall properties

See vis_ShellWallSetProps()

void vis_ShellWallGetPropsdv(vis_ShellWall *p, Vdouble props[2], Vdouble abdmat[21], Vdouble qmat[3])

get general shell wall properties

See vis_ShellWallSetProps()

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(). Use vis_ShellWallGetProps() to return the computed shell wall properties. The shell wall properties may be explicitly set using vis_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:

kxx =  ry,x
kyy = -rx,y
kxy =  ry,y - rx,x
Given this definition, the components of curvature, (kxx,kyy,kxy), do not transform as a tensor.

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:

1.5*(1-r*r)
where r is the normal coordinate which varies in the interval (-1.,1.) from the bottom to the top surface.

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