New question #706182 on Yade:
https://answers.launchpad.net/yade/+question/706182

I am using the following code from the examples to model cube deposition in a 
box, but i am not able to visualize it or export it to vtk.
This is my code:

# -*- encoding=utf-8 -*-
# 2022 © Vasileios Angelidakis <vasileios.angelida...@ncl.ac.uk>

# Duplicate script of cubePBscaled.py, simplified using the "potential_utils" 
module.

from yade import pack, 
from potential_utils import * 
import math

recordVTK=True
# 
----------------------------------------------------------------------------------------------------------------------------
if recordVTK:
        # Create vtk directory
        import os
        import errno
        try:
                os.mkdir('./vtk/')
        except OSError as exc:
                if exc.errno != errno.EEXIST:
                        raise
                pass


O.engines=[
        ForceResetter(),
        InsertionSortCollider([PotentialBlock2AABB()],verletDist=0.01),
        InteractionLoop(
                [Ig2_PB_PB_ScGeom(twoDimension=False, unitWidth2D=1.0, 
calContactArea=True)],
                [Ip2_FrictMat_FrictMat_KnKsPBPhys(kn_i=1e8, ks_i=1e7, 
Knormal=1e8, Kshear=1e7, useFaceProperties=False, viscousDamping=0.2)],
                [Law2_SCG_KnKsPBPhys_KnKsPBLaw(label='law',neverErase=False, 
allowViscousAttraction=True, traceEnergy=False)]
        ),
        
NewtonIntegrator(damping=0.0,exactAsphericalRot=True,gravity=[0,-9.81,0]),
    # save data for Paraview
    VTKRecorder(fileName='3d-vtk-', recorders=['all'], iterPeriod=1000),
]

powderDensity = 2000
meanSize = 1.0
distanceToCentre = meanSize/2.
wallThickness = 0.5*meanSize

O.materials.append(FrictMat(young=-1,poisson=-1,frictionAngle=radians(0.0),density=powderDensity,label='frictionless'))
 #The normal and shear stifness values are determined in the IPhys functor, 
thus the young, poisson parameters of the FrictMat are not used.
lengthOfBase = 9.0*meanSize
heightOfBase = 14.0*meanSize
sp=pack.SpherePack()
mn,mx=Vector3(-0.5*(lengthOfBase-wallThickness),0.5*meanSize,-0.5*(lengthOfBase-wallThickness)),Vector3(0.5*(lengthOfBase-wallThickness),7.0*heightOfBase,0.5*(lengthOfBase-wallThickness))
R=sqrt(3.0)*distanceToCentre
sp.makeCloud(mn,mx,R,0,100,False)


r=0.01*meanSize
for s in sp:
        color=Vector3(random.random(),random.random(),random.random())
        # PB_utils.cuboid
        b=cuboid(material=O.materials['frictionless'], edges=[1.0,1.0,1.0], 
r=r, R=0.0, center=s[0], mask=1, isBoundary=False, fixed=False, color=color)
        b.state.ori = 
Quaternion((random.random(),random.random(),random.random()),random.random()) 
#s[2]
        O.bodies.append(b)

#Bottom faces of the box
r=0.1*wallThickness
color=[0,0.5,1]


# Centroids of particles forming the bottom face of the box
center= [[               0,   0,                 0],
         [-lengthOfBase/3.0,  0,                 0],
         [ lengthOfBase/3.0,  0,                 0],

         [                0,  0, -lengthOfBase/3.0],
         [-lengthOfBase/3.0,  0, -lengthOfBase/3.0],
         [ lengthOfBase/3.0,  0, -lengthOfBase/3.0],

         [                0,  0,  lengthOfBase/3.0],
         [-lengthOfBase/3.0,  0,  lengthOfBase/3.0],
         [ lengthOfBase/3.0,  0,  lengthOfBase/3.0]
        ]


edges=[lengthOfBase/3.,wallThickness,lengthOfBase/3.]

lidID=len(O.bodies)
for i in range(0,9):
        O.bodies.append( cuboid(material=O.materials['frictionless'], 
edges=edges, r=r, R=0.0, center=center[i], mask=3, isBoundary=True, fixed=True, 
color=color) )


# Vertical faces A-B-C-D of the box
center= [ [               0,    0.5*heightOfBase,        0.5*lengthOfBase],
          [               0,    0.5*heightOfBase,       -0.5*lengthOfBase],
          [ 0.5*lengthOfBase,   0.5*heightOfBase,                       0],
          [-0.5*lengthOfBase,   0.5*heightOfBase,                       0]
        ]


edges=  [ [ lengthOfBase,  heightOfBase,  wallThickness],
          [ lengthOfBase,  heightOfBase,  wallThickness],
          [wallThickness,  heightOfBase,   lengthOfBase],
          [wallThickness,  heightOfBase,   lengthOfBase]
        ]

transparentID=len(O.bodies)
for i in range(0,4):
        O.bodies.append( cuboid(material=O.materials['frictionless'], 
edges=edges[i], r=r, R=0.0, center=center[i], mask=3, isBoundary=True, 
fixed=True, color=color) )
O.bodies[transparentID].shape.wire=True


escapeNo=0
def myAddPlotData():
        global escapeNo
        global wallThickness
        global meanSize
        uf=utils.unbalancedForce()
        if isnan(uf):
                uf = 1.0
        KE = utils.kineticEnergy()

        for b in O.bodies:
                if b.state.pos[1] < -5.0*meanSize and 
len(b.state.blockedDOFs)==0: #i.e. fixed==False
                        escapeNo = escapeNo+1
                        O.bodies.erase(b.id)
        if O.iter>15000:
                removeLid()
        
plot.addData(timeStep1=O.iter,timeStep2=O.iter,timeStep3=O.iter,timeStep4=O.iter,time=O.time,unbalancedForce=uf,kineticEn=KE,outsideNo=escapeNo)


from yade import plot
plot.plots={'timeStep1':('unbalancedForce'),'timeStep2':('kineticEn'),'time':('outsideNo')}
#plot.plot() #Uncomment to view plots
O.engines=O.engines+[PyRunner(iterPeriod=10,command='myAddPlotData()')]

def removeLid():
        global lidID    
        if (O.bodies[lidID]):
                O.bodies.erase(lidID)   

O.dt = 0.2*sqrt(0.3*O.bodies[0].state.mass/1.0e8)


# 
----------------------------------------------------------------------------------------------------------------------------
if recordVTK:
        # Take snapshots
#       
O.engines=O.engines+[SnapshotEngine(iterPeriod=100,fileBase='vtk/jenga-',firstIterRun=10,label='snapshooter')]

        # Export VTK results
        from yade import export
        vtkExporter = export.VTKExporter('./vtk/cubePBscaled')

        def vtkExport():
                vtkExporter.exportPotentialBlocks(what=dict(n='b.id'))

        O.engines=O.engines+[PyRunner(iterPeriod=500,command='vtkExport()')]


from yade import qt
qt.Controller()
v=qt.View()

O.saveTmp()



thank you!

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