Contents     Functions     Index     Previous Next     PDF

fesuper



Purpose

User interface for superelement support.

Syntax
             fesuper('CommandString')
[out,out1] = fesuper('CommandString', ...)
model      = fesuper(model,'CommandString', ... )
Description

Superelements (see section 6.2 for more details) should be declared as SE entries in model.Stack. When using this format, you should specify model as the first argument fesuper so that any modification to the superelement is returned in the modified stack. Superelement should be short lower case names to allow name encoding.

Get,Set ...

Get,set properties from a superelement. Standard superelement fields are detailed in section 6.2.2. get and set commands are obsolete, you shoud really use direct access to the feplot stack. For example
cf=demosdt('demo cmsSE feplot');
SE1=cf.Stack{'se1'};
SE1=stack_set(SE1,'info','EigOpt',[5 10.1 1e3]);
SE1=fe_reduc('CraigBampton -SE -UseDof',SE1);
cf.Stack{'se1'}=SE1; fecom('curtabStack','SE:se1')
A new command to perform reduction is under development.
mdl=fesuper(mdl,'setTR',name,'fe_reduc command') calls fe_reduc to assemble and reduce the superelement. The command modifier -drill can be added to the fe_reduc command to consider drilling stiffness in shells. For example mdl=fesuper(mdl,'SetTR','SE1','CraigBampton -UseDof -drill');

SE ...

SEDof is an internal command used to implement proper responses to feutil GetDof commands. It is assumed that the superelement .DOF field is defined prior to setting the information in the model.Stack.

dfull=fesuper('SeDef',cf,def) is an internal command used to implement restitution on full model DOFs. model=fesuper('SeDefInit',model) initializes the 'info','SeRestit' stack entry that limits generic work needed for multiple restitutions.

SEMPC is an internal command that need to be documented.

SEAdd ...

SEAdd SEName commands are used to append superelements to a model. With no command modifier fesuper('SEAdd name',model,SE,[matId proId]) appends a new superelement to the model.Elt field (creates a group SE if necessary) and saves the provided SE as a stack entry. [matId proId] can be given as a last argument to define properties associated to added superelement.

SE is usually a standard SDT model, with fields .Node, .Elt, .Stack... But this command accepts models defined only from element matrices (needs .K, .Opt and .DOF fields). It can be useful to cleanly import element matrices from other codes for example (see section 5.1.8).

SEAdd -unique NodeId0 EltId0 SEName is used to add a single superelement and to give its ranges of implicit nodes and elements. NodeId0 is the lower bound of the range of the superelement implicit nodes. The NodeId range width is equal to the maximum NodeId of the superelement. EltId0 is the lower bound of the range of the superelement elements. The EltId range width is equal to the maximum EltId of the superelement.

SEAdd -trans nrep tx ty tz <NodeShift> NodeId0 EltId0 SEName is used to repeat the model with a given translation step (nrep). NodeIdO is the lower bound of the range of the first superelement implicit nodes. The range width is equal to the maximum NodeId of the superelement. The ranges of implicit nodes for repeated superelements are translated so that there is no overlap excepted if NodeShift argument is given (then there is a NodeId range overlap of NodeShift nodes. It can be useful if the repeated superelement intersections are not void: then NodeShift can be the number of intersection nodes between 2 superelements). EltId0 is the lower bound of the EltId range of elements of the first superelement. There is no EltId range overlap.
For example
model=femesh('testhexa8');
model=feutil('renumber',model,model.Node(:,1)*10);
mo1=fesuper('SEAdd -trans 5 0 0 1 10000 10000 cube',[],model)
feplot(mo1)
SEAdd -disk nodeId0 eltId0 SEName is used to repeat a sector model in cyclic symmetry. It is assumed that the symmetry case entry exists in the model (see fe_cyclic Build).

In all these cases, matrix of nodes of the superelement is sorted by NodeId before it is added to the stack of the model (so that SE.Node(end,1)==max(SE.Node(:,1)).

SEAssemble ...

The command fesuper('SEAssemble',model) is used to assemble matrices of superelements that are used in model. A basis reduction from superelement Case.T (Interface DofSet is ignored) is performed.

SEDispatch ...

The command fesuper('SEDispatch',model) is used to dispatch constraints (mpc, rbe3, rigid elements, ...) of the global model in the related superelements, and create DofSet on the interface DOFs.

Rigid elements in model.Elt are distributed to the superelements (may be duplicated) that contain the slave node. The master node of the rigid element must be present in the superelement node matrix, even if it is unused by its elements (SESelAsSE called with selections automatically adds those nodes to the superelements).

Other constraints (mpc, rbe3, FixDof) are moved to superelement if all constraint DOFs are within the superelement. Constraints that span multiple superelements are not dispatched.

A unit DofSet (identity def matrix, same DOFs) is defined in superelements that contain all DOFs of the global model DofSet.

Finally a DofSet (identity def matrix) is defined on superelement DOFs that are active in the global model and shared by another superelement. Those DofSet are stored in the 'Interface' entry of each superelement stack.

SEIntNode ...

The command fesuper('SEIntNode',model) can be used to define explicitly superelement interface nodes, taking into account local basis.

SESelAsSE ...

Selection as superelement. The command fesuper('SESelAsSE', model, Sel) is used to split a model in some superelement models, or to build a model from sub models taken as superelements.
Sel can be a FindElt string selector, or a model data structure.
If Sel is a FindElt string selector, the elements corresponding to the selection are removed from model, and then added as a superelement model. The implicit NodeId of the superelement are the same as the former NodeId in model.
If Sel is a model, it is simply added to model as a superelement.
Sel can also be a cell array of mixed types (FindElt string selector or model data structure): it is the same as calling sequentially a SESelAsSE command for each element of the cell array (so avoid using group based selection for example, because after the first selection model.Elt may change).
You can give a name to each superelement in the second column of Sel
{Selection_or_model,SEname; ...}. If name is not given (only one column in Sel), default seID is used.
Master nodes of the global model rigid elements are added to the superelements that contain corresponding slave nodes.

Following example divides the d_cms model into 2 sub superelement models.
mdl=demosdt('demo cms');
model=fesuper('SESelAsSE',mdl, ...
  {'WithNode{x>0|z>0}';'WithNode{x<0|z<0}'});
The command modifier -dispatch can be used to dispatch constraints (rigid elements, mpc, rbe3 ...) of the global model in the related superelements and create DofSet on the interface DOFs. It is the same as calling the fesuper SEDispatch command after SESelAsSE without command modifier.

SERemove

model=fesuper('SERemove',model,'name') searches superelement name in the model and removes it from Stack and element matrix.

SERenumber

SE=fesuper('renumber',model,'name') searches superelement name in the model stack and renumbers based on the entry in the SE element group. If name refers to multiple superelements, you should provide the row number in model.Elt.



See also

fe_super, upcom, section 5.1.8,  section 6.2

©1991-2007 by SDTools
Previous Up Next