Contents     Functions     Index     Previous Next     PDF

feutilb



Purpose

Gateway function advanced FEM utilities in SDT.



Description

This function is only used for internal SDT operation and actual implementation will vary over time. The following commands are documented to allow user calls and SDT source code understanding.

AddNode

This command provides optimized operation when compared to the feutil equivalent and finer control.

dTKT

K = feutilb('dtkt',T,K) functional equivalent to diag(T'*k*T) but this call supports out of core and other optimized operations obtained through compiled functionnalities. K may be a cell array of matrices, in which case one operates on each cell of the array.

GeomRB

Returns a geometric rigid body modes for a call of the form

def=feutilb('geomrb',node,RefXYZ,adof,m)

If a mass matrix consistent with adof is provided the total mass, position of the center of gravity and inertia matrix at CG is computed. You can use def=feutilb('geomrb cg',Up) to force computation of rigid body mass properties.

Match

Non conform mesh matching utilities. The objective is to return matching elements and local coordinates for a list of nodes.

Matching elements mean A typical node matching call would be
model=femesh('test hexa8');
match=struct('Node',[.1 .1 .1;.5 .5 .5;1 1 1]);
match=feutilb('match -info radius .9 tol 1e-8',model,match)
The search is limited to points that are not too far a way from matchable element centers. Defining a search radius manually can help prevent matching for elements that are too far away or on the contrary allow matching within elements that are very large so that interior points may be far from the center.

The default tolerance tol 1e-8 can be modified if it is found that the non-linear search for the positions within the reference volume are not sufficiently accurate.

The output structure contains the fields


.Node original positions
.rstj position in element coordinates and jacobian information.
.StickNode orthogonal projection on element surface if the original node is not within the element, otherwise original position.
.Info one row per matched node/element giving NodeId if exact match, number of nodes per element, and element type.
.match obtained when calling the command with -info, typically for row by row post-processing of the match. A cell array with one row per matched node/element giving eltnname, slave element row, rstj, sticknode

MpcFromMatch

This command is used to build multiple point constraints from a match.
feutilb('MpcFromMatch',model,match).

The solution retained for surfaces is to first project the arbitrarily located connection point P on the element surface onto a point Q on the neutral fiber used where element nodes are located. Then Q1 or P1 shape functions and their derivatives are used to define a linear relation between the 6 degree of freedom of point Q and the 3 or 4 nodes of the facing surface. Motion at P is then deduced using a linearized rigid PQ link. One chooses to ignore rotations at the nodes since their use is very dependent on the shell element formulation.


Figure 9.2: Non conform mesh handling


The local element coordinates are defined by xje,j=1:3 along the r coordinate line
xje = x
Ni
r
xij with x=1/
Ni
r
xij     (9.9)
ye that is orthogonal to xe and in the xe, Ni/ sxij plane, and ze that defines an orthonormal basis.

The local rotations at point Q are estimated from rotations at the corner nodes using
Rj = xje
Ni
ye
uikzke - yje
Ni
xe
uikzke +
1
2
zje æ
ç
ç
è
Ni
xe
uik yke -
Ni
ye
uik xke ö
÷
÷
ø
    (9.10)
with uik the translation at element nodes and j=1:3, i=1:Nnode, k=1:3. Displacement at Q is interpolated simply from shape functions, displacement at P is obtained by considering that the segment QP is rigid.

For volumes, displacement is interpolated using shape functions while rotations are obtained by averaging displacement gradients in orthogonal directions
thetax =
( -Ny,z+Nz,y ) /2 {u}
thetay =
( Nx,z-Nz,x ) /2 {u}
thetaw =
( -Nx,y+Ny,x ) /2 {u}
    (9.11)

You can check that the constraints generated do not constrain rigid body motion using fe_caseg('rbcheck',model) which builds the transformation associated to linear constraints and returns a list of DOFs where geometric rigid body modes do not coincide with the transformation.

TKT

K = feutilb('tkt',T,K) functional equivalent to T'*k*T but this call supports out of core and other optimized operations obtained through compiled functionnalities. K may be a cell array of matrices, in which case one operates on each cell of the array.

©1991-2007 by SDTools
Previous Up Next