Contents     Functions              PDF Index

## fe_cyclic

Purpose

Support for cyclic symmetry computations.

Syntax

```
model=fe_cyclic('build NSEC',model,LeftNodeSelect)
def=fe_cyclic('eig NDIAM',model,EigOpt)
```

Description

fe_cyclic groups all commands needed to compute responses assuming cyclic symmetry. For more details on the associated theory you can refer to [47].

### Assemble [,-struct]

This command supports the computations linked to the assembly of gyroscopic coupling, gyroscopic stiffness and tangent stiffness in geometrically non-linear elasticity. The input arguments are the model and the rotation vector (in rad/s)

```
model=demosdt('demo sector all');
[K,model,Case]=fe_case('assemble -matdes 2 1 NoT -cell',model);
SE=fe_cyclic('assemble -struct',model,[0 0 1000]); %

def=fe_eig({K{1:2},Case.T,model.DOF},[6 20 0]);% Non rotating modes

def2=fe_eig({K{1},SE.K{4},Case.T,model.DOF},[6 20 0]); % Rotating mode shapes

[def.data def2.data]
```

Note that the rotation speed can also be specified using a stack entry model=stack_set(model, 'info', 'Omega',[0 0 1000]).

### Build ...

model=fe_cyclic('build nsec epsl len',model,'LeftNodeSelect') adds a cyclic symmetry entry in the model case. It automatically rotates the nodes selected with LeftNodeSelect by 2π/nsec and finds the corresponding nodes on the other sector face. The default for LeftNodeSelect is 'GroupAll' which selects all nodes.

The alternate command model=fe_cyclic('build nsec epsl len -intersect',model,'LeftNodeSelect') is much faster but does not implement strict node tolerancing and may thus need an adjustement of epsl to higher values.

Command options are

• nsec is the optional number of sectors. An automatic determination of the number of angular sectors is implemented from the angle between the left and right interface nodes with the minimum radius. This guess may fail in some situtations so that the argument may be necessary.
• nsec=-1 is used for periodic structures and you should then provide the translation step. For periodic solutions, model=fe_cyclic('build -1 tx ty tz epsl len -intersect',model,'LeftNodeSelect') specifies 3 components for the spatial periodicity.
• Fix will adjust node positions to make the left and right nodes sets match exactly.
• epsllen gives the tolerance for edge node matching.
• -equal can be used to build a simple periodicity condition for use outside of fe_cyclic. This option is not relevant for cyclic symmetry.
• -ByMat is used to allow matching by MatId which allows for proper matching of coincident nodes.
```
model=demosdt('demo sector 5');
cf.model=fe_cyclic('build epsl 1e-6',model);
```

The command is used to build centrifugal loads based on an info,Omega stack entry in the form

```
data=struct('data',[0 0 1000],'unit','RPM');
model=stack_set(model,'info','Omega',data);
```

### Eig

def=fe_cyclic('eig ndiam',model,EigOpt) computes ndiam diameter modes using the cyclic symmetry assumption. For ndiam>0 these modes are complex to account for the inter-sector phase shifts. EigOpt are standard options passed to fe_eig.

This example computes the two diameter modes of a three bladed disk also used in the d_cms2 demo.

```
model=demosdt('demo sector');
model=fe_cyclic('build 3',model,'groupall');
fe_case(model,'info')
def=fe_cyclic('eig 2',model,[6 20 0 11]);
fe_cyclic('display 3',model,def)
```

The basic functionality of this command is significantly extended in fe_cyclicb ShaftEig that is part of the SDT/Rotor toolbox.