Question #224128 on Yade changed:
https://answers.launchpad.net/yade/+question/224128

    Status: Answered => Open

Fu zuoguang is still having a problem:
Dear Jan Stránsky :
    I am sorry for not giving all details of my script for you, so all the 
incorrect scripts are as folllw:
### fundamental details of application ###
# filename: initial-state.py
# unicode: UTF-8 
from yade import pack,qt,plot

### prescribing variables ###
# material defination
spheremat = 
O.materials.append(ViscElMat(kn=4e6,ks=4e6,cn=.0,cs=.0,density=1500,frictionAngle=25.565))
wallmat = 
O.materials.append(ViscElMat(kn=1e8,ks=1e8,cn=.0,cs=.0,density=2600,frictionAngle=25.565))
# wallIds defination
mn,mx=Vector3(0,0,0),Vector3(7,7,1)
wallIds=O.bodies.append(utils.aabbWalls([mn,mx],thickness=.01,material=wallmat))
# ThreeDTriaxialEngine defination
triax=ThreeDTriaxialEngine(
        wall_bottom_id=wallIds[2],wall_top_id=wallIds[3],
        wall_left_id=wallIds[0],wall_right_id=wallIds[1],
        wall_back_id=wallIds[4],wall_front_id=wallIds[5],
        wall_front_activated = False,wall_back_activated = False,
        internalCompaction=False, 
        stressControl_1 = True, stressControl_2 = True,stressControl_3 = True,
        computeStressStrainInterval =10,
        sigma_iso = 1.25e5,
        sigma1 = 1.25e5,
        sigma2 = 1.25e5,
        sigma3 = 1.25e5,
        strainRate1 = 0.01,strainRate2 = 0.01,
)
# Simulation controller defination 
unb=unbalancedForce()
meanS=(triax.stress(triax.wall_right_id)[0]+triax.stress(triax.wall_top_id)[1])/2
q=unb
r=abs(meanS-triax.sigma_iso)/triax.sigma_iso
### functions defination ###
def checkUnbalanced():
    unb=unbalancedForce()
    
meanS=(triax.stress(triax.wall_right_id)[0]+triax.stress(triax.wall_top_id)[1])/2
    q=unb
    r=abs(meanS-triax.sigma_iso)/triax.sigma_iso
    if q<0.01 and r<1e-5:
       O.pause()
       O.loadTmp('qw')
 
### control flow ###
# particles generation
O.periodic=1
O.cell.setBox(7,7,7)
sp=pack.SpherePack()
sp.makeCloud((0,0,.5),(7,7,.5),rMean=-1,rRelFuzz=0,num=800,periodic=True)
sp.toSimulation(material=spheremat)
O.periodic=0
# blockedDOFs
for b in O.bodies:
        if isinstance(b.shape,Sphere):
                 b.state.blockedDOFs='zXY'
# Simulation defination
O.engines=[
        ForceResetter(),
        
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb(),Bo1_Wall_Aabb()]),
        InteractionLoop(
                
[Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom(),Ig2_Wall_Sphere_ScGeom()],
                [Ip2_ViscElMat_ViscElMat_ViscElPhys()],
                [Law2_ScGeom_ViscElPhys_Basic()]
        ),
        
GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8),
        triax,
        NewtonIntegrator(damping=.1),
        PyRunner(command='checkUnbalanced()',iterPeriod=200)
]
# calculation steps defination
O.dt = 2e-4
O.run()
#########################################################################################
O.loadTmp('qw')
triax01=ThreeDTriaxialEngine(
        wall_bottom_id=wallIds[2],wall_top_id=wallIds[3],
        wall_left_id=wallIds[0],wall_right_id=wallIds[1],
        wall_back_id=wallIds[4],wall_front_id=wallIds[5],
        wall_front_activated = False,wall_back_activated = False,
        internalCompaction=False, 
        stressControl_1 = True, stressControl_2 = False,stressControl_3 = True,
        computeStressStrainInterval =10,
        sigma_iso = 1.25e5,
        sigma1 = 1.25e5,
        sigma2 = 1.25e5,
#       sigma3 = 1.25e5,
        strainRate1 = 0.001,strainRate2 = 0.15,
)
O.engines=[
        ForceResetter(),
        
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb(),Bo1_Wall_Aabb()]),
        InteractionLoop(
                
[Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom(),Ig2_Wall_Sphere_ScGeom()],
                [Ip2_ViscElMat_ViscElMat_ViscElPhys()],
                [Law2_ScGeom_ViscElPhys_Basic()]
        ),
        
GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8),
        triax01,
        NewtonIntegrator(damping=.1),
]
# calculation steps defination
O.dt = 2e-4
O.run(10000,True)

(1).The python shell provide me an error warning that can be expressed as that:
"terminate called after throwing an instance of 
'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::lock_error>
 >'
what():  boost::lock_error
Aborted (core dumped)"
But I divide this script into two parts in order to inheriting initial state to 
the second-step simulation and the second part of this script starts with 
"O.loadTmp('qw')". It's worth mentioning that I copy all the details of the 
second script and paste them to YADE shell instead of making them be read by 
YADE shell directly. So it can work well. I do not know why this phenomenon 
appear.

(2).I need to do post-processing with third-party software after the simulation 
task is over. So it is essential for me to record all the variables I want to 
get in a independent txt, of which the framework is like(I want to get the 
displacement field of specimen):
"particles' id   X-cord   Y-cord   X-cord  radius disp-1  disp-2  disp-3" 
I failed to find any example for "disp" getting, please tell me how to write 
the py script for this purpose.

(3).The color of particles is randomly assigned in the process of particles 
generation accord to my script and I can hardly distinguish the statement of 
particles after simulation stopped. So I 
intend to define theirs color in special needs and the first step of this work 
is to define appropriate partition of specimen. Is this can be achieved in YADE 
and how can I do to accomplish it?

Seeking your help!

-- 
You received this question notification because you are a member of
yade-users, which 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