Re: [Yade-users] [Question #688643]: How to do model bearing capacity of soil
Question #688643 on Yade changed: https://answers.launchpad.net/yade/+question/688643 Status: Solved => Open veerawat is still having a problem: I want to make a model bearing capacity of soil . But I can’t resize the pressure wall. I want to resize the pressed wall, what to do? This is my code### from yade import pack sp=pack.SpherePack() ## corners of the initial packing mn,mx=Vector3(0,0,0),Vector3(10,10,10) ## box size, radius, number of ball sp.makeCloud(minCorner=mn,maxCorner=mx,rRelFuzz=.1,num=1500) ## create material #0, which will be used as default O.materials.append(FrictMat(young=1500,poisson=.4,frictionAngle=radians(30),density=2600,label='spheres')) O.materials.append(FrictMat(young=1500,poisson=.4,frictionAngle=0,density=0,label='frictionless')) ## copy spheres from the packing into the scene ## use default material, don't care about that for now O.bodies.append([sphere(center,rad,material='spheres') for center,rad in sp]) ## create walls around the packing walls=aabbWalls(thickness=1e-10,material='frictionless') wallIds=O.bodies.append(walls) # wall of each side triax=TriaxialCompressionEngine( wall_bottom_id=wallIds[2], wall_top_id=wallIds[2], wall_left_id=wallIds[0], wall_right_id=wallIds[2], wall_back_id=wallIds[2], wall_front_id=wallIds[2], internalCompaction=False, sigmaIsoCompaction=-5, sigmaLateralConfinement=-5, max_vel=10, strainRate=0.01, label="triax" ) 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()] ), GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8), triax, NewtonIntegrator(damping=.4) ] from yade import plot O.engines=O.engines[0:5]+[PyRunner(iterPeriod=20,command='history()',label='recorder')]+O.engines[5:7] def history(): plot.addData(e11=-triax.strain[0], e22=-triax.strain[1], e33=-triax.strain[2], s11=-triax.stress(0)[0], s22=-triax.stress(2)[1], s33=-triax.stress(4)[2], i=O.iter) plot.plots={'i': ('e11','e22','e33',None,'s11','s22','s33')} O.saveTmp() plot.plot() -- 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 #688643]: How to do model bearing capacity of soil
Question #688643 on Yade changed: https://answers.launchpad.net/yade/+question/688643 veerawat gave more information on the question: This is my video https://drive.google.com/file/d/1KV1itxmcYKAJHl-qE3ip0av4_ddgeBzB/view?usp=sharing -- 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 #688690]: pack.SpherePack.save() function saved particles data format
New question #688690 on Yade: https://answers.launchpad.net/yade/+question/688690 Hi. I have a file of spherical particles saved by function of pack.SpherePack().save(). It has the format as follows, 0.000919246 0.000859971 0.000602774 1.20067e-05 -1 0.000959836 0.00055149 0.000975021 2.11065e-05 -1 . I want to translate all the particles in x direction and conduct it by the following python code, === === import numpy as np data = np.loadtxt('initial_spheres.txt', delimiter=' ', skiprows=0) with open('initial_spheres_translate_x.txt','w') as fd: for i in range(len(data)): fd.write('%.9f %.9f %.9f %.5e %d\n' % (data[i,0]+0.5e-3, data[i,1], data[i,2], data[i,3], -1)) === === and i got the data as this, 0.001919246 0.000859971 0.000602774 1.20067e-05 -1 0.001959836 0.000551490 0.000975021 2.11065e-05 -1 The format seems the same, however, there is an format error when reading the file by pack.SpherePack().load() function. By the way, i have tried the delimiter as space and tab and both don't work. Thanks. -- 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 #688345]: Precrack
Question #688345 on Yade changed: https://answers.launchpad.net/yade/+question/688345 Status: Answered => Open mrhappy is still having a problem: Hey Robert, Thanks for your help. I used i.phys.isCohesive = False; however, I noticed that the nodes are still bonded. I then made a funtion that removes the bond every iteration step. I check to see if the bond exisits by pressing the inspect button, then going to bodies, and syping in the element number to see whos attached to it. Can you have a look at my code and suggest a method that will permanently delete the bond between these specific spheres? I want to create a precrack. Thank you sooo much! #MATERIAL PROPERTIES intR = 3.00 #connectivity parameter DENS = 2500.00 #Density (kg/mm^3) YOUNG = 1800.00 #Young's modulus (N/mm^2) FRICT = 18.00 #Friction angle (degrees) ALPHA = 0.20 #Poisson's ratio TENS = 1.00 #Tensile strength (N/mm^2) COH = 100.00 #Shear strength (N/mm^2) iterMax = 1.00 #Max Itteration rate = 0.00 #pull rate O.materials.append(JCFpmMat(type=1,density=DENS,young=YOUNG,poisson=ALPHA,frictionAngle=radians(FRICT),tensileStrength=TENS,cohesion=COH,label='mat1')) # PARTICLES O.bodies.append([ #ALOT OF SPHERES WHICH I AM NOT SHOWING NOW. ]) nbSpheres = 400.00 # BOUNDARY CONDITIONS # FUNCTIONAL COMPONENTS def addPlotData1(): plot.addData(t=O.time,Displacement = O.bodies[209].state.pos[1] - 11.000, DX1 = O.bodies[210].state.pos[0], DY1 = O.bodies[210].state.pos[1], DX2 = O.bodies[211].state.pos[0], DY2 = O.bodies[211].state.pos[1], DX3 = O.bodies[212].state.pos[0], DY3 = O.bodies[212].state.pos[1], DX4 = O.bodies[213].state.pos[0], DY4 = O.bodies[213].state.pos[1], DX5 = O.bodies[214].state.pos[0], DY5 = O.bodies[214].state.pos[1], DX6 = O.bodies[215].state.pos[0], DY6 = O.bodies[215].state.pos[1], DX7 = O.bodies[216].state.pos[0], DY7 = O.bodies[216].state.pos[1], DX8 = O.bodies[217].state.pos[0], DY8 = O.bodies[217].state.pos[1], DX9 = O.bodies[218].state.pos[0], DY9 = O.bodies[218].state.pos[1], DX10 = O.bodies[219].state.pos[0], DY10 = O.bodies[219].state.pos[1], ) def saveData1(): plot.saveDataTxt('/home/nabid/Desktop/SCRIPTS/Fracture_Model/ForceBC/ForceFD.txt',vars=('t','Displacement')) def saveData2(): plot.saveDataTxt('/home/nabid/Desktop/SCRIPTS/Fracture_Model/ForceBC/Data.txt',vars=('t','DX1', 'DY1','DX2', 'DY2','DX3', 'DY3','DX4', 'DY4','DX5', 'DY5','DX6', 'DY6','DX7', 'DY7','DX8', 'DY8','DX9', 'DY9','DX10', 'DY10',) ), def ForceBC(): if O.time < 800: O.forces.setPermF(209,(0,0.01000*O.time,0)) O.forces.setPermF(210,(0,0.01000*O.time,0)) O.forces.setPermF(189,(0,-0.01000*O.time,0)) O.forces.setPermF(190,(0,-0.01000*O.time,0)) else: O.forces.setPermF(209,(0,8.0,0)) O.forces.setPermF(210,(0,8.0,0)) O.forces.setPermF(189,(0,-8.0,0)) O.forces.setPermF(190,(0,-8.0,0)) # PRINTING from yade import plot from pprint import pprint # SIMULATION LOOP O.engines=[ PyRunner(command='addPlotData1()',iterPeriod=1), PyRunner(command='saveData1()',iterPeriod=1000), PyRunner(command='saveData2()',iterPeriod=1000), PyRunner(command='DelEle()',iterPeriod=1), PyRunner(command='ForceBC()',iterPeriod=1), ForceResetter(), InsertionSortCollider([Bo1_Sphere_Aabb()]), InteractionLoop( [Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=intR)], [Ip2_JCFpmMat_JCFpmMat_JCFpmPhys(cohesiveTresholdIteration=1)], [Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM()] ), GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=10,timestepSafetyCoefficient=0.5, defaultDt=utils.PWaveTimeStep()), NewtonIntegrator(damping= 0.80), ] #TIME STEP O.dt=0.5e-4*PWaveTimeStep() #Precrack def DelEle(): ncrack = 0 for i in O.interactions: if (i.id1 == 189 and i.id2 == 208): i.phys.isCohesive = False ncrack = ncrack + 1 if (i.id1 == 189 and i.id2 == 209): i.phys.isCohesive = False ncrack = ncrack + 1 if (i.id1 == 189 and i.id2 == 210): i.phys.isCohesive = False ncrack = ncrack + 1 if (i.id1 == 208 and i.id2 == 189): i.phys.isCohesive = False ncrack = ncrack + 1 if (i.id1 == 209 and i.id2 == 189): i.phys.isCohesive = False ncrack = ncrack + 1 if (i.id1 == 210 and i.id2 == 189): i.phys.isCohesive = False ncrack = ncrack + 1 if (i.id1 == 190 and i.id2 == 209): i.phys.isCohesive = False ncrack = ncrack + 1 if (i.id1 == 190 and i.id2 == 210): i.phys.isCohesive = False ncrack = ncrack + 1 if (i.id1 == 190 and i.id2 == 211): i.phys.isCohesive = False ncrack = ncrack + 1 if
Re: [Yade-users] [Question #688685]: permeability - PFV
Question #688685 on Yade changed: https://answers.launchpad.net/yade/+question/688685 Status: Open => Needs information Robert Caulk requested more information: Hello, What happens when you follow the solution provided in [1]? [1]https://answers.launchpad.net/yade/+question/688195 -- 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 #688649]: Another startup crash at GlobalError::PushToStack() () from */libapt-pkg.so.5.0
Question #688649 on Yade changed: https://answers.launchpad.net/yade/+question/688649 Status: Open => Needs information Robert Caulk requested more information: Hey Jérôme, >>It's a modified version, without my changes everything is OK Please indicate to us which files you have modified (and what the changes are) in comparison to the current most recent trunk [1]. Cheers, Robert [1]472f4cbb -- 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 #688643]: How to do model bearing capacity of soil
Question #688643 on Yade changed: https://answers.launchpad.net/yade/+question/688643 Robert Caulk posted a new comment: I am sorry, I do not understand what you are asking. Can you please rephrase your question? -- 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 #688652]: CpmMat elastic calibration difficulty
Question #688652 on Yade changed: https://answers.launchpad.net/yade/+question/688652 Jérôme Duriez posted a new comment: Did you visually check whether your lateralStrain = f(axialStrain) curves change when you change CpmMat.poisson ? This should be the case, provided that CpmMat model (which I do not know) is similar enough to FrictMat / FrictPhys in this aspect. -- 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 #688652]: CpmMat elastic calibration difficulty
Question #688652 on Yade changed: https://answers.launchpad.net/yade/+question/688652 Mumić gave more information on the question: I did, indeed. Below there are two simulations using the code above, one using poisson=0.1 and another with poisson=0.4, the curves based on Šmilauer's thesis can be found in the following links: poisson = 0.1 ⇒ https://user-images.githubusercontent.com/19715340/74239131-fb78a200-4cb5-11ea-89c6-bfb86774663b.png poisson = 0.4 ⇒ https://user-images.githubusercontent.com/19715340/74239098-ea2f9580-4cb5-11ea-9281-8102668205d6.png As you can see, by changing the poisson value, the obtained macro value remained the same. -- 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 #688649]: Another startup crash at GlobalError::PushToStack() () from */libapt-pkg.so.5.0
Question #688649 on Yade changed: https://answers.launchpad.net/yade/+question/688649 Status: Needs information => Open Jérôme Duriez gave more information on the question: Hi Robert, It's actually about "22 files changed [half of it are brand new files], 2172 insertions(+), 26 deletions(-)", so I'm afraid exact details will have to wait a proper Merge Request (or several of those...) Note though I touched for instance py/_utils.cpp, py/utils.py, py/wrapper/customConverters.cpp in case you would advice to start looking therein.. I understand specifics are lacking here, but I'm actually hoping more for a debugging method... Thank you, -- 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 #688649]: Another startup crash at GlobalError::PushToStack() () from */libapt-pkg.so.5.0
Question #688649 on Yade changed: https://answers.launchpad.net/yade/+question/688649 Robert Caulk posted a new comment: >I'm actually hoping more for a debugging method... Ok I see. Well I am sure Anton et al. have a better way of doing this, but if I were you I would start by narrowing down which files are causing the problem. I guess I would start by adding file groups one at a time to the newest trunk. Compiling as I add each file group. Once you reach the error, then you know which file group is causing the problem. Then the debugging should be relatively straightforward. -- 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 #688652]: CpmMat elastic calibration difficulty
Question #688652 on Yade changed: https://answers.launchpad.net/yade/+question/688652 Status: Open => Needs information Jan Stránský requested more information: Hi, > even though I change in the CpmMat the values of ... 'poisson' in what range? > I am currently trying to make the elastic calibration > epsCrackOnset=1e-5 if you are interested in elastic calibration, set parameters influencing INELASTIC behavior such that the model remain elastic > As you can see, by changing the poisson value, the obtained macro value remained the same. as you can see, by changing the poisson value, the obtained macro value DID NOT remain the same. Please provide what a why did you expect cheers Jan -- 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 #688653]: How to make the boundaries flexible?
Question #688653 on Yade changed: https://answers.launchpad.net/yade/+question/688653 Status: Open => Answered Jan Stránský proposed the following answer: Hi, I think it is not possible directly in Yade at the moment.. and also in general it might be a tricky task (e.g. the mass of the flexible boundary is low, not very good for explicit dynamic simulations, the formulation how the membrane should behave etc.). One option is to discretize the boundaries with facets. Based on the resultant forces on facets, you can change their vertices. How? It would be difficult answer :-) cheers Jan -- 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 #688652]: CpmMat elastic calibration difficulty
Question #688652 on Yade changed: https://answers.launchpad.net/yade/+question/688652 Status: Needs information => Open Mumić gave more information on the question: Hello and thanks for the reply! > in what range? Young was varied between 20 and 100 GPa and Poisson was varied between 0.05 and 0.9 for these inicial calibration tests >if you are interested in elastic calibration, set parameters influencing INELASTIC behavior such that the model remain elastic I had tested some values on this parameter and as it did not influence the obtained value, I kept it 1e-5, I was wrong. But now ran a simulation using 1e-1 and 1e0, the value of Poisson changed from 0.187 to ≃ 0.258 when moving epsCrackOnset from 1e-5 to 1e-1 but didn't change between the last two (1e-1 to 1e0), so I guess in this case it's way safer to assume this parameter is not influencing anymore, but yet the micro poisson didn't change much Is the range of the other parameters I'm using way off to have an actual effect? >as you can see, by changing the poisson value, the obtained macro value DID >NOT remain the same. >Please provide what a why did you expect The element position was obtained for any timestep in which the material behavior is within the elastic domain and then compared with the initial position in order to find the deformation in that region, then, based on the formula nu = (-0.5(ex+ey))/ez, Poisson modulus was computed. Regarding the "the value did remain the same", that graph was computed on a single timestep, if I take the average, are equal up to 4 decimal values. I agree the shown method was a poor one, hence I moved to obtaining a linear regress of the computed strains and the results are now more reliable than the former one. In this new evaluation, the value for epsCrackOnset used was 1e-1, Micro Young 50e9 and Micro Poisson 0.2 or 0.4. The results are displayed below: Micro Poisson = 0.2 ⇒ https://user-images.githubusercontent.com/19715340/74276747-0c94d380-4cf5-11ea-8a54-c9fcc8ce6e6e.png Micro Poisson = 0.4 ⇒ https://user-images.githubusercontent.com/19715340/74276830-3b12ae80-4cf5-11ea-9acd-23363186a653.png What I expected was for the values to change based on the input young and poisson but the value I'm measuring so far is kind of static when varying the elastic parameters. The reason of what I'm looking for is that Macro Young is directly related to the Micro Young whereas Macro Poisson is a function of Micro Young and Micro Poisson. Best regards! -- 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 #688575]: The speed of run is too slow ! What are the ways to run the code faster?
Question #688575 on Yade changed: https://answers.launchpad.net/yade/+question/688575 Status: Answered => Solved ehsan benabbas confirmed that the question is solved: I realized the most important factor in the speed of running is the "young" parameter. In the way I define this parameter (or change it to an arbitrary value) it influences the run time significantly. Knowing this, I changed "young" to the value you defined already in [1] and the code works really fast for 2 particles (about 15 minutes). However, there is another problem. As I want to define Kn and Ks directly, I need to change FrictMat to ViscoElMat. But as this is another question, I will post a new question that anyone can use. Thank you for your helps. -- 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 #688575]: The speed of run is too slow ! What are the ways to run the code faster?
Question #688575 on Yade changed: https://answers.launchpad.net/yade/+question/688575 Status: Open => Answered Chareyre proposed the following answer: > os.chdir('/home/ehsan/Desktop/3axresults') Seriously? B Le lun. 10 févr. 2020 19:53, ehsan benabbas < question688...@answers.launchpad.net> a écrit : > Question #688575 on Yade changed: > https://answers.launchpad.net/yade/+question/688575 > > Status: Answered => Open > > ehsan benabbas is still having a problem: > Minimal scripts: > > > print ('** START **') > import numpy as np > import time > import datetime, os > start_time=time.time() > from datetime import datetime > import math > from yade import qt, export, utils > from yade import pack > > ## > # DEFINING VARIABLES # > > print (' DEFINING VARIABLES ') > > nRead=readParamsFromTable( > num_spheres=2, > compFricDegree = 29, > key='_triax_', > unknownOk=True > ) > > from yade.params import table > > num_spheres=table.num_spheres > key=table.key > targetPorosity = 0.4 > compFricDegree = table.compFricDegree > finalFricDegree = 29 > IP=100 # iteration period to record data and stuff > micro_record_iterPeriod=IP > ORN=3000 # O.Run Number of iterations > micro_record_enable_normal_branch=True > micro_record_float_type = np.float32 > damp=0.2 > thick=0 > stabilityThreshold=0.01 > PCPC=0.0001 # Precision of Confining Pressure Convergence > r_min=0.1*1e-3 # m > d_min=2*r_min # m > r_max=0.3*1e-3 # m > d_max=2*r_max # m > r_avr=(r_min+r_max)/2 # m > d_avr=2*r_avr # m > r_fuz=(r_max/r_avr)-1 # m > Kn=10e8*(d_avr) ### FIXME > Kt=10e8*(d_avr) ### FIXME > young=Kn/r_avr # 2 (E r1 E r2 / E r1 + E r2) >>> E = Kn/r_avr > poisson=Kn/Kt # Kt/Kn > Ls=0.02 # m length of specimen ### FIXME > L_REV=7*(d_avr) # m > if Ls < L_REV: > sys.exit("*** ERROR! The specimen's dimension is too samll! ***") > elif Ls==L_REV: > print ("*** This is the minimum specimen's dimension you can take! > ***") > else: > print ("*** The specimen's dimension is good enough! ***") > mn,mx=Vector3(0,0,0),Vector3(Ls,Ls,Ls) > Vt=-1*1e-3 # m/s # negative sign describes the compression direction > strainRate=Vt/Ls # %/sec > target_strain=0.25 ### FIXME % > print ("The target strain has been set to:", target_strain) > sigmaIso=-5e5 # Pa ### FIXME > particleDensity=2000 #kg/m3 > > ## > # DEFINING MATERIALS # > > print (' DEFINING MATERIALS ') > > O.materials.append(FrictMat(young=young,poisson=poisson,frictionAngle=radians(compFricDegree),density=particleDensity,label='spheres')) > > O.materials.append(FrictMat(young=young,poisson=poisson,frictionAngle=0,density=0,label='walls')) > > > # DEFINING PACKING # > > print (' DEFINING PACKING ') > walls=aabbWalls([mn,mx],thickness=thick,material='walls') > for w in walls:w.shape.radius=0 > wallIds=O.bodies.append(walls) > sp=pack.SpherePack() > clumps=False > sp.makeCloud(mn,mx,r_avr,r_fuz,num_spheres,False, 0.95,seed=1) > O.bodies.append([sphere(center,rad,material='spheres') for center,rad in > sp]) > > from yade import export > os.mkdir('3axresults') > os.chdir('/home/ehsan/Desktop/3axresults') > export.text('InitialPackingData') > > > # DEFINING TRIAXIAL TEST # > > print (' DEFINING TRIAXIAL TEST ') > triax=TriaxialStressController( > maxMultiplier=1.+2e4/young, > finalMaxMultiplier=1.+2e3/young, > thickness = thick, > stressMask = 7, > internalCompaction=True, > ) > > ## > # DEFINING FUNCTIONS # > > print (' DEFINING FUNCTIONS ') > from yade import plot > def history(): > plot.addData( > e11 = -triax.strain[0], > e22 = -triax.strain[1], > e33 = -triax.strain[2], > ev = -triax.strain[0]-triax.strain[1]-triax.strain[2], > s11 = -triax.stress(triax.wall_right_id)[0], > s22 = -triax.stress(triax.wall_top_id)[1], > s33 = -triax.stress(triax.wall_front_id)[2], > i = O.iter, > t = O.time, # virtual (yade) time --- time of simulation > fab = utils.fabricTensor()[0]) > > > # DEFINING ENGINES # > > print (' DEFINING ENGINES ') > 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()] > ), > > > GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8), >
[Yade-users] [Question #688685]: permeability - PFV
New question #688685 on Yade: https://answers.launchpad.net/yade/+question/688685 Hello All, I wrote a code that is supposed to simulate a permeability test of a saturated sphere packing in a column. The spheres packing is rigid and no deformation/change in particle positions due to fluid flow should occur. However, I'm getting errors such as: - Vh==NULL!!, - negative volume for an ordinary pore (temp warning, should still be safe) Can anyone help me to make this code work? My goal is to get the average fluid velocity in the pores. The code is copied below. Thank you, Othman --- # -*- coding: utf-8 -*- import numpy as np from yade import pack, ymport, plot radiuscyl=.05 heightcyl=.2 dP=1e3 #Pa visc=1e-3 #Pa.sec density=1000 #kg/m3 O.materials.append(FrictMat(young = 5e10, poisson = 0.15,frictionAngle = atan(.2), density=1920)) spheres # sp=pack.SpherePack() sp.makeCloud((0,0,0),(.3,.3,2),rMean=0.0083,rRelFuzz=0.1) cylinder extraction pred=pack.inCylinder((.2,.2,0),(.2,.2,heightcyl),radiuscyl) spFilter=filterSpherePack(pred,sp,Material=Material, returnSpherePack=True) spFilter.toSimulation() facets # facets=geom.facetCylinder((.2,.2,heightcyl/2),radiuscyl,heightcyl,segmentsNumber=150,wallMask=4) cylinder=O.bodies.append(facets) yade.qt.View() Height=max(utils.aabbDim()) #Fix all particles in their positions. No deformation for i in O.bodies: i.state.blockedDOFs='xyzXYZ' Engines # 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()],label="iloop" ), FlowEngine(dead=1,label="flow"),#introduced as a dead engine for the moment, see 2nd section GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8), NewtonIntegrator(damping=0.2) ] O.dt=1e-5 O.run(1,1) #B. Activate flow engine and set boundary conditions in order to get permeability flow.dead=0 flow.useSolver=3 flow.viscosity=visc flow.bndCondIsPressure=[0,0,0,0,1,1] #[xmin,xmax,ymin,ymax,zmin,zmax] flow.bndCondValue=[0,0,0,0,0,dP] flow.boundaryUseMaxMin=[0,0,0,0,1,1] #if you want wall to be boundary, set this 0. If you don't have a wall, make it 1 so that spheres will be boundary #Permeability calculations Q=flow.averageVelocity() Permeability=visc*Q*Height/dP print ("average velocity: ",Q, "Permeability: ",Permeability) O.run() -- 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 #688681]: Contact laws and Input stiffness directly rather than young parameter
Question #688681 on Yade changed: https://answers.launchpad.net/yade/+question/688681 Status: Answered => Open ehsan benabbas is still having a problem: Hello Thank you, Jan. As it's been mentioned in [1], this method leads to a SO LONG (more than 3 weeks) running time as I faced before. The problem of the long-run is the "young" parameter. When I calculate the "young" based on Kn, "young" will be a relatively high number, however, If I use "ViscElMat", the code with 2 particles will be run less than 15 minutes. If I want to have the same run-time with "FrictMat" I need to forget about my desire Kn and use the value of "young" that Bruno already has used in his based code of triaxial test. I was wondering setting cn = cs = 0 in "ViscElMat" gives me the same result as "FrictMat" as the density of specimen has not changed (because of the specimen which is the same as when I used "FrictMat") and I should get the same behavior. For example, if I get the peak behavior (dense sample) with "FrictMat" maybe I get the same with "ViscElMat", which this did not happen. [1] https://answers.launchpad.net/yade/+question/679638 -- 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 #688681]: Contact laws and Input stiffness directly rather than young parameter
New question #688681 on Yade: https://answers.launchpad.net/yade/+question/688681 Hello everyone, I am using Ubuntu 18.04, and Yade 2019-08-08.git-775ae74 I developed the Triaxial test code based on [1] and working on that. I want to directly input Kn and Kt (like most of the papers) instead of using the "young" parameter. To do so, as the "FrictMat" has not Kn and Kt, I tried to define material and contact law based on "ViscElMat". To do so and as I do not want to model visco materials, I set cn = cs = 0 as follows: O.materials.append(ViscElMat(kn=Kn,ks=Kt,cn=0.0,cs=0.0,density=particleDensity,frictionAngle=radians(compFricDegree),label='spheres')) O.materials.append(ViscElMat(kn=Kn*100,ks=Kt*100,cn=0.0,cs=0.0,density=0,frictionAngle=0,label='walls')) and for the contact law in Engine, I made the following changes: newton=NewtonIntegrator(damping=damp) O.engines=[ ForceResetter(), InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]), InteractionLoop( [Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()], [Ip2_ViscElMat_ViscElMat_ViscElPhys()], [Law2_ScGeom_ViscElPhys_Basic()] ), GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8), triax, PyRunner(iterPeriod=IP,command='history()',label='macro_recorder'), TriaxialStateRecorder(iterPeriod=IP,file='WallStresses'+table.key), newton ] In this case, I get no error, the run speed is fast enough, but, the result is different than the "FrictMat" case while the specimen is the same. To be more specific, I get a dense behavior (Peak in the stress-strain curve) by using "FrictMat" however, when I use the "ViscElMat" I get a loose soil behavior (just gradually hardening) and never use "young" in my code. I am wondering why that happens? [1] https://gitlab.com/yade-dev/trunk/blob/master/examples/triax-tutorial/script-session1.py Thank you for your help. Minimal version of my code: ## TRIAXIAL PROBLEM, Y IS THE VERTICAL AXIS, X IS THE RIGHT AXIS, Z IS THE FRONT AXIS # ## import numpy as np import time import datetime, os import shutil start_time=time.time() from datetime import datetime import math from yade import qt, export, utils from yade import pack import yade.timing; O.timingEnabled=True # # DEFINING VARIABLES nRead=readParamsFromTable( num_spheres=2, compFricDegree = 29, key='_triax_', unknownOk=True ) from yade.params import table num_spheres=table.num_spheres key=table.key targetPorosity = 0.4 compFricDegree = table.compFricDegree finalFricDegree = 30 IP=100 # iteration period to record data and stuff ORN=1000 # O.Run Number of iterations damp=0.2 thick=0.01 stabilityThreshold=0.01 PCPC=0.0001 # Precision of Confining Pressure Convergence Kn=10e7 Kt=10e7 Ls=1 mn,mx=Vector3(0,0,0),Vector3(Ls,Ls,Ls) volume = (mx[0]-mn[0])*(mx[1]-mn[1])*(mx[2]-mn[2]) cvs=1-targetPorosity# coefficient of solid volume ===>>> 1 - n = 1 - (Vv / Vt) = Vs / Vt , cvs*volume=Vs mean_rad = pow(0.24*cvs*volume/num_spheres,0.) strainRate=-0.02 target_strain=0.25 sigmaIso=-1e4 particleDensity=2600 ## # DEFINING MATERIALS # O.materials.append(ViscElMat(kn=Kn,ks=Kt,cn=0.0,cs=0.0,density=particleDensity,frictionAngle=radians(compFricDegree),label='spheres')) O.materials.append(ViscElMat(kn=Kn*100,ks=Kt*100,cn=0.0,cs=0.0,density=0,frictionAngle=0,label='walls')) # DEFINING PACKING # walls=aabbWalls([mn,mx],thickness=thick,material='walls') wallIds=O.bodies.append(walls) sp=pack.SpherePack() clumps=False sp.makeCloud(mn,mx,-1,0.,num_spheres,False, 0.95,seed=1) #"seed" make the "random" generation always the same O.bodies.append([sphere(center,rad,material='spheres') for center,rad in sp]) # DEFINING TRIAXIAL TEST # triax=TriaxialStressController( maxMultiplier=1.005, finalMaxMultiplier=1.002, thickness = thick, stressMask = 7, internalCompaction=True, ) ## # DEFINING FUNCTIONS # from yade import plot def history(): plot.addData( e11 = -triax.strain[0], e22 = -triax.strain[1], e33 = -triax.strain[2], ev = -triax.strain[0]-triax.strain[1]-triax.strain[2], s11 = -triax.stress(triax.wall_right_id)[0], s22 = -triax.stress(triax.wall_top_id)[1], s33 = -triax.stress(triax.wall_front_id)[2], i = O.iter, t = O.time, # virtual (yade) time --- time of
Re: [Yade-users] [Question #688653]: How to make the boundaries flexible?
Question #688653 on Yade changed: https://answers.launchpad.net/yade/+question/688653 Status: Answered => Open ehsan benabbas is still having a problem: As the facet elements are flexible, isn't it possible to define the box (walls) with facets? Something like: # create box with free top, and ceate loose packing inside the box from yade import pack, plot,qt fIDSI=O.bodies.append(utils.geom.facetBox((.15,.15,.135),(.15,.15,.045),wallMask=15,material=steel)) fIDSII=O.bodies.append(utils.geom.facetBox((.15,.15,.045),(.15,.15,.045),wallMask=31,material=steel)) sp=pack.SpherePack() sp.makeCloud((0,0,0),(0.3,0.3,0.3250),rMean=rMean,rRelFuzz=rRelFuzz) sp.toSimulation(material=spheremat) I have read this is [1] [1] https://answers.launchpad.net/yade/+question/210746 -- 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 #688652]: CpmMat elastic calibration difficulty
Question #688652 on Yade changed: https://answers.launchpad.net/yade/+question/688652 Status: Open => Needs information Jan Stránský requested more information: > Is the range of the other parameters I'm using way off to have an actual effect? set epsCrackOnset and sigmaT to arbitrary large values (like 1e99) please try your test with these values and let us know. Also see [1,2] discussing similar topic. cheers Jan [1] https://answers.launchpad.net/yade/+question/670047 [2] https://answers.launchpad.net/yade/+question/685862 -- 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 #688681]: Contact laws and Input stiffness directly rather than young parameter
Question #688681 on Yade changed: https://answers.launchpad.net/yade/+question/688681 Status: Open => Answered Jan Stránský proposed the following answer: Hello, > I want to directly input Kn and Kt ... instead of using the "young" parameter. See [1,2,3] discussing similar topic > To do so, as the "FrictMat" has not Kn and Kt, I tried to define material and contact law based on "ViscElMat". you can use FrictMat, see [1], #3 and #8 > but, the result is different than the "FrictMat" case while the specimen is the same. ... I am wondering why that happens? well, obviously, because you are using different model with different governing equations.. cheers Jan [1] https://answers.launchpad.net/yade/+question/679638 [2] https://answers.launchpad.net/yade/+question/298001 [3] https://answers.launchpad.net/yade/+question/228494 -- 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 #688653]: How to make the boundaries flexible?
Question #688653 on Yade changed: https://answers.launchpad.net/yade/+question/688653 Status: Open => Answered Jan Stránský proposed the following answer: > isn't it possible to define the box (walls) with facets? sure, this is easy > As the facet elements are flexible no, facet in Yade is a rigid triangle. But you can change its position or set new coordinates of vertices arbitrarily (e.g. according to some computation how a flexible membrane should deform) cheers Jan -- 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