fe_c#
Purpose
DOF selection and input/output shape matrix construction.
Syntax
c = fe_c(mdof,adof) c = fe_c(mdof,adof,cr,ty) b = fe_c(mdof,adof,cr)' [adof,ind,c] = fe_c(mdof,adof,cr,ty) ind = fe_c(mdof,adof,'ind',ty) adof = fe_c(mdof,adof,'dof',ty) labels = fe_c(mdof,adof,'dofs',ty)
Description
This function is quite central to the flexibility of DOF numbering in the Toolbox. FE model matrices are associated to DOF definition vectors which allow arbitrary DOF numbering (see section 7.5). fe_c provides simplified ways to extract the indices of particular DOFs (see also section 7.10) and to construct input/output matrices. The input arguments for fe_c are
mdof | DOF definition vector for the matrices of interest (be careful not to mix DOF definition vectors of different models) |
adof | active DOF definition vector. |
cr | output matrix associated to the active DOFs. The default for this argument is the identity matrix. cr can be replaced by a string 'ind' or 'dof' specifying the unique output argument desired then. |
ty | active/fixed option tells fe_c whether the DOFs in adof should be kept (ty=1 which is the default) or on the contrary deleted (ty=2). |
The input adof can be a standard DOF definition vector but can also contain wild cards as follows
NodeID.0 means all the DOFs associated to node NodeID
0.DofID means DofID for all nodes having such a DOF
-EltID.0 means all the DOFs associated to element EltID
The convention that DOFs .07 to .12 are the opposite of DOFs .01 to .06 is supported by fe_c, but this should really only be used for combining experimental and analytical results where some sensors have been positioned in the negative directions.
The output argument adof is the actual list of DOFs selected with the input argument. fe_c seeks to preserve the order of DOFs specified in the input adof. In particular for models with nodal DOFs only and
- adof contains no wild cards: no reordering is performed.
- adof contains node numbers: the expanded adof shows all DOFs of the different nodes in the order given by the wild cards.
The first use of fe_c is the extraction of particular DOFs from a DOF definition vector (see b,c ). One may for example want to restrict a model to 2-D motion in the xy plane (impose a fixed boundary condition). This is achieved as follows
% finding DOF indices by extension in a DOF vector [adof,ind] = fe_c(mdof,[0.01;0.02;0.06]); mr = m(ind,ind); kr = k(ind,ind);
Note adof=mdof(ind). The vector adof is the DOF definition vector linked to the new matrices kr and mr.
Another usual example is to fix the DOFs associated to particular nodes (to achieve a clamped boundary condition). One can for example fix nodes 1 and 2 as follows
% finding DOF indices by NodeId in a DOF vector ind = fe_c(mdof,[1 2],'ind',2); mr = m(ind,ind); kr = k(ind,ind);
Displacements that do not correspond to DOFs can be fixed using fe_coor.
The second use of fe_c is the creation of input/output shape matrices (see b,c ). These matrices contain the position, direction, and scaling information that describe the linear relation between particular applied forces (displacements) and model coordinates. fe_c allows their construction without knowledge of the particular order of DOFs used in any model (this information is contained in the DOF definition vector mdof). For example the output shape matrix linked to the relative x translation of nodes 2 and 3 is simply constructed using
% Generation of observation matrices c=fe_c(mdof,[2.01;3.01],[1 -1])
For reciprocal systems, input shape matrices are just the transpose of the collocated output shape matrices so that the same function can be used to build point load patterns.
Example#
Others examples may be found in adof section.
See also