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

Jan Stránský proposed the following answer:
MWE atttached below.

Bodies:
======
to change body stiffness, assign new material.
(In general) do not do b.mat.young=newValue, since b.mat is (usually) shared 
among more particles and you would change young to them, too.

Interactions:
==========
Changing material has no effect on existing interactions.
One approach is to delete / erase existing interactions (completely or just 
those belonging to relevant particles). New interactions are created the very 
next step, reflecting new material.

This approach is not sufficient if you need "interaction history" (e.g. 
concerning friction).
Then you can use another approach - access interactions and change the values 
directly:
###
for i in body.intrs:
    i.phys.kn = newValue
###

MWE:
=====
####
mat1 = FrictMat(young=1)
mat2 = FrictMat(young=2)
spheres = s1,s2,s3,s4 = [sphere((x,0,0),.75,fixed=True,material=mat1) for x in 
(1,2,3,4)]

O.bodies.append(spheres)
O.engines = [
    ForceResetter(),
    InsertionSortCollider([Bo1_Sphere_Aabb()]),
    InteractionLoop(
        [Ig2_Sphere_Sphere_ScGeom()],
        [Ip2_FrictMat_FrictMat_FrictPhys()],
        [Law2_ScGeom_FrictPhys_CundallStrack()]
    ),
    NewtonIntegrator(),
]
O.dt = 0

def printInfo():
    print("=============")
    print("step",O.iter)
    for i,body in enumerate(O.bodies):
        print("body",i,"young",body.mat.young)
    for i,intr in enumerate(O.interactions):
        print("interaction",intr.id1,intr.id2,"kn",intr.phys.kn)

O.step()
printInfo()

selectedSpheres = (s3,s4)
for body in selectedSpheres:
    body.mat = mat2
    for intr in body.intrs():
        O.interactions.erase(intr.id1,intr.id2)

O.step()
printInfo()
####

Cheers
Jan

-- 
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