yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #17595
[Question #670487]: How to extract force-displacement data and how to generate stress output in paraview
New question #670487 on Yade:
https://answers.launchpad.net/yade/+question/670487
Hi,
I am working on uniaxial compression of a concrete column.
I have two basic questions about the code I am using.
1. How do I extract the force and displacement data in a text format?
2. How can I see the stresses in Paraview?
My Running script is,
from yade import pack, plot
################# SIMULATIONS DEFINED HERE
#### packing (previously constructed)
OUT='compressionTest_JCFPM'
#### Simulation Control
rate=-0.05 #deformation rate
iterMax=300000 # maximum number of iterations
saveVTK=4000 # saving output files for paraview
#### Material microproperties
intR=1.1 # allows near neighbour interaction (can be adjusted for every packing)
DENS=2400
YOUNG=17e9
FRICT=34.25
ALPHA=0.15
TENS=3.163e6
COH=2.99e6
#### material definition
def sphereMat(): return JCFpmMat(type=1,density=DENS,young=YOUNG,poisson=ALPHA,frictionAngle=radians(FRICT),tensileStrength=TENS,cohesion=COH)
#### create the specimen
pred=pack.inCylinder((0,0,0),(0,0,0.10),0.025)
O.bodies.append(pack.regularHexa(pred,radius=0.00125,gap=0.,material=sphereMat))
R=0
Rmax=0
nbSpheres=0.
for o in O.bodies:
if isinstance(o.shape,Sphere):
nbSpheres+=1
R+=o.shape.radius
if o.shape.radius>Rmax:
Rmax=o.shape.radius
Rmean=R/nbSpheres
print ('nbSpheres=',nbSpheres,' | Rmean=',Rmean)
#### boundary condition (see utils.uniaxialTestFeatures
bb=utils.uniaxialTestFeatures()
negIds,posIds,longerAxis,crossSectionArea=bb['negIds'],bb['posIds'],bb['axis'],bb['area']
################# ENGINES DEFINED HERE
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=intR,label='Saabb')]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=intR,label='SSgeom')],
[Ip2_JCFpmMat_JCFpmMat_JCFpmPhys(cohesiveTresholdIteration=1,label='interactionPhys')],
[Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM(recordCracks=True,Key=OUT,label='interactionLaw')]
),
UniaxialStrainer(strainRate=rate,axis=longerAxis,asymmetry=0,posIds=posIds,negIds=negIds,crossSectionArea=crossSectionArea,blockDisplacements=1,blockRotations=1,setSpeeds=0,stopStrain=0.1,dead=1,label='strainer'),
GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=10,timestepSafetyCoefficient=0.5, defaultDt=utils.PWaveTimeStep()),
NewtonIntegrator(damping=0.4,label='newton'),
PyRunner(iterPeriod=int(100),initRun=True,command='recorder()',label='data'),
VTKRecorder(iterPeriod=int(saveVTK),initRun=True,fileName=OUT+'-',recorders=['spheres','jcfpm','cracks','stress'],Key=OUT,label='vtk')
]
################# RECORDER DEFINED HERE
def recorder():
yade.plot.addData({'i':O.iter,
'eps':strainer.strain,
'sigma':strainer.avgStress,
#'tc':interactionLaw.nbTensCracks,
#'sc':interactionLaw.nbShearCracks,
#'te':interactionLaw.totalTensCracksE,
#'se':interactionLaw.totalShearCracksE,
'unbF':utils.unbalancedForce()})
plot.saveDataTxt(OUT)
################# PREPROCESSING
#### manage interaction detection factor during the first timestep and then set default interaction range
O.step();
### initializes the interaction detection factor
SSgeom.interactionDetectionFactor=-1.
Saabb.aabbEnlargeFactor=-1.
#### coordination number verification
numSSlinks=0
numCohesivelinks=0
for i in O.interactions:
if isinstance(O.bodies[i.id1].shape,Sphere) and isinstance(O.bodies[i.id2].shape,Sphere):
numSSlinks+=1
if i.phys.isCohesive :
numCohesivelinks+=1
print ("nblinks=", numSSlinks, " | nbCohesivelinks=", numCohesivelinks, "|| Kcohesive=", 2.0*numCohesivelinks/nbSpheres)
################# SIMULATION REALLY STARTS HERE
strainer.dead=0
O.run(iterMax)
I would really appreciate any help I can get.
Thanks,
Anay
--
You received this question notification because your team yade-users is
an answer contact for Yade.