yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #26018
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.