Phi (volume fraction) returned from getDepthProfiles were far too low

Asked by Kevin on 2020-05-19

Hey all,

At this point, I am perplexed to see volume fraction (phi) from getDepthProfile returned from each cell (10 cells total) so incredibly low (roughly 2%) when the simulation of the cylindrical model shows extensive compaction of the spheres and should be much higher. Here is a few snippets of code to show where the work process has gone. I believe that this has something to do with the direction or perhaps the void volume fraction? Maybe the ram motion (for compaction) triggers this anomaly?

Start of code:

from yade import ymport, plot, utils
import time
import numpy as np


utils.readParamsFromTable(descriptionIn = 'ram',
  frIn = 0.5, enIn=0.01, etIn=0.01, tcIn=0.0001, # Frictionangle (rad), strength-parameter
  rhoIn = 2300.0, # Density
  dumpVTKIn = 1000, # Periods of dumps
  ram_vel = 1E-1, ram_mov = 0.1E-3 # Ram Velocity and Distance

#Sweep Parameters using Table
from yade.params.table import *

import shutil

except OSError:

#Create Folder

folderNameBase = 'step2/' + str(descriptionIn)
folderName = folderNameBase

o = Omega()
o.dt = 0.05*1E-7

#Read in previous step

#remember start time
starttime = o.time #start time
stoptime = starttime+ram_mov/ram_vel #stop time

#Define Next Scene

#Build Geometry

o.engines = [
    NewtonIntegrator(damping=0.5,gravity=Vector3(0,-90.81,0), label='newt'),

   #Record output to VTK Files, Spheres,Interactions,Facets

        recorders=['spheres','velocity','colors','intr','ids','mask','materialId','stress'], label='VTK_sphere'),

#FIXME Snapshot Taker

# SnapshotEngine(iterPeriod=dumpVTKIn,fileBase=folderName+'/spheres-',viewNo=0,label='snapshooter'),

   #Execute Python Commands

#Enable Track Energy - Can be used to determine if sim is done

#Run Yade Simulation
#o.stopAtIter=2150001 #Maximum Iterations

def stop_condition():
    o.dt=0.5*utils.PWaveTimeStep() #auto timesetup
    print('iter,time,dt,iter/sec,phi=',o.iter,o.iter*o.dt,o.dt,o.speed,phiavg) #print to screen iteration number

def calcPhi():
    return np.mean(CN[0])

def addPlotData():

######Now this is the part of the code that I think may be why the phiPart returned is so low:

def addPlotPhi():
    #getDepthProfiles(double volume, int nCell, double dz, double zRef, bool activateCond, double radiusPy, int direction)
    phidata = np.column_stack((zarray, CN[0]))
    np.savetxt(fname, phidata, delimiter=',')


As for the parameters, they are listed in meters for inner and outer cylinder (outer_cylinder_radius=0.007m, inner_cylinder_radius=0.003m) with a height of 0.0015 m. I would like to have 10 cells (as seen in the addPlotPhi) and hopefully a realistic approximation of solid volume fraction. Thank you for any help!


Question information

English Edit question
Yade Edit question
No assignee Edit question
Last query:
Last reply:

Can you help with this problem?

Provide an answer of your own, or ask Kevin for more information if necessary.

To post a message you must log in.