MATLAB: Is it possible to apply load on nodes

nodal loadPartial Differential Equation Toolbox

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

Best Answer

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