PDE: modal analysis two bodies - possible?

5 views (last 30 days)
Hello all,
I am trying to solve the eigenvalue problem for two connected cylinders with different material properties. First of all I tried to solve it in 2D space, here is my code:
structuralModel = createpde('structural','modal-planestrain');
% circles
C1 = [1,0.5,-0.25,0.25]';
C1 = [C1;zeros(10 - length(C1),1)];
C2 = [1,0.5,-0.25,0.20]';
C2 = [C2;zeros(10 - length(C2),1)];
C3 = [1,0.5,-0.25,0.18]';
C3 = [C3;zeros(10 - length(C3),1)];
% geometry from edges
gm = [C1,C2,C3];
sf = '(C1-C2)+(C2-C3)';
ns = char('C1','C2','C3');
ns = ns';
g = decsg(gm,sf,ns);
geometryFromEdges(structuralModel,g);
% subplot(3,1,1)
pdegplot(structuralModel,'Facelabels','on','EdgeLabels','on') % ,'EdgeLabels','on',
axis equal
% material properties
structuralProperties(structuralModel,'Face',1,'YoungsModulus',200E9,'PoissonsRatio',0.3,'MassDensity',2.7E-6);
structuralProperties(structuralModel,'Face',2,'YoungsModulus',110E9,'PoissonsRatio',0.28,'MassDensity',8.7E-6);
% mesh
const_h_max = 0.005;
mesh = generateMesh(structuralModel,'Hmax',const_h_max);
subplot(3,1,2)
pdeplot(mesh)
% solving
eigen = solve(structuralModel,'FrequencyRange',[20,100]*2*pi);
Error code:
Error using matlab.internal.math.lanczos
Factorizations failed possibly because the problem is ill-posed.
Error in pde.StructuralModel/solveStructuralEigenvalue (line 76)
[v,l] = matlab.internal.math.lanczos(K,M,opts);
Error in pde.StructuralModel/solve (line 347)
R = solveStructuralEigenvalue(self,argsToPass{:});
1.Is there any possibility at all to do the modal analysis for two bodies (with different material properties)?
2.did I forget any boundary conditions?
Thanks in advance and best regards
Robert

Accepted Answer

Ravi Kumar
Ravi Kumar on 12 Jan 2021
Hi Rober,
Your mass density seems to be off. If you are using SI units, as it appears from Young's moduls, mass density must be on the order of 1E3. Take a look at this revised mass density and frequency range:
structuralModel = createpde('structural','modal-planestrain');
% circles
C1 = [1,0.5,-0.25,0.25]';
C1 = [C1;zeros(10 - length(C1),1)];
C2 = [1,0.5,-0.25,0.20]';
C2 = [C2;zeros(10 - length(C2),1)];
C3 = [1,0.5,-0.25,0.18]';
C3 = [C3;zeros(10 - length(C3),1)];
% geometry from edges
gm = [C1,C2,C3];
sf = '(C1-C2)+(C2-C3)';
ns = char('C1','C2','C3');
ns = ns';
g = decsg(gm,sf,ns);
geometryFromEdges(structuralModel,g);
% subplot(3,1,1)
pdegplot(structuralModel,'Facelabels','on','EdgeLabels','on') % ,'EdgeLabels','on',
axis equal
% material properties
structuralProperties(structuralModel,'Face',1,'YoungsModulus',200E9,'PoissonsRatio',0.3,'MassDensity',2.7E3);
structuralProperties(structuralModel,'Face',2,'YoungsModulus',110E9,'PoissonsRatio',0.28,'MassDensity',8.7E2);
% mesh
const_h_max = 0.005;
mesh = generateMesh(structuralModel,'Hmax',const_h_max);
subplot(3,1,2)
pdeplot(mesh)
% solving
eigen = solve(structuralModel,'FrequencyRange',[-Inf,10000]*2*pi);

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!