nairnj / nairn-mpm-fea

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

Rigid Material Contact With Crack Surfaces #2

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
The new rigid material (with setDirection=8) ignores cracks but will interact 
with crack velocity fields by multi-material 
mode contact. This material can handle problems involving wedging opening of a 
crack.

The current code (5/21/2010) extrapolates these particles to the grid just like 
regular particles and thus they may 
become part of crack velocity fields above and below cracks. They will do 
material contact in those fields whenever 
they are present in those fields. They are ignored for all other crack 
calculations. In this approach, crack surface will not "feel" the rigid 
particles until they pass through the crack plane 
particles. This seems to work OK, but is it physically correct? Here are some 
alternatives that can be activated in the 
code:

1. An alternate scheme is to extrapolate rigid particles to all crack velocity 
fields and thus they will interface with all 
surfaces when near those surfaces. This approach seems physically better, but 
gave poor results in some cutting 
simulations. This approach is coded and can be 
implemented by uncommenting the line

     //#define COMBINE_RIGID_MATERIALS

in NairnMPM.cpp. When this variable is defined, a new method is called at the 
end of task 1 that combines rigid 
particle material velocity fields for all crack velocity fields and transfers a 
copy of that full field to each crack velocity 
field with other materials.

2. Another option is to transfer rigid particles only to crack velocity fields 
that already had at least one particle of that 
material. This approach may not make physical sense (i.e., presence of one 
particle should not be a requirement to 
start contact). It can be implemented by 
uncommenting the line as described in #1 and then uncommenting the first 
section in

     void CrackVelocityFieldMulti::CopyRigidFrom(CrackVelocityFieldMulti *cvfm,int rigidFieldNum)

in CrackVelocityFieldMulti.cpp and finally commenting out the second section 
beginning in

     // create material field if needed

Original issue reported on code.google.com by johnanairn@gmail.com on 21 May 2010 at 11:55