Contents     Functions         Previous Next     PDF Index

rigid

Purpose

Linearized rigid link constraints.

Description

Rigid links are often used to model stiff connections in finite element models. One generates a set of linear constraints that relate the 6 DOFs of master M and slave S nodes by

{
u 
v 
w 
rx 
ry 
rz 
}S=[
1000zMSyMS
010zMS0xMS 
001yMSxMS0
00010
00001
000001  
] {
u 
v 
w 
rx 
ry 
rz
}M

Resolution of linear constraints is performed using fe_case or model assembly (see section 4.5.8) calls. The theory is discussed in section 7.14. Note that the master node of a rigid link as 6 DOF, even if the model may only need less (3 for volumes).

If coordinate systems are defined in field model.bas (see basis), PID (position coordinate system) and DID (displacement coordinate system) declarations in columns 2 and 3 of model.Node are properly handled.

You can use penalized rigid links (celas element) instead of truly rigid connections. This requires the selection of a stiffness constant but can be easier to manipulate. To change a group of rigid elements into celas elements change the element group name femesh('SetGroup rigid name celas') and set the stiffness constant FEelt(femesh('FindEltGroupi'),7) = Kv.


Although they are linear constraints rather than true elements, such connections can be declared using an element group of rigid connection with a header row of the form [Inf abs('rigid')] followed by as many element rows as connections of the form

 [ n1 n2 DofSel MatId ProId EltId]

where node n2 will be rigidly connected to node n1 which will remain free. DofSel lets you specify which of the 3 translations and 3 rotations are connected (thus 123 connects only translations while 123456 connects both translations and rotations).

The other strategy is to store them as a case entry. rigid entries are rows of the Case.Stack cell array giving {'rigid', Name, Elt}. Name is a string identifying the entry. Elt is a model description matrix containing rigid elements. The elements can also be declared as standard elements as in the following example which generates the mesh of a square plate with a rigid edge

femesh('reset');
femesh(';testquad4 divide 10 10;addsel');

% Define a rigid edge
femesh('selelt seledge & innode{x==0}') 
femesh('setgroupa1 name rigid')
FEel0(femesh('findel0 group1'),3)=123456; % all 6 DOF are slave
FEel0(femesh('findel0 group1'),4)=0;      % not a DOF equality

femesh('addsel');model=femesh % add to element matrix
% alternative define as a case entry
%model=fe_case(model,'rigid','Rigid edge',FEel0); 

% Compute and display modes
def=fe_eig(model,[6 20 1e3]);
feplot(model,def);fecom(';view3;ch8;scd.1');

An additional call is rigidAppend in order to simply add new rigid links. You may use a list of the form [MasterNode slaveDOF slaveNode_1 slaveNode_2 ... slaveNode_i] or of the form of an element matrix (containing a header).

The preceding call would be

 model=fe_case(femesh,'rigidAppend','Rigid edge',FEel0);

or

 model=fe_case(femesh,'rigidAppend','Rigid edge',...
               [FEel0(2,2) .01 FEel0(2,2) FEel0(3,2)];

The rigid function is only used for low level access by generating the subspace T that verifies rigid constraints

[T,cdof] = rigid(node,elt,mdof)
[T,cdof] = rigid(Up)

See also

Section 7.14, celas


©1991-2012 by SDTools
Previous Up Next