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

this is an example of a triaxial shear test

from yade import pack,plot,qt,export
IsoSigma = -100.
O.periodic=True

# define material
idSand=O.materials.append(FrictMat(young=100e3,poisson=1.,frictionAngle=radians(20),density=2650,label='sand'))

# create particles
sp1=pack.SpherePack()
sp1.makeCloud(maxCorner=(0.02, 0.02, 0.02), psdSizes=[0.00017, 0.000191, 
0.0002285, 0.00026, 0.000292, 0.000325, 0.00035], psdCumm=[0.0, 0.1, 0.3, 0.5, 
0.6, 0.9, 1], periodic=True,num=5000,seed=1)
sp1.toSimulation(color=(0,0,1),material=idSand)


#### show how to use makeClumpTemplate():


#dyad:
relRadList1 = [1,1]
relPosList1 = [[0.4,0,0],[-0.4,0,0]]

#peanut:
#relRadList2 = [.5,1,.5]
#relPosList2 = [[1,0,0],[0,0,0],[-1,0,0]]

#stick:
#relRadList3 = [1,1,1,1,1]
#relPosList3 = [[0,1,0],[0,2,0],[0,3,0],[0,4,0],[0,5,0]]

templates= []
templates.append(clumpTemplate(relRadii=relRadList1,relPositions=relPosList1))
#templates.append(clumpTemplate(relRadii=relRadList2,relPositions=relPosList2))
#templates.append(clumpTemplate(relRadii=relRadList3,relPositions=relPosList3))

#### show how to use replaceByClumps():
#replace by 50% dyads, 30% peanuts and 10% sticks:
O.bodies.replaceByClumps(templates,[1.],discretization=10)
O.engines=[
        ForceResetter(),
        InsertionSortCollider([Bo1_Sphere_Aabb()]),
        InteractionLoop(
                [Ig2_Sphere_Sphere_ScGeom()],
                [Ip2_FrictMat_FrictMat_FrictPhys()],
                [Law2_ScGeom_FrictPhys_CundallStrack()]),
#       PyRunner(command='fabric()',iterPeriod=10000),
        GlobalStiffnessTimeStepper(),
        NewtonIntegrator(damping=0.2),
        PeriTriaxController(    goal=(IsoSigma,IsoSigma,IsoSigma), # Vector6 of 
prescribed final values
                                stressMask=7,
                                dynCell=True,
                                maxStrainRate=(3.e+0,3.e+0,3.e+0),
                                maxUnbalanced=0.0001,
                                relStressTol=1.e-3,
                                doneHook='Finished()',
                                label='p3d'
        ),
#       VTKRecorder(fileName='3d-vtk-',recorders=['all'],iterPeriod=10000),
#       PyRunner(command='strains()',iterPeriod=10000),
#       PyRunner(command='balls()',iterPeriod=10000),
        #PyRunner(command='plotAddData()',iterPeriod=100),
]


'''
def plotAddData():
        plot.addData(
                iter=O.iter,iter_=O.iter,
                sxx=p3d.stress[0],syy=p3d.stress[1],szz=p3d.stress[2],
                exx=O.cell.size[0],eyy=O.cell.size[1],ezz=O.cell.size[2],
                Z=avgNumInteractions(),
                Zm=avgNumInteractions(skipFree=True),
                poros=porosity(),
#               poros=voxelPorosity(500,(0,0,0),O.cell.size),
                unbalanced=utils.unbalancedForce(),
                t=O.time,
                gWork=O.energy['gravWork'],
                Ep=O.energy['elastPotential'],
                Edamp=O.energy['nonviscDamp'],
                Ediss=O.energy['plastDissip'],
                Ekin=utils.kineticEnergy(),
                Etot=O.energy.total(),**O.energy
                
        )
        
plot.saveDataTxt('macroFile',vars=('t','exx','eyy','ezz','sxx','syy','szz','Z','Zm','poros'))
        
plot.saveDataTxt('energyFile',vars=('t','Etot','unbalanced','gWork','Edamp','Ekin'))

O.trackEnergy=True

# plotting 
plot.live=True
plot.plots={'iter':('sxx','syy','szz'),'iter_':('exx','eyy','ezz'), ' 
iter':('unbalanced'), 
     #energy plot
            ' iter ':(O.energy.keys,None,'Etot')
}

def fabric():
        fileNomb='fabric'+str(O.iter)
        f = open(fileNomb,'w')
        f.write('id1 id2 x_cp y_cp z_cp n_x n_y n_z Fn_x Fn_y Fn_z Fs_x Fs_y 
Fs_z ovp\n')
        for i in O.interactions:
                if not i.isReal: continue
                tacts = i.geom.contactPoint
                nmls = i.geom.normal
                ovp = i.geom.penetrationDepth
                Fn = i.phys.normalForce
                Fs = i.phys.shearForce
                f.write('%-16d %-16d %-16g %-16g %-16g %-16g %-16g %-16g %-16g 
%-16g %-16g %-16g %-16g %-16g %-16g\n'%(i.id1,
                           
i.id2,tacts[0],tacts[1],tacts[2],nmls[0],nmls[1],nmls[2],Fn[0],Fn[1],Fn[2],Fs[0],Fs[1],Fs[2],ovp))
        f.close

def balls():
        fileCalled='ball'+str(O.iter)
        export.text(fileCalled)

def strains():
        fileNome='strain'+str(O.iter)
        f = open(fileNome,'w')
        f.write('b.id velx vely velz rotx roty rotz\n')
        for b in O.bodies:
                if isinstance(b.shape,Sphere):
                        vels = b.state.vel
                        rots = b.state.rot()
                        f.write('%-16d %-16g %-16g %-16g %-16g %-16g 
%-16g\n'%(b.id, vels[0],vels[1],vels[2],
                                   rots[0],rots[1],rots[2]))
        f.close
'''
def Finished():
        O.save('isotropicState.xml')
        print('Finished')
        print(porosity())
        O.pause()
  
O.run()
#plot.plot(subPlots=True)


how can I change the particles from circular to ellipse?



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