fe_ceig
Purpose
Computation and normalization of complex modes associated to a second order viscously damped model.
Syntax
[psi,lambda] = fe_ceig( ... )
lambda = fe_ceig(m,c,k)
def = fe_ceig( ... )
... = fe_ceig(m,c,k)
... = fe_ceig({m,c,k,mdof},eigopt)
... = fe_ceig({m,c,k,T,mdof},eigopt)
... = fe_ceig(model,eigopt)
Description
Complex modes are solution of the second order eigenvalue problem (see section 2.5 for details)
[
M]
N× N {
j}
N× 1
j2 +
[
C] {
j}
j + [
K] {
j} = 0
where modeshapes psi=
and poles L=[\
j \ ] are also solution of the first order eigenvalue problem (used in fe_ceig)
|
[ |
|
]2N × 2N
[ |
 |
L |
|
]2N × 2N
[L]2N × 2N +
[ |
|
]
[ |
 |
L |
|
]=
[0]2N × 2N
|
and verify the two orthogonality conditions
[psi,lambda] = fe_ceig(m,c,k) is the old low level call to compute all complex modes. For partial solution you should use def = fe_ceig(model,ceigopt) where model can be replaced by a cell array with {m,c,k,mdof} or {m,c,k,T,mdof} (see the example below). Using the projection matrix T generated with fe_case('gett') is the proper method to handle boundary conditions.
Options give [CeigMethod EigOpt] where CeigMethod can be 0 (full matrices), 1 (real modes then complex ones on the same basis) 2 and 3 are refined solvers available with the VISCO extension. EigOpt are standard fe_eig options.
Here is a simple example of fe_ceig calls.
femesh('reset');
model=femesh('testubeam');model.DOF=[];
model=fe_case(model,'fixdof','Base','z==0');
[m,k,model.DOF]=fe_mk(model,'options',[0 2]);
Case=fe_case(model,'gett');
kc=k*(1+i*.002); % with hysteretic damping
def1=fe_ceig({m,[],kc,model.DOF},[1 6 10 1e3]); % free modes
def2=fe_ceig({m,[],kc,Case.T,Case.DOF},[1 6 10 1e3]); % fixed modes
See also
fe_eig, fe_mk, nor2ss, nor2xf, section 2.3
section 6.6
©1991-2007 by SDTools