Shear experiments using two different materials not working

Asked by Kristine Jarsve on 2017-06-14

Hi guys.

Thank you for your help with my previous problems. I've now got a new one.

So. I'm trying to run some 2D shearing simulations using two different materials for my two blocks. As I've previously mentioned in this thread: https://answers.launchpad.net/esys-particle/+question/632720, I've got 2 types of sandstone (weak and strong) and a granite.

My sandstones are identical except for the cohesion, and I thus tried to make two different BrittleBeamPrms.

    bipU = BrittleBeamPrms("bonded",E,gamma,CU,atan_phi,0) # Upper block
    bipL = BrittleBeamPrms("bonded",E,gamma,CL,atan_phi,1) # Lower block
    mySim.createInteractionGroup(bipU)
    mySim.createInteractionGroup(bipL)

The problem though, is that when my simulations were done, the results were identical to the my shear simulations with the weak sandstone.

So, my questions are: where did I go wrong? Is not not enough to set only the BrittleBeamPrms? Is there something I have to set in the geo-file?

Also, when I want to simulate granite and sandstone together, the friction interactions in the two blocks as well as the stiffness of the walls must be different. How do include tags in FrictionPrms? CreateInteractionGroupTagged does not work for FrictionPrms.

If you would like to see my scripts, they can be found here:

https://www.dropbox.com/sh/t6ltgwxsvu6emoj/AAB8OFmN9Q_i5JwCWckB9Ufza?dl=0

AB_shear should have the weak sandstone on top and the strong sandstone in the bottom.

As a final question: Is there any way to see the properties of the material in any of the text files dumped out? So I can actually see if the two blocks are different?

Thank you in advance!

Best,
Kristine

Question information

Language:
English Edit question
Status:
Answered
For:
ESyS-Particle Edit question
Assignee:
No assignee Edit question
Last query:
2017-06-30
Last reply:
2017-07-01
Launchpad Janitor (janitor) said : #1

This question was expired because it remained in the 'Open' state without activity for the last 15 days.

An answer would be appreciated. Thanks.

Dion Weatherley (d-weatherley) said : #3

Hi Kristine,

My apologies for the delay responding to your email.

I've had a look at your script and geometry file. The way you have implemented BrittleBeamPrms is correct however your .geo file only contains a list of bonded interactions with bondTag=0. You need to instruct gengeo to bond together the particles of the lower block with a bondTag=1.

To do this in gengeo, the easiest way is to generate the two blocks of (unbonded) particles and tag those particles with two different particleTags. Subsequently you can use MNTable3D.generateBondsTagged(..) to bond together the particles comprising the two blocks, with two different bondTags.

Suppose you have tagged the particles of the upper block with a particleTag = 1 and the lower block with particleTag = 2. Then the appropriate bonding commands would be:

#upper block:
mntable.generateBondsTagged (
   groupID = 0,
   tolerance = 1.0e-5,
   bondID = 0,
   particleTag1 = 1,
   particleTag2 = 1
)

#lower block:
mntable.generateBondsTagged (
   groupID = 0,
   tolerance = 1.0e-5,
   bondID = 1,
   particleTag1 = 2,
   particleTag2 = 2
)

This should now correctly tag the bonded interactions for the upper and lower blocks so that the appropriate BrittleBeamPrms are assigned to each.

As an aside, I noticed in your simulation script that you are setting the bounding box of the simulation spatial domain explicitly, prior to calling sim.readGeometry(..). Please note that readGeometry(..) will reassign the simulation spatial domain based on the information in the header of the geoemetry file. Consequently, when using readGeometry(..) it is unnecessary to explicitly define the bounding box of the simulation.

Cheers,

Dion

Hi Dion,

Thank you for answering! Really appreciate it!

I tried using the command mntable.generateBondsTagged as you advised, but it seems that it does not work for CircMNTable2D (I am also using BoxWithLines2D, InsertGenerator2D, and Line2D) . Is mntable.generateBondsTaggedMasked the best substitution for CircMNTable2D ?

I tried using:

#upper block:
mntable.generateBondsTaggedMasked (
   groupID = 0,
   tolerance = 1.0e-6,
   bondID = 0,
   particleTag1 = 0,
   mask1 = 0,
   particleTag2 = 0,
   mask2 = 0
)

#lower block:
mntable.generateBondsTaggedMasked (
   groupID = 0,
   tolerance = 1.0e-6,
   bondID = 1,
   particleTag1 = 1,
   mask1 = 1,
   particleTag2 = 1,
   mask2 = 1
)

in stead of generateBondsTagged but then received the error message

Traceback (most recent call last):
  File "generateGeo.py", line 48, in <module>
    mask2 = 0
Boost.Python.ArgumentError: Python argument types in
    MNTable2D.generateBondsTaggedMasked(CircMNTable2D)
did not match C++ signature:
    generateBondsTaggedMasked(MNTable2D {lvalue}, int groupID=0, double tolerance, int bondID, int tag1, int mask1, int tag2, int mask2)

Are you not allowed to assign the same mask to particles?

On another note: How do you include tags in FrictionPrms? CreateInteractionGroupTagged does not work for FrictionPrms. What would be the best alternative when materials have different E?

Best,
Kristine

Can you help with this problem?

Provide an answer of your own, or ask Kristine Jarsve for more information if necessary.

To post a message you must log in.