Table of Contents

8. MultiPoint Constraints - MPC

The MPC module provides the basic capability of modeling multipoint constraints. Multipoint constraints are a general way to relate degrees of freedom to one another within a model. They provide a very powerful tool which is useful for many modeling problems. An important example is transmitting load between nodes which are separated in space or are attached to different types of degrees of freedom such as translations and rotations.

The methods associated with a MPC object are the following.

Instance a MPC object using vfe_MPCBegin. Once a MPC object is instanced, define the multipoint constraint type using vfe_MPCDef. Although the MPC module is designed for general multipoint constraints, it may be used effectively for the special case of single point constraints as well. Currently options exist for grounds, distributing couplings, interpolation constraints, NASTRAN like RBE1, RBE2, RBAR, RROD and RJOINT rigid body elements, and constraints oriented to a plane. The function vfe_MPCSetStan is used to specify a "standard" or generic form for a multipoint constraint with an inhomogeneity.

Constraints may be imposed using either a penalty method or a direct transformation. If the penalty method is used then the penalty factor used to impose the constraint using a penalty function method is specified using vfe_MPCSetParamd. The effective stiffness used to enforce the constraint and the force of constraint are computed using vfe_MPCStiff, vfe_MPCReactStiff and vfe_MPCReact.

By default, a penalty function method is used to impose the constraint. A Lagrange multiplier method may be chosen by calling vfe_MPCSetParami with type VFE_LAGMULT. The Lagrange multiplier may be augmented by penalty stiffness if desired. If the Lagrange multiplier method is enabled, a Lagrange multiplier freedom type SYS_DOF_LAGM is added to the constraint degree of freedom map. This freedom type indicates an element local freedom type which must not be assembled to any other freedoms. The element "stiffness" matrix for a constraint satisfied with Lagrange multipliers will contain zeros on the diagonal. Care must be taken to process Lagrange multiplier freedoms when solving the global equation system to account for the zero diagonal entry at these freedoms. Usually this means that the global equation number for a Lagrange multiplier freedom must be after all other freedoms involved in its constraint equation. Also note that each Lagrange multiplier freedom will result in a negative root in the global system matrix. The coefficients of the Lagrange multiplier stiffness are scaled by the penalty factor.

Constraint calculations may be performed involving degrees of freedom in rotated coordinate systems. Use the function vfe_MPCSetDirCos to set the direction cosine matrices for each degree of freedom location which is rotated. As a result of this feature, the stiffness matrix or transformation matrix representing the constraint will be expressed in the rotated degree of freedom system rather than the global coordinate system.

For cases where the MPC generates more than one constraint, it is more efficient to generate stiffness matrices and/or reaction forces one dependent degree of freedom at a time. The number of primary degrees of freedom for a specific dependent degree of freedom can be obtained with vfe_MPCNumPrimDof, the the degree of freedom map is obtained with vfe_MPCDofPrimMap. One then loops over each dependent degree of freedom and queries for reactions with vfe_MPCPrimReact, linear stiffness with vfe_MPCPrimStiff, or both with vfe_MPCPrimReactStiff.

Use vfe_MPCPrimCoeff to retrieve the primary constraint coefficients for each dependent degree of freedom for use in a direct substitution approach.

Table of Contents

8.1 Single Point Constraints

In many situations it is useful to be able to apply a single point constraint as a special case of a multipoint constraint. Direct constraint of a nodal degree of freedom, termed grounding, may be performed using vfe_MPCSetGround. The constraint of nodal translations oriented to a plane may be performed using vfe_MPCSetPlane.

For example, a set of statically determinant constraints in 3D structural analysis may be applied by a combination of the following six single point constraints on three node locations, a,b and c, which define a plane. Three translations are grounded at node a, normal translations are constrained at nodes b and c and a tangential translation is constrained at node b.

Table of Contents

8.2 Inextensional and Sliding Couplings

An inextensional coupling provides a simple pinned rigid connection between two nodes. The coupling preserves the distance between the two nodes. Only the translational degrees of freedom of the nodes are involved in the constraint. The inextensional coupling provides a constraint similar to the NASTRAN RROD rigid body element and the ABAQUS MPC LINK. Use vfe_MPCSetLink to define inextensional couplings.

The sliding coupling restrains a node to be on a line connecting two other nodes. The node may slide along the line and the line is free to change length. The sliding coupling is similar to the ABAQUS MPC SLIDER Use vfe_MPCSetSlider to define sliding couplings.

Table of Contents

8.3 Rigid Joints

Rigid joints are a simple way of matching a list of degrees of freedom between two nodes. Use vfe_MPCSetJoint to define the list of degrees of freedom to be matched.

Table of Contents

8.4 Kinematic Couplings

Kinematic couplings provide a general tying of the translations and rotations of a node or set of nodes to the translations and rotations of another set of nodes. There are always exactly 6 independent degrees of freedom which must be capable of representing any general rigid body motion of the coupling nodes. This coupling is capable of modeling NASTRAN RBE1, RBE2 and RBAR rigid body elements and ABAQUS KINEMATIC COUPLING constraints. Use vfe_MPCSetKine to define kinematic couplings.

Table of Contents

8.5 Distributing Couplings

A distributing coupling provides a constraint to distribute force and moment at a point to forces at a set of coupling nodes. The coupling effectively constrains the rotation and translation at a point to the translations at the set of coupling nodes. This constraint is enforced in an average sense and therefore does not inhibit the relative deformation of the coupling nodes. In this respect it provides a more flexible constraint compared to a set of rigid links. There are two forms of the constraint. One that is like the NASTRAN RBE3 interpolation constraint element and the other like the ABAQUS DCOUP2D and DCOUP3D distributing coupling elements.

Two forms of the ABAQUS distributed coupling constraint are implemented, one for 3D analysis and another specifically useful for 2D analysis. The ABAQUS distributed coupling type is specified using vfe_MPCSetDist. The NASTRAN RBE3 interpolation constraint type is specified using vfe_MPCSetRBE3.

A closely related constraint is the point on surface constraint implemented with vfe_MPCSetPntSurf. This constraint couples the translations and rotations of a node to the translations of the nodes on an element face.

Table of Contents

8.6 Standard Form

Multipoint constraints in standard form 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. The first degree of freedom, U1, is defined to be the dependent freedom. This implies that C1 must not be zero. The standard form type is specified using vfe_MPCSetStan.

Table of Contents

8.7 Function Descriptions

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


Table of Contents , MPC

NAME

*vfe_MPCBegin - create an instance of a MPC object

C SPECIFICATION

vfe_MPC *vfe_MPCBegin ()

ARGUMENTS

None

FUNCTION RETURN VALUE

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

DESCRIPTION

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

Destroy an instance of a MPC object using

     void vfe_MPCEnd (vfe_MPC *mpc)

Return the current value of a MPC object error flag using

     Vint vfe_MPCError (vfe_MPC *mpc)


Table of Contents , MPC

NAME

vfe_MPCDef - specify constraint type

C SPECIFICATION

void vfe_MPCDef (vfe_MPC *mpc,
                 Vint type)

INPUT ARGUMENTS

mpc          Pointer to MPC object.
type         Constraint type
             =MPC_DIST                  ABAQUS Distributed coupling
             =MPC_GROUND                Ground
             =MPC_PLANE                 Plane
             =MPC_JOINT                 Rigid joint
             =MPC_KINE                  Kinematic coupling
             =MPC_LINK                  Inextensional coupling
             =MPC_PNTSURF               Point to surface
             =MPC_RBE3                  NASTRAN RBE3
             =MPC_SLIDER                Slider coupling
             =MPC_STAN                  Standard form

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_ENUM is generated if an improper type is specified.

DESCRIPTION

Define the type of constraint to be specified. MPC_GROUND requires a call to vfe_MPCSetGround, MPC_PLANE requires a call to vfe_MPCSetPlane, MPC_JOINT requires a call to vfe_MPCSetJoint, MPC_KINE requires a call to vfe_MPCSetKine, MPC_LINK requires a call to vfe_MPCSetLink, MPC_PNTSURF requires a call to vfe_MPCSetPntSurf, MPC_RBE3 requires a call to vfe_MPCSetRBE3, MPC_SLIDER requires a call to vfe_MPCSetSlider, MPC_STAN requires a call to vfe_MPCSetStan, and MPC_DIST requires a call to vfe_MPCSetDist. By default type is MPC_STAN.

Inquire of a defined type as an output argument using

     void vfe_MPCInq (vfe_MPC *mpc,
                      Vint *type)


Table of Contents , MPC

NAME

vfe_MPCSetParami - set integer parameters

C SPECIFICATION

void vfe_MPCSetParami (vfe_MPC *mpc,
                       Vint type,
                       Vint iparam)

INPUT ARGUMENTS

mpc          Pointer to MPC object.
type         Type of formulation parameter to set
             =VFE_LAGMULT            Lagrange multiplier
             =VFE_USEOFFSET          Toggle inclusion of point to surface
                                     coupling offset.
             =VFE_SCALEPENALTY       Scale penalty to normalize constraints
iparam       Integer parameter value.
             =SYS_OFF                Toggle off
             =SYS_ON                 Toggle on
             =VFE_LAGMULT_NONE       Lagrange multiplier off, penalty only
             =VFE_LAGMULT_ONLY       Lagrange multiplier only
             =VFE_LAGMULT_AUGMENT    Lagrange multiplier and penalty

OUTPUT ARGUMENTS

None

ERRORS

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

DESCRIPTION

Set integer parameters. Use VFE_LAGMULT to specify the use of Lagrange multiplier freedoms and penalty stiffness to enforce the multipoint constraint. If VFE_LAGMULT_ONLY is selected then the constraint is enforced only with a Lagrange multiplier. If VFE_LAGMULT_AUGMENT is selected then the constraint is enforced using a combination of Lagrange multiplier and penalty stiffness. By default VFE_LAGMULT is VFE_LAGMULT_NONE.

Use VFE_USEOFFSET to toggle the inclusion of an offset in the point to surface coupling using vfe_MPCSetPntSurf. If disabled then the constraint is generated assuming the dependent node location has been projected to the surface. If enabled an additional offset constraint is added to the point on surface constraint to account for the offset of the dependent node from its projection point on the surface. By default VFE_USEOFFSET is SYS_OFF.

Use VFE_SCALEPENALTY to toggle the scaling of the penalty factor so that the maximum diagonal on the stiffness matrix is equal to the penalty. If disabled, the penalty is not scaled and magnitude of the stiffness terms will be generally dependent upon the coordinate units. By default VFE_SCALEPENALTY is SYS_OFF.


Table of Contents , MPC

NAME

vfe_MPCSetParamd - set real parameters

C SPECIFICATION

void vfe_MPCSetParamd (vfe_MPC *mpc,
                       Vint type,
                       Vdouble dparam)

INPUT ARGUMENTS

mpc          Pointer to MPC object.
type         Type of formulation parameter to set
             =MPC_PENALTY            Penalty used to enforce constraint
dparam       Double parameter value. 

OUTPUT ARGUMENTS

None

ERRORS

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

DESCRIPTION

Set double precision parameters. Use MPC_PENALTY to set the penalty factor used to enforce the multipoint constraint with the penalty function method. By default MPC_PENALTY is set to 1.e+10.


Table of Contents , MPC

NAME

vfe_MPCSetDist - set distributed coupling type constraint

C SPECIFICATION

void vfe_MPCSetDist (vfe_MPC *mpc,
                     Vint type,
                     Vint ndistpnts,
                     Vint wflag,
                     Vdouble w[])

INPUT ARGUMENTS

mpc          Pointer to MPC object.
type         Type of distributed coupling
             =MPC_DIST_2D            2D distributed coupling
             =MPC_DIST_3D            3D distributed coupling
             =MPC_DIST_3DROT         3D distributed stabilized coupling
ndistpnts    Number of coupling points to which load is distributed.
wflag        User supplied weights flag
             =SYS_OFF                No weights provided
             =SYS_ON                 Weights provided
w            Vector of user supplied weights at coupling nodes

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_ENUM is generated if an improper type is specified. SYS_ERROR_VALUE is generated if an improper ndistpnts is specified. SYS_ERROR_VALUE is generated if non positive w are specified.

DESCRIPTION

Define a distributed coupling constraint which constrains the dependent translations and rotations of a point to the independent motion of the translational degrees of freedom at a set of ndistpnts points.

The constraint is intended to be used to distribute forces and moments from a point to forces at a set of coupling nodes. In the special cases in which the coupling nodes are co-linear a rotation stabilization option is available.

This constraint does not impose rigid body constraints on the coupling nodes. The coupling nodes are free to deform and as such this makes this constraint more flexible in comparison to a set of rigid link constraints. A vector of user supplied weights, w, for each of the ndistpnts coupling nodes may be supplied by setting the flag, wflag. If wflag is zero then w is ignored and a set of equal weights is used internally. In this case w may be entered as NULL. Internally all user input weights are scaled to sum to unity.

If type MPC_DIST_2D is specified, ndistpnts must be at least 2 and the points may not be coincident. If type MPC_DIST_3D is specified, ndistpnts must be at least 3 and the points may not be colinear. If type MPC_DIST_3DROT is specified, ndistpnts must be at least 2 and the points may be colinear. This constraint must only be used when rotational degrees of freedom are active at the independent coupling nodes, ie. are connected to shell or beam type elements.

This constraint utilizes ndistpnts+1 coordinates, the first being the dependent node containing the force to be distributed and the subsequent coordinates being the coupling nodes.

The directions of the degrees of freedom at the degree of freedom locations may be specified using vfe_MPCSetDirCos.


Table of Contents , MPC

NAME

vfe_MPCSetGround - set ground type constraint

C SPECIFICATION

void vfe_MPCSetGround (vfe_MPC *mpc,
                       Vint tag)

INPUT ARGUMENTS

mpc          Pointer to MPC object.
tag          Degree of freedom at node

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_ENUM is generated if an improper tag is specified.

DESCRIPTION

Define the type of degree of freedom to be grounded at a node. This is equivalent to a single point constraint of the specified freedom. The degree of freedom tag may only be a translational or rotational degree of freedom, ie.
SYS_DOF_TX
SYS_DOF_TY
SYS_DOF_TZ
SYS_DOF_RX
SYS_DOF_RY
SYS_DOF_RZ


Table of Contents , MPC

NAME

vfe_MPCSetJoint - set joint type constraint

C SPECIFICATION

void vfe_MPCSetJoint (vfe_MPC *mpc,
                      Vint ntags,
                      Vitn tags[])

INPUT ARGUMENTS

mpc          Pointer to MPC object.
ntag         Number of degrees of freedom to match
tags         List of degrees of freedom to match

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_ENUM is generated if an improper tag is specified.

DESCRIPTION

Define the list of degrees of freedom to be matched between two nodes. The degree of freedom tag may only be a translational or rotational degree of freedom, ie.
SYS_DOF_TX
SYS_DOF_TY
SYS_DOF_TZ
SYS_DOF_RX
SYS_DOF_RY
SYS_DOF_RZ


Table of Contents , MPC

NAME

vfe_MPCSetKine - set kinematic coupling type properties

C SPECIFICATION

void vfe_MPCSetKine (vfe_MPC *mpc,
                     Vint loc[6], Vint tag[6],
                     Vint ntagdep,
                     Vint locdep[],
                     Vint tagdep[])

INPUT ARGUMENTS

mpc          Pointer to MPC object.
loc          Locations of 6 independent degrees of freedom
tag          Types of 6 independent degrees of freedom
ntagdep      Number of degrees of freedom at dependent location
locdep       Locations of ntagdep dependent degrees of freedom
tagdep       Types of ntagdep dependent degrees of freedom

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_ENUM is generated if an improper tag or tagdep is specified. SYS_ERROR_VALUE is generated if an improper loc, ntagdep or locdep is specified.

DESCRIPTION

The kinematic constraint defines a rigid body connected to an arbitrary number of points and can be used to generate constraints equivalent to the NASTRAN RBE1, RBE2 and RBAR rigid body elements. These rigid body element types may be decomposed into a series of individual constraints - one for each location of a set of dependent degrees of freedom. Call this function to establish the prototype degree of freedom relationship between the independent set of freedoms and the dependent degrees of freedom at a specific location. Then call the desired function vfe_MPCStiff or vfe_MPCReact with the two appropriate independent and dependent locations. Repeat this for each dependent point location. The locations and types of degrees of freedom specified must be capable of representing any general rigid body motion.

The directions of the degrees of freedom at the degree of freedom locations may be specified using vfe_MPCSetDirCos.


Table of Contents , MPC

NAME

vfe_MPCSetLink - set inextensional coupling type properties

C SPECIFICATION

void vfe_MPCSetLink (vfe_MPC *mpc,
                     Vint locdep,
                     Vint tagdep)

INPUT ARGUMENTS

mpc          Pointer to MPC object.
locdep       Location of dependent degree of freedom
tagdep       Type of dependent degree of freedom

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_ENUM is generated if an improper tagdep is specified. SYS_ERROR_VALUE is generated if an improper locdep is specified.

DESCRIPTION

The inextensional constraint defines a rigid link connected to two points and can be used to generate constraints equivalent to the NASTRAN RROD rigid body element. The constraint generates a constraint equation in which the tagdep degree of freedom at location locdep is constrained to the motion of the translational degrees of freedom of the other location. The directions of the degrees of freedom at the two locations may be specified using vfe_MPCSetDirCos.


Table of Contents , MPC

NAME

vfe_MPCSetPlane - set plane type properties

C SPECIFICATION

void vfe_MPCSetPlane (vfe_MPC *mpc,
                      Vint type)

INPUT ARGUMENTS

mpc          Pointer to MPC object.
type         Type of plane oriented constraint
             =MPC_PLANE_NORM3D        Constraint normal to plane
             =MPC_PLANE_TANG3D        Constraint tangential to plane
             =MPC_PLANE_TANG2D        Constraint tangential to line

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_ENUM is generated if an improper type is specified.

DESCRIPTION

The 3D plane type constraints, MPC_PLANE_NORM3D and MPC_PLANE_TANG3D, define a directional constraint specified by three nodes which define a plane. The three node locations must not be co-linear. Although the plane is defined by three node locations the constraint is only applied to translational degrees of freedom located at the first node, the subsequent two node locations are used to define the plane geometry and no stiffness coefficents are generated for them. The directions of the degrees of freedom at the first node location may be specified using vfe_MPCSetDirCos.

The 2D plane type constraint, MPC_PLANE_TANG2D, is meant for 2D analysis and defines a directional constraint specified by two nodes which define a line.

The constraint type MPC_PLANE_NORM3D constrains the displacement at the first node normal to the plane. The constraint type MPC_PLANE_TANG3D constrains the displacement at the first node tangent to the plane and normal to the line between the first and second node. The constraint type MPC_PLANE_TANG2D constrains the displacement at the first node tangent to the line between the first and second node.


Table of Contents , MPC

NAME

vfe_MPCSetRBE3 - set NASTRAN RBE3 properties

C SPECIFICATION

void vfe_MPCSetRBE3 (vfe_MPC *mpc,
                     Vint ndepdofs,
                     Vint tagsdep[],
                     Vint ndistdofs,
                     Vint indeplocs[],
                     Vint indeptags[],
                     Vint wflag,
                     Vdouble w[])

INPUT ARGUMENTS

mpc          Pointer to MPC object.
ndepdof      Number of dependent degrees of freedom 1 <= ndepdof <= 6
tagsdep      Types of ndepdof dependent degrees of freedom
ndistdofs    Number of independent interpolation degrees of freedom
indeplocs    Locations of ndistdofs interpolation degrees of freedom
indeptags    Types of ndistdofs degrees of freedom
wflag        User supplied weights flag
             =SYS_OFF                No weights provided
             =SYS_ON                 Weights provided
w            Vector of ndistdofs user supplied weights

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_VALUE is generated if an improper ndepdof is specified. SYS_ERROR_VALUE is generated if an improper ndistdofs is specified. SYS_ERROR_VALUE is generated if non positive w are specified.

DESCRIPTION

Define a NASTRAN RBE3 interpolation constraint which constrains the dependent ndepdofs translations and/or rotations of a point to the motion of a set of ndistdofs degrees of freedom. The number of coordinates involved in the constraint are 1 plus the number of unique locations specified in indeplocs. The dependent degrees of freedom are assumed to be the first coordinate location, all indeplocs values must be greater than or equal to 2.

A vector of user supplied weights, w, for each of the ndistdofs interpolation degrees of freedom may be supplied by setting the flag, wflag. If wflag is zero then w is ignored and a set of equal weights is used internally. In this case w may be entered as NULL.

The directions of the degrees of freedom at the degree of freedom locations may be specified using vfe_MPCSetDirCos.


Table of Contents , MPC

NAME

vfe_MPCSetPntSurf - set point on surface coupling type properties

C SPECIFICATION

void vfe_MPCSetPntSurf (vfe_MPC *mpc,
                        Vint shape,
                        Vint maxi,
                        Vint maxj)

INPUT ARGUMENTS

mpc          Pointer to MPC object.
shape        The topological shape for the surface
             =SYS_SHAPETRI           Triangle
             =SYS_SHAPEQUAD          Quadrilateral
maxi         The number of points along the i direction.
             If maxi = 0 then the linear Serendipity
             element form of the specified shape is assumed.
maxj         The number of points along the j direction.
             If maxj = 0 then a Serendipity element surface is assumed.
             If 2 <= maxj <= 3 and 2 <= maxi <= 3, then a Lagrange
             element surface is assumed.
             If maxi != 0 then maxj = 0 or maxj = maxi.

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_VALUE is generated if an improper maxi or maxj is specified. SYS_ERROR_ENUM is generated if an improper shape is input.

DESCRIPTION

The point on surface constraint couples the translations and rotations of a dependent node to the translations of the nodes on an element face. The offset of the dependent node from its projection onto the surface may or may not be included depending upon the parameter VFE_USEOFFSET set using vfe_MPCSetParami. The dependent node is the first node in the constraint connectivity followed by the nodes on the element face.

The directions of the degrees of freedom at the degree of freedom locations may be specified using vfe_MPCSetDirCos.


Table of Contents , MPC

NAME

vfe_MPCSetSlider - set slider coupling type properties

C SPECIFICATION

void vfe_MPCSetSlider (vfe_MPC *mpc,
                       Vint tagdep[2])

INPUT ARGUMENTS

mpc          Pointer to MPC object.
tagdep       Type of two dependent degrees of freedom

OUTPUT ARGUMENTS

None

ERRORS

SYS_ERROR_ENUM is generated if an improper tagdep is specified.

DESCRIPTION

The slider constraint defines a sliding coupling of a dependent node along a line between two other nodes. The node may slide along the line and the line is free to change length. The dependent node is the first node in the constraint connectivity. Only translational freedoms are involved in the constraint. The direction of the two dependent freedoms must project on the plane perpendicular to the line between the two nodes.

The directions of the degrees of freedom at the degree of freedom locations may be specified using vfe_MPCSetDirCos.


Table of Contents , MPC

NAME

vfe_MPCSetStan - set standard MPC properties

C SPECIFICATION

void vfe_MPCSetStan (vfe_MPC *mpc,
                     Vint nterms,
                     Vint tag[],
                     Vdouble c[],
                     Vdouble r)

INPUT ARGUMENTS

mpc          Pointer to MPC object.
nterms       Number of terms in standard form
tag          Types of nterms degrees of freedom
c            Coefficients
r            Inhomogeneity

OUTPUT ARGUMENTS

None

ERRORS

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

DESCRIPTION

Define a multipoint constraint in standard form. The series contains nterms. Each term is defined by an entry in the tag and c arrays. The degree of freedom associated with the first term is defined to be the dependent degree of freedom.


Table of Contents , MPC

NAME

vfe_MPCDofMap - query element degree of freedom map

C SPECIFICATION

void vfe_MPCDofMap (vfe_MPC *mpc,
                    Vint analysistype,
                    Vint loc[], Vint tag[])

INPUT ARGUMENTS

mpc          Pointer to MPC object.
analysistype The type of analysis
             =VFE_ANALYSIS_STRUCTURAL Structural analysis
             =VFE_ANALYSIS_THERMAL    Thermal analysis

OUTPUT ARGUMENTS

loc          Vector of degree of freedom locations
tag          Vector of degree of freedom types

ERRORS

SYS_ERROR_ENUM is generated if an improper analysistype is specified.

DESCRIPTION

Query for element degree of freedom map. The degree of freedom map consists of a location index, loc and type, tag for each degree of freedom used by the element.

The length of the loc and tag vectors is equal to the number of element degrees of freedom. Use vfe_MPCNumDof to return the number of element degrees of freedom. Note that VFE_ANALYSIS_THERMAL is only appropriate for a MPC_STAN type constraint.


Table of Contents , MPC

NAME

vfe_MPCNumDof - query number of element degrees of freedom

C SPECIFICATION

void vfe_MPCNumDof (vfe_MPC *mpc,
                    Vint analysistype,
                    Vint *nedofs)

INPUT ARGUMENTS

mpc          Pointer to MPC object.
analysistype The type of analysis
             =VFE_ANALYSIS_STRUCTURAL Structural analysis
             =VFE_ANALYSIS_THERMAL    Thermal analysis

OUTPUT ARGUMENTS

nedofs       Number of element degrees of freedom

ERRORS

SYS_ERROR_ENUM is generated if an improper analysistype is specified.

DESCRIPTION

Query for number of element degree of freedom nedofs. The number of degrees of freedom will be the sum of the independent and dependent degrees of freedom. If Lagrange multipliers are used to satisfy the constraint then an additional Lagrange multiplier freedom will result. Use vfe_MPCDofMap to return the location and type of each degree of freedom. Note that VFE_ANALYSIS_THERMAL is only appropriate for a MPC_STAN type constraint.


Table of Contents , MPC

NAME

vfe_MPCNumDepDof - query number of dependent degrees of freedom

C SPECIFICATION

void vfe_MPCNumDepDof (vfe_MPC *mpc,
                       Vint analysistype,
                       Vint *ndepdofs)

INPUT ARGUMENTS

mpc          Pointer to MPC object.
analysistype The type of analysis
             =VFE_ANALYSIS_STRUCTURAL Structural analysis
             =VFE_ANALYSIS_THERMAL    Thermal analysis

OUTPUT ARGUMENTS

ndepdofs     Number of element dependent degrees of freedom

ERRORS

SYS_ERROR_ENUM is generated if an improper analysistype is specified.

DESCRIPTION

Query for number of dependent degrees of freedom, ndepdofs. Note that VFE_ANALYSIS_THERMAL is only appropriate for a MPC_STAN type constraint.


Table of Contents , MPC

NAME

vfe_MPCNumPrimDof - query number of primary degrees of freedom

C SPECIFICATION

void vfe_MPCNumPrimDof (vfe_MPC *mpc,
                        Vint *nprimdofs)

INPUT ARGUMENTS

mpc          Pointer to MPC object.

OUTPUT ARGUMENTS

nprimdofs     Number of primary degrees of freedom

ERRORS

NONE

DESCRIPTION

Query for number of primary degrees of freedom, nprimdofs.

AQUI


Table of Contents , MPC

NAME

vfe_MPCSetDirCos - set direction cosine matrices.

C SPECIFICATION

void vfe_MPCSetDirCos (vfe_MPC *mpc,
                       Vint nlocs,
                       Vint locs[],
                       Vdouble rot[][3][3])

INPUT ARGUMENTS

mpc          Pointer to MPC object.
nlocs        Number of location points
locs         Location points

OUTPUT ARGUMENTS

rot          nlocs direction cosine matrices

ERRORS

NONE

DESCRIPTION

Sets direction cosine matrices for each location that requires one. When appropriate, the constraint is applied in the local direction.


Table of Contents , MPC

NAME

vfe_MPCDofPrimMap - query primary element degree of freedom map

C SPECIFICATION

void vfe_MPCDofPrimMap (vfe_MPC *mpc,
                        Vint id,
                        Vint loc[],
                        Vint tag[])

INPUT ARGUMENTS

mpc          Pointer to MPC object.
id           Dependent degree of freedom id

OUTPUT ARGUMENTS

loc          Vector of degree of freedom locations
tag          Vector of degree of freedom types

ERRORS

NONE

DESCRIPTION

Query for primary degree of freedom map. The degree of freedom map consists of a location index, loc and type, tag for each independent degree of freedom used by the element. A different map and location must be obtained for each primary constraint given by its id,
 id <= ndepdofs
The length of the loc and tag vectors is equal to the number of element primary degrees of freedom. Use vfe_MPCNumPrimDof to return the number of primary element degrees of freedom.


Table of Contents , MPC

NAME

vfe_MPCPrimCoeff - standard constraint coefficients for a dependent dof

C SPECIFICATION

void vfe_MPCPrimCoeff (vfe_MPC *mpc,
                       Vint iddof
                       Vdouble x[][3],
                       Vdouble bm[],
                       Vdouble *c)

INPUT ARGUMENTS

mpc          Pointer to MPC object.
iddof        Dependent degree of freedom
x            Array of node locations.

OUTPUT ARGUMENTS

bm           Coefficients of standard constraint
c            Non-homogeneous coefficient for standard constraint

DESCRIPTION

Compute the standard coefficients bm and the non-homogeneous term c given the node coordinates, x, for a specific dependent degree of freedom iddof.


Table of Contents , MPC

NAME

vfe_MPCPrimReact - reaction vector for a dependent dof

C SPECIFICATION

void vfe_MPCPrimReact (vfe_MPC *mpc,
                       Vdouble x[][3],
                       Vdouble u[],
                       Vint iddof,
                       Vdouble r[])

INPUT ARGUMENTS

mpc          Pointer to MPC object.
x            Array of node locations.
u            Degree of freedom vector of displacements
iddof        Dependent degree of freedom

OUTPUT ARGUMENTS

r            Degree of freedom reaction vector

DESCRIPTION

Compute the reaction vector, r, given the node coordinates, x, and the degree of freedom displacement vector, u, for a specific dependent degree of freedom iddof.


Table of Contents , MPC

NAME

vfe_MPCPrimReactStiff - reaction vector, stiffness matrix for a dependent dof

C SPECIFICATION

void vfe_MPCPrimReactStiff (vfe_MPC *mpc,
                            Vdouble x[][3],
                            Vdouble u[],
                            Vint iddof,
                            Vdouble kflag,
                            Vdouble r[],
                            Vdouble k[])

INPUT ARGUMENTS

mpc          Pointer to MPC object.
x            Array of node locations.
u            Degree of freedom vector of displacements
iddof        Dependent degree of freedom
kflag        Flag to compute stiffness matrix, k
             =SYS_OFF      Do not compute stiffness matrix
             =SYS_ON       Compute and return stiffness matrix

OUTPUT ARGUMENTS

r            Degree of freedom reaction vector
k            Degree of freedom stiffness matrix

DESCRIPTION

Compute the reaction vector, r, and optionally the stiffness matrix, k, given the node coordinates, x, and the degree of freedom displacement vector, u, for a specific dependent degree of freedom iddof. The lower triangle of the stiffness matrix is returned.


Table of Contents , MPC

NAME

vfe_MPCPrimStiff - linear stiffness matrix for a dependent dof

C SPECIFICATION

void vfe_MPCPrimStiff (vfe_MPC *mpc,
                       Vdouble x[][3],
                       Vint iddof,
                       Vdouble kl[])

INPUT ARGUMENTS

mpc          Pointer to MPC object.
x            Array of node locations.
iddof        Dependent degree of freedom

OUTPUT ARGUMENTS

kl           Degree of freedom stiffness matrix

DESCRIPTION

Compute the linear stiffness matrix, kl, given the node coordinates, x, for a specific dependent degree of freedom iddof. The lower triangle of the stiffness matrix is returned.


Table of Contents , MPC

NAME

vfe_MPCReact - reaction vector

C SPECIFICATION

void vfe_MPCReact (vfe_MPC *mpc,
                   Vdouble x[][3],
                   Vdouble u[],
                   Vdouble r[])

INPUT ARGUMENTS

mpc          Pointer to MPC object.
x            Array of node locations.
u            Degree of freedom vector of displacements

OUTPUT ARGUMENTS

r            Degree of freedom reaction vector

DESCRIPTION

Compute the reaction vector, r, given the node coordinates, x, and the degree of freedom displacement vector, u.


Table of Contents , MPC

NAME

vfe_MPCReactStiff - reaction vector, stiffness matrix

C SPECIFICATION

void vfe_MPCReactStiff (vfe_MPC *mpc,
                        Vdouble x[][3],
                        Vdouble u[],
                        Vdouble kflag,
                        Vdouble r[],
                        Vdouble k[])

INPUT ARGUMENTS

mpc          Pointer to MPC object.
x            Array of node locations.
u            Degree of freedom vector of displacements
kflag        Flag to compute stiffness matrix, k
             =SYS_OFF      Do not compute stiffness matrix
             =SYS_ON       Compute and return stiffness matrix

OUTPUT ARGUMENTS

r            Degree of freedom reaction vector
k            Degree of freedom stiffness matrix

DESCRIPTION

Compute the reaction vector, r, and optionally the stiffness matrix, k, given the node coordinates, x, and the degree of freedom displacement vector, u. The lower triangle of the stiffness matrix is returned.


Table of Contents , MPC

NAME

vfe_MPCStiff - linear stiffness matrix

C SPECIFICATION

void vfe_MPCStiff (vfe_MPC *mpc,
                   Vdouble x[][3],
                   Vdouble kl[])

INPUT ARGUMENTS

mpc          Pointer to MPC object.
x            Array of node locations.

OUTPUT ARGUMENTS

kl           Degree of freedom stiffness matrix

DESCRIPTION

Compute the linear stiffness matrix, kl, given the node coordinates, x. The lower triangle of the stiffness matrix is returned.