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

Hello Everyone,

I'm trying to model a uniaxial compression of a concrete cylinder. First I 
create the cylinder as a cloud of spheres in a cylindrical facet and compress 
it to a certain porosity. Then I remove the facet and start the uniaxial 
compression. I'm using CPM material model. The problem is that after achieving 
the desired porosity, all the bonds between the spheres is already damaged. I 
want to reset the interactions and change material properties (i.e. young, 
friction angle..etc) before starting the uniaxial compression. I tried doing 
that using O.interactions.clear() but the spheres explode. Can anyone please 
help? My code is below.

Thank you,
Othman

PS: I tried doing the compaction to a certain porosity in a different code and 
export the compacted spheres as a txt file and then import it in another code 
for uniaxial compression but didn't work because porosity was reset to the 
original cloud porosity. If anyone know how to export then import without 
loosing the applied compaction, it will make life much easier. Thanks   



-------------------------------------------------------
from yade import pack

targetp = .45 ##specify the targeted porosity

##specimen geometry
radiuscyl=.05
heightcyl=.203*3
SphereRadius = .0045
# material parameters
E=1e6 #initial young modulus is low so that compaction is faster
poiss=.15
eps=1e-4
strength=2e5

concrete=O.materials.append(CpmMat(young = E, poisson = poiss,frictionAngle = 
atan(.2), epsCrackOnset = eps, relDuctility = 30, sigmaT = strength))



################ spheres ################

sp=pack.SpherePack()                                                            
                        
sp.makeCloud((0,0,0),(.3,.3,0.7),rMean=SphereRadius,rRelFuzz=.3,periodic=True,seed=1)
                                   
#### cylinder extraction                                                        
                        
pred=pack.inCylinder((.2,.2,0),(.2,.2,heightcyl),radiuscyl)                     
                                
spFilter=filterSpherePack(pred,sp,Material=concrete, returnSpherePack=True)     
                        
spFilter.toSimulation(color=(1,0.5,0.2))


################ facet ################

facets=geom.facetCylinder((.2,.2,heightcyl/2),radiuscyl,heightcyl,segmentsNumber=50,wallMask=4)

cylinder=O.bodies.append(facets)
yade.qt.View()


##creating disks 

d1=geom.facetCylinder((.2,.2,heightcyl),radiuscyl-.001,0,segmentsNumber=50,wallMask=1)
d2=geom.facetCylinder((.2,.2,0),radiuscyl-.001,0,segmentsNumber=50,wallMask=1)

disk1IDs= O.bodies.append(d1)
disk2IDs= O.bodies.append(d2)

for i in disk1IDs:
        body= O.bodies[i]
        body.state.vel = (0,0,-0.15)

for n in disk2IDs:
        body= O.bodies[n]
        body.state.vel = (0,0,0.15)


################ Compaction ################
O.dt=.5*utils.PWaveTimeStep()
enlargeFactor=1.5
O.engines=[
        ForceResetter(),
        InsertionSortCollider([
                Bo1_Sphere_Aabb(aabbEnlargeFactor=enlargeFactor,label='bo1s'),
                Bo1_Facet_Aabb()
        ]),
        InteractionLoop(
                [
                        
Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=enlargeFactor,label='ss2d3dg'),
                        Ig2_Facet_Sphere_ScGeom(),
                ],
                [
                        
                        Ip2_CpmMat_CpmMat_CpmPhys(),
                        Ip2_CpmMat_CpmMat_CpmPhys(),
                ],
                [
                        
                        Law2_ScGeom_CpmPhys_Cpm(),
                ],
        ),

        NewtonIntegrator(damping=.3),
        CpmStateUpdater(realPeriod=.5), 

        PyRunner(iterPeriod=500,command='stop()'),

]
O.step()
# reset interaction detection enlargement
bo1s.aabbEnlargeFactor=ss2d3dg.interactionDetectionFactor=1.0

O.run()  

################ Uniaxial compression ################
def stop():
   if utils.porosity()<targetp:
        O.pause()
        print 'Finished'
        print ('porosity = ', utils.porosity())
        for i in cylinder: O.bodies.erase(i)
        print ('unbalanced forces = ', utils.unbalancedForce())
        utils.calm()
        O.interactions.clear()
        O.step()        
        for i in O.interactions:
                i.phys.young=1e9 # update young modulus
        #start uniaxial compression
        for b in disk1IDs:
                body= O.bodies[b]
                body.state.vel = (0,0,-0.009)
        for n in disk2IDs:
                body= O.bodies[n]
                body.state.vel = (0,0,0.009)

        O.run()



-- 
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     : [email protected]
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp

Reply via email to