get resultant force at a node

Asked by ceguo

Hi everyone,

I prescribed a vertical displacement on a node of a beam. Now I wish to calculate the resultant force at this node. I'm using

proj = Projector(mydomain)
sigma = proj(stress)
sig_boundary = interpolate(sigma,FunctionOnBoundary(mydomain))
traction = matrix_mult(sig_boundary, mydomain.getNormal())
tractionOnTopSurface = traction*whereIsTopSurface
forceTop = integrate(tractionOnTopSurface, where=FunctionOnBoundary(mydomain))

Since there is no other traction on the top surface of the beam, forceTop[1] is the resultant vertical force at this node, isn't it? Or if there is more convenient way to calculate this?

Many thanks.

Question information

Language:
English Edit question
Status:
Solved
For:
esys-escript Edit question
Assignee:
No assignee Edit question
Solved by:
Lutz Gross
Solved:
Last query:
Last reply:
Revision history for this message
Best Lutz Gross (l-gross) said :
#1

Yes, this would give be the total vertical on the top surface (assuming that is what whereIsTopSurface is masking).

If you want to get node forces you can do this:

pde2=LinearPDE(mydomain)
pde2.setValue(X=stress)
F=pde2.getRightHandSide()

This gives you node forces as a data object.

Revision history for this message
ceguo (hhh-guo) said :
#2

Thanks Lutz.

I tried integration from the top horizontal surface and the right vertical surface, they gave me different results. But I suppose they should give me identical nodal force at the top-right node, am I right here?

For your method, after get F (nodal force list), how to get the force vector at the particular node? Something like sup(F*whereIsTopRightNode), am I right here?

Many thanks.

Revision history for this message
Lutz Gross (l-gross) said :
#3

First question: I am not sure - depends on your problem.
Second question: You can use a Locator

Revision history for this message
ceguo (hhh-guo) said :
#4

Thanks Lutz Gross, that solved my question.