Re: [Yade-users] [Question #706187]: Servo controller torque and force engine
Question #706187 on Yade changed: https://answers.launchpad.net/yade/+question/706187 Status: Answered => Open Nima Goudarzi is still having a problem: Hi Jan, Thanks for the detail. Indeed, in my problem, linear velocity and angular velocity are the target. I was able to implement the servoController for a simple sphere rolling over a polyhedra ground. The steady state reaches and my target linear velocity, angular velocity, and slip ratio are secured. No adjustments for the rotation center was required. However, the PID gain parameters need to be calibrated. I, then, tried to repeat the same scenario for a facet wheel imported as a .stl. The facets were clumped and I assign them an initial mass and inertia. My wheel is a rover wheel with a cylindrical shape with a radius of 0.15m rolling about y-direction (plane outward) and a width of 0.1m. I have issues for the moment of inertia of the clumped wheel. During the settlement of the wheel on the terrain under the gravity, the wheel twists about x and z axes and constraining DOFs doesn't help at all. What could be the reason? because of this, the rolling of the wheel is not conducted appropriately. I have also calculated the moment of inertia manually and assigned it to the clumped wheel but the issue of twisting persist. Is there an approach to accurately calculate the moment of inertia for a clump of facets regarding that facets do not have volume. Your comments are highly appreciated. Nima -- 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 #706187]: Servo controller torque and force engine
Question #706187 on Yade changed: https://answers.launchpad.net/yade/+question/706187 Status: Answered => Open Nima Goudarzi is still having a problem: Thanks Jan Angular velocity is the controlling variable which I need to adjust with a variable torque. So is the linear velocity which is controlled by force. Therefore, velocity and angVelocity shouldn't be input but are used for servo- increase and/or decrease of force and torque. Another question, is ServoPIDController an independent engine or it should be conjugated other engines or be included in the combinedKinematics Engine. I don't know many of its variables and I didn't find an example of its usage anywhere. Cheers, Nima -- 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 #706218]: Microstrain for an assembly of clumps in direct shear test
Question #706218 on Yade changed: https://answers.launchpad.net/yade/+question/706218 Nima Goudarzi gave more information on the question: Hi Jan, Thanks so much. By mirroring do you mean releasing from clumps or this is a specific technique I am not aware of. And, do you imply that the strain analyses for clumps themselves is not possible for clumps yet? Sincerely Nima -- 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 #706218]: Microstrain for an assembly of clumps in direct shear test
New question #706218 on Yade: https://answers.launchpad.net/yade/+question/706218 Hi there, I'm trying to export VTK of strains during a direct shear test on an assembly of clumps of spheres to no avail so far. I've read the relevant micro-stress and micro-strain sections in the manual and also have tried some workarounds proposed in QAs. I'm trying to visualize the localization (shear band) during the shearing phase FOR ALL SPHERES. What I have implemented is: TW=TesselationWrapper() TW.triangulate() TW.computeVolumes() TW.volume() TW.setState(0) step=0 while 1: stresses = bodyStressTensors() strains = [Matrix3(*[TW.deformation(b.id,i,j) for i in range(0,3) for j in range(0,3)]) for b in O.bodies] step +=1 O.run(1000,True) TW.setState(1) TW.defToVtk("strain_"+str(step)+".vtk") which does not work. I realize that this is not a proper approach for strain calculation of an assembly since I get the "triangualtion failed for body ..." in the command window and consequently paraview crashes displaying the results. Here, I need advice for getting strains for the clump assembly (if possible at all). 1- Is it necessary to explicitly extract the strain tensor like strains = [Matrix3(*[TW.deformation(b.id,i,j) for i in range(0,3) for j in range(0,3)]) for b in O.bodies] Thanks 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
[Yade-users] [Question #706187]: Servo controller torque and force engine
New question #706187 on Yade: https://answers.launchpad.net/yade/+question/706187 Hi there, I'm trying to apply variable torque and force to a facet body (imported stl) wheel rolling over a granular terrain. I have three questions: 1- Does the torqueEngine allow for the allocation and update of the mass center of the body during its rolling as it is possible for combinedKinematicsEngine and rotationEngine? 2-How to apply variable force and torque to a body in YADE? 3- Is there any available servoController for force and torque to adjust the linear and angular velocity? Much obliged Nima -- 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 #703335]: Setting Up GPU
Question #703335 on Yade changed: https://answers.launchpad.net/yade/+question/703335 Nima Goudarzi posted a new comment: Hi Robert, Thanks. I had been able to check the Cuda capability (Cuda 11.7) and compile SuitSparse (5.13.0). I even compiled YADE with GPU enabled. (1) I guess, there is an inconsistency in the Cuda installation instruction (YADE manual) for adding CUDA library to the path: Yade manual: # Add the CUDA library to your path export PATH=/usr/local/cuda/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda/lib64\ ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} After installation of Cuda, three different Cuda folders are generated in my usr/local directory 1- Cuda 2- Cuda 11.7 3-Cuda 11 Original instruction manual: The PATH variable needs to include export PATH=/usr/local/cuda-11.8/bin${PATH:+:${PATH}}. Nsight Compute has moved to /opt/nvidia/nsight-compute/ only in rpm/deb installation method. When using .run installer it is still located under /usr/local/cuda-11.8/. To add this path to the PATH variable: export PATH=/usr/local/cuda-11.8/bin${PATH:+:${PATH}} In addition, when using the runfile installation method, the LD_LIBRARY_PATH variable needs to contain /usr/local/cuda-11.8/lib64 on a 64-bit system, or /usr/local/cuda-11.8/lib on a 32-bit system To change the environment variables for 64-bit operating systems: export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64\ ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} This is different from Yade manual. Which one to use? However neither resolve the blank path issue unless the CUDAPATH is introduced (in the terminal) For example if Cuda 11.7 is installed: CUDAPATH=/usr/local/cuda- 11.7 export PATH=/usr/local/cuda- 11.7/bin${PATH: + ${PATH}} export_LD_LIBRARY_PATH=/usr/local/cuda- 11.7/lib64\ ${LD_LIBRARY_PATH: + :${LD_LIBRARY_PATH}} and make config within cd '/usr/local/SuiteSparse-5.13.0' gives CUDA root directory: CUDA PATH=/usr/local/cuda-11.7 . . . Cuda library:CUDART_LIB=/usr/local/cuda-11.7/lib64/libcudart.so CUBLAS library: CUBLAS_LIB=/usr/local/cuda-11.7/lib64/libcublas.so I am able to compile SuiteSparse-5.13.0 by make after this but am not sure if the provided paths are correct. (2) Regarding manual entry of CUDA_PATH in SuitSparse_Config.mk if this is the first few lines for #NVIDIA CUDA configuration for CHOLMOD and SPQR CUDA=auto if fneq ($(CUDA), no) CUDA_PATH= $(shell which nvcc 2>/dev/null | sed "s/ \ /bin\ /nvcc//") else CUDA_PATH= Manual entry of the CUDA_PATH (enforcing all conditions to point to the location of installed Cuda) CUDA=auto if fneq ($(CUDA), no) CUDA_PATH= /usr/local/cuda-11.7 else CUDA_PATH=/usr/local/cuda-11.7 Leads to the similar result as (1) Is this the appropriate approach for manual change of SuitSparse_Config.mk or I need to point to another directory (for example cuda itself-- not cuda 11.7? Please advise I have been able to verify the accuracy of compilation by executing sh gpu.sh within SuiteSparse/CHOLMOD/Demo. 3- Here is the cmake command I use for compiling yade: cmake -DCMAKE_INSTALL_PREFIX=../install ../trunk -DCHOLMOD_GPU=ON -DSUITESPARSEPATH=/usr/local/SuiteSparse-5.13.0 Cmake finds the paths as recommended in YADE manual but the paths are not the ones I introduce either in SuitSparse_Config.mk or in the terminal. Also, multiple identical paths are reported for the same CHOLMOD (and dependencies such as AMD), SuiteSparse, CuBlas, and Metis. I feel something is wrong here. BTW, I can compile YADE with this approach but when I run YADE executable, I get segmentation fault (core dumped). Similar deployment on an Azure VM gives another error. 3- I'm now working on your comment for Cuda 9.0 but need to know which trunk version (for YADE compilation) is compatible with this installation. Also, how important is finding Nvidia 384.11 GPU drivers? Basically, how can I enforce to install this specific version? Thanks so much Nima -- 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 #703335]: Setting Up GPU
New question #703335 on Yade: https://answers.launchpad.net/yade/+question/703335 Hi there, I'm trying to set up GPU following https://yade-dev.gitlab.io/trunk/GPUacceleration.html#install-suitesparse. I have encountered doing so. Two main issues are: 1- After installation of Cuda, the samples folder is not generated within the Cuda directory (/usr/local/Cuda/Samples). Therefore, I have to download the Cuda Samples by git clone https://github.com/NVIDIA/cuda-samples.git and then compiling within Samples folder. Running ./deviceQuery inside'/Samples/1_Utilities/deviceQuery' seems satisfactory giving: ./deviceQuery Starting... CUDA Device Query (Runtime API) version (CUDART static linking) Detected 1 CUDA Capable device(s) Device 0: "Quadro P2200" CUDA Driver Version / Runtime Version 11.7 / 11.7 CUDA Capability Major/Minor version number:6.1 Total amount of global memory: 5051 MBytes (5296029696 bytes) (010) Multiprocessors, (128) CUDA Cores/MP:1280 CUDA Cores GPU Max Clock rate:1493 MHz (1.49 GHz) Memory Clock rate: 5005 Mhz Memory Bus Width: 160-bit L2 Cache Size: 1310720 bytes Maximum Texture Dimension Size (x,y,z) 1D=(131072), 2D=(131072, 65536), 3D=(16384, 16384, 16384) Maximum Layered 1D Texture Size, (num) layers 1D=(32768), 2048 layers Maximum Layered 2D Texture Size, (num) layers 2D=(32768, 32768), 2048 layers Total amount of constant memory: 65536 bytes Total amount of shared memory per block: 49152 bytes Total shared memory per multiprocessor:98304 bytes Total number of registers available per block: 65536 Warp size: 32 Maximum number of threads per multiprocessor: 2048 Maximum number of threads per block: 1024 Max dimension size of a thread block (x,y,z): (1024, 1024, 64) Max dimension size of a grid size(x,y,z): (2147483647, 65535, 65535) Maximum memory pitch: 2147483647 bytes Texture alignment: 512 bytes Concurrent copy and kernel execution: Yes with 2 copy engine(s) Run time limit on kernels: Yes Integrated GPU sharing Host Memory:No Support host page-locked memory mapping: Yes Alignment requirement for Surfaces:Yes Device has ECC support:Disabled Device supports Unified Addressing (UVA): Yes Device supports Managed Memory:Yes Device supports Compute Preemption:Yes Supports Cooperative Kernel Launch:Yes Supports MultiDevice Co-op Kernel Launch: Yes Device PCI Domain ID / Bus ID / location ID: 0 / 101 / 0 Compute Mode: < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) > deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 11.7, CUDA Runtime Version = 11.7, NumDevs = 1 Result = PASS Is this the right approach for testing the Cuda installation for the most recent version? I'm not aware if the Samples folder had been generated for eralier versions inside the Cuda directory itself. I, then, run sudo apt-get install libopenblas-dev liblapack-dev 2- Following the instruction, I download the latest version of SuiteSparse package (5.13.0) and extracted it to usr/local folder using sudo (Question: Is extracting to usr/local mandatory?). Therefore, there is a /usr/local/SuiteSparse-5.13.0 directory from which I run make config within this directory gives: SuiteSparse package compilation options: SuiteSparse Version: 5.13.0 SuiteSparse top folder: /usr/local/SuiteSparse-5.13.0 Package: LIBRARY= PackageNameWillGoHere Version: VERSION= x.y.z SO version: SO_VERSION= x System: UNAME= Linux Install directory:INSTALL= /usr/local/SuiteSparse-5.13.0 Install libraries in: INSTALL_LIB= /usr/local/SuiteSparse-5.13.0/lib Install include files in: INSTALL_INCLUDE= /usr/local/SuiteSparse-5.13.0/include Install documentation in: INSTALL_DOC= /usr/local/SuiteSparse-5.13.0/share/doc/suitesparse-5.13.0 Optimization level: OPTIMIZATION=-O3 parallel make jobs: JOBS=8 BLAS library: BLAS=-lblas LAPACK library: LAPACK= -llapack Other libraries: LDLIBS= -lm -lrt static library: AR_TARGET= PackageNameWillGoHere.a shared library (full):SO_TARGET= PackageNameWillGoHere.so.x.y.z shared library (main):SO_MAIN= PackageNameWillGoHere.so.x shared library (short): SO_PLAIN=
Re: [Yade-users] [Question #703104]: Changing the periodic cell for cylindrical samples
Question #703104 on Yade changed: https://answers.launchpad.net/yade/+question/703104 Nima Goudarzi posted a new comment: Also, is there a way to disable the particle (and image) generation in the opposite boundary? I do not need two of the four periodic boundaries. 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 #703104]: Changing the periodic cell for cylindrical samples
Question #703104 on Yade changed: https://answers.launchpad.net/yade/+question/703104 Nima Goudarzi posted a new comment: Hi Jan Thanks. I do understand the difficulty of C++ implementation and am more interested in a simpler python version. I have made some progress with an equivalent method where I am able to project the location, velocity, and force of the particles which are exiting one of the boundaries. Here, I still need periodic boundaries to allow for the exit/entry unless there is a method to avoid YADE periodic boundaries at all (no boundaries where particles themselves provide the stability or facet boundaries with occasional contact activation/deactivation--- just brainstorming). As you mentioned earlier, boundaries are the issue and I am trying to figure out when the rotation (position, velocity, force) should take place or even if I need to generate new particles exactly at my desired location with the velocities and forces of the exiting particles to provide a smooth granular flow. In the latter, I remove the particles which fully exit the boundary which causes a temporary stop of the run (why is that?). I just wanted to have your thoughts on the approach I have taken to mimic the periodicity. Cheers, Nima -- 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 #703104]: Changing the periodic cell for cylindrical samples
Question #703104 on Yade changed: https://answers.launchpad.net/yade/+question/703104 Nima Goudarzi posted a new comment: Hi Jan, Thanks for the comment. What I'm thinking is preserving the currently existing periodic boundary conditions in YADE and doing a trick to impose the entrance/exit of particles to/from two adjacent boundaries. This has been implemented before in DEM (see for example "Development of a mixed boundary environment for axi-symmetric DEM analyses"). I do not seek changes in the geometry of the periodic cell but am looking to placing the corner of the cell in the center of the cylindrical sample (please note that in the circumferential direction, the boundary is not periodic) and somehow changing the logic (C++) of locations of particles exit/reentry. Looking forward to hearing your thoughts. Cheers Nima -- 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 #703104]: Changing the periodic cell for cylindrical samples
Question #703104 on Yade changed: https://answers.launchpad.net/yade/+question/703104 Nima Goudarzi gave more information on the question: Hi Jerome, Thanks. My model domain is a true cylinder meaning that I have confinement in the circumferential direction. What I am looking for is the development of a periodic cell focusing on converging sides of a wedge (which could be of different angles). Regarding your comment for always dependency of base vectors, I assume that I am not able to change the shape of cell and it always remains parallelepiped (if I understood correctly - - please correct me if wrong ). Therefore, what I might be able to do would be a exit/entrance of particles in polar system rather than the existing Cartesian one while the cell is I still in its original parallelepiped configuration. Regards Nima > On Sep 12, 2022, at 10:55 AM, Jérôme Duriez > wrote: > > Your question #703104 on Yade changed: > https://answers.launchpad.net/yade/+question/703104 > > Jérôme Duriez posted a new comment: > Hi, > > A short remark, just looking at your title. With periodic boundaries, > you're dealing with an infinite medium, so I'm not sure you can call it > "cylindrical". > > You may also note that the replicated pattern (= the Cell) is always > defined from a 3 vectors "basis" (basis in " " because these vectors are > not necessarily independent). > > For source code, see e.g. at > https://gitlab.com/yade-dev/trunk/-/blob/master/core/Cell.hpp and .cpp > > https://gitlab.com/yade- > dev/trunk/-/blob/master/pkg/dem/NewtonIntegrator.cpp is also relevant > > -- > You received this question notification because you asked the 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 #703121]: Torque output for STL
Question #703121 on Yade changed: https://answers.launchpad.net/yade/+question/703121 Nima Goudarzi posted a new comment: Thanks, Vasileios Is there any working example for the TorqueRecorder? 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 #703121]: Torque output for STL
Question #703121 on Yade changed: https://answers.launchpad.net/yade/+question/703121 Status: Answered => Open Nima Goudarzi is still having a problem: Hi Thanks for the comment. How to do so for my case ( the part of the script I posted earlier). Also, do you mean that I need to avoid combinedKinematicEngine and using simple translation and rotation? Best, Nima > On Sep 11, 2022, at 2:56 AM, Karol Brzezinski > wrote: > > Your question #703121 on Yade changed: > https://answers.launchpad.net/yade/+question/703121 > > Karol Brzezinski posted a new comment: > Just a comment: instead of using CombinedKinematicEngine, I would clump > all the facets together, and drive them as one body. > > Cheers, > Karol > > -- > You received this question notification because you asked the 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
[Yade-users] [Question #703121]: Torque output for STL
New question #703121 on Yade: https://answers.launchpad.net/yade/+question/703121 Hi I'm trying to plot the torque-rotation curve for a vane rotating inside a granular sample. The vane has been imported as .stl file as . . . EO = ymport.stl('/home/ngoudarzi/Desktop/Vane Shear Test/Light PSD Version/Homogeneous/YADE/Executables/Cad/Scaled_Vane_Regular_PSD2.stl',material=Stiff,shift=Vector3(0,0,-0.0635),wire=False,color=Vector3(0.5,0.6,0.8)) Vane= O.bodies.append(EO) for i in Vane: shearVane= O.bodies[i] shearVane.dynamic=True shearVane.state.blockedDOFs='xyzXYZ' # THE ONLY FREE DOFs ARE TRANSLATION ALONG AND ROTATION ABOUT Z. AT FIRST ALL DOFs ARE RESTRIANED. MOVEMENT (USING CombinedKinematicEngine) # WILL FREE DOFs IN THE DIRECTION OF MOVEMENT. ALL OTHER DOFs ARE STILL CONSTRAINED TO AVOID DEVIATION OF THE TOOL FROM Z AXIS. VaneID = [b for b in O.bodies if isinstance(b.shape,Facet)] # LIST OF FACETS IN THE IMPORTED VANE . . . I can easily get the forces in all directions for the vane, but it seems that the torque calculation is not correct. I use a function as def history(): global vaneFx,vaneFy,vaneFz,vaneTx,vaneTy,vaneTz,vaneDx,vaneDy,vaneDz,vaneRotZ vaneFx=0 vaneFy=0 vaneFz=0 vaneTx=0 vaneTy=0 vaneTz=0 for b in VaneID: vaneFx+=O.forces.f(b.id,sync=True)[0] vaneFy+=O.forces.f(b.id,sync=True)[1] vaneFz+=O.forces.f(b.id,sync=True)[2] vaneTx+=O.forces.t(b.id,sync=True)[0] vaneTy+=O.forces.t(b.id,sync=True)[1] vaneTz+=O.forces.t(b.id,sync=True)[2] vaneDx=rotEngine.zeroPoint[0] vaneDy=rotEngine.zeroPoint[1] vaneDz=rotEngine.zeroPoint[2] vaneRotZ=(shearVane.state.rot().norm())*(180/math.pi) yade.plot.addData({'i':O.iter,'vaneFx':vaneFx,'vaneFy':vaneFy,'vaneFz':vaneFz,'vaneTx':vaneTx,'vaneTy':vaneTy,'vaneTz':vaneTz,'vaneDx':vaneDx,'vaneDy':vaneDy,'vaneDz':vaneDz,'vaneRotZ':vaneRotZ,}) The values of torque are so small (e-20). Noteworthy that I have experimental results of the same test and know the trend of the torque rotation. Am I missing anything regarding torque calculation for the imported stl? Thanks 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
[Yade-users] [Question #703104]: Changing the periodic cell for cylindrical samples
New question #703104 on Yade: https://answers.launchpad.net/yade/+question/703104 Hi I'm trying to reduce the computation time for a vane shear test where a central vane penetrates the underlying sample to a certain depth and then starts rotating for about 90 degrees. I understand that this problem is essentially non-periodic in the sense that the built-in parallelepiped periodic cell does not allow for the exchange of particles for my cylindrical sample. I do not know if changing the YADE periodicity is possible to account for radial deformations. The development of a wedge shape periodic cell is of much interest with the capability to exchange particles from two connecting sides as opposed to the original cell where the particles exist from one boundary and enter from the opposite boundary. To summarize, is it possible to have a periodic cell with one corner located in the center of the cylindrical sample and particles exit and enter from two sides pointing toward the center? If required, I can give a draft of what I mean. Also, where can I find the source code for the periodic cell in the trunk? Thanks so much and looking forward to hearing your thoughts -- 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 #700164]: External Moving Object using MPI
Question #700164 on Yade changed: https://answers.launchpad.net/yade/+question/700164 Status: Expired => Open Nima Goudarzi is still having a problem: Thanks, Bruno Where is the example, in the MPI folder? -- 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 #700165]: Functions in FEM-DEM
Question #700165 on Yade changed: https://answers.launchpad.net/yade/+question/700165 Status: Answered => Open Nima Goudarzi is still having a problem: Hi and thanks Jan, Indeed, I'm using [1]. However, I didn't include other dependencies including oofem file in my previous posts. The pure DEM (with moving wheel as facet) works by YADE executable. And yes, my FEM-DEM uses Python purely which might be the source of the issue. My python is 2.7 and my Ubuntu 18.04 since I kept everything old for being able to install FEM-DEM after struggling a lot for installation on Ubuntu 20.04 with no avails. This is my other question: Can FEM-DEM be installed on Ubunto 20.04 with newer versions of Python? Thanks for your proposed solution. I'll give it a try. My question here is: Can I use __builtin__.someFunction inside engines when I implement the Pyrunner. For example, does this work? import __builtin__ . . . PyRunner(iterPeriod=1, command="__builtin__.WheelPenetration()" ,label='checker') or do I need to declare it somewhere else? Thanks 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 #700165]: Functions in FEM-DEM
Question #700165 on Yade changed: https://answers.launchpad.net/yade/+question/700165 Status: Needs information => Open Nima Goudarzi gave more information on the question: Thanks so much, Jan > please be more specific, there are several approaches / projects on this. My problem falls in the soil-tool interaction category. The original DEM geometry is constructed outside this script and is then imported here. That DEM model is mostly composed of clumps of spheres of different shapes and sizes but there exist some standalone spheres as well. Soil Geometry I am interested to implement a volumetric coupling at the bottom of a 2.5 mm DEM model with their original clumps but am not sure if FEM-DEM coupling works for clumps. As a result, I considered a separate transition zone at the bottom of this 2.5 mm which is purely constructed from spherical particles. In a separate script, the clumps are first deposited on this transition and at the end of the deposition, the DEM geometry which now has two parts (spheres for the transition and clumps for the upper 2.5mm layer) are exported. That is why I have two ymport in my script. This DEM is then coupled from the bottom to a coarse FEM mesh with constrained BCs (all 6 DOFs) at the bottom and sides. To constrain the lateral movement of the DEM, I have used a facetBox (wallMask=51) which lacks the top and bottom boundaries. Therefore, the model owns two types of boundaries: nodes constraints of the FEM mesh, and the facetBox for the upper layer DEM. I hope that I have been able to explain the geometry. Motions Upon the generation of the model geometry (soil) and application of boundary conditions, I try to model the interaction between a face wheel over the surface of the DEM terrain: Using a combinedKinematicsEngine: 1- The facet wheel is first penetrated vertically (in the Y direction) up to a certain depth (1mm). In this phase, the Translation component (of the combinedKinematicsEngine) controls the movement of the wheel. The motion of the wheel is continuously monitored using the zero point of the Rotation Engine component which in the penetration phase has zero angular velocity but is NOT dead. I mean that the difference between the updating coordination of the zero point in direction [1] and the wheel radius, determines when to stop the penetration and start the 2 phase (wheel rotation). 2- Upon the arrival of the wheel to the desired penetration depth, the Translation component (of the combinedKinematicsEngine) is deactivated and the Rotation Engine component imposes the rotational movement of the wheel using an angular velocity which is calculated from the penetration velocity by means of a SLIDING RATIO. As you can see, I need functions for enabling/disabling different motions of the wheel. THE PREVIOUS SCRIPT HAD SOME ISSUES. THIS ONE IS THE UPDATED ONE: THE MOST ANNOYING ERROR WHILE RUNNING IS THAT THE WheelPenetration() FUNCTION HAS NOT BEEN DEFINED. Therefore the PyRunner doesn't work. As a consequence, the next functions are not executed as well. >what does "other mode" mean? I meant model not mode. I mean if we add some functions in YADE script (DEM), do we need to change something in the coupling or FEM scripts? BTW, functions () are not callable and this is my first and foremost issue. Note that a pure DEM model with the same configuration works as a charm. Thanks so much ## ## import math from math import sqrt from libyade import yade from yade import * from yade import pack, plot import numpy from pyquaternion import Quaternion from yade import pack, export, Vector3 from yade import ymport import sys import os import os.path import IPython ### INPUT PARAMETERS ### ## Wheel PROPERTIES widthWheel=0.00125 Wheel_R=0.0025 Wheel_AdditionalNormalForce=-19.6 ##WHELL MOVEMENT slidingratio=0.3 velocity=0.01 #m/s THAT SHOULD BE 0.01 m/s angularVelocity=velocity/((1-slidingratio)*Wheel_R) #RAD/S gravityAcc=-9.81 deposFricDegree = 28.5 # INITIAL CONTACT FRICTION FOR SAMPLE PREPARATION normalDamp=0.7 # NUMERICAL DAMPING shearDamp=0.7 youngSoil=0.7e8# CONTACT STIFFNESS FOR SOIL youngContainer=210e9 # CONTACT STIFFNESS FOR CONTAINER poissonSoil=0.3 # POISSION'S RATIO FOR SOIL poissionContainer=0.25 # POISSION'S RATIO FOR CONTAINER densSoil=2650 # DENSITY FOR SOIL densContainer=7850 # DENSITY FOR CONTAINER numDamp=0.4 binSize=0.4*Wheel_R activeDistance=0.01 iniDistanceWheelfromBoundary=0.004 differenceWCenterActiveEnd=activeDistance - iniDistanceWheelfromBoundary initialPeneterationofWheel=0.001 iniWheelDisfromMaxY=0.0001 ### DEFINING VARIABLES AND MATERIALS ### #
[Yade-users] [Question #700165]: Functions in FEM-DEM
New question #700165 on Yade: https://answers.launchpad.net/yade/+question/700165 Hi, I'm trying to model a soil-wheel interaction using FEM-DEM. The upper part of my model is DEM clumps which are then are coupled (volume coupling) from the bottom to a FEM mesh. Here I used a spherical transition zone and avoided clumps coupling but am also wondering if clump coupling is also supported. The motions of the facet wheel consist of: 1- Penetration in Y direction up to a certain depth (in Y direction) 2- Rotation in the longitudinal direction using a sliding ratio (in Z direction) If I model the same problem with pure DEM particles, I define a CombinedKinematicsEngine and play with its components in different functions declared after the O.engines setup. Unfortunately, when I use FEM-DEM coupling, the functions in YADE model are not recognized and this excessively limits my options for modeling different motions. Noteworthy that I need to use PyRunner to update the zero point of the wheel to disable/enable my engine's components. The basic question is this: Do functions literally work in FEM-DEM coupling? If yes do I need to adjust something scripts other than the YADE mode? Here is my scrip with non-functional functions The geometry is missing but I only need to know if something is wrong with my functions declaration. ## import math from math import sqrt from libyade import yade from yade import * from yade import pack, plot import numpy from pyquaternion import Quaternion from yade import pack, export, Vector3 from yade import ymport import sys import os import os.path import IPython ## ### DEFINING VARIABLES AND MATERIAL PARAMETERS ### ## deposFricDegree = 28.5 # INITIAL CONTACT FRICTION FOR SAMPLE PREPARATION normalDamp=0.4 # NUMERICAL DAMPING shearDamp=0.4 youngSoil=0.7e8# CONTACT STIFFNESS FOR SOIL youngEO=210e9 # CONTACT STIFFNESS FOR EXTERNAL OBJECTS poissonSoil=0.3 # POISSION'S RATIO FOR SOIL poissionEO=0.25 # POISSION'S RATIO FOR EXTERNAL OBJECTS densSoil=2650 # DENSITY FOR SOIL densEO=500 # DENSITY FOR EXTERNAL OBJECTS numDamp=0.4 IniDistanceBladefromBoundary = 0.001 HeightofBlade=0.003 WidthofBlade=0.002 ThicknessofBlade=0.0002 InitialPeneterationofBlade = 0.0005 InitialDistanceofBladefromTopSoil = 0 HorizentalvelocityofBlade = 10 PenetrationvelocityofBlade = 10 SoilId=FrictMat(young=youngSoil,poisson=poissonSoil,frictionAngle=math.radians(deposFricDegree),density=densSoil) O.materials.append(SoilId) EOId=FrictMat(young=youngEO,poisson=poissionEO,frictionAngle=math.radians(0),density=densEO) O.materials.append(EOId) #O.bodies.append([utils.sphere(c,r) for c,r in sp]) #for b in O.bodies: # b.state.blockedDOFs = 'zXY' radius=8.e-5 XcenterofContainer = 0.0025 YcenterofContainer = 0.0054383384 minY=0.00241406 ZcenterofContainer = 10.0e-3 Container=yade.geom.facetBox((XcenterofContainer,YcenterofContainer,ZcenterofContainer), (XcenterofContainer,(YcenterofContainer-minY-radius),ZcenterofContainer),wallMask=51,material=EOId) O.bodies.append(Container) ymport.textClumps("/home/ngoudarzi/Desktop/dem-fem-coupling-master/examples/vol5/DEMPClumps.txt",shift=Vector3(0,0,0),material=SoilId) O.bodies.append(ymport.text("/home/ngoudarzi/Desktop/dem-fem-coupling-master/examples/vol5/DEMSpheres.txt",shift=Vector3(0,0,0),material=SoilId,color=Vector3(0.6,0.6,0.6))) minX=min([b.state.pos[0]-b.shape.radius for b in O.bodies if isinstance(b.shape,Sphere)]) maxX=max([b.state.pos[0]+b.shape.radius for b in O.bodies if isinstance(b.shape,Sphere)]) minY=min([b.state.pos[1]-b.shape.radius for b in O.bodies if isinstance(b.shape,Sphere)]) maxY=max([b.state.pos[1]+b.shape.radius for b in O.bodies if isinstance(b.shape,Sphere)]) minZ=min([b.state.pos[2]-b.shape.radius for b in O.bodies if isinstance(b.shape,Sphere)]) maxZ=max([b.state.pos[2]+b.shape.radius for b in O.bodies if isinstance(b.shape,Sphere)]) print ("minX:",minX,"maxX:",maxX,"minY:",minY,"maxY:",maxY,"minZ:",minZ,"maxZ:",maxZ) ## CREATE WALLS AROUND THE PACKING # radius=8e-5 # mn,mx=Vector3(minX,minY,minZ),Vector3(maxX, maxY, maxZ) # walls=yade.utils.aabbWalls([mn,mx],thickness=0,material=EOId) # wallIds=O.bodies.append(walls) # O.bodies.erase(517222) # O.bodies.erase(517223) XcenterofBlade = 0.0025 YcenterofBlade = maxY+(HeightofBlade/2) ZcenterofBlade = minZ+IniDistanceBladefromBoundary Blade=yade.geom.facetBox((XcenterofBlade,YcenterofBlade,ZcenterofBlade), (WidthofBlade/2,HeightofBlade/2,ThicknessofBlade/2),material=EOId) O.bodies.append(Blade) idsr = [w.id for w in Blade] facets = [b for b in O.bodies if isinstance(b.shape,Facet)] # list of facets in simulation ### DEFINING ENGINES ### gravity=(0,-9.81,0) O.engines = [ ForceResetter(),
[Yade-users] [Question #700164]: External Moving Object using MPI
New question #700164 on Yade: https://answers.launchpad.net/yade/+question/700164 Hi There, I'm trying to model a soil-wheel interaction using MPI. Originally, my DEM model consisted of a larger of highly irregular-shaped clump particles but since YADE MPI has not been designed for clumps, I decided to run the same problem with spherical particles from those clumps. I have set up the model and it started working but no collision occurs between my external moving object which is a facet wheel and the underlying spheres. This is a two-phase problem where the wheel first penetrates into the soil and then starts rotating in the longitudinal direction where the position of the zero point is continually updated. Here is my code missing the DEM geometry (which is imported). As most MPI exampmples in YADE deal with gravity deposition only, I'm wondering if it is possible to model soil-tool interactions like the one I have here. 1- Am I missing something regarding collision establishment? 2- Do I need any adjustments for the rank of my facet wheel to enable collision and getting forces on the wheel? Thanks so much from yade import pack, export from yade import pack, plot from yade import ymport import sys import os import os.path import numpy import math import os from yade import mpy as mp from yade import timing NSTEPS=100 #turn it >0 to see time iterations, else only initilization numThreads = 9 # number of threads to be spawned, (in interactive mode). ### INPUT PARAMETERS ### ## Wheel PROPERTIES rmean=5.56539971721455E-05 widthWheel=0.00125 Wheel_R=0.0025 Wheel_AdditionalNormalForce=-19.6 ##WHELL MOVEMENT slidingratio=0.3 velocity=0.1 #m/s THAT SHOULD BE 0.01 m/s angularVelocity=velocity/((1-slidingratio)*Wheel_R) #RAD/S gravityAcc=-9.81 deposFricDegree = 28.5 # INITIAL CONTACT FRICTION FOR SAMPLE PREPARATION normalDamp=0.7 # NUMERICAL DAMPING shearDamp=0.7 youngSoil=0.7e8# CONTACT STIFFNESS FOR SOIL youngContainer=210e9 # CONTACT STIFFNESS FOR CONTAINER poissonSoil=0.3 # POISSION'S RATIO FOR SOIL poissionContainer=0.25 # POISSION'S RATIO FOR CONTAINER densSoil=2650 # DENSITY FOR SOIL densContainer=7850 # DENSITY FOR CONTAINER numDamp=0.4 binSize=0.4*Wheel_R activeDistance=0.01 iniDistanceWheelfromBoundary=0.004 differenceWCenterActiveEnd=activeDistance - iniDistanceWheelfromBoundary initialPeneterationofWheel=0.001 iniWheelDisfromMaxY=0.0001 ### DDEFINING VARIABLES AND MATERIALS ### SoilId=FrictMat(young=youngSoil,poisson=poissonSoil,frictionAngle=radians(deposFricDegree),density=densSoil) O.materials.append(SoilId) ContainerId=FrictMat(young=youngContainer,poisson=poissionContainer,frictionAngle=radians(0),density=densContainer) O.materials.append(ContainerId) ### # CREATING GEOMETRIES # ### ## IMPORTING THE ALREADY COMPACTED BIN O.bodies.append(ymport.text("/home/ngoudarzi/Desktop/SWI MPI/Half Width/5by6by20_n057_Relaxed_FreeSurface_Spheres.txt",shift=Vector3(0,0,0),material=SoilId)) minX=min([b.state.pos[0]-b.shape.radius for b in O.bodies if isinstance(b.shape,Sphere)]) maxX=max([b.state.pos[0]+b.shape.radius for b in O.bodies if isinstance(b.shape,Sphere)]) minY=min([b.state.pos[1]-b.shape.radius for b in O.bodies if isinstance(b.shape,Sphere)]) maxY=max([b.state.pos[1]+b.shape.radius for b in O.bodies if isinstance(b.shape,Sphere)]) minZ=min([b.state.pos[2]-b.shape.radius for b in O.bodies if isinstance(b.shape,Sphere)]) maxZ=max([b.state.pos[2]+b.shape.radius for b in O.bodies if isinstance(b.shape,Sphere)]) print ("minX:",minX,"maxX:",maxX,"minY:",minY,"maxY:",maxY,"minZ:",minZ,"maxZ:",maxZ) mn,mx=Vector3(minX,minY,minZ),Vector3(maxX,0.01,maxZ) ## CREATE WALLS AROUND THE PACKING walls=aabbWalls([mn,mx],thickness=0,material=ContainerId) wallIds=O.bodies.append(walls) for b in O.bodies: if b.state.pos[1]>0.009: O.bodies.erase(b.id) widthWheel=maxX-minX XcenterofWheel = widthWheel/2+minX YcenterofWheel = Wheel_R+maxY+iniWheelDisfromMaxY ZcenterofWheel = iniDistanceWheelfromBoundary+minZ Wheel1 = geom.facetCylinder((XcenterofWheel,YcenterofWheel,ZcenterofWheel),radius=Wheel_R,height=widthWheel,orientation=Quaternion((0,1,0),-pi/2),wallMask=7,segmentsNumber=1000,material=ContainerId,wire=True,color=Vector3(255,255,255)) O.bodies.append(Wheel1) idsr = [w.id for w in Wheel1] facets = [b for b in O.bodies if isinstance(b.shape,Facet)] # list of facets in simulation for b in facets: O.forces.setPermF(b.id,(0,Wheel_AdditionalNormalForce/800,0)) ### DEFiniNG ENGINES ### O.engines=[ ForceResetter(), InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb(),Bo1_Facet_Aabb()], label="collider"), InteractionLoop(
Re: [Yade-users] [Question #698388]: MPI with Clumps Particles
Question #698388 on Yade changed: https://answers.launchpad.net/yade/+question/698388 Status: Answered => Open Nima Goudarzi is still having a problem: Hi Bruno, Thanks so much. I think both options are tedious but I am interested in trying 1 first. Are there any examples showing me how to do this for clumps? Do I need to predefined subdomains manually (I mean grouping clumps) before importing or I am able to do so in the main analysis script? For 2, I don't have access to hundreds of cores, unfortunately. I highly appreciate it if I'd receive some guidance for 1. Much Obliged Nima -- 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 #698388]: MPI with Clumps Particles
Question #698388 on Yade changed: https://answers.launchpad.net/yade/+question/698388 Status: Answered => Open Nima Goudarzi is still having a problem: Hi Robert. Many thanks for getting back to me. Indeed, this was my first guess for an unsuccessful simulation but something prevents me from attributing everything to the inability of sound splitting when clumps are present. YADE splits the domain per my request for the number of threads meaning that it is either able to cross the boundaries beyond the whole clump or pass it through them. In the latter case (if it is possible), the clumps are split at the boundaries which could be the origin of the error I receive but I cannot verify if this is the case. The other weird thing I'm encountering is that the simulation runs for a few thousand iterations and then is terminated suddenly. I assume if YADE cannot handle clumps, as you suggested, the simulation shouldn't even start. Regarding this, I can consider the possibility of missing some mpi customization for ranks and subdomains since I am using the automatic splitting scheme from one of the mpi examples. Any thoughts on this possibility are also welcome. To a lesser extent, I also am doubtful about the consistency of the mpi with the engines I have used for translation and rotation of the imported .stl file. FYI, I sometimes get a similar error with imported purely spherical particles and in a gravity collapse test. Looking forward to hearing back from Bruno and taking any required actions to resolve the issue. Much obliged Nima -- 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 #698388]: MPI with Clumps Particles
Question #698388 on Yade changed: https://answers.launchpad.net/yade/+question/698388 Status: Expired => Open Nima Goudarzi is still having a problem: Hi all, I have tried a lot to run a simulation with MPI with grains as a mixture of Clump and Spherical particles. Unwantedly (the procedure for grain generation is complex, and I have to run it in a separate script), The grains are imported to the scene. Therefore, they are not generated in the simulation. My analysis consists of the penetration of an excavator bucket into a medium dense bed (n=0.44) and then rotation about a zero point that excavates the bed. I, therefore, used the CombinedKinematicEngine to handle both motions of the excavator. I have used many MPI customizations for this simulation with little success, which casts the doubt if MPI (with its automatic splitting) is appropriate for grains other than perfect spheres. My simulation crashes after a few hundred of iterations, and this is what I receive: malloc(): invalid size (unsorted) [ubuntu-office:998639] *** Process received signal *** [ubuntu-office:998639] Signal: Aborted (6) [ubuntu-office:998639] Signal code: (-6) [ubuntu-office:998639] [ 0] /lib/x86_64-linux-gnu/libc.so.6(+0x46210)[0x7fcb6eebf210] [ubuntu-office:998639] [ 1] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0xcb)[0x7fcb6eebf18b] [ubuntu-office:998639] [ 2] /lib/x86_64-linux-gnu/libc.so.6(abort+0x12b)[0x7fcb6ee9e859] [ubuntu-office:998639] [ 3] /lib/x86_64-linux-gnu/libc.so.6(+0x903ee)[0x7fcb6ef093ee] [ubuntu-office:998639] [ 4] /lib/x86_64-linux-gnu/libc.so.6(+0x9847c)[0x7fcb6ef1147c] [ubuntu-office:998639] [ 5] /lib/x86_64-linux-gnu/libc.so.6(+0x9b234)[0x7fcb6ef14234] [ubuntu-office:998639] [ 6] /lib/x86_64-linux-gnu/libc.so.6(__libc_malloc+0x1b9)[0x7fcb6ef16419] [ubuntu-office:998639] [ 7] /usr/bin/python3.8(PyBytes_FromStringAndSize+0x231)[0x5f7b11] [ubuntu-office:998639] [ 8] /usr/lib/python3/dist-packages/mpi4py/MPI.cpython-38-x86_64-linux-gnu.so(+0x724d5)[0x7fcb53e6f4d5] [ubuntu-office:998639] [ 9] /usr/lib/python3/dist-packages/mpi4py/MPI.cpython-38-x86_64-linux-gnu.so(+0x91642)[0x7fcb53e8e642] [ubuntu-office:998639] [10] /usr/bin/python3.8(PyCFunction_Call+0x59)[0x5f2cc9] [ubuntu-office:998639] [11] /usr/bin/python3.8(_PyObject_MakeTpCall+0x23f)[0x5f30ff] [ubuntu-office:998639] [12] /usr/bin/python3.8(_PyEval_EvalFrameDefault+0x6246)[0x5705f6] [ubuntu-office:998639] [13] /usr/bin/python3.8(_PyFunction_Vectorcall+0x1b6)[0x5f5956] [ubuntu-office:998639] [14] /usr/bin/python3.8(_PyEval_EvalFrameDefault+0x72f)[0x56aadf] [ubuntu-office:998639] [15] /usr/bin/python3.8(_PyFunction_Vectorcall+0x1b6)[0x5f5956] [ubuntu-office:998639] [16] /usr/bin/python3.8(_PyEval_EvalFrameDefault+0x72f)[0x56aadf] [ubuntu-office:998639] [17] /usr/bin/python3.8(_PyFunction_Vectorcall+0x1b6)[0x5f5956] [ubuntu-office:998639] [18] /usr/bin/python3.8(_PyEval_EvalFrameDefault+0x57d7)[0x56fb87] [ubuntu-office:998639] [19] /usr/bin/python3.8(_PyEval_EvalCodeWithName+0x26a)[0x568d9a] [ubuntu-office:998639] [20] /usr/bin/python3.8(PyEval_EvalCode+0x27)[0x68cdc7] [ubuntu-office:998639] [21] /usr/bin/python3.8[0x67e161] [ubuntu-office:998639] [22] /usr/bin/python3.8[0x67e1df] [ubuntu-office:998639] [23] /usr/bin/python3.8(PyRun_StringFlags+0x7f)[0x67e32f] [ubuntu-office:998639] [24] /usr/bin/python3.8(PyRun_SimpleStringFlags+0x3f)[0x67e38f] [ubuntu-office:998639] [25] /home/ngoudarzi/Desktop/My Own YADE/install/lib/x86_64-linux-gnu/yade-2020.01a/libyade.so(_Z11pyRunStringRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x1c)[0x7fcb6d40622c] [ubuntu-office:998639] [26] /home/ngoudarzi/Desktop/My Own YADE/install/lib/x86_64-linux-gnu/yade-2020.01a/libyade.so(_ZN4yade5Scene18moveToNextTimeStepEv+0x132)[0x7fcb6c397922] [ubuntu-office:998639] [27] /home/ngoudarzi/Desktop/My Own YADE/install/lib/x86_64-linux-gnu/yade-2020.01a/libyade.so(_ZN4yade14SimulationFlow12singleActionEv+0x78)[0x7fcb6c3b5d58] [ubuntu-office:998639] [28] /home/ngoudarzi/Desktop/My Own YADE/install/lib/x86_64-linux-gnu/yade-2020.01a/libyade.so(_ZN4yade12ThreadWorker16callSingleActionEv+0x14)[0x7fcb6c3d60f4] [ubuntu-office:998639] [29] /home/ngoudarzi/Desktop/My Own YADE/install/lib/x86_64-linux-gnu/yade-2020.01a/libyade.so(_ZN4yade12ThreadRunner4callEv+0x3f)[0x7fcb6c3d3fdf] [ubuntu-office:998639] *** End of error message *** -- Child job 2 terminated normally, but 1 process returned a non-zero exit code. Per user-direction, the job has been aborted. -- I think I am missing some important adjustments for the simulation but need to know first that MPI works with imported clumps or it has only been designed for spherical particles. This is my last script for the simulation. My target, for now, is understanding if there is a significant issue in the structure of the input and therefore, all inputs (Stl, clu
[Yade-users] [Question #698388]: MPI with Clumps Particles
New question #698388 on Yade: https://answers.launchpad.net/yade/+question/698388 Hi, I'm trying to use automatic parallelization for a large bed consisting of both spherical as well as clump particles. I had been able to use MPI for purely spherical particles (stabilization a bed of 50 grains) but it seems that MPI has some issues with clumps as I receive errors in both interactive and passive modes preventing splitting and parallel running. I am wondering if anyone has used MPI for clump particles successfully or if there exist some specific considerations to do so including manual splitting or MPI customization. Also, I highly appreciate it if someone can lead me to some examples of YADE MPI with clumps. Thanks 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 #691785]: Triaxial test using polyhedra
Question #691785 on Yade changed: https://answers.launchpad.net/yade/+question/691785 Nima Goudarzi gave more information on the question: Thank you both Jerome and Vasileios, Vasileios: "If we teak aabbExtrema() to extract the extrema from the Aabbs of the particles rather than the radius, it has the capacity to work for any particle shape" How? I have no idea regarding this. Is there any example available? The porosity calculation is my least concern. I do it outside YADE using 3d cad modeling and weight/volume relationships. my approach has been successful for clumps. The same applies for polyhedra. Regarding Vasileios's comment and Jerome's reply, it turns out that built-in YADE triaxialStressController do not still suffice my purpose Jerome: "As for the boundary bodies, I did not get whether you intend to use Box-shaped or Wall-shaped ones (both are possible with TriaxialStressController, just assign yourself TriaxialStressController.thickness = 0 if you want Wall s). But note that Wall-Polyhedra interaction has recently been updated / corrected [**]" I'm running triaxial and need something functioning as triaxial chamber boundaries for polyhedra. Whatever works in the context of triaxialStressController is welcome. 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 #691785]: Triaxial test using polyhedra
Question #691785 on Yade changed: https://answers.launchpad.net/yade/+question/691785 Status: Answered => Open Nima Goudarzi is still having a problem: Thanks so much Jerome, Porosity is for sure of interest but as you mentioned, I have the tools for its calculations. My issues are at larger extent: 1- aabbwalls does not work with polyhedra therefore I am forced to use walls instead 2- wall does not work properly as well especially in the confining phase. I have never been able to reach to the predefined triaxial goals. Most of the time the collision between walls and polyhedra does not occur and when I reduce the time step, the analysis becomes hatefully slow. 3- I use PSD for polyhedra in my simulations by first generating a sphere pack following a certain PSD and then converting them to polyhedra. Also I run triaxial tests in two phases with two different scripts: in the first one I generate the sample with my desired porosity using multi-layer compaction and export the particles (sphere, clumps, or polyhedra). I, then, import the particles in a separate script, and apply the confining presses and deviatoric loading. In close, I have issues in box-polyhedra interaction . BTW do you by chance have a sample of triaxial tests with polyhedra? -- 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 #691785]: Triaxial test using polyhedra
New question #691785 on Yade: https://answers.launchpad.net/yade/+question/691785 Hi YADE community, I’m wondering if modeling triaxial test using polyhedra is possible using YADE using built-in TriaxialStressController. Sharing any experiences is highly appreciated. Cheers, -- 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 #687185]: Cylindrical Triaxial Test
Question #687185 on Yade changed: https://answers.launchpad.net/yade/+question/687185 Status: Answered => Open Nima Goudarzi is still having a problem: Hi Jan, Thanks a lot for the response.You are right. My only concern is the need for a servo-control mechanism like the one implemented in the original triaxial script (developed by Brono). Do I need to develop one? Does your script benefit fro such a mechanism. 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 #686704]: PicklingError
Question #686704 on Yade changed: https://answers.launchpad.net/yade/+question/686704 Status: Answered => Open Nima Goudarzi is still having a problem: Thanks again, The commands are exactly those mentioned in biaxialSmooth.py (please see the top of the script for the commands). My surprise is that I can run the same script on my laptop by exactly the same command I use on the desktop (it does not work here as I mentioned). I have always run Yade scripts by dragging the Yade executable into my terminal and then dragging the python script after that. This has always worked. The problem with the Yade-batch link is that I do not have any table of parameters and this is why I am surprised why an ordinary way for running a script does not work. The answer to your question is YES. I can run other scripts. Also, as I don't clone YADE (usually), I use the download page for downloading the last release of YADE. If you go to the download page in the link you sent me, you can see that the latest release is Yade 2019.01a. Do I have to clone for a newer version? Thanks again -- 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 #687185]: Cylindrical Triaxial Test
New question #687185 on Yade: https://answers.launchpad.net/yade/+question/687185 Hi, I am wondering to know if the cylindrical triaxial test yet to be developed or someone has already done it using YADE? 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 #686704]: PicklingError
Question #686704 on Yade changed: https://answers.launchpad.net/yade/+question/686704 Nima Goudarzi gave more information on the question: Thanks so much Jerome, I was able to run it on my laptop without the need for enforcing Yade using python 3. It is all about paths. Where and how you creat yadeimport.py, where you export your python path,... I tried to repeat the steps on a desktop but encountered a new issue: Here it is: Welcome to Yade 2019.01a TCP python prompt on localhost:9000, auth cookie `ssdkae XMLRPC info provider on http://localhost:21000 Running script ./biaxialSmooth.py usage: biaxialSmooth.py [options] [ TABLE [SIMULATION.py] | SIMULATION.py[/nCores] [...] ] biaxialSmooth.py runs yade simulation multiple times with different parameters. See https://yade-dem.org/sphinx/user.html#batch-queuing-and- execution-yade-batch for details. Batch can be specified either with parameter table TABLE (must not end in .py), which is either followed by exactly one SIMULATION.py (must end in .py), or contains !SCRIPT column specifying the simulation to be run. The second option is to specify multiple scripts, which can optionally have /nCores suffix to specify number of cores for that particular simulation (corresponds to !THREADS column in the parameter table), e.g. sim.py/3. optional arguments: -h, --help show this help message and exit -j NUM, --jobs NUM Maximum number of simultaneous threads to run (default: number of cores, further limited by OMP_NUM_THREADS if set by the environment: 1) -v, --version Print version and exit. --job-threads NUM Default number of threads for one job; can be overridden by per-job with !THREADS (or !OMP_NUM_THREADS) column. Defaults to 1. --force-threads Force jobs to not use more cores than the maximum (see \-j), even if !THREADS colums specifies more. --log FORMAT Format of job log files: must contain a $, % or @, which will be replaced by script name, line number or by description column respectively (default: $.@.log) --global-log FILE Filename where to redirect output of yade-batch itself (as opposed to \-\-log); if not specified (default), stdout/stderr are used -l LIST, --lines LIST Lines of TABLE to use, in the format 2,3-5,8,11-13 (default: all available lines in TABLE) --nice NICE Nice value of spawned jobs (default: 10) --cpu-affinity Bind each job to specific CPU cores; cores are assigned in a quasi-random order, depending on availability at the moment the jobs is started. Each job can override this setting by setting AFFINE column. --executable FILE Name of the program to run (default: /home/ngoudarz/De sktop/myYade/install/bin/yade-2019.01a). Jobs can override with !EXEC column. --gnuplot FILE Gnuplot file where gnuplot from all jobs should be put together --dry-run Do not actually run (useful for getting gnuplot only, for instance) --http-wait Do not quit if still serving overview over http repeatedly --plot-update TIME Interval (in seconds) at which job plots will be updated even if not requested via HTTP. Non-positive values will make the plots not being updated and saved unless requested via HTTP (see \-\-plot-timeout for controlling maximum age of those). Plots are saved at exit under the same name as the log file, with the .log extension removed. (default: 120 seconds) --plot-timeout TIME Maximum age (in seconds) of plots served over HTTP; they will be updated if they are older. (default: 30 seconds) --refresh TIME Refresh rate of automatically reloaded web pages (summary, logs, ...). --timing COUNT Repeat each job COUNT times, and output a simple table with average/variance/minimum/maximum job duration; used for measuring how various parameters affect execution time. Jobs can override the global value with the !COUNT column. --timing-output FILE With \-\-timing, save measured durations to FILE, instead of writing to standard output. --randomize Randomize job order (within constraints given by assigned cores). --disable-pynotify Disable screen notifications ngoudarz@ngoudarz:~/Desktop/myYade/trunk-2019.01a/examples/FEMxDEM$ As you can see, it is not an error showing I am on the right track. It just jump out from running. This does not happen on my laptop. Everything is similar I use Ubuntu 18.04 on both systems and exactly follow the same procedure for running this coupled simulation. Do you think it is something related to MPI? has anyone encountered a similar issue? My other question is about the last version of the Yade source code. If 2019.01a is too old where I can find the latest version? Thanks so much for your patience, -- 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 #686704]: PicklingError
Question #686704 on Yade changed: https://answers.launchpad.net/yade/+question/686704 Status: Answered => Open Nima Goudarzi is still having a problem: On 12/9/19 5:12 AM, Bruno Chareyre wrote: > Your question #686704 on Yade changed: > https://answers.launchpad.net/yade/+question/686704 > > Status: Open => Answered > > Bruno Chareyre proposed the following answer: > Hi, > If I understand correctly you are linking one version of escript, then you > load another one at runtime. Not a good idea, stick to one. > Also, it appears that you build for python2.7, which is not really supported > any more. Better try with python3. > Regards > Bruno > Hi Bruno, Thanks a lot. 1- If I understand correctly you are linking one version of escript, then you load another one at runtime Indeed, this is not the case. Both are from non-source. Installed ny sudo apt-get install python-escript 2- Also, it appears that you build for python2.7, which is not really supported any more. Better try with python3. Do you mean the escript? or YADE? when I enter python shell from the terminal my Python ver is 2.7. You are right but how I can enforce YADE compilation to use Python 3 (are higher versions like 3.7 also acceptable?) Do I need to install YADE from the scratch if you mean python 3 should be used for YADE? Much obliged -- 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 #686704]: PicklingError
Question #686704 on Yade changed: https://answers.launchpad.net/yade/+question/686704 Status: Answered => Open Nima Goudarzi is still having a problem: Hi Bruno, Thanks for getting back to me and sorry for keeping it so brief. I thought that a similar issue has popped up previously for someone else since this kind of coupling is not easy to implement. My YADE version is yade-2019.01a and I am working on Ubuntu 18.04. Here is a detailed explanation of what I did. I followed the instruction in the biaxialSmooth.py by 1- sudo apt install python-escript (Although I had installed escript from the source--see 3) 2- cd examples/FEMxDEM (So I am in the folder for FEMxDEM examples) 3- export PYTHONPATH="/usr/lib/python- escript:/home/ngoudarz/Desktop/myYade/install/lib/x86_64-linux- gnu/yade-2019.01a/py/yade/FEMxDEM" Note: /usr/lib/python-escrip is the address of my python-escript Installed by sudo apt install python-escript (not from source). I first addressed the location of the folder containing the executable from the one I had installed from the source code but I received an error: ImportError: No module named escript. I resolved this by changing the address as explained above. 4- export LD_LIBRARY_PATH='/usr/lib/python-escript/lib' Note: This is the address of the lib folder of my python-escript installed by sudo apt install python-escript (not from source). 5- ln -s '/home/ngoudarz/Desktop/myYade/install/lib/x86_64-linux- gnu/yade-2019.01a/py/yade/FEMxDEM/yadeimport.py'. The path after the ln -s is the location where I put my yade.import.py file and is the place where the simDEM.py file is also located. 6- When I run '/home/ngoudarz/Desktop/myYade/install/bin/yade-2019.01a' ./biaxialSmooth.py, I first got an error: ImportError: cannot import name QtWebkit (even before the error explained in 3 above). I resolved this by sudo apt-get install python-pyqt5.qtwebkit. I then got the error mentioned in 3 which I resolved by changing the address and then another error. ImportError: No module named yadeimport. I traced the source of the error in the simDEM.py (line 15). To resolve this I first run sudo apt-get install python-yade and then changed line 15 in the simDEM.py from "from yadeimport import *" to "rom yade import *" as Jan Stránský had proposed in https://answers.launchpad.net/yade/+question/670527. This resolved this issue and finally, I was able to start running the script by inputting '/home/ngoudarz/Desktop/myYade/install/bin/yade-2019.01a' ./biaxialSmooth.py Note: I have installed Yade from the source and /home/ngoudarz/Desktop/myYade/install/bin/yade-2019.01a is the path to its executable. Here is my execution: ngoudarz@Nima-VPCZ122GX:~/Desktop/myYade/trunk-2019.01a/examples/FEMxDEM$ sudo apt install python-escript ngoudarz@Nima-VPCZ122GX:~$ cd '/home/ngoudarz/Desktop/myYade/trunk-2019.01a/examples/FEMxDEM' ngoudarz@Nima-VPCZ122GX:~/Desktop/myYade/trunk-2019.01a/examples/FEMxDEM$ export PYTHONPATH="/usr/lib/python-escript:/home/ngoudarz/Desktop/myYade/install/lib/x86_64-linux-gnu/yade-2019.01a/py/yade/FEMxDEM" ngoudarz@Nima-VPCZ122GX:~/Desktop/myYade/trunk-2019.01a/examples/FEMxDEM$ export LD_LIBRARY_PATH='/usr/lib/python-escript/lib' ngoudarz@Nima-VPCZ122GX:~/Desktop/myYade/trunk-2019.01a/examples/FEMxDEM$ ln -s '/home/ngoudarz/Desktop/myYade/install/lib/x86_64-linux-gnu/yade-2019.01a/py/yade/FEMxDEM/yadeimport.py' ngoudarz@Nima-VPCZ122GX:~/Desktop/myYade/trunk-2019.01a/examples/FEMxDEM$ ln -s '/home/ngoudarz/Desktop/myYade/install/lib/x86_64-linux-gnu/yade-2019.01a/py/yade/FEMxDEM/yadeimport.py' Here is the output: Welcome to Yade 2019.01a TCP python prompt on localhost:9000, auth cookie `asused' XMLRPC info provider on http://localhost:21000 Running script ./retainingSmooth.py === For better performance compile python-escript with direct solver method === Press Enter to continue... When I hit enter, this is what I get: Traceback (most recent call last): File "/home/ngoudarz/Desktop/myYade/install/bin/yade-2019.01a", line 241, in runScript execfile(script,globals()) File "./retainingSmooth.py", line 45, in prob = MultiScale(domain=mydomain,ng=numg,np=nump,random=False,rtol=1e-2,usePert=False,pert=-2.e-5,verbose=True) File "/home/ngoudarz/Desktop/myYade/install/lib/x86_64-linux-gnu/yade-2019.01a/py/yade/FEMxDEM/msFEM2D.py", line 85, in __init__ self.__scenes=self.__pool.map(initLoad,range(ng)) File "/usr/lib/python2.7/multiprocessing/pool.py", line 253, in map return self.map_async(func, iterable, chunksize).get() File "/usr/lib/python2.7/multiprocessing/pool.py", line 572, in get raise self._value PicklingError: Can't pickle : attribute lookup __builtin__.function failed [[ ^L clears screen, ^U
[Yade-users] [Question #686704]: PicklingError
New question #686704 on Yade: https://answers.launchpad.net/yade/+question/686704 Hi Guys, I am trying to run biaxialSmooth.py from FEM-DEM examples. I worked around many issues from this morning and it seems that I resolved most of them. The last error I get is this: PicklingError: Can't pickle : attribute lookup __builtin__.function failed The run builds the result, vtk, and gauss folders in my directory but they remain empty. Looking forward to a piece of advice! Thanks Nima -- 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 #668838]: Converting triaxial Scripts to biaxial compression
Question #668838 on Yade changed: https://answers.launchpad.net/yade/+question/668838 Status: Answered => Open Nima Goudarzi is still having a problem: Hi Bruno, Actually yes. I think this is a plain strain condition. I've used your triaxial scripts a lot (even with my own implemented contact model) but now need to adjust the one which uses internal isotropic compaction to a biaxial case (I don't mean that I need the internal compaction in 2D case). I have a paper with biaxial dem simulation and need to compare the results of my own contact model with that of the paper to make sure that my model works great in 2d conditions also. Success in 2d simulation here is also very critical for me in some other large scale simulations in which I need to deposit millions of particles (in 3d) but now that plane strain condition exists again. In close, I need the adjusted script (conversion of triaxial to biaxial) to examine my contact model. Any helps is highly appreciated. Cheers, Nima -- 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 #668838]: Converting triaxial Scripts to biaxial compression
New question #668838 on Yade: https://answers.launchpad.net/yade/+question/668838 Hi, Thanks in advance. I'm trying to model biaxial compression in YADE. I thought it might be possible to adjust existing triaxial scripts for this purpose. 1- Is this possible? 2- If yes, which sections of the script must change? I know how to model spheres in one plane (or blocking degrees of freedom in the third direction) Any comments is highly appreciated 3- If no, is there another solution for this or an example for more information? Cheers, Nima -- 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 #668211]: Installing Yade from source code on AWS
Question #668211 on Yade changed: https://answers.launchpad.net/yade/+question/668211 Nima Goudarzi gave more information on the question: Hi JIPEIQI, Thanks for the reply. I need your help for installing from source. Do you by chance have the steps for installation?? I tried to to install the packages but as I explained for Bruno, it was not successful. I also need to know which instance do you use. I currently use t2.micro (free one) but this is even slower than my own computer Thanks so much for your help -- 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 #668211]: Installing Yade from source code on AWS
Question #668211 on Yade changed: https://answers.launchpad.net/yade/+question/668211 Nima Goudarzi gave more information on the question: Hi Bruno, I installed yadedaily successfully and run a simulation (although the instance I use is a free one[t2.micro] and my own computer is much faster than it- I tried to deposit a large number of polyhedra in a box with an small dt). I was not lucky in installing form source code. At the first step I am not able to install packages required and as you know without this packages there won't be a chance for installing from source code. When I try to install packages using sudo apt-get install cmake git freeglut3-dev libloki-dev \ libboost-all-dev fakeroot dpkg-dev build-essential g++ \ python-dev ipython python-matplotlib libsqlite3-dev python-numpy python-tk gnuplot \ libgts-dev python-pygraphviz libvtk6-dev python-numpy libeigen3-dev \ python-xlib python-pyqt5 pyqt5-dev-tools python-pyqt5.qtwebkit gtk2-engines-pixbuf python-argparse python-pyqt5.qtsvg \ libqglviewer-dev python-imaging libjs-jquery python-sphinx python-git python-bibtex \ libxmu-dev libxi-dev libcgal-dev help2man libbz2-dev zlib1g-dev python-minieigen As what I do for my own computer. The error issued is: E: Unable to locate package xxx Is there any advise for installing required packages on Ubuntu server 16.04 LTS AMI in aws??? I plan to transfer required folders (I mean trunk,install and bin) to the remote computer (server) using FileZila and try to install from source code like we do on local computers after installing packages. Thanks so much Nima -- 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 #668211]: Installing Yade from source code on AWS
Question #668211 on Yade changed: https://answers.launchpad.net/yade/+question/668211 Status: Answered => Open Nima Goudarzi is still having a problem: Hi JIPEIQI Thanks for your advice. 1- Have you installed yade from source code or just installed yade-daily as explained in documentation? 2-sorry I didn't get this" may be esys-particle software is a option?" Regards, Nima -- 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 #668214]: Converting spheres to polyhedral
Question #668214 on Yade changed: https://answers.launchpad.net/yade/+question/668214 Status: Answered => Open Nima Goudarzi is still having a problem: Hi Jerome, I think there might be a magic. Take a look at this: Discrete element simulations of direct shear tests with particle angularity effect. I have the paper but don't know how to attach here They have converted spheres to polyhedral. If you know some ways similar to what is implemented in the article please let me know Thanks so much, NG -- 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 #668213]: How to make sure that the interaction between spheres and containers is frictionless
Question #668213 on Yade changed: https://answers.launchpad.net/yade/+question/668213 Status: Answered => Open Nima Goudarzi is still having a problem: Hi Jerome, Thanks so much. I checked the script you sent me. 1- I don't understand what is the meaning of giving same material parameters to both container and spheres. It should be logically wrong if you assign the same young and same Poisson to both when we know that the stiffness of steel is much higher than that of the soil. Also in my contact model Poisson is the ratio of the normal to the tangential contact stiffness (for my soil is 1.5 and I can't use the same value for steel-sphere contact) 2- I still am not able to use only one IP2 for both sphere-sphere and sphere-container since my Ip2 for sphere-sphere has some model specific parameters (I'll attach a part of my script for clarification) which are not applicable to sphere-container interaction. 3- I still need an absolute frictionless contact between spheres and containers. As you know in direct shear we really don't measure shear (frictional force between particles and some part of containers). In my case after reaching a target normal stress I move the lower box in horizontal direction (-X direction) and measure the normal force in the same direction on some parts of the upper box. This is the normal force on that plate (-X direction) induced by shearing the soil. 4- Yes, the shear box gets open at one point and this opening continues. If it is aimed to measure the post peak response it is necessary to continue shearing more and more up to some well published shear strain (let’s say 13%). As I move the lower box there will be two ever growing (I mean the area) open surfaces on the right and on the left. On the left, the bottom of some particles in the upper box are exposed to gravity (I have considered zero gravity but they still fall) and on the right the top of some particles in the lower box are exposed to free surface. In experimental direct shear this doesn't happen up to a certain horizontal displacement since shear box in the lab has thickness which avoids both issues. I have considered some plates to resemble the thickness of upper and lower shear boxes but after the shear box gets open the sphere come to contact with these plates and here is exactly where I need absolute frictionless contact otherwise the shear (friction) between particles and plates. Induce additional shear force which is not realistic since in the lab the contact between the thickness of shear box and spheres is completely frictionless. More importantly is the opening of lower shear box on the left. Since the particles have experienced some normal stress during consolidation they store some overlaps and when they find the opportunity to release this (exactly when the movement of lower box produces some opening) they start flying out which absolutely is not a case in the lab since soil in the lab doesn't come out from the lower box (after opening and after passing the thickness of upper shear box). I have the same issue when I try to compact soil layers in a container using UCM. I think if I post a part of my script it might be more helpful. You won't be able to run it since you don't have the c++ codes for my contact model nor the packing I use for spheres but it gives some insights about what I am trying to do # -*- coding: utf-8 -*- O=Omega() from yade import ymport, utils, plot,export,qt import time ## parameters definition Packing='/home/ngoudarz/Desktop/directShearSpheres7500Reload' X=50e-3 Y=15e-3 Z=50e-3 S0=X*Y dampingCoeff=0.5 dtCoeff=0.5 normalStress=75000 normalVel=0.1 # 0.001 for 100kPa // optimized for normalVEL=normalSTRESS/1e8? shearVel=1*normalVel # try different values to ensure quasi-static conditions intR=1.263 soilYoung = 1e8 steelYoung=210e9 soilPoisson=1.5 steelPoisson=.25 soilDensity = 2600 steelDensity = 0 depositionSoilFrictAngle = 0 experimentSoilFrictionAngle=0.5 steelFrictAngle = 0.0 soilBeta = 0.0 soilXic = 0.0 iterMax=40 sphereMat = O.materials.append(FrictMat(young=soilYoung,poisson=soilPoisson,frictionAngle=0.523599, density=soilDensity,label='sphereMat')) wallMat = O.materials.append(FrictMat(young=steelYoung,poisson=steelPoisson,frictionAngle=0, density=steelDensity,label='wallMat')) for m in O.materials: print m.id O.bodies.append(geom.facetBox((25e-3,7.5e-3,(5e-3)),(75e-3,7.5e-3,20e-3),wallMask=8,material=wallMat,wire=True,color=(0.2,0.5,1))) lowerBackPlane=O.bodies[-1] O.bodies.append(geom.facetBox((25e-3,7.5e-3,(5e-3)),(75e-3,7.5e-3,20e-3),wallMask=4,material=wallMat,wire=True,color=(0.2,0.5,1))) lowerFrontPlane=O.bodies[-1] O.bodies.append(geom.facetBox((25e-3,7.5e-3,(45.e-3)),(75e-3,7.5e-3,20e-3),wallMask=8,material=wallMat,wire=True,color=(0.2,0.5,1))) upperBackPlane=O.bodies[-1] O.bodies.append(geom.facetBox((25e-3,7.5e-3,(45.e-3)),(75e-3,7.5e-3,20
Re: [Yade-users] [Question #668211]: Installing Yade from source code on AWS
Question #668211 on Yade changed: https://answers.launchpad.net/yade/+question/668211 Status: Answered => Open Nima Goudarzi is still having a problem: Hi Bruno, What search engine? google, YADE Documentation or AWS itself? I know it is possible to install yade daily on AWS (EC2) but don't know if it is possible to install yade from source code on it or not. As you know AWS might not free for many hours of simulations (limited hours are free for the first year) and that is why I need to ensure that I'll be able to install from source code before activating my account there. What I have found so far is https://yade-dem.org/doc/amazonEC2.html which mainly explains about installing yadedaily. I need to know if anyone has installed YADE from source code (I mean new contact models,)on AWS (EC2). Thanks sincerely NG -- 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 #668214]: Converting spheres to polyhedral
New question #668214 on Yade: https://answers.launchpad.net/yade/+question/668214 Hi, Is there any experience with converting deposited spherical particles in a container to polyhedral particles (anything built in yade or some programming). I need to study different degrees of angularities and compare the results with a newly implemented model which accounts for rough surfaces (some degree of interlocking)? Thanks so much Nima -- 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 #668213]: How to make sure that the interaction between spheres and containers is frictionless
New question #668213 on Yade: https://answers.launchpad.net/yade/+question/668213 Hi, I’m trying to model a direct shear test using a newly implemented model into YADE. This is a while that I’m trying to obtain reasonable shear stress-shear strain curves with no success. Actually this simulation is a part of my model verification. I have several doubts and questions when simulating: 1- My contact model has been developed for sand and accounts for rolling and twisting resistances as well as for circular contact area and surface crushing parameter. I’ve coded this for sphere to sphere contact only and clearly this is not suitable for sphere-container (facet, box or even wall) interaction and I am trying two use 2 different materials (both are FrictMat but with different properties for soil and container). Do I need to use two Ip2’s and 2Laws in my simulation[I mean python script] (one for sphere-spher by which I can change my model parameters) and one for sphere-container? Or only one is sufficient? 2- I know that overlap is an essential assumption for YADE dem and we can’t avoid it. I have a weird issue regarding this. As the normal consolidation (before shearing) induces some overlaps, when the shearing phase starts, particles of the bottom box (I move bottom box in shear) tend to fly out when their surface becomes free. This leads to missing some particles in the bottom box which drastically influences the shear stress I measure. Also, even though I consider zero gravity in my engines, particles in the upper box which now don’t have any contacts with the particles in the bottom box, fall down and this also creates shear response issue. 3- As I essentially need the container to be frictionless in all over the simulation, how I can make sure that my sphere-container interactions is absolutely frictionless. Even by assigning frictAngle=0 for steel (which is the material of my container), I get unreasonable peak values for shear stress which is indication of existing friction between container and spheres.I have defined my model parameters in Ip2. So I need 2 Ip2’s. How I can make all sphere-container interaction, frictionless? 4- Has anyone recently modeled direct shear with YADE (I have an old script written by luc scholtes which has a servo Controller and a data collector but it seems that the script has some issue with the engine defined for shearing (this has been introduced globally and make some problems with the normal compaction-at least this doesn’t work for me when I change the contact model). Any helps is highly appreciated if there is any successful script which has been verified either by literature or experiments. 5- I can post a part of my script if it helps for your comments and advices. Thanks so much Nima -- 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 #668211]: Installing Yade from source code on AWS
New question #668211 on Yade: https://answers.launchpad.net/yade/+question/668211 Hi, I’m wondering if someone let’s me know if it is possible to install YADE from source code on AWS. I have some large scale simulations to check my developed model using a cluster. Any helps is highly appreciated . If anyone has the experience, I need the steps for doing this. Thanks Nima -- 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 #658905]: I need to simulate uniaxial compaction
Question #658905 on Yade changed: https://answers.launchpad.net/yade/+question/658905 Nima Goudarzi gave more information on the question: Sorry mohsen. Attached please find the code. Please ignore the one I sent you in the last email. Thanks Nima On Tuesday, October 17, 2017, 5:10:23 PM CDT, Nima Goudarzi <question658...@answers.launchpad.net> wrote: Your question #658905 on Yade changed: https://answers.launchpad.net/yade/+question/658905 Status: Answered => Open You are still having a problem: Hi Mohsen, Thanks sincerely for your hint. I tried to implement what you said for odeometric-like approach with no success. I'm bringing this part of my code. If possible please take a look to see if you can fix it. from yade.pack import *from yade import utilsfrom yade import exportfrom yade import plotn_s = 2000n_band = 26# For now I'm using Sobieski's PSD. I need to change it to my own PSD latertargetPorosity= 0.422## Particle Size Distribution ##psdSizes=[5.8598400e+00,5.8761600e+00,5.8924800e+00,5.9088000e+00,5.9251200e+00,5.9414400e+00,5.9577600e+00,5.9740800e+00,5.9904000e+00,6.0067200e+00,6.0230400e+00,6.0393600e+00,6.0556800e+00,6.072e+00,6.0883200e+00,6.1046400e+00,6.1209600e+00,6.1372800e+00,6.1536000e+00,6.1699200e+00,6.1862400e+00,6.2025600e+00,6.2188800e+00,6.2352000e+00,6.2515200e+00,6.2678400e+00]psdCumm=[0.0,8.4945735e-05,3.5804112e-04,1.1512195e-03,3.2324246e-03,8.1658647e-03,1.8731095e-02,3.9172232e-02,7.4902028e-02,1.3132521e-01,2.1182373e-01,3.1558203e-01,4.3640887e-01,5.6352779e-01,6.8435463e-01,7.8811293e-01,8.6861145e-01,9.2503463e-01,9.6076443e-01,9.8120556e-01,9.9177079e-01,9.9670423e-01,9.9878544e-01,9.9957862e-01,9.9985171e-01,1.0] i = 0while i < n_band: psdSizes[i]=psdSizes[i]/1000. #scaling from [mm] to [m] print "\r psdSizes:",i,psdSizes[i] i = i +1 #If the bed volume is defined, then the average diameter of particles (when the target porosity is reached) is the same like in the measurement### facetBox Compaction will be in Y-Directionl = 3.5e-3h = 7.1e-3vol = l*h*l# You maybe don't need this if you use compaction from the top of the sample (using plate) mn = Vector3(0,0,0)mx = Vector3(l,l,h/5) O.materials.append(FrictMat(young=5e6,poisson=0.5,frictionAngle=0,density=0,label='walls'))O.materials.append(FrictMat(young=5e6,poisson=0.5,frictionAngle=radians(30),density=2600,label='spheres'))O.bodies.append(geom.facetBox((l/2,l/2,h/2),(l/2,l/2,h/2),wallMask=31,material='walls'))# This will be an open-top boxsp = yade._packSpheres.SpherePack()sp.makeCloud(mn,mx,psdSizes=psdSizes,psdCumm=psdCumm,num=n_s,distributeMass=1)O.bodies.append([sphere(s[0],s[1],material='spheres') for s in sp])Porosity = voxelPorosity(200,mn,mx)print "\r Porosity: ",Porosity,O.engines=[ ForceResetter(), # sphere, facet, wall InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb(),Bo1_Wall_Aabb()]), InteractionLoop( # the loading plate is a wall, we need to handle sphere+sphere, sphere+facet, sphere+wall [Ig2_Sphere_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom(),Ig2_Wall_Sphere_ScGeom()], [Ip2_FrictMat_FrictMat_FrictPhys()], [Law2_ScGeom_FrictPhys_CundallStrack()] ), NewtonIntegrator(gravity=(0,0,-9.81),damping=0.5), # the label creates an automatic variable referring to this engine # we use it below to change its attributes from the functions called PyRunner(command='checkUnbalanced()',realPeriod=2,label='checker'),]O.dt=.5*PWaveTimeStep() def checkUnbalanced(): # at the very start, unbalanced force can be low as there is only few contacts, but it does not mean the packing is stable if O.iter<5000: return # the rest will be run only if unbalanced is < .1 (stabilized packing) if unbalancedForce()>.1: return # add plate at the position on the top of the packing # the maximum finds the z-coordinate of the top of the topmost particle O.bodies.append(wall(max([b.state.pos[2]+b.shape.radius for b in O.bodies if isinstance(b.shape,Sphere)]),axis=2,sense=-1)) global plate # without this line, the plate variable would only exist inside this function plate=O.bodies[-1] # the last particles is the plate # Wall objects are "fixed" by default, i.e. not subject to forces # prescribing a velocity will therefore make it move at constant velocity (downwards) plate.state.vel=(0,0,-.1) # start plotting the data now, it was not interesting before O.engines=O.engines+[PyRunner(command='addPlotData()',iterPeriod=200)] # next time, do not call this function anymore, but the next one (unloadPlate) instead checker.command='unloadPlate()'def unloadPlate(): # if the force on plate exceeds maximum load, start unloadi
Re: [Yade-users] [Question #652968]: Implementing Local Damping
Question #652968 on Yade changed: https://answers.launchpad.net/yade/+question/652968 Status: Answered => Open Nima Goudarzi is still having a problem: Dear Bruno, Thanks so much for all your helps. I finally implemented my model in YADE but got some new problems in modelling uniaxial compaction in the python script. I am trying to compact a soil sample layer by layer to reach a target void ratio for each layer and finally a target void ratio for the whole assembly. Worthy to say that, I'll have two distinct scripts. One for uniaxial compaction and one for triaxial test that is to say that I'll export final positions of spheres (after compaction) to my triaxial script. I am familiar with triaxStressController but prefer not to use it since I don't want to use the lubrication concept and expanding the particle size (or shrinking the walls). My final test is a trixal test but I prefer to use a very simple method for compacting using a plate from top of each layer. I mean, I want to use a facetBox as a mold and a simple plate. I have modeled the gravity deposition of the first layer and also put the plate on top of the layer and applied some constant velocity in z direction for moving the plate. Everything goes well but I have a problem with stopping the plate when the porosity of the layer reaches my target porosity. I got some hints from some YADE users regarding this to for checking the voxelPorosity against my target porosity to stop the plate. Here are my questions: 1- I don't know how I can check the updating porosity against my target porosity since the volume of my layer is changing due to the compaction and as far as I know, voxelPorosity needs a height vector (let's say mx) which in my case is not constant and is gradually deceasing. Is there a way to stop the plate with target porosity in my case or I am enforced to use triaxStressController? 2- My parameters are updating from compaction to triaxial (due to numerical reasons). One of the reasons I prefer to use two scripts is this. Actually, I don't know if there is an approach to update material parameters in one single script. Please give me some hints if there is a solution. Here is a draft of my script for compacting the first layer. It doesn't work from yade.pack import *from yade import utilsfrom yade import exportfrom yade import plotn_s = 2000n_band = 26# For now I'm using Sobieski's PSD. I need to change it to my own PSD latertargetPorosity= 0.422## Particle Size Distribution ##psdSizes=[5.8598400e+00,5.8761600e+00,5.8924800e+00,5.9088000e+00,5.9251200e+00,5.9414400e+00,5.9577600e+00,5.9740800e+00,5.9904000e+00,6.0067200e+00,6.0230400e+00,6.0393600e+00,6.0556800e+00,6.072e+00,6.0883200e+00,6.1046400e+00,6.1209600e+00,6.1372800e+00,6.1536000e+00,6.1699200e+00,6.1862400e+00,6.2025600e+00,6.2188800e+00,6.2352000e+00,6.2515200e+00,6.2678400e+00]psdCumm=[0.0,8.4945735e-05,3.5804112e-04,1.1512195e-03,3.2324246e-03,8.1658647e-03,1.8731095e-02,3.9172232e-02,7.4902028e-02,1.3132521e-01,2.1182373e-01,3.1558203e-01,4.3640887e-01,5.6352779e-01,6.8435463e-01,7.8811293e-01,8.6861145e-01,9.2503463e-01,9.6076443e-01,9.8120556e-01,9.9177079e-01,9.9670423e-01,9.9878544e-01,9.9957862e-01,9.9985171e-01,1.0] i = 0while i < n_band: psdSizes[i]=psdSizes[i]/1000. #scaling from [mm] to [m] print "\r psdSizes:",i,psdSizes[i] i = i +1 #If the bed volume is defined, then the average diameter of particles (when the target porosity is reached) is the same like in the measurement### facetBox Compaction will be in Y-Directionl = 3.5e-3h = 7.1e-3vol = l*h*l# You maybe don't need this if you use compaction from the top of the sample (using plate) mn = Vector3(0,0,0)mx = Vector3(l,l,h/5) O.materials.append(FrictMat(young=5e6,poisson=0.5,frictionAngle=0,density=0,label='walls'))O.materials.append(FrictMat(young=5e6,poisson=0.5,frictionAngle=radians(30),density=2600,label='spheres'))O.bodies.append(geom.facetBox((l/2,l/2,h/2),(l/2,l/2,h/2),wallMask=31,material='walls'))# This will be an open-top boxsp = yade._packSpheres.SpherePack()sp.makeCloud(mn,mx,psdSizes=psdSizes,psdCumm=psdCumm,num=n_s,distributeMass=1)O.bodies.append([sphere(s[0],s[1],material='spheres') for s in sp])Porosity = voxelPorosity(200,mn,mx)print "\r Porosity: ",Porosity,O.engines=[ ForceResetter(), # sphere, facet, wall InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb(),Bo1_Wall_Aabb()]), InteractionLoop( # the loading plate is a wall, we need to handle sphere+sphere, sphere+facet, sphere+wall [Ig2_Sphere_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom(),Ig2_Wall_Sphere_ScGeom()], [Ip2_FrictMat_FrictMat_FrictPhys()], [Law2_ScGeom_FrictPhys_CundallStrack()] ), New
Re: [Yade-users] [Question #658905]: I need to simulate uniaxial compaction
Question #658905 on Yade changed: https://answers.launchpad.net/yade/+question/658905 Status: Answered => Open Nima Goudarzi is still having a problem: Hi Mohsen, Thanks sincerely for your hint. I tried to implement what you said for odeometric-like approach with no success. I'm bringing this part of my code. If possible please take a look to see if you can fix it. from yade.pack import *from yade import utilsfrom yade import exportfrom yade import plotn_s = 2000n_band = 26# For now I'm using Sobieski's PSD. I need to change it to my own PSD latertargetPorosity= 0.422## Particle Size Distribution ##psdSizes=[5.8598400e+00,5.8761600e+00,5.8924800e+00,5.9088000e+00,5.9251200e+00,5.9414400e+00,5.9577600e+00,5.9740800e+00,5.9904000e+00,6.0067200e+00,6.0230400e+00,6.0393600e+00,6.0556800e+00,6.072e+00,6.0883200e+00,6.1046400e+00,6.1209600e+00,6.1372800e+00,6.1536000e+00,6.1699200e+00,6.1862400e+00,6.2025600e+00,6.2188800e+00,6.2352000e+00,6.2515200e+00,6.2678400e+00]psdCumm=[0.0,8.4945735e-05,3.5804112e-04,1.1512195e-03,3.2324246e-03,8.1658647e-03,1.8731095e-02,3.9172232e-02,7.4902028e-02,1.3132521e-01,2.1182373e-01,3.1558203e-01,4.3640887e-01,5.6352779e-01,6.8435463e-01,7.8811293e-01,8.6861145e-01,9.2503463e-01,9.6076443e-01,9.8120556e-01,9.9177079e-01,9.9670423e-01,9.9878544e-01,9.9957862e-01,9.9985171e-01,1.0] i = 0while i < n_band: psdSizes[i]=psdSizes[i]/1000. #scaling from [mm] to [m] print "\r psdSizes:",i,psdSizes[i] i = i +1 #If the bed volume is defined, then the average diameter of particles (when the target porosity is reached) is the same like in the measurement### facetBox Compaction will be in Y-Directionl = 3.5e-3h = 7.1e-3vol = l*h*l# You maybe don't need this if you use compaction from the top of the sample (using plate) mn = Vector3(0,0,0)mx = Vector3(l,l,h/5) O.materials.append(FrictMat(young=5e6,poisson=0.5,frictionAngle=0,density=0,label='walls'))O.materials.append(FrictMat(young=5e6,poisson=0.5,frictionAngle=radians(30),density=2600,label='spheres'))O.bodies.append(geom.facetBox((l/2,l/2,h/2),(l/2,l/2,h/2),wallMask=31,material='walls'))# This will be an open-top boxsp = yade._packSpheres.SpherePack()sp.makeCloud(mn,mx,psdSizes=psdSizes,psdCumm=psdCumm,num=n_s,distributeMass=1)O.bodies.append([sphere(s[0],s[1],material='spheres') for s in sp])Porosity = voxelPorosity(200,mn,mx)print "\r Porosity: ",Porosity,O.engines=[ ForceResetter(), # sphere, facet, wall InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb(),Bo1_Wall_Aabb()]), InteractionLoop( # the loading plate is a wall, we need to handle sphere+sphere, sphere+facet, sphere+wall [Ig2_Sphere_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom(),Ig2_Wall_Sphere_ScGeom()], [Ip2_FrictMat_FrictMat_FrictPhys()], [Law2_ScGeom_FrictPhys_CundallStrack()] ), NewtonIntegrator(gravity=(0,0,-9.81),damping=0.5), # the label creates an automatic variable referring to this engine # we use it below to change its attributes from the functions called PyRunner(command='checkUnbalanced()',realPeriod=2,label='checker'),]O.dt=.5*PWaveTimeStep() def checkUnbalanced(): # at the very start, unbalanced force can be low as there is only few contacts, but it does not mean the packing is stable if O.iter<5000: return # the rest will be run only if unbalanced is < .1 (stabilized packing) if unbalancedForce()>.1: return # add plate at the position on the top of the packing # the maximum finds the z-coordinate of the top of the topmost particle O.bodies.append(wall(max([b.state.pos[2]+b.shape.radius for b in O.bodies if isinstance(b.shape,Sphere)]),axis=2,sense=-1)) global plate # without this line, the plate variable would only exist inside this function plate=O.bodies[-1] # the last particles is the plate # Wall objects are "fixed" by default, i.e. not subject to forces # prescribing a velocity will therefore make it move at constant velocity (downwards) plate.state.vel=(0,0,-.1) # start plotting the data now, it was not interesting before O.engines=O.engines+[PyRunner(command='addPlotData()',iterPeriod=200)] # next time, do not call this function anymore, but the next one (unloadPlate) instead checker.command='unloadPlate()'def unloadPlate(): # if the force on plate exceeds maximum load, start unloading maxz=max([b.state.pos[2]+b.shape.radius for b in O.bodies if isinstance(b.shape,Sphere)]) mx=maxz# Iknow this doesn't work Por_osity=voxelPorosity(200,mn,mx) if Por_osity <targetPorosity: plate.state.vel=(0,0,0) Thanks so much, Nima On Tuesday, October 10, 2017, 1:04:19 AM CDT, mohsen <question658...@answers.launchpad.net> wr
Re: [Yade-users] [Question #658905]: I need to simulate uniaxial compaction
Question #658905 on Yade changed: https://answers.launchpad.net/yade/+question/658905 Status: Answered => Open Nima Goudarzi is still having a problem: Thanks so much Mohsen, Do you know how I can stop the plate (if I follow the Odeometric approach ) when I reach to a specific porosity. I don’t use triaxialStressController in this case. I can compact the layer but I can’t stop the plate by target porosity criterion. If we resolve this, I need to know how to save and load the final position in my main triaxial script. Is it possible to compact layers by triaxial goal in one direction while all other walls are deactivated? Sincerely, Nima > On Oct 8, 2017, at 5:28 AM, mohsen <question658...@answers.launchpad.net> > wrote: > > Your question #658905 on Yade changed: > https://answers.launchpad.net/yade/+question/658905 > >Status: Open => Answered > > mohsen proposed the following answer: >>> Thanks again for your hint. Do you mean I need to have two distinct > scripts if I want to follow the instructions like in odeometer test? > > Nima If you follow this, you need to scripts. the first one is for > sample generation and compaction; and the second one for shearing. i do > not have any script regarding this approach. > >>> I don't need an exact script for what I am doing, even if you have > an approximate solution (script) regarding deactivating walls that would > be enough for me. > > You can easily deactivates walls: > > wall_front_activated=False > > there are 6 walls which in your case all of them should be deactivate. > you may define a plate for compaction. After compaction of each layer > you may move or delete the plate and then you can generate again the > next layer and compact and so on > > >> Another critical question is about how recognizing the surface of previous >> layers. I mean, I am compacting layers based on the geometry before >> compaction. How we can enforce the code to understand the new position of >> layers (top surface of layers will be lower after compaction but I am >> generating the next layer exactly from the original height of top surface of >> previous layer (before compaction)). Is there any solution? > > You easily can distinguish the new position of the recent layer that has > been just compacted: > > MaxZ=max([b.state.pos[2]+b.shape.radius for b in O.bodies if > isinstance(b.shape,Sphere)]) > MaxZ is the coordination of the grain with maximum height (Note that Z is > defined as the axis which grain are compacted in). > > Regards > Mohsen > > -- > If this answers your question, please go to the following page to let us > know that it is solved: > https://answers.launchpad.net/yade/+question/658905/+confirm?answer_id=4 > > If you still need help, you can reply to this email or go to the > following page to enter your feedback: > https://answers.launchpad.net/yade/+question/658905 > > You received this question notification because you asked the 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 #658905]: I need to simulate uniaxial compaction
Question #658905 on Yade changed: https://answers.launchpad.net/yade/+question/658905 Status: Answered => Open Nima Goudarzi is still having a problem: Hi Mohsen, Thanks again for your hint. Do you mean I need to have two distinct scripts if I want to follow the instructions like in odeometer test? I don't need an exact script for what I am doing, even if you have an approximate solution (script) regarding deactivating walls that would be enough for me. Another critical question is about how recognizing the surface of previous layers. I mean, I am compacting layers based on the geometry before compaction. How we can enforce the code to understand the new position of layers (top surface of layers will be lower after compaction but I am generating the next layer exactly from the original height of top surface of previous layer (before compaction)). Is there any solution? Sincerely, NimaOn Thursday, October 5, 2017, 8:17:34 PM PDT, mohsen <question658...@answers.launchpad.net> wrote: Your question #658905 on Yade changed: https://answers.launchpad.net/yade/+question/658905 Status: Open => Answered mohsen proposed the following answer: i have not done exactly the same thing, but you can generate your sample in a box (look at Oedometer example in tutorial) layer by layer and then save and load the grains (or grain positions and diameters) to do a triaxial shearing; so basically triaxial engine is not the only way! Note that by deactivating the triaxial walls, they would not have any movement: https://yade-dem.org/doc/yade.wrapper.html?highlight=triaxialstresscontroller#yade.wrapper.TriaxialStressController.wall_back_activated Regards Mohsen -- If this answers your question, please go to the following page to let us know that it is solved: https://answers.launchpad.net/yade/+question/658905/+confirm?answer_id=2 If you still need help, you can reply to this email or go to the following page to enter your feedback: https://answers.launchpad.net/yade/+question/658905 You received this question notification because you asked the 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 #658905]: I need to simulate uniaxial compaction
Question #658905 on Yade changed: https://answers.launchpad.net/yade/+question/658905 Status: Answered => Open Nima Goudarzi is still having a problem: Hi Mohsen, Thanks so much. Have you done this before? if yes, would you please share this part of the code with me if possible? I basically don't know why we need to use triaxialStressController to perform the compaction. We are not in the experiment phase yet. This is a kind of pre-experiment like we actually do in the lab, compacting different layers and measuring void ratio after each compaction. I know that I need to write a loop to to reach to the target void ratio of each compaction but have some difficulties with understanding triaxialStressController for this case. Do you think that I need to set:triax.goal1=triax.goal2=triax.goal3=0 first and then apply the vertical pressure on top of a rigid plate to compact the layer. If required I can send you my script to take a look and modify. Thanks sincerely for your kind attention. Nima On Thursday, October 5, 2017, 6:28:02 AM PDT, mohsen <question658...@answers.launchpad.net> wrote: Your question #658905 on Yade changed: https://answers.launchpad.net/yade/+question/658905 Status: Open => Answered mohsen proposed the following answer: In the name of God Hi Nima If you are familiar with triaxialStressController engine, then you easily can deactivate all walls and then try generating and compacting each layer of grains. compaction can be applied with a plate. Regards Mohsen -- If this answers your question, please go to the following page to let us know that it is solved: https://answers.launchpad.net/yade/+question/658905/+confirm?answer_id=0 If you still need help, you can reply to this email or go to the following page to enter your feedback: https://answers.launchpad.net/yade/+question/658905 You received this question notification because you asked the 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
[Yade-users] [Question #658905]: I need to simulate uniaxial compaction
New question #658905 on Yade: https://answers.launchpad.net/yade/+question/658905 Hello all, As a part of a trixal test with my own implemented model in YADE, I need to compact my sample in the vertical direction to reach to a target void ratio. Dimensions of the sample are 3.5*3.5mm*7.1mm and it will be confined in six frictionless walls. The method of compaction is UCM and the sample will be compacted in 5 layers. As I am going to produce 10 particles (based on a PSD), I may assume that each layer has 2000 spheres in it. Here is the sequence of compacting: 1- First layer is deposited and then compacted to a target void ratio of 0.73. 2- After depositing the second layer on top of the first layer, both layers will be compacted to reach a target void ratio of 0.71. 3- After depositing the third layer on top of the second layer, all three layers will be compacted to reach a target void ratio of 0.69. 4- After depositing the fourth layer on top of the third layer, all four layers will be compacted to reach a target void ratio of 0.67. 5- After depositing the fifth layer on top of the fourth layer, all five layers will be compacted to reach a target void ratio of 0.65. This 0.65 is the target void ratio for the whole assembly. After reaching to the assembly target ratio (0.65), I need to move the top wall to produce a pressure equal to 50 kPa on top of the sample. The rest of the simulation related to design alternations for effective model parameters, applying confining pressure and finally deviatoric stress. I am wondering if someone has the experience of modelling such phenomenon and share with me their scripts or guide me through the simulation. Any helps are highly appreciated. Thanks so much, Nima -- 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 #652968]: Implementing Local Damping
Question #652968 on Yade changed: https://answers.launchpad.net/yade/+question/652968 Nima Goudarzi gave more information on the question: Dear Bruno, Thanks so much again and sorry for rising up this again. I am still a little confused with applying local damping: a very quick question on your comment (13) Newton::damping is the value of Cundall's/PFC "non-viscous" damping > (the one with default 0.7 in PFC). Again, it has nothing to do with the > contact model (it is thus irrelevant to distinguish linear vs. non- > linear models). Newton::damping is set in the scripts. // /* DAMPING COEFFICIENTS */ FROM HM.cpp // // Inclusion of local damping if requested // viscous damping is defined for both linear and non- linear elastic case if (useDamping && LinDamp){ Real mbar = (!b1->isDynamic() && b2->isDynamic()) ? de2->mass : ((!b2->isDynamic() && b1->isDynamic()) ? de1->mass : (de1->mass*de2->mass / (de1->mass + de2- >mass))); // get equivalent mass if both bodies are dynamic, if not set it equal to the one of the dynamic body //Real mbar = de1->mass*de2->mass / (de1->mass + de2->mass); // equivalent mass Real Cn_crit = 2.*sqrt(mbar*phys->kn); // Critical damping coefficient (normal direction) Real Cs_crit = 2.*sqrt(mbar*phys->ks); // Critical damping coefficient (shear direction) // Note: to compare with the analytical solution you provide cn and cs directly (since here we used a different method to define c_crit) cn = Cn_crit*phys->betan; // Damping normal coefficient cs = Cs_crit*phys->betas; // Damping tangential coefficient if(phys->kn<0 || phys->ks<0){ cerr<<"Negative stiffness kn="<kn<<" ks="<ks<<" for ##"<getId()<<"+"<getId()<<", step "<iter<<endl; } } else if (useDamping){ // (see Tsuji, 1992) Real mbar = (!b1->isDynamic() && b2->isDynamic()) ? de2->mass : ((!b2->isDynamic() && b1->isDynamic()) ? de1->mass : (de1->mass*de2->mass / (de1->mass + de2- >mass))); // get equivalent mass if both bodies are dynamic, if not set it equal to the one of the dynamic body cn = phys->alpha*sqrt(mbar)*pow(uN,0.25); // normal viscous coefficient, see also [Antypov2011] eq. 10 cs = cn; // same value for shear viscous coefficient } Do you mean I should keep unchanged everything included in the above code and set the local damping in the script? or I need to set cn=cs=0 wherever I find them in the code? If possible, would you please apply the required changes (if needed) in the above code if possible? Sincerely yours, Nima On Thursday, July 27, 2017 4:57 PM, Nima Goudarzi <question652...@answers.launchpad.net> wrote: Your question #652968 on Yade changed: https://answers.launchpad.net/yade/+question/652968 Status: Answered => Open You are still having a problem: Dear Bruno, I highly appreciate your kind attention toward my request. Many of your answers are extremely helpful. I am currently working on writing the code but still have some issues in energy terms and displacements (I am trying to adapt what have been implemented for shear to rolling and twisting but have some difficulties). I will be back soon to ask some extra questions regarding my new issues. Sincerely yours, Nima > On Jul 26, 2017, at 7:53 AM, Bruno Chareyre > <question652...@answers.launchpad.net> wrote: > > Your question #652968 on Yade changed: > https://answers.launchpad.net/yade/+question/652968 > > Status: Open => Answered > > Bruno Chareyre proposed the following answer: >> my main concern is the possibility of passing some model parameters to > Iphys (I think there is no need to define a new class of material but > please correct me if I am wrong) > > It is possible and indeed simpler usually. [*] Adding the parameters to > a material class gives more flexibility when mixing particles of > different properties. > > (1) radius1 is an ali
Re: [Yade-users] [Question #652968]: Implementing Local Damping
Question #652968 on Yade changed: https://answers.launchpad.net/yade/+question/652968 Status: Answered => Open Nima Goudarzi is still having a problem: Dear Bruno, I highly appreciate your kind attention toward my request. Many of your answers are extremely helpful. I am currently working on writing the code but still have some issues in energy terms and displacements (I am trying to adapt what have been implemented for shear to rolling and twisting but have some difficulties). I will be back soon to ask some extra questions regarding my new issues. Sincerely yours, Nima > On Jul 26, 2017, at 7:53 AM, Bruno Chareyre > <question652...@answers.launchpad.net> wrote: > > Your question #652968 on Yade changed: > https://answers.launchpad.net/yade/+question/652968 > >Status: Open => Answered > > Bruno Chareyre proposed the following answer: >> my main concern is the possibility of passing some model parameters to > Iphys (I think there is no need to define a new class of material but > please correct me if I am wrong) > > It is possible and indeed simpler usually. [*] Adding the parameters to > a material class gives more flexibility when mixing particles of > different properties. > > (1) radius1 is an alias of refR1, you can use both names equivalently > (ScGeom.hpp:58) > > (2) I see no need to change current code since it does what you need as > a special case. > > (3) ξ can be where you have it now or in the material class, see [*] > > (4) same answer. In this case it is obvious that if you want to have > particles of different shapes (different β) you need to have it in the > material class, else all shapes are the same as defined by the Ip2. > > (5) if both versions compile they probably do the same thing > > (6) I don't see a problem > > (7) yes (is it different from the assignement of e.g. > contactPhysics->kno?) > > (8) If ξc is like a damage parameter with different evolutions at each > contact then it needs to be IPhys::ξc indeed. You don't "declare" it in IP2, > you may only assign it there. But even the assignement seems to be in > Iphys(.hpp) a.t.m.: > ((Real,XI c,2.1,, "Local crushing parameter ...")) > > (9) This question sounds like "which is the right constitutive model?". I > don't know. This will be your modeling assumption. :) > If you plan to keep viscous damping at 0 it should not be a direct problem > for you though. > > (10) I would say yes, but I'm not sure about the question. "Plasticity > condition" just means to keep forces/torques bounded by some max values. > > (11) I don't know. > > (12) No need to erase anything since those lines are conditional already > (l.303,313), your changes should correspond to an additional option. > > (13) Newton::damping is the value of Cundall's/PFC "non-viscous" damping > (the one with default 0.7 in PFC). Again, it has nothing to do with the > contact model (it is thus irrelevant to distinguish linear vs. non- > linear models). Newton::damping is set in the scripts. > > (14) depends on you > > (15) why not? :) > > Wow, I made it. ;) > Bruno > > -- > If this answers your question, please go to the following page to let us > know that it is solved: > https://answers.launchpad.net/yade/+question/652968/+confirm?answer_id=2 > > If you still need help, you can reply to this email or go to the > following page to enter your feedback: > https://answers.launchpad.net/yade/+question/652968 > > You received this question notification because you asked the 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 #652968]: Implementing Local Damping
Question #652968 on Yade changed: https://answers.launchpad.net/yade/+question/652968 Status: Answered => Open Nima Goudarzi is still having a problem: Dear Bruno, Good to hear back from you and thanks so much for the reply. Actually I need some helps to make sure what I am implementing is true, Please forgive me for the lengthy email. I am sure it does not take you much time to take a look at my questions and correct me. The model, I'm implementing is not that far from the original HM model implemented by Chiara Modenese. I am trying to enrich rolling and twisting responses in this model (I will only use Law2_ScGeom_MindlinPhys_Mindlin as the basis of my own Law2). I have some basic questions, regarding what I am trying to implement. Although it seems too lengthy, my main concern is the possibility of passing some model parameters to Iphys (I think there is no need to define a new class of material but please correct me if I am wrong). The answers of questions 7,8 and 13 are criticl. The model (theoretically- I say theoretically because when the run the model, by considering local damping they set cn =cs=0 and subsequently cr = ct= 0 [these 2 are not free parameters]) considers 8 responses (4 contact responses and 4 damping responses). It has seven free parameters (P1 to P7) P1 E is the macro-scale modulus of elasticity. From which Kn is calculated as (Eq.1) Kn=2*r*E, where (Eq.2)r =(2ri*rj)/(ri+ri) is the common radius.(1) : I have not found radius1 and radius2 as objects in any classes in YADE. Do I need to use lines 43 to 45 of HertzMindlin.cpp to implement (Eq.2):GenericSpheresContact* scg = YADE_CAST<GenericSpheresContact*>(interaction->geom.get()); Real Da = scg->refR1>0 ? scg->refR1 : scg->refR2; Real Db = scg->refR2; Or need to use radius1 and radius2 like ScGeom* geom = YADE_CAST<ScGeom6D*>(interaction->geom.get() ); Real Da = geom->radius1; Real Db = geom->radius2; In the original HM, the equivalent E is calculated from the young modulus of two interacting materials (Real E = Ea*Eb/((1.-std::pow(Va,2))*Eb+(1.-std::pow(Vb,2))*Ea) (Line 54 of HertzMindlin.cpp) (2): How my Macro-Scale E is implemented here? Do I still need to use Real Ea=mat1->young; and (Line 35-HertzMindlin.cpp) Real Eb = mat2->young; (Line 36-HertzMindlin.cpp) to construct a macro-scale E or there is another way to do so (For example defining a unique E for the whole material, if this is possible). Currently, I have implemented the normal stiffness as Kno=4*Ea*Da*Eb*Db/(Ea*Da+Eb*Db) (line 57 of original Hertz Mindlin.cpp will be this) which only will be equal to (1) if Ea=Eb In this model (3)Ks=Kn/ξ where P2 ξ is the ratio of the normal to the tangential contact stiffness. I have declared ξ in Ip2 as ((Real,Xi,1.0,, "Ratio of the normal to the tangential contact stiffness")) (3) Is this a correct place for declaring ξ or I need to define a new class (for example a new material class) to declare this constant? If I declare ξ in Ip2 Kso=Kno/Xi (line 58 of original Hertz Mindlin.cpp will be this) P3 β is a shape parameter used to consider the effects of particle shape on the overall mechanical behavior of granular materials. It, actually, links the contact radius Ṝ to common radius (Eq.2) as (Eq.3) Ṝ=βr I, again, have declared β in Ip2 as ((Real,beta,0.0,, "Dimensionless shape parameter linking the contact radius R bar to the r")) (4) Is this a correct place for declaring β?(Actually, I think, there is no need to write a new class of material). This Ṝ is so important to me. It will be used in many places throughout the code in the calculation of rotational and twisting stiffnesses and rolling and twisting damping coefficients (see 6 and 7 below): In the original HM, Kr and Kt are input parameters (I think they should be given by user) In the model, I am implementing, Kr and Kt are not free parameters (Eq.4) Kr=0.25KnṜ2 (Eq.5) Kt=0.5KsṜ2 If I declare both ξ and β in Ip2 Kr=0.25*Kno*std::pow((beta*r),2); (line 70 of original Hertz Mindlin.cpp will be this) (5) (a c++ question) Do I need to use std::pow or a simple pow does the job? Kt=0.5*(Kno/Xi)*std::pow((beta*r),2); (line 71 of original Hertz Mindlin.cpp will be this) (6) Are these equations true (Regarding that I have declared both ξ and β in Ip2? (7) Can I calculate Ṝ and pass it to my Iphys using contactPhysics pointer? I later will need to use this Ṝ for calculation of rolling and twisting damping coefficients. contactPhysics->R bar =r*beta Real r =2*((geom->radius1*geom->radius2)/(geom->radius1*geom->radius2) or Real r =2*((scg->refR1*scg->refR2)/(geom->
[Yade-users] [Question #652968]: Implementing Local Damping
New question #652968 on Yade: https://answers.launchpad.net/yade/+question/652968 Hello All, I am trying to implement a new code using c++. My model is mainly based on HM but due to the quasi-static nature of the simulations, I first prefer to avoid using viscous damping (cn=cs=0) and implement Cundall none viscous damping (local damping in PFC). I don't know how to do that. Is there any source code (for a contact law) which has implemented none -viscous damping. I need to know in which header class I need to introduce this and how I can use this parameter to update my forces. Sincerely yours, Nima Goudarzi -- 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 #647543]: Implementing a new contact model
Question #647543 on Yade changed: https://answers.launchpad.net/yade/+question/647543 Status: Answered => Open Nima Goudarzi is still having a problem: Hi Jan, Thanks so very much for the reply. I think I should proceed gradually. As the first step, I am trying to write a new Material (let's say the name is JiangMat) to include the parameters I explained in my previous email. I will use FrictMat would be a good base class for this new material. Some of this parameters incorporate on calculations of stiffness coefficients and some will contribute to calculate contact and damping responses. Once I calculated the stiffness coefficients, I will pass them to my Iphys. This is my specific question as the first step 1- can I write a new material (entitled JiangMat) with the base class FrictMat and include all explained parameters in it? In HM, they have used FrictMat directly since they only needed E, Friction Angle and Poisson Ratio for calculating coefficients of stiffness. If possible would you please take a quick look at the paper (page 153 includes the summary of the model) for helping me if I can introduce all parameters in JiangMat. I have explained about all the parameters in the previous email. Thanks so much for your patience and support Nima Sent from my iPhone > On Jul 12, 2017, at 4:08 AM, Jan Stránský > <question647...@answers.launchpad.net> wrote: > > Your question #647543 on Yade changed: > https://answers.launchpad.net/yade/+question/647543 > >Status: Open => Answered > > Jan Stránský proposed the following answer: > Hi Nima, > > 1,2,4) If I understood correctly, you have new parameters of material, new > parameters to be stored on contacts and new material model. So most likely > you will need new Material, IPhys, Ip2 and Law2 classes. > Theoretically, new material parameters can be part of Ip2 and are set to > IPhys by it, so you can save creating a new material, but the material is the > easiest part of the implementation :-) > After detailed analysis, you might discover that some classes don't need to > be created new, but in general you need 4 new classes. > > 3) These features are optional, so you don't need to include them. But > they might be useful > > cheers > Jan > > -- > If this answers your question, please go to the following page to let us > know that it is solved: > https://answers.launchpad.net/yade/+question/647543/+confirm?answer_id=0 > > If you still need help, you can reply to this email or go to the > following page to enter your feedback: > https://answers.launchpad.net/yade/+question/647543 > > You received this question notification because you asked the 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
[Yade-users] [Question #647543]: Implementing a new contact model
New question #647543 on Yade: https://answers.launchpad.net/yade/+question/647543 Dear All, I am trying to implement a new contact model into YADE. The model has some common features with HM but is different in some ways. I need to implement 8 responses in 4 directions [Normal, Tangential, Rolling and Twisting] (for of which are related to contact response and the rest to damping response). The model has 7 free parameters (E, ξ, ξ_c, β,μ,c_n,c_s) >From above parameters, two are almost new comparing to classical DEM models: a) ξ_c which is a local crushing parameter describing the effects of local asperity crushing (in rolling direction) and related to the hardness of the particle mineral material b) β which is dimensionless shape parameter which has been introduced to link the contact radius R ̅ and the radius of the contact spheres (β can be regarded as a shape parameter, used to consider the effects of particle shape on the overall mechanical behavior of granular materials. R ̅=βr r=(2r_i* r_j)/(r_i+r_j ) In addition, K_n (Normal stiffness) is different from HM. Here K_n=2rE . E represents the modulus of the particle material And K_s=K_n/ξ. ξ is the ratio of the normal to the tangential contact stiffness. (It seems to be an input parameter) The model also proposes to calculate c_n as follow: c_n=(2*sqrt(K_n* m) ln(η))/sqrt(ln^2 (η)+π^2 ) For responses please see page 153 of this paper (A novel three-dimensional contact model for granulates incorporating rolling and twisting resistances ) www.sciencedirect.com/science/article/pii/S0266352X14002390 (I can send you the paper if required) Actually, I am trying to modify HM to capture all the behavior I need. I have some questions: 1- Do I need to write a new class of material for introducing parameter described above? (I need ξ_c for the peak resistance in rolling direction) (I need β for calculating R ̅ which directly incorporates in the calculation of rolling stiffness [K_r], twisting stiffness [K_t], rolling damping coefficient [c_r], twisting damping coefficient [c_t] and peak resistances in rolling and twisting directions. I need ξ for calculating K_s. If yes, can FrictMaterial be the base class? If not, is it possible to define them outside the .hpp file somewhere in .cpp? 2- Can I still use MindlinPhys (by some modification) or I need to define a new physics too? 3- Do I need to include the functions for counting the number of adhesive contacts, returning ratio between the number of sliding contacts to the total number, calculating the normal elastic potential energy of the system and calculating adhesion energy of the system as implemented in HM. 4- Do I need to define new Law or the existing in HM can be employed? I have some other questions I will ask after getting the response. Sincerely Yours, Nima -- 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 #638137]: Adding a new contact Law
Question #638137 on Yade changed: https://answers.launchpad.net/yade/+question/638137 Status: Answered => Open Nima Goudarzi is still having a problem: Hello Bruno, Thanks for the reply. I'll finally write my code with C++ (It will take some times, however). But there are some issues: 1- I have only installed YADE itself. Is there anything else I must do for compiling my own code (I mean do I need to install YADE by source code?) If yes I don't know how. 2- How I can check the installation package? Is this a place in which I can access already existing contact laws. If yes, I think I can check what is inside to have a better insight about what I have to prepare for compiling. Please let me know how I can access installation package. Do I need to write a command in the terminal? 3- The model I want to implement may be similar to some existing models but this is not the only one I need to implement. I will start with this one and need to develop some other models as well. Sincerely Yours and thanks for your help and patience Nima Goudarzi -- 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 #638137]: Adding a new contact Law
New question #638137 on Yade: https://answers.launchpad.net/yade/+question/638137 Hello All, I am completely new in using YADE (very limited preliminary knowledge) but as a part of my research Ph.D. thesis, I have to implement a new contact law between particles. Before getting my hands dirty, I have to make sure if I will be able to do this in a short period of time (less than 3 weeks). The contact law I need to implement is a rolling resistance model for nonconvex, nonsmooth contact proposed by Jiang et al. (Two-Dimensional Discrete Element Theory for Rough Particles,2009). The authors, originally have implemented their model in a code called revised 2D DEM and obtained satisfactory results. I am going to repeat the same scenario using YADE. I need your help guiding me what to do: 1- I am new in both C++ and Python and don't know a lot about YADE. What are the steps for adding a code? Do I need to start C++ and Python from the beginning ? I know that I have to read Programmer's Manual Too. 2- I have installed YADE itself but I think I need Yade/Trunk for modifying the source code. If yes, I don't know how to install and compile YADE/TRUNK. I read something about that but am not sure how to install it (when I go to code repository at Git Hub, I don't know what to download and how to install and compile Yade/Trunk then) All your help will be highly appreciated -- 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