tadded Zdisplacement component - sphere - GPU-based 3D discrete element method algorithm with optional fluid coupling
(HTM) git clone git://src.adamsgaard.dk/sphere
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) LICENSE
---
(DIR) commit 45015224a9aa5cdd2491c36a4d671a7d2972a877
(DIR) parent af3360fc4686a3ebc3423e44b148a4bcebdc9ec1
(HTM) Author: Anders Damsgaard <anders.damsgaard@geo.au.dk>
Date: Sun, 22 Jun 2014 09:11:05 +0200
added Zdisplacement component
Diffstat:
M doc/html/python_api.html | 2 +-
M doc/html/searchindex.js | 4 ++--
M doc/pdf/sphere.pdf | 0
M python/sphere.py | 47 ++++++++++++++++++-------------
M src/datatypes.h | 2 +-
M src/device.cu | 14 +++++++-------
M src/file_io.cpp | 12 +++++++-----
M src/integration.cuh | 21 ++++++++++++---------
M src/raytracer.cuh | 4 ++--
M src/sphere.cpp | 2 +-
M src/sphere.h | 2 +-
M tests/io_tests_fluid.py | 2 +-
12 files changed, 63 insertions(+), 49 deletions(-)
---
(DIR) diff --git a/doc/html/python_api.html b/doc/html/python_api.html
t@@ -328,7 +328,7 @@ are returned.</p>
<dl class="method">
<dt id="sphere.sim.addParticle">
-<tt class="descname">addParticle</tt><big>(</big><em>x</em>, <em>radius</em>, <em>xysum=array([ 0.</em>, <em>0.])</em>, <em>vel=array([ 0.</em>, <em>0.</em>, <em>0.])</em>, <em>fixvel=array([ 0.])</em>, <em>force=array([ 0.</em>, <em>0.</em>, <em>0.])</em>, <em>angpos=array([ 0.</em>, <em>0.</em>, <em>0.])</em>, <em>angvel=array([ 0.</em>, <em>0.</em>, <em>0.])</em>, <em>torque=array([ 0.</em>, <em>0.</em>, <em>0.])</em>, <em>es_dot=array([ 0.])</em>, <em>es=array([ 0.])</em>, <em>ev_dot=array([ 0.])</em>, <em>ev=array([ 0.])</em>, <em>p=array([ 0.])</em>, <em>color=0</em><big>)</big><a class="headerlink" href="#sphere.sim.addParticle" title="Permalink to this definition">¶</a></dt>
+<tt class="descname">addParticle</tt><big>(</big><em>x</em>, <em>radius</em>, <em>xyzsum=array([ 0.</em>, <em>0.</em>, <em>0.])</em>, <em>vel=array([ 0.</em>, <em>0.</em>, <em>0.])</em>, <em>fixvel=array([ 0.])</em>, <em>force=array([ 0.</em>, <em>0.</em>, <em>0.])</em>, <em>angpos=array([ 0.</em>, <em>0.</em>, <em>0.])</em>, <em>angvel=array([ 0.</em>, <em>0.</em>, <em>0.])</em>, <em>torque=array([ 0.</em>, <em>0.</em>, <em>0.])</em>, <em>es_dot=array([ 0.])</em>, <em>es=array([ 0.])</em>, <em>ev_dot=array([ 0.])</em>, <em>ev=array([ 0.])</em>, <em>p=array([ 0.])</em>, <em>color=0</em><big>)</big><a class="headerlink" href="#sphere.sim.addParticle" title="Permalink to this definition">¶</a></dt>
<dd><p>Add a single particle to the simulation object. The only required
parameters are the position (x) and the radius (radius).</p>
<table class="docutils field-list" frame="void" rules="none">
(DIR) diff --git a/doc/html/searchindex.js b/doc/html/searchindex.js
t@@ -1 +1 @@
-Search.setIndex({objects:{"":{sphere:[5,0,1,""]},sphere:{status:[5,1,1,""],convert:[5,1,1,""],run:[5,1,1,""],render:[5,1,1,""],thinsectionVideo:[5,1,1,""],torqueScriptParallel3:[5,1,1,""],V_sphere:[5,1,1,""],cleanup:[5,1,1,""],video:[5,1,1,""],sim:[5,3,1,""]},"sphere.sim":{setFluidTopFixedPressure:[5,2,1,""],totalFrictionalEnergy:[5,2,1,""],setTheta:[5,2,1,""],setTolerance:[5,2,1,""],generateBimodalRadii:[5,2,1,""],defaultParams:[5,2,1,""],initRandomGridPos:[5,2,1,""],porosity:[5,2,1,""],writebin:[5,2,1,""],momentum:[5,2,1,""],thinsection_x1x3:[5,2,1,""],largestMass:[5,2,1,""],readbin:[5,2,1,""],writeFluidVTK:[5,2,1,""],kineticEnergy:[5,2,1,""],defineWorldBoundaries:[5,2,1,""],uniaxialStrainRate:[5,2,1,""],readlast:[5,2,1,""],bond:[5,2,1,""],consolidate:[5,2,1,""],setDampingNormal:[5,2,1,""],energy:[5,2,1,""],disableFluidPressureModulation:[5,2,1,""],video:[5,2,1,""],initRandomPos:[5,2,1,""],writeVTKall:[5,2,1,""],frictionalEnergy:[5,2,1,""],smallestMass:[5,2,1,""],zeroKinematics:[5,2,1,""],visualize:[5,2,1,""],randomBondPairs:[5,2,1,""],setBeta:[5,2,1,""],setDEMstepsPerCFDstep:[5,2,1,""],run:[5,2,1,""],deleteParticle:[5,2,1,""],setGamma:[5,2,1,""],plotFluidVelocitiesZ:[5,2,1,""],plotFluidVelocitiesY:[5,2,1,""],forcechainsRose:[5,2,1,""],adjustUpperWall:[5,2,1,""],setFluidTopNoFlow:[5,2,1,""],viscousEnergy:[5,2,1,""],readsecond:[5,2,1,""],plotPrescribedFluidPressures:[5,2,1,""],forcechains:[5,2,1,""],render:[5,2,1,""],triaxial:[5,2,1,""],rotationalEnergy:[5,2,1,""],initGrid:[5,2,1,""],readfirst:[5,2,1,""],periodicBoundariesX:[5,2,1,""],sheardisp:[5,2,1,""],totalRotationalEnergy:[5,2,1,""],adjustWall:[5,2,1,""],setFluidPressureModulation:[5,2,1,""],initFluid:[5,2,1,""],volume:[5,2,1,""],normalBoundariesXY:[5,2,1,""],bulkPorosity:[5,2,1,""],setFluidBottomNoFlow:[5,2,1,""],createBondPair:[5,2,1,""],torqueScript:[5,2,1,""],generateRadii:[5,2,1,""],periodicBoundariesXY:[5,2,1,""],shearStrain:[5,2,1,""],deleteAllParticles:[5,2,1,""],shear:[5,2,1,""],initTemporal:[5,2,1,""],setMaxIterations:[5,2,1,""],initGridAndWorldsize:[5,2,1,""],totalMomentum:[5,2,1,""],shearVel:[5,2,1,""],porosities:[5,2,1,""],readstep:[5,2,1,""],acceleration:[5,2,1,""],plotFluidDiffAdvPresZ:[5,2,1,""],writeVTK:[5,2,1,""],bondsRose:[5,2,1,""],cleanup:[5,2,1,""],addParticle:[5,2,1,""],setFluidBottomFixedPressure:[5,2,1,""],currentNormalStress:[5,2,1,""],plotConvergence:[5,2,1,""],status:[5,2,1,""],voidRatio:[5,2,1,""],momentOfInertia:[5,2,1,""],totalViscousEnergy:[5,2,1,""],setDampingTangential:[5,2,1,""],totalKineticEnergy:[5,2,1,""],initGridPos:[5,2,1,""],plotFluidPressuresY:[5,2,1,""],plotFluidPressuresZ:[5,2,1,""],mass:[5,2,1,""],contactModel:[5,2,1,""]}},terms:{prefix:3,whose:[],s_law:[],"const":3,under:[1,0,5],everi:2,"void":[3,5],readbin:[3,5],scalar:[3,2,5],vector:[3,2,4,5],bulkporos:5,p_f:5,seper:3,direct:[4,5],second:[3,2,4,5],even:[3,4],supervis:0,hide:5,neg:[2,4,5],lundbek:0,"new":[2,4,5],net:3,topolog:3,abov:[1,2,4,5],here:2,path:[1,5],interpret:1,dry:[3,5],initgridandworlds:5,precis:[3,5],linearli:[2,5],releas:1,instabl:5,total:[3,2,4,5],univ:[],unit:1,plot:5,describ:[2,4],initfluid:5,call:[3,5],recommend:5,type:[1,3,4,5],relax:5,successful:1,relat:3,warn:5,exce:[2,5],must:5,setup:[1,5],work:[1,0,5],setfluidtopnoflow:5,coalesc:3,root:[1,3,5],unnam:5,kinet:[4,5],give:3,img_width:3,indic:0,want:2,readstep:5,david:0,unsign:3,setdemstepspercfdstep:5,end:[3,2,5],mu_w:5,travel:3,mu_r:5,how:[3,5],env:5,place:[1,3,5],mu_d:5,updat:[1,0,2,3],after:[1,3,2,5],befor:[3,5],wrong:[],mesh:5,law:[3,2,4],parallel:[1,2,5],averag:[2,5],third:[0,2,5],maintain:1,environ:1,incorpor:2,enter:2,exclus:5,order:[1,3,2,4,5],oper:[1,0,2,3],over:4,visc_n_rat:5,pascal:5,flexibl:[1,2],totalviscousenergi:5,img:[],fix:5,welcome_:[],fig:3,hidden:[],shear:[2,5],them:5,anim:5,thei:[3,2],choic:[],include_cod:[],arrow:5,each:[3,2,4,5],angvel:[3,5],side:[2,5],mean:[1,2,5],pdflatex:1,logn:5,euler_method:[],network:4,gradient:[2,5],content:0,rewrit:2,gov:[],linear:[2,4,5],slipscal:5,situat:2,free:[1,2],standard:5,configuraion:3,angl:5,filter:5,isn:[2,5],rang:[2,5],render:[1,3,5],restrict:1,hook:[],instruct:1,thick:5,sort_by_kei:3,advect:[2,5],top:[2,5],evolut:[3,5],name:5,addparticl:5,tool:1,lower:[3,5],max_val:5,somewhat:[4,5],conserv:[2,5],target:[3,5],provid:1,zero:[3,2,4,5],project:[0,2,5],matter:4,rad:5,setfluidpressuremodul:5,xdisp:[3,5],ram:3,rai:[1,5],raw:4,seed:4,increment:4,ldot:3,latter:4,blue:5,though:[3,4],object:[1,5],regular:5,phase:[2,5],prematur:5,don:3,doc:1,flow:[1,0,2,5],vector_norm:[],section:[3,2,4,5],dot:4,radix:3,opposit:2,random:[3,5],radiu:[2,4,5],radii:5,pkg:1,involv:3,consolid:5,layout:3,menu:5,explain:[3,0],configur:[1,3,5],settheta:5,folder:[1,3,5],loopstart:3,stop:5,fluid:[0,2,4,5],symmetr:2,bar:5,cuda_sdk_root_dir:1,"public":[1,3],mu_:5,datatyp:3,result:[1,3,2,4,5],elasto:5,deleteallparticl:5,fail:[],best:[1,5],tensor:2,wikipedia:5,figur:3,simplest:4,angpo:[3,5],approach:2,attribut:2,extend:[],cfdem:[],toler:[2,5],subfold:3,howev:[3,4],kineticenergi:5,against:5,uni:5,seri:3,com:[1,3,5],cell_cent:5,height:5,guid:[3,0],assum:[2,5],gamma_n:5,numpi:[1,5],three:[1,3,2,4,5],been:[4,5],spherebin:5,interest:[0,5],gamma_t:5,gamma_r:5,suppress:3,gidaspow:2,emploi:3,ident:2,cudamemcheck:5,plotconverg:5,gnu:[1,3],properti:[1,2,5],setfluidtopfixedpressur:5,aim:[1,0],euclidean:[],calcul:[3,2,4,5],seven:2,conv:5,tabl:0,toolkit:1,shami:2,sever:[3,5],perform:[1,3,5],make:[1,3,5],transpar:5,complex:[],split:[0,2],dimensionless:2,complet:5,hang:5,hand:[3,2,4],kin:5,"0e3f":3,thu:3,contact:[3,0,2,4,5],thi:[0,1,2,3,4,5],left:5,identifi:[3,4,5],savefig:5,newton:[3,2,4],yet:4,previous:[2,5],expos:1,character:[2,4],save:5,applic:[3,5],dissip:[4,5],mennu:5,background:[3,2],maxval:3,specif:[1,3],initcuda:3,www:[],right:[2,5],old:[2,5],deal:2,interv:[3,5],maxim:[2,5],intern:[1,3],maxit:5,raytrac:[3,5],txt:[1,5],bottom:2,normal:[3,2,4,5],z_slice:3,condit:[1,0,2,5],core:[],bold:4,torquescriptparallel3:5,post:[4,5],zerokinemat:5,unfortun:1,coars:5,produc:5,step_count:5,"float":[3,5],bound:5,ppm:5,readfirst:5,wrap:3,neumann:[2,5],git:1,wai:[1,3,5],gridnum:5,frictionalenergi:5,support:1,avail:1,width:[2,5],fraction:[2,5],analysi:[1,5],medium:2,form:[3,2,4],forc:[3,2,4,5],epsilon:5,setbeta:5,berg:4,"true":5,again:1,bugfix:1,maximum:5,url:3,inaccur:4,fermi:1,fundament:4,plotfluiddiffadvpresz:5,featur:4,"abstract":[],diagnost:[3,5],exist:3,ship:1,check:[1,3,5],excel:1,test:1,totalkineticenergi:5,roll:5,node:[2,5],intend:5,intent:3,consid:[2,5],stoke:[0,2],spherealgo:3,faster:5,coulomb:4,chrono:[],geometr:4,xysum:5,backward:2,mathrm:3,concept:2,sandia:[],global:3,plotprescribedfluidpressur:5,signific:5,adjustwal:5,computation:4,rot:5,row:[],depend:[1,3,2],graph:3,vec:[],text:5,vel:[3,5],sourc:[1,3],string:3,solver:[2,5],iter:[2,5],mu_wn:5,item:3,sine:5,targetbin:5,calcparticlecellid:3,upper:5,slower:5,trend:5,sign:2,corner:5,appear:5,uniform:5,current:[3,2,5],boost:3,deriv:[0,2,4],gener:[1,4,5],coeffici:[2,4,5],water:5,explicitli:5,address:5,along:[4,5],sphere_:3,toolbar:5,box:5,shift:5,avconv:1,queue:5,poisson:[2,5],modul:[1,0,5],gamma_dot:5,volumetr:[2,5],instal:[1,0],memorytyp:3,memori:[3,5],univers:0,live:1,bondpot:5,scope:3,reorder:3,writevtkal:5,finit:2,damsgaard:[1,0,4],visual:[1,3,5],appendix:3,rigid:[],templat:[],setdampingnorm:5,graphic:1,can:[1,3,2,4,5],capillarycohes:5,transferconstmem:3,purpos:[1,5],obj1:5,stream:3,predict:[2,5],reynold:2,critic:5,simul:[0,1,2,3,4,5],alwai:3,differenti:2,write:[3,5],criterion:4,minpo:3,map:[],contact_mechan:[],arrowscal:5,max:5,clone:1,mac:1,devsmod:5,date:1,data:[1,3,5],stress:[2,5],liquid:4,repuls:[],explicit:2,inform:[1,3,5],setgamma:5,combin:5,block:3,superscript:[],findoverlap:3,dynam:[0,1,2,3,4,5],entiti:4,vti:5,vtk:[1,5],platform:1,window:5,vtu:5,mail:5,main:[1,3,5],non:[1,3,4,5],initi:[1,3,5],half:2,now:[3,4],introduct:[1,0,4],term:2,workload:3,plung:5,realist:[4,5],separ:4,initgridpo:5,compil:[1,3],domain:5,replac:1,individu:[3,2],continu:[3,2],significantli:5,createbondpair:5,shown:5,space:[2,5],lagrangian:2,profil:3,correct:[2,4],theori:0,org:[],"___":1,torqu:[3,4,5],prescrib:[2,5],frequenc:5,graphics_fold:5,pageref:3,synchron:3,motion:[3,4],initrandompo:5,neglect:2,first:[2,5],origin:[2,4,5],arrai:[3,5],open:[3,5],angular:5,size:5,given:2,z_adjust:5,conservation_of_energi:[],circl:5,viscousenergi:5,copi:1,specifi:[1,5],rotationalenergi:5,video_format:5,than:[2,5],png:5,wide:4,posit:[2,4,5],wvel:5,browser:5,pre:[3,5],ani:5,slam:5,slab:5,engin:[],hydrostat:5,bulletphys:[],note:[1,3,2,4,5],ideal:5,take:[1,2],begin:[3,5],sure:[1,5],trace:5,ev_dot:5,multipli:5,beta:5,uniaxialstrainr:5,pair:[2,4,5],later:2,lower_cutoff:[3,5],typeset:1,runtim:1,readjust:5,axi:5,cmakelist:1,totalfrictionalenergi:5,viscou:[2,4,5],viscos:[2,4,5],show:[3,5],friction:[4,5],dphi:5,rotat:[3,4,5],onli:[2,4,5],slow:3,ratio:[2,5],written:[1,3,5],analyz:5,"440e":5,offici:0,get:[1,3],kinemat:5,cannot:[1,3,2],settoler:5,theta:5,geo:[0,5],requir:[1,0,5,3],v_f:5,yield:3,across:2,where:[1,3,2,4,5],wiki:[],kernel:3,momentofinertia:5,infinit:5,writensarrai:3,label:3,between:[2,5],"import":[3,2,5],disablefluidpressuremodul:5,assumpt:2,screen:5,fit:5,reorderarrai:3,quiet:3,nearbi:2,leightest:5,mani:[],acceler:[2,4,5],color:[3,5],pot:5,period:[2,5],ultim:1,breath:1,checkval:3,thousand:[],resolut:5,ndvector:[],former:4,"case":[1,3,2],invok:[1,3,5],margin:5,stdout:3,soil:4,equal:[3,2,5],cluster:5,img_height:3,egholm:0,subglaci:1,develop:[1,0],author:0,alphabet:5,same:5,binari:[1,3,5],html:1,lammp:[],document:[1,0,5,3],closest:5,kelvin:4,driver:1,driven:4,capabl:1,foat:5,improv:3,extern:5,model:[3,0,2,4,5],dimension:[1,3,2,4],execut:[1,3,5],when:[4,5],touch:[],speed:3,rose:5,except:3,param:5,blog:4,rescal:5,momentum:[2,5],real:4,read:[1,3,5],psd:5,grid:[3,2,4,5],voigt:4,world:5,findcuda:1,cdot:3,either:[3,2,4,5],initgrid:5,output:[1,3,5],downward:5,inter:[4,5],manag:5,fulfil:5,qfermi:5,hydraul:5,slice:5,cudapath:5,definit:3,evolv:[],exit:[3,2,5],readlast:5,refer:3,inspect:1,starttim:3,found:[1,3,2,4,5],src:[1,3],central:2,greatli:3,gplv3:1,degre:[3,5],cuda:[1,3,2,5],neighbor:[3,2,5],act:5,industri:4,bond:5,routin:1,effici:4,paraview:5,hideinputfil:5,log:5,area:[],aren:2,start:[1,3,5],interfac:[4,5],low:5,gravit:[2,5],generateradii:5,newtonian:2,regard:4,diffus:5,satur:2,longer:4,pull:1,bullet:[],inputbin:3,"default":[3,4,5],k_r:5,k_t:5,k_n:5,taylor:3,creat:[1,5],checkvalu:3,setdampingtangenti:5,file:[1,3,5],rearrang:4,denot:[2,4,5],collid:5,googl:3,orient:[4,5],field:5,defaultparam:5,cleanup:5,collis:[3,5],spatial:[3,2,5],magnutud:[],you:1,architectur:[1,3],sequenc:3,symbol:[1,4],time:[1,3,2,4,5],directori:[1,5],descript:3,lmgc:[],mass:[3,2,4,5],potenti:5,cpp:3,delta_n_ij:3,cpu:[3,2],disp:5,represent:5,all:[0,1,2,3,4,5],mp4:5,disc:[],abil:2,cundal:4,follow:[1,3,2,4,5],disk:5,chain:5,opensourcedem:[],totalmomentum:5,program:[3,5],introduc:[2,5],sound:3,fals:5,capillari:5,verb:3,mechan:4,veri:4,dampen:5,list:[1,3,5],inittempor:[3,5],sand:4,adjust:[2,5],small:[3,4,5],dimens:5,shearrat:5,tex:1,rate:[2,5],pressur:[2,5],pass:[3,4],excit:[],sum:[2,4,5],abl:5,delet:5,version:[1,3,2,5],intersect:[2,5],method:[0,1,2,3,4,5],movement:[3,5],hasn:4,full:[1,3,5],hash:3,visc_n:5,variat:2,modifi:[1,2],valu:[1,3,2,4,5],search:[3,0,4],prior:5,amount:5,magnitud:[2,5],diamet:[2,5],via:3,depart:0,filenam:[3,5],select:5,qscale:5,distinct:5,liber:3,two:[2,4,5],formul:[2,4],more:[1,3,4,5],desir:[4,5],setmaxiter:5,dictat:5,none:5,strain:[2,5],outlin:2,x1x3:5,histori:3,periodicboundariesx:5,remain:2,paragraph:3,dem:[1,3,4,5],gpu_gener:1,thinsectionvideo:5,loopend:3,sphere:[0,1,2,3,4,5],attain:2,hookean:4,divid:5,rather:3,anoth:5,divis:4,simpl:5,regener:5,gase:4,thrustfootnot:3,plane:[4,5],chronoengin:[],varianc:5,stabil:[3,5],lmgc90:[],github:1,img_out:5,caus:5,spheric:2,nvidia:[1,3],checkbox:5,help:[1,3],soon:1,through:[1,3,2,4,5],nobord:5,paramet:[3,2,4,5],geoscienc:0,segfault:5,jacobi:[2,5],"return":[3,5],food:4,complain:1,piotrowski:0,fulli:2,rheologi:2,procedur:[1,0,2],energi:[4,5],todo:3,event:3,molecular_dynam:[],print:[3,5],subsubsect:3,occurr:4,dvipng:1,focallength:3,reason:[2,5],base:[3,2,5],visco:[4,5],put:[2,5],maxpo:3,thread:3,launch:3,veloc:[2,4,5],aarhu:0,interact:[0,1,2,3,4,5],dont:3,exchang:2,number:[1,3,2,5],randombondpair:5,done:3,differ:[3,2,5],script:5,sheardisp:5,least:5,gpu:[1,3,2,5],molecular:4,idelsohn:2,store:[3,2,4,5],gamma_wt:5,option:[1,3,2,5],relationship:[3,2],part:[0,2],consult:3,std:3,scheme:4,contrari:4,ffmpeg:[1,5],gamma_wn:5,deviator:2,horizont:[2,5],reus:5,str:5,arrang:1,randomli:5,comput:[1,3,2,4,5],exert:5,p_mod_a:5,heaviest:5,beforehand:5,p_mod_f:5,deleteparticl:5,built:[1,5],voidratio:5,also:[3,4,5],build:[1,0],upper_cutoff:3,pipelin:5,ergun:2,distribut:[1,5],interpol:5,reach:[3,4],mixtur:2,most:[3,5],plan:1,rho:5,adjustupperwal:5,abnorm:5,reportvalu:3,session:5,find:[2,5],cell:[3,2,5],solut:[0,2,5],factor:5,writebin:[3,5],unus:3,palett:5,v_sphere:5,p_mod_phi:5,continuum:2,graphics_format:5,common:[1,3,2,4,5],origo:5,remov:5,arr:3,transfertoconstantmemori:3,decompos:[2,4],see:[1,3,4,5],float4:3,close:[],analog:5,float3:3,someth:[],won:5,experi:[3,4,5],altern:[1,5],imagemagick:[1,5],numer:[1,0,2,4,3],induc:2,isol:2,len:2,solv:2,inertia:5,popul:5,both:[3,4,5],last:5,alon:[3,2],tempor:[3,0,4,5],pdf:[1,5],point:[3,2,4,5],schedul:5,residu:[2,5],suppli:3,cudamemset:3,becom:2,damp:[4,5],devic:[1,3,5],due:[1,2,4,5],empti:3,modern:[],imag:5,coordin:5,understand:[1,4],func:5,tangenti:[4,5],look:1,solid:[2,4,5],durat:4,"while":[1,3,2,5],behavior:[1,4,5],error:[3,5],loos:5,loop:[3,5],pack:[],subsect:3,rightarrow:[],out_fold:5,belong:5,fixvel:5,shorter:5,latexpdf:1,higher:5,shearstrain:5,moment:5,temporari:5,user:1,chang:[1,3,2,5],recent:5,bondsros:5,task:[],darcyflow:3,"87e":5,velarrowscal:5,shape:2,contactmodel:5,langtangen:[2,5],"0e9":3,restructuredtext:1,theoret:[3,2],input:[1,3,5],subsequ:[1,5],triaxial:5,euler:[2,4],cuh:3,bin:[3,5],format:[1,3,5],big:5,insert:3,delta_n:[],characterist:3,zslice:5,semi:2,resolv:[3,4],collect:1,popular:[],encount:3,often:3,simplifi:2,spring:4,some:[1,4,5],back:5,emph:3,strongest:5,sampl:[1,0,5],scale:[2,5],per:[3,5],mathemat:4,larg:5,necessari:3,previou:[3,2],run:[1,3,5],perpendicular:2,step:[3,2,4,5],ndem:5,idx:5,reappear:2,materi:[1,2,4,5],incompress:2,readsecond:5,gamma:5,cutoff:[3,5],file1:3,within:[2,5],diff_adv:5,ensur:3,dev_:3,span:5,errno:[],question:[],fast:[3,2],custom:2,adjac:5,includ:[1,3,2,4,5],contactsearch:3,criteria:[2,5],translat:5,newer:1,delta:3,line:1,sdk:3,info:[],zhu:2,consist:4,normalboundariesxi:5,assemblag:1,"0xffffffff":3,highlight:4,similar:1,constant:[3,2,5],doesn:5,repres:2,"char":3,threedim:3,helper_math:1,cmake:1,gnuplot:5,draw:5,normal_stress:5,drag:2,amplitud:5,dram:3,setfluidbottomnoflow:5,algorithm:[3,5],depth:5,epslatex:5,celciu:5,code:[1,3,2,5],partial:2,edg:5,scratch:5,radius_mean:5,plotfluidvelocitiesi:5,send:5,granular:[1,3,2,4],plotfluidvelocitiesz:5,aris:[],gravel:4,sent:5,datafil:3,thinsection_x1x3:5,wave:[3,5],volum:[2,5],relev:0,walltim:5,stiff:[3,5],button:5,montp2:[],smaller:5,natur:4,cfd:5,printnsarrai:3,fold:5,video:5,click:5,append:3,compat:3,index:[0,4,5],compar:5,resembl:4,access:3,experiment:2,matplotlib:1,bodi:[2,4],lower_limit:5,setfluidbottomfixedpressur:5,vertic:5,sinc:[3,2],convert:[3,5],larger:[2,5],converg:5,cbmax:5,typic:[1,5],apx:3,torquescript:5,outformat:5,appli:[3,2,5],approxim:[2,5],apt:1,api:[1,0,5,3],from:[1,3,2,4,5],commun:2,doubl:3,isotrop:2,implic:5,few:[],asteroid:4,usr:5,chip:3,sort:[3,5],discrete_element_method:[],zhegal:2,use_workdir:5,annot:5,thin:5,control:[1,3,5],process:[1,0,5,3],sudo:1,high:[],slip:[2,5],writefluidvtk:5,generatebimodalradii:5,gcc:[1,3],programoutput:1,six:[2,5],subdirectori:1,instead:[1,3,5],sim:[3,5],frac:[],surfac:5,esysparticl:5,physic:[1,3,5],alloc:[3,5],essenti:1,bind:1,counter:3,correspond:[2,5],element:[1,0,4],issu:1,allow:[2,5],move:5,sourcecodevari:3,libav:1,r_larg:5,chosen:5,restrain:5,therefor:4,greater:[1,2],python:[1,0,5,3],sid:5,yade:[],dat:[3,5],mention:[1,2],front:5,subsubsec:3,spheredir:5,edit:5,kpa:5,mode:[3,5],tracer:[1,5],chorin:[2,5],"static":[4,5],subsec:3,fluctuat:5,variabl:[1,3],matrix:5,your:1,texliv:1,suitabl:5,rel:[3,2,4,5],inaccess:3,ref:3,red:5,forcechainsros:5,simulation_id:3,christensen:1,thrust:3,afterward:5,dirichlet:[2,5],could:2,timer:3,keep:[1,2],length:[3,4,5],enforc:2,navier:[0,2],geometri:[],retain:1,softwar:[1,0,3],qualiti:5,scene:1,mai:5,set:[1,3,2,4,5],"1e4":5,stencil:2,strict:1,unknown:2,licens:1,system:[1,3,2,5],messag:[3,5],initrandomgridpo:5,termin:3,"final":5,defineworldboundari:5,shell:[1,3],methodolog:2,exactli:[],bitrat:5,bed:1,charact:5,writeppm:3,kepler:1,have:[1,3,4,5],cohes:5,need:[2,5],diverg:2,discret:[1,0,2,4],which:[1,3,2,5],graviti:[],singl:[3,5],radius_vari:5,unless:3,"class":[3,5],homogen:4,placement:3,strack:4,dens:3,face:[2,5],determin:[2,4,5],constrain:[2,5],email_alert:5,mainloop:3,verbos:[3,5],empir:2,trivial:2,locat:[1,3],launchpad:[],should:[1,3,5],jan:0,smallest:[3,5],local:1,meant:1,obj3:5,obj2:5,contribut:[3,2,5],notat:4,writevtk:5,autom:[1,3],increas:5,enabl:[1,5],denmark:0,possibl:[3,5],file_dt:5,grai:5,integr:[3,0,2,4],contain:[2,5],currentnormalstress:5,sediment:5,view:5,legaci:5,frame:5,elast:[3,4,5],powder:4,sphinxcontrib:1,particl:[0,1,2,3,4,5],statu:[3,5],wall_mass_factor:5,correctli:1,boundari:[0,2,5],state:4,progress:[0,5],email:5,verifi:1,kei:3,job:5,entir:[4,5],addit:[1,2],doxygen:1,largestmass:5,valgrind:5,etc:[1,3],equat:[3,0,2,4,5],wall:[3,5],walk:1,ipython:1,es_dot:5,respect:1,mailto:0,quit:3,cauchi:2,compon:[1,3,2,4,5],treat:[],r_small:5,bulk:[2,5],present:2,totalrotationalenergi:5,align:[],defin:[3,2,4,5],limach:2,"27s_laws_of_mot":[],texttt:3,archiv:1,welcom:0,parti:0,handl:[1,3],largest:5,probabl:5,phi:5,workdir:5,http:[3,0],cubic:[2,4,5],expans:[3,5],periodicboundariesxi:5,eulerian:2,expand:[3,2],smallestmass:5,off:3,center:[2,5],well:[1,2,5],exampl:[1,3,5],command:1,choos:5,usual:[],plotfluidpressuresi:5,distanc:[2,5],less:2,marginpar:3,obtain:[1,0,2,5],plotfluidpressuresz:5,simultan:[],makefil:[1,3],wen:2,add:[1,5],other:[1,2,4,5],adc:[0,5],densiti:[2,5],press:5,desc:3,loss:[4,5],resid:3,like:5,lost:[4,5],poros:[3,0,2,5],shearvel:5,porou:2,output0:3,soft:1,page:[3,0,5],integratewal:3,liggght:[],linux:1,self:5,smoothli:5,home:5,librari:5,glyph:5,nvcc:[1,3],summat:3,leak:5,avoid:[4,5],overlap:[4,5],estim:[0,2,5],leav:2,esi:[],usag:[3,0,5],host:[3,5],file_io:3,about:[1,3,5],actual:5,freedom:3,ander:[1,0],devc_:3,discard:3,disabl:5,own:[],automat:3,shear_strain_r:5,laplacian:2,forcechain:[3,5],val:3,transfer:3,"function":[1,3,2,5],histogram:5,wise:5,displac:[4,5],smooth:5,displai:[4,5],troubl:1,below:[3,5],limit:[2,4,5],otherwis:[4,5],problem:3,evalu:2,"int":[3,5],dure:[2,5],implement:[0,2,4],pip:1,inf:5,inc:1,detail:[3,4],laplac:2,bool:5,futur:2,repeat:2,prealloc:5,zhou:2,gpumain:3,debian:1,stai:5,ghost:2,sphinx:1,scientif:[]},objtypes:{"0":"py:module","1":"py:function","2":"py:method","3":"py:class"},titles:["The sphere documentation","Introduction","Fluid simulation and particle-fluid interaction","sphere internals","Discrete element method","Python API"],objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","method","Python method"],"3":["py","class","Python class"]},filenames:["index","introduction","cfd","sphere_internals","dem","python_api"]})
-\ No newline at end of file
+Search.setIndex({objects:{"":{sphere:[5,0,1,""]},sphere:{status:[5,1,1,""],convert:[5,1,1,""],run:[5,1,1,""],render:[5,1,1,""],thinsectionVideo:[5,1,1,""],torqueScriptParallel3:[5,1,1,""],V_sphere:[5,1,1,""],cleanup:[5,1,1,""],video:[5,1,1,""],sim:[5,3,1,""]},"sphere.sim":{setFluidTopFixedPressure:[5,2,1,""],totalFrictionalEnergy:[5,2,1,""],setTheta:[5,2,1,""],setTolerance:[5,2,1,""],generateBimodalRadii:[5,2,1,""],defaultParams:[5,2,1,""],initRandomGridPos:[5,2,1,""],porosity:[5,2,1,""],writebin:[5,2,1,""],momentum:[5,2,1,""],thinsection_x1x3:[5,2,1,""],largestMass:[5,2,1,""],readbin:[5,2,1,""],writeFluidVTK:[5,2,1,""],kineticEnergy:[5,2,1,""],defineWorldBoundaries:[5,2,1,""],uniaxialStrainRate:[5,2,1,""],readlast:[5,2,1,""],bond:[5,2,1,""],consolidate:[5,2,1,""],setDampingNormal:[5,2,1,""],energy:[5,2,1,""],disableFluidPressureModulation:[5,2,1,""],video:[5,2,1,""],initRandomPos:[5,2,1,""],writeVTKall:[5,2,1,""],frictionalEnergy:[5,2,1,""],smallestMass:[5,2,1,""],zeroKinematics:[5,2,1,""],visualize:[5,2,1,""],randomBondPairs:[5,2,1,""],setBeta:[5,2,1,""],setDEMstepsPerCFDstep:[5,2,1,""],run:[5,2,1,""],deleteParticle:[5,2,1,""],setGamma:[5,2,1,""],plotFluidVelocitiesZ:[5,2,1,""],plotFluidVelocitiesY:[5,2,1,""],forcechainsRose:[5,2,1,""],adjustUpperWall:[5,2,1,""],setFluidTopNoFlow:[5,2,1,""],viscousEnergy:[5,2,1,""],readsecond:[5,2,1,""],plotPrescribedFluidPressures:[5,2,1,""],forcechains:[5,2,1,""],render:[5,2,1,""],triaxial:[5,2,1,""],rotationalEnergy:[5,2,1,""],initGrid:[5,2,1,""],readfirst:[5,2,1,""],periodicBoundariesX:[5,2,1,""],sheardisp:[5,2,1,""],totalRotationalEnergy:[5,2,1,""],adjustWall:[5,2,1,""],setFluidPressureModulation:[5,2,1,""],initFluid:[5,2,1,""],volume:[5,2,1,""],normalBoundariesXY:[5,2,1,""],bulkPorosity:[5,2,1,""],setFluidBottomNoFlow:[5,2,1,""],createBondPair:[5,2,1,""],torqueScript:[5,2,1,""],generateRadii:[5,2,1,""],periodicBoundariesXY:[5,2,1,""],shearStrain:[5,2,1,""],deleteAllParticles:[5,2,1,""],shear:[5,2,1,""],initTemporal:[5,2,1,""],setMaxIterations:[5,2,1,""],initGridAndWorldsize:[5,2,1,""],totalMomentum:[5,2,1,""],shearVel:[5,2,1,""],porosities:[5,2,1,""],readstep:[5,2,1,""],acceleration:[5,2,1,""],plotFluidDiffAdvPresZ:[5,2,1,""],writeVTK:[5,2,1,""],bondsRose:[5,2,1,""],cleanup:[5,2,1,""],addParticle:[5,2,1,""],setFluidBottomFixedPressure:[5,2,1,""],currentNormalStress:[5,2,1,""],plotConvergence:[5,2,1,""],status:[5,2,1,""],voidRatio:[5,2,1,""],momentOfInertia:[5,2,1,""],totalViscousEnergy:[5,2,1,""],setDampingTangential:[5,2,1,""],totalKineticEnergy:[5,2,1,""],initGridPos:[5,2,1,""],plotFluidPressuresY:[5,2,1,""],plotFluidPressuresZ:[5,2,1,""],mass:[5,2,1,""],contactModel:[5,2,1,""]}},terms:{prefix:3,whose:[],s_law:[],"const":3,under:[1,0,5],everi:2,"void":[3,5],readbin:[3,5],mp4:5,vector:[3,2,4,5],bulkporos:5,p_f:5,seper:3,direct:[4,5],second:[3,2,4,5],even:[3,4],supervis:0,hide:5,neg:[2,4,5],lundbek:0,"new":[2,4,5],symmetr:2,topolog:3,behavior:[1,4,5],here:2,path:[1,5],interpret:1,dry:[3,5],initgridandworlds:5,precis:[3,5],linearli:[2,5],releas:1,instabl:5,total:[3,2,4,5],univ:[],unit:1,plot:5,describ:[2,4],initfluid:5,call:[3,5],recommend:5,type:[1,3,4,5],relax:5,successful:1,relat:3,warn:5,exce:[2,5],loss:[4,5],must:5,setup:[1,5],work:[1,0,5],setfluidtopnoflow:5,coalesc:3,root:[1,3,5],unnam:5,kinet:[4,5],give:3,img_width:3,indic:0,want:2,readstep:5,keep:[1,2],unsign:3,setdemstepspercfdstep:5,end:[3,2,5],mu_w:5,travel:3,mu_r:5,how:[3,5],env:5,place:[1,3,5],mu_d:5,updat:[1,0,2,3],after:[1,3,2,5],befor:[3,5],wrong:[],mesh:5,law:[3,2,4],parallel:[1,2,5],averag:[2,5],third:[0,2,5],maintain:1,environ:1,incorpor:2,enter:2,exclus:5,order:[1,3,2,4,5],oper:[1,0,2,3],over:4,visc_n_rat:5,pascal:5,flexibl:[1,2],totalviscousenergi:5,img:[],fix:5,welcome_:[],fig:3,hidden:[],shear:[2,5],them:5,anim:5,thei:[3,2],choic:[],include_cod:[],arrow:5,each:[3,2,4,5],angvel:[3,5],side:[2,5],mean:[1,2,5],pdflatex:1,logn:5,euler_method:[],network:4,gradient:[2,5],content:0,rewrit:2,gov:[],linear:[2,4,5],slipscal:5,situat:2,free:[1,2],standard:5,configuraion:3,angl:5,filter:5,isn:[2,5],rang:[2,5],render:[1,3,5],restrict:1,hook:[],instruct:1,thick:5,sort_by_kei:3,advect:[2,5],top:[2,5],evolut:[3,5],addparticl:5,tool:1,bondsros:5,max_val:5,somewhat:[4,5],conserv:[2,5],target:[3,5],provid:1,zero:[3,2,4,5],project:[0,2,5],matter:4,rad:5,setfluidpressuremodul:5,xdisp:[3,5],ram:3,rai:[1,5],raw:4,seed:4,increment:4,ldot:3,latter:4,blue:5,though:[3,4],object:[1,5],regular:5,phase:[2,5],prematur:5,don:3,doc:1,flow:[1,0,2,5],vector_norm:[],sum:[2,4,5],dot:4,radix:3,opposit:2,random:[3,5],radiu:[2,4,5],radii:5,pkg:1,involv:3,consolid:5,layout:3,menu:5,explain:[3,0],configur:[1,3,5],settheta:5,folder:[1,3,5],loopstart:3,stop:5,fluid:[0,2,4,5],net:3,bar:5,cuda_sdk_root_dir:1,"public":[1,3],mu_:5,datatyp:3,result:[1,3,2,4,5],elasto:5,deleteallparticl:5,fail:[],best:[1,5],tensor:2,wikipedia:5,figur:3,simplest:4,angpo:[3,5],approach:2,attribut:2,extend:[],cfdem:[],toler:[2,5],subfold:3,howev:[3,4],kineticenergi:5,against:5,uni:5,browser:5,com:[1,3,5],pre:[3,5],height:5,guid:[3,0],assum:[2,5],gamma_n:5,numpi:[1,5],three:[1,3,2,4,5],been:[4,5],spherebin:5,interest:[0,5],gamma_t:5,gamma_r:5,suppress:3,search:[3,0,4],emploi:3,ident:2,cudamemcheck:5,plotconverg:5,gnu:[1,3],properti:[1,2,5],setfluidtopfixedpressur:5,aim:[1,0],euclidean:[],calcul:[3,2,4,5],seven:2,conv:5,tabl:0,toolkit:1,shami:2,sever:[3,5],perform:[1,3,5],make:[1,3,5],transpar:5,complex:[],split:[0,2],dimensionless:2,complet:5,hang:5,hand:[3,2,4],kin:5,"0e3f":3,thu:3,contact:[3,0,2,4,5],thi:[0,1,2,3,4,5],left:5,identifi:[3,4,5],savefig:5,newton:[3,2,4],yet:4,previous:[2,5],expos:1,character:[2,4],save:5,applic:[3,5],dissip:[4,5],mennu:5,background:[3,2],maxval:3,specif:[1,3],initcuda:3,www:[],right:[2,5],old:[2,5],deal:2,interv:[3,5],maxim:[2,5],intern:[1,3],maxit:5,raytrac:[3,5],txt:[1,5],bottom:2,ev_dot:5,adjustwal:5,condit:[1,0,2,5],core:[],bold:4,torquescriptparallel3:5,post:[4,5],zerokinemat:5,simul:[0,1,2,3,4,5],coars:5,produc:5,step_count:5,"float":[3,5],bound:5,ppm:5,readfirst:5,wrap:3,often:3,git:1,wai:[1,3,5],gridnum:5,frictionalenergi:5,support:1,avail:1,width:[2,5],fraction:[2,5],analysi:[1,5],medium:2,form:[3,2,4],forc:[3,2,4,5],epsilon:5,setbeta:5,berg:4,"true":5,again:1,bugfix:1,maximum:5,url:3,inaccur:4,fermi:1,fundament:4,plotfluiddiffadvpresz:5,featur:4,"abstract":[],diagnost:[3,5],exist:3,ship:1,check:[1,3,5],when:[4,5],test:1,totalkineticenergi:5,roll:5,node:[2,5],intend:5,intent:3,consid:[2,5],stoke:[0,2],spherealgo:3,longer:4,bullet:[],chrono:[],geometr:4,time:[1,3,2,4,5],backward:2,mathrm:3,concept:2,sandia:[],global:3,plotprescribedfluidpressur:5,signific:5,z_slice:3,computation:4,rot:5,row:[],depend:[1,3,2],graph:3,vec:[],text:5,vel:[3,5],sourc:[1,3],string:3,solver:[2,5],iter:[2,5],mu_wn:5,item:3,sine:5,targetbin:5,calcparticlecellid:3,upper:5,slower:5,trend:5,sign:2,corner:5,appear:5,uniform:5,current:[3,2,5],boost:3,deriv:[0,2,4],gener:[1,4,5],coeffici:[2,4,5],water:5,explicitli:5,address:5,along:[4,5],sphere_:3,toolbar:5,box:5,shift:5,avconv:1,queue:5,poisson:[2,5],modul:[1,0,5],gamma_dot:5,volumetr:[2,5],instal:[1,0],memorytyp:3,memori:[3,5],univers:0,live:1,criteria:[2,5],scope:3,reorder:3,writevtkal:5,finit:2,damsgaard:[1,0,4],visual:[1,3,5],appendix:3,rigid:[],templat:[],setdampingnorm:5,graphic:1,can:[1,3,2,4,5],capillarycohes:5,transferconstmem:3,purpos:[1,5],obj1:5,stream:3,predict:[2,5],reynold:2,critic:5,unfortun:1,alwai:3,differenti:2,write:[3,5],criterion:4,minpo:3,map:[],contact_mechan:[],arrowscal:5,max:5,clone:1,mac:1,devsmod:5,date:1,data:[1,3,5],stress:[2,5],liquid:4,repuls:[],explicit:2,inform:[1,3,5],setgamma:5,combin:5,block:3,superscript:[],findoverlap:3,dynam:[0,1,2,3,4,5],entiti:4,vti:5,vtk:[1,5],platform:1,window:5,vtu:5,mail:5,main:[1,3,5],non:[1,3,4,5],initi:[1,3,5],half:2,now:[3,4],introduct:[1,0,4],term:2,workload:3,plung:5,realist:[4,5],separ:4,initgridpo:5,compil:[1,3],domain:5,replac:1,individu:[3,2],continu:[3,2],significantli:5,createbondpair:5,shown:5,space:[2,5],lagrangian:2,profil:3,correct:[2,4],theori:0,org:[],"___":1,torqu:[3,4,5],prescrib:[2,5],frequenc:5,graphics_fold:5,pageref:3,synchron:3,motion:[3,4],initrandompo:5,neglect:2,first:[2,5],origin:[2,4,5],arrai:[3,5],open:[3,5],angular:5,size:5,given:2,z_adjust:5,conservation_of_energi:[],circl:5,viscousenergi:5,copi:1,specifi:[1,5],video_format:5,than:[2,5],png:5,wide:4,posit:[2,4,5],wvel:5,seri:3,cell_cent:5,ani:5,slam:5,slab:5,engin:[],hydrostat:5,bulletphys:[],note:[1,3,2,4,5],ideal:5,take:[1,2],begin:[3,5],sure:[1,5],trace:5,normal:[3,2,4,5],multipli:5,beta:5,uniaxialstrainr:5,pair:[2,4,5],later:2,lower_cutoff:[3,5],typeset:1,runtim:1,readjust:5,axi:5,cmakelist:1,totalfrictionalenergi:5,viscou:[2,4,5],viscos:[2,4,5],show:[3,5],friction:[4,5],dphi:5,help:[1,3],onli:[2,4,5],slow:3,ratio:[2,5],written:[1,3,5],analyz:5,"440e":5,offici:0,get:[1,3],kinemat:5,cannot:[1,3,2],settoler:5,theta:5,geo:[0,5],requir:[1,0,5,3],v_f:5,yield:3,across:2,where:[1,3,2,4,5],wiki:[],kernel:3,momentofinertia:5,infinit:5,writensarrai:3,label:3,between:[2,5],"import":[3,2,5],disablefluidpressuremodul:5,assumpt:2,screen:5,fit:5,reorderarrai:3,quiet:3,nearbi:2,leightest:5,mani:[],laplac:2,acceler:[2,4,5],color:[3,5],pot:5,period:[2,5],ultim:1,breath:1,checkval:3,thousand:[],resolut:5,ndvector:[],former:4,"case":[1,3,2],invok:[1,3,5],margin:5,stdout:3,soil:4,equal:[3,2,5],strain:[2,5],img_height:3,egholm:0,subglaci:1,develop:[1,0],author:0,alphabet:5,same:5,binari:[1,3,5],html:1,lammp:[],document:[1,0,5,3],closest:5,kelvin:4,driver:1,driven:4,capabl:1,foat:5,improv:3,extern:5,model:[3,0,2,4,5],dimension:[1,3,2,4],execut:[1,3,5],excel:1,remov:5,touch:[],speed:3,rose:5,except:3,param:5,blog:4,rescal:5,momentum:[2,5],real:4,read:[1,3,5],psd:5,grid:[3,2,4,5],voigt:4,world:5,findcuda:1,cdot:3,either:[3,2,4,5],initgrid:5,output:[1,3,5],downward:5,inter:[4,5],manag:5,fulfil:5,qfermi:5,hydraul:5,slice:5,cudapath:5,definit:3,evolv:[],exit:[3,2,5],readlast:5,refer:3,inspect:1,starttim:3,fulli:2,src:[1,3],central:2,greatli:3,gplv3:1,degre:[3,5],cuda:[1,3,2,5],neighbor:[3,2,5],act:5,industri:4,bond:5,routin:1,effici:4,paraview:5,your:1,log:5,area:[],aren:2,start:[1,3,5],interfac:[4,5],low:5,gravit:[2,5],generateradii:5,newtonian:2,regard:4,diffus:5,satur:2,faster:5,notat:4,coulomb:4,possibl:[3,5],"default":[3,4,5],k_r:5,k_t:5,k_n:5,taylor:3,creat:[1,5],checkvalu:3,setdampingtangenti:5,"27s_laws_of_mot":[],rearrang:4,denot:[2,4,5],collid:5,googl:3,orient:[4,5],field:5,defaultparam:5,cleanup:5,collis:[3,5],spatial:[3,2,5],magnutud:[],you:1,architectur:[1,3],sequenc:3,symbol:[1,4],xysum:[],directori:[1,5],descript:3,lmgc:[],mass:[3,2,4,5],potenti:5,cpp:3,delta_n_ij:3,cpu:[3,2],disp:5,represent:5,all:[0,1,2,3,4,5],scalar:[3,2,5],disc:[],abil:2,cundal:4,follow:[1,3,2,4,5],disk:5,chain:5,opensourcedem:[],totalmomentum:5,program:[3,5],introduc:[2,5],sound:3,fals:5,capillari:5,verb:3,mechan:4,veri:4,dampen:5,list:[1,3,5],inittempor:[3,5],sand:4,adjust:[2,5],small:[3,4,5],dimens:5,shearrat:5,tex:1,rate:[2,5],pressur:[2,5],pass:[3,4],excit:[],section:[3,2,4,5],abl:5,delet:5,version:[1,3,2,5],intersect:[2,5],method:[0,1,2,3,4,5],movement:[3,5],hasn:4,full:[1,3,5],hash:3,visc_n:5,variat:2,modifi:[1,2],valu:[1,3,2,4,5],gidaspow:2,prior:5,amount:5,magnitud:[2,5],diamet:[2,5],via:3,depart:0,filenam:[3,5],select:5,qscale:5,distinct:5,liber:3,two:[2,4,5],formul:[2,4],more:[1,3,4,5],desir:[4,5],setmaxiter:5,dictat:5,none:5,cluster:5,outlin:2,x1x3:5,histori:3,periodicboundariesx:5,remain:2,paragraph:3,dem:[1,3,4,5],gpu_gener:1,thinsectionvideo:5,loopend:3,sphere:[0,1,2,3,4,5],attain:2,hookean:4,divid:5,rather:3,anoth:5,divis:4,simpl:5,regener:5,gase:4,thrustfootnot:3,plane:[4,5],chronoengin:[],varianc:5,stabil:[3,5],lmgc90:[],github:1,img_out:5,caus:5,spheric:2,nvidia:[1,3],checkbox:5,rotat:[3,4,5],soon:1,through:[1,3,2,4,5],nobord:5,paramet:[3,2,4,5],geoscienc:0,segfault:5,jacobi:[2,5],"return":[3,5],food:4,complain:1,piotrowski:0,found:[1,3,2,4,5],rheologi:2,procedur:[1,0,2],energi:[4,5],todo:3,event:3,molecular_dynam:[],print:[3,5],subsubsect:3,occurr:4,dvipng:1,focallength:3,reason:[2,5],base:[3,2,5],visco:[4,5],put:[2,5],maxpo:3,thread:3,launch:3,veloc:[2,4,5],aarhu:0,interact:[0,1,2,3,4,5],dont:3,exchang:2,number:[1,3,2,5],randombondpair:5,done:3,differ:[3,2,5],script:5,sheardisp:5,least:5,gpu:[1,3,2,5],molecular:4,idelsohn:2,store:[3,2,4,5],printnsarrai:3,option:[1,3,2,5],relationship:[3,2],part:[0,2],consult:3,std:3,scheme:4,contrari:4,ffmpeg:[1,5],fold:5,deviator:2,horizont:[2,5],reus:5,str:5,arrang:1,randomli:5,comput:[1,3,2,4,5],exert:5,p_mod_a:5,heaviest:5,beforehand:5,p_mod_f:5,deleteparticl:5,built:[1,5],voidratio:5,also:[3,4,5],build:[1,0],upper_cutoff:3,pipelin:5,ergun:2,distribut:[1,5],interpol:5,reach:[3,4],mixtur:2,most:[3,5],plan:1,rho:5,adjustupperwal:5,abnorm:5,reportvalu:3,session:5,find:[2,5],access:3,solut:[0,2,5],factor:5,writebin:[3,5],unus:3,programoutput:1,v_sphere:5,p_mod_phi:5,continuum:2,graphics_format:5,common:[1,3,2,4,5],origo:5,rotationalenergi:5,arr:3,set:[1,3,2,4,5],decompos:[2,4],see:[1,3,4,5],float4:3,close:[],analog:5,float3:3,someth:[],won:5,experi:[3,4,5],altern:[1,5],imagemagick:[1,5],numer:[1,0,2,4,3],induc:2,isol:2,matplotlib:1,solv:2,inertia:5,popul:5,both:[3,4,5],last:5,alon:[3,2],tempor:[3,0,4,5],pdf:[1,5],point:[3,2,4,5],schedul:5,residu:[2,5],suppli:3,cudamemset:3,becom:2,damp:[4,5],devic:[1,3,5],due:[1,2,4,5],empti:3,modern:[],imag:5,coordin:5,understand:[1,4],func:5,tangenti:[4,5],look:1,solid:[2,4,5],durat:4,"while":[1,3,2,5],abov:[1,2,4,5],error:[3,5],loos:5,loop:[3,5],pack:[],subsect:3,rightarrow:[],out_fold:5,belong:5,fixvel:5,shorter:5,latexpdf:1,higher:5,shearstrain:5,moment:5,temporari:5,user:1,typic:[1,5],recent:5,lower:[3,5],task:[],darcyflow:3,"87e":5,velarrowscal:5,shape:2,contactmodel:5,langtangen:[2,5],"0e9":3,restructuredtext:1,theoret:[3,2],input:[1,3,5],subsequ:[1,5],triaxial:5,euler:[2,4],cuh:3,bin:[3,5],format:[1,3,5],big:5,delta_n:[],characterist:3,zslice:5,semi:2,resolv:[3,4],collect:1,popular:[],encount:3,neumann:[2,5],simplifi:2,spring:4,some:[1,4,5],back:5,emph:3,strongest:5,sampl:[1,0,5],scale:[2,5],per:[3,5],mathemat:4,larg:5,shearvel:5,previou:[3,2],run:[1,3,5],perpendicular:2,step:[3,2,4,5],ndem:5,idx:5,reappear:2,materi:[1,2,4,5],incompress:2,readsecond:5,gamma:5,cutoff:[3,5],file1:3,within:[2,5],diff_adv:5,ensur:3,dev_:3,span:5,errno:[],question:[],fast:[3,2],custom:2,adjac:5,includ:[1,3,2,4,5],contactsearch:3,bondpot:5,translat:5,newer:1,delta:3,line:1,sdk:3,info:[],zhu:2,consist:4,normalboundariesxi:5,assemblag:1,"0xffffffff":3,highlight:4,similar:1,constant:[3,2,5],doesn:5,repres:2,"char":3,threedim:3,helper_math:1,cmake:1,gnuplot:5,draw:5,normal_stress:5,drag:2,amplitud:5,dram:3,setfluidbottomnoflow:5,algorithm:[3,5],depth:5,epslatex:5,celciu:5,code:[1,3,2,5],partial:2,edg:5,scratch:5,radius_mean:5,plotfluidvelocitiesi:5,send:5,granular:[1,3,2,4],plotfluidvelocitiesz:5,aris:[],gravel:4,sent:5,datafil:3,thinsection_x1x3:5,wave:[3,5],volum:[2,5],relev:0,walltim:5,stiff:[3,5],button:5,montp2:[],smaller:5,natur:4,cfd:5,gamma_wt:5,gamma_wn:5,video:5,click:5,append:3,compat:3,index:[0,4,5],compar:5,resembl:4,cell:[3,2,5],experiment:2,len:2,bodi:[2,4],lower_limit:5,setfluidbottomfixedpressur:5,vertic:5,sinc:[3,2],convert:[3,5],larger:[2,5],converg:5,cbmax:5,chang:[1,3,2,5],apx:3,torquescript:5,outformat:5,appli:[3,2,5],approxim:[2,5],apt:1,api:[1,0,5,3],from:[1,3,2,4,5],commun:2,doubl:3,isotrop:2,implic:5,few:[],asteroid:4,usr:5,chip:3,sort:[3,5],discrete_element_method:[],zhegal:2,use_workdir:5,annot:5,thin:5,control:[1,3,5],process:[1,0,5,3],sudo:1,high:[],slip:[2,5],writefluidvtk:5,generatebimodalradii:5,gcc:[1,3],palett:5,six:[2,5],subdirectori:1,instead:[1,3,5],sim:[3,5],frac:[],surfac:5,esysparticl:5,physic:[1,3,5],alloc:[3,5],essenti:1,bind:1,counter:3,correspond:[2,5],element:[1,0,4],issu:1,allow:[2,5],move:5,sourcecodevari:3,libav:1,r_larg:5,chosen:5,restrain:5,therefor:4,greater:[1,2],python:[1,0,5,3],sid:5,yade:[],dat:[3,5],mention:[1,2],front:5,subsubsec:3,spheredir:5,edit:5,kpa:5,mode:[3,5],tracer:[1,5],chorin:[2,5],"static":[4,5],subsec:3,fluctuat:5,variabl:[1,3],matrix:5,hideinputfil:5,texliv:1,suitabl:5,rel:[3,2,4,5],inaccess:3,ref:3,red:5,forcechainsros:5,simulation_id:3,christensen:1,thrust:3,afterward:5,dirichlet:[2,5],could:2,timer:3,david:0,length:[3,4,5],enforc:2,navier:[0,2],geometri:[],retain:1,softwar:[1,0,3],qualiti:5,scene:1,mai:5,transfertoconstantmemori:3,"1e4":5,stencil:2,strict:1,unknown:2,licens:1,system:[1,3,2,5],messag:[3,5],initrandomgridpo:5,termin:3,"final":5,defineworldboundari:5,shell:[1,3],methodolog:2,exactli:[],bitrat:5,bed:1,charact:5,writeppm:3,kepler:1,have:[1,3,4,5],cohes:5,need:[2,5],diverg:2,discret:[1,0,2,4],which:[1,3,2,5],graviti:[],singl:[3,5],radius_vari:5,unless:3,"class":[3,5],homogen:4,placement:3,strack:4,dens:3,face:[2,5],determin:[2,4,5],constrain:[2,5],email_alert:5,mainloop:3,verbos:[3,5],xyzsum:5,empir:2,desc:3,trivial:2,locat:[1,3],launchpad:[],should:[1,3,5],jan:0,smallest:[3,5],local:1,meant:1,obj3:5,obj2:5,contribut:[3,2,5],pull:1,writevtk:5,autom:[1,3],increas:5,enabl:[1,5],denmark:0,inputbin:3,file_dt:5,grai:5,integr:[3,0,2,4],contain:[2,5],currentnormalstress:5,sediment:5,view:5,legaci:5,frame:5,elast:[3,4,5],powder:4,sphinxcontrib:1,particl:[0,1,2,3,4,5],statu:[3,5],wall_mass_factor:5,correctli:1,boundari:[0,2,5],state:4,progress:[0,5],email:5,verifi:1,kei:3,job:5,entir:[4,5],addit:[1,2],doxygen:1,largestmass:5,valgrind:5,etc:[1,3],equat:[3,0,2,4,5],wall:[3,5],walk:1,ipython:1,es_dot:5,respect:1,mailto:0,quit:3,cauchi:2,compon:[1,3,2,4,5],treat:[],r_small:5,bulk:[2,5],present:2,totalrotationalenergi:5,align:[],defin:[3,2,4,5],limach:2,file:[1,3,5],texttt:3,archiv:1,welcom:0,parti:0,handl:[1,3],largest:5,inc:1,phi:5,workdir:5,http:[3,0],cubic:[2,4,5],expans:[3,5],periodicboundariesxi:5,eulerian:2,expand:[3,2],smallestmass:5,off:3,center:[2,5],well:[1,2,5],exampl:[1,3,5],command:1,choos:5,usual:[],plotfluidpressuresi:5,distanc:[2,5],less:2,marginpar:3,obtain:[1,0,2,5],plotfluidpressuresz:5,simultan:[],makefil:[1,3],wen:2,add:[1,5],adc:[0,5],densiti:[2,5],press:5,name:5,insert:3,resid:3,like:5,lost:[4,5],poros:[3,0,2,5],necessari:3,porou:2,output0:3,soft:1,page:[3,0,5],integratewal:3,liggght:[],linux:1,self:5,smoothli:5,home:5,librari:5,glyph:5,nvcc:[1,3],summat:3,leak:5,avoid:[4,5],overlap:[4,5],estim:[0,2,5],leav:2,esi:[],usag:[3,0,5],host:[3,5],file_io:3,about:[1,3,5],actual:5,freedom:3,ander:[1,0],devc_:3,discard:3,disabl:5,own:[],automat:3,shear_strain_r:5,laplacian:2,forcechain:[3,5],val:3,transfer:3,"function":[1,3,2,5],histogram:5,wise:5,displac:[4,5],smooth:5,displai:[4,5],troubl:1,below:[3,5],limit:[2,4,5],otherwis:[4,5],problem:3,evalu:2,"int":[3,5],dure:[2,5],implement:[0,2,4],pip:1,inf:5,probabl:5,detail:[3,4],other:[1,2,4,5],bool:5,futur:2,repeat:2,prealloc:5,zhou:2,gpumain:3,debian:1,stai:5,ghost:2,sphinx:1,scientif:[]},objtypes:{"0":"py:module","1":"py:function","2":"py:method","3":"py:class"},titles:["The sphere documentation","Introduction","Fluid simulation and particle-fluid interaction","sphere internals","Discrete element method","Python API"],objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","method","Python method"],"3":["py","class","Python class"]},filenames:["index","introduction","cfd","sphere_internals","dem","python_api"]})
+\ No newline at end of file
(DIR) diff --git a/doc/pdf/sphere.pdf b/doc/pdf/sphere.pdf
Binary files differ.
(DIR) diff --git a/python/sphere.py b/python/sphere.py
t@@ -86,7 +86,7 @@ class sim:
self.radius = numpy.ones(self.np, dtype=numpy.float64)
# The sums of x and y movement [m]
- self.xysum = numpy.zeros((self.np, 2), dtype=numpy.float64)
+ self.xyzsum = numpy.zeros((self.np, 3), dtype=numpy.float64)
# The linear velocities [m/s]
self.vel = numpy.zeros((self.np, self.nd), dtype=numpy.float64)
t@@ -375,7 +375,7 @@ class sim:
elif ((self.radius != other.radius).any()):
print(15)
return 15
- elif ((self.xysum != other.xysum).any()):
+ elif ((self.xyzsum != other.xyzsum).any()):
print(16)
return 16
elif ((self.vel != other.vel).any()):
t@@ -592,7 +592,7 @@ class sim:
def addParticle(self,
x,
radius,
- xysum = numpy.zeros(2),
+ xyzsum = numpy.zeros(3),
vel = numpy.zeros(3),
fixvel = numpy.zeros(1),
force = numpy.zeros(3),
t@@ -642,7 +642,7 @@ class sim:
self.x = numpy.append(self.x, [x], axis=0)
self.radius = numpy.append(self.radius, radius)
self.vel = numpy.append(self.vel, [vel], axis=0)
- self.xysum = numpy.append(self.xysum, [xysum], axis=0)
+ self.xyzsum = numpy.append(self.xyzsum, [xyzsum], axis=0)
self.fixvel = numpy.append(self.fixvel, fixvel)
self.force = numpy.append(self.force, [force], axis=0)
self.angpos = numpy.append(self.angpos, [angpos], axis=0)
t@@ -668,7 +668,7 @@ class sim:
self.x = numpy.delete(self.x, i, axis=0)
self.radius = numpy.delete(self.radius, i)
self.vel = numpy.delete(self.vel, i, axis=0)
- self.xysum = numpy.delete(self.xysum, i, axis=0)
+ self.xyzsum = numpy.delete(self.xyzsum, i, axis=0)
self.fixvel = numpy.delete(self.fixvel, i)
self.force = numpy.delete(self.force, i, axis=0)
self.angpos = numpy.delete(self.angpos, i, axis=0)
t@@ -688,7 +688,7 @@ class sim:
self.np[0] = 0
self.x = numpy.zeros((self.np, self.nd), dtype=numpy.float64)
self.radius = numpy.ones(self.np, dtype=numpy.float64)
- self.xysum = numpy.zeros((self.np, 2), dtype=numpy.float64)
+ self.xyzsum = numpy.zeros((self.np, 3), dtype=numpy.float64)
self.vel = numpy.zeros((self.np, self.nd), dtype=numpy.float64)
self.fixvel = numpy.zeros(self.np, dtype=numpy.float64)
self.force = numpy.zeros((self.np, self.nd), dtype=numpy.float64)
t@@ -755,7 +755,7 @@ class sim:
# Allocate array memory for particles
self.x = numpy.empty((self.np, self.nd), dtype=numpy.float64)
self.radius = numpy.empty(self.np, dtype=numpy.float64)
- self.xysum = numpy.empty((self.np, 2), dtype=numpy.float64)
+ self.xyzsum = numpy.empty((self.np, 3), dtype=numpy.float64)
self.vel = numpy.empty((self.np, self.nd), dtype=numpy.float64)
self.fixvel = numpy.empty(self.np, dtype=numpy.float64)
self.es_dot = numpy.empty(self.np, dtype=numpy.float64)
t@@ -777,8 +777,8 @@ class sim:
self.radius[i] =\
numpy.fromfile(fh, dtype=numpy.float64, count=1)
- self.xysum = numpy.fromfile(fh, dtype=numpy.float64,\
- count=self.np*2).reshape(self.np,2)
+ self.xyzsum = numpy.fromfile(fh, dtype=numpy.float64,\
+ count=self.np*3).reshape(self.np,3)
for i in range(self.np):
self.vel[i,:] =\
t@@ -1001,7 +1001,7 @@ class sim:
fh.write(self.radius[i].astype(numpy.float64))
if (self.np[0] > 0):
- fh.write(self.xysum.astype(numpy.float64))
+ fh.write(self.xyzsum.astype(numpy.float64))
for i in range(self.np):
fh.write(self.vel[i,:].astype(numpy.float64))
t@@ -1256,21 +1256,30 @@ class sim:
fh.write('\n')
fh.write(' </DataArray>\n')
- # xysum.x
+ # xyzsum.x
fh.write(' <DataArray type="Float32" Name="Xdisplacement" '
+ 'format="ascii">\n')
fh.write(' ')
for i in range(self.np):
- fh.write('{} '.format(self.xysum[i,0]))
+ fh.write('{} '.format(self.xyzsum[i,0]))
fh.write('\n')
fh.write(' </DataArray>\n')
- # xysum.y
+ # xyzsum.y
fh.write(' <DataArray type="Float32" Name="Ydisplacement" '
+ 'format="ascii">\n')
fh.write(' ')
for i in range(self.np):
- fh.write('{} '.format(self.xysum[i,1]))
+ fh.write('{} '.format(self.xyzsum[i,1]))
+ fh.write('\n')
+ fh.write(' </DataArray>\n')
+
+ # xyzsum.z
+ fh.write(' <DataArray type="Float32" Name="Zdisplacement" '
+ + 'format="ascii">\n')
+ fh.write(' ')
+ for i in range(self.np):
+ fh.write('{} '.format(self.xyzsum[i,2]))
fh.write('\n')
fh.write(' </DataArray>\n')
t@@ -2128,8 +2137,8 @@ class sim:
.reshape(self.np, self.nd)
self.es = numpy.zeros(self.np, dtype=numpy.float64)
self.ev = numpy.zeros(self.np, dtype=numpy.float64)
- self.xysum = numpy.zeros(self.np*2, dtype=numpy.float64)\
- .reshape(self.np, 2)
+ self.xyzsum = numpy.zeros(self.np*3, dtype=numpy.float64)\
+ .reshape(self.np, 3)
def adjustUpperWall(self, z_adjust = 1.1):
'''
t@@ -3520,14 +3529,14 @@ class sim:
I = numpy.nonzero((self.x[:,2] > zlower) & (self.x[:,2] < zupper))
# Save mean x displacement
- xdisp[iz] = numpy.mean(self.xysum[I,0])
+ xdisp[iz] = numpy.mean(self.xyzsum[I,0])
# Save x displacement standard deviation
- err[iz] = numpy.std(self.xysum[I,0])
+ err[iz] = numpy.std(self.xyzsum[I,0])
plt.figure(figsize=[4, 4])
ax = plt.subplot(111)
- ax.scatter(self.xysum[:,0], self.x[:,2], c='gray', marker='+')
+ ax.scatter(self.xyzsum[:,0], self.x[:,2], c='gray', marker='+')
ax.errorbar(xdisp, zpos, xerr=err,
c='black', linestyle='-', linewidth=1.4)
ax.set_xlabel("Horizontal particle displacement, [m]")
(DIR) diff --git a/src/datatypes.h b/src/datatypes.h
t@@ -15,7 +15,7 @@
// Structure containing kinematic particle values
struct Kinematics {
Float4 *x; // Positions + radii (w)
- Float2 *xysum; // Horizontal distance traveled
+ Float4 *xyzsum; // Horizontal distance traveled
Float4 *vel; // Translational velocities + fixvels (w)
Float4 *acc; // Translational accelerations
Float4 *force; // Sums of forces
(DIR) diff --git a/src/device.cu b/src/device.cu
t@@ -244,7 +244,7 @@ __host__ void DEM::allocateGlobalDeviceMemory(void)
// Kinematics arrays
cudaMalloc((void**)&dev_x, memSizeF4);
- cudaMalloc((void**)&dev_xysum, memSizeF4);
+ cudaMalloc((void**)&dev_xyzsum, memSizeF4);
cudaMalloc((void**)&dev_vel, memSizeF4);
cudaMalloc((void**)&dev_vel0, memSizeF4);
cudaMalloc((void**)&dev_acc, memSizeF4);
t@@ -312,7 +312,7 @@ __host__ void DEM::freeGlobalDeviceMemory()
printf("\nFreeing device memory: ");
// Particle arrays
cudaFree(dev_x);
- cudaFree(dev_xysum);
+ cudaFree(dev_xyzsum);
cudaFree(dev_vel);
cudaFree(dev_vel0);
cudaFree(dev_acc);
t@@ -379,8 +379,8 @@ __host__ void DEM::transferToGlobalDeviceMemory(int statusmsg)
// Kinematic particle values
cudaMemcpy( dev_x, k.x,
memSizeF4, cudaMemcpyHostToDevice);
- cudaMemcpy( dev_xysum, k.xysum,
- sizeof(Float2)*np, cudaMemcpyHostToDevice);
+ cudaMemcpy( dev_xyzsum, k.xyzsum,
+ memSizeF4, cudaMemcpyHostToDevice);
cudaMemcpy( dev_vel, k.vel,
memSizeF4, cudaMemcpyHostToDevice);
cudaMemcpy( dev_vel0, k.vel,
t@@ -459,8 +459,8 @@ __host__ void DEM::transferFromGlobalDeviceMemory()
// Kinematic particle values
cudaMemcpy( k.x, dev_x,
memSizeF4, cudaMemcpyDeviceToHost);
- cudaMemcpy( k.xysum, dev_xysum,
- sizeof(Float2)*np, cudaMemcpyDeviceToHost);
+ cudaMemcpy( k.xyzsum, dev_xyzsum,
+ memSizeF4, cudaMemcpyDeviceToHost);
cudaMemcpy( k.vel, dev_vel,
memSizeF4, cudaMemcpyDeviceToHost);
cudaMemcpy( k.acc, dev_acc,
t@@ -1505,7 +1505,7 @@ __host__ void DEM::startTime()
dev_angacc,
dev_vel0,
dev_angvel0,
- dev_xysum,
+ dev_xyzsum,
dev_gridParticleIndex,
iter);
cudaThreadSynchronize();
(DIR) diff --git a/src/file_io.cpp b/src/file_io.cpp
t@@ -86,7 +86,7 @@ void DEM::readbin(const char *target)
cout << " Allocating host memory: ";
// Allocate more host arrays
k.x = new Float4[np];
- k.xysum = new Float2[np];
+ k.xyzsum = new Float4[np];
k.vel = new Float4[np];
k.force = new Float4[np];
k.angpos = new Float4[np];
t@@ -120,8 +120,9 @@ void DEM::readbin(const char *target)
ifs.read(as_bytes(k.x[i].w), sizeof(Float));
}
for (i = 0; i<np; ++i) {
- ifs.read(as_bytes(k.xysum[i].x), sizeof(Float));
- ifs.read(as_bytes(k.xysum[i].y), sizeof(Float));
+ ifs.read(as_bytes(k.xyzsum[i].x), sizeof(Float));
+ ifs.read(as_bytes(k.xyzsum[i].y), sizeof(Float));
+ ifs.read(as_bytes(k.xyzsum[i].z), sizeof(Float));
}
for (i = 0; i<np; ++i) {
ifs.read(as_bytes(k.vel[i].x), sizeof(Float));
t@@ -348,8 +349,9 @@ void DEM::writebin(const char *target)
ofs.write(as_bytes(k.x[i].w), sizeof(Float));
}
for (i = 0; i<np; ++i) {
- ofs.write(as_bytes(k.xysum[i].x), sizeof(Float));
- ofs.write(as_bytes(k.xysum[i].y), sizeof(Float));
+ ofs.write(as_bytes(k.xyzsum[i].x), sizeof(Float));
+ ofs.write(as_bytes(k.xyzsum[i].y), sizeof(Float));
+ ofs.write(as_bytes(k.xyzsum[i].z), sizeof(Float));
}
for (i = 0; i<np; ++i) {
ofs.write(as_bytes(k.vel[i].x), sizeof(Float));
(DIR) diff --git a/src/integration.cuh b/src/integration.cuh
t@@ -17,7 +17,7 @@ __global__ void integrate(Float4* dev_x_sorted, Float4* dev_vel_sorted, // Input
Float4* dev_force, Float4* dev_torque, Float4* dev_angpos, // Input
Float4* dev_acc, Float4* dev_angacc,
Float4* dev_vel0, Float4* dev_angvel0,
- Float2* dev_xysum,
+ Float4* dev_xyzsum,
unsigned int* dev_gridParticleIndex, // Input: Sorted-Unsorted key
unsigned int iter)
{
t@@ -35,7 +35,7 @@ __global__ void integrate(Float4* dev_x_sorted, Float4* dev_vel_sorted, // Input
const Float4 x = dev_x_sorted[idx];
const Float4 vel = dev_vel_sorted[idx];
const Float4 angvel = dev_angvel_sorted[idx];
- Float2 xysum = dev_xysum[orig_idx];
+ Float4 xyzsum = dev_xyzsum[orig_idx];
// Get old accelerations for three-term Taylor expansion. These values
// don't exist in the first time step
t@@ -139,8 +139,9 @@ __global__ void integrate(Float4* dev_x_sorted, Float4* dev_vel_sorted, // Input
// Add horizontal-displacement for this time step to the sum of
// horizontal displacements
- xysum.x += vel.x*dt;
- xysum.y += vel.y*dt;
+ xyzsum.x += vel.x*dt;
+ xyzsum.y += vel.y*dt;
+ xyzsum.z += vel.z*dt;
#endif
#ifdef TY2
t@@ -168,8 +169,9 @@ __global__ void integrate(Float4* dev_x_sorted, Float4* dev_vel_sorted, // Input
// Add horizontal-displacement for this time step to the sum of
// horizontal displacements
- xysum.x += vel.x*dt + 0.5*acc.x*dt*dt;
- xysum.y += vel.y*dt + 0.5*acc.y*dt*dt;
+ xyzsum.x += vel.x*dt + 0.5*acc.x*dt*dt;
+ xyzsum.y += vel.y*dt + 0.5*acc.y*dt*dt;
+ xyzsum.z += vel.z*dt + 0.5*acc.z*dt*dt;
#endif
#ifdef TY3
t@@ -211,8 +213,9 @@ __global__ void integrate(Float4* dev_x_sorted, Float4* dev_vel_sorted, // Input
// Add horizontal-displacement for this time step to the sum of
// horizontal displacements
- xysum.x += vel.x*dt + 0.5*acc.x*dt*dt + 1.0/6.0*dacc_dt.x*dt*dt*dt;
- xysum.y += vel.y*dt + 0.5*acc.y*dt*dt + 1.0/6.0*dacc_dt.y*dt*dt*dt;
+ xyzsum.x += vel.x*dt + 0.5*acc.x*dt*dt + 1.0/6.0*dacc_dt.x*dt*dt*dt;
+ xyzsum.y += vel.y*dt + 0.5*acc.y*dt*dt + 1.0/6.0*dacc_dt.y*dt*dt*dt;
+ xyzsum.z += vel.z*dt + 0.5*acc.z*dt*dt + 1.0/6.0*dacc_dt.z*dt*dt*dt;
#endif
// Move particles outside the domain across periodic boundaries
t@@ -238,7 +241,7 @@ __global__ void integrate(Float4* dev_x_sorted, Float4* dev_vel_sorted, // Input
__syncthreads();
// Store data in global memory at original, pre-sort positions
- dev_xysum[orig_idx] = xysum;
+ dev_xyzsum[orig_idx] = xyzsum;
dev_acc[orig_idx] = acc;
dev_angacc[orig_idx] = angacc;
dev_angvel[orig_idx] = angvel_new;
(DIR) diff --git a/src/raytracer.cuh b/src/raytracer.cuh
t@@ -476,11 +476,11 @@ __host__ void DEM::render(
unit = "rad/s";
} else if (method == 4) { // Visualize xdisp
- // Convert xysum to xsum
+ // Convert xyzsum to xsum
linarr = new Float[np];
#pragma omp parallel for if(np>100)
for (i = 0; i<np; ++i) {
- linarr[i] = k.xysum[i].x;
+ linarr[i] = k.xyzsum[i].x;
}
transfer = 1;
desc = "X-axis displacement";
(DIR) diff --git a/src/sphere.cpp b/src/sphere.cpp
t@@ -82,7 +82,7 @@ DEM::~DEM(void)
if (verbose == 1)
std::cout << "Freeing host memory: ";
delete[] k.x;
- delete[] k.xysum;
+ delete[] k.xyzsum;
delete[] k.vel;
delete[] k.force;
delete[] k.angpos;
(DIR) diff --git a/src/sphere.h b/src/sphere.h
t@@ -58,7 +58,7 @@ class DEM {
// Particle kinematics arrays
Float4 *dev_x;
- Float2 *dev_xysum;
+ Float4 *dev_xyzsum;
Float4 *dev_vel;
Float4 *dev_vel0;
Float4 *dev_acc;
(DIR) diff --git a/tests/io_tests_fluid.py b/tests/io_tests_fluid.py
t@@ -42,7 +42,7 @@ if numpy.allclose(orig.x, cuda.x, 0.01):
cuda.x = orig.x # ignore small changes
if numpy.max(numpy.abs(cuda.vel - orig.vel)) < 1.0e-5:
cuda.vel = orig.vel # ignore small changes
- cuda.xysum = orig.xysum
+ cuda.xyzsum = orig.xyzsum
cuda.force = orig.force
compare(orig, cuda, "CUDA IO: ")