yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #13223
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,
Thank you for the advice. I have created a two-body example, and reduced strainRate to 10 (1e1), but now I find that the strain rate does nothing. When I request a printout of the unbalancedForce() value, it turns out as NaN.
Also, I have tried to make the script far more minimal.
Basically, I now seem to have two spheres that do not move... any ideas
on what I am missing?
------code below------
import time
from yade import utils
#other random parameters
start = time.time()
###volume parameters
radius = 2
xSize = 4;
ySize = 2;
#define and append the material
def mat_1(): return JCFpmMat(type=1,young=30.0e9,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)
O.materials.append((mat_1()))
#Create the two spheres
s1=utils.sphere((1,1,0),radius=1)
s2=utils.sphere((3,1,0),radius=1)
O.bodies.append(s1)
O.bodies.append(s2)
#add in wall information, from uniax.py
young = 90e9
mn,mx=Vector3(0,0,0),Vector3(xSize,ySize,radius) # corners of the initial packing
O.materials.append(FrictMat(young=young,poisson=0.5,frictionAngle=0,density=0,label='walls'))
walls=aabbWalls([mn,mx],thickness=0,material='walls')
wallIds=O.bodies.append(walls)
interactionRadius=1.20 # to set initial contacts to larger neighbours
and a bit further
strainRateTension=1e1
triax=TriaxialStressController(
thickness = 0,
stressMask = 5, #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)
internalCompaction=False,
goal1 = -.001,
goal2 = strainRateTension, # positive is tension, negative is compression
goal3 = 0
)
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();
#### initializes now the interaction detection factor to strictly 1
ss2d3dg.interactionDetectionFactor=-1.0
is2aabb.aabbEnlargeFactor=-1.0
--
You received this question notification because your team yade-users is
an answer contact for Yade.