← Back to team overview

yade-users team mailing list archive

Re: [Question #314841]: Cannot figure out how to use 2D TriaxialStressController

 

Question #314841 on Yade changed:
https://answers.launchpad.net/yade/+question/314841

    Status: Answered => Open

James X is still having a problem:
Hi,

OK, so I have removed the FrictMat material and made everything a
JCFpmMat material.  I created the wall material to be effectively 10
times as strong in every parameter compared to the spheres. I also
realized I my stressmask was incorrect for my new simplified scenario,
so I have changed the value to '6' so that it is being pulled apart in
the X-direction.

Unfortunately, I still can't figure out why my spheres aren't interacting with the walls (among other issues):
1) The walls move apart, but they don't pull the particles with them
2) There doesn't seem to be interaction between the walls and the spheres, even though the spheres should be touching the walls and the cohesive interaction radius was set 1.1 just in case
3) The walls in the y-direction seem to disappear

I was looking at the sample triax code, but they didn't seem to be doing
anything special to ensure interactions, although they were using
internalCompaction=True, but it seems like the dimensions of my problem
should make this unnecessary/counter-productive. Do you see any way I
can actually try to get the walls to 'attach' to the elements?


----begin code----
import time
from yade import utils

#other random parameters
start = time.time()

###volume parameters
Sradius = 1
xSize = 4
ySize = 2
youngs = 30e9

#define and append the material
def mat_1(): return JCFpmMat(type=1,young=youngs,poisson=0.3,frictionAngle=radians(30),density=3000,tensileStrength=1.23e8,cohesion=1.23e8,jointNormalStiffness=1e7,jointShearStiffness=1e7,jointCohesion=1e6,jointFrictionAngle=radians(20),jointDilationAngle=0.0) 

def mat_wall(): return
JCFpmMat(type=1,young=youngs*10,poisson=0.3,frictionAngle=radians(30),density=3000,tensileStrength=1.23e9,cohesion=1.23e9,jointNormalStiffness=1e8,jointShearStiffness=1e8,jointCohesion=1e7,jointFrictionAngle=radians(20),jointDilationAngle=0.0)

O.materials.append((mat_wall()))
O.materials.append((mat_1()))

#add in wall information, from uniax.py
mn,mx=Vector3(0,0,0),Vector3(xSize,ySize,Sradius*2) # corners of the initial packing
walls=aabbWalls([mn,mx],thickness=0,material=mat_wall)
wallIds=O.bodies.append(walls)


#Create the two spheres
O.bodies.append(utils.sphere((1,1,Sradius),radius=Sradius,material=mat_1))
O.bodies.append(utils.sphere((3,1,Sradius),radius=Sradius,material=mat_1))

interactionRadius=1.10 # to set initial contacts to larger neighbours
and a bit further

strainRateTension=.0001
triax=TriaxialStressController(
    thickness = 0,
    stressMask = 6, #1 is x, 2 is y, 4 is z, Bitmask, if imposed goal`s are stresses (0 for none, 7 for all, 1 for direction 1, 5 for directions 1 and 3, etc. :ydefault:`7)
    goal1 = strainRateTension,
    goal2 = -0.000001, # positive is tension, negative is compression
    goal3 = -0.000001,
    internalCompaction=False
)

O.engines=[
	ForceResetter(),
	InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=interactionRadius,label='is2aabb'),]),
	InteractionLoop(
		[Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=interactionRadius,label='ss2d3dg')],
		[Ip2_JCFpmMat_JCFpmMat_JCFpmPhys(cohesiveTresholdIteration=1,label='interactionPhys')],
		[Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM(label='interactionLaw')]
	),
	GlobalStiffnessTimeStepper(timestepSafetyCoefficient=0.8),
	NewtonIntegrator(damping=0.2,gravity=(0.,0,0.)),
	triax,
	PyRunner(iterPeriod=500,initRun=False,command='print("5000 runs in fracture run, elapsed time is: " + str(time.time() - start) + ", unbalanced is: " + str(utils.unbalancedForce() )) '),
]

#### time step definition (low here to create cohesive links without big changes in the assembly)
O.dt=0.05*utils.PWaveTimeStep()

#### set cohesive links with interaction radius>=1
O.step();

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.