problem with bonds breaking
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(
sim.initNeighbo
# 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*particleRa
#particleMass = pi*particleRad*
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*numIcePart
print 'wall position =', wallposition
numsteps = 640000 # 500000
#stepsize = 0.2*particleRad
timestep = 0.001
timeincrement = 3200
#set the number of timesteps and timestep increment:
sim.setNumTimeS
sim.setTimeStep
#specify the spatial domain for the simulation:
domain = BoundingBox(
sim.setSpatialD
# add the particles to the domain:
particleList = []
for countz in range(numIcePar
zDist = -1.0*countz
for countx in range(numIcePar
xDist = -1.0*countx
yDist = 0.0
particle_
particle=
sim.
particleL
# create bonds between particles separated by less than the specified maxDist
sim.createConne
# create rotational elastic-brittle bonds between particles
pp_bonds = sim.createInter
# initialize frictional interactions for unbonded particles
sim.createInter
# create an exclusion between bonded and frictional interactions
sim.createExclu
# add a vertical wall to push the particles along
sim.createWall(name = "icewall", posn=Vec3(
# specify the type of interactions between wall and particles:
sim.createInter
# create mesh walls: ramp
sim.readMesh(
# specify that the particles undergo repulsion with the mesh wall
sim.createInter
# 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.addPreTimeS
#initialise gravity in the domain:
sim.createInter
# add buoyancy
sim.createInter
#add local viscosity to simulate fluid resistance:
sim.createInter
# add a checkpointer
sim.createCheck
#add a POVsnaps Runnable:
povcam = POVsnaps(sim=sim, interval=
povcam.
sim.addPostTime
#add another POVsnaps Runnable:
povcam2 = POVsnaps2(sim=sim, interval=
povcam2.
sim.addPostTime
#add another POVsnaps Runnable:
povcam3 = POVsnaps3(sim=sim, interval=
povcam3.
sim.addPostTime
#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
- Assignee:
- No assignee Edit question
- Last query:
- Last reply: