How can I improve accuracy using PDE Toolbox

2 次查看(过去 30 天)
Hello,
I have a cantilever with a constant force. I'm computing the reaction on the clamped edge with the PDE Toolbox.
However the difference between numerical and exact solution is too high.
Is there a way too reduce the difference, other then reducing maximum element size Hmax?
yModulus = 200e3; % young's modulus
ny = 0.2; % Poissons ratio
Hmax = 0.01; % max element size
l = 1; % length of cantilever
b = 0.2; % height of cantilever
q = 10; % constant force
f_press = @(region,state) [q*ones(size(region.y)),zeros(size(region.y))];
structModel = createpde('structural','static-planestress');
gd = [3;4;0;b;b;0;0;0;l;l];
g = decsg(gd,'R',char('R'));
geometryFromEdges(structModel,g);
generateMesh(structModel,'Hmax',Hmax);
structuralProperties(structModel,...
'YoungsModulus',yModulus,...
'PoissonsRatio',ny);
structuralBC(structModel,'Edge',1,'Constraint','fixed');
structuralBoundaryLoad(structModel,'Edge',4,'SurfaceTraction',f_press);
res = solve(structModel);
% Fx should equal 10
reaction = evaluateReaction(res,'Edge',1);
difference.png

回答(2 个)

Alan Weiss
Alan Weiss 2019-1-9
If your toolbox version were R2017a or earlier, the default mesh for 2-D geometry has linear elements. You can get improved accuracy by using quadratic elements:
generateMesh(model,'GeometricOrder','quadratic')
However, since your toolbox version is R2017b or later (that's when structural analysis was introduced), then I don't know of a way to get more accuracy other than taking a finer mesh.
Alan Weiss
MATLAB mathematical toolbox documentation

Svetlana Pease
Svetlana Pease 2019-1-9
For this particular example, using a finer mesh seems to be the only way to get a more accurate result. In general, you can also try different solver options - for example, you can tighten the tolerances:
Svetlana Pease
MathWorks Documentation Group

Community Treasure Hunt

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

Start Hunting!

Translated by