When used to model contacting surfaces, the surface interaction can consist of a normal pressure and two tangential tractions which would typically arise from contact and sliding frictional effects. The contact pressures are functions of the relative displacement of the master and slave surfaces. The exact nature of the pressure, relative displacement relationship is determined by the underlying interface material model (usually an InterProp object). The relative displacements, dx, dy, dz along the element local axes are computed given the total displacement of the master surface Dxm,Dym,Dzm and the slave surface Dxs,Dys,Dzs in the element local system.
dx = Dxm - Dxs - ci dy = Dym - Dys dz = Dzm - Dzswhere ci is the initial clearance. The initial clearance is the sum of the specified element node clearance and the actual geometric distance between the master and slave surfaces along the master surface normal. The inclusion of the actual geometric distance in the initial clearance calculation is optional.
When used to model thermal interactions, in all cases the geometry of the surface is determined solely from the coordinates and other element node properties associated with the nodes on the master surface. The type of thermal interaction selected determines the expression used to compute the generalized temperature difference, dt, given the temperature Tm of the master surface and the temperature Ts of the slave surface. The flux q across the interface is given by:
q = -h*dtwhere h is the film coefficient supplied from the underlying interface material (usually an InterProp object) and as such may be temperature dependent. The type of interface is specified by selecting an exchange law and optional exponent, a. Currently supported thermal interactions are:
The methods associated with a Inter2D object are the following.
*vfe_Inter2DBegin - create an instance of a Inter2D object vfe_Inter2DEnd - destroy an instance of a Inter2D object vfe_Inter2DError - return Inter2D object error flag
vfe_Inter2DSetHistPtr - set pointers to material history vfe_Inter2DSetObject - set attribute object vfe_Inter2DSetParami - set integer formulation parameters vfe_Inter2DSetParamd - set double formulation parameters vfe_Inter2DSetPropPtr - set pointer to element nodal properties vfe_Inter2DSetTopology - set input element topology vfe_Inter2DDirCos - compute element local direction cosines
vfe_Inter2DDofMap - query element degree of freedom map vfe_Inter2DNumDof - query number of element degrees of freedom vfe_Inter2DNumIntPnt - query number of element integration points
vfe_Inter2DDistLoad - distributed load vector vfe_Inter2DInitHist - initialize material history vfe_Inter2DReact - reaction vector vfe_Inter2DReactStiff - reaction vector, stiffness matrix vfe_Inter2DStiff - linear stiffness matrix vfe_Inter2DStrsStrn - stress and strain
vfe_Inter2DDistHeat - distributed heat loads vfe_Inter2DPower - thermal power vfe_Inter2DPowerCond - thermal power, conductance matrix vfe_Inter2DCond - conductance matrix vfe_Inter2DHFlxTGrd - heat flux and temperature difference
If the element is to support a material model, such as a surface friction material model, which requires a material history then the user must manage the material history information using vfe_Inter2DSetHistPtr and vfe_Inter2DInitHist.
The master and slave surfaces may be either explicitly defined as surfaces in terms of the nodal geometry as shown in Figure 7-1a or implicitly as lines in terms of the nodal geometry and associated nodal area factors as shown in Figure 7-1b. For 2D planar analysis the surface area is multiplied by the element node depth. If the interface element is being used to model surface contact in structural analysis, the separation of the master and slave surfaces is always measured along the normal to the master surface. The master surface normal may be determined from the nodal geometry or specified at the master surface nodes using vfe_Inter2DSetPropPtr. The element local coordinate system is constructed so that the x' direction is along the specified normal to the master surface. The y' direction is perpendicular to x'.
In thermal analysis the geometry of the slave surface is ignored and only the temperatures of the slave surface nodes are used. For thermal analysis the element coordinate system is unused and is undefined.
*vfe_Inter2DBegin - create an instance of a Inter2D object
vfe_Inter2D *vfe_Inter2DBegin ()
None
Destroy an instance of a Inter2D object using
void vfe_Inter2DEnd (vfe_Inter2D *inter2d)
Return the current value of a Inter2D object error flag using
Vint vfe_Inter2DError (vfe_Inter2D *inter2d)
vfe_Inter2DSetHistPtr - set pointers to material history
void vfe_Inter2DSetHistPtr (vfe_Inter2D *inter2d, Vdouble *oldhist, Vdouble *newhist)
inter2d Pointer to Inter2D object. oldhist Pointer to start of material history at previous step newhist Pointer to start of material history at current step
None
vfe_Inter2DSetObject - set attribute object
void vfe_Inter2DSetObject (vfe_Inter2D *inter2d, Vint objecttype, Vobject *object)
inter2d Pointer to Inter2D object. objecttype The object type identifier =VFE_MATLFUN MatlFun object object Pointer to the object to be set.
None
vfe_Inter2DSetParamd - set double formulation parameters
void vfe_Inter2DSetParamd (vfe_Inter2D *inter2d, Vint type, Vdouble dparam)
inter2d Pointer to Inter2D object. type Type of formulation parameter to set =VFE_HEATEXP Heat exchange exponent =VFE_ABSZEROTEMP Absolute zero temperature iparam Double parameter value.
None
Set the absolute zero temperature for radiation exchange. Defaults to 0.
vfe_Inter2DSetParami - set element formulation parameters
void vfe_Inter2DSetParami (vfe_Inter2D *inter2d, Vint type, Vint iparam)
inter2d Pointer to Inter2D object. type Type of formulation parameter to set =VFE_HEATEXCH Element exchange law =VFE_GEOMCLEARANCE Clearance determined by geometry =VFE_2D 2D Approximation iparam Integer parameter value. =VFE_HEATEXCH_NONE No exchange =VFE_HEATEXCH_LINEAR Linear exchange law =VFE_HEATEXCH_EXP Exponential exchange law =VFE_HEATEXCH_POW Power exchange law =VFE_HEATEXCH_RAD Black body radiation law =VFE_AXISYMMETRIC 2D axisymmetric =VFE_PLANESTRAIN 2D plane strain =VFE_PLANESTRESS 2D plane stress
None
The parameter VFE_GEOMCLEARANCE is used to toggle the inclusion of the actual geometric location of the slave nodes in the calculation of the clearance between the master and slave surfaces. If VFE_GEOMCLEARANCE is disabled then the geometry of the slave surface is ignored and the initial clearance between the master and slave surfaces is determined by the element node clearances set using vfe_Inter2DSetPropPtr. If VFE_GEOMCLEARANCE is enabled then the actual geometric separation of the master and slave surfaces is added to the specified element node clearances. By default VFE_GEOMCLEARANCE is set to SYS_OFF.
The parameter VFE_2D sets the particular 2D approximation for the element. The choices include plane stress, VFE_PLANESTRESS, plane strain, VFE_PLANESTRAIN and axisymmetric, VFE_AXISYMMETRIC. By default VFE_2D is set to VFE_PLANESTRESS.
vfe_Inter2DSetPropPtr - set pointer to element nodal properties
void vfe_Inter2DSetPropPtr (vfe_Inter2D *inter2d, Vint type, Vdouble *propptr)
inter2d Pointer to Inter2D object. type Type of element property =VFE_PROP_AREAFACT Area Factor =VFE_PROP_DEPTH Depth =VFE_PROP_TEMPERATURE Temperatures =VFE_PROP_NORMAL Normals =VFE_PROP_CLEARANCE Initial clearance propptr Pointer to start of element nodal properties
None
vfe_Inter2DSetTopology - set element topology
void vfe_Inter2DSetTopology (vfe_Inter2D *inter2d, Vint shape, Vint maxi, Vint maxj)
inter2d Pointer to Inter2D object. shape The topological shape for the element =VIS_SHAPEQUAD Quadrilateral =VIS_SHAPELINE Line 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. For quadrilateral shapes maxj = 2. For line shapes maxj = 0.
None
vfe_Inter2DDofMap - query element degree of freedom map
void vfe_Inter2DDofMap (vfe_Inter2D *inter2d, Vint analysistype, Vint loc[], Vint tag[])
inter2d Pointer to Inter2D object. analysistype The type of analysis =VFE_ANALYSIS_STRUCTURAL Structural analysis =VFE_ANALYSIS_THERMAL Thermal analysis
loc Vector of degree of freedom locations tag Vector of degree of freedom types
The location index is either a positive node index into the element connectivity indicating a nodal freedom or a zero value indicating an elemental degree of freedom. The tag indicates the type of the degree of freedom. Tag values are one of a set of enumerated types which indicate whether the degree of freedom is a translation, temperature, etc.
The length of the loc and tag vectors is equal to the number of element degrees of freedom. Use vfe_Inter2DNumDof to return the number of element degrees of freedom.
vfe_Inter2DNumDof - query number of element degrees of freedom
void vfe_Inter2DNumDof (vfe_Inter2D *inter2d, Vint analysistype, Vint *nedofs)
inter2d Pointer to Inter2D object. analysistype The type of analysis =VFE_ANALYSIS_STRUCTURAL Structural analysis =VFE_ANALYSIS_THERMAL Thermal analysis
nedofs Number of element degrees of freedom
vfe_Inter2DNumIntPnt - query number of element integration points
void vfe_Inter2DNumIntPnt (vfe_Inter2D *inter2d, Vint analysistype, Vint *nepnts)
inter2d Pointer to Inter2D object. analysistype The type of analysis =VFE_ANALYSIS_STRUCTURAL Structural analysis =VFE_ANALYSIS_THERMAL Thermal analysis
nepnts Number of element integration points
vfe_Inter2DDirCos - compute interface local direction cosines
void vfe_Inter2DDirCos (vfe_Inter2D *inter2d, Vdouble x[][3], Vdouble tm[][3][3])
inter2d Pointer to Inter2D object. x Array of node locations.
tm Array of direction cosine matrices at the element nodes.
tm[0][0] = X'x tm[0][1] = X'y tm[0][2] = 0. tm[1][0] = Y'x tm[1][1] = Y'y tm[1][2] = 0. tm[2][0] = 0. tm[2][1] = 0. tm[2][2] = 1.
The local coordinate system is determined by the local system convention and the element node normals which may be optionally set using vfe_Inter2DSetPropPtr.
vfe_Inter2DDistLoad - distributed load vector
void vfe_Inter2DDistLoad (vfe_Inter2D *inter2d, Vdouble x[][3], Vint enttype, Vint no, Vint loadtype, Vdouble q[], Vdouble f[],
inter2d Pointer to Inter2D object. x Array of node locations. enttype Entity type on which load is applied =SYS_EDGE Element edge no Element edge number =1 Master face =3 Slave face loadtype Distributed load type =VFE_DISTLOAD_PRES Pressure normal to face =VFE_DISTLOAD_TRAC Traction directed along vector q Vector of distributed load values
f Degree of freedom vector of consistent loads.
vfe_Inter2DInitHist - initialize material history
void vfe_Inter2DInitHist (vfe_Inter2D *inter2d)
inter2d Pointer to Inter2D object.
None
vfe_Inter2DReact - reaction vector
void vfe_Inter2DReact (vfe_Inter2D *inter2d, Vdouble x[][3], Vdouble u[], Vdouble r[])
inter2d Pointer to Inter2D object. x Array of node locations. u Degree of freedom vector of displacements
r Degree of freedom reaction vector
vfe_Inter2DReactStiff - reaction vector, stiffness matrix
void vfe_Inter2DReactStiff (vfe_Inter2D *inter2d, Vdouble x[][3], Vdouble u[], Vdouble kflag, Vdouble r[], Vdouble k[])
inter2d Pointer to Inter2D 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
r Degree of freedom reaction vector k Degree of freedom stiffness matrix
vfe_Inter2DStiff - linear stiffness matrix
void vfe_Inter2DStiff (vfe_Inter2D *inter2d, Vdouble x[][3], Vdouble kl[])
inter2d Pointer to Inter2D object. x Array of node locations.
kl Degree of freedom stiffness matrix
vfe_Inter2DStrsStrn - stress and strain
void vfe_Inter2DStrsStrn (vfe_Inter2D *inter2d, Vdouble x[][3], Vdouble u[], Vdouble strs[], Vdouble strn[])
inter2d Pointer to Inter2D object. x Array of node locations. u Degree of freedom vector of displacements
strs Array of nodal stresses strn Array of nodal strains
The strs is composed of 3 contact pressures and the strn is composed of 3 associated relative displacements in the element local system. The z' values are returned as 0.
The strs and strn values are ordered first by the 3 vectoral components followed by the the number of element nodes.
vfe_Inter2DDistHeat - distributed heat loads
void vfe_Inter2DDistHeat (vfe_Inter2D *inter2d, Vdouble x[][3], Vint enttype, Vint no, Vdouble q[], Vdouble f[],
inter2d Pointer to Inter2D object. x Array of node locations. enttype Entity type on which load is applied =SYS_NODE Element node =SYS_EDGE Element edge no Element node or edge number q Vector of distributed load values
f Degree of freedom vector of consistent loads.
vfe_Inter2DCond - thermal conductance matrix
void vfe_Inter2DCond (vfe_Inter2D *inter2d, Vdouble x[][3], Vdouble kl[])
inter2d Pointer to Inter2D object. x Array of node locations.
kl Degree of freedom conductance matrix
vfe_Inter2DPower - thermal power vector
void vfe_Inter2DPower (vfe_Inter2D *inter2d, Vdouble x[][3], Vdouble u[], Vdouble r[])
inter2d Pointer to Inter2D object. x Array of node locations. u Degree of freedom vector of temperatures
r Degree of freedom power vector
vfe_Inter2DPowerCond - thermal power, conductance matrix
void vfe_Inter2DPowerCond (vfe_Inter2D *inter2d, Vdouble x[][3], Vdouble u[], Vdouble kflag, Vdouble r[], Vdouble k[])
inter2d Pointer to Inter2D object. x Array of node locations. u Degree of freedom vector of temperatures kflag Flag to compute conductance matrix, k =SYS_OFF Do not compute conductance matrix =SYS_ON Compute and return conductance matrix
r Degree of freedom power vector k Degree of freedom conductance matrix
vfe_Inter2DHFlxTGrd - Heat flux and temperature difference
void vfe_Inter2DHFlxTGrd (vfe_Inter2D *inter2d, Vdouble x[][3], Vdouble u[], Vdouble hflx[], Vdouble tgrd[])
inter2d Pointer to Inter2D object. x Array of node locations. u Degree of freedom vector of temperatures
hflx Array of nodal heat fluxes tgrd Array of nodal temperature differences
The hflx is a scalar flux and the tgrd is the associated temperature difference across the interface at each element node.
The methods associated with a Inter3D object are the following.
*vfe_Inter3DBegin - create an instance of a Inter3D object vfe_Inter3DEnd - destroy an instance of a Inter3D object vfe_Inter3DError - return Inter3D object error flag
vfe_Inter3DSetHistPtr - set pointers to material history vfe_Inter3DSetLocalSystem - set stress axes direction vfe_Inter3DSetMatlSystem - set material axes direction vfe_Inter3DSetObject - set attribute object vfe_Inter3DSetParami - set integer formulation parameters vfe_Inter3DSetParamd - set double formulation parameters vfe_Inter3DSetPropPtr - set pointer to element nodal properties vfe_Inter3DSetTopology - set input element topology vfe_Inter3DDirCos - compute element local direction cosines
vfe_Inter3DDofMap - query element degree of freedom map vfe_Inter3DNumDof - query number of element degrees of freedom vfe_Inter3DNumIntPnt - query number of element integration points
vfe_Inter3DDistLoad - distributed load vector vfe_Inter3DInitHist - initialize material history vfe_Inter3DReact - reaction vector vfe_Inter3DReactStiff - reaction vector, stiffness matrix vfe_Inter3DStiff - linear stiffness matrix vfe_Inter3DStrsStrn - stress and strain
vfe_Inter3DDistHeat - distributed heat loads vfe_Inter3DPower - thermal power vfe_Inter3DPowerCond - thermal power, conductance matrix vfe_Inter3DCond - conductance matrix vfe_Inter3DHFlxTGrd - heat flux and temperature difference
If the element is to support a material model, such as a surface friction material model, which requires a material history then the user must manage the material history information using vfe_Inter3DSetHistPtr and vfe_Inter3DInitHist.
The master and slave surfaces may be either explicitly defined as surfaces in terms of the nodal geometry as shown in Figure 7-2a or implicitly as lines in terms of the nodal geometry and associated nodal area factors as shown in Figure 7-2b. If the interface element is being used to model surface contact in structural analysis, the separation of the master and slave surfaces is always measured along the normal to the master surface. The master surface normal may be determined from the nodal geometry or specified at the master surface nodes using vfe_Inter3DSetPropPtr. The element local coordinate system is constructed so that the x' direction is along the specified normal to the master surface. The y' and z' directions are constructed using the prescription specified using vfe_Inter3DSetLocalSystem. If the normal, x' direction, is specified using vfe_Inter3DSetPropPtr, the y' and z' tangential directions are adjusted to remain orthogonal to x'.
In thermal analysis the geometry of the slave surface is ignored and only the temperatures of the slave surface nodes are used. For thermal analysis the element coordinate system is unused and is undefined.
*vfe_Inter3DBegin - create an instance of a Inter3D object
vfe_Inter3D *vfe_Inter3DBegin ()
None
Destroy an instance of a Inter3D object using
void vfe_Inter3DEnd (vfe_Inter3D *inter3d)
Return the current value of a Inter3D object error flag using
Vint vfe_Inter3DError (vfe_Inter3D *inter3d)
vfe_Inter3DSetHistPtr - set pointers to material history
void vfe_Inter3DSetHistPtr (vfe_Inter3D *inter3d, Vdouble *oldhist, Vdouble *newhist)
inter3d Pointer to Inter3D object. oldhist Pointer to start of material history at previous step newhist Pointer to start of material history at current step
None
vfe_Inter3DSetLocalSystem - set local coordinate system convention
void vfe_Inter3DSetLocalSystem (vfe_Inter3D *inter3d, Vint type, Vdouble vec[], Vdouble angle)
inter3d Pointer to Inter3D object. type Local system convention vec Orientation vector data angle Angle to rotate element y',z' axes about the element x' axis in degrees.
None
For stress and strain computation for output using vfe_Inter3DStrsStrn, the local coordinate system is evaluated at each output location and is the coordinate system in which the output stresses and strains at the output location are expressed.
The vec array is only used if the specified type requires position or direction vectors. An additional rotation of the y',z' axes about the x' axis can be specified with angle. By default the local system convention is SYS_ELEMSYS_STANDARD with angle set to 0.
For a description of element coordinate systems, type, and associated
orientation vector data, please see
1.4 Element Coordinate Systems
vfe_Inter3DSetMatlSystem - set material coordinate system convention
void vfe_Inter3DSetMatlSystem (vfe_Inter3D *inter3d, Vint type, Vdouble vec[], Vdouble angle)
inter3d Pointer to Inter3D object. type Local system convention vec Orientation vector data angle Angle to rotate element y',z' axes about the element x' axis in degrees.
None
The vec array is only used if the specified type requires position or direction vectors. An additional rotation of the y',z' axes about the x' axis can be specified with angle. By default the local system convention is SYS_ELEMSYS_STANDARD with angle set to 0.
For a description of element coordinate systems, type, and associated
orientation vector data, please see
1.4 Element Coordinate Systems
vfe_Inter3DSetObject - set attribute object
void vfe_Inter3DSetObject (vfe_Inter3D *inter3d, Vint objecttype, Vobject *object)
inter3d Pointer to Inter3D object. objecttype The object type identifier =VFE_MATLFUN MatlFun object object Pointer to the object to be set.
None
vfe_Inter3DSetParamd - set double formulation parameters
void vfe_Inter3DSetParamd (vfe_Inter3D *inter3d, Vint type, Vdouble dparam)
inter3d Pointer to Inter3D object. type Type of formulation parameter to set =VFE_HEATEXP Heat exchange exponent =VFE_EXTENSION Tolerance for natural coordinates clamping =VFE_ABSZEROTEMP Absolute zero temperature iparam Double parameter value.
None
Set the tolerance for clamping the natural coordinates when performing projections. Defaults to 0.1.
Set the absolute zero temperature for radiation exchange. Defaults to 0.
vfe_Inter3DSetParami - set element formulation parameters
void vfe_Inter3DSetParami (vfe_Inter3D *inter3d, Vint type, Vint iparam)
inter3d Pointer to Inter3D object. type Type of formulation parameter to set =VFE_HEATEXCH Element exchange law =VFE_GEOMCLEARANCE Clearance determined by geometry iparam Integer parameter value. =VFE_HEATEXCH_NONE No exchange =VFE_HEATEXCH_LINEAR Linear exchange law =VFE_HEATEXCH_EXP Exponential exchange law =VFE_HEATEXCH_POW Power exchange law =VFE_HEATEXCH_RAD Black body radiation law
None
The parameter VFE_GEOMCLEARANCE is used to toggle the inclusion of the actual geometric location of the slave nodes in the calculation of the clearance between the master and slave surfaces. If VFE_GEOMCLEARANCE is disabled then the geometry of the slave surface is ignored and the initial clearance between the master and slave surfaces is determined by the element node clearances set using vfe_Inter3DSetPropPtr. If VFE_GEOMCLEARANCE is enabled then the actual geometric separation of the master and slave surfaces is added to the specified element node clearances. By default VFE_GEOMCLEARANCE is set to SYS_OFF.
vfe_Inter3DSetPropPtr - set pointer to element nodal properties
void vfe_Inter3DSetPropPtr (vfe_Inter3D *inter3d, Vint type, Vdouble *propptr)
inter3d Pointer to Inter3D object. type Type of element property =VFE_PROP_AREAFACT Area Factor =VFE_PROP_TEMPERATURE Temperatures =VFE_PROP_NORMAL Normals =VFE_PROP_CLEARANCE Initial clearance propptr Pointer to start of element nodal properties
None
vfe_Inter3DSetTopology - set element topology
void vfe_Inter3DSetTopology (vfe_Inter3D *inter3d, Vint shape, Vint maxi, Vint maxj, Vint maxk)
inter3d Pointer to Inter3D object. shape The topological shape for the element =VIS_SHAPEWED Wedge =VIS_SHAPEHEX Hexahedron =VIS_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 finite element is assumed. If 2 <= maxj <= 3 and 2 <= maxi <= 3, then a Lagrange finite element is assumed. If maxi != 0 then maxj = 0 or maxj = maxi. For quadrilateral shapes maxj = 2. maxk The number of points along the k direction. For wedge and hexahedron shapes maxk = 2. For quadrilateral shapes maxk is ignored.
None
vfe_Inter3DDofMap - query element degree of freedom map
void vfe_Inter3DDofMap (vfe_Inter3D *inter3d, Vint analysistype, Vint loc[], Vint tag[])
inter3d Pointer to Inter3D object. analysistype The type of analysis =VFE_ANALYSIS_STRUCTURAL Structural analysis =VFE_ANALYSIS_THERMAL Thermal analysis
loc Vector of degree of freedom locations tag Vector of degree of freedom types
The location index is either a positive node index into the element connectivity indicating a nodal freedom or a zero value indicating an elemental degree of freedom. The tag indicates the type of the degree of freedom. Tag values are one of a set of enumerated types which indicate whether the degree of freedom is a translation, temperature, etc.
The length of the loc and tag vectors is equal to the number of element degrees of freedom. Use vfe_Inter3DNumDof to return the number of element degrees of freedom.
vfe_Inter3DNumDof - query number of element degrees of freedom
void vfe_Inter3DNumDof (vfe_Inter3D *inter3d, Vint analysistype, Vint *nedofs)
inter3d Pointer to Inter3D object. analysistype The type of analysis =VFE_ANALYSIS_STRUCTURAL Structural analysis =VFE_ANALYSIS_THERMAL Thermal analysis
nedofs Number of element degrees of freedom
vfe_Inter3DNumIntPnt - query number of element integration points
void vfe_Inter3DNumIntPnt (vfe_Inter3D *inter3d, Vint analysistype, Vint *nepnts)
inter3d Pointer to Inter3D object. analysistype The type of analysis =VFE_ANALYSIS_STRUCTURAL Structural analysis =VFE_ANALYSIS_THERMAL Thermal analysis
nepnts Number of element integration points
vfe_Inter3DDirCos - compute interface local direction cosines
void vfe_Inter3DDirCos (vfe_Inter3D *inter3d, Vdouble x[][3], Vdouble tm[][3][3])
inter3d Pointer to Inter3D object. x Array of node locations.
tm Array of direction cosine matrices at the element nodes.
tm[0][0] = X'x tm[0][1] = X'y tm[0][2] = X'z tm[1][0] = Y'x tm[1][1] = Y'y tm[1][2] = Y'z tm[2][0] = Z'x tm[2][1] = Z'y tm[2][2] = Z'z
The local coordinate system is determined by the local system convention set using vfe_Inter3DSetLocalSystem and the element node normals which may be optionally set using vfe_Inter3DSetPropPtr.
vfe_Inter3DDistLoad - distributed load vector
void vfe_Inter3DDistLoad (vfe_Inter3D *inter3d, Vdouble x[][3], Vint enttype, Vint no, Vint loadtype, Vdouble q[], Vdouble f[],
inter3d Pointer to Inter3D object. x Array of node locations. enttype Entity type on which load is applied =SYS_FACE Element face no Element face number =1 Master face loadtype Distributed load type =VFE_DISTLOAD_PRES Pressure normal to face =VFE_DISTLOAD_TRAC Traction directed along vector q Vector of distributed load values
f Degree of freedom vector of consistent loads.
vfe_Inter3DInitHist - initialize material history
void vfe_Inter3DInitHist (vfe_Inter3D *inter3d)
inter3d Pointer to Inter3D object.
None
vfe_Inter3DReact - reaction vector
void vfe_Inter3DReact (vfe_Inter3D *inter3d, Vdouble x[][3], Vdouble u[], Vdouble r[])
inter3d Pointer to Inter3D object. x Array of node locations. u Degree of freedom vector of displacements
r Degree of freedom reaction vector
vfe_Inter3DReactStiff - reaction vector, stiffness matrix
void vfe_Inter3DReactStiff (vfe_Inter3D *inter3d, Vdouble x[][3], Vdouble u[], Vdouble kflag, Vdouble r[], Vdouble k[])
inter3d Pointer to Inter3D 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
r Degree of freedom reaction vector k Degree of freedom stiffness matrix
vfe_Inter3DStiff - linear stiffness matrix
void vfe_Inter3DStiff (vfe_Inter3D *inter3d, Vdouble x[][3], Vdouble kl[])
inter3d Pointer to Inter3D object. x Array of node locations.
kl Degree of freedom stiffness matrix
vfe_Inter3DStrsStrn - stress and strain
void vfe_Inter3DStrsStrn (vfe_Inter3D *inter3d, Vdouble x[][3], Vdouble u[], Vdouble strs[], Vdouble strn[])
inter3d Pointer to Inter3D object. x Array of node locations. u Degree of freedom vector of displacements
strs Array of nodal stresses strn Array of nodal strains
The strs is composed of 3 contact pressures and the strn is composed of 3 associated relative displacements in the element local system.
The strs and strn values are ordered first by the 3 vectoral components followed by the the number of element nodes.
vfe_Inter3DDistHeat - distributed heat loads
void vfe_Inter3DDistHeat (vfe_Inter3D *inter3d, Vdouble x[][3], Vint enttype, Vint no, Vdouble q[], Vdouble f[],
inter3d Pointer to Inter3D object. x Array of node locations. enttype Entity type on which load is applied =SYS_EDGE Element edge =SYS_FACE Element face no Element edge or face number =1 Master edge or face q Vector of distributed load values
f Degree of freedom vector of consistent loads.
vfe_Inter3DCond - thermal conductance matrix
void vfe_Inter3DCond (vfe_Inter3D *inter3d, Vdouble x[][3], Vdouble kl[])
inter3d Pointer to Inter3D object. x Array of node locations.
kl Degree of freedom conductance matrix
vfe_Inter3DPower - thermal power vector
void vfe_Inter3DPower (vfe_Inter3D *inter3d, Vdouble x[][3], Vdouble u[], Vdouble r[])
inter3d Pointer to Inter3D object. x Array of node locations. u Degree of freedom vector of temperatures
r Degree of freedom power vector
vfe_Inter3DPowerCond - thermal power, conductance matrix
void vfe_Inter3DPowerCond (vfe_Inter3D *inter3d, Vdouble x[][3], Vdouble u[], Vdouble kflag, Vdouble r[], Vdouble k[])
inter3d Pointer to Inter3D object. x Array of node locations. u Degree of freedom vector of temperatures kflag Flag to compute conductance matrix, k =SYS_OFF Do not compute conductance matrix =SYS_ON Compute and return conductance matrix
r Degree of freedom power vector k Degree of freedom conductance matrix
vfe_Inter3DHFlxTGrd - Heat flux and temperature difference
void vfe_Inter3DHFlxTGrd (vfe_Inter3D *inter3d, Vdouble x[][3], Vdouble u[], Vdouble hflx[], Vdouble tgrd[])
inter3d Pointer to Inter3D object. x Array of node locations. u Degree of freedom vector of temperatures
hflx Array of nodal heat fluxes tgrd Array of nodal temperature differences
The hflx is a scalar flux and the tgrd is the associated temperature difference across the interface at each element node.
The methods associated with a Gap object are the following.
*vfe_GapBegin - create an instance of a Gap object vfe_GapEnd - destroy an instance of a Gap object vfe_GapError - return Gap object error flag
vfe_GapDef - define gap dimensionality vfe_GapSetHistPtr - set pointers to material history vfe_GapSetLocalSystem - set stress axes direction vfe_GapSetObject - set attribute object vfe_GapSetParami - set integer formulation parameters vfe_GapSetParamd - set double formulation parameters vfe_GapSetPropPtr - set pointer to element nodal properties vfe_GapDirCos - compute element local direction cosines
vfe_GapDofMap - query element degree of freedom map vfe_GapNumDof - query number of element degrees of freedom vfe_GapNumIntPnt - query number of element integration points
vfe_GapInitHist - initialize material history vfe_GapReact - reaction vector vfe_GapReactStiff - reaction vector, stiffness matrix vfe_GapStiff - linear stiffness matrix vfe_GapStrsStrn - stress and strain
vfe_GapPower - thermal power vfe_GapPowerCond - thermal power, conductance matrix vfe_GapCond - conductance matrix vfe_GapHFlxTGrd - heat flux and temperature difference
Certain geometric details of the gap such as initial gap separation are specified using vfe_GapSetPropPtr. Query the element degree of freedom map using vfe_GapDofMap and vfe_GapNumDof.
If the element is to support a material model, such as a surface friction material model, which requires a material history then the user must manage the material history information using vfe_GapSetHistPtr and vfe_GapInitHist.
The master surface passes through the first node and is perpendicular to the normal at the first node. The normal may be computed to be along the line connecting the first and second node or may be explicitly specified using vfe_GapSetPropPtr. The slave surface passes through the second node and is parallel to the master surface. Both surfaces are assumed to be of infinite extent for contact purposes. The 3D gap element geometry is shown in Figure 7-3a and the 2D gap geometry is shown in Figure 7-3b.
If the gap element is being used to model surface contact in structural analysis, the separation of the master and slave surfaces is always measured along the normal to the master surface. The element local coordinate system is constructed so that the x' direction is along the specified normal to the master surface. The y' and z' directions are constructed using the prescription specified using vfe_GapSetLocalSystem. If the normal, x' direction, is specified using vfe_GapSetPropPtr, the y' and z' tangential directions are adjusted to remain orthogonal to x'.
In thermal analysis the geometry of the slave surface is ignored and only the temperature of the slave surface node is used. The element node area is used at the master node for the calculation of surface area. For thermal analysis the element coordinate system is unused and is undefined.
*vfe_GapBegin - create an instance of a Gap object
vfe_Gap *vfe_GapBegin ()
None
Destroy an instance of a Gap object using
void vfe_GapEnd (vfe_Gap *gap)
Return the current value of a Gap object error flag using
Vint vfe_GapError (vfe_Gap *gap)
vfe_GapDef - define gap dimensionality
void vfe_GapDef (vfe_Gap *gap, Vint dime)
gap Pointer to Gap object. dime Gap dimension =VFE_2D 2D analysis =VFE_3D 3D analysis
None
Inquire of a defined dime as an output argument using
void vfe_GapInq (vfe_Gap *gap, Vint *dime)
vfe_GapSetHistPtr - set pointers to material history
void vfe_GapSetHistPtr (vfe_Gap *gap, Vdouble *oldhist, Vdouble *newhist)
gap Pointer to Gap object. oldhist Pointer to start of material history at previous step newhist Pointer to start of material history at current step
None
vfe_GapSetLocalSystem - set local coordinate system convention
void vfe_GapSetLocalSystem (vfe_Gap *gap, Vint type, Vdouble vec[], Vdouble angle)
gap Pointer to Gap object. type Local system convention vec Orientation vector data angle Angle to rotate element y',z' axes about the element x' axis in degrees.
None
For stress and strain computation for output using vfe_GapStrsStrn, the local coordinate system is evaluated at each output location and is the coordinate system in which the output stresses and strains at the output location are expressed.
The vec array is only used if the specified type requires position or direction vectors. An additional rotation of the y',z' axes about the x' axis can be specified with angle. By default the local system convention is SYS_ELEMSYS_STANDARD with angle set to 0.
For a description of element coordinate systems, type, and associated
orientation vector data, please see
1.4 Element Coordinate Systems
vfe_GapSetObject - set attribute object
void vfe_GapSetObject (vfe_Gap *gap, Vint objecttype, Vobject *object)
gap Pointer to Gap object. objecttype The object type identifier =VFE_MATLFUN MatlFun object object Pointer to the object to be set.
None
vfe_GapSetParamd - set double formulation parameters
void vfe_GapSetParamd (vfe_Gap *gap, Vint type, Vdouble dparam)
gap Pointer to Gap object. type Type of formulation parameter to set =VFE_HEATEXP Heat exchange exponent dparam Double parameter value.
None
vfe_GapSetParami - set element formulation parameters
void vfe_GapSetParami (vfe_Gap *gap, Vint type, Vint iparam)
gap Pointer to Gap object. type Type of formulation parameter to set =VFE_HEATEXCH Element exchange law =VFE_GEOMCLEARANCE Clearance determined by geometry iparam Integer parameter value. =VFE_HEATEXCH_NONE No exchange =VFE_HEATEXCH_LINEAR Linear exchange law =VFE_HEATEXCH_EXP Exponential exchange law =VFE_HEATEXCH_POW Power exchange law
None
The parameter VFE_GEOMCLEARANCE is used to toggle the inclusion of the actual geometric location of the slave nodes in the calculation of the clearance between the master and slave surfaces. If VFE_GEOMCLEARANCE is disabled then the geometry of the slave surface is ignored and the initial clearance between the master and slave surfaces is determined by the element node clearances set using vfe_GapSetPropPtr. If VFE_GEOMCLEARANCE is enabled then the actual geometric separation of the master and slave surfaces is added to the specified element node clearances. By default VFE_GEOMCLEARANCE is set to SYS_OFF.
vfe_GapSetPropPtr - set pointer to element nodal properties
void vfe_GapSetPropPtr (vfe_Gap *gap, Vint type, Vdouble *propptr)
gap Pointer to Gap object. type Type of element property =VFE_PROP_AREA Area =VFE_PROP_TEMPERATURE Temperatures =VFE_PROP_NORMAL Normals =VFE_PROP_CLEARANCE Initial clearance propptr Pointer to start of element nodal properties
None
vfe_GapDofMap - query element degree of freedom map
void vfe_GapDofMap (vfe_Gap *gap, Vint analysistype, Vint loc[], Vint tag[])
gap Pointer to Gap object. analysistype The type of analysis =VFE_ANALYSIS_STRUCTURAL Structural analysis =VFE_ANALYSIS_THERMAL Thermal analysis
loc Vector of degree of freedom locations tag Vector of degree of freedom types
The location index is either a positive node index into the element connectivity indicating a nodal freedom or a zero value indicating an elemental degree of freedom. The tag indicates the type of the degree of freedom. Tag values are one of a set of enumerated types which indicate whether the degree of freedom is a translation, temperature, etc.
The length of the loc and tag vectors is equal to the number of element degrees of freedom. Use vfe_GapNumDof to return the number of element degrees of freedom.
vfe_GapNumDof - query number of element degrees of freedom
void vfe_GapNumDof (vfe_Gap *gap, Vint analysistype, Vint *nedofs)
gap Pointer to Gap object. analysistype The type of analysis =VFE_ANALYSIS_STRUCTURAL Structural analysis =VFE_ANALYSIS_THERMAL Thermal analysis
nedofs Number of element degrees of freedom
vfe_GapNumIntPnt - query number of element integration points
void vfe_GapNumIntPnt (vfe_Gap *gap, Vint analysistype, Vint *nepnts)
gap Pointer to Gap object. analysistype The type of analysis =VFE_ANALYSIS_STRUCTURAL Structural analysis =VFE_ANALYSIS_THERMAL Thermal analysis
nepnts Number of element integration points
vfe_GapDirCos - compute gap local direction cosines
void vfe_GapDirCos (vfe_Gap *gap, Vdouble x[][3], Vdouble tm[][3][3])
gap Pointer to Gap object. x Array of node locations.
tm Array of direction cosine matrices at the element nodes.
tm[0][0] = X'x tm[0][1] = X'y tm[0][2] = X'z tm[1][0] = Y'x tm[1][1] = Y'y tm[1][2] = Y'z tm[2][0] = Z'x tm[2][1] = Z'y tm[2][2] = Z'z
The local coordinate system is determined by the local system convention set using vfe_GapSetLocalSystem and the element node normals which may be optionally set using vfe_GapSetPropPtr.
vfe_GapInitHist - initialize material history
void vfe_GapInitHist (vfe_Gap *gap)
gap Pointer to Gap object.
None
vfe_GapReact - reaction vector
void vfe_GapReact (vfe_Gap *gap, Vdouble x[][3], Vdouble u[], Vdouble r[])
gap Pointer to Gap object. x Array of node locations. u Degree of freedom vector of displacements
r Degree of freedom reaction vector
vfe_GapReactStiff - reaction vector, stiffness matrix
void vfe_GapReactStiff (vfe_Gap *gap, Vdouble x[][3], Vdouble u[], Vdouble kflag, Vdouble r[], Vdouble k[])
gap Pointer to Gap 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
r Degree of freedom reaction vector k Degree of freedom stiffness matrix
vfe_GapStiff - linear stiffness matrix
void vfe_GapStiff (vfe_Gap *gap, Vdouble x[][3], Vdouble kl[])
gap Pointer to Gap object. x Array of node locations.
kl Degree of freedom stiffness matrix
vfe_GapStrsStrn - stress and strain
void vfe_GapStrsStrn (vfe_Gap *gap, Vdouble x[][3], Vdouble u[], Vdouble strs[], Vdouble strn[])
gap Pointer to Gap object. x Array of node locations. u Degree of freedom vector of displacements
strs Array of nodal stresses strn Array of nodal strains
The strs is composed of 3 contact pressures and the strn is composed of 3 associated relative displacements in the element local system.
The strs and strn values are ordered first by the 3 vectoral components followed by the the number of element nodes.
vfe_GapCond - thermal conductance matrix
void vfe_GapCond (vfe_Gap *gap, Vdouble x[][3], Vdouble kl[])
gap Pointer to Gap object. x Array of node locations.
kl Degree of freedom conductance matrix
vfe_GapPower - thermal power vector
void vfe_GapPower (vfe_Gap *gap, Vdouble x[][3], Vdouble u[], Vdouble r[])
gap Pointer to Gap object. x Array of node locations. u Degree of freedom vector of temperatures
r Degree of freedom power vector
vfe_GapPowerCond - thermal power, conductance matrix
void vfe_GapPowerCond (vfe_Gap *gap, Vdouble x[][3], Vdouble u[], Vdouble kflag, Vdouble r[], Vdouble k[])
gap Pointer to Gap object. x Array of node locations. u Degree of freedom vector of temperatures kflag Flag to compute conductance matrix, k =SYS_OFF Do not compute conductance matrix =SYS_ON Compute and return conductance matrix
r Degree of freedom power vector k Degree of freedom conductance matrix
vfe_GapHFlxTGrd - Heat flux and temperature difference
void vfe_GapHFlxTGrd (vfe_Gap *gap, Vdouble x[][3], Vdouble u[], Vdouble hflx[], Vdouble tgrd[])
gap Pointer to Gap object. x Array of node locations. u Degree of freedom vector of temperatures
hflx Array of nodal heat fluxes tgrd Array of nodal temperature difference
The hflx is a scalar flux and the tgrd is the associated temperature difference across the gap at each element node.