Table of Contents

21. Loads and Constraints - LCase,RCase,MCase,ICase

The LCase module is designed to manage concentrated nodal loads, nodal parameters, distributed element loads and overall accelerations. The RCase module is designed to manage single point degree of freedom constraints. The MCase module is designed to manage multi point degree of freedom constraints. The ICase module is designed to manage degree of freedom initial conditions.

Note that all case modules hold floating point data internally in double precision.

Table of Contents

21.1 Load Case - LCase

The LCase module manages concentrated nodal loads such as forces and moments and element distributed loads such as pressures, tractions, etc. It also manages nodal parameters such as temperature which may be used for thermal loading or temperature dependent material properties. Distributed loads over an element face or edge may vary over the face or edge nodes. Body forces over an element may vary over each element node. In addition, overall accelerations due to gravity or rotational effects may be stored and queried. The load values may be a general function of time or frequency. Note that complex valued concentrated node loads, distributed loads and element body loads may be specified. This is used for example in steady state structural dynamics.

The functions associated with a LCase object are the following.

Instance a LCase object initially using vis_LCaseBegin. Complex valued concentrated, distributed and element body loads may be specified. The real and imaginary parts of a complex valued load may be specified one at a time or together depending upon the state of the complex mode of LCase. The user sets the complex mode using vis_LCaseSetComplexMode. See section VisTools, Complex Numbers for a description of the general usage of complex valued data in Vistools modules.

Set a concentrated loads at a node using vis_LCaseSetConc or add a load using vis_LCaseAddConc. Generate a node group of all nodes at which concentrated loads have been defined using vis_LCaseNodeGroup. Query for the number and type of concentrated loads at a node using vis_LCaseConcType. The function vis_LCaseConcFlag may be used to test for concentrated loads set at a node. Return the concentrated load value at a node using vis_LCaseConc. Return the maximum node index for which concentrated loads have been defined using vis_LCaseConcMax.

Each concentrated load component may be assigned a separate table identifier using the function vis_LCaseSetConcTId. These tables are represented by TCurve objects and are normally used to specify time or frequency dependent variation of the individual components of concentrated loads.

Concentrated load types are as follows.

The force and moment vectors are assumed to be in the global coordinate system.

Set distributed loads on element faces or edges using vis_LCaseSetDist or add distributed loads using vis_LCaseAddDist. At this point a GridFun object must be set as an attribute object using vis_LCaseSetObject so that the LCase object can access finite element model information. Generate an edge or face group of all element edges or faces at which distributed loads have been defined using vis_LCaseEdgeGroup and vis_LCaseFaceGroup. Query for the number and type of distributed loads at an element edge or face using vis_LCaseDistType. The function vis_LCaseDistFlag may be used to test for distributed loads set at an element. Return the distributed load values at an element edge or face using vis_LCaseDist. Return the maximum element index for which distributed loads have been defined using vis_LCaseDistMax. Each distributed load on an element face or edge may be assigned a separate table identifier using the function vis_LCaseSetDistTId.

Distributed load types are as follows.

Define element body loads on element node using vis_LCaseSetElem or add element body loads using vis_LCaseAddElem. At this point a GridFun object must be set as an attribute object using vis_LCaseSetObject so that the LCase object can access finite element model information. Generate an element group of all elements at which element loads have been defined using vis_LCaseElemGroup. Query for the number and type of element loads using vis_LCaseElemType. The function vis_LCaseElemFlag may be used to test for element loads set on an element. Return the element load values using vis_LCaseElem. Return the maximum element index for which element loads have been defined using vis_LCaseElemMax. Each distributed load on an element face or edge may be assigned a separate table identifier using the function vis_LCaseSetElemTId.

Element body load types are as follows.

Define accelerations due to gravity, spin, etc. using vis_LCaseSetAccel. Query for the definition of accelerations using vis_LCaseAccelFlag. Return accelerations using vis_LCaseAccel.

Table of Contents

21.2 Function Descriptions

The currently available LCase functions are described in detail in this section.


Table of Contents , LCase

NAME

*vis_LCaseBegin - create an instance of a LCase object

C SPECIFICATION

vis_LCase *vis_LCaseBegin ()

ARGUMENTS

None

FUNCTION RETURN VALUE

The function returns a pointer to the newly created LCase object. If the object creation fails, NULL is returned.

DESCRIPTION

Create an instance of a LCase object. Memory is allocated for the object private data and the pointer to the data is returned.

Destroy an instance of a LCase object using

     void vis_LCaseEnd (vis_LCase *lcase)

Return the current value of a LCase object error flag using

     Vint vis_LCaseError (vis_LCase *lcase)


Table of Contents , LCase

NAME

vis_LCaseClear - clear all loads and accelerations

C SPECIFICATION

void vis_LCaseClear (vis_LCase *lcase)

INPUT ARGUMENTS

lcase        Pointer to LCase object.

OUTPUT ARGUMENTS

None

DESCRIPTION

Clear all defined loads and accelerations.


Table of Contents , LCase

NAME

vis_LCaseClearAccel - clear all accelerations

C SPECIFICATION

void vis_LCaseClearAccel (vis_LCase *lcase)

INPUT ARGUMENTS

lcase        Pointer to LCase object.

OUTPUT ARGUMENTS

None

DESCRIPTION

Clear all accelerations.


Table of Contents , LCase

NAME

vis_LCaseClearConc - clear all concentrated loads

C SPECIFICATION

void vis_LCaseClearConc (vis_LCase *lcase)

INPUT ARGUMENTS

lcase        Pointer to LCase object.

OUTPUT ARGUMENTS

None

DESCRIPTION

Clear all concentrated loads.


Table of Contents , LCase

NAME

vis_LCaseClearDist - clear all distributed loads

C SPECIFICATION

void vis_LCaseClearDist (vis_LCase *lcase)

INPUT ARGUMENTS

lcase        Pointer to LCase object.

OUTPUT ARGUMENTS

None

DESCRIPTION

Clear all distributed loads.


Table of Contents , LCase

NAME

vis_LCaseClearElem - clear all element loads

C SPECIFICATION

void vis_LCaseClearElem (vis_LCase *lcase)

INPUT ARGUMENTS

lcase        Pointer to LCase object.

OUTPUT ARGUMENTS

None

DESCRIPTION

Clear all element loads.


Table of Contents , LCase

NAME

vis_LCaseSetAccel - set overall accelerations

C SPECIFICATION

void vis_LCaseSetAccel (vis_LCase *lcase,
                        Vfloat grav[3],
                        Vfloat cent[3],
                        Vfloat w[3],
                        Vfloat wdot[3])

void vis_LCaseSetAcceldv (vis_LCase *lcase,
                          Vdouble grav[3],
                          Vdouble cent[3],
                          Vdouble w[3],
                          Vdouble wdot[3])

INPUT ARGUMENTS

lcase        Pointer to LCase object.
grav         Gravity vector
cent         Center of rotation
w            Angular velocity vector
wdot         Angular acceleration vector

OUTPUT ARGUMENTS

None

DESCRIPTION

Set accelerations due to translational accelerations and rotations. Translational accelerations are input as a "gravity" field defined as a vector, grav. Accelerations due to rotations are input as an angular velocity vector (radians/second), w, and acceleration vector (radians/second**2), wdot, passing through a point, cent. Use vis_LCaseAccelFlag to query whether accelerations have been defined and query for the defined accelerations using vis_LCaseAccel.


Table of Contents , LCase

NAME

vis_LCaseAccelFlag - query definition of accelerations

C SPECIFICATION

void vis_LCaseAccelFlag (vis_LCase *lcase,
                         Vint *accelflag)

INPUT ARGUMENTS

lcase        Pointer to LCase object.

OUTPUT ARGUMENTS

accelflag    Accelerations defined flag.

DESCRIPTION

Query if accelerations have been defined using vis_LCaseSetAccel.


Table of Contents , LCase

NAME

vis_LCaseAccel - query overall accelerations

C SPECIFICATION

void vis_LCaseAccel (vis_LCase *lcase,
                     Vfloat grav[3],
                     Vfloat cent[3],
                     Vfloat w[3],
                     Vfloat wdot[3])

void vis_LCaseAcceldv (vis_LCase *lcase,
                       Vdouble grav[3],
                       Vdouble cent[3],
                       Vdouble w[3],
                       Vdouble wdot[3])

INPUT ARGUMENTS

lcase        Pointer to LCase object.

OUTPUT ARGUMENTS

grav         Gravity vector
cent         Center of rotation
w            Angular velocity vector
wdot         Angular acceleration vector

DESCRIPTION

Query for translational and rotational accelerations. Use vis_LCaseAccelFlag to query whether accelerations have been defined. If accelerations have not been defined all quantities are returned as zero.


Table of Contents , LCase

NAME

vis_LCaseAdd - add two load cases

C SPECIFICATION

void vis_LCaseAdd (vis_LCase *lcase,
                   vis_LCase *addlcase,

INPUT ARGUMENTS

lcase        Pointer to LCase object.
addlcase     Pointer to LCase object to add

OUTPUT ARGUMENTS

None

DESCRIPTION

Add the load case addlcase to lcase.


Table of Contents , LCase

NAME

vis_LCaseAddConc - add a single concentrated load

C SPECIFICATION

void vis_LCaseAddConc (vis_LCase *lcase,
                       Vint index,
                       Vint type,
                       Vfloat value[])

void vis_LCaseAddConcdv (vis_LCase *lcase,
                         Vint index,
                         Vint type,
                         Vdouble value[])

INPUT ARGUMENTS

lcase        Pointer to LCase object.
index        Node number
type         Concentrated load type
             =LCASE_FORCE             Vector of applied force
             =LCASE_MOMENT            Vector of applied moment
             =LCASE_HEAT              Scalar applied heat
             =LCASE_TEMP              Scalar temperature
             =LCASE_CSCA              Generic scalar
             =LCASE_CVEC              Generic vector
value        Load values

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_VALUE is generated if an improper index is specified. SYS_ERROR_ENUM is generated if an improper type is specified.

DESCRIPTION

Add a single concentrated load at node index. Use vis_LCaseSetConc to set a concentrated load.


Table of Contents , LCase

NAME

vis_LCaseSetConc - set a single concentrated load

C SPECIFICATION

void vis_LCaseSetConc (vis_LCase *lcase,
                       Vint index,
                       Vint type,
                       Vfloat value[])

void vis_LCaseSetConcdv (vis_LCase *lcase,
                         Vint index,
                         Vint type,
                         Vdouble value[])

INPUT ARGUMENTS

lcase        Pointer to LCase object.
index        Node number
type         Concentrated load type
             =LCASE_FORCE             Vector of applied force
             =LCASE_MOMENT            Vector of applied moment
             =LCASE_HEAT              Scalar applied heat
             =LCASE_TEMP              Scalar temperature
             =LCASE_CSCA              Generic scalar
             =LCASE_CVEC              Generic vector
value        Load values

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_VALUE is generated if an improper index is specified. SYS_ERROR_ENUM is generated if an improper type is specified.

DESCRIPTION

Set a single concentrated load at node index, replacing any previously existing concentrated load at node index. Use vis_LCaseConcType to return the number and type of loads defined at a node. Use vis_LCaseConc to return the applied values of a given type of concentrated load at a node.


Table of Contents , LCase

NAME

vis_LCaseSetConcTId - set a concentrated load table id

C SPECIFICATION

void vis_LCaseSetConcTId (vis_LCase *lcase,
                          Vint index,
                          Vint type,
                          Vint tid[])

INPUT ARGUMENTS

lcase        Pointer to LCase object.
index        Node number
type         Concentrated load type
tid          Table identifiers

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_VALUE is generated if an improper index is specified. SYS_ERROR_ENUM is generated if an improper type is specified. SYS_ERROR_OPERATION is generated if a concentrated load value for this type has not been previously specified.

DESCRIPTION

Set concentrated load table identifiers at node index. A concentrated load value must have been previously set using vis_LCaseSetConc. A table identifier is set for each component of the concentrated load.


Table of Contents , LCase

NAME

vis_LCaseConcFlag - query concentrated load set given a type

C SPECIFICATION

void vis_LCaseConcFlag (vis_LCase *lcase,
                        Vint index,
                        Vint type,
                        Vint *flag)

INPUT ARGUMENTS

lcase        Pointer to LCase object.
index        Node number
type         Concentrated load type

OUTPUT ARGUMENTS

flag         Flag indicating if concentrated load set

ERRORS

SYS_ERROR_VALUE is generated if an improper index is specified. SYS_ERROR_ENUM is generated if an improper type is specified.

DESCRIPTION

Query for a concentrated load having been set for a specified load type at a node index. If a concentrated load has been defined at the node then flag is set to 1 otherwise it is set to 0.


Table of Contents , LCase

NAME

vis_LCaseConcMax - query maximum node index

C SPECIFICATION

void vis_LCaseConcMax (vis_LCase *lcase,
                       Vint type,
                       Vint *maxindex)

INPUT ARGUMENTS

lcase        Pointer to LCase object.
type         Concentrated load type

OUTPUT ARGUMENTS

maxindex     Maximum node number

DESCRIPTION

Return the maximum node number for which a concentrated load of type has been defined. If no concentrated loads of type have been defined then maxindex is returned as zero.


Table of Contents , LCase

NAME

vis_LCaseConcType - query concentrated load types at a node

C SPECIFICATION

void vis_LCaseConcType (vis_LCase *lcase,
                        Vint index,
                        Vint *ntypes,
                        Vint type[])

INPUT ARGUMENTS

lcase        Pointer to LCase object.
index        Node number

OUTPUT ARGUMENTS

ntypes       Number of types of concentrated loads
type         Array of concentrated load types

ERRORS

SYS_ERROR_VALUE is generated if an improper index is specified.

DESCRIPTION

Return number of concentrated load types, ntypes, and types, type, of all defined concentrated load types at node index.


Table of Contents , LCase

NAME

vis_LCaseConc - query concentrated load given a type

C SPECIFICATION

void vis_LCaseConc (vis_LCase *lcase,
                    Vint index,
                    Vint type,
                    Vfloat value[])

void vis_LCaseConcdv (vis_LCase *lcase,
                      Vint index,
                      Vint type,
                      Vdouble value[])

INPUT ARGUMENTS

lcase        Pointer to LCase object.
index        Node number
type         Concentrated load type

OUTPUT ARGUMENTS

value        Applied values

ERRORS

SYS_ERROR_VALUE is generated if an improper index is specified. SYS_ERROR_ENUM is generated if an improper type is specified.

DESCRIPTION

Query for concentrated load values for a specified load type at a node index.


Table of Contents , LCase

NAME

vis_LCaseConcTId - query concentrated load table id given type

C SPECIFICATION

void vis_LCaseConcTId (vis_LCase *lcase,
                      Vint index,
                      Vint type,
                      Vint tid[])

INPUT ARGUMENTS

lcase        Pointer to LCase object.
index        Node number
type         Concentrated load type

OUTPUT ARGUMENTS

tid          Table identifiers

ERRORS

SYS_ERROR_VALUE is generated if an improper index is specified. SYS_ERROR_ENUM is generated if an improper type is specified.

DESCRIPTION

Query for concentrated load table identifiers for a specified load type at a node index.


Table of Contents , LCase

NAME

vis_LCaseAddDist - add a distributed load

C SPECIFICATION

void vis_LCaseAddDist (vis_LCase *lcase,
                       Vint enttype,
                       Vint index,
                       Vint no,
                       Vint type,
                       Vfloat value[])

void vis_LCaseAddDistdv (vis_LCase *lcase,
                         Vint enttype,
                         Vint index,
                         Vint no,
                         Vint type,
                         Vdouble value[])

INPUT ARGUMENTS

lcase        Pointer to LCase object.
index        Element number
enttype      Entity type on which load is applied
             =SYS_EDGE     Element edge
             =SYS_FACE     Element face
no           Element edge or face number
type         Distributed load type
             =LCASE_TRAC              Vector of tractions at each node
             =LCASE_DMOM              Vector of moments at each node
             =LCASE_PRES              Scalar pressure at each node
             =LCASE_TANGFORCE         Scalar tangential force at each node
             =LCASE_TANGMOMENT        Scalar tangential moment at each node
             =LCASE_HEATCONV          Scalars heat convection at each node
             =LCASE_HEATRAD           Scalars heat radiation at each node
             =LCASE_HEATFLUX          Scalar heat flux at each node
             =LCASE_DSCA              Scalar at each node
             =LCASE_DVEC              Vector at each node
value        Load values

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_VALUE is generated if an improper index or no is specified. SYS_ERROR_ENUM is generated if an improper enttype or type is specified. VIS_ERROR_NULLOBJECT is generated if a GridFun object has not been set.

DESCRIPTION

Add a distributed load at an edge or face, no, of element index. Traction, tangent force and moment, and heat flux, heat convection and heat radiation may be specified on element edges. vis_LCaseSetDist to set a distributed load.


Table of Contents , LCase

NAME

vis_LCaseSetDist - set a distributed load

C SPECIFICATION

void vis_LCaseSetDist (vis_LCase *lcase,
                       Vint enttype,
                       Vint index,
                       Vint no,
                       Vint type,
                       Vfloat value[])

void vis_LCaseSetDistdv (vis_LCase *lcase,
                         Vint enttype,
                         Vint index,
                         Vint no,
                         Vint type,
                         Vdouble value[])

INPUT ARGUMENTS

lcase        Pointer to LCase object.
enttype      Entity type on which load is applied
             =SYS_EDGE     Element edge
             =SYS_FACE     Element face
index        Element number
no           Element edge or face number
type         Distributed load type
             =LCASE_TRAC              Vector of tractions at each node
             =LCASE_DMOM              Vector of moments at each node
             =LCASE_PRES              Scalar pressure at each node
             =LCASE_TANGFORCE         Scalar tangential force at each node
             =LCASE_TANGMOMENT        Scalar tangential moment at each node
             =LCASE_HEATCONV          Scalars heat convection at each node
             =LCASE_HEATRAD           Scalars heat radiation at each node
             =LCASE_HEATFLUX          Scalar heat flux at each node
             =LCASE_DSCA              Scalar at each node
             =LCASE_DVEC              Vector at each node
value        Load values

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_VALUE is generated if an improper index or no is specified. SYS_ERROR_ENUM is generated if an improper enttype or type is specified. VIS_ERROR_NULLOBJECT is generated if a GridFun object has not been set.

DESCRIPTION

Set a distributed load at an edge or face, no, of element index. Traction, tangent force and moment, and heat flux, heat radiation and heat convection may be specified on element edges. Distributed loads applied to edges are per unit length for 3D elements and per unit area for 2D elements (such as 2D axisymmetric solid elements). Traction, pressure and heat flux, heat radiation and heat convection may be specified on element faces. Distributed loads applied to faces are per unit area. Use vis_LCaseDistType to return the number and type of loads defined at an element edge or face. Use vis_LCaseDist to return the applied values of a given type of distribute load at an element edge or face.


Table of Contents , LCase

NAME

vis_LCaseSetDistTId - set a distributed load table id

C SPECIFICATION

void vis_LCaseSetDistTId (vis_LCase *lcase,
                          Vint enttype,
                          Vint index,
                          Vint no,
                          Vint type,
                          Vint tid[])

INPUT ARGUMENTS

lcase        Pointer to LCase object.
enttype      Entity type on which load is applied
             =SYS_EDGE     Element edge
             =SYS_FACE     Element face
index        Element number
no           Element edge or face number
type         Distributed load type
tid          Table identifiers

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_VALUE is generated if an improper index or no is specified. SYS_ERROR_ENUM is generated if an improper enttype or type is specified. VIS_ERROR_NULLOBJECT is generated if a GridFun object has not been set. SYS_ERROR_OPERATION is generated if a distributed load value for this type has not been previously specified.

DESCRIPTION

Set a distributed load table identifiers at an edge or face, no, of element index. A distributed load value must have been previously set using vis_LCaseSetDist.


Table of Contents , LCase

NAME

vis_LCaseAddElem - add an element load

C SPECIFICATION

void vis_LCaseAddElem (vis_LCase *lcase,
                       Vint index,
                       Vint type,
                       Vfloat value[])

void vis_LCaseAddElemdv (vis_LCase *lcase,
                         Vint index,
                         Vint type,
                         Vdouble value[])

INPUT ARGUMENTS

lcase        Pointer to LCase object.
index        Node number
type         Element body load type
             =LCASE_ACCLELEM          Vector of accelerations at each node
             =LCASE_HEATELEM          Scalar heat generation at each node 
value        Load values

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_VALUE is generated if an improper index is specified. SYS_ERROR_ENUM is generated if an improper type is specified. VIS_ERROR_NULLOBJECT is generated if a GridFun object has not been set.

DESCRIPTION

Add a single element load at element index. Use vis_LCaseSetElem to set an element load.


Table of Contents , LCase

NAME

vis_LCaseSetElem - set an element load

C SPECIFICATION

void vis_LCaseSetElem (vis_LCase *lcase,
                       Vint index,
                       Vint type,
                       Vfloat value[])

void vis_LCaseSetElemdv (vis_LCase *lcase,
                         Vint index,
                         Vint type,
                         Vdouble value[])

INPUT ARGUMENTS

lcase        Pointer to LCase object.
index        Element number
type         Element body load type
             =LCASE_ACCLELEM          Vector of accelerations at each node
             =LCASE_HEATELEM          Scalar heat generation at each node 
value        Load values

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_VALUE is generated if an improper index is specified. SYS_ERROR_ENUM is generated if an improper type is specified. VIS_ERROR_NULLOBJECT is generated if a GridFun object has not been set.

DESCRIPTION

Set an element load on element index. Accelerations and volumetric heat generation may be specified on element nodes. Use vis_LCaseElemType to return the number and type of loads defined at an element. Use vis_LCaseElem to return the applied values of a given type of load at an element.


Table of Contents , LCase

NAME

vis_LCaseSetElemTId - set an element load table id

C SPECIFICATION

void vis_LCaseSetElemTId (vis_LCase *lcase,
                          Vint index,
                          Vint type,
                          Vtid tid[])

INPUT ARGUMENTS

lcase        Pointer to LCase object.
index        Element number
type         Element body load type
tid          Table identifiers

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_VALUE is generated if an improper index is specified. SYS_ERROR_ENUM is generated if an improper type is specified. VIS_ERROR_NULLOBJECT is generated if a GridFun object has not been set. SYS_ERROR_OPERATION is generated if an element load value for this type has not been previously specified.

DESCRIPTION

Set an element load table identifier on element index. An element load value must have been previously set using vis_LCaseSetElem.


Table of Contents , LCase

NAME

vis_LCaseSetObject - set pointers to attribute objects.

C SPECIFICATION

void vis_LCaseSetObject (vis_LCase *lcase,
                         Vint objecttype,
                         Vobject *object)

INPUT ARGUMENTS

lcase        Pointer to LCase object.
objecttype   The name of the object type to be set.
             =VIS_GRIDFUN            GridFun object
object       Pointer to the object to be set.

OUTPUT ARGUMENTS

None

ERRORS

VIS_ERROR_OBJECTTYPE is generated if an improper objecttype is specified.

DESCRIPTION

Set a pointer to an attribute object. A GridFun attribute object is required before any definition or query of element distributed loads.


Table of Contents , LCase

NAME

vis_LCaseDistFlag - query distributed load set given a type

C SPECIFICATION

void vis_LCaseDistFlag (vis_LCase *lcase,
                        Vint enttype,
                        Vint index,
                        Vint type,
                        Vint *flag)

INPUT ARGUMENTS

lcase        Pointer to LCase object.
enttype      Entity type on which load is applied
             =SYS_EDGE     Element edge
             =SYS_FACE     Element face
index        Element number
type         Distributed load type

OUTPUT ARGUMENTS

flag         Flags indicating entities for which distributed load set

DESCRIPTION

Get bit flags, encoded in flag, for element index indicating which element entities have had distributed loads of type set. The flags for element faces are returned encoded in the low order 6 bits. The flags for element edges are returned encoded in the low order 12 bits.


Table of Contents , LCase

NAME

vis_LCaseDistMax - query maximum element index

C SPECIFICATION

void vis_LCaseDistMax (vis_LCase *lcase,
                       Vint enttype,
                       Vint type,
                       Vint *maxindex)

INPUT ARGUMENTS

lcase        Pointer to LCase object.
enttype      Entity type on which load is applied
             =SYS_EDGE     Element edge
             =SYS_FACE     Element face
type         Distributed load type

OUTPUT ARGUMENTS

maxindex     Maximum element number

DESCRIPTION

Return the maximum element number for which a distributed load of type applied to entity type, enttype, has been defined. If no distributed loads have been defined then maxindex is returned as zero.


Table of Contents , LCase

NAME

vis_LCaseDistType - query distributed load types

C SPECIFICATION

void vis_LCaseDistType (vis_LCase *lcase,
                        Vint enttype,
                        Vint index,
                        Vint no,
                        Vint *ntypes,
                        Vint type[])

INPUT ARGUMENTS

lcase        Pointer to LCase object.
index        Element number
enttype      Entity type on which load is applied
             =SYS_EDGE     Element edge
             =SYS_FACE     Element face
no           Element edge or face number

OUTPUT ARGUMENTS

ntypes       Number of types of distributed loads
type         Array of distributed load types

DESCRIPTION

Return number of distributed load types, ntypes, and types, type, of all defined distributed load types at edge or face, no, of element index.


Table of Contents , LCase

NAME

vis_LCaseDist - query distributed load given a type

C SPECIFICATION

void vis_LCaseDist (vis_LCase *lcase,
                    Vint enttype,
                    Vint index,
                    Vint no,
                    Vint type,
                    Vint enflag,
                    Vfloat value[])

void vis_LCaseDistdv (vis_LCase *lcase,
                      Vint enttype,
                      Vint index,
                      Vint no,
                      Vint type,
                      Vint enflag,
                      Vdouble value[])

INPUT ARGUMENTS

lcase        Pointer to LCase object.
enttype      Entity type on which load is applied
             =SYS_EDGE     Element edge
             =SYS_FACE     Element face
index        Element number
no           Element edge or face number
type         Distributed load type
enflag       Flag to return distributed loads at element nodes

OUTPUT ARGUMENTS

value        Applied distributed load values at nodes

ERRORS

VIS_ERROR_NULLOBJECT is generated if a GridFun object has not been set.

DESCRIPTION

Query for distributed load values for a specified load type at an edge or face, no, of element index. If the element node flag, enflag, is set then the distributed load values will be returned at element nodes rather than element edge or face nodes.


Table of Contents , LCase

NAME

vis_LCaseDistTId - query distributed load table id given a type

C SPECIFICATION

void vis_LCaseDistTId (vis_LCase *lcase,
                       Vint enttype,
                       Vint index,
                       Vint no,
                       Vint type,
                       Vint tid[])

INPUT ARGUMENTS

lcase        Pointer to LCase object.
enttype      Entity type on which load is applied
             =SYS_EDGE     Element edge
             =SYS_FACE     Element face
index        Element number
no           Element edge or face number
type         Distributed load type

OUTPUT ARGUMENTS

tid          Table identifiers

ERRORS

VIS_ERROR_NULLOBJECT is generated if a GridFun object has not been set.

DESCRIPTION

Query for distributed load table identifiers for a specified load type at an edge or face, no, of element index.


Table of Contents , LCase

NAME

vis_LCaseElemMax - query maximum element index

C SPECIFICATION

void vis_LCaseElemMax (vis_LCase *lcase,
                       Vint type,
                       Vint *maxindex)

INPUT ARGUMENTS

lcase        Pointer to LCase object.
type         Element load type

OUTPUT ARGUMENTS

maxindex     Maximum element number

DESCRIPTION

Return the maximum element number for which an element load of type has been defined. If no element loads have been defined then maxindex is returned as zero.


Table of Contents , LCase

NAME

vis_LCaseElemFlag - query element load set given a type

C SPECIFICATION

void vis_LCaseElemFlag (vis_LCase *lcase,
                        Vint index,
                        Vint type,
                        Vint *flag)

INPUT ARGUMENTS

lcase        Pointer to LCase object.
index        Element number
type         Element load type

OUTPUT ARGUMENTS

flag         Flag indicating if element load set

ERRORS

VIS_ERROR_NULLOBJECT is generated if a GridFun object has not been set.

DESCRIPTION

Query for an element load having been set for a specified load type at an element index. If an element load has been defined at the element then flag is set to 1 otherwise it is set to 0.


Table of Contents , LCase

NAME

vis_LCaseElemType - query element load types

C SPECIFICATION

void vis_LCaseElemType (vis_LCase *lcase,
                        Vint index,
                        Vint *ntypes,
                        Vint type[])

INPUT ARGUMENTS

lcase        Pointer to LCase object.
index        Element number

OUTPUT ARGUMENTS

ntypes       Number of types of element loads
type         Array of element load types

ERRORS

VIS_ERROR_NULLOBJECT is generated if a GridFun object has not been set.

DESCRIPTION

Return number of element load types, ntypes, and types, type, of all defined element load types on element index.


Table of Contents , LCase

NAME

vis_LCaseElem - query element load given a type

C SPECIFICATION

void vis_LCaseElem (vis_LCase *lcase,
                    Vint index,
                    Vint type,
                    Vfloat value[])

void vis_LCaseElemdv (vis_LCase *lcase,
                      Vint index,
                      Vint type,
                      Vdouble value[])

INPUT ARGUMENTS

lcase        Pointer to LCase object.
index        Element number
type         Element load type

OUTPUT ARGUMENTS

value        Applied distributed load values at nodes

ERRORS

VIS_ERROR_NULLOBJECT is generated if a GridFun object has not been set.

DESCRIPTION

Query for applied values for a specified load type on element index.


Table of Contents , LCase

NAME

vis_LCaseElemTId - query element load table id given a type

C SPECIFICATION

void vis_LCaseElemTId (vis_LCase *lcase,
                       Vint index,
                       Vint type,
                       Vint tid[])

INPUT ARGUMENTS

lcase        Pointer to LCase object.
index        Element number
type         Element load type

OUTPUT ARGUMENTS

tid          Table identifiers

ERRORS

VIS_ERROR_NULLOBJECT is generated if a GridFun object has not been set.

DESCRIPTION

Query for element load table identifiers for a specified load type on element index.


Table of Contents , LCase

NAME

vis_LCaseElemGroup - element group of element loads

C SPECIFICATION

void vis_LCaseElemGroup (vis_LCase *lcase,
                         vis_Group *group,
                         vis_Group *groupdst)

INPUT ARGUMENTS

lcase        Pointer to LCase object.
group        Pointer to Group object of element.
             If NULL, then all elements are assumed.

OUTPUT ARGUMENTS

groupdst     Pointer to derived Group object of elements.

ERRORS

VIS_ERROR_VALUE is generated if group is not an element edge group.

DESCRIPTION

Derive a group of elements from an input group of elements which have element loads defined.

The output groupdst must have been previously created and defined as an element group. Note that groupdst is not cleared by this function, the derived element entities are added to any existing elements in the output groupdst.


Table of Contents , LCase

NAME

vis_LCaseEdgeGroup - edge group of distributed loads

C SPECIFICATION

void vis_LCaseEdgeGroup (vis_LCase *lcase,
                         vis_Group *group,
                         vis_Group *groupdst)

INPUT ARGUMENTS

lcase        Pointer to LCase object.
group        Pointer to Group object of element edges.
             If NULL, then all element edges are assumed.

OUTPUT ARGUMENTS

groupdst     Pointer to derived Group object of element edges.

ERRORS

VIS_ERROR_VALUE is generated if group is not an element edge group.

DESCRIPTION

Derive a group of element edges from an input group of element edges which have distributed loads defined.

The output groupdst must have been previously created and defined as an element edge group. Note that groupdst is not cleared by this function, the derived element edge entities are added to any existing element edges in the output groupdst.


Table of Contents , LCase

NAME

vis_LCaseFaceGroup - face group of distributed loads

C SPECIFICATION

void vis_LCaseFaceGroup (vis_LCase *lcase,
                         vis_Group *group,
                         vis_Group *groupdst)

INPUT ARGUMENTS

lcase        Pointer to LCase object.
group        Pointer to Group object of element faces.
             If NULL, then all element faces are assumed.

OUTPUT ARGUMENTS

groupdst     Pointer to derived Group object of element faces.

ERRORS

VIS_ERROR_VALUE is generated if group is not an element face group.

DESCRIPTION

Derive a group of element faces from an input group of element faces which have distributed loads defined.

The output groupdst must have been previously created and defined as an element face group. Note that groupdst is not cleared by this function, the derived element face entities are added to any existing element faces in the output groupdst.


Table of Contents , LCase

NAME

vis_LCaseNodeGroup - node group of concentrated loads

C SPECIFICATION

void vis_LCaseNodeGroup (vis_LCase *lcase,
                         vis_Group *group,
                         vis_Group *groupdst)

INPUT ARGUMENTS

lcase        Pointer to LCase object.
group        Pointer to Group object of nodes.
             If NULL, then all nodes are assumed.

OUTPUT ARGUMENTS

groupdst     Pointer to derived Group object of nodes.

ERRORS

VIS_ERROR_VALUE is generated if group is not a node group.

DESCRIPTION

Derive a group of nodes from an input group of nodes which have concentrated loads defined.

The output groupdst must have been previously created and defined as a node group. Note that groupdst is not cleared by this function, the derived node entities are added to any existing nodes in the output groupdst.


Table of Contents , LCase

NAME

vis_LCaseSpecFlag - query any load specifications

C SPECIFICATION

void vis_LCaseSpecFlag (vis_LCase *lcase,
                        Vint *flag)

INPUT ARGUMENTS

lcase        Pointer to LCase object.

OUTPUT ARGUMENTS

flag         Flag indicating if any load set

DESCRIPTION

Query if any load specifications of any type have been made. The return value, flag, will be zero only if no loads have been specified of any type.


Table of Contents , LCase

NAME

vis_LCaseSetName - set name string

C SPECIFICATION

void vis_LCaseSetName (vis_LCase *lcase,
                       Vchar *name)

INPUT ARGUMENTS

lcase        Pointer to LCase object.
name         Name string

OUTPUT ARGUMENTS

None

DESCRIPTION

Set a name string. The name string can contain up to 81 characters including the terminating NULL. If the name is not specified it is returned as a single NULL character using vis_LCaseGetName.

Get name as an output argument.

     void vis_LCaseGetName (const vis_LCase *lcase,
                            Vchar name[])


Table of Contents , LCase

NAME

vis_LCaseSetComplexMode - set specify/query mode for complex data

C SPECIFICATION

void vis_LCaseSetComplexMode (vis_LCase *lcase,
                              Vint complexmode)

INPUT ARGUMENTS

lcase        Pointer to LCase object.
complexmode  Complex mode
             =SYS_COMPLEX_REAL           Real
             =SYS_COMPLEX_IMAGINARY      Imaginary
             =SYS_COMPLEX_REALIMAGINARY  Real and imaginary

OUTPUT ARGUMENTS

None

DESCRIPTION

Set complex mode. By default the complex mode is SYS_COMPLEX_REAL.

Get complexmode as an output argument.

     void vis_LCaseGetComplexMode (const vis_LCase *lcase,
                                   Vint *complexmode)


Table of Contents , LCase

NAME

vis_LCaseGetComplex - query for complex data existence

C SPECIFICATION

void vis_LCaseGetComplex (vis_LCase *lcase,
                          Vint *complexflag)

INPUT ARGUMENTS

lcase        Pointer to LCase object.

OUTPUT ARGUMENTS

complexflag  Complex data existence flag

DESCRIPTION

Query for complex data. The complexflag will be returned as one if the complex mode set by vis_LCaseSetComplexMode is ever SYS_COMPLEX_IMAGINARY or SYS_COMPLEX_REALIMAGINARY, otherwise it is returned as zero.


Table of Contents

21.3 Restraint Case - RCase

The RCase module manages degree of freedom constraints in the form of single point constraints (SPC's) defined at nodes or element constraints defined at elements. A single point constraint may consist of a simple fixity, a constraint to a specified value or an equivalence to another node. An element constraint may consist of a simple fixity or a constraint to a specified value. The specified constraint value may be applied to the primary degree of freedom or a time derivative. The constraint value may be a general function of time or frequency. Note that complex valued single point applied constraints may be specified. This is used for example in steady state structural dynamics.

The functions associated with a RCase object are the following.

Instance a RCase object initially using vis_RCaseBegin. Complex valued constraints may be specified. The real and imaginary parts of a complex valued constraint may be specified one at a time or together depending upon the state of the complex mode of RCase. The user sets the complex mode using vis_RCaseSetComplexMode. See section VisTools, Complex Numbers for a description of the general usage of complex valued data in Vistools modules.

Define single point constraints at a node using vis_RCaseSetSPC. Generate a node group of all nodes at which single point constraints have been defined using vis_RCaseNodeGroup. Query for the number and type of degrees of freedom at a node which have single point constraints using vis_RCaseSPCTag. Return the single point constraint value and/or equivalencing information at a node using vis_RCaseSPC. Return the maximum node index for which single point constraints have been defined using vis_RCaseSPCMax. Similar functions exist for setting and querying contraints at elements. vis_RCaseSetElemC, vis_RCaseElemC, etc. Note that the RCASE_MASTER option does not exist for element constraints.

Each applied constraint value component may be assigned a separate table identifier using the function vis_RCaseSetSPCTId. These tables are represented by TCurve objects and are normally used to specify time or frequency dependent variation of the individual components of applied constraint.

For dynamics applications the applied constraint may be a time derivative of the primary degree of freedom value. This is done using the function vis_RCaseSetSPCDot. For example, applied velocities and/or accelerations may be specified.

Single point constraint types are as follows.

Table of Contents

21.4 Function Descriptions

The currently available RCase functions are described in detail in this section.


Table of Contents , RCase

NAME

*vis_RCaseBegin - create an instance of a RCase object

C SPECIFICATION

vis_RCase *vis_RCaseBegin ()

ARGUMENTS

None

FUNCTION RETURN VALUE

The function returns a pointer to the newly created RCase object. If the object creation fails, NULL is returned.

DESCRIPTION

Create an instance of a RCase object. Memory is allocated for the object private data and the pointer to the data is returned.

Destroy an instance of a RCase object using

     void vis_RCaseEnd (vis_RCase *rcase)

Return the current value of a RCase object error flag using

     Vint vis_RCaseError (vis_RCase *rcase)


Table of Contents , RCase

NAME

vis_RCaseAdd - add two restraint cases

C SPECIFICATION

void vis_RCaseAdd (vis_RCase *rcase,
                   vis_RCase *addrcase)

INPUT ARGUMENTS

rcase        Pointer to RCase object.
addrcase     Pointer to RCase object to add

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_OPERATION is generated if addrcase is the same object as rcase

DESCRIPTION

Add the restraint case addrcase to rcase. If the restraint case addrcase contains restraints at the same entity and degree of freedom as rcase then the restraint definition in addrcase takes precedence.


Table of Contents , RCase

NAME

vis_RCaseClear - clear all constraints

C SPECIFICATION

void vis_RCaseClear (vis_RCase *rcase)

INPUT ARGUMENTS

rcase        Pointer to RCase object.

OUTPUT ARGUMENTS

None

DESCRIPTION

Clear all defined constraints.


Table of Contents , RCase

NAME

vis_RCaseSetSPC - set a single point constraint

C SPECIFICATION

void vis_RCaseSetSPC (vis_RCase *rcase,
                      Vint index,
                      Vint tag,
                      Vint type,
                      Vfloat value[],
                      Vint master)

void vis_RCaseSetSPCdv (vis_RCase *rcase,
                        Vint index,
                        Vint tag,
                        Vint type,
                        Vdouble value[],
                        Vint master)

INPUT ARGUMENTS

rcase        Pointer to RCase object.
index        Node number, index >= 1
tag          Degree of freedom type
type         Single point constraint type
             =RCASE_FREE              Free
             =RCASE_FIXED             Simple fixity
             =RCASE_APPLIED           Constraint to applied value
             =RCASE_MASTER            Equivalence to another master node
value        Applied value
master       Master node

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_VALUE is generated if an improper index is specified. SYS_ERROR_ENUM is generated if an improper tag or type is specified.

DESCRIPTION

Set a single point constraint at a degree of freedom, tag at a node index. Depending upon the type of single point constraint, the applied value or master node must be supplied. A type of RCASE_FREE will remove any previously defined single point constraint. Use vis_RCaseSPCTag to return the number and type of single point constraints defined at a node. Use vis_RCaseSPC to return the applied value and/or master node of a single point constraint. Note that the applied value is an array in case the applied value is a complex number in which real and imaginary values must be supplied.


Table of Contents , RCase

NAME

vis_RCaseSetSPCDot - set a single point constraint derivative

C SPECIFICATION

void vis_RCaseSetSPCDot (vis_RCase *rcase,
                         Vint index,
                         Vint tag,
                         Vint dottype)

INPUT ARGUMENTS

rcase        Pointer to RCase object.
index        Node number, index >= 1
tag          Degree of freedom type
dottype      Derivative type
             =RCASE_DOF               Degree of freedom
             =RCASE_DOFDOT            First time derivative
             =RCASE_DOFDOTDOT         Second time derivative

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_VALUE is generated if an improper index is specified. SYS_ERROR_ENUM is generated if an improper tag or dottype is specified. SYS_ERROR_OPERATION is generated if an applied constraint value has not been previously specified.

DESCRIPTION

Set a single point applied constraint value time derivative. The applied constraint value must have been previously defined using vis_RCaseSetSPC.


Table of Contents , RCase

NAME

vis_RCaseSetSPCTId - set a single point constraint table id

C SPECIFICATION

void vis_RCaseSetSPCTId (vis_RCase *rcase,
                         Vint index,
                         Vint tag,
                         Vint tid[])

INPUT ARGUMENTS

rcase        Pointer to RCase object.
index        Node number, index >= 1
tag          Degree of freedom type
tid          Table identifiers

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_VALUE is generated if an improper index is specified. SYS_ERROR_ENUM is generated if an improper tag is specified. SYS_ERROR_OPERATION is generated if an applied constraint value has not been previously specified.

DESCRIPTION

Set a single point applied constraint value time derivative. The applied constraint value must have been previously defined using vis_RCaseSetSPC.


Table of Contents , RCase

NAME

vis_RCaseSPCMax - query maximum node index

C SPECIFICATION

void vis_RCaseSPCMax (vis_RCase *rcase,
                      Vint *maxindex)

INPUT ARGUMENTS

rcase        Pointer to RCase object.

OUTPUT ARGUMENTS

maxindex     Maximum node number

DESCRIPTION

Return the maximum node number for which single point constraints have been defined. If no single point constraints have been defined then maxindex is returned as zero.


Table of Contents , RCase

NAME

vis_RCaseSPCTag - query constraint tags at a node

C SPECIFICATION

void vis_RCaseSPCTag (vis_RCase *rcase,
                      Vint index,
                      Vint *ntags,
                      Vint tag[])

INPUT ARGUMENTS

rcase        Pointer to RCase object.
index        Node number, index >= 1

OUTPUT ARGUMENTS

ntags        Number of degrees of freedom  with single point constraints
tag          Vector of degree of freedom types

ERRORS

SYS_ERROR_VALUE is generated if an improper index is specified.

DESCRIPTION

Return number of degrees of freedom, ntags, and types, tag, of all degrees of freedom at node index at which single point constraints have been defined.


Table of Contents , RCase

NAME

vis_RCaseSPCUseTag - query used constraint tags

C SPECIFICATION

void vis_RCaseSPCUseTag (vis_RCase *rcase,
                         Vint *ntags,
                         Vint tag[])

INPUT ARGUMENTS

rcase        Pointer to RCase object.

OUTPUT ARGUMENTS

ntags        Number of degrees of freedom types used at nodes
tag          Vector of degree of freedom types

DESCRIPTION

Return the number, ntags, and types, tag, of all the degrees of freedom used at nodes to define single point constraints.


Table of Contents , RCase

NAME

vis_RCaseSPC - query single point constraint

C SPECIFICATION

void vis_RCaseSPC (vis_RCase *rcase,
                   Vint index,
                   Vint tag,
                   Vint *type,
                   Vfloat value[],
                   Vint *master)

void vis_RCaseSPCdv (vis_RCase *rcase,
                     Vint index,
                     Vint tag,
                     Vint *type,
                     Vdouble value[],
                     Vint *master)

INPUT ARGUMENTS

rcase        Pointer to RCase object.
index        Node number, index >= 1
tag          Degree of freedom type

OUTPUT ARGUMENTS

type         Single point constraint type
value        Applied value
master       Master node

ERRORS

SYS_ERROR_VALUE is generated if an improper index is specified.

DESCRIPTION

Query for single point constraint type, applied value and master node for a specified degree of freedom type, tag at a node index. If a single point constraint has not been defined for a node index and/or tag the type is returned as RCASE_FREE and value and master are undefined.


Table of Contents , RCase

NAME

vis_RCaseSPCDot - query single point constraint derivative

C SPECIFICATION

void vis_RCaseSPCDot (vis_RCase *rcase,
                      Vint index,
                      Vint tag,
                      Vint *dottype)

INPUT ARGUMENTS

rcase        Pointer to RCase object.
index        Node number, index >= 1
tag          Degree of freedom type

OUTPUT ARGUMENTS

dottype      Derivative type

ERRORS

SYS_ERROR_VALUE is generated if an improper index is specified.

DESCRIPTION

Query for single point constraint applied value time derivative for a specified degree of freedom type, tag at a node index. If a single point applied constraint has not been defined for a node index and/or tag, doftype is returned as 0.


Table of Contents , RCase

NAME

vis_RCaseSPCTId - query single point constraint table id

C SPECIFICATION

void vis_RCaseSPCTId (vis_RCase *rcase,
                      Vint index,
                      Vint tag,
                      Vint tid[])

INPUT ARGUMENTS

rcase        Pointer to RCase object.
index        Node number, index >= 1
tag          Degree of freedom type

OUTPUT ARGUMENTS

tid          Table identifiers

ERRORS

SYS_ERROR_VALUE is generated if an improper index is specified.

DESCRIPTION

Query for single point constraint applied value table identifiers for a specified degree of freedom type, tag at a node index. If a single point applied constraint has not been defined for a node index and/or tag, tid entries are returned as 0.


Table of Contents , RCase

NAME

vis_RCaseNodeGroup - node group of single point constraints

C SPECIFICATION

void vis_RCaseNodeGroup (vis_RCase *rcase,
                         vis_Group *group,
                         vis_Group *groupdst)

INPUT ARGUMENTS

rcase        Pointer to RCase object.
group        Pointer to Group object of nodes.
             If NULL, then all nodes are assumed.

OUTPUT ARGUMENTS

groupdst     Pointer to derived Group object of nodes.

ERRORS

VIS_ERROR_VALUE is generated if group is not a node group.

DESCRIPTION

Derive a group of nodes from an input group of nodes which have single point constraints defined.

The output groupdst must have been previously created and defined as a node group. Note that groupdst is not cleared by this function, the derived node entities are added to any existing nodes in the output groupdst.


Table of Contents , RCase

NAME

vis_RCaseSetElemC - set an element constraint

C SPECIFICATION

void vis_RCaseSetElemC (vis_RCase *rcase,
                        Vint index,
                        Vint tag,
                        Vint type,
                        Vfloat value)

void vis_RCaseSetElemCdv (vis_RCase *rcase,
                          Vint index,
                          Vint tag,
                          Vint type,
                          Vdouble value)

INPUT ARGUMENTS

rcase        Pointer to RCase object.
index        Element number, index >= 1
tag          Degree of freedom type
type         Constraint type
             =RCASE_FREE              Free
             =RCASE_FIXED             Simple fixity
             =RCASE_APPLIED           Constraint to applied value
value        Applied value

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_VALUE is generated if an improper index is specified. SYS_ERROR_ENUM is generated if an improper tag or type is specified.

DESCRIPTION

Set a constraint at a degree of freedom, tag at an element index. Depending upon the type of constraint, the applied value must be supplied. A type of RCASE_FREE will remove any previously defined constraint. Use vis_RCaseElemCTag to return the number and type of constraints defined at an element. Use vis_RCaseElemC to return the applied value of a constraint.


Table of Contents , RCase

NAME

vis_RCaseElemCMax - query maximum element index

C SPECIFICATION

void vis_RCaseElemCMax (vis_RCase *rcase,
                        Vint *maxindex)

INPUT ARGUMENTS

rcase        Pointer to RCase object.

OUTPUT ARGUMENTS

maxindex     Maximum element number

DESCRIPTION

Return the maximum element number for which constraints have been defined. If no element constraints have been defined then maxindex is returned as zero.


Table of Contents , RCase

NAME

vis_RCaseElemCTag - query constraint tags at an element

C SPECIFICATION

void vis_RCaseElemCTag (vis_RCase *rcase,
                        Vint index,
                        Vint *ntags,
                        Vint tag[])

INPUT ARGUMENTS

rcase        Pointer to RCase object.
index        Element number, index >= 1

OUTPUT ARGUMENTS

ntags        Number of degrees of freedom  with constraints
tag          Vector of degree of freedom types

ERRORS

SYS_ERROR_VALUE is generated if an improper index is specified.

DESCRIPTION

Return number of degrees of freedom, ntags, and types, tag, of all degrees of freedom at element index at which constraints have been defined.


Table of Contents , RCase

NAME

vis_RCaseElemCUseTag - query used constraint tags

C SPECIFICATION

void vis_RCaseElemCUseTag (vis_RCase *rcase,
                           Vint *ntags,
                           Vint tag[])

INPUT ARGUMENTS

rcase        Pointer to RCase object.

OUTPUT ARGUMENTS

ntags        Number of degrees of freedom types used at elements
tag          Vector of degree of freedom types

DESCRIPTION

Return the number, ntags, and types, tag, of all the degrees of freedom used at elements to define constraints.


Table of Contents , RCase

NAME

vis_RCaseElemC - query element constraint

C SPECIFICATION

void vis_RCaseElemC (vis_RCase *rcase,
                     Vint index,
                     Vint tag,
                     Vint *type,
                     Vfloat *value)

void vis_RCaseElemCdv (vis_RCase *rcase,
                       Vint index,
                       Vint tag,
                       Vint *type,
                       Vdouble *value)

INPUT ARGUMENTS

rcase        Pointer to RCase object.
index        Element number, index >= 1
tag          Degree of freedom type

OUTPUT ARGUMENTS

type         Constraint type
value        Applied value

ERRORS

SYS_ERROR_VALUE is generated if an improper index is specified.

DESCRIPTION

Query for element constraint type and applied value for a specified degree of freedom type, tag at a node index.


Table of Contents , RCase

NAME

vis_RCaseElemGroup - element group of constraints

C SPECIFICATION

void vis_RCaseElemGroup (vis_RCase *rcase,
                         vis_Group *group,
                         vis_Group *groupdst)

INPUT ARGUMENTS

rcase        Pointer to RCase object.
group        Pointer to Group object of elements.
             If NULL, then all elements are assumed.

OUTPUT ARGUMENTS

groupdst     Pointer to derived Group object of nodes.

ERRORS

VIS_ERROR_VALUE is generated if group is not a element group.

DESCRIPTION

Derive a group of elements from an input group of elements which have element constraints defined.

The output groupdst must have been previously created and defined as a element group. Note that groupdst is not cleared by this function, the derived element entities are added to any existing element in the output groupdst.


Table of Contents , RCase

NAME

vis_RCaseSpecFlag - query any restraint specifications

C SPECIFICATION

void vis_RCaseSpecFlag (vis_RCase *rcase,
                        Vint *flag)

INPUT ARGUMENTS

rcase        Pointer to RCase object.

OUTPUT ARGUMENTS

flag         Flag indicating if any restraints set

DESCRIPTION

Query if any restraint specifications of any type have been made. The return value, flag, will be zero only if no restraints have been specified of any type.


Table of Contents , RCase

NAME

vis_RCaseSetName - set name string

C SPECIFICATION

void vis_RCaseSetName (vis_RCase *rcase,
                       Vchar *name)

INPUT ARGUMENTS

rcase        Pointer to RCase object.
name         Name string

OUTPUT ARGUMENTS

None

DESCRIPTION

Set a name string. The name string can contain up to 81 characters including the terminating NULL. If the name is not specified it is returned as a single NULL character using vis_RCaseGetName.

Get name as an output argument.

     void vis_RCaseGetName (const vis_RCase *rcase,
                            Vchar name[])


Table of Contents , RCase

NAME

vis_RCaseSetComplexMode - set specify/query mode for complex data

C SPECIFICATION

void vis_RCaseSetComplexMode (vis_RCase *rcase,
                              Vint complexmode)

INPUT ARGUMENTS

rcase        Pointer to RCase object.
complexmode  Complex mode
             =SYS_COMPLEX_REAL           Real
             =SYS_COMPLEX_IMAGINARY      Imaginary
             =SYS_COMPLEX_REALIMAGINARY  Real and imaginary

OUTPUT ARGUMENTS

None

DESCRIPTION

Set complex mode. By default the complex mode is SYS_COMPLEX_REAL.

Get complexmode as an output argument.

     void vis_RCaseGetComplexMode (const vis_RCase *rcase,
                                   Vint *complexmode)


Table of Contents , RCase

NAME

vis_RCaseGetComplex - query for complex data existence

C SPECIFICATION

void vis_RCaseGetComplex (vis_RCase *rcase,
                          Vint *complexflag)

INPUT ARGUMENTS

rcase        Pointer to RCase object.

OUTPUT ARGUMENTS

complexflag  Complex data existence flag

DESCRIPTION

Query for complex data. The complexflag will be returned as one if the complex mode set by vis_RCaseSetComplexMode is ever SYS_COMPLEX_IMAGINARY or SYS_COMPLEX_REALIMAGINARY, otherwise it is returned as zero.


Table of Contents

21.5 Multipoint Constraint Case - MCase

The MCase module manages multipoint constraints defined at a nodes. There are two basic classes of multipoint constraints: 1) general multipoint degree of freedom constraint equations (MPC) and 2) built-in node based constraints such as pin joint, link connection, etc.

The functions associated with a MCase object are the following.

Instance a MCase object initially using vis_MCaseBegin. Define general multipoint degree of freedom constraints using vis_MCaseSetMPC. Multipoint constraints (type MCASE_MPC) are a series of n terms of the form:
     C1*U1 + C2*U2 + ... + Ci*Ui + ... + Cn*Un = R
where Ui represents a degree of freedom at a node and Ci is the associated coefficient. The multipoint constraint may be contain an inhomogeneity, R. Query for the degrees of freedom, coefficients and inhomogeneity associated with an MPC using vis_MCaseMPC.

Define built-in constraints using vis_MCaseSetCon. Query for the built-in constraint information using vis_MCaseCon. Current built-in constraint types are as follows.

Query for the maximum number of constraints defined using vis_MCaseMax. Query for constraint type using vis_MCaseType. Query for number of terms in a constraint using vis_MCaseNum. Delete a constraint using vis_MCaseDel.

Table of Contents

21.6 Function Descriptions

The currently available MCase functions are described in detail in this section.


Table of Contents , MCase

NAME

*vis_MCaseBegin - create an instance of a MCase object

C SPECIFICATION

vis_MCase *vis_MCaseBegin ()

ARGUMENTS

None

FUNCTION RETURN VALUE

The function returns a pointer to the newly created MCase object. If the object creation fails, NULL is returned.

DESCRIPTION

Create an instance of a MCase object. Memory is allocated for the object private data and the pointer to the data is returned.

Destroy an instance of a MCase object using

     void vis_MCaseEnd (vis_MCase *mcase)

Return the current value of a MCase object error flag using

     Vint vis_MCaseError (vis_MCase *mcase)


Table of Contents , MCase

NAME

vis_MCaseAdd - add two constraint cases

C SPECIFICATION

void vis_MCaseAdd (vis_MCase *mcase,
                   vis_MCase *addmcase)

INPUT ARGUMENTS

mcase        Pointer to MCase object.
addmcase     Pointer to MCase object to add

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_OPERATION is generated if addmcase is the same object as mcase

DESCRIPTION

Add the constraint case addmcase to mcase. The resulting mcase has the constraints of addmcase concatenated to mcase starting with a constraint index one greater than the maximum index in mcase.


Table of Contents , MCase

NAME

vis_MCaseClear - clear all constraints

C SPECIFICATION

void vis_MCaseClear (vis_MCase *mcase)

INPUT ARGUMENTS

mcase        Pointer to MCase object.

OUTPUT ARGUMENTS

None

DESCRIPTION

Clear all defined constraints


Table of Contents , MCase

NAME

vis_MCaseSetCon - set a built-in constraint

C SPECIFICATION

void vis_MCaseSetCon (vis_MCase *mcase,
                      Vint index,
                      Vint type,
                      Vint ix[])

INPUT ARGUMENTS

mcase        Pointer to MCase object.
index        Constraint number, index >= 1
type         Type of constraint
             =MCASE_BEAM              Beam
             =MCASE_LINK              Link
             =MCASE_PIN               Pin
             =MCASE_TIE               Tie
ix           Node numbers.

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_VALUE is generated if an improper index or nterms is specified.

DESCRIPTION

Set a constraint, index, of type, type at a node numbers ix. Query a built-in constraint using vis_MCaseCon


Table of Contents , MCase

NAME

vis_MCaseCon - query built-in constraint

C SPECIFICATION

void vis_MCaseCon (vis_MCase *mcase,
                   Vint index,
                   Vint *type,
                   Vint *nterms,
                   Vint ix[])

INPUT ARGUMENTS

mcase        Pointer to MCase object.
index        Constraint number, index >= 1

OUTPUT ARGUMENTS

type         Type of constraint
nterms       Number of terms in series
ix           Node numbers.

ERRORS

SYS_ERROR_VALUE is generated if an improper index is specified.

DESCRIPTION

Query for constraint index. If the constraint has not been defined the number of terms, nterms is returned as zero.


Table of Contents , MCase

NAME

vis_MCaseSetMPC - set a multipoint constraint

C SPECIFICATION

void vis_MCaseSetMPC (vis_MCase *mcase,
                      Vint index,
                      Vint nterms,
                      Vint ix[],
                      Vint tag[],
                      Vfloat c[],
                      Vfloat r)

void vis_MCaseSetMPCdv (vis_MCase *mcase,
                        Vint index,
                        Vint nterms,
                        Vint ix[],
                        Vint tag[],
                        Vdouble c[],
                        Vdouble r)

INPUT ARGUMENTS

mcase        Pointer to MCase object.
index        Constraint number, index >= 1
nterms       Number of terms in series
ix           Node numbers.
tag          Degree of freedom tags
c            Coefficients
r            Inhomogeneity

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_VALUE is generated if an improper index or nterms is specified. SYS_ERROR_ENUM is generated if an improper tag is specified.

DESCRIPTION

Set a multipoint constraint, index, at a series of nterms degrees of freedom, tag, at a node numbers ix with associated coefficients, c. The inhomogeneity, r, is specified. Return the maximum MPC index defined and the maximum number of terms defined using vis_MCaseMPC. Query an MPC using vis_MCaseMPC


Table of Contents , MCase

NAME

vis_MCaseSetRHS - set a multipoint dof constraint inhomogeneity

C SPECIFICATION

void vis_MCaseSetRHS (vis_MCase *mcase,
                      Vint index,
                      Vfloat r)

void vis_MCaseSetRHSdv (vis_MCase *mcase,
                        Vint index,
                        Vdouble r)

INPUT ARGUMENTS

mcase        Pointer to MCase object.
r            Inhomogeneity

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_VALUE is generated if an improper index is specified.

DESCRIPTION

Set inhomogeneity, rhs for a multipoint constraint, index, The multipoint constraint must have already been defined using vis_MCaseSetMPC.


Table of Contents , MCase

NAME

vis_MCaseDel - delete a constraint

C SPECIFICATION

void vis_MCaseDel (vis_MCase *mcase,
                   Vint index)

INPUT ARGUMENTS

mcase        Pointer to MCase object.
index        Constraint number, index >= 1

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_VALUE is generated if an improper index is specified.

DESCRIPTION

Delete constraint index. If the constraint index has not been defined the function returns without error.


Table of Contents , MCase

NAME

vis_MCaseMPC - query multipoint constraint

C SPECIFICATION

void vis_MCaseMPC (vis_MCase *mcase,
                   Vint index,
                   Vint *nterms,
                   Vint ix[],
                   Vint tag[],
                   Vfloat c[],
                   Vfloat *r)

void vis_MCaseMPCdv (vis_MCase *mcase,
                     Vint index,
                     Vint *nterms,
                     Vint ix[],
                     Vint tag[],
                     Vdouble c[],
                     Vdouble *r)

INPUT ARGUMENTS

mcase        Pointer to MCase object.
index        Constraint number, index >= 1

OUTPUT ARGUMENTS

nterms       Number of terms in series
ix           Node numbers.
tag          Degree of freedom tags
c            Coefficients
r            Inhomogeneity

ERRORS

SYS_ERROR_VALUE is generated if an improper index is specified.

DESCRIPTION

Query for constraint index. If the MPC has not been defined the number of terms, nterms is returned as zero. The maximum number of terms defined in any MPC can be queried using vis_MCaseMax.


Table of Contents , MCase

NAME

vis_MCaseMax - query for number of constraints defined

C SPECIFICATION

void vis_MCaseMax (vis_MCase *mcase,
                   Vint *maxindex,
                   Vint *maxterms)
                   Vint *maxrhs)

INPUT ARGUMENTS

mcase        Pointer to MCase object.

OUTPUT ARGUMENTS

maxindex     Maximum constraint number
maxterms     Maximum number of terms defined in any constraint
maxrhs       Maximum number of non-zero right hand sides defined

DESCRIPTION

Query for the maximum constraint index and maximum number of terms defined in any constraint. Use maxindex to loop over constraint indices and maxterms to allocate sufficient memory to query for constraint information using vis_MCaseMPC, or vis_MCaseCon.


Table of Contents , MCase

NAME

vis_MCaseNum - query for number of terms in constraint

C SPECIFICATION

void vis_MCaseNum (vis_MCase *mcase,
                   Vint index,
                   Vint *nterms)

INPUT ARGUMENTS

mcase        Pointer to MCase object.
index        Constraint number, index >= 1

OUTPUT ARGUMENTS

nterms       Number of terms in constraint

ERRORS

SYS_ERROR_VALUE is generated if an improper index is specified.

DESCRIPTION

Query for the number of terms in a given constraint index.


Table of Contents , MCase

NAME

vis_MCaseSpecFlag - query any constraint specifications

C SPECIFICATION

void vis_MCaseSpecFlag (vis_MCase *mcase,
                        Vint *flag)

INPUT ARGUMENTS

mcase        Pointer to MCase object.

OUTPUT ARGUMENTS

flag         Flag indicating if any constraint set

DESCRIPTION

Query if any constraint specifications of any type have been made. The return value, flag, will be zero only if no constraints have been specified of any type.


Table of Contents , MCase

NAME

vis_MCaseType - query for constraint type

C SPECIFICATION

void vis_MCaseType (vis_MCase *mcase,
                    Vint index,
                    Vint *type)

INPUT ARGUMENTS

mcase        Pointer to MCase object.
index        Constraint number, index >= 1

OUTPUT ARGUMENTS

type         Type of constraint

ERRORS

SYS_ERROR_VALUE is generated if an improper index is specified.

DESCRIPTION

Query for the type type of constraint index. If the constraint has not been defined then type is returned as 0.


Table of Contents , MCase

NAME

vis_MCaseInitIter - prepare to successively visit each constraint

C SPECIFICATION

void vis_MCaseInitIter (vis_MCase *mcase)

INPUT ARGUMENTS

mcase        Pointer to MCase object.

OUTPUT ARGUMENTS

None

DESCRIPTION

Initialize the successive return of each constraint index.

Sequential access to each constraint index

     void vis_MCaseNextIter (vis_MCase *mcase, Vint *index)


Table of Contents

21.7 Initial Condition Case - ICase

The ICase module manages degree of freedom initial conditions in the form of single point values defined at nodes. An initial condition may consist of a degree of freedom value or the time derivative of a degree of freedom value.

The functions associated with an ICase object are the following.

Instance an ICase object initially using vis_ICaseBegin. Define single point initial condition values at a node using vis_ICaseSetSPV. Generate a node group of all nodes at which initial conditions have been defined using vis_ICaseNodeGroup. Query for the number and type of initial conditions at a node using vis_ICaseSPVType. Return the initial condition degree of freedom types and associated values at a node using vis_ICaseSPV. Return the maximum node index for which single point initial conditions have been defined using vis_ICaseSPVMax.

Initial condition types are as follows.

Table of Contents

21.8 Function Descriptions

The currently available ICase functions are described in detail in this section.


Table of Contents , ICase

NAME

*vis_ICaseBegin - create an instance of a ICase object

C SPECIFICATION

vis_ICase *vis_ICaseBegin ()

ARGUMENTS

None

FUNCTION RETURN VALUE

The function returns a pointer to the newly created ICase object. If the object creation fails, NULL is returned.

DESCRIPTION

Create an instance of a ICase object. Memory is allocated for the object private data and the pointer to the data is returned.

Destroy an instance of a ICase object using

     void vis_ICaseEnd (vis_ICase *icase)

Return the current value of a ICase object error flag using

     Vint vis_ICaseError (vis_ICase *icase)


Table of Contents , ICase

NAME

vis_ICaseClear - clear all single point initial conditions

C SPECIFICATION

void vis_ICaseClear (vis_ICase *icase)

INPUT ARGUMENTS

icase        Pointer to ICase object.

OUTPUT ARGUMENTS

None

DESCRIPTION

Clear all defined single point initial conditions.


Table of Contents , ICase

NAME

vis_ICaseSetSPV - set a single point initial condition value

C SPECIFICATION

void vis_ICaseSetSPV (vis_ICase *icase,
                      Vint index,
                      Vint type,
                      Vint ntags,
                      Vint tag[],
                      Vfloat value[])

void vis_ICaseSetSPVdv (vis_ICase *icase,
                      Vint index,
                      Vint type,
                      Vint ntags,
                      Vint tag[],
                      Vdouble value[])

INPUT ARGUMENTS

icase        Pointer to ICase object.
index        Node number
type         Initial condition type
             =ICASE_DOF               Degree of freedom value
             =ICASE_DOFDOT            Time derivative value
ntags        Number of degree of freedom types
tag          Vector of degree of freedom types
value        Vector of values

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_ENUM is generated if an improper tag or type is specified. SYS_ERROR_VALUE is generated if an improper ntags is specified.

DESCRIPTION

Set initial conditions at ntags degree of freedom types, tag, with associated values, value, at a node index. Use vis_ICaseSPVType to return the number and type of initial conditions defined at a node. Use vis_ICaseSPV to query for the degree of freedom types and values of defined initial conditions.


Table of Contents , ICase

NAME

vis_ICaseSPV - query initial conditions given a type

C SPECIFICATION

void vis_ICaseSPV (vis_ICase *icase,
                   Vint index,
                   Vint type,
                   Vint *ntags,
                   Vint tag[],
                   Vfloat value[])

void vis_ICaseSPVdv (vis_ICase *icase,
                   Vint index,
                   Vint type,
                   Vint *ntags,
                   Vint tag[],
                   Vdouble value[])

INPUT ARGUMENTS

icase        Pointer to ICase object.
index        Node number
type         Initial condition type
             =ICASE_DOF               Degree of freedom value
             =ICASE_DOFDOT            Time derivative value

OUTPUT ARGUMENTS

ntags        Number of degree of freedom types
tag          Vector of degree of freedom types
value        Vector of values

DESCRIPTION

Query for number of degrees of freedom, ntags, degree of freedom types, tag and associated initial condition values, value, for a specified initial condition type, type at a node index.


Table of Contents , ICase

NAME

vis_ICaseSPVMax - query maximum node index

C SPECIFICATION

void vis_ICaseSPVMax (vis_ICase *icase,
                      Vint *maxindex)

INPUT ARGUMENTS

icase        Pointer to ICase object.

OUTPUT ARGUMENTS

maxindex     Maximum node number

DESCRIPTION

Return the maximum node number for which single point initial conditions have been defined. If no single point initial conditions have been defined then maxindex is returned as zero.


Table of Contents , ICase

NAME

vis_ICaseSPVType - query initial condition types at a node

C SPECIFICATION

void vis_ICaseSPVType (vis_ICase *icase,
                       Vint index,
                       Vint *ntypes,
                       Vint type[])

INPUT ARGUMENTS

icase        Pointer to ICase object.
index        Node number

OUTPUT ARGUMENTS

ntypes       Number of types of initial conditions
type         Array of initial condition types

DESCRIPTION

Return number of initial condition types, ntypes, and types, type, of all defined initial condition types at node index.


Table of Contents , ICase

NAME

vis_ICaseNodeGroup - node group of initial conditions

C SPECIFICATION

void vis_ICaseNodeGroup (vis_ICase *icase,
                         vis_Group *group,
                         vis_Group *groupdst)

INPUT ARGUMENTS

icase        Pointer to ICase object.
group        Pointer to Group object of nodes.
             If NULL, then all nodes are assumed.

OUTPUT ARGUMENTS

groupdst     Pointer to derived Group object of nodes.

ERRORS

VIS_ERROR_VALUE is generated if group is not a node group.

DESCRIPTION

Derive a group of nodes from an input group of nodes which have initial conditions defined.

The output groupdst must have been previously created and defined as a node group. Note that groupdst is not cleared by this function, the derived node entities are added to any existing nodes in the output groupdst.


Table of Contents , ICase

NAME

vis_ICaseSpecFlag - query any initial condition specifications

C SPECIFICATION

void vis_ICaseSpecFlag (vis_ICase *icase,
                        Vint *flag)

INPUT ARGUMENTS

icase        Pointer to ICase object.

OUTPUT ARGUMENTS

flag         Flag indicating if any initial conditions set

DESCRIPTION

Query if any initial condition specifications of any type have been made. The return value, flag, will be zero only if no initial conditions have been specified of any type.