yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #21561
[Question #687646]: no view about qt.View() and yade.qt.Controller()
New question #687646 on Yade:
https://answers.launchpad.net/yade/+question/687646
My yade is come from GitLib source, and cmake, make, make-install to my computer. I build a symbol link named "yadeImport".
The system can run very nice, if I use the command in terminal
"~/myYade/install/bin/yade my.py". I can controll the simulation by controller, and see the 3D simuliation process.
But, today, I want run the code by script. the yade.qt.View(), yade.qt.Controller(), just get two black windows. I hope to find the answer from there. And somebody says that the example of "triax-tutorial" could be help me. So I use the code as script-session2.py
The problem is the same. The yade.qt.View() and yade.qt.controller() just the black windows. I have two problems:
(1) How to get 3D view() by runing the script?
(2) If I cannot get the 3D process during simulation, how to save the date of each step of process, and replay after simulation?
Beacause my code is complex, I put the script-session2.py as below, the problem is the same.
# -*- coding: utf-8 -*-
from __future__ import print_function
from yade import pack
num_spheres=500
## corners of the initial packing
mn,mx=Vector3(0,0,0),Vector3(1,1,1)
thick = 0.01
compFricDegree = 2
rate=0.2
damp=0.1
stabilityThreshold=0.001
key='_define_a_name_'
## create material #0, which will be used as default
O.materials.append(FrictMat(young=5e6,poisson=0.5,frictionAngle=radians(compFricDegree),density=2600,label='spheres'))
O.materials.append(FrictMat(young=5e6,poisson=0.5,frictionAngle=0,density=0,label='walls'))
## create walls around the packing
walls=aabbWalls([mn,mx],thickness=thick,material='walls')
wallIds=O.bodies.append(walls)
sp=pack.SpherePack()
sp.makeCloud(mn,mx,-1,0.3333,num_spheres,False, 0.95)
volume = (mx[0]-mn[0])*(mx[1]-mn[1])*(mx[2]-mn[2])
mean_rad = pow(0.09*volume/num_spheres,0.3333)
clumps=False
if clumps:
c1=pack.SpherePack([((-0.2*mean_rad,0,0),0.5*mean_rad),((0.2*mean_rad,0,0),0.5*mean_rad)])
sp.makeClumpCloud((0,0,0),(1,1,1),[c1],periodic=False)
O.bodies.append([sphere(center,rad,material='spheres') for center,rad in sp])
standalone,clumps=sp.getClumps()
for clump in clumps:
O.bodies.clump(clump)
for i in clump[1:]: O.bodies[i].shape.color=O.bodies[clump[0]].shape.color
#sp.toSimulation()
else:
O.bodies.append([sphere(center,rad,material='spheres') for center,rad in sp])
O.dt=.5*PWaveTimeStep() # initial timestep, to not explode right away
O.usesTimeStepper=True
triax=ThreeDTriaxialEngine(
maxMultiplier=1.005,
finalMaxMultiplier=1.002,
thickness = thick,
stressControl_1 = False,
stressControl_2 = False,
stressControl_3 = False,
## Independant stress values for anisotropic loadings
goal1=-10000,
goal2=-10000,
goal3=-10000,
internalCompaction=True,
Key=key,
)
newton=NewtonIntegrator(damping=damp)
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()],verletDist=-mean_rad*0.06),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys()],
[Law2_ScGeom_FrictPhys_CundallStrack()]
),
GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8, defaultDt=4*PWaveTimeStep()),
triax,
TriaxialStateRecorder(iterPeriod=100,file='WallStresses'+key),
newton
]
#Display spheres with 2 colors for seeing rotations better
Gl1_Sphere.stripes=0
yade.qt.Controller(), yade.qt.View()
while 1:
O.run(1000, True)
#the global unbalanced force on dynamic bodies, thus excluding boundaries, which are not at equilibrium
unb=unbalancedForce()
#average stress
#note: triax.stress(k) returns a stress vector, so we need to keep only the normal component
meanS=(triax.stress(triax.wall_right_id)[0]+triax.stress(triax.wall_top_id)[1]+triax.stress(triax.wall_front_id)[2])/3
print('unbalanced force:',unb,' mean stress: ',meanS)
if unb<stabilityThreshold and abs(meanS+10000)/10000<0.001:
break
O.save('compressedState'+key+'.xml')
print("### Isotropic state saved ###")
#let us turn internal compaction off...
triax.internalCompaction=False
#
triax.setContactProperties(30)
#... and make stress control independant on each axis
triax.stressControl_1=triax.stressControl_2=triax.stressControl_3=True
# We have to turn all these flags true, else boundaries will be fixed
triax.wall_bottom_activated=True
triax.wall_top_activated=True
triax.wall_left_activated=True
triax.wall_right_activated=True
triax.wall_back_activated=True
triax.wall_front_activated=True
#If we want a triaxial loading at imposed strain rate, let's assign srain rate instead of stress
triax.stressControl_2=0 #we are tired of typing "True" and "False", we use implicit conversion from integer to boolean
triax.strainRate2=0.01
triax.strainRate1=triax.strainRate3=1000.0
--
You received this question notification because your team yade-users is
an answer contact for Yade.