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

ibraheem khan posted a new comment:

sorry Robert....

my script is here .
 
from yade import pack, export, ymport

nRead=readParamsFromTable(
        num_spheres=1000,
        compFricDegree = 25, 
        key='_triax_base_'
        unknownOk=True
)
from yade.params import table

num_spheres=table.num_spheres
key=table.key
targetPorosity = 0.45 
compFricDegree = table.compFricDegree 
finalFricDegree =25 
rate=-0.02
damp=0.2 
stabilityThreshold=0.01 
young=150e9 
mn,mx=Vector3(0,0,0),Vector3(1,1,1) 
cohesion=50e6
sigmaT=40e6
density=2650
poisson=0.25
confiningP=-1e6


O.materials.append(JCFpmMat(young=young,poisson=0.5,frictionAngle=0,density=0,label='walls',cohesion=0,tensileStrength=0))
O.materials.append(JCFpmMat(young=young, cohesion=cohesion, density=density, 
frictionAngle=radians(finalFricDegree), tensileStrength=sigmaT, 
poisson=poisson, label='spheres'))

walls=aabbWalls([mn,mx],thickness=0,material='walls')
wallIds=O.bodies.append(walls)

sp=pack.SpherePack()
sp.makeCloud(mn,mx,-1,0.3333,num_spheres,False, 0.95,seed=1) 
O.bodies.append([sphere(center,rad,material='spheres') for center,rad in sp])


###   DEFINING ENGINES   ###


triax=TriaxialStressController(
        thickness = 0,
        stressMask = 7,
        internalCompaction=True, 
)

newton=NewtonIntegrator(damping=damp)

O.engines=[
        ForceResetter(),
        InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
        InteractionLoop(
                [Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()],
                
[Ip2_FrictMat_FrictMat_FrictPhys(),Ip2_JCFpmMat_JCFpmMat_JCFpmPhys(cohesiveTresholdIteration=0,
 label='JCFpm')],
                
[Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM(smoothJoint=False,neverErase=True,
 recordCracks=True ),Law2_ScGeom_FrictPhys_CundallStrack()]
        ),
        
GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.6,defaultDt=0.5*utils.PWaveTimeStep()),
        triax,
     
        newton,
]

Gl1_Sphere.stripes=0
if nRead==0: yade.qt.Controller(), yade.qt.View()


###   APPLYING CONFINING PRESSURE   ###


triax.goal1=triax.goal2=triax.goal3=confiningP

while 1:
  O.run(2000, True)
  unb=unbalancedForce()
  print ('unbalanced force:',unb,' mean stress: ',triax.meanStress)
  if unb<stabilityThreshold and 
abs((confiningP-triax.meanStress)/(-confiningP))<0.001:
    break


###   REACHING A SPECIFIED POROSITY PRECISELY   ###


import sys 

while triax.porosity>targetPorosity:
        compFricDegree = 0.95*compFricDegree
        setContactFriction(radians(compFricDegree))
        print ("\r Friction: ",compFricDegree," porosity:",triax.porosity,)
        sys.stdout.flush()
        
        O.run(500,1)
export.textExt('densepacking.spheres','x_y_z_r')
 
 for JCFpm cohesion , i run it directly in the below script that every new 
contact should be cohesive

from yade import pack, export, ymport 
import numpy as np



nRead=readParamsFromTable(
        num_spheres=1000,# number of spheres
        compFricDegree = 25, 
        key='_triax_base_'
        unknownOk=True
)
from yade.params import table

num_spheres=table.num_spheres
key=table.key
targetPorosity = 0.46
compFricDegree = table.compFricDegree 
finalFricDegree = 25 
rate=-0.02 # loading rate (strain rate)
damp=0.2 # damping coefficient
stabilityThreshold=0.01 
young=150e9 
mn,mx=Vector3(0,0,0),Vector3(1,1,1)
confiningP=-10e6
cohesion=50e6
poisson=0.2
sigmaT=40e6
density=2650
intRadius=1.25


O.materials.append(JCFpmMat(young=young,poisson=0.5,frictionAngle=0,density=0,label='walls',cohesion=0,tensileStrength=0))
O.materials.append(JCFpmMat(young=young, cohesion=cohesion, density=density, 
frictionAngle=radians(finalFricDegree), tensileStrength=sigmaT, 
poisson=poisson, label='spheres'))

walls=aabbWalls([mn,mx],thickness=0,material='walls')
wallIds=O.bodies.append(walls)

pack = O.bodies.append(ymport.textExt('densepacking.spheres',
'x_y_z_r',color=(0,0.2,0.7), material='spheres'))


###   DEFINING ENGINES   ###


triax=TriaxialStressController(
        
        thickness = 0,
        
        stressMask = 7,
        internalCompaction=True, # If true the confining pressure is generated 
by growing particles
)

newton=NewtonIntegrator(damping=damp)
O.engines=[
        ForceResetter(),
        
InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=intRadius),Bo1_Box_Aabb()]),
        InteractionLoop(
            
[Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=intRadius),Ig2_Box_Sphere_ScGeom()],
            [Ip2_JCFpmMat_JCFpmMat_JCFpmPhys(cohesiveTresholdIteration=-1, 
label='JCFPm')],
            
[Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM(recordCracks=True,smoothJoint=False,neverErase=True,
 
recordMoments=True,Key=identifier+'/output.txt',label='interactionLaw'),Law2_ScGeom_FrictPhys_CundallStrack()]
 ),
        
GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.6,defaultDt=0.5*utils.PWaveTimeStep()),
        triax,
      
        newton,                                                                 
                                                                                
                                     

]


Gl1_Sphere.stripes=0
if nRead==0: yade.qt.Controller(), yade.qt.View()

###   APPLYING CONFINING PRESSURE   ###

triax.goal1=triax.goal2=triax.goal3=confiningP

while 1:
  O.run(2000, True)

  unb=unbalancedForce()
  print ('unbalanced force:',unb,' mean stress: ',triax.meanStress)
  if unb<stabilityThreshold and 
abs(confiningP-triax.meanStress)/(-confiningP)<0.001:
    break


###   REACHING A SPECIFIED POROSITY PRECISELY   ###

import sys
while triax.porosity>targetPorosity:
        
        compFricDegree = 0.95*compFricDegree
        setContactFriction(radians(compFricDegree))
        print ("\r Friction: ",compFricDegree," porosity:",triax.porosity,)
        sys.stdout.flush()
        O.run(500,1)

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

_______________________________________________
Mailing list: https://launchpad.net/~yade-users
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp

Reply via email to