← 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,
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.