Re: [Yade-users] [Question #683790]: RockBolt engine

2019-09-25 Thread Yaniv Fogel
Question #683790 on Yade changed:
https://answers.launchpad.net/yade/+question/683790

Yaniv Fogel posted a new comment:
Hi Vasileios,

Thanks for the tip. I will also look at PB (and keep you posted if I'll
too find something working).

-- 
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 #683787]: Using ForceEngine to break a single JCFpm bond

2019-09-25 Thread Yaniv Fogel
Question #683787 on Yade changed:
https://answers.launchpad.net/yade/+question/683787

Yaniv Fogel posted a new comment:
Hi all,

Jérôme, Thanks for the tips. I will dig deeper into the ForceEngine.

Jan, That last important tip solved the problem :) I can't believe I missed 
that line in the documentations.
I can say that the JCFpm bond broke at the calculated FnMax :)

-- 
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 #683787]: Using ForceEngine to break a single JCFpm bond

2019-09-25 Thread Yaniv Fogel
Question #683787 on Yade changed:
https://answers.launchpad.net/yade/+question/683787

Status: Answered => Solved

Yaniv Fogel confirmed that the question is solved:
Thanks Jan Stránský, that solved my question.

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp


Re: [Yade-users] [Question #683787]: Using ForceEngine to break a single JCFpm bond

2019-09-24 Thread Yaniv Fogel
Question #683787 on Yade changed:
https://answers.launchpad.net/yade/+question/683787

Status: Answered => Open

Yaniv Fogel is still having a problem:
Hi Jan and Jérôme,

Thanks for the remarks. I understand what you mean about the dynamic
state of the system.

I tried investigating how the forceEngine and interaction forces are
related. I would expect that as the forceEngine force increases, the
interaction force will decrease (as they are opposite), but like before,
there is no reaction between the forceEngine and interaction forces
between the particles...

As you will see while you run the script provided below ( I tried to see
how I can minimize it anymore, but I think this is the most minimal
way...), the force acting on top particle (F1) is increasing gradually,
while the force acting on the bottom particle (F0) is the gravity force,
and is logically equal to the interaction force between the particles.
The engineForce has no effect on the system... :/

(There are some "steps" sometimes in the plot of F1 between interactions
0 and 0.2e7, when the force reaches around 70-120, which does correlates
to a certain degree with the FnMax value I calculated ... but again,
other than that, there is no effect...)

 Updated forceEngine Code 

 from yade import pack, plot
import numpy as np

yade.qt.Controller()

# Define geometry
r = 0.005
intR = 1.0

# Define material
idRockTest = O.materials.append(JCFpmMat(type=1,
 young=30e9,
 density=2500.0,
 poisson=0.1,
 frictionAngle=np.radians(18.0),
 tensileStrength=1e6,
 cohesion=1e6,
 label='Rock'))

# add spheres
O.bodies.append([
sphere((0,0,0),r,material='Rock',color=(0.019, 0.529, 1),fixed=True),
sphere((0,2*r,0),r,material='Rock',color=(1, 0, 0))
])

# Simulation loop
O.engines=[
 ForceResetter(),

InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=intR,label='Saabb')]),

InteractionLoop(
  [Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=intR,label='SSgeom')],
  
[Ip2_JCFpmMat_JCFpmMat_JCFpmPhys(cohesiveTresholdIteration=1,label='interactionPhys')],
  [Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM(label='interactionLaw')]
 ),

# Apply gravity force to particles.
NewtonIntegrator(
gravity=(0,-9.81,0),
damping=0.2),

# Apply force on top particle
ForceEngine(ids=[1],force=Vector3(0,0,0),label='fEngine'),

PyRunner(command='fEngine.force[1]+=10',realPeriod=1,initRun=True),
# apply gradual increasing force on top particle

PyRunner(command='recorder()',realPeriod=1,initRun=True),
]

# plot forces and position
def recorder():
plot.addData({
'i':O.iter,
'F1':O.forces.f(1).norm(), # force acting on top particle
'Pos[z]':O.bodies[1].state.pos[1], # position (y) of top particle
'F0':O.forces.f(0).norm(), # force acting on bottom particle
'nInter[0,1]':O.interactions[0,1].phys.normalForce[1]}) # normal 
interaction force between particles

plot.plots={'i':('F1'),'i ':('F0'),'i  ':('Pos[z]'),'i   ':('nInter[0,1]')}
plot.plot()

O.dt=0.

 manage interaction detection factor during the first timestep and then set 
default interaction range
O.step();
### initializes the interaction detection factor
SSgeom.interactionDetectionFactor=-1.
Saabb.aabbEnlargeFactor=-1.

# Define time step
O.dt = 0.5*utils.PWaveTimeStep()

O.run()

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp


Re: [Yade-users] [Question #683787]: Using ForceEngine to break a single JCFpm bond

2019-09-23 Thread Yaniv Fogel
Question #683787 on Yade changed:
https://answers.launchpad.net/yade/+question/683787

Yaniv Fogel posted a new comment:
Hi Jérôme,

Thanks for the tips, but I am interested on the ForceEngine, rather than the 
JCFpm.
I will do the displacement test just to verify the values. But again, I try to 
do it using a force... and I'm still unable to solve this...

I imagine the ForceEngine as "tying" a string to the top particle, and
applying tension gradually... As I see it in my imagination, at certain
tension, it should break, and the partilce should start moving... but
that doesn't happen...

Is the way I "imagine" this action is wrong?

Yaniv

-- 
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 #684030]: example of FEMxDEM simulation

2019-09-19 Thread Yaniv Fogel
Question #684030 on Yade changed:
https://answers.launchpad.net/yade/+question/684030

Status: Open => Answered

Yaniv Fogel proposed the following answer:
There you go [1].

https://gitlab.com/yade-dev/trunk/tree/master/examples/FEMxDEM

-- 
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 #683946]: How to update yade (stable) version

2019-09-15 Thread Yaniv Fogel
Question #683946 on Yade changed:
https://answers.launchpad.net/yade/+question/683946

Yaniv Fogel proposed the following answer:
Oops, forgot the link, sorry.

[1] https://askubuntu.com/questions/124017/how-do-i-restore-the-default-
repositories

Yaniv

-- 
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 #683946]: How to update yade (stable) version

2019-09-15 Thread Yaniv Fogel
Question #683946 on Yade changed:
https://answers.launchpad.net/yade/+question/683946

Yaniv Fogel proposed the following answer:
I countered your problem earlier this week.
The new stable version (2019.01a) is currently on the new Ubuntu 19.04  (Disco 
Fox), not the previous 18.04 (Bionic beaver).
You need to change the package address from Bionic to Disco.
What I did, was updating and installing the new 19.04 version.
I did stumble later when I tried to install the new stable version, because the 
package directories were still on Bionic for some reasone. So I had to update 
them my self, following this link [1], and it worked :)

[1]

Hope this helps.

Yaniv

-- 
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 #683913]: ThermalEngine not defined/active yet?

2019-09-15 Thread Yaniv Fogel
Question #683913 on Yade changed:
https://answers.launchpad.net/yade/+question/683913

Status: Answered => Solved

Yaniv Fogel confirmed that the question is solved:
Thanks Robert Caulk, that solved my question.

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp


Re: [Yade-users] [Question #683913]: ThermalEngine not defined/active yet?

2019-09-13 Thread Yaniv Fogel
Question #683913 on Yade changed:
https://answers.launchpad.net/yade/+question/683913

Yaniv Fogel gave more information on the question:
OK, just noticed this remark in the installation documents [1] - 
"Installation from source code is reasonable, when you want to add or modify 
constitutive laws, engines, functions etc. **Installing the latest trunk 
version allows one to use newly added features, which are not yet available in 
packaged versions."**

I guess I'll have to install from source code...

[1] https://yade-dem.org/doc/installation.html?highlight=install

-- 
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 #683913]: ThermalEngine not defined/active yet?

2019-09-13 Thread Yaniv Fogel
Question #683913 on Yade changed:
https://answers.launchpad.net/yade/+question/683913

Description changed to:
Hello,

I was trying to play with the ThermalEngine [1]. Now, I understand that
it might still be an experimental engine and still under development,
but I see it appears in the documentation, and FlowEngine (and the rest
FlowEngines) currently does have the ability to activate thermalEngine
[2] within them... (plus, Thermal.cpp and Thermal.hpp do exist in the
trunk version...)

Am I missing something here?
I'm running on Ubuntu 19.04 with yade 2019.01a, installed with apt-get install.

If I try to activate the engine, I get the following error message:

Traceback (most recent call last):
  File "/usr/bin/yade", line 241, in runScript
execfile(script,globals())
  File "temp_engine.py", line 61, in 
ThermalEngine(advection=False, # Activates advection
NameError: name 'ThermalEngine' is not defined

Thanks in advance,
Yaniv

P.S.
I noticed this past question - 
https://answers.launchpad.net/yade/+question/679769
I hoped with the thermal c++ files already existing that it might have been 
implemented...

[1] 
https://yade-dem.org/doc/yade.wrapper.html?highlight=thermalengine#yade.wrapper.ThermalEngine
[2] 
https://yade-dem.org/doc/yade.wrapper.html?highlight=thermalengine#yade.wrapper.FlowEngine.thermalEngine

-- 
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 #683913]: ThermalEngine not defined/active yet?

2019-09-13 Thread Yaniv Fogel
New question #683913 on Yade:
https://answers.launchpad.net/yade/+question/683913

Hello,

I was trying to play with the ThermalEngine [1]. Now, I understand that it 
might still be an experimental engine and still under development, but I see it 
appears in the documentation, and FlowEngine (and the rest FlowEngines) 
currently does have the ability to activate thermalEngine [2] within them... 
(plus, Thermal.cpp and Thermal.hpp do exist in the trunk version...)

Am I missing something here?
I'm running on Ubuntu 19.04 with yade 2019.01a, installed with apt-get install.

If I try to activate the engine, I get the following error message:

Traceback (most recent call last):
  File "/usr/bin/yade", line 241, in runScript
execfile(script,globals())
  File "temp_engine.py", line 61, in 
ThermalEngine(advection=False, # Activates advection
NameError: name 'ThermalEngine' is not defined

Thanks in advance,
Yaniv

[1] 
https://yade-dem.org/doc/yade.wrapper.html?highlight=thermalengine#yade.wrapper.ThermalEngine
[2] 
https://yade-dem.org/doc/yade.wrapper.html?highlight=thermalengine#yade.wrapper.FlowEngine.thermalEngine

-- 
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 #683855]: Unbreakable bonds in Tension Test

2019-09-11 Thread Yaniv Fogel
Question #683855 on Yade changed:
https://answers.launchpad.net/yade/+question/683855

Status: Open => Solved

Yaniv Fogel confirmed that the question is solved:
Thanks Luc Scholtès, that solved my question.

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp


[Yade-users] [Question #683855]: Unbreakable bonds in Tension Test

2019-09-11 Thread Yaniv Fogel
New question #683855 on Yade:
https://answers.launchpad.net/yade/+question/683855

Hello everyone,

I had the following short conversation with Luc Scholts about the Uniaxial 
Tension test he performed in [1], and he thought this will also be of an 
interest to the forum.

Original message:
I am currently trying to duplicate your tension test from [1]. My only question 
is about the ubreakable bonds that you apply for particles in the recovery 
zone. How did you define these bonds? Did you define them as clumped, or did 
you just enter a bigger number for the tension (and Elastic modulus?) of the 
particles there?

Thanks in advance,
Yaniv

[1] [1]L. Scholtès and F.-V. Donzé, “A DEM model for soft and hard rocks: Role 
of grain interlocking on strength,” Journal of the Mechanics and Physics of 
Solids, vol. 61, no. 2, pp. 352–369, Feb. 2013.

Luc's response:
I just define higher strength on the bonds located close to the boundaries.

Please find attached a script where the procedure is implemented (lines 73 to 
85).

Cheers

Luc

His script:

# -*- coding: utf-8 -*-
# -*- encoding=utf-8 -*-
from yade import ymport, plot

 Simulation of a uniaxial test (compression or tension depending on the 
sign of the loading rate "rate" defined below)
# everything is documented at https://yade-dem.org/doc/index-toctree.html -> 
use the quick serach bar on the left of the page

# SIMULATIONS DEFINED HERE

 Packing (previously built)
PACKING='core_112_04_020.spheres'

 Simulation Control
rate=0.003 # deformation rate (0.003 for tension, -0.03 for compression)
iterMax=1 # maximum number of iterations 
saveVTK=2000 # saving output files for paraview
OUT='tensionTest_r0.003' # output files

 Material microproperties for JCFPM (see 
https://yade-dem.org/doc/yade.wrapper.html?highlight=jcfpm#yade.wrapper.JCFpmMat)
intR=1.2 # allows near neighbour interaction
DENS=2500 # could be adapted to match material density: 
dens_DEM=dens_rock*(V_rock/V_particles)=dens_rock*1/(1-poro_DEM) 
def sphereMat(): return 
JCFpmMat(type=1,density=DENS,young=20e9,poisson=0.1,frictionAngle=radians(7),tensileStrength=1e6,cohesion=1e6)

 Loading of the packing into the simulation (O: Omega: the simulation)
O.bodies.append(ymport.text(PACKING,material=sphereMat))

 Set up boundary conditions (see 
https://yade-dem.org/doc/yade.utils.html?highlight=uniaxialtestfeatures#yade.utils.uniaxialTestFeatures)
bb=utils.uniaxialTestFeatures()
negIds,posIds,longerAxis,crossSectionArea=bb['negIds'],bb['posIds'],bb['axis'],bb['area']
 
# ENGINES DEFINED HERE

O.engines=[
ForceResetter(),

InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=intR,label='Saabb')]),
InteractionLoop(

[Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=intR,label='SSgeom')],

[Ip2_JCFpmMat_JCFpmMat_JCFpmPhys(cohesiveTresholdIteration=1,label='interactionPhys')],

[Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM(recordCracks=True,Key=OUT,label='interactionLaw')]
),

UniaxialStrainer(strainRate=rate,axis=longerAxis,asymmetry=0,posIds=posIds,negIds=negIds,crossSectionArea=crossSectionArea,blockDisplacements=1,blockRotations=1,setSpeeds=0,stopStrain=0.1,dead=1,label='strainer'),

GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=10,timestepSafetyCoefficient=0.5,
 defaultDt=utils.PWaveTimeStep()),
NewtonIntegrator(damping=0.4,label='newton'),

PyRunner(iterPeriod=int(100),initRun=True,command='recorder()',label='data'),

VTKRecorder(iterPeriod=int(saveVTK),initRun=True,fileName=OUT+'-',recorders=['spheres','jcfpm','cracks'],Key=OUT,label='vtk')
]

# RECORDER DEFINED HERE

def recorder():
yade.plot.addData({'i':O.iter,
   'eps':strainer.strain,
   'sigma':strainer.avgStress,
   'tc':interactionLaw.nbTensCracks,
   'sc':interactionLaw.nbShearCracks,
   'te':interactionLaw.totalTensCracksE,
   'se':interactionLaw.totalShearCracksE,
   'unbF':utils.unbalancedForce()})
plot.saveDataTxt(OUT)

# if you want to plot during simulation
plot.plots={'i':('sigma')}
plot.plot()

# PREPROCESSING

 manage interaction detection factor during the first timestep and then set 
default interaction range ((cf. A DEM model for soft and hard rock, Scholtes & 
Donze, JMPS 2013))
O.step();
### initializes the interaction detection factor
SSgeom.interactionDetectionFactor=-1.
Saabb.aabbEnlargeFactor=-1.

# reinforce bonds at boundaries for tensile tests
dim=utils.aabbExtrema()
if rate>0:
layerSize=0.15
for o in O.bodies:
if isinstance(o.shape,Sphere):
if ( 
o.state.pos[longerAxis]<(dim[0][longerAxis]+layerSize*(dim[1][longerAxis]-dim[0][longerAxis]))
 ) or ( 

[Yade-users] [Question #683790]: RockBolt engine

2019-09-09 Thread Yaniv Fogel
New question #683790 on Yade:
https://answers.launchpad.net/yade/+question/683790

Hello everyone,

I did a bit of searching and I believe that the reference for this engine[1] 
comes from here[2] (correct me if I'm wrong).
Does any one has a basic working sample where I can learn how to implement this 
engine?

Thank is advance,
Yaniv

[1] 
https://yade-dem.org/doc/yade.wrapper.html?highlight=rockbolt#yade.wrapper.RockBolt
[2] 
https://www.researchgate.net/publication/271007832_Designing_Tunnel_Support_in_Jointed_Rock_Masses_Via_the_DEM

-- 
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 #683787]: Using ForceEngine to break a single JCFpm bond

2019-09-09 Thread Yaniv Fogel
New question #683787 on Yade:
https://answers.launchpad.net/yade/+question/683787

Hello,

I'm a new user to YADE and I'm in the process of learning about the JCFpm 
model. I'm currently trying to break a bond between two particles using the 
ForceEngine. As described in the code bit below, I'm trying to apply and 
increasing force until a break occurs between the two particles. The bottom 
particle is fixed.

If I got the documentation right, the force when the breakage should happen is:
FnMax  = tensileStrength * pi*Rmin^2 [1],[2] -> FnMax = 1e6 * np.pi * 
pow(0.005,2) =  78.539 N

First question - 
For the first trials, I tried using addF manually, using the code below (after 
running the script). I found that the bond breaks around 
O.forces.addF(1,(0,0,700)). (I first assumed that addF uses Newtons, but now 
I'm not so sure...). So, did I calculated FnMax correctly or not?

Second question - 
After that, I tried using the ForceEngine (same code, just uncomment 
#ForceEngine & #PyRunner), increasing the force on the particle, but I can't 
get it to break. Am I using the engine correctly?

Third question - 
I also looked at the InterpolatingDirectedForceEngine [3], where there is a 
magnitude for the force, but what is the difference between force and 
magnitudes in the engine (Again, I tried playing with it, with increasing 
magnitudes, but I still couldn't get it to break)

I would like your help. Sorry if this is too long or if my understanding of 
vector physics is a bit lacking :)

### Forces Test 1, YADE ###

from yade import pack, plot
import numpy as np

yade.qt.Controller()

# Define geometry
r = 0.005
intR = 1.0

# Define material
idRockTest = O.materials.append(JCFpmMat(type=1,
 young=30e9,
 density=2500.0,
 poisson=0.1,
 frictionAngle=np.radians(18.0),
 tensileStrength=1e6,
 cohesion=1e6,
 label='Rock'))

# add spheres
O.bodies.append([
sphere((0,0,0),r,material='Rock',color=(0.019, 0.529, 1),fixed=True),
sphere((0,0,2*r),r,material='Rock',color=(1, 0, 0))
])

# Simulation loop
O.engines=[
ForceResetter(),


InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=intR,label='Saabb')]),

InteractionLoop(

[Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=intR,label='SSgeom')],

[Ip2_JCFpmMat_JCFpmMat_JCFpmPhys(cohesiveTresholdIteration=1,label='interactionPhys')],

[Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM(label='interactionLaw')]
),

# Apply gravity force to particles.
NewtonIntegrator(
gravity=(0,0,-9.81),
damping=0.2),

# Apply force on top particle
#ForceEngine(ids=[1],force=Vector3(0,0,0),label='fEngine'),

#PyRunner(command='fEngine.force[2]+=100',realPeriod=1,initRun=True),

PyRunner(command='recorder()',realPeriod=1,initRun=True),
]

# Define time step
#O.dt = 0.5*utils.PWaveTimeStep()

def recorder():
plot.addData({
'i':O.iter,
'F':O.forces.f(1).norm(),
'T':O.forces.t(1).norm()})

plot.plots={'i':('F','T')}
plot.plot()

O.dt=0.

 manage interaction detection factor during the first timestep and then set 
default interaction range
O.step();
### initializes the interaction detection factor
SSgeom.interactionDetectionFactor=-1.
Saabb.aabbEnlargeFactor=-1.

# Define time step
O.dt = 0.5*utils.PWaveTimeStep()

O.run()




[1] 
https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.JCFpmMat.tensileStrength
[2] 
https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.JCFpmPhys.crossSection
[3] 
https://yade-dem.org/doc/yade.wrapper.html?highlight=interpolatingdirectedforceengine#yade.wrapper.InterpolatingDirectedForceEngine

-- 
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 #683787]: Using ForceEngine to break a single JCFpm bond

2019-09-09 Thread Yaniv Fogel
Question #683787 on Yade changed:
https://answers.launchpad.net/yade/+question/683787

Description changed to:
Hello,

I'm a new user to YADE and I'm in the process of learning about the
JCFpm model. I'm currently trying to break a bond between two particles
using the ForceEngine. As described in the code bit below, I'm trying to
apply and increasing force until a break occurs between the two
particles. The bottom particle is fixed.

If I got the documentation right, the force when the breakage should happen is:
FnMax  = tensileStrength * pi*Rmin^2 [1],[2] -> FnMax = 1e6 * np.pi * 
pow(0.005,2) =  78.539 N

First question - 
For the first trials, I tried using addF manually, using the code below (after 
running the script). I found that the bond breaks around 
O.forces.addF(1,(0,0,700)). (I first assumed that addF uses Newtons, but now 
I'm not so sure...). So, did I calculate FnMax correctly or not?

Second question - 
After that, I tried using the ForceEngine (same code, just uncomment 
#ForceEngine & #PyRunner), increasing the force on the particle, but I can't 
get it to break. Am I using the engine correctly?

Third question - 
I also looked at the InterpolatingDirectedForceEngine [3], where there is a 
magnitude for the force, but what is the difference between force and 
magnitudes in the engine (Again, I tried playing with it, with increasing 
magnitudes, but I still couldn't get it to break)

I would like your help. Sorry if this is too long or if my understanding
of vector physics is a bit lacking :)

### Forces Test 1, YADE ###

from yade import pack, plot
import numpy as np

yade.qt.Controller()

# Define geometry
r = 0.005
intR = 1.0

# Define material
idRockTest = O.materials.append(JCFpmMat(type=1,
 young=30e9,
 density=2500.0,
 poisson=0.1,
 frictionAngle=np.radians(18.0),
 tensileStrength=1e6,
 cohesion=1e6,
 label='Rock'))

# add spheres
O.bodies.append([
sphere((0,0,0),r,material='Rock',color=(0.019, 0.529, 1),fixed=True),
sphere((0,0,2*r),r,material='Rock',color=(1, 0, 0))
])

# Simulation loop
O.engines=[
ForceResetter(),


InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=intR,label='Saabb')]),

InteractionLoop(

[Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=intR,label='SSgeom')],

[Ip2_JCFpmMat_JCFpmMat_JCFpmPhys(cohesiveTresholdIteration=1,label='interactionPhys')],

[Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM(label='interactionLaw')]
),

# Apply gravity force to particles.
NewtonIntegrator(
gravity=(0,0,-9.81),
damping=0.2),

# Apply force on top particle
#ForceEngine(ids=[1],force=Vector3(0,0,0),label='fEngine'),

#PyRunner(command='fEngine.force[2]+=100',realPeriod=1,initRun=True),

PyRunner(command='recorder()',realPeriod=1,initRun=True),
]

# Define time step
#O.dt = 0.5*utils.PWaveTimeStep()

def recorder():
plot.addData({
'i':O.iter,
'F':O.forces.f(1).norm(),
'T':O.forces.t(1).norm()})

plot.plots={'i':('F','T')}
plot.plot()

O.dt=0.

 manage interaction detection factor during the first timestep and then set 
default interaction range
O.step();
### initializes the interaction detection factor
SSgeom.interactionDetectionFactor=-1.
Saabb.aabbEnlargeFactor=-1.

# Define time step
O.dt = 0.5*utils.PWaveTimeStep()

O.run()



[1] 
https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.JCFpmMat.tensileStrength
[2] 
https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.JCFpmPhys.crossSection
[3] 
https://yade-dem.org/doc/yade.wrapper.html?highlight=interpolatingdirectedforceengine#yade.wrapper.InterpolatingDirectedForceEngine

-- 
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