Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

片持ちビームの過渡的なモデル化および線形解析

この例では、ビームの有限要素モデルを取得して、インパルス力の影響を受けるときの応答を計算する方法を説明します。この例の場合、先端で点荷重を受ける鉄の片持ちビームについて考えます。有限要素モデルの作成には、Partial Differential Equation Toolbox のライセンスが必要です。

減衰モデルはビームの体積で一様分布する基本的な粘性減衰です。鉄のビームは、ビームの先端で 100 N の外部負荷を加えてから放すと変形します。この例は追加の負荷を使用しないため、減衰により、ビームの変位は時間の関数とともに減少します。この例は 3 ステップのワークフローを使用します。

  1. ビーム モデルの過渡解析。

  2. スパース有限要素行列を抽出し、2 次スパース状態空間モデルを作成する。

  3. スパース 2 次モデルで線形解析を実行する。

過渡的なビーム モデル

過渡的なモデルを作成して、インパルス応答を計算します。

最初にビームを作成し、鉄のヤング率、ポアソン比、質量密度を指定します。addVertex プロパティを使用してビームの先端を指定します。

gm = multicuboid(0.1,0.005,0.005);
E = 210E9;
nu = 0.3;
rho = 7800;
TipVertex  = gm.addVertex('Coordinates',[0.05,0,0.005]);
firstNF = 2639;
Tfundamental = 2*pi/firstNF;

createpde (Partial Differential Equation Toolbox)を使用して過渡的なモデルを作成し、generateMesh (Partial Differential Equation Toolbox)コマンドを使用してメッシュを生成します。

transientModel = createpde('structural','transient-solid');
transientModel.Geometry = gm;
msh = generateMesh(transientModel);

structuralProperties (Partial Differential Equation Toolbox)コマンドで鉄のビームに構造特性を割り当て、structuralBC (Partial Differential Equation Toolbox)を使用して一方の端を固定します。

structuralProperties(transientModel,'YoungsModulus',E,'PoissonsRatio',nu,'MassDensity',rho);
structuralBC(transientModel,'Face',5,'Constraint','fixed');

pdegplot (Partial Differential Equation Toolbox)を使用してビームのジオメトリを可視化します。

pdegplot(transientModel,'VertexLabels','on');
title('Beam model')

structuralBoundaryLoad (Partial Differential Equation Toolbox)を使用して、発振 (インパルス) の基本周期 2% の間、ビームの先端に力を加えます。

Te = 0.02*Tfundamental;
structuralBoundaryLoad(transientModel,'Vertex',TipVertex,...
   'Force',[0;0;-100],'EndTime',Te);

structuralIC (Partial Differential Equation Toolbox)を使用して過渡的なビーム モデルの初期条件を設定します。

structuralIC(transientModel,'Velocity',[0;0;0]);

過渡的なビーム モデルを解くことにより、インパルス応答を計算します。

ncycles = 10;
tsim = linspace(0,ncycles*Tfundamental,30*ncycles);
R1 = solve(transientModel,tsim);

ビームの先端で発振を可視化します。

plot(tsim,R1.Displacement.uz(TipVertex,:))
title('Vertical displacement of beam tip')
legend('Transient model')
xlabel('Time')
ylabel('Displacement')

次のステップでは、スパース行列を有限要素のビーム モデルから抽出します。

過渡的なモデルからのスパース モデル

最初のステップでは、MKBF 行列を有限要素のビーム モデルから抽出し、力を変調して B 行列を計算します。assembleFEMatrices (Partial Differential Equation Toolbox)を使用して 2 次ビーム モデルのスパース行列を抽出します。

F1 = -100;
structuralBoundaryLoad(transientModel,'Vertex',TipVertex,'Force',[0;0;F1]);
state.time = 0;
data1 = assembleFEMatrices(transientModel,'nullspace',state);
F2 = 100;
structuralBoundaryLoad(transientModel,'Vertex',TipVertex,'Force',[0;0;F2]);
data2 = assembleFEMatrices(transientModel,'nullspace',state);

結果のモデルは次の方程式のセットで定義されます。

Mq¨+Kq=B*forcey=Fqmodel equations

M = data1.M;
K = data1.Kc;

F 行列は TipVertex ノードの x、y、z 変位で構成されています。

N = size(msh.Nodes,2);
F = data1.B;                  
F = F(TipVertex+[0 N 2*N],:);

入力に力を関連付ける B 行列をマッピングします。

B = (data2.Fc-data1.Fc)/(F2-F1);

mechssを使用してビームのスパース モデルを取得します。

sys = mechss(M,[],K,B,F(3,:));

spyを使用して mechss モデル sys のスパース性を可視化します。

spy(sys)

線形解析

並列計算を有効にして、'tfbdf3' を DAE ソルバーとして選択します。

sys.SolverOptions.UseParallel = true;
sys.SolverOptions.DAESolver = 'trbdf3';

bodeを使用してこのモデルの周波数応答を計算します。

w = logspace(2,6,1000);
bode(sys,w), grid
using parallel (mechss)
title('Frequency response from force to tip vertical displacement')

次に、lsimを使用して、インパルス応答を過渡的なビーム モデルから取得した近似と比較します。サンプル間の力の線形内挿によるエラーを制限するには、Te/5 のステップ サイズを使用します。ビームの先端に加えられる力は 0<=t<=Te です。

h = Te/5;  
t = 0:h:ncycles*Tfundamental;
u = zeros(size(t));    
u(t<=Te) = -100;

y = lsim(sys,u,t);
plot(t,y,tsim,R1.Displacement.uz(TipVertex,:))
title('Comparison of full-model simulated response with transient model approximations')
legend('Simulated model','Transient model')
xlabel('Time')
ylabel('Displacement')

過渡的なモデル近似は TRBDF3 DAE ソルバーを使用した全モデルのシミュレーションと十分に一致します。

参考

| | | (Partial Differential Equation Toolbox) | (Partial Differential Equation Toolbox) | (Partial Differential Equation Toolbox) | (Partial Differential Equation Toolbox) | (Partial Differential Equation Toolbox)

関連するトピック