Re: [Yade-users] [Question #707885]: Create arbitrary ellipsoid using level set
Question #707885 on Yade changed: https://answers.launchpad.net/yade/+question/707885 Status: Answered => Solved Ruidong LI confirmed that the question is solved: Thank you, Karol. Your answer solved my problem. -- 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 #707885]: Create arbitrary ellipsoid using level set
New question #707885 on Yade: https://answers.launchpad.net/yade/+question/707885 Hi! I'd like to ask how to set the 'orientation' keyword in the levelSetBody. It seems that we need to input a quaternion. But the problem is that what's the format of this input?Can someone help me with this? Many thanks. Cheers, Kyle -- 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 #707882]: Cylindrical triaxial test using walls
New question #707882 on Yade: https://answers.launchpad.net/yade/+question/707882 Hi! I am going to model the interaction between the level-set body and walls. What I want to create is a cylindrical wall. But it seems that wall can not be used to create a cylindrical wall? I am not sure. Can someone help me with this? Cheer, Kyle -- 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 #707875]: Servo control of cylindrical triaxial test
Question #707875 on Yade changed: https://answers.launchpad.net/yade/+question/707875 Status: Answered => Solved Ruidong LI confirmed that the question is solved: Thank you so much, Karol. That solved my problem. -- 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 #707875]: Servo control of cylindrical triaxial test
New question #707875 on Yade: https://answers.launchpad.net/yade/+question/707875 Hi! I want to simulate the cylindrical triaxial test but can't achieve the target confining pressure. Can someone help me with this? The MWE is presented as below: # import essential modules from __future__ import print_function from yade import pack, ymport, qt, plot, geom from yade.gridpfacet import * import gts, os.path, locale, random, math locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') ### ###1. DEFINE VARIABLES AND MATERIALS### ### # 1.1). define variables young=550e6 # normal contact stiffness compFricDegree = 1.8 # initial contact friction during the confining phase finalFricDegree = 38 # contact friction during the deviatoric loading poisson = 0.3 # shear-to-normal stiffness ratio width = 1.4e-1 # sample width height = 2.8e-1 # target sample height(after consolidation) height_0 = 3.2e-1# initial sample height num_spheres=500 # number of spheres R_p = 0.0084# mean particle radius rCoff = 10 # thickness of top and bot sphere cap (based on rParticle) rParticle = 0.02e-1 # membrane grid seed size alpha = 8 rate = 0.1 # loading rate (strain rate) damp = 0.3 # damping coefficient targetPorosity = 0.43 # target porosity thresholdvalue = 0.05# threshold unbalance force final_rate = 0.1# strain rate for deviator loading thresholdstrain = 0.06 # threshold axial strain for terminate enlargefactor = 1.00 tszz = 5 tsrr = 5 # 1.2). create materials for sand spheres and plates Sand = O.materials.append(FrictMat(young=young,poisson=poisson,frictionAngle=radians(compFricDegree),density=2650,label='spheres')) # 1.3). create membrane materials GridMat = O.materials.append(CohFrictMat( young=100e6,poisson=0.3,density=2650,frictionAngle=radians(0), alphaKr=0,alphaKtw=0,etaRoll=0,etaTwist=0, normalCohesion=1e9,shearCohesion=1e9, momentRotationLaw=True,label='gridNodeMat')) pFacetMat = O.materials.append(FrictMat( young=100e6,poisson=0.3,density=2650,frictionAngle=radians(0),label='pFacetMat')) # 1.4). create TOP & BOT plate materials frictMat = O.materials.append(FrictMat(young=100e6,poisson=0.3,density=2650,frictionAngle=radians(0),label='frictMat')) ### ### 2. SAMPLE GENERATION ### ### # 2.1). generate random dense sphere pack pred = pack.inCylinder((0,0,0),(0,0,height_0),.5*width) sp = pack.randomDensePack(pred,spheresInCell=num_spheres,radius=R_p,rRelFuzz=0.3, returnSpherePack=True,memoDbg=True,memoizeDb='/tmp/loosePackings11.sqlite') sand=sp.toSimulation(color=(0,1,1),material=Sand) # 2.2). create facet wall around particle packing facets = [] nw = 45 nh = 1 rCyl2 = 0.5*width / cos(pi/float(nw)) for r in range(nw): for h in range(nh): v1 = Vector3( rCyl2*cos(2*pi*(r+0)/float(nw)), rCyl2*sin(2*pi*(r+0)/float(nw)), height_0*(h+0)/float(nh) ) v2 = Vector3( rCyl2*cos(2*pi*(r+1)/float(nw)), rCyl2*sin(2*pi*(r+1)/float(nw)), height_0*(h+0)/float(nh) ) v3 = Vector3( rCyl2*cos(2*pi*(r+1)/float(nw)), rCyl2*sin(2*pi*(r+1)/float(nw)), height_0*(h+1)/float(nh) ) v4 = Vector3( rCyl2*cos(2*pi*(r+0)/float(nw)), rCyl2*sin(2*pi*(r+0)/float(nw)), height_0*(h+1)/float(nh) ) f1 = facet((v1,v2,v3),color=(0,0,1),material=frictMat) f2 = facet((v1,v3,v4),color=(0,0,1),material=frictMat) facets.extend((f1,f2)) wall = O.bodies.append(facets) for b in wall: O.bodies[b].state.blockedDOFs = 'xyzXYZ' O.bodies[b].state.vel = (0,0,0) # 2.3). create bot facet plate facets3 = [] nw=45 rCyl2 = (0.75*width+2*rParticle) / cos(pi/float(nw)) for r in range(nw): if r%2==0: v1 = Vector3( rCyl2*cos(2*pi*(r+0)/float(nw)), rCyl2*sin(2*pi*(r+0)/float(nw)), 0 ) v2 = Vector3( rCyl2*cos(2*pi*(r+1)/float(nw)), rCyl2*sin(2*pi*(r+1)/float(nw)), 0 ) v3 = Vector3( rCyl2*cos(2*pi*(r+2)/float(nw)), rCyl2*sin(2*pi*(r+2)/float(nw)), 0 ) v4 = Vector3( 0, 0, 0 ) f1 = facet((v1,v2,v4),color=(0,0,0),material=frictMat) f2 = facet((v2,v3,v4),color=(0,0,0),material=frictMat) facets3.extend((f1,f2)) botcap = O.bodies.append(facets3) bot_id = 0 for s in botcap: bot_id = s # 2.4). create top facet plate facets3 = [] nw=45 rCyl2 = (0.75*width+2*rParticle) / cos(pi/float(nw)) for r in range(nw): if r%2==0: v1 = Vector3( rCyl2*cos(2*pi*(r+0)/float(nw)), rCyl2*sin(2*pi*(r+0)/float(nw)), height_0 ) v2 = Vector3( rCyl2*cos(2*pi*(r+1)/float(nw)), rCyl2*sin(2*pi*(r+1)/float(nw)), height_
[Yade-users] [Question #707870]: Interaction between sphere and facet with specific ID
New question #707870 on Yade: https://answers.launchpad.net/yade/+question/707870 Hi! If I want to get interaction between the bottom plate and spheres, how can I achieve this? For example, if we focus on the gravity deposition code, can we know which interactions happened between spheres and bottom plates? The code for gravity deposition is presented here: https://yade-dem.org/doc/tutorial-examples.html#gravity-deposition Cheer, Kyle -- 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 #707390]: segmentation fault (PFacet)
Question #707390 on Yade changed: https://answers.launchpad.net/yade/+question/707390 Description changed to: Hi! I am trying to replicate the work using PFacet as the flexible membrane for the cylindrical triaxial test. I don't why this code always crashes (segmentation fault) at the stabilization stage. Can someone help me with this issue? Many thanks. The MWE is presented below: -- 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 #707390]: segmentation fault (PFacet)
Question #707390 on Yade changed: https://answers.launchpad.net/yade/+question/707390 Status: Open => Solved Ruidong LI confirmed that the question is solved: Thanks for your reply! Jan Maybe I should test this code on another pc. -- 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 #707390]: segmentation fault (PFacet)
Question #707390 on Yade changed: https://answers.launchpad.net/yade/+question/707390 Status: Needs information => Open Ruidong LI gave more information on the question: Hi! Jan, Thanks for your reply. - what is the "stabilization stage"? > The "stabilization stage" refers to removing confining pressure for particles > to cycle. The corresponding code can be found from: # E.c.7). stablize #**# - what time / iterations should we expect it to crash > Once the code was executed at the "stabilization stage", the program crashed. - what version of Yade are you using? > I used Yade 2022.01a in the Ubuntu 22.04 system. -I have tested the script (Ubuntu 22.04, Yade 2022.01a) until "start triaxial simulation" without any problem. > Does the "start triaxial simulation" means the beginning confining? -well, M here means Minimal, which is at least doubtful for the provided code.. > Actually, this is the MWE. It is a whole code containing creating the sample, > generating the flexible membrane, applying confining pressure until the > target value, stabilization, and applying deviator loading. -- 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 #707390]: segmentation fault (PFacet)
New question #707390 on Yade: https://answers.launchpad.net/yade/+question/707390 Hi! I am trying to replicate the work using PFacet as the flexible membrane for the cylindrical triaxial test. I don't why this code always crashes (segmentation fault) at the stabilization stage. Can someone help me with this issue? Many thanks. The MWE is presented below: # import essential modules from __future__ import print_function from yade import pack, ymport, qt, plot, geom from yade.gridpfacet import * import gts, os.path, locale, random, math locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') ### ###1. DEFINE VARIABLES AND MATERIALS### ### # 1.a). define variables key = 'Triaxial_Undrained' # file name to be saved young=550e6 # normal contact stiffness compFricDegree = 1.8 # initial contact friction during the confining phase finalFricDegree = 43 # contact friction during the deviatoric loading poisson = 0.3 # shear-to-normal stiffness ratio isoStress = 11 # confining stress conStress = 10 # confining stress for deviatoric loading stage width = 1.4e-1 # sample width height = 2.8e-1 # target sample height(after consolidation) height_0 = 3.2e-1# initial sample height num_spheres=1000 # number of spheres R_p = 0.0084# mean particle radius rCoff = 10 # thickness of top and bot sphere cap (based on rParticle) rParticle = 0.02e-1 # membrane grid seed size alpha = 8 rate = 0.1 # loading rate (strain rate) damp = 0.3 # damping coefficient targetPorosity = 0.43 # target porosity thresholdvalue = 0.05# threshold unbalance force final_rate = 0.1# strain rate for deviator loading thresholdstrain = 0.06 # threshold axial strain for terminate enlargefactor = 1.00 # A.b). create materials for sand spheres and plates Sand = O.materials.append(CohFrictMat( young=young,poisson=poisson,frictionAngle=radians(compFricDegree), alphaKr=0.25,alphaKtw=0,etaRoll=0.005,etaTwist=0, normalCohesion=5e6,shearCohesion=5e6, momentRotationLaw=True,density=2650,label='spheres' )) # A.c). create membrane materials GridMat = O.materials.append(CohFrictMat( young=100e6,poisson=0.3,density=2650,frictionAngle=radians(0), alphaKr=0,alphaKtw=0,etaRoll=0,etaTwist=0, normalCohesion=1e9,shearCohesion=1e9, momentRotationLaw=True,label='gridNodeMat' )) pFacetMat = O.materials.append(FrictMat( young=100e6,poisson=0.3,density=2650,frictionAngle=radians(0),label='pFacetMat' )) # A.d). create TOP & BOT plate materials frictMat = O.materials.append(FrictMat( young=100e6,poisson=0.3,density=2650,frictionAngle=radians(0),label='frictMat' )) ### ### 3. DEFINE GLOBAL ENGINES### ### #**# O.engines=[ ForceResetter(), InsertionSortCollider([ Bo1_Sphere_Aabb(), Bo1_Facet_Aabb(), Bo1_PFacet_Aabb(), Bo1_GridConnection_Aabb() ]), InteractionLoop( [ Ig2_Sphere_Sphere_ScGeom6D(), Ig2_GridNode_GridNode_GridNodeGeom6D(), Ig2_GridConnection_GridConnection_GridCoGridCoGeom(), Ig2_Sphere_PFacet_ScGridCoGeom(), Ig2_Facet_Sphere_ScGeom6D() ], [ Ip2_FrictMat_FrictMat_FrictPhys(), Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(label="cohesiveIp") ], [ Law2_ScGeom_FrictPhys_CundallStrack(), Law2_ScGeom6D_CohFrictPhys_CohesionMoment(useIncrementalForm=True,always_use_moment_law=False,label='cohesiveLaw'), Law2_GridCoGridCoGeom_FrictPhys_CundallStrack(), Law2_ScGridCoGeom_FrictPhys_CundallStrack(), ], label="iloop" ), GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=25,timestepSafetyCoefficient=0.8), NewtonIntegrator(gravity=(0,0,0),damping=0.1,label='newton') ] #**# O.engines[2].lawDispatcher.functors[1].always_use_moment_law=False O.engines[2].physDispatcher.functors[1].setCohesionOnNewContacts=False ### ###2. IMPORT CT-BASED PACKING ### ### # C.a). generate random dense sphere pack pred = pack.inCylinder((0,0,0),(0,0,height_0),.5*width) sp = pack.randomDensePack(pred,spheresInCell=num_spheres,radius=R_p,rRelFuzz=0.3, returnSpherePack=True,memoDbg=True,memoizeDb='/tmp/loosePackings11.sqlite') sand=sp.toSimulation(c
Re: [Yade-users] [Question #707278]: Servo control of flexible membrane using ServoPIDController
Question #707278 on Yade changed: https://answers.launchpad.net/yade/+question/707278 Status: Open => Solved Ruidong LI confirmed that the question is solved: -- 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 #707278]: Servo control of flexible membrane using ServoPIDController
Question #707278 on Yade changed: https://answers.launchpad.net/yade/+question/707278 Ruidong LI gave more information on the question: Thanks for your reply, Jan! I'd also like to ask whether the function for calculating the stress on the loading plate and confining stress is correct or not: def addPlotData(): # axial stress global wAz global wAc global x_cyl global y_cyl fwt = Vector3(0, 0, 0) for i in idTplate: fwt += O.forces.f(i) fwb = Vector3(0, 0, 0) for j in idBplate: fwb += O.forces.f(j) # cylindrical stress fcyl = 0 for n in nodes: fnode = O.forces.f(n.id) x,y,z = n.state.pos dirV = Vector3(x-x_cyl,y-y_cyl,0).normalized() fnodeMagn = fnode.dot(dirV) fcyl += fnodeMagn plot.addData(z=O.iter, swt=fwt[2]/wAz, swb=fwb[2]/wAz, swc = fcyl/wAc) Many thanks Kyle -- 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 #707278]: Servo control of flexible membrane using ServoPIDController
Question #707278 on Yade changed: https://answers.launchpad.net/yade/+question/707278 Ruidong LI posted a new comment: Thanks for your reply, Jan! > probably it should be opposite, Vector3(x_cyl-x, y_cyl-y, 0) to point inside > the cylinder (not outside)? Currently the membrane is stretched rather then compressed (tested with maxVelocity=100,iterPeriod=1) > That's true. We have to reverse the direction vector. >And maybe different parameters kP, kI, kD then default 1.0? > Yes. But the difficulty is that it's hard to determine proper proportional > parameters for kP, kI, and kD. > I don't know, then the behavior is also strange, the membrane is pulled > inward once there is node-sphere interaction... > Yes. I also encounter this problem. I try to reduce the maximum velocity of > servo control but still failed, only delaying the time of membrane > destruction. Actually, the PFacet is demonstrated to be effective in modelling flexible membranes successfully [1]. The problem is that there are some critical parameters such as velocity are not mentioned in this paper, which increases the difficulty for descendants to replicate the work. [1] https://doi.org/10.1061/(ASCE)GM.1943-5622.000134 -- 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 #707278]: Servo control of flexible membrane using ServoPIDController
Question #707278 on Yade changed: https://answers.launchpad.net/yade/+question/707278 Status: Answered => Open Ruidong LI is still having a problem: Thanks for your reply, Jan! Your answer solved my problem. I rewrote the code for generating the flexible membrane. Moreover, I used your suggested servo-control mode for the top, bottom, and cylindrical walls. I tried to measure whether the confining stress was reached or not. The result indicated that the confining stress in the top and bottom direction reached the target value while that in the cylindrical direction ly reached the half of target value. I don't know where the problem is. The assignment of cylindrical stress or measure? The updated MWE is presented below: from __future__ import print_function from yade import pack, ymport, qt import gts, os.path, locale, plot, random import numpy as np from yade.gridpfacet import * import math locale.setlocale( locale.LC_ALL, 'en_US.UTF-8' ) #gts is locale-dependend. If, for example, german locale is used, gts.read()-function does not import floats normally ### 1 ### ### DEFINING VARIABLES AND MATERIALS ### # The following lines are used parameter definitions readParamsFromTable( # material parameters young_w = 5e9, # Young's modulus of plates and walls young_g = 1.8e6, # Young's modulus of grains [1] den_w = 7874, # density of plates and walls den_g = 980, # density of grains poi_w = 0.3, # possion's ratio of plates and walls poi_g = 0.25, # possion's ratio of grains friAngle_w = 0.5,#radians(15), # friction angle of plates and walls friAngle_g = 0.5,#radians(29), # friction angle of grains # Parameters of cylindrical walls x_cyl = 0.0547, # x-coordinate of center of cylindrical walls y_cyl = 0.0535, # y-coordinate of center of cylindrical walls z_cyl = 0, # z-coordinate of center of cylindrical walls r_cyl = 0.0358, # radius of the cylinder h_cyl = 0.14, # height of the cylinder ) from yade.params.table import * # create materials for spheres and walls wallMat = O.materials.append(FrictMat(young = young_w, poisson = poi_w, frictionAngle = friAngle_w, density = den_w, label = 'walls')) sphereMat = O.materials.append(FrictMat(young = young_g, poisson = poi_g, frictionAngle = friAngle_g, density = den_g, label = 'spheres')) ### ###2### ### IMPORTING GRAINS AND CREATING CLUMPS ### ### # spheres pred = pack.inCylinder((x_cyl, y_cyl, z_cyl), (x_cyl, y_cyl, h_cyl), r_cyl) sp = SpherePack() sp = pack.randomDensePack(pred, spheresInCell=2000, radius=0.005, returnSpherePack=True) spheres = sp.toSimulation(color=(0, 1, 1), material=sphereMat) # assign unique color for each sphere currentSphereId = O.bodies[0].id color = randomColor() for b in O.bodies: if b.id != currentSphereId:#change color each time clumpId changes currentSphereId = b.id color = randomColor() if isinstance(b.shape,Sphere):#colorize spheres b.shape.color = color # create top and bottom plates h_cyl = max([b.state.pos[2] + b.shape.radius for b in O.bodies if isinstance(b.shape, Sphere)]) h0_cyl = min([b.state.pos[2] - b.shape.radius for b in O.bodies if isinstance(b.shape, Sphere)]) idTplate = O.bodies.append(yade.geom.facetCylinder((x_cyl,y_cyl,h_cyl),radius=r_cyl*1.2,material=wallMat,height=0,segmentsNumber=40,color=(1,1,1),wire=True)) idBplate = O.bodies.append(yade.geom.facetCylinder((x_cyl,y_cyl,h0_cyl),radius=r_cyl*1.2,material=wallMat,height=0,segmentsNumber=40,color=(1,1,1))) # ### 3### ### DEFINE ENGINES ### # #target confining stress confiningStress = 5e4 global wAz wAz = pi * (1.2*r_cyl) * (1.2*r_cyl) axialforce = confiningStress * wAz # Define engine O.engines = [ ForceResetter(), InsertionSortCollider([Bo1_Sphere_Aabb(), Bo1_PFacet_Aabb(), Bo1_Facet_Aabb()], sortThenCollide=True), InteractionLoop( [ Ig2_GridNode_GridNode_GridNodeGeom6D(), Ig2_GridConnection_GridConnection_GridCoGridCoGeom(), Ig2_Sphere_Sphere_ScGeom6D(), Ig2_Sphere_PFacet_ScGridCoGeom(), Ig2_Facet_Sphere_ScGeom(), ], [ Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True,setCohesionOnNewContacts=True), Ip2_FrictMat_FrictMat_FrictPhys() ], [ Law2_ScGeom6D_CohFrictPhys_CohesionMoment(), Law2_ScGeom_FrictPhys_CundallStrack(), Law2_ScGridCoGeom_FrictPhys_CundallStrack(), Law2_GridCoGridCoGeom_FrictPhys_CundallStrack(), ] ), NewtonIntegrator(gravity=(0,0,0),damping=0.7,label='newton'),
Re: [Yade-users] [Question #707278]: Servo control of flexible membrane using ServoPIDController
Question #707278 on Yade changed: https://answers.launchpad.net/yade/+question/707278 Status: Answered => Open Ruidong LI is still having a problem: Hi! Jan Thanks for your reply. Your answer is rigorous and helpful. > area = 2* pi*r_cyl*h_cyl/len(nodes) # cylinder surface / number of nodes ? The question mark in my comment is meant seriously. For regular grid it is probably OK. Also consider that the "boundary" nodes (bottom and top) maybe should have half force then "inner" nodes? Yes. That's a really critical problem that needed to be clarified. What confused me currently is that I found the number of nodes is not consistent with what I expected. For example, in the beginning, we defined the number of facets by the following code [1]: nw=40 # number of facets along the perimeter nh=25 # number of facets along the height nodes = [b for b in O.bodies if isinstance(b.shape, GridNode)] print(len(nodes)) If we print the number of nodes, we will get 8000 where my initial suppose is 40*26 = 1040. That indicates that the ID of nodes forming Pfacet are independent of each other. In other words, more than one node can be created at the same position. So, I am wondering if maybe it is correct to use ' confining Stress * cylinder surface / number of nodes' to represent the average force applied on each node? We don't need to classify the top and bottom nodes anymore as the force applied on nodes is the same. It is identical to obtaining the node force by calculating the force applied on each Pfacet and distributing it into three nodes. [1] https://answers.launchpad.net/yade/+question/681410 -- 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 #707278]: Servo control of flexible membrane using ServoPIDController
Question #707278 on Yade changed: https://answers.launchpad.net/yade/+question/707278 Status: Answered => Open Ruidong LI is still having a problem: Hi! Jan, Thanks for your reply. It is really helpful. But I still have two questions about this function: 1) return ServoPIDController(ids=[node.id],axis=axis,iterPeriod=...,target=f,...) for the 'axis' mentioned in PIDController, should it be defined individually for each node like this? confiningStress=5e4 cen_x = x_cyl # x coordinate of the centre of the crosssection cen_y = y_cyl # y coordinate of the centre of the crosssection def node2servo(node): x,y,z = node.state.pos area = 2* pi*r_cyl*h_cyl/len(nodes) # cylinder surface / number of nodes ? f = confiningStress * area axis = vector(x-cen_x, y-cen_y, z) return ServoPIDController(ids=[node.id],axis=axis,iterPeriod=100,target=f) 2) If I want to monitor the average stress on the flexible membrane, what should I do? My idea is that iterate all nodes and sum up the force in the direction of the connection line between the centre of the crosssection and the node, and then divide it by the area of the flexible membrane. If so, how to get the force in the direction of the connection line between the centre of the crosssection and the node for an individual node? Cheer, Kyle -- 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 #707278]: Servo control of flexible membrane using ServoPIDController
New question #707278 on Yade: https://answers.launchpad.net/yade/+question/707278 Hi! I am trying to model a cylindrical triaxial test based on Pfacet and ServoPIDController. I would like to model a triaxial compression test with confining pressure equal to 50kPa. The bottom and top loading plates are created using the 'facet' element. The top one is assumed to move slowly in the vertical direction while the bottom one is fixed. The cylindrical walls are generated using 'Pfacet' elements. Referring to [1], I wrote the current MWE but don't know how to use the ServoPIDController to achieve servo control of the flexible membrane with confining pressure. The MWE is presented below: from __future__ import print_function from yade import pack, ymport, qt import gts, os.path, locale, plot, random import numpy as np from yade.gridpfacet import * import math locale.setlocale( locale.LC_ALL, 'en_US.UTF-8' ) #gts is locale-dependend. If, for example, german locale is used, gts.read()-function does not import floats normally ### 1 ### ### DEFINING VARIABLES AND MATERIALS ### # The following lines are used parameter definitions readParamsFromTable( # material parameters young_w = 5e9, # Young's modulus of plates and walls young_g = 1.8e6, # Young's modulus of grains [1] den_w = 7874, # density of plates and walls den_g = 980, # density of grains poi_w = 0.3, # possion's ratio of plates and walls poi_g = 0.25, # possion's ratio of grains friAngle_w = 0.5,#radians(15), # friction angle of plates and walls friAngle_g = 0.5,#radians(29), # friction angle of grains # Parameters of cylindrical walls x_cyl = 0.0547, # x-coordinate of center of cylindrical walls y_cyl = 0.0535, # y-coordinate of center of cylindrical walls z_cyl = 0, # z-coordinate of center of cylindrical walls r_cyl = 0.0358, # radius of the cylinder h_cyl = 0.14, # height of the cylinder ) from yade.params.table import * # create materials for spheres and walls wallMat = O.materials.append(FrictMat(young = young_w, poisson = poi_w, frictionAngle = friAngle_w, density = den_w, label = 'walls')) sphereMat = O.materials.append(FrictMat(young = young_g, poisson = poi_g, frictionAngle = friAngle_g, density = den_g, label = 'spheres')) ### ###2### ### IMPORTING GRAINS AND CREATING CLUMPS ### ### # spheres pred = pack.inCylinder((x_cyl, y_cyl, z_cyl), (x_cyl, y_cyl, h_cyl), r_cyl) sp = SpherePack() sp = pack.randomDensePack(pred, spheresInCell=2000, radius=0.005, returnSpherePack=True) spheres = sp.toSimulation(color=(0, 1, 1), material=sphereMat) # assign unique color for each sphere currentSphereId = O.bodies[0].id color = randomColor() for b in O.bodies: if b.id != currentSphereId:#change color each time clumpId changes currentSphereId = b.id color = randomColor() if isinstance(b.shape,Sphere):#colorize spheres b.shape.color = color # create top and bottom plates h_cyl = max([b.state.pos[2] + b.shape.radius for b in O.bodies if isinstance(b.shape, Sphere)]) top_plate = O.bodies.append(yade.geom.facetCylinder((x_cyl,y_cyl,h_cyl),radius=r_cyl*1.2,material=wallMat,height=0,segmentsNumber=10,color=(1,1,1),wire=True)) bottom_plate = O.bodies.append(yade.geom.facetCylinder((x_cyl,y_cyl,0),radius=r_cyl*1.2,material=wallMat,height=0,segmentsNumber=40,color=(1,1,1))) #O.bodies[top_plate].state.vel = (0, 0, -0.01) #O.bodies[bottom_plate].state.vel = (0, 0, 0) #O.bodies[bottom_plate].state.blockedDOFs = 'xyzXYZ' # Define engine O.engines = [ ForceResetter(), InsertionSortCollider([Bo1_Sphere_Aabb(), Bo1_PFacet_Aabb(), Bo1_Facet_Aabb()], sortThenCollide=True), InteractionLoop( [ Ig2_GridNode_GridNode_GridNodeGeom6D(), Ig2_GridConnection_GridConnection_GridCoGridCoGeom(), Ig2_Sphere_Sphere_ScGeom6D(), Ig2_Sphere_PFacet_ScGridCoGeom(), Ig2_Facet_Sphere_ScGeom(), ], [ Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True,setCohesionOnNewContacts=True), Ip2_FrictMat_FrictMat_FrictPhys() ], [ Law2_ScGeom6D_CohFrictPhys_CohesionMoment(), Law2_ScGeom_FrictPhys_CundallStrack(), Law2_ScGridCoGeom_FrictPhys_CundallStrack(), Law2_GridCoGridCoGeom_FrictPhys_
Re: [Yade-users] [Question #707268]: Use of ServoPIDController for simulating cylindrical triaxial test
Question #707268 on Yade changed: https://answers.launchpad.net/yade/+question/707268 Status: Answered => Solved Ruidong LI confirmed that the question is solved: Hi, Jan Thanks for your reply. > It actually does move > Yes, I can capture the movement After adding the 'Bo1_Facet_Aabb()' in the > 'InsertionSortCollider' part of the engine. > In the example it is combined with rotation, but for linear motion, you can > use just ServoPIDController OK. Thx. > please focus on one problem per one question ([2], point 5). > OK. I will open one new question and close this one. Many thanks. Best, Kyle -- 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 #707268]: Use of ServoPIDController for simulating cylindrical triaxial test
New question #707268 on Yade: https://answers.launchpad.net/yade/+question/707268 Hi! I am trying to model a cylindrical triaxial test based on Pfacet and ServoPIDController. I would like to model a triaxial compression test with confining pressure equal to 50kPa. The bottom and top loading plates are created using the 'facet' element. The top one is assumed to move slowly in the vertical direction while the bottom one is fixed. The cylindrical walls are generated using 'Pfacet' elements. Referring to [1], I wrote the current MWE but encountered with some problems. They are summarized as follows: 1) When implementing the MWE, the top plate is supposed to move, but actually does not. And the cylindrical walls are going to be destroyed. What causes this to happen and how to solve this? 2) I would like to apply confining pressure on cylindrical walls. How to achieve this? 3) For the ServoPIDController, do 'TranslationEngine', 'CombinedKinematicEngine' and 'ServoPIDController' need to be used together? Many thanks. The MWE is presented below: from __future__ import print_function from yade import pack, ymport, qt import gts, os.path, locale, plot, random import numpy as np from yade.gridpfacet import * import math locale.setlocale( locale.LC_ALL, 'en_US.UTF-8' ) #gts is locale-dependend. If, for example, german locale is used, gts.read()-function does not import floats normally ### 1 ### ### DEFINING VARIABLES AND MATERIALS ### # The following lines are used parameter definitions readParamsFromTable( # material parameters young_w = 5e9, # Young's modulus of plates and walls young_g = 1.8e6, # Young's modulus of grains [1] den_w = 7874, # density of plates and walls den_g = 980, # density of grains poi_w = 0.3, # possion's ratio of plates and walls poi_g = 0.25, # possion's ratio of grains friAngle_w = 0.5,#radians(15), # friction angle of plates and walls friAngle_g = 0.5,#radians(29), # friction angle of grains # Parameters of cylindrical walls x_cyl = 0.0547, # x-coordinate of center of cylindrical walls y_cyl = 0.0535, # y-coordinate of center of cylindrical walls z_cyl = 0, # z-coordinate of center of cylindrical walls r_cyl = 0.0358, # radius of the cylinder h_cyl = 0.14, # height of the cylinder ) from yade.params.table import * # create materials for spheres and walls wallMat = O.materials.append(FrictMat(young = young_w, poisson = poi_w, frictionAngle = friAngle_w, density = den_w, label = 'walls')) sphereMat = O.materials.append(FrictMat(young = young_g, poisson = poi_g, frictionAngle = friAngle_g, density = den_g, label = 'spheres')) ### ###2### ### IMPORTING GRAINS AND CREATING CLUMPS ### ### # spheres pred = pack.inCylinder((x_cyl, y_cyl, z_cyl), (x_cyl, y_cyl, h_cyl), r_cyl) sp = SpherePack() sp = pack.randomDensePack(pred, spheresInCell=2000, radius=0.005, returnSpherePack=True) spheres = sp.toSimulation(color=(0, 1, 1), material=sphereMat) # assign unique color for each sphere currentSphereId = O.bodies[0].id color = randomColor() for b in O.bodies: if b.id != currentSphereId:#change color each time clumpId changes currentSphereId = b.id color = randomColor() if isinstance(b.shape,Sphere):#colorize spheres b.shape.color = color # create top and bottom plates h_cyl = max([b.state.pos[2] + b.shape.radius for b in O.bodies if isinstance(b.shape, Sphere)]) top_plate = O.bodies.append(yade.geom.facetCylinder((x_cyl,y_cyl,h_cyl),radius=r_cyl*1.2,height=0,segmentsNumber=40,color=(1,1,1))) bottom_plate = O.bodies.append(yade.geom.facetCylinder((x_cyl,y_cyl,0),radius=r_cyl*1.2,height=0,segmentsNumber=40,color=(1,1,1))) # Define engine O.engines = [ ForceResetter(), InsertionSortCollider([Bo1_Sphere_Aabb(), Bo1_PFacet_Aabb(),], sortThenCollide=True), InteractionLoop( [ Ig2_GridNode_GridNode_GridNodeGeom6D(), Ig2_GridConnection_GridConnection_GridCoGridCoGeom(), Ig2_Sphere_Sphere_ScGeom6D(), Ig2_Sphere_PFacet_ScGridCoGeom(), ], [ Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True,setCohesionOnNewContacts=True), Ip2_FrictMat_FrictMat_FrictPhys() ], [ Law2_ScGeom6D_CohFrictPhys_CohesionMoment(), Law2_ScGeom_FrictPhys_CundallStrack(), Law2_ScGridCoGeom_
[Yade-users] [Question #707251]: deploy Yade on the HPC
New question #707251 on Yade: https://answers.launchpad.net/yade/+question/707251 Hi! I'd like to deploy Yade on the HPC. Is there any tutorials? Many thanks. Kyle -- 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 #707148]: Cylindrical triaxial test using Pfacet
Question #707148 on Yade changed: https://answers.launchpad.net/yade/+question/707148 Status: Answered => Open Ruidong LI is still having a problem: Hi, Jan. >yes, it looks pretty similar [4] Could you please provide an example of using ServoPIDController? Because there is no tutorial about how to use it. I am inclined to think that this command's explanation is not easy to understand without an example. Many thanks. Looking forward to your reply. Kyle -- 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 #707148]: Cylindrical triaxial test using Pfacet
Question #707148 on Yade changed: https://answers.launchpad.net/yade/+question/707148 Status: Needs information => Open Ruidong LI gave more information on the question: Hi, Jan. >Have you tried ServoPIDController? I try to use it but can't find any tutorials. In PFC [1], the velocity value of the wall is determined by multiplying a factor by the stress difference (target stress minus current stress). This value is updated regularly. I am not sure whether the principle of the ServoPIDController is the same as that in PFC. Looking forward to your reply. Kyle [1]https://docs.itascacg.com/pfc700/pfc/pfcmodule/doc/manual/wall_manual/wall_commands/cmd_wall_servo.html?highlight=servo#command:wall.servo -- 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 #707148]: Cylindrical triaxial test using Pfacet
Question #707148 on Yade changed: https://answers.launchpad.net/yade/+question/707148 Ruidong LI gave more information on the question: Can someone help me with servo-control part? Many 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 #707183]: High unbalanced force ratio
Question #707183 on Yade changed: https://answers.launchpad.net/yade/+question/707183 Status: Answered => Open Ruidong LI is still having a problem: Hi! Bruno Thanks for your reply. >The initial state is simply out of equilibrium apparently. Before adding gravity, the whole simulation is in equilibrium. But after that, it became unstable. The unbalanced force ratio (UFR) increased sharply and then decreased to 0.11. After more than 2,000,000 iterations, the UFR still maintains a value of around 0.11. I am so confused. >I suppose there is a trend toward reduction (hence settlement) but maybe to >slow for you to realize - that's more a question about computation time. But it seems it's not possible to wait for the result for a long period, such as one month, right? Any suggestions for avoiding this? Cheers, Ruidong -- 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 #707148]: Cylindrical triaxial test using Pfacet
Question #707148 on Yade changed: https://answers.launchpad.net/yade/+question/707148 Status: Answered => Open Ruidong LI is still having a problem: Hi! Jan Thanks for your reply. >the same, what does "will break" mean? That they do not touch each other? The particles went out of the cylinder and flew all around [1]. [1]https://answers.launchpad.net/yade/+question/404479 Cheers, Kyle -- 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 #707183]: High unbalanced force ratio
Question #707183 on Yade changed: https://answers.launchpad.net/yade/+question/707183 Status: Answered => Open Ruidong LI is still having a problem: Hi, Jérôme Thanks for your reply. >Was your initial geometry supposed to be at rest under gravity ? If not, I would say it is normal you observe some settlement (=> sample height decreases), through a YADE-DEM dynamic process (=> high unbalanced force ratio) It's hard to say, actually. The particles represented by GTS files are supposed to be at rest under gravity. But for the corresponding clumps, I think it's not. I understand the existence of a settlement. But I don't know why the high unbalanced force ratio happened and exists without any trend toward reduction. And I want to know how to deal with this problem. Looking forward to your reply. Many thanks. Kyle -- 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 #707182]: level-set-based simulation with Pfacet
Question #707182 on Yade changed: https://answers.launchpad.net/yade/+question/707182 Status: Answered => Solved Ruidong LI confirmed that the question is solved: Thanks Jérôme Duriez, that solved my 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 #707148]: Cylindrical triaxial test using Pfacet
Question #707148 on Yade changed: https://answers.launchpad.net/yade/+question/707148 Status: Needs information => Open Ruidong LI gave more information on the question: Hi! Jan Thanks for your reply. > The loading is simply such that a constant velocity is prescribed > (s.state.vel = ...) But which velocity value should I define to achieve quasi-equilibrium compression? Can you show me the code? I am sorry for my stupidity. >Therefore I ask for a MWE and better description of "are destroyed" (anyway >useful even with the code). Actually, what I mean is that when you run the 'triax' py without any change, the triangle facets will break. And my current problem is not with the 'triax' py. My problem is that I just finished the part about generating flexible membranes using Pfacet and don't know what to do next. What I want to achieve is isotropic compression with a confining pressure equal to 50 kPa. And then, maintain the confining pressure in the x and y directions and apply a displacement-controlled movement of the top wall. my MWE is presented as below ###1 ### ### LOAD INITIAL PACKING ### dir_inipacking = '/home/kyle/Yade/install/bin/lentils/xml/iniPacking.xml' O.load(dir_inipacking) # Define engine O.engines = [ ForceResetter(), InsertionSortCollider([Bo1_Sphere_Aabb(), Bo1_PFacet_Aabb(),], sortThenCollide=True), InteractionLoop( [ Ig2_GridNode_GridNode_GridNodeGeom6D(), Ig2_GridConnection_GridConnection_GridCoGridCoGeom(), Ig2_Sphere_Sphere_ScGeom6D(), Ig2_Sphere_PFacet_ScGridCoGeom(), ], [ Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True,setCohesionOnNewContacts=True), Ip2_FrictMat_FrictMat_FrictPhys() ], [ Law2_ScGeom6D_CohFrictPhys_CohesionMoment(), Law2_ScGeom_FrictPhys_CundallStrack(), Law2_ScGridCoGeom_FrictPhys_CundallStrack(), Law2_GridCoGridCoGeom_FrictPhys_CundallStrack(), ] ), GlobalStiffnessTimeStepper(timestepSafetyCoefficient=0.8,label='ts'), NewtonIntegrator(gravity=(0,-9.81,0),damping=0.1,label='newton') ] # encoding: utf-8 from yade import qt from yade.gridpfacet import * import math ### 2 ### ### DEFINING VARIABLES AND MATERIALS ### # The following lines are used parameter definitions readParamsFromTable( # directory dir_vtk = '/home/kyle/Yade/install/bin/lentils/vtk/20', # directory of storing vtk files dir_txt = '/home/kyle/Yade/install/bin/lentils/txt/20/Num20_servo.txt', # directory of storing txt files dir_xml = '/home/kyle/Yade/install/bin/lentils/xml/20', # directory of storing xml files # material parameters young_w = 5e9, # Young's modulus of plates and walls young_g = 1.8e6, # Young's modulus of grains [1] den_w = 7874, # density of plates and walls den_g = 980, # density of grains poi_w = 0.3, # possion's ratio of plates and walls poi_g = 0.25, # possion's ratio of grains friAngle_w = 0.5,#radians(15), # friction angle of plates and walls friAngle_g = 0.5,#radians(29), # friction angle of grains # Parameters of cylindrical walls x_cyl = 0.0547, # x-coordinate of center of cylindrical walls y_cyl = 0.0535, # y-coordinate of center of cylindrical walls z_cyl = 0, # z-coordinate of center of cylindrical walls r_cyl = 0.0358, # radius of the cylinder h_cyl = 0.14, # height of the cylinder # confining pressure preStress = -5, # axial strain rate strainRate=-100 ) from yade.params.table import * ### 3### ### CREATE TOP AND BOTTOM PLATES ### # erase rigid cylindrical facets for b in O.bodies: if isinstance(b.shape,Facet): O.bodies.erase(b.id) # create top and bottom plates h_cyl = max([b.state.pos[2] + b.shape.radius for b in O.bodies if isinstance(b.shape, Sphere)]) top_plate = O.bodies.append(yade.geom.facetCylinder((x_cyl,y_cyl,h_cyl),radius=r_cyl*1.2,height=0,segmentsNumber=40,color=(1,1,1))) bottom_plate = O.bodies.append(yade.geom.facetCylinder((x_cyl,y_cyl,0),radius=r_cyl*1.2,height=
[Yade-users] [Question #707183]: High unbalanced force ratio
New question #707183 on Yade: https://answers.launchpad.net/yade/+question/707183 Hi! I want to model the cylindrical compression and follow the procedures as follows: 1. Import geometry from microCT 2. Create clumps using the Euclidean 3D method mentioned in the 'Clump' code [1] 3. Equilibrate within rigid boundaries until unbalanced force is zero 4. Apply gravity and leave run until unbalanced force is zero 5. Check void ratio. But the problems are so werid and summarized as follows: 1. Sample height decrease 2. High unbalanced force ratio after applying gravity. My MWE is as follows: from __future__ import print_function from yade import pack, ymport, qt import gts, os.path, locale, plot, random import numpy as np import math locale.setlocale( locale.LC_ALL, 'en_US.UTF-8' ) #gts is locale-dependend. If, for example, german locale is used, gts.read()-function does not import floats normally ### ### 1 ### ### DEFINING VARIABLES AND MATERIALS ### # The following lines are used parameter definitions readParamsFromTable( # directory dir_clump = '/home/kyle/Downloads/yadetxtClumps20_1.16.txt', # positions and radius of spherical particles in the clump dir_vtk = '/home/kyle/Yade/install/bin/lentils/vtk/20', # directory of storing vtk files dir_txt = '/home/kyle/Yade/install/bin/lentils/txt/20/Num20_initialpacking.txt', # directory of storing txt files dir_xml = '/home/kyle/Yade/install/bin/lentils/xml/20', # directory of storing xml files # material parameters young_w = 5e9, # Young's modulus of plates and walls young_g = 1.8e6, # Young's modulus of grains [1] den_w = 7874, # density of plates and walls den_g = 980, # density of grains poi_w = 0.3, # possion's ratio of plates and walls poi_g = 0.25, # possion's ratio of grains friAngle_w = 0.5,#radians(15), # friction angle of plates and walls friAngle_g = 0.5,#radians(29), # friction angle of grains # Parameters of cylindrical walls x_cyl = 0.0547, # x-coordinate of center of cylindrical walls y_cyl = 0.0535, # y-coordinate of center of cylindrical walls z_cyl = 0, # z-coordinate of center of cylindrical walls r_cyl = 0.0358, # radius of the cylinder h_cyl = 0.14, # height of the cylinder n_cyl = 100, # number of boxes forming cylinder t_cyl = 0.0001, # thickness of the boxes #Parameters of lower and upper plates (square box) w_plate = 0.05, # width of plates t_plate = 0.0001, # thickness of plates ) from yade.params.table import * # create materials for spheres and walls wallMat = O.materials.append(FrictMat(young = young_w, poisson = poi_w, frictionAngle = friAngle_w, density = den_w, label = 'walls')) sphereMat = O.materials.append(FrictMat(young = young_g, poisson = poi_g, frictionAngle = friAngle_g, density = den_g, label = 'spheres')) ### ###2### ### IMPORTING GRAINS AND CREATING CLUMPS ### ### # import clumps spheres = ymport.textClumps(dir_clump,material=sphereMat,discretization=0) # assign unique color for each clump currentClumpId = O.bodies[0].clumpId color = randomColor() for b in O.bodies: if b.clumpId != currentClumpId:#change color each time clumpId changes currentClumpId = b.clumpId color = randomColor() if isinstance(b.shape,Sphere):#colorize spheres b.shape.color = color # count the number of clumps bodyList = [] for i in O.bodies: if i.isClump: bodyList.append(i.id) print(len(bodyList)) ### ### 3 ### ### CREATING CYLINDRICAL WALLS, BOTTOM PLATE, AND TOP PLATE ### ### h = max([b.state.pos[2] + b.shape.radius for b in O.bodies if isinstance(b.shape, Sphere)]) #top_plate = O.bodies.append(yade.geom.facetCylinder((x_cyl,y_cyl,h),radius=r_cyl*1.2,height=0,segmentsNumber=40,color=(1,1,1))) #bottom_plate = O.bodies.append(yade.geom.facetCylinder((x_cyl,y_cyl,0),radius=r_cyl*1.2,height=0,segmentsNumber=40,color=(1,1,1))) cyl_wallRigid = O.bodies.append(yade.geom.facetCylinder((x_cyl,y_cyl,h/2),radius=r_cyl,height=h,segmentsNumber=100,color=(0,0,1))) # calculate void ratio def myClumpVoidRatio(VolTot, density): mass=sum([ b.state.mass for b in O.bodies if b.isClump]) VolSolid = mass/density poro = (VolTot-VolSolid)/VolSolid return poro h_cyl = max([b.state.pos[2] + b.shape.radius for b in O.bodies if isinstance(b.shape, Sphere)]) Vol = math.
[Yade-users] [Question #707182]: level-set-based simulation with Pfacet
New question #707182 on Yade: https://answers.launchpad.net/yade/+question/707182 Hi! I'd like to know whether the YADE supports the interaction of the level-set body with the Pfacet elements. I want to create a cylindrical sample filled with level-set bodies. Moreover, for the boundary condition, I'd like to use a flexible membrane using Pfacet elements. I want to know whether this is achievable in YADE right now. Many thanks. Cheer, Kyle -- 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 #707148]: Cylindrical triaxial test using Pfacet
Question #707148 on Yade changed: https://answers.launchpad.net/yade/+question/707148 Status: Answered => Open Ruidong LI is still having a problem: Dear Jan, Thanks for your reply. 1) I'll check. Many thanks. 2) I'll check. Many thanks. 3) How do I achieve servo control? I am still not clear about this. I guess there is no displacement-based servo control in the code 'triax.py'. 4) This means the cylindrical surface is divided into triangles. Maybe you can try to run the code 'triax.py' and you will understand what I am talking about. 5) I'll check. Many thanks. Cheers, Kyle -- 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 #694667]: 'ScGeom' object has no attribute 'connectionBody'
Question #694667 on Yade changed: https://answers.launchpad.net/yade/+question/694667 Ruidong LI posted a new comment: Hi! I also entoured with this problem. What should we do with this? Many 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 #707167]: ModuleNotFoundError: No module named 'pandas'
Question #707167 on Yade changed: https://answers.launchpad.net/yade/+question/707167 Status: Answered => Solved Ruidong LI confirmed that the question is solved: Hi Karol, This solved my problem. Many thanks. Cheers Kyle -- 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 #707167]: ModuleNotFoundError: No module named 'pandas'
New question #707167 on Yade: https://answers.launchpad.net/yade/+question/707167 Hi! I am trying to test the code 'oedometric.py' in the folder 'clumps-breakage' (https://gitlab.com/yade-dev/trunk/blob/master/examples/clumps-breakage/oedometric.py) on ubuntu 22.04 but failed. The error is presented as below: Traceback (most recent call last): File "/home/kyle7/Yade/install/bin/yade-2023-05-15.git-a46ea55", line 343, in runScript execfile(script,globals()) File "/usr/lib/python3/dist-packages/past/builtins/misc.py", line 87, in execfile exec_(code, myglobals, mylocals) File "/home/kyle7/Yade/install/bin/clumps-breakage/oedometric.py", line 3, in import pandas as pd ModuleNotFoundError: No module named 'pandas' Can someone help me with this? Many thanks. Kyle -- 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 #707148]: Cylindrical triaxial test using Pfacet
New question #707148 on Yade: https://answers.launchpad.net/yade/+question/707148 Hi! I am new to Yade. I am working on the simulation of cylindrical triaxial tests. I have looked through all questions on the launchpad related to this field. But, unfortunately, there is no complete simulation code for cylindrical triaxial tests. My questions about the simulation of cylindrical triaxial tests are summarized as follows: 1) Is it possible to simulate the cylindrical triaxial tests in Yade? 2) If so, which code or what kind of methods should be referred to? 3) How do I achieve servo control? 4) Someone mentioned that the code 'triax.py' in the 'concrete' folder is valuable for reference. But the problem is that when implementing the code, facets generated using the command 'Pfacet' are destroyed. What caused the simulation to be like this? How do I avoid this? 5) Can someone provide a MWE (Minimum Working Example) for simulating cylindrical triaxial tests? Many thanks. Kyle -- 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 #706821]: Particle breakage of clump using JCFpm
Question #706821 on Yade changed: https://answers.launchpad.net/yade/+question/706821 Status: Answered => Solved Ruidong LI confirmed that the question is solved: Thanks Luc Scholtès, that solved my 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 #706976]: Reconstruct particles from ct images
Question #706976 on Yade changed: https://answers.launchpad.net/yade/+question/706976 Status: Answered => Solved Ruidong LI confirmed that the question is solved: Dear Karol, Many thanks. Your suggestion sovled my problem. Cheers, Kyle -- 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 #706976]: Reconstruct particles from ct images
Question #706976 on Yade changed: https://answers.launchpad.net/yade/+question/706976 Status: Answered => Open Ruidong LI is still having a problem: Dear Vasileios, Thanks for your answer. I am so confused. In my opinion, the statement 'ymport.textClumps' is enough. is Adding the statement 'O.bodies.appendClumped' unnecessary? Moreover, What I want to do is import multiple grains with different colour (same colour for spheres in the same clump). This can be done with the statement 'ymport.textClumps' but requires an iteration of loading text. If I put all clump information into one single text like this answer #13. Can I still distinguish clumps by assigning different colours? Best, Kyle -- 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 #706976]: Reconstruct particles from ct images
Question #706976 on Yade changed: https://answers.launchpad.net/yade/+question/706976 Ruidong LI posted a new comment: Dear Vasileios, Thanks for your answer. I have tried your code. So I just need to create a text for each clump and import them iteratively, right? Just using the 'ymport.textClumps statement'. Best, Kyle -- 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 #706976]: Reconstruct particles from ct images
Question #706976 on Yade changed: https://answers.launchpad.net/yade/+question/706976 Status: Answered => Open Ruidong LI is still having a problem: Dear Vasileios, Thanks for your answer. I have tried your code. The error is below: unning script /home/kyle/Yade/install/bin/clump_test1.py Traceback (most recent call last): File "./yade-Unknown", line 343, in runScript execfile(script,globals()) File "/usr/lib/python3/dist-packages/past/builtins/misc.py", line 87, in execfile exec_(code, myglobals, mylocals) File "/home/kyle/Yade/install/bin/clump_test1.py", line 69, in O.bodies.appendClumped(spheres) TypeError: No registered converter was able to produce a C++ rvalue of type boost::shared_ptr from this Python object of type tuple My code is: inputfile = '/home/kyle/Downloads/yadetxtClumps.txt' spheres = ymport.textClumps(inputfile,material=sphereMat,discretization=0) O.bodies.appendClumped(spheres) The file in the 'inputfile' is like this (contain many clumps): 0.068037 0.02416 0.0017637 0.0011423 1 0.068615 0.022601 0.0014278 0.00077244 1 0.069542 0.023528 0.0017906 0.00071539 1 0.066801 0.025141 0.0019788 0.0006786 1 0.049731 0.03499 0.0017112 0.00070436 10 0.048747 0.034309 0.0013637 0.00063928 10 0.047719 0.034628 0.0014651 0.00056027 10 0.047299 0.035323 0.0020008 0.00052311 10 Sorry to trouble you. But do you know what's wrong with this? Best, Kyle -- 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 #706062]: Triaxial test with flexible cylindrical membrane
Question #706062 on Yade changed: https://answers.launchpad.net/yade/+question/706062 Status: Answered => Open Ruidong LI is still having a problem: Dear Jan, Thanks for your reply. I have read your recommendation. But I am wondering whether it is applicable to use bonded particles representing flexible membrane instead of PFacet? If so, can you give me some hints (How to simulate bonded particles or how to apply force on them to achieve stress-servo control)? Looking forward to your reply. Many thanks. Best, Kyle -- 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 #706976]: Reconstruct particles from ct images
Question #706976 on Yade changed: https://answers.launchpad.net/yade/+question/706976 Status: Answered => Open Ruidong LI is still having a problem: Thanks for your reply, Karol. >I can also recommend Matlab code for clumo generation developed by Angelidakis >et al. It is described in [3]. [3] Angelidakis et al. 2021 CLUMP: A Code Library to generate Universal Multi-sphere Particles, Softwarex --By the way, I'd like to ask how can I import the position and radius of generated spheres into Yade. I mean once I obtain the positions and radius of spheres forming a clump externally such as your recommendation [1]. I can use the function 'O.bodies.appendClumped([])', right? But I have more than 800 particles. Should I put those lines into the main py file together with other definitions such as material, or create a new py file and called by the main py file? [1] Angelidakis et al. 2021 CLUMP: A Code Library to generate Universal Multi-sphere Particles, Softwarex Best Kyle -- 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 #706976]: Reconstruct particles from ct images
Question #706976 on Yade changed: https://answers.launchpad.net/yade/+question/706976 Ruidong LI posted a new comment: Thanks for your reply, Jan. >Just an idea to use this concept of "suitably" overlapping spheres, which >would represent more realistically the actual shape then cropped regular hexa >packing. Of course, it would need some development, with uncertain result :-) -- yes. I will try and respond to you ASAP. Many thanks. Best Kyle 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 #706976]: Reconstruct particles from ct images
Question #706976 on Yade changed: https://answers.launchpad.net/yade/+question/706976 Ruidong LI posted a new comment: Thanks for your reply, Karol. >I can also recommend Matlab code for clumo generation developed by Angelidakis >et al. It is described in [3]. [3] Angelidakis et al. 2021 CLUMP: A Code Library to generate Universal Multi-sphere Particles, Softwarex --I will try and respond to you ASAP. Many thanks. Best Kyle -- 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 #706976]: Reconstruct particles from ct images
Question #706976 on Yade changed: https://answers.launchpad.net/yade/+question/706976 Ruidong LI gave more information on the question: Thanks for your reply, Jan. >or use a different packing method than regularHexa, see e.g. [Kozicki2012] [2] -- I have looked through your recommended paper. But in my opinion, maybe the method mentioned in this paper is more suitable for regular shapes. What I have are irregular-shaped particles with interior holes. Do you have any other recommendations? Best Kyle 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 #706976]: Reconstruct particles from ct images
Question #706976 on Yade changed: https://answers.launchpad.net/yade/+question/706976 Status: Answered => Open Ruidong LI is still having a problem: Thanks for your reply, Karol. >Are the particles somehow bonded (I mean grains in the sample)? --What do you mean particles are bonded? The particles in a clump are bonded. But the particle surfaces (gts) are separated from each other with a small gap (one-pixel distance in the ct image). >If not, I think that particles rearrange and change the height of the sample. --Yes. I think so. The rearrangement of particle positions and gaps between clumps changed the height of the sample. >If you want to adjust the size of the particles, you can expand spheres in the >packing a little bit after generation. --Yes, I have tried this method. I have increased the z-coordinates (the direction of height) of each point in the gts file by 1.2 times. But the result indicates that the height of the sample is still not insufficient. My target is 40mm, and the obtained one is 37.5mm (multiple 1.2 times in z coordinates). By doing so, the unbalanced force ratio always stands at a high level (>0.25). Do you have any other recommendations? Best Kyle -- 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 #706976]: Reconstruct particles from ct images
Question #706976 on Yade changed: https://answers.launchpad.net/yade/+question/706976 Ruidong LI gave more information on the question: Karol, Thanks for your reply. ---I think that you need to be much more specific. For example, is each of the 800 gts files modelling a single particle? ---Yes. Each GTS file denotes one single particle. ---Do you try to reproduce the exact shape of the sample (particles in their corresponding locations from the very beginning)? What code do you use to generate clumps? ---Yes. I'd like to reproduce the exact shape of the sample (particles in their corresponding locations from the very beginning). The code I used to generate the clump is presented below: def createSphere(pred, ndivmin, spacing): aabb = pred.aabb() dim0 = aabb[1][0] - aabb[0][0] bodyList = [] ndiv = ndivmin while len(bodyList)==0: radius = dim0 / ndiv # get some characteristic dimension, use it for radius bodyList = O.bodies.append(pack.regularHexa(pred, radius = radius, gap = -radius, color = [random.random(),random.random(),random.random()], material = sphereMat)) ndiv = ndiv + spacing ---Can you prepare the MVE[1]? If not possible, please describe your workflow. --- I can provide the MVE. But I don't know how to provide my GTS. I just imported gts files into Yade and created the surface, then generate spheres using the 'pack.regularHexa' function. ---What do you mean that the sample shrinks in the height direction? Smaller than expected after deposition, or did something actually shrink? --- This means that when the unbalanced force ratio tends to be stable, the height of the sample is smaller than the real value. The reason behind this, I guess, is the voids between clumps since clumps are smaller than the gts surface. -- 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 #706976]: Reconstruct particles from ct images
New question #706976 on Yade: https://answers.launchpad.net/yade/+question/706976 Hello! I have a question about generating clumps from '.gts' files. I have almost 800 gts files. The issue was that the generated clump had a smaller volume than the original GTS file, causing the sample to shrink in the height direction. The inherent contact force chains were also altered as a result of this phenomenon. Can anyone assist me with this problem? Best Kyle -- 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 #706845]: Young's modulus and normal stiffness
New question #706845 on Yade: https://answers.launchpad.net/yade/+question/706845 Hi! I am new to Yade. What I am gonna ask is a simple question. If I know the normal and shear stiffness kn and ks of spheres, how can I determine the corresponding Young's modulus E and Poisson's ratio v? E = kn * D (radius of sphere)? -- 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 #706821]: Particle breakage of clump using JCFpm
New question #706821 on Yade: https://answers.launchpad.net/yade/+question/706821 Hi! I want to model the particle breakage of clumps during the one-dimensional compression in a cylindrical boundary. My steps are as followed: Step 1: I import 800 GTS files into Yade and generated one-on-one 800 clumps. That is to say that each GTS corresponds to a unique clump. Step 2: I create a cylindrical boundary to cover those clumps and provide two plates (bottom one fixed, top one applied with force). Note that the force applied on the top plate is a multi-load, which varies with the strain of the sample. Step 3: I assign JCFpm material for each clump and material of steel for the boundary and plates. Step 4: record what we want to know and implement simulation. Here, my questions are as follows: 1) Is my whole procedure appropriate to simulate the one-dimensional compression while considering particle breakage? 2) For Step 2, I would like to know how to assign multi-loads is correct. It seems currently the top plate is not quasi-static during loading. Do I need to clear the speed for every number of calculation steps? 3) For the whole simulation, how do we know how many clumps are broken and can we record the isolated clumps at the final? The MWM is presented below (I don't know how to provide the gts files without an external link, so maybe randomly generating some clumps can replace them.): from __future__ import print_function from yade import pack, ymport import gts, os.path, locale, plot, random import numpy as np locale.setlocale( locale.LC_ALL, 'en_US.UTF-8' ) #gts is locale-dependend. If, for example, german locale is used, gts.read()-function does not import floats normally ### DEFINING VARIABLES AND MATERIALS ### # The following lines are used parameter definitions readParamsFromTable( # directory dir_gts = '/home/kyle/Yade/install/bin/gts', # directory of storing gts files dir_vtk = '/home/kyle/Yade/install/bin/vtk', # directory of storing vtk files dir_txt = '/home/kyle/Yade/install/bin/txt', # directory of storing txt files fileType = '.gts', # type of file # type of generating spheres ['hexa','dense'] genType = 'hexa', # material parameters young_w = 210e9, # Young's modulus of plates and walls young_g = 180e6, # Young's modulus of grains [1] den_w = 7874, # density of plates and walls den_g = 1162, # density of grains poi_w = 0.3, # possion's ratio of plates and walls poi_g = 0.25, # possion's ratio of grains friAngle_w = 15, # friction angle of plates and walls friAngle_g = 19, # friction angle of grains # Parameters of cylindrical walls x_cyl = 0.0106, # x-coordinate of center of cylindrical walls y_cyl = 0.01005, # y-coordinate of center of cylindrical walls z_cyl = 0, # z-coordinate of center of cylindrical walls r_cyl = 0.0097, # radius of the cylinder h_cyl = 0.04151, # height of the cylinder n_cyl = 100, # number of boxes forming cylinder t_cyl = 0.0001, # thickness of the boxes #Parameters of lower and upper plates (square box) w_plate = 0.015, # width of plates t_plate = 0.0001, # thickness of plates # applied stress stress = [12500, 25000, 5, 10, 20, 30, 40, 80, 160, 320], # target applied stress # target displacement displacement = [3.6e-5, 6.8e-5, 0.00014, 0.00028, 0.00047, 0.000642, 0.000796, 0.001342, 0.002441, 0.003989] # target displacement ) from yade.params.table import * # create materials for spheres and walls wallMat = O.materials.append(FrictMat(young = young_w, poisson = poi_w, frictionAngle = friAngle_w, density = den_w, label = 'walls')) #sphereMat = O.materials.append(FrictMat(young = young_g, poisson = poi_g, frictionAngle = friAngle_g, density = den_g, label = 'spheres')) def sphereMat(): return JCFpmMat( type=1, young = young_g, frictionAngle = radians(friAngle_g), density = den_g, poisson = poi_g, tensileStrength = 1e6, cohesion=1e6, jointNormalStiffness=1e7, jointShearStiffness=1e7, jointCohesion=1e6, jointFrictionAngle=radians(20), jointDilationAngle=radians(0) ) ## Rq: density needs to be adapted as porosity of real rock is different to granular assembly due to difference in porosity (utils.sumForces(baseBodies,(0,1,0))/(Z*X) should be equal to Gamma*g*h with h=Y, g=9.82 and Gamma=2700 kg/m3 ### ### IMPORTING GRAINS AND CREATING CLUMPS ###
Re: [Yade-users] [Question #706774]: Gradation curve of assembly made of clumps
Question #706774 on Yade changed: https://answers.launchpad.net/yade/+question/706774 Status: Answered => Solved Ruidong LI confirmed that the question is solved: Thank you so much. That solved my problem. -- 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 #706774]: Gradation curve of assembly made of clumps
Question #706774 on Yade changed: https://answers.launchpad.net/yade/+question/706774 Status: Needs information => Open Ruidong LI gave more information on the question: Hello, Jan. Actually, what I need is the calculation of the gradation curve in general. I have an assembly of clumps generated based on imported stl files. And I would like to obtain the gradation curve of the assembly. I am new to the numerical simulation. And I don't know how to calculate the size of a clump. More specially, I don't know which length can represent the size of the clump and be used for gradation calculation. The length of the longest axis? I have shared some STL files for your reference [1]. Looking forward to your reply. Many thanks. Ruidong [1]https://drive.google.com/file/d/1W2P2W0uxf4ktOTbc7lNxdJojZlntXWxO/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 #706774]: Gradation curve of assembly made of clumps
New question #706774 on Yade: https://answers.launchpad.net/yade/+question/706774 Hello! I would like to know how to calculate the gradation curve of an assembly consisting of clumps. Many 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 #706733]: volume of spheres inside a clump
Question #706733 on Yade changed: https://answers.launchpad.net/yade/+question/706733 Status: Answered => Solved Ruidong LI confirmed that the question is solved: OK. Thank you so much. -- 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 #706733]: volume of spheres inside a clump
Question #706733 on Yade changed: https://answers.launchpad.net/yade/+question/706733 Ruidong LI posted a new comment: Dear Jan, Thanks for your help. Your answer helps a lot. But if we want to calculate the volume for the scenario where the spheres overlap, do you have any good ideas for solving this? Best regards, Ruidong LI -- 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 #706733]: volume of spheres inside a clump
Question #706733 on Yade changed: https://answers.launchpad.net/yade/+question/706733 Status: Needs information => Open Ruidong LI gave more information on the question: Dear Jan, For each clump and corresponding 'gts' file, the ratio of the total volume of the clump (which may be more clear) to the volume of 'gts' can be calculated, right? I want to get this value for each clump. Best regards, Ruidong -- 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 #706733]: volume of spheres inside a clump
Question #706733 on Yade changed: https://answers.launchpad.net/yade/+question/706733 Status: Needs information => Open Ruidong LI gave more information on the question: Thanks for the reminder, Jan. Actually, I would like to know the total volume of spheres in one clump. Actually, my clumps are generated by using the function 'yade.pack.regularHexa'. The surf is determined by importing the 'GTS' file. What I finally want is the ratio of the total volume of spheres to the corresponding volume of the GTS file. Not sure whether I clarify my question or not. :( Many thanks Ruidong -- 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 #706733]: volume of spheres inside a clump
New question #706733 on Yade: https://answers.launchpad.net/yade/+question/706733 Hi! I would like to calculate the volume of spheres inside each clump. How can I do this? Many 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 #706639]: Oedometer test of cylindrical specimens
Question #706639 on Yade changed: https://answers.launchpad.net/yade/+question/706639 Status: Answered => Open Ruidong LI is still having a problem: Hi! Thanks for your advice. Adopting the TriaxialStressController is indeed a good choice. But I just have a question. For oedometer tests, there is no confining pressure since the cylindrical walls are fixed to ensure the diameter of the specimen is unchanged. I didn't do the experiment, I am not sure about this. In this case, how should we use the TriaxialStressController? That's really confusing. Regards, Ruidong -- 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 #706639]: Oedometer test of cylindrical specimens
New question #706639 on Yade: https://answers.launchpad.net/yade/+question/706639 Hi! I am new to Yade. I am currently working on the simulation of the oedometer test of cylindrical specimens. We have obtained all .gts files of particles inside the cylindrical specimen by CT scanning. The corresponding clumps have been successfully imported into Yade using the method provided by [1]. Now what we want to do is to simulate the oedometer test. Referring to [2], there are two approaches for us to simulate subsequent procedures: 1. First, create cylindrical walls in the form of boxes. Then, fix those walls and create two plates (upper and lower). FIx the lower one and apply force on the upper one. 2. Adopt the TriaxialStressController? My comments and questions about the abovementioned two approaches are here: 1. This solution is easy to understand. But I am not sure whether it is reasonable since we have 800 particles. 2. I tried the code in [3]. It seems the wall will be broken. I am not sure whether those walls can be fixed so that can be used to simulate the oedometer test. So, can anyone solve my questions and guide me in a possible way? Many thanks. [1] https://answers.launchpad.net/yade/+question/662544 [2] https://answers.launchpad.net/yade/+question/658629 [3] https://gitlab.com/yade-dev/trunk/-/blob/master/examples/concrete/triax.py -- 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 #706246]: create clump using gts
Question #706246 on Yade changed: https://answers.launchpad.net/yade/+question/706246 Status: Open => Solved Ruidong LI confirmed that the question is solved: This problem was solved by inverting face orientations. -- 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 #706246]: create clump using gts
Question #706246 on Yade changed: https://answers.launchpad.net/yade/+question/706246 Status: Answered => Open Ruidong LI is still having a problem: Is it an advertisement? -- 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 #706246]: create clump using gts
New question #706246 on Yade: https://answers.launchpad.net/yade/+question/706246 Hi! I try to mimic the example named 'gts-horse.py' with my own .gts file. But the spheres seem to be not generated with the facets but outside. My code is presented as follows: # -*- encoding=utf-8 -*- # © 2009 Václav Šmilauer from __future__ import print_function from yade import pack import gts, os.path, locale locale.setlocale( locale.LC_ALL, 'en_US.UTF-8' ) #gts is locale-dependend. If, for example, german locale is used, gts.read()-function does not import floats normally ''' if you get "Error: unsupported locale setting" -> type as root: "dpkg-reconfigure locales" -> choose "en_US.UTF-8" (press space to choose) ''' # coarsen the original horse if we have it # do nothing if we have the coarsened horse already surf = gts.read(open('26.gts')) if surf.is_closed(): pred = pack.inGtsSurface(surf) aabb = pred.aabb() dim0 = aabb[1][0] - aabb[0][0] radius = dim0 / 40. # get some characteristic dimension, use it for radius O.bodies.append(pack.regularHexa(pred, radius=radius, gap=radius / 4.)) O.bodies.append(pack.gtsSurface2Facets(surf, wire=True)) O.engines = [ ForceResetter(), InsertionSortCollider([Bo1_Sphere_Aabb(), Bo1_Facet_Aabb()], label='collider'), InteractionLoop( [Ig2_Sphere_Sphere_ScGeom(), Ig2_Facet_Sphere_ScGeom()], [Ip2_FrictMat_FrictMat_FrictPhys()], [Law2_ScGeom_FrictPhys_CundallStrack()], ), NewtonIntegrator(damping=.1, gravity=[0, 0, -5000]), PyRunner(iterPeriod=1000, command='timing.stats(); O.pause();'), PyRunner(iterPeriod=10, command='addPlotData()') ] O.dt = .7 * PWaveTimeStep() O.saveTmp() O.timingEnabled = True O.trackEnergy = True from yade import plot plot.plots = { 'i': ( 'total', O.energy.keys, ) } def addPlotData(): plot.addData(i=O.iter, total=O.energy.total(), **O.energy) plot.plot(subPlots=False) from yade import timing from yade import qt qt.View() The download link for the '.gts' file is shown below: https://drive.google.com/file/d/1_vEFdUc64rDjoPJ8utrenGtqS-chAjlR/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 #706217]: import shapes as levelset body
New question #706217 on Yade: https://answers.launchpad.net/yade/+question/706217 Hi! I am new to Yade. I am currently working on the Levelset-based DEM in Yade. I noticed there are generally three approaches for users to use the 'yade.utils.levelSetBody'. One is among pre-defined shapes (through shape and related attributes), or to mimic a Clump instance (clump attribute, for comparison purposes), or directly assign the discrete distance field on some grid (distilled and grid attributes)s. So, I wonder if it is possible to create a level set body with shapes imported in STL or other forms as there are not too many illustrations on how to use this function. Can anyone help me with this? Thanks! Ruidong LI -- 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 #706062]: Triaxial test with flexible cylindrical membrane
New question #706062 on Yade: https://answers.launchpad.net/yade/+question/706062 Hi, I'm new to Yade. I wanted to do a triaxial test on a cylindrical specimen with a flexible membrane. I would like to how can I model the flexible membrane, and are there any available codes for references? Can somebody help me? -- 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