Is it possible to apply load on nodes?
4 次查看(过去 30 天)
显示 更早的评论
I am using PDE toolbox for Dynamic Analysis. I can only apply Boundary loads on Faces, Edges,... . I was wondering, if it is possible to apply load on nodes after generating mesh
2 个评论
Ravi Kumar
2018-6-12
Hello Mohammadmahdi,
Please provide some detail on your use case. What is the geometry and why do you want to apply loads on nodes?
It is currently not possible to apply boundary loads on nodes. But knowing your specific use case I might be able to suggest you a workaround.
Regards,
Ravi
采纳的回答
Ravi Kumar
2018-6-20
Hello Mohammadmahdi,
Sorry for the delay. I have shown below an example that should guide you to model your problem. This is a classical moving load problem. Instead of applying loads on nodes, I have used a function that applies pressure at different location on the bridge as people/load travel with time. The load can be much complicated distribution, here I am assuming it is a uniformly distributed over a short span that represents typical stride of walking.
The loading function is movingPulseFcn. Put the code below in a MATLAB file and execute. Note that I have plotted displacement using a for loop which has a pause, it will wait for you to look at the result, press any key to continue to next time step.
model = createpde('structural','transient-solid');
gm=multicuboid(10,4,0.3);
model.Geometry = gm;
E = 210E9; nu = 0.3; rho = 8000;
structuralProperties(model,'YoungsModulus',E, ...
'PoissonsRatio',nu, ...
'MassDensity',rho);
structuralBC(model,'Face',[5 3],'XDisplacement',0,'YDisplacement',0,'ZDisplacement',0);
generateMesh(model);
structuralBoundaryLoad(model,'Face',2,'Pressure',@movingPulseFcn);
d0=[0,0,0];
v0=[0,0,0];
structuralIC(model,'Displacement',d0,'Velocity',v0);
t_max = 20;
tlist=0:0.1:t_max;
structuralResults=solve(model,tlist);
for i = 1:numel(structuralResults.SolutionTimes)
pdeplot3D(model,'ColorMapData',structuralResults.Displacement.uz(:,i))
title(['Deflection of bridge at Time = ' num2str(structuralResults.SolutionTimes(i))]);
pause
end
function P = movingPulseFcn(region,state)
x = region.x+5; % Make the left end x = 0
dx = 0.4; % Approximate half stride. Stride is 2*dx = 0.8 (m)
%Distribute the load over an area:
A = 0.8*4;
P = zeros(1,numel(x));
loadVelocity = 1.5; %m/sec
if isnan(state.time)
P = nan(1,numel(x));
end
if state.time < 7 % Load would cross the bridge in about 7 sec
loadLocation = loadVelocity*state.time;
x1 = loadLocation-dx;
x2 = loadLocation+dx;
idx = x>x1 & x<x2;
% Weight of four people
F = 2000;
P(idx) = 2000/A;
end
end
0 个评论
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!