How can I create FEA colour plots?
Mostrar comentarios más antiguos
Hi Everyone,
I have an array of dataset containing X,Y coordinates and their corresponding FEA results (Von Mises, Displacement, Strain).
What is the easiest way to plot this data on coloured contour plots?
Thank you for your help.
3 comentarios
J. Alex Lee
el 7 de Mzo. de 2020
Editada: J. Alex Lee
el 7 de Mzo. de 2020
do you have connectivity information?
If not, you can maybe use the triangulate function within matlab to generate it first, and maybe there are ways to plot such results.
otherwise you can try to use a scatteredInterpolant to find values on a regular grid of positions, then use a contour() or contourf()
Tamas Lanci
el 3 de Abr. de 2020
darova
el 3 de Abr. de 2020
Please show your attempts. Attach the data
Respuestas (1)
Lubos Smolik
el 3 de Abr. de 2020
Assuning that you have a planar rectangular geometry and coordinates and results are stored in vectors x, y and vonMises, you can use the following code:
% x - vector of x coordinates
% y - vector of y coordinates
% vonMises - nodal von Mises stress
n = 50; % number of levels
contourf(x, y, vonMises, n);
xlim([min(x) max(x)]);
ylim([min(y) max(y)]);
xlabel("X coordinate")
ylabel("Y coordinate")
bar = colorbar;
title(bar, "Von Mises stress")
If your geometry is not rectangular, then you also need some information about connections between individual nodes as J. Alex Lee has already noted.
10 comentarios
Tamas Lanci
el 3 de Abr. de 2020
Editada: Tamas Lanci
el 3 de Abr. de 2020
darova
el 3 de Abr. de 2020
- Do you still think ContourF function is the applicable in this case?
Didn't you stil try?
And why your elements have only two points each instead of four?
Lubos Smolik
el 3 de Abr. de 2020
Editada: Lubos Smolik
el 3 de Abr. de 2020
Do you still think ContourF function is the applicable in this case?
Definitely yes!
You can take full advantage of a fact that contourf does not fill areas with NaN values. The idea comes from this Matlab answer.
In your case, you need to create ghost nodes in the hollow area. The following code should do the trick.
% Import input data
% x - vector of x coordinates
% y - vector of y coordinates
% vonMises - nodal von Mises stress
% Create "ghost points"
r = 10; % radius of the hollow area
% I am assunming that the centre of the area is in x = 0, y = 0.
pts = 60; % number of the ghost points
phi = linspace(0, 2*pi, pts + 1)';
ptsX = 0.999 * r * cos(phi(1:end-1));
ptsY = 0.999 * r * sin(phi(1:end-1));
% Add the ghost points to your input data
x = [x; ptsX]; % I am assuming that x is a column vector
y = [y; ptsY];
vonMises = [vonMises; nan(size(ptsX))];
% Plot countour diagram
n = 50; % number of levels
contourf(x, y, vonMises, n);
xlim([min(x) max(x)]);
ylim([min(y) max(y)]);
xlabel("X coordinate")
ylabel("Y coordinate")
bar = colorbar;
title(bar, "Von Mises stress")
Alternatively, you can use your input data and just draw a white circle in the hollow area.
EDIT: Typo corrected.
Tamas Lanci
el 3 de Abr. de 2020
Lubos Smolik
el 3 de Abr. de 2020
Editada: Lubos Smolik
el 3 de Abr. de 2020
Well, you can easily generate the ghost points in any desired area.
If you need a higher degree of automation, you can use scatteredInterpolant, which has been already mentioned by J. Alex Lee. If you set "ExtrapolationMethod" parameter to "none", areas outside of the convex hull of your points are omitted automatically. Unfortunately, this solution does not recognise hollow areas inside the convex hull.
% Import input data
% x - vector of x coordinates
% y - vector of y coordinates
% vonMises - nodal von Mises stress
% Generate interpolant
F = scatteredInterpolant(x, y, vonMises, 'natural', 'none');
% Generate query nodes
dx = (max(x) - min(x)) / 1000;
dy = (max(y) - min(y)) / 1000;
[xq, yq] = meshgrid(min(x):dx:max(x), min(y):dy:max(y));
% Visualise data
vq = F(xq, yq);
surface(xq, yq, vq);
shading interp
view(2)
Lubos Smolik
el 3 de Abr. de 2020
Editada: Lubos Smolik
el 3 de Abr. de 2020
And why your elements have only two points each instead of four?
@Darova Results are probably in interpolation points and not in nodes.
J. Alex Lee
el 3 de Abr. de 2020
Before going down this rabit hole of post-processing the excel data (which I would imagine in general is hard to do), I guess we should ask OP if they have access to the actual FE results from which the full elemental connectivity information can be extracted. It's also not clear why matlab needs to be the platform of choice to do the visualization if this is the case?
Tamas Lanci
el 3 de Abr. de 2020
Lubos Smolik
el 4 de Abr. de 2020
Tamas, have you checked comment https://www.mathworks.com/matlabcentral/answers/509490-how-can-i-create-fea-colour-plots#comment_820742 ? I used scatteredInterpolant there and than visualised data using surface function.
Tamas Lanci
el 10 de Abr. de 2020
Editada: Tamas Lanci
el 16 de Abr. de 2020
Categorías
Más información sobre Contour Plots en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

