Re: [Yade-users] [Question #706187]: Servo controller torque and force engine

2023-04-22 Thread Nima Goudarzi
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

2023-04-14 Thread Nima Goudarzi
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

2023-04-14 Thread Nima Goudarzi
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

2023-04-14 Thread Nima Goudarzi
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

2023-04-12 Thread Nima Goudarzi
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

2022-10-04 Thread Nima Goudarzi
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

2022-09-29 Thread Nima Goudarzi
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

2022-09-16 Thread Nima Goudarzi
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

2022-09-15 Thread Nima Goudarzi
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

2022-09-14 Thread Nima Goudarzi
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

2022-09-12 Thread Nima Goudarzi
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

2022-09-11 Thread Nima Goudarzi
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

2022-09-11 Thread Nima Goudarzi
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

2022-09-11 Thread Nima Goudarzi
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

2022-09-08 Thread Nima Goudarzi
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

2022-01-27 Thread Nima Goudarzi
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

2022-01-12 Thread Nima Goudarzi
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

2022-01-11 Thread Nima Goudarzi
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

2022-01-10 Thread Nima Goudarzi
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

2022-01-10 Thread Nima Goudarzi
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

2021-09-23 Thread Nima Goudarzi
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

2021-09-16 Thread Nima Goudarzi
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

2021-09-09 Thread Nima Goudarzi
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

2021-08-15 Thread Nima Goudarzi
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

2020-07-10 Thread Nima Goudarzi
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

2020-07-10 Thread Nima Goudarzi
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

2020-07-09 Thread Nima Goudarzi
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

2019-12-17 Thread Nima Goudarzi
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

2019-12-17 Thread Nima Goudarzi
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

2019-12-16 Thread Nima Goudarzi
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

2019-12-16 Thread Nima Goudarzi
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

2019-12-15 Thread Nima Goudarzi
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

2019-12-06 Thread Nima Goudarzi
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

2019-12-05 Thread Nima Goudarzi
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

2018-05-14 Thread Nima Goudarzi
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

2018-05-11 Thread Nima Goudarzi
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

2018-05-02 Thread Nima Goudarzi
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

2018-05-01 Thread Nima Goudarzi
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

2018-04-28 Thread Nima Goudarzi
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

2018-04-24 Thread Nima Goudarzi
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

2018-04-24 Thread Nima Goudarzi
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

2018-04-24 Thread Nima Goudarzi
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

2018-04-24 Thread Nima Goudarzi
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

2018-04-24 Thread Nima Goudarzi
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

2018-04-24 Thread Nima Goudarzi
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

2017-10-17 Thread Nima Goudarzi
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

2017-10-17 Thread Nima Goudarzi
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

2017-10-17 Thread Nima Goudarzi
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

2017-10-09 Thread Nima Goudarzi
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

2017-10-07 Thread Nima Goudarzi
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

2017-10-05 Thread Nima Goudarzi
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

2017-10-03 Thread Nima Goudarzi
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

2017-07-28 Thread Nima Goudarzi
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

2017-07-27 Thread Nima Goudarzi
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

2017-07-25 Thread Nima Goudarzi
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

2017-07-24 Thread Nima Goudarzi
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

2017-07-12 Thread Nima Goudarzi
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

2017-07-11 Thread Nima Goudarzi
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

2017-06-01 Thread Nima Goudarzi
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

2017-05-31 Thread Nima Goudarzi
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