problem with bonds breaking

Asked by Robert Sarracino

I have a problem with bonds breaking long before they should, and the material subsequently shattering. Is this a numerical instability or is there something else happening? My code segment is below:

#import the appropriate ESyS-Particle modules:
import sys, math
from numpy import *
from scipy import *
from esys.lsm import *
from esys.lsm.util import *
from esys.lsm.geometry import *
import random
from POVsnaps import POVsnaps
from POVsnaps2 import POVsnaps2
from POVsnaps3 import POVsnaps3
from WallLoader import WallLoaderRunnable

# instantiate a simulation object
# and initialise the neighbour search algorithm:
sim = LsmMpi(numWorkerProcesses=1, mpiDimList=[1,1,1])
sim.initNeighbourSearch(particleType="RotSphere",gridSpacing=2.5,verletDist=0.5)

# set values of simulation variables. Units are mks
numIceParticlesx = 40
numIceParticlesz = 12
half_xparticles = numIceParticlesx//2
particleRad = 0.5
particleRho = 900.0
particleMass = 4*pi*particleRad**3*particleRho/3.0 # for 3D
#particleMass = pi*particleRad**2*particleRho # for 2D
normalStiffness = 9000000.0 # reduced by a factor of 1000 to increase timestep
poisRatio = 0.05
bondpoisRatio = 0.45
kinFriction = 0.4
statFriction = 0.6
shearStrength = 500000000
tanPhi = 0.577

wallposition = -2.0*numIceParticlesx*particleRad - 0.6
print 'wall position =', wallposition

numsteps = 640000 # 500000
#stepsize = 0.2*particleRad*sqrt(particleRho/normalStiffness)
timestep = 0.001
timeincrement = 3200

#set the number of timesteps and timestep increment:
sim.setNumTimeSteps(numsteps)
sim.setTimeStepSize(timestep)

#specify the spatial domain for the simulation:
domain = BoundingBox(Vec3(-120,-120,-120), Vec3(120,120,120))
sim.setSpatialDomain(domain)

# add the particles to the domain:
particleList = []
for countz in range(numIceParticlesz):
   zDist = -1.0*countz
   for countx in range(numIceParticlesx):
      xDist = -1.0*countx
      yDist = 0.0
      particle_number = countz*100 + countx
      particle=SimpleSphere(id=particle_number, posn=Vec3(xDist,yDist,zDist), radius=particleRad, mass=particleMass)
      sim.createParticle(particle)
      particleList.append(particle)

# create bonds between particles separated by less than the specified maxDist
sim.createConnections(ConnectionFinder(maxDist=0.005, bondTag=1, pList=particleList))

# create rotational elastic-brittle bonds between particles
pp_bonds = sim.createInteractionGroup(BrittleBeamPrms(name = "pp_bonds", youngsModulus=normalStiffness, poissonsRatio=bondpoisRatio, cohesion=shearStrength, tanAngle=tanPhi, tag=1))

# initialize frictional interactions for unbonded particles
sim.createInteractionGroup(FrictionPrms(name="friction", youngsModulus=normalStiffness, poissonsRatio=poisRatio, dynamicMu=kinFriction, staticMu=statFriction))

# create an exclusion between bonded and frictional interactions
sim.createExclusion(interactionName1="pp_bonds", interactionName2="friction")

# add a vertical wall to push the particles along
sim.createWall(name = "icewall", posn=Vec3(wallposition,0,0), normal=Vec3(1,0,0))

# specify the type of interactions between wall and particles:
sim.createInteractionGroup(NRotElasticWallPrms(name = "elasticWall1", wallName = "icewall", normalK = normalStiffness))

# create mesh walls: ramp
sim.readMesh(fileName = "ramp.msh", meshName = "ramp_mesh_wall")

# specify that the particles undergo repulsion with the mesh wall
sim.createInteractionGroup(NRotElasticTriMeshPrms(name = "mesh_repel", meshName = "ramp_mesh_wall", normalK = normalStiffness))

# add a wall loader to move the icewall
wall_loader1 = WallLoaderRunnable (LsmMpi = sim, wallName = "icewall", vPlate = Vec3(0.1, 0.0, 0.0), startTime = 0, rampTime = 50)
sim.addPreTimeStepRunnable (wall_loader1)

#initialise gravity in the domain:
sim.createInteractionGroup(GravityPrms(name="earth-gravity", acceleration=Vec3(0,-9.81,0)))

# add buoyancy
sim.createInteractionGroup(BuoyancyPrms(name="water", acceleration=Vec3(0,-9.81,0), fluidDensity=1000, fluidHeight = 0.0))

#add local viscosity to simulate fluid resistance:
sim.createInteractionGroup(LinDampingPrms(name="linDamping",viscosity=0.95,maxIterations=100))

# add a checkpointer
sim.createCheckPointer(CheckPointPrms(fileNamePrefix = 'snapshot', beginTimeStep = 0, endTimeStep = numsteps, timeStepIncr = timeincrement))

#add a POVsnaps Runnable:
povcam = POVsnaps(sim=sim, interval=timeincrement)
povcam.configure(lookAt=Vec3(-20,0,-10), camPosn=Vec3(-20,10,-10), zoomFactor=0.04)
sim.addPostTimeStepRunnable(povcam)

#add another POVsnaps Runnable:
povcam2 = POVsnaps2(sim=sim, interval=timeincrement)
povcam2.configure(lookAt=Vec3(-40,0,-6), camPosn=Vec3(-50,0,-6), zoomFactor=0.12)
sim.addPostTimeStepRunnable(povcam2)

#add another POVsnaps Runnable:
povcam3 = POVsnaps3(sim=sim, interval=timeincrement)
povcam3.configure(lookAt=Vec3(-10,0,0), camPosn=Vec3(-10,0,15), zoomFactor=0.04)
sim.addPostTimeStepRunnable(povcam3)

#execute the simulation
sim.run()

The ramp runnable is:

Triangle
3D-Nodes 4
0 0 0 1.0 -0.5 10.0
1 1 0 1.0 -0.5 -10.0
2 2 0 61.0 29.5 10.0
3 3 0 61.0 29.5 -10.0

Tri3 2
0 0 1 3 0
1 0 0 3 2

The bond strength is so high that the bonds should never break. However, the assembly, pushed by the 'icewall' behind it, rises a short distance up the ramp and then, after having moved a relatively short distance, shatters. I've tried this again with a stepsize 100 times smaller, and the same thing happens after the same period of 'real' time.

Interestingly, when I remove the exclusion, which means, I imagine, that both the bond and frictional models interact with the particles simultaneously, the assembly does not break up and behaves like a floating rubber sheet (which it effectively is).

Question information

Language:
English Edit question
Status:
Expired
For:
ESyS-Particle Edit question
Assignee:
No assignee Edit question
Last query:
Last reply:
Revision history for this message
Dion Weatherley (d-weatherley) said :
#1

Hi Robert,

Which version of ESyS-Particle are you using?

Recently we introduced a bug whilst trying to fix another bug that causes bonded particle models like yours to explode. The changes were reverted prior to the ESyS-Particle-2.3 stable release and in the current development version (rev. 1126). As a start, I would make sure you are using either of these versions (and retain the exclusion).

Cheers,

Dion

Revision history for this message
Robert Sarracino (robert-sarracino) said :
#2

Hi Dion,

I'm using version 2.2.2. I've now downloaded version 2.3. Do I need to uninstall the older version before installing 2.3, or can I just install the newer version?

Revision history for this message
Dion Weatherley (d-weatherley) said :
#3

Hi Robert,

It is best to uninstall the old version first. Simply change into the source code directory from which you installed the older version and type:
sudo make uninstall

After that you can go ahead with the installation of v2.3.

Cheers,

Dion

Revision history for this message
Robert Sarracino (robert-sarracino) said :
#4

Thanks, Dion.

I'm now having trouble installing the povray binaries. I went to the site http://www.povray.org/download/linux.php, but the site to which I'm redirected, which presumably has the povray binaries, is no longer active.

When I go to the povray site itself and get into the 'download' window, it gives me a lot of information about povray but has no information, or links, to actually download the binaries.

What do I do?

Revision history for this message
Robert Sarracino (robert-sarracino) said :
#5

I deleted the older version of esys-particle and installed version 2.3. However, the new esys-particle won't run.

The command I've been using for the older version of esys-particle is:

rsarracino@ccore-rsarracino:~/dem_routines/ice_rubble/ice_rubble3D$ mpirun -np 2 /usr/local/bin/esysparticle ice_rubble3D1.py

When I type this command now, however, I get this message:

--------------------------------------------------------------------------
mpirun was unable to launch the specified application as it could not access
or execute an executable:

Executable: /usr/local/bin/esysparticle
Node: ccore-rsarracino

while attempting to start process rank 0.
--------------------------------------------------------------------------

However, when I run 'locate', i.e.,

 rsarracino@ccore-rsarracino:~/dem_routines/ice_rubble/ice_rubble3D$ locate esysparticle

I get this response:

/usr/local/bin/esysparticle

-- so esysparticle is evidently lcoated in /usr/local/bin, but mpirun cannot access or execute it.

Revision history for this message
Launchpad Janitor (janitor) said :
#6

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