graphs plotting (?)

Asked by Sam

Hi there!

I want to get Text result file from my model but I do not know why it is impossible.
Please guide me how can I do that.

Here is my script:
from yade import pack

from math import *

from yade import plot

from yade import qt

vitesse=0.1

cohN=1e5

cohT=1e5

E=70e9

nu=0.5

d=2658

phi=35

rayon_s=0.005

rayon_g=0.05

rayon_boite=rayon_g+0.0001

espace=0.0

gravity=0

O.materials.append(CohFrictMat(young=E,poisson=nu,density=d,frictionAngle=radians(phi),normalCohesion=cohN,shearCohesion=cohT,label='sol'))

O.materials.append(CohFrictMat(young=10e13,poisson=0,density=10000,frictionAngle=radians(10),normalCohesion=0,shearCohesion=0,label='walls'))

mn,mx=(-rayon_boite*2,-rayon_boite,-rayon_boite*2),(rayon_boite*2,rayon_boite,rayon_boite*2)

walls=utils.aabbWalls([mn,mx],thickness=0,material='walls')

wallIds=O.bodies.append(walls)

sp=pack.regularHexa(yade._packPredicates.inSphere(center=(0,0,0),radius=rayon_g),gap=espace,radius=rayon_s,material='sol')

O.bodies.append(sp)

def plotAddData():

    f = O.forces.f(3)[1]

    d = 2*rayon_g

    load = f

    plot.addData(

        dspl = O.bodies[3].state.displ()[1],

        load = load)

    plot.saveDataTxt('Force.txt')

O.engines=[

    ForceResetter(),

    InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=1),Bo1_Box_Aabb()]),

    InteractionLoop(

        [Ig2_Sphere_Sphere_ScGeom6D(interactionDetectionFactor=1),Ig2_Box_Sphere_ScGeom6D()],

        [Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True,setCohesionOnNewContacts=False),Ip2_FrictMat_FrictMat_FrictPhys()],

        [Law2_ScGeom6D_CohFrictPhys_CohesionMoment()]

        ),

    GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=5,timestepSafetyCoefficient=0.8, defaultDt=utils.PWaveTimeStep()),

    TranslationEngine(

    translationAxis=(0,-1,0),

    ids=[3],

    label='tl',

    velocity=vitesse

    ),

    NewtonIntegrator(damping=0.3, gravity=[0, gravity, 0]),

    PyRunner(iterPeriod=10,command='plotAddData()'),

]

O.step()

for i in O.interactions:

 i.phys.unp = i.geom.penetrationDepth

print len([i for i in O.interactions])

O.dt=utils.PWaveTimeStep()

O.usesTimeStepper=True

yade.qt.Controller()

qt.View()

plot.plots = {'dspl': 'load'}

plot.plot()

O.saveTmp()

Best regards
Sam

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Sam
Solved:
Last query:
Last reply:
Revision history for this message
Jan Stránský (honzik) said :
#1

Hi Sam,
once again, please try more effort on the question formulation:
e.g. please, make the title and actual question consistent. Do you want graph plotting (title) or text results file (question)?

> graphs plotting (?)

[1,2]
plot.plots= {...}
plot.plot()

> I want to get Text result file

with open(resultFile,'w') as f:
   f.write(...)
or
plot.saveDataTxt(resultFile)

> I do not know why it is impossible

try to avoid words like "impossible" as it is rarely the case. Instead, much more helpful would be "I have tried this, but I got empty file. I have tried that, but got this and that error" etc.

cheers
Jan

Revision history for this message
Sam (sambahmani) said :
#2

Dear Jan,

Thank you for your great response. I agree with you and I will do my best for next time.

Cheers
Sam