Question #698303 on Yade changed: https://answers.launchpad.net/yade/+question/698303
Robert Caulk proposed the following answer: Have you tried decreasing your target porosity? Le mar. 10 août 2021 à 13:46, ibraheem khan < [email protected]> a écrit : > 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 > -- 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

