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

    Status: Answered => Open

Yuri Bezmenov is still having a problem:
Hi Jan, 
I modify the code to use VTKExporter but cannot visualize the force at each 
grid element.  For interaction, I created two matrices, one has the ids of 
balls and the other with grid-connection to the ball id. In first case that is 
the matrix b, I an able to export interaction but they have constant value over 
the simulation. In second case, it shows an error "interaction does not exist". 
Could you please help me out. 
Thank You 

MWE:
from builtins import range
from yade import pack, geom, plot, export
from yade.gridpfacet import *
rate=-0.5 #1.66e-4
compFricDegree=30
finalFricDegree = 40
stabilityThreshold = 0.1
young = 5e6
mn, mx = Vector3(0, 0, 0), Vector3(0.9, 0.6, 0.6)
O.engines = [
        ForceResetter(),
        InsertionSortCollider([
                Bo1_Sphere_Aabb(),
                Bo1_GridConnection_Aabb(),
                Bo1_Facet_Aabb(), Bo1_Wall_Aabb()
        ]),
        InteractionLoop(
                [       Ig2_Sphere_Sphere_ScGeom(),
                        Ig2_Facet_Sphere_ScGeom(), Ig2_Wall_Sphere_ScGeom(), 
                        Ig2_Sphere_GridConnection_ScGridCoGeom(),
                        Ig2_GridNode_GridNode_GridNodeGeom6D(),
                        Ig2_GridConnection_GridConnection_GridCoGridCoGeom()], 
                [Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True, 
setCohesionOnNewContacts=True), Ip2_FrictMat_FrictMat_FrictPhys()], 
                [Law2_ScGeom_FrictPhys_CundallStrack(), 
Law2_ScGridCoGeom_FrictPhys_CundallStrack(), 
Law2_GridCoGridCoGeom_FrictPhys_CundallStrack(), 
                Law2_ScGeom6D_CohFrictPhys_CohesionMoment(),]
        ),
        GlobalStiffnessTimeStepper(timestepSafetyCoefficient=0.1, label='ts'),
        NewtonIntegrator(gravity=(0,-10,0), damping=.5, label='newton'),
        PyRunner(command='addPlotData()', iterPeriod=500),
        PyRunner(command='expo()', iterPeriod=500),
        VTKRecorder(fileName='/files/Geogrid/paraview/pullout', 
recorders=['all'], iterPeriod=500),
]
def addPlotData():
        plot.addData(
                unbalanced=unbalancedForce(), 
                i=O.iter
        )
plot.plots = {
        'i':('unbalanced'),
}
plot.plot()
O.materials.append(FrictMat(young=young, poisson=0.5, 
frictionAngle=radians(compFricDegree), density=2600, label='spheres'))
O.materials.append(FrictMat(young=young, poisson=0.5, frictionAngle=0, 
density=0, label='walls'))
O.materials.append(CohFrictMat(young=1.325e8, poisson=0.40, density=900, 
frictionAngle=radians(10), normalCohesion=1.1e8, shearCohesion=1.1e8, 
momentRotationLaw=True, label='spheremat'))
L = 0.608  #length [m]
l = 0.304  #width [m]
nbL = 16+1  #number of nodes for the length     [#]
nbl = 8+1  #number of nodes for the width       [#]
r = 0.008/2     # L / 100.  #radius
color = [255. / 255., 102. / 255., 0. / 255.]
nodesIds = []
for i in range(0, nbL):
        for j in range(0, nbl):
                nodesIds.append(O.bodies.append(gridNode([i*L/nbL, 0.3, 
0.15+j*l/nbl], r, wire=False, fixed=False, material='spheremat', color=color)))
a=[]
b=[]
#Create connection between the nodes
for i in range(0, len(nodesIds)):
        for j in range(i + 1, len(nodesIds)):
                dist = (O.bodies[i].state.pos-O.bodies[j].state.pos).norm()
                if (dist <= (L/nbL)*1.05):
                        O.bodies.append(gridConnection(i, j, r, color=color))
                        a=a+[(i,O.bodies[-1].id), (O.bodies[-1].id,j)]
                        b=b+[(i,j)]
O.bodies.append(geom.facetBox((.45, .5, .3), (.45, .5, .3), wallMask=55, 
material='walls'))
sp = pack.SpherePack()
sp.makeCloud((0, 0, 0), (0.9, 0.2, 0.6), rMean=.05, rRelFuzz=.3)
sp.makeCloud((0, 0.4, 0), (0.9, 0.6, 0.6), rMean=.05, rRelFuzz=.3)
O.bodies.append([sphere(center, rad, material='spheres') for center, rad in sp])
vtkExporter = export.VTKExporter('/files/Geogrid/paraview1/geogrid')
def expo():
        
vtkExporter.exportSpheres(what=dict(dist='b.state.pos.norm()',pos='b.state.pos'),
 ids=range(0,433)) 
        vtkExporter.exportInteractions(what=dict(kn='i.phys.kn', 
kr='i.phys.kr', ks='i.phys.ks'), ids=b)   ###Here I replace a and b 
        # vtkExporter.exportContactPoints(what={'nn': 'i.geom.normal'})
        # vtkExporter.exportPolyhedra(what=dict(n='b.state.pos.norm()'), 
ids=plate.id)
O.run(10000,True)
for i in range (0,nbl):
        O.bodies[i].state.blockedDOFs='x'
        O.bodies[i].state.vel = (rate,0,0)
O.run(15000,True)

-- 
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@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp

Reply via email to