Re: [Yade-users] [Question #669048]: CU triaxial (PFV)
Question #669048 on Yade changed: https://answers.launchpad.net/yade/+question/669048 Status: Answered => Solved SayedHessam confirmed that the question is solved: Thank you, Robert -- 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 : yade-users@lists.launchpad.net Unsubscribe : https://launchpad.net/~yade-users More help : https://help.launchpad.net/ListHelp
Re: [Yade-users] [Question #669048]: CU triaxial (PFV)
Question #669048 on Yade changed: https://answers.launchpad.net/yade/+question/669048 Status: Open => Answered Robert Caulk proposed the following answer: Hello Sam, The script you posted on Comment #6 does not contain a fluid model (it is inactive when you set flow.dead=1). Actually, the script from Comment #6 also does not contain a packing, so it is pretty far from yielding any kind of FlowEngine error like the one you posted in the OP. You are welcome to post the script that causes the FlowEngine error shown in the OP and we can try to help fix it. Or if you are having problems related to a different topic, please open a new thread. My responses below are w.r.t to your other partial script posted in Comment #4, since that is the script pertaining to your questions. >> You mentioned I am trying to compress an incompressible fluid, whereas Water is incompressible fluid and so what do you mean exactly about it?? >> Actually, looking at your script from Comment #4, I see you are choosing to model the water as a compressible fluid when you set flow.fluidBulkModulus=2e9 [1]. So I was mistaken when I said you were trying to compress an incompressible fluid. Instead, you are compressing a compressible fluid so your problem may actually be well-posed. But you still have not posted an MWE that yields the error shown in the OP (is that what we are trying to fix?), so I am still speculating. >> Also, you said I imposed the pressure at the centre and my boundary conditions are not flow. While I want to model Triaxial CU (Undrained Condition) and water cannot flow out from the assembly?? >> I'm sorry, what is the question? I will just give information in an attempt to answer: you are choosing to model the boundaries as no-flux boundaries when you set flow.bndCondIsPressure=[0,0,0,0,0,0] [2]. Similarly, you are imposing a constant pressure in the center of your system when you set flow.imposePressure(Vector3(triax.width/2,triax.height/2,triax.depth/2),0.001) [3]. Cheers, Robert [1]https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.FlowEngine.fluidBulkModulus [2https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.FlowEngine.bndCondIsPressure [3]https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.FlowEngine.imposePressure -- 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 : yade-users@lists.launchpad.net Unsubscribe : https://launchpad.net/~yade-users More help : https://help.launchpad.net/ListHelp
Re: [Yade-users] [Question #669048]: CU triaxial (PFV)
Question #669048 on Yade changed: https://answers.launchpad.net/yade/+question/669048 Status: Answered => Open SayedHessam is still having a problem: Dear Robert, Thank you for your valuable comment. BTW, I have just two more questions about your last comment (#5). You mentioned I am trying to compress an incompressible fluid, whereas Water is incompressible fluid and so what do you mean exactly about it?? Also, you said I imposed the pressure at the centre and my boundary conditions are not flow. While I want to model Triaxial CU (Undrained Condition) and water cannot flow out from the assembly?? Regards Sam You can find herewith MWE.py, as you requested: from yade import pack ### DEFINING VARIABLES AND MATERIALS ### nRead=readParamsFromTable( num_spheres=700, compFricDegree = 35, key='_Triax_PFV_CU_', unknownOk=True ) from yade.params import table num_spheres=table.num_spheres key=table.key targetPorosity = 0.425 compFricDegree = table.compFricDegree finalFricDegree = 35 rate=-0.01 damp=0.2 stabilityThreshold=0.01 young=1e8 mn,mx=Vector3(0,0,0),Vector3(1,1,1) O.materials.append(FrictMat(young=young,poisson=0.3,frictionAngle=radians(compFricDegree),density=2650,label='spheres')) O.materials.append(FrictMat(young=young,poisson=0.3,frictionAngle=0,density=0,label='walls')) walls=aabbWalls([mn,mx],thickness=0,material='walls') ### DEFINING ENGINES ### triax=TriaxialStressController( maxMultiplier=1.+2e4/young, finalMaxMultiplier=1.+2e3/young, thickness = 0, stressMask = 7, internalCompaction=True, ) newton=NewtonIntegrator(damping=damp) O.engines=[ ForceResetter(), InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]), InteractionLoop( [Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()], [Ip2_FrictMat_FrictMat_FrictPhys()], [Law2_ScGeom_FrictPhys_CundallStrack()] ), FlowEngine(dead=1,label="flow"), GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8), triax, TriaxialStateRecorder(iterPeriod=100,file='WallStresses'+table.key), newton, ] O.dt=.5*utils.PWaveTimeStep() Gl1_Sphere.stripes=0 if nRead==0: yade.qt.Controller(), yade.qt.View() ### ### APPLYING CONFINING PRESSURE ### ### triax.goal1=triax.goal2=triax.goal3=-10 while 1: O.run(1000, True) unb=unbalancedForce() print 'unbalanced force:',unb,' mean stress: ',triax.meanStress if unbtargetPorosity: compFricDegree = 0.95*compFricDegree setContactFriction(radians(compFricDegree)) print "\r Friction: ",compFricDegree," porosity:",triax.porosity, sys.stdout.flush() O.run(500,1) O.save('compactedState'+key+'.yade.gz') print "### Compacted state saved ###" while 1: O.run(100, True) unb=unbalancedForce() print 'unbalanced force:',unb,' mean stress: ',triax.meanStress if unbhttps://launchpad.net/~yade-users Post to : yade-users@lists.launchpad.net Unsubscribe : https://launchpad.net/~yade-users More help : https://help.launchpad.net/ListHelp
Re: [Yade-users] [Question #669048]: CU triaxial (PFV)
Question #669048 on Yade changed: https://answers.launchpad.net/yade/+question/669048 Status: Solved => Open SayedHessam is still having a problem: Dear Robert, Sorry for the lack of information. BTW, you can find herewith my script, as you requested: ### DEFINING ENGINES ### triax=TriaxialStressController( ## TriaxialStressController will be used to control stress and strain. It controls particles size and plates positions. ## this control of boundary conditions was used for instance in http://dx.doi.org/10.1016/j.ijengsci.2008.07.002 maxMultiplier=1.+2e4/young, # spheres growing factor (fast growth) finalMaxMultiplier=1.+2e3/young, # spheres growing factor (slow growth) thickness = 0, ## switch stress/strain control using a bitmask. What is a bitmask, huh?! ## Say x=1 if stess is controlled on x, else x=0. Same for for y and z, which are 1 or 0. ## Then an integer uniquely defining the combination of all these tests is: mask = x*1 + y*2 + z*4 ## to put it differently, the mask is the integer whose binary representation is xyz, i.e. ## "100" (1) means "x", "110" (3) means "x and y", "111" (7) means "x and y and z", etc. stressMask = 7, internalCompaction=True, # If true the confining pressure is generated by growing particles ) newton=NewtonIntegrator(damping=damp) O.engines=[ ForceResetter(), InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]), InteractionLoop( [Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()], [Ip2_FrictMat_FrictMat_FrictPhys()], [Law2_ScGeom_FrictPhys_CundallStrack()] ), ## We will use the global stiffness of each body to determine an optimal timestep (see https://yade-dem.org/w/images/1/1b/Chareyre_licensed.pdf) FlowEngine(dead=1,label="flow"),#introduced as a dead engine for the moment, see 2nd section GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8), triax, TriaxialStateRecorder(iterPeriod=100,file='WallStresses'+table.key), newton ] #Display spheres with 2 colors for seeing rotations better Gl1_Sphere.stripes=0 if nRead==0: yade.qt.Controller(), yade.qt.View() ## UNCOMMENT THE FOLLOWING SECTIONS ONE BY ONE ## DEPENDING ON YOUR EDITOR, IT COULD BE DONE ## BY SELECTING THE CODE BLOCKS BETWEEN THE SUBTITLES ## AND PRESSING CTRL+SHIFT+D ### ### APPLYING CONFINING PRESSURE ### ### #the value of (isotropic) confining stress defines the target stress to be applied in all three directions triax.goal1=triax.goal2=triax.goal3=-1 while 1: O.run(1000, True) #the global unbalanced force on dynamic bodies, thus excluding boundaries, which are not at equilibrium unb=unbalancedForce() print 'unbalanced force:',unb,' mean stress: ',triax.meanStress if unb -5: O.run(100) devi_test = -triax.stress(triax.wall_top_id)[1] - (-triax.stress(triax.wall_right_id)[0]\ -triax.stress(triax.wall_front_id)[2]) / 2.0 #B. Activate flow engine and set boundary conditions in order to get permeability flow.dead=0 flow.defTolerance=0.3 flow.meshUpdateInterval=200 flow.useSolver=3 flow.permeabilityFactor=1 flow.viscosity=1.3e-3 flow.fluidBulkModulus = 2e9 flow.imposePressure(Vector3(triax.width/2,triax.height/2,triax.depth/2),0.001) flow.bndCondIsPressure=[0,0,0,0,0,0] flow.bndCondValue=[0,0,0,0,0,0] flow.boundaryUseMaxMin=[0,0,0,0,0,0] O.dt=0.1e-3 O.dynDt=False O.run(1,1) Qin = flow.getBoundaryFlux(2) Qout = flow.getBoundaryFlux(3) tic_toc = 0 print(O.iter) print(triax.stressMask) print(triax.goal1) print(triax.goal2) print(triax.goal3) Regards Sam -- 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 : yade-users@lists.launchpad.net Unsubscribe : https://launchpad.net/~yade-users More help : https://help.launchpad.net/ListHelp
Re: [Yade-users] [Question #669048]: CU triaxial (PFV)
Question #669048 on Yade changed: https://answers.launchpad.net/yade/+question/669048 Status: Needs information => Solved SayedHessam confirmed that the question is solved: Dear Robert, Sorry for the lack of information. BTW, you can find herewith my script, as you req -- 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 : yade-users@lists.launchpad.net Unsubscribe : https://launchpad.net/~yade-users More help : https://help.launchpad.net/ListHelp
Re: [Yade-users] [Question #669048]: CU triaxial (PFV)
Question #669048 on Yade changed: https://answers.launchpad.net/yade/+question/669048 SayedHessam posted a new comment: Dear Robert, Sorry for the lack of information. BTW, you can find herewith my script, as you requested: ### DEFINING ENGINES ### triax=TriaxialStressController( ## TriaxialStressController will be used to control stress and strain. It controls particles size and plates positions. ## this control of boundary conditions was used for instance in http://dx.doi.org/10.1016/j.ijengsci.2008.07.002 maxMultiplier=1.+2e4/young, # spheres growing factor (fast growth) finalMaxMultiplier=1.+2e3/young, # spheres growing factor (slow growth) thickness = 0, ## switch stress/strain control using a bitmask. What is a bitmask, huh?! ## Say x=1 if stess is controlled on x, else x=0. Same for for y and z, which are 1 or 0. ## Then an integer uniquely defining the combination of all these tests is: mask = x*1 + y*2 + z*4 ## to put it differently, the mask is the integer whose binary representation is xyz, i.e. ## "100" (1) means "x", "110" (3) means "x and y", "111" (7) means "x and y and z", etc. stressMask = 7, internalCompaction=True, # If true the confining pressure is generated by growing particles ) newton=NewtonIntegrator(damping=damp) O.engines=[ ForceResetter(), InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]), InteractionLoop( [Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()], [Ip2_FrictMat_FrictMat_FrictPhys()], [Law2_ScGeom_FrictPhys_CundallStrack()] ), ## We will use the global stiffness of each body to determine an optimal timestep (see https://yade-dem.org/w/images/1/1b/Chareyre_licensed.pdf) FlowEngine(dead=1,label="flow"),#introduced as a dead engine for the moment, see 2nd section GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8), triax, TriaxialStateRecorder(iterPeriod=100,file='WallStresses'+table.key), newton ] #Display spheres with 2 colors for seeing rotations better Gl1_Sphere.stripes=0 if nRead==0: yade.qt.Controller(), yade.qt.View() ## UNCOMMENT THE FOLLOWING SECTIONS ONE BY ONE ## DEPENDING ON YOUR EDITOR, IT COULD BE DONE ## BY SELECTING THE CODE BLOCKS BETWEEN THE SUBTITLES ## AND PRESSING CTRL+SHIFT+D ### ### APPLYING CONFINING PRESSURE ### ### #the value of (isotropic) confining stress defines the target stress to be applied in all three directions triax.goal1=triax.goal2=triax.goal3=-1 while 1: O.run(1000, True) #the global unbalanced force on dynamic bodies, thus excluding boundaries, which are not at equilibrium unb=unbalancedForce() print 'unbalanced force:',unb,' mean stress: ',triax.meanStress if unb -5: O.run(100) devi_test = -triax.stress(triax.wall_top_id)[1] - (-triax.stress(triax.wall_right_id)[0]\ -triax.stress(triax.wall_front_id)[2]) / 2.0 #B. Activate flow engine and set boundary conditions in order to get permeability flow.dead=0 flow.defTolerance=0.3 flow.meshUpdateInterval=200 flow.useSolver=3 flow.permeabilityFactor=1 flow.viscosity=1.3e-3 flow.fluidBulkModulus = 2e9 flow.imposePressure(Vector3(triax.width/2,triax.height/2,triax.depth/2),0.001) flow.bndCondIsPressure=[0,0,0,0,0,0] flow.bndCondValue=[0,0,0,0,0,0] flow.boundaryUseMaxMin=[0,0,0,0,0,0] O.dt=0.1e-3 O.dynDt=False O.run(1,1) Qin = flow.getBoundaryFlux(2) Qout = flow.getBoundaryFlux(3) tic_toc = 0 print(O.iter) print(triax.stressMask) print(triax.goal1) print(triax.goal2) print(triax.goal3) Regards Sam -- 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 : yade-users@lists.launchpad.net Unsubscribe : https://launchpad.net/~yade-users More help : https://help.launchpad.net/ListHelp
Re: [Yade-users] [Question #669048]: CU triaxial (PFV)
Question #669048 on Yade changed: https://answers.launchpad.net/yade/+question/669048 Status: Open => Needs information Robert Caulk requested more information: Hello Sam, CHOLMOD usually throws this error when the boundary conditions are improperly defined (hence the not positive definite). But it might also throw this error if the time step is too large or if your packing has exploded. One way or the other, there is no way to know which problem is yours since you have simply posted the error and you have not posted a minimal working example [1]. [1]https://yade-dem.org/wiki/Howtoask Cheers, Robert -- 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 : yade-users@lists.launchpad.net Unsubscribe : https://launchpad.net/~yade-users More help : https://help.launchpad.net/ListHelp
[Yade-users] [Question #669048]: CU triaxial (PFV)
New question #669048 on Yade: https://answers.launchpad.net/yade/+question/669048 Hey Guys, I tried to model the triaxial (CU) and try to model my engine based the PFV but I face an issue when I run my script. I appreciate it if you let me know how can I solve this challenge in my model. You can find herewith the issue: Welcome to Yade 1.20.0 TCP python prompt on localhost:9000, auth cookie `cseukd' XMLRPC info provider on http://localhost:21000 Running script pfvmodify.py WARN /build/yade-KKgSmd/yade-1.20.0/pkg/dem/SpherePack.cpp:215 makeCloud: The size distribution has been scaled down by a factor pack.appliedPsdScaling=0.625431 unbalanced force: 0.0195013305315 mean stress: -7.82565707168 unbalanced force: 0.318869367055 mean stress: -7990.17746607 unbalanced force: 0.0733735650605 mean stress: -9769.04705507 unbalanced force: 0.0430250388519 mean stress: -9918.88193316 unbalanced force: 0.00464730410669 mean stress: -9958.4404813 unbalanced force: 0.00110115117756 mean stress: -9996.29707911 ### Isotropic state saved ### 0.436852966163 -9996.29707911 1006 CHOLMOD warning: matrix not positive definite something went wrong in Cholesky factorization, use LDLt as fallback this time 6101 0 0.01 -0.02 0.01 [[ ^L clears screen, ^U kills line. F12 controller, F11 3d view (use h-key for showing help), F10 both, F9 generator, F8 plot. ]] Yade [1]: CHOLMOD warning: matrix not positive definite something went wrong in Cholesky factorization, use LDLt as fallback this time Cheers Sam -- 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 : yade-users@lists.launchpad.net Unsubscribe : https://launchpad.net/~yade-users More help : https://help.launchpad.net/ListHelp