nairnj / nairn-mpm-fea

nairn-mpm-fea computational mechanics project
86 stars 37 forks source link

Tract Contact Forces #3

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
A new feature is in development that tracks total contact forces on rigid 
particles. In only applies to multi-material mode simulations with rigid 
particles acting as a contact material (`SetDirection`=8 in the rigid material 
settings). The idea is:

1. Each time the momentum is changed on a node with a rigid particle, track the 
force on that node exerted on the rigid material as -dp/dt, where dp is the 
momentum change and dt is the time step.

2. At the end of the time step (but actually only when about to archive 
results), extrapolate all nodal forces on rigid materials from the grid to 
those rigid particles.

3. When archiving save the components of force (in micro N) in the xx, yy, and 
zz, components of stress of the rigid particles. For other particles, the 
stresses are archived in Pa. Since the visualization tools multiply stresses by 
1e-6 to convert to MPa, this same conversion applied to forces will convert 
them to N.

4. To try this feature, it has the be activated by uncommenting the line

     `#define TRACK_CONTACT_FORCES`

in `NairnMPM.hpp`

5. The issue: the problem is these forces do not seem to be correct. They run 
10-40 times higher than expected. Before making use of the feature for results, 
this issue has to be resolved.

6. A good test is uniaxial compression with rigid materials as a plunger using 
contact and then tracking the average force on the rigid particles (through 
`GlobalArchive' command). This average times the number of rigid particles is 
the total force on those particles. This total force divided by cross sectional 
area should match the average stress on the other particles.

Original issue reported on code.google.com by johnanairn@gmail.com on 30 Jul 2010 at 9:48

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
I found a bug in the extrapolation of nodal forces on rigid materials from the 
grid to the particles. It was extrapolating a cumulative force. This bug is no 
fixed and the results are close. A simple compression test gave reasonable 
forces except the final stress calculated from the forces was a factor of 2 too 
low.

Original comment by johnanairn@gmail.com on 17 Aug 2010 at 8:36

GoogleCodeExporter commented 9 years ago
The contact forces seem to accurately reflect the stress in the particles 
closest to the contact surface. This stress, however, may differ from a more 
global view of the problem. For example, simple compression suggests the 
contact force divided by area should match the average stress. Instead, the 
contact force divided by area appears to match stress on the particles next to 
the contact plane. This stress may be higher or lower than average (due to MPM 
tendency to have fuzzy edges and oscillatory stresses near boundary conditions) 
and may change with resolution. I am not sure these contact forces can be 
trusted for precise calculations, but they might have use.

They have now been made a permanent part of the code. To use them, use an 
`ArchiveRigidForces` command within the `MultiMaterialMode` command. You can 
also use `GlobalArchive` and new `sxxtot` (etc.) to archive total contact 
forces on one rigid material (provided `ArchiveRigidForces` is activated as 
well).

Original comment by johnanairn@gmail.com on 18 Aug 2010 at 8:10

GoogleCodeExporter commented 9 years ago
On further inspection, the forces extrapolated to the rigid particles did not 
give good results for contact forces. This method was thus removed from the 
code. In its place, the total contact forces on the nodes can be archived using 
a VTKArchive option or they can be summed using a global archive option. These 
grid-based results are much better and appear to give mostly excellent results 
during simple compression. They had a strange issue at the high resolution in 
one test, but otherwise look fine.

The `ArchiveRigidForces` command was therefore removed from the code in favor 
of `contactforce` in a VTKArchive custom task or `contactx` (or `y` or `z`) in 
a global archive.

Original comment by johnanairn@gmail.com on 16 Sep 2010 at 1:04