← Back to team overview

yade-users team mailing list archive

Re: [Question #698303]: packing porosity for heat capacity scaling according to desired porosity of material

 

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 <
question698303@xxxxxxxxxxxxxxxxxxxxx> 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     : yade-users@xxxxxxxxxxxxxxxxxxx
> 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.