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
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
Mohammadmahdi Malakizandi
Thanks for the comment. Here is my code. I want to simulate a pedestrian bridge. In order to simulate the walking, I want to apply four rows of forces, 20 forces each, presenting four pedestrians. I have already developed functions for each row in a way that when one force ends, the next one starts. But I need to to be able to apply forces on 20*4 positions of the bridge
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',[1 3],'XDisplacement',0,'YDisplacement',0,'ZDisplacement',0);
generateMesh(model);
structuralBoundaryLoad(model,'Face',3,'Pressure',10^5,'RiseTime',0.5,'FallTime',0.5,'EndTime',3);
d0=[0,0,0];
v0=[0,0,0];
structuralIC(model,'Displacement',d0,'Velocity',v0);
tlist=0:t_max; structuralResults=solve(model,tlist);
stress = evaluateStress(structuralResults);
figure pdeplot3D(model,'ColorMapData',stress.sxx(:,end)) title('x-Direction Normal Stress in the Beam of the Last Time-Step')

请先登录,再进行评论。

采纳的回答

Ravi Kumar
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 个)

标签

Community Treasure Hunt

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

Start Hunting!

Translated by