yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #09145
Re: [Question #245254]: Update interaction and material parameters during the simlulation process
Question #245254 on Yade changed:
https://answers.launchpad.net/yade/+question/245254
Jan Stránský proposed the following answer:
Hi Henry,
IPyhys of your interactions are of type CohFrictPhys, as defined in
O.engines. However, CohFrictPhys does not have any of the parameters you
try to assign (normalCohesion, shearCohesion, frictionAngle), see [1]. So
nothing is changed.
The change of material parameters will have effect only for newly created
interactions.
cheers
Jan
[1] https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.CohFrictPhys
2014-03-10 16:06 GMT+01:00 Henry <question245254@xxxxxxxxxxxxxxxxxxxxx>:
> Question #245254 on Yade changed:
> https://answers.launchpad.net/yade/+question/245254
>
> Henry posted a new comment:
> Thanks to Jan.
> Follows is a part of my script. I want to change the material paramteres
> during the simulation. But I found there is no change whether use the
> function of 'Par_Change() or not .
>
> The script:
>
>
> SoilMat=O.materials.append(CohFrictMat(young=Young_Soil,poisson=0.2,density=den,frictionAngle=Frict_0,normalCohesion=Coh_0,shearCohesion=0.1*Coh_0,isCohesive=True,momentRotationLaw=True,etaRoll=0.1,label='soil'))
>
> #def sphereMat(): return
> JCFpmMat(type=1,young=5.0e11,frictionAngle=Frict_0,density=3000) ## Rq:
> density needs to be adapted as porosity of real rock is different to
> granular assembly due to difference in porosity
> (utils.sumForces(baseBodies,(0,1,0))/(Z*X) should be equal to Gamma*g*h
> with h=Y, g=9.82 and Gamma=2700 kg/m3
>
> O.bodies.append(ymport.text(packing+'.spheres',scale=1.0,shift=Vector3(0,0,0),material=SoilMat))
>
> O.engines=[
>
> ForceResetter(),
>
> InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=interactionRadius,label='is2aabb'),Bo1_Box_Aabb()]),
> InteractionLoop(
>
> [Ig2_Sphere_Sphere_ScGeom6D(interactionDetectionFactor=interactionRadius,label='ss2d3dg'),Ig2_Box_Sphere_ScGeom6D()],#Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=interactionRadius,label='ss2d3dg'),Ig2_Box_Sphere_ScGeom()],
> [Ip2_FrictMat_FrictMat_FrictPhys(),
>
> Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(label='cohesiveIp')],#setCohesionNow=False,setCohesionOnNewContacts=False,
>
> [Law2_ScGeom_FrictPhys_CundallStrack(),Law2_ScGeom6D_CohFrictPhys_CohesionMoment(
> useIncrementalForm=True, #useIncrementalForm is
> turned on as we want plasticity on the contact moments
> always_use_moment_law=True, #if we want "rolling"
> friction even if the contact is not cohesive (or cohesion is broken), we
> will have to turn this true somewhere
> label='cohesiveLaw')]
> ),
>
> GlobalStiffnessTimeStepper(timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8,defaultDt=O.dt),
> PyRunner(iterPeriod=1000,initRun=True,command='Par_Change()'),
> NewtonIntegrator(damping=0.5,gravity=(0.,-9.82,0.),label='Grav'),
>
> ]
>
>
> def Par_Change():
> global Fos_Step,Coh_0,Frict_0
> global Fos,D_step
> if O.iter>Fos_Step:# and utils.unbalancedForce()<0.1:
> Fos=Fos+0.05
> Fos_Step=D_step+O.iter
> Fri_Fos=math.atan(math.tan(Frict_0)/Fos)
> # here we modify the material and interaction physics
> for b in O.bodies:
> if b.material.id==0:
> b.mat.frictionAngle=Fri_Fos
> b.mat.normalCohesion=Coh_0/Fos
> b.mat.shearCohesion=0.1*Coh_0/Fos
> for i in O.interactions:
> if O.bodies[i.id1].material.id==1 or O.bodies[i.id2].
> material.id==1:
> i.phys.normalCohesion=0.0
> i.phys.shearCohesion=0.0
> i.phys.frictionAngle=0.0
> else:
> i.phys.normalCohesion=Coh_0/Fos
> i.phys.shearCohesion=0.1*Coh_0/Fos
> i.phys.frictionAngle=Fri_Fos
>
> Thanks a lot!
> Henry
>
> --
> You received this question notification because you are a member of
> yade-users, which 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 you are a member of
yade-users, which is an answer contact for Yade.