Re: [Yade-users] [Question #707257]: How to set the parameters of JCFpmMat?

2023-07-14 Thread William
Question #707257 on Yade changed:
https://answers.launchpad.net/yade/+question/707257

Status: Answered => Solved

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

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

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


Re: [Yade-users] [Question #707260]: The problem of material parameters.

2023-07-14 Thread William
Question #707260 on Yade changed:
https://answers.launchpad.net/yade/+question/707260

Status: Answered => Solved

William 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


[Yade-users] [Question #707260]: The problem of material parameters.

2023-07-11 Thread William
New question #707260 on Yade:
https://answers.launchpad.net/yade/+question/707260

Hi, everyone!
There is a question bother me for a long time. That’s the particle parameters 
young’s modulus and poisson’s ratio.

In Yade, we set the modulus and poisson’s ratio directly. kn = 
2.*E*R1*E*R2/(E*R1+E*R2), Ks/Kn=P  ### some people say that kn = 
E*R1*E*R2/(E*R1+E*R2)
That’s to say the kn at different contact of the particles differs because the 
particle radius varies (different combination of R1 and R2).
However, we can set the value of kn and ks directly in PFC, which means the kn 
at different contact are the same.

Is my understanding above correct? Why this difference in software development?

-- 
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 #707257]: How to set the parameters of JCFpmMat?

2023-07-11 Thread William
New question #707257 on Yade:
https://answers.launchpad.net/yade/+question/707257

Hi, everyone!

I have read some literature to figure out how to set the parameters of 
JCFpmMat, especially the tensileStrength and the cohesion. However, I still 
have some problems.

The tensileStrength and cohesion parameters in [1] (t=16MPa, c=16MPa) and [2] 
(t=4.5MPa, c=45MPa) are different. 

I wonder that on what basis is the ratio of tensileStrength to cohesion set and 
how to set their value range? Why the parameters in the two papers differ 
widely?

[1]https://link.springer.com/article/10.1007/s00603-017-1397-6
[2]https://www.sciencedirect.com/science/article/pii/S1365160912000391

-- 
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 #707090]: How to generate a cylinder?

2023-06-26 Thread William
Question #707090 on Yade changed:
https://answers.launchpad.net/yade/+question/707090

William posted a new comment:
Hi, Jan.
Thanks for your reply.

I want to create a blender to mix the particles. The cylinder I ask for
can be the shaft of the blender. Multiple cylinders form an irregularly
shaped blender (by using clump)

William

-- 
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 #707090]: How to generate a cylinder?

2023-06-25 Thread William
Question #707090 on Yade changed:
https://answers.launchpad.net/yade/+question/707090

Status: Answered => Open

William is still having a problem:
Hi, Karol.
Thanks for your reply.

The cylinder generated using your suggested method is hollow and I want
a solid cylinder. Because I'm ready to form the solid cylinder and and
other solid box into a clump later.

William

-- 
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 #707090]: How to generate a cylinder?

2023-06-24 Thread William
New question #707090 on Yade:
https://answers.launchpad.net/yade/+question/707090

Hi, everyone!

A cuboid shaped stick could be generated by using the following code:

box = utils.box((0.7,0.7,0),(0.03,0.03,0.5))
O.bodies.append(box)

If I want to generate a cylinder by this method, how should I do?

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


[Yade-users] [Question #707043]: Does 'JCFpmPhys' have 'matchmaker'?

2023-06-20 Thread William
New question #707043 on Yade:
https://answers.launchpad.net/yade/+question/707043

Hi, everyone!
I want to simulate the combination of granular particles and rocks. That is to 
say, one part of a sample is soil particles, and the other part is rock consist 
of the bonded particles.

Firstly, I import the particle using ‘ymport.text’. Then, I create two types of 
sphere materials (the tensileStrength and cohesion between the materials are 
different) and assign them to the particles in percentage terms. 

Here is the mats:
mat1=JCFpmMat(type=1,young=Young,poisson=Poisson,frictionAngle=radians(compFricDegree),density=Density,tensileStrength=10e4,cohesion=45e4,label='spheres1')
mat_1=O.materials.append(mat1)
mat2=JCFpmMat(type=1,young=Young,poisson=Poisson,frictionAngle=radians(compFricDegree),density=Density,tensileStrength=0,cohesion=0,label='spheres2')
mat_2=O.materials.append(mat2)

How to set the tensileStrength and cohesion between the particles of different 
mats? For example, is the tensileStrength 10e4, 0 or other value between the 
particles of mat1 and mat2? Is the ‘matchmaker’ needed in the engine here?

Here is my script.

 packing (previously constructed)
PACKING='Position.txt'

 name of output files
OUT=PACKING+'_1MPa_r0.02'

from yade import pack, timing,ymport


###   DEFINING VARIABLES AND MATERIALS   ###


## Sphere material
Young=300e6
Density=2650
Poisson=0.3
compFricDegree = 0
finalFricDegree = 27
AvgRadius=0.0002

intR=1
TENS=0.1e6
COH=0.45e6
TENS0=0
COH0=0

## wall material
WYoung=600e7
WPoisson=0.5
WDensity=0
WFrictionAngle=0

damp=0.7 # damping coefficient
stabilityThreshold=0.001 # we test unbalancedForce against this value in 
different loops (see below)

# corners of the initial packing
size=0.05
mn,mx=Vector3(0,0,0),Vector3(size,size,size) 
#mn2,mx2=Vector3(0,0,0.0025),Vector3(size,1.5*size,0.0025) 

O.materials.append(JCFpmMat(type=0,young = WYoung , poisson = WPoisson , 
frictionAngle = radians(WFrictionAngle) , density = WDensity,label='walls'))
#O.materials.append(JCFpmMat(type=1,young = Young , poisson = Poisson , 
frictionAngle = radians(compFricDegree),density = 
Density,tensileStrength=TENS,cohesion=COH,label='spheres'))
walls=aabbWalls([mn,mx],thickness=0.001,material='walls')
wallIds=O.bodies.append(walls)

mat1=JCFpmMat(type=1,young = Young , poisson = Poisson , frictionAngle = 
radians(compFricDegree),density = 
Density,tensileStrength=TENS,cohesion=COH,label='spheres1')
mat_1=O.materials.append(mat1)
mat2=JCFpmMat(type=1,young = Young , poisson = Poisson , frictionAngle = 
radians(compFricDegree),density = 
Density,tensileStrength=TENS0,cohesion=COH0,label='spheres2')
mat_2=O.materials.append(mat2)

O.bodies.append(ymport.text(PACKING,scale=1.,shift=Vector3(0,0,0)))

sphere1=[]
sphere2=[]
for b in O.bodies:
  if not isinstance(b.shape,Sphere): # change material only on spheres
continue
  if random.random() < 0.1:
b.mat = mat1
b.shape.color = (1,0,0)
#b.state.mass*=mat1.density/mat1.density
sphere1.append(b.id)
  else:
b.mat = mat2
b.shape.color = (0,1,1)
#b.state.mass*=mat2.density/mat1.density
sphere2.append(b.id)

R=0
Rmax=0
numSpheres=0.
for o in O.bodies:
 if isinstance(o.shape,Sphere):
   numSpheres+=1
   R+=o.shape.radius
Rmean=R/numSpheres



###   DEFINING ENGINES   ###


triax=TriaxialStressController(
#wall_back_activated = False, #for 2d simulation
#wall_front_activated = False,
thickness = 0,
stressMask = 7,
internalCompaction=False, # If true the confining pressure is generated by 
growing particles
)

newton=NewtonIntegrator(damping=damp)


###
###   APPLYING CONFINING PRESSURE   ###
###

#the value of (isotropic) confining stress defines the target stress to be 
applied in all three directions



###
###   REACHING A SPECIFIED POROSITY PRECISELY   ###
###

triax.goal1=triax.goal2=triax.goal3=-10
setContactFriction(radians(finalFricDegree))
O.engines=[
ForceResetter(),

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

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

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

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

GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8),
triax,
newton

#PyRunner(iterPeriod=int(saveData),initRun=True,command='recorder()',label='data'),
]



Re: [Yade-users] [Question #707022]: A problem with 'JCFmpMat'

2023-06-19 Thread William
Question #707022 on Yade changed:
https://answers.launchpad.net/yade/+question/707022

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

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

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


Re: [Yade-users] [Question #707022]: A problem with 'JCFmpMat'

2023-06-19 Thread William
Question #707022 on Yade changed:
https://answers.launchpad.net/yade/+question/707022

Status: Open => Solved

William confirmed that the question is solved:
Hi, Luc. I have read your paper and it helped me a lot.

I have understood the meaning of 'aabbEnlargeFactor' and
'interactionDetectionFactor'.

I set the intR to 0 and try again. the results show that the strength of
the two methods is identical.

Thanks for your guidance.

-- 
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 #707027]: How to combine 'FrictMat' with 'JCFpmMat'?

2023-06-19 Thread William
New question #707027 on Yade:
https://answers.launchpad.net/yade/+question/707027

Hi, everyone!
I am preparing triaxial samples. I want to study the process of gradual 
transition from granular materials to continuum materials (many particles — a 
whole rock). I will bond a part of particles ) randomly (0-100%, 0 means no 
bonded contact, and 100% means all particles are bonded into a rock.
The material properties of particles are different. A part of particles are 
cohesionless (set by ‘FrictMat’) and the other part is set by ‘JCFpmMat’. 
However, I met the following error and I didn’t know how to handle this.

The error:
Body #8: Body::material type JCFpmMat doesn't correspond to Body::state type 
State (should be JCFpmState instead).

Here is my script.

> ### Positon.txt (file name)
#format x_y_z_r
0.0423719   0.0423718   0.00762624  0.00762937
0.0368311   0.00762414  0.0218373   0.00762937
0.0109732   0.0274949   0.0423726   0.00762937
0.0423729   0.0196072   0.0294726   0.00762937
0.00762888  0.0076284   0.0237511   0.00762937
0.0423757   0.0213440.0143142   0.00762937
0.0423732   0.0423786   0.0381319   0.00762937
0.0423707   0.00762926  0.0389254   0.00762937
0.0277218   0.0423760.0423756   0.00762937
0.00762825  0.0221316   0.0284870.00762937
0.0183669   0.02929 0.0203510.00762937
0.00762204  0.00983953  0.00762463  0.00762937
0.0293079   0.0172139   0.00762398  0.00762937
0.0308355   0.0323899   0.00762729  0.00762937
0.0204724   0.00761678  0.0155146   0.00762937
0.0076186   0.0126170.0423748   0.00762937
0.0158864   0.0373350.00762595  0.00762937
0.0423768   0.0423791   0.0228790.00762937
0.0244463   0.0292061   0.0354264   0.00762937
0.0423718   0.00762923  0.00762641  0.00762937
0.0176763   0.0421088   0.0308980.00762937
0.0258480.0423790.0180193   0.00762937
0.00762741  0.0423712   0.0194226   0.00762937
0.0333746   0.0300839   0.0229910.00762937
0.0423771   0.0277384   0.0423761   0.00762937
0.0257761   0.0172419   0.0260697   0.00762937
0.0208973   0.00761264  0.0368250.00762937
0.0311736   0.0174043   0.0423743   0.00762937
0.00762717  0.0423745   0.0423721   0.00762937
0.00762815  0.0248273   0.0104743   0.00762937

> ### The script:

# packing (previously constructed)
PACKING='Position.txt'

from yade import pack, timing,ymport

###   DEFINING VARIABLES AND MATERIALS   ###


## Sphere material
Young=300e6
Density=2650
Poisson=0.3
compFricDegree = 0
finalFricDegree = 27
AvgRadius=0.0002

intR=1.25
TENS=0.1e6
COH=0.45e6

## wall material
WYoung=600e7
WPoisson=0.5
WDensity=0
WFrictionAngle=0

damp=0.7

# corners of the initial packing
size=0.05
mn,mx=Vector3(0,0,0),Vector3(size,size,size) 


O.materials.append(FrictMat(young = WYoung , poisson = WPoisson , frictionAngle 
= radians(WFrictionAngle) , density = WDensity,label='walls'))

mat1=JCFpmMat(type=1,young = Young , poisson = Poisson , frictionAngle = 
radians(compFricDegree),density = 
Density,tensileStrength=TENS,cohesion=COH,label='spheres1')
mat_1=O.materials.append(mat1)
mat2=FrictMat(young = Young , poisson = Poisson , frictionAngle = 
radians(compFricDegree),density = Density,label='spheres2')
mat_2=O.materials.append(mat2)


walls=aabbWalls([mn,mx],thickness=0.001,material='walls')
wallIds=O.bodies.append(walls)

O.bodies.append(ymport.text(PACKING,scale=1.,shift=Vector3(0,0,0)))

sphere1=[]
sphere2=[]
for b in O.bodies:
  if not isinstance(b.shape,Sphere):
continue
  if random.random() < 0.2:
b.mat = mat1
b.shape.color = (1,0,0)
sphere1.append(b.id)
  else:
b.mat = mat2
b.shape.color = (0,1,1)
sphere2.append(b.id)




###   DEFINING ENGINES   ###


triax=TriaxialStressController(
thickness = 0,
stressMask = 7,
internalCompaction=False, 
)

newton=NewtonIntegrator(damping=damp)

###
###   REACHING A SPECIFIED POROSITY PRECISELY   ###
###

triax.goal1=triax.goal2=triax.goal3=-10
setContactFriction(radians(finalFricDegree))
O.engines=[
ForceResetter(),

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

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

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

Re: [Yade-users] [Question #707022]: A problem with 'JCFmpMat'

2023-06-19 Thread William
Question #707022 on Yade changed:
https://answers.launchpad.net/yade/+question/707022

Status: Answered => Open

William is still having a problem:
Hi, Luc. Thanks for your reply.

> Basically, the sample is stress free at the first iteration of a JCFPM 
> simulation.
Sorry, I don't understand what does this mean.

> Also, you can define long range interactions with the JCFPM: intR>1 will 
> create contacts between particles not geometrically in contact.
If I've given the position of the particles beforehand, and they're touching 
each other, what's the use of 'intR>1' in the engine?

Finally, how should I edit the code if I want that the results of
'JCFpmMat' is same with 'FrictMat'?

William

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

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


Re: [Yade-users] [Question #706976]: Reconstruct particles from ct images

2023-06-18 Thread William
Question #706976 on Yade changed:
https://answers.launchpad.net/yade/+question/706976

William posted a new comment:
Hi, Karol.
I wonder that what the '1' and '10' mean in the 'clumps.txt'

### input file with clumps "clumps.txt"
0.068037 0.02416 0.0017637 0.0011423 1
0.068615 0.022601 0.0014278 0.00077244 1
0.069542 0.023528 0.0017906 0.00071539 1
0.066801 0.025141 0.0019788 0.0006786 1
0.049731 0.03499 0.0017112 0.00070436 10
0.048747 0.034309 0.0013637 0.00063928 10
0.047719 0.034628 0.0014651 0.00056027 10
0.047299 0.035323 0.0020008 0.00052311 10

-- 
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 #701110]: wall friction

2023-06-18 Thread William
Question #701110 on Yade changed:
https://answers.launchpad.net/yade/+question/701110

Status: Answered => Solved

William 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 #701737]: How to apply stress?

2023-06-18 Thread William
Question #701737 on Yade changed:
https://answers.launchpad.net/yade/+question/701737

Status: Answered => Solved

William 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 #706962]: The problem of matchmaker

2023-06-18 Thread William
Question #706962 on Yade changed:
https://answers.launchpad.net/yade/+question/706962

Status: Answered => Solved

William 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 #701792]: friction coefficient between different materials

2023-06-18 Thread William
Question #701792 on Yade changed:
https://answers.launchpad.net/yade/+question/701792

Status: Answered => Solved

William 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


[Yade-users] [Question #707022]: A problem with 'JCFmpMat'

2023-06-18 Thread William
New question #707022 on Yade:
https://answers.launchpad.net/yade/+question/707022

Hi, everyone. I have a problem with ‘JCFpmMat’.

What’s the difference between ‘JCFpmMat’ and ‘FrictMat’ if we set the 
tensileStrength and cohesion to 0?

For example, there are two scripts and the difference between them (materials 
and contact InteractionLoop) is as follows:

Script1:

O.materials.append(FrictMat(young = WYoung , poisson = WPoisson , frictionAngle 
= radians(WFrictionAngle) , density = WDensity,label='walls'))
O.materials.append(FrictMat(young = Young , poisson = Poisson , frictionAngle = 
radians(compFricDegree),density = Density,label='spheres'))

O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys()],
[Law2_ScGeom_FrictPhys_CundallStrack()]
),

GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8),
triax,
newton
]

#
#
#

Script 2:

O.materials.append(JCFpmMat(type=0,young = WYoung , poisson = WPoisson , 
frictionAngle = radians(WFrictionAngle) , density = WDensity,label='walls'))
O.materials.append(JCFpmMat(type=1,young = Young , poisson = Poisson , 
frictionAngle = radians(compFricDegree),density = 
Density,tensileStrength=TENS,cohesion=COH,label='spheres'))


triax.goal1=triax.goal2=triax.goal3=-10
setContactFriction(radians(finalFricDegree))
O.engines=[
ForceResetter(),

InsertionSortCollider([Bo1_Box_Aabb(),Bo1_Sphere_Aabb(aabbEnlargeFactor=intR,label='Saabb')]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=intR,label='SSgeom'),Ig2_Box_Sphere_ScGeom()],
[Ip2_JCFpmMat_JCFpmMat_JCFpmPhys(cohesiveTresholdIteration=1,label='interactionPhys')],
[Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM(recordCracks=True,Key=OUT,label='interactionLaw')]),

GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8),
triax,
newton
]
#
#
#
The two scripts are same except the above content. However, the results of the 
two triaxal tests differed greatly.

-- 
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 #706962]: The problem of matchmaker

2023-06-13 Thread William
Question #706962 on Yade changed:
https://answers.launchpad.net/yade/+question/706962

William posted a new comment:
Hi, Jan. I have simplified the code.

Yade 2021.01a

> Here is the new code and the error.

from yade import pack, timing

#time calculation
startT = O.time
endT = O.time
timeSpent = endT - startT
time0 = time.time()


###   DEFINING VARIABLES AND MATERIALS   ###



nRead=readParamsFromTable(
num_spheres=2000,
key='_triax_base_',
unknownOk=True)


from yade.params import table
num_spheres=table.num_spheres
key=table.key

damp=0.7
stabilityThreshold=0.001

## Sphere material
Young=300e6
Density=2650
Poisson=0.3
compFricDegree = 0
finalFricDegree = 27
normalCohesion=100e4
shearCohesion=100e4
etaRoll=0.1
AvgRadius=0.0005

## wall material
WYoung=6000e6
WPoisson=0.5
WDensity=0
WFrictionAngle=0

# corners of the initial packing
size=0.05
mn,mx=Vector3(0,0,0),Vector3(size,size,size) 


## create materials for spheres and plates
O.materials.append(CohFrictMat(young = WYoung , poisson = WPoisson , 
frictionAngle = radians(WFrictionAngle) , density = WDensity,label='walls'))

mat1=CohFrictMat(young = Young , poisson = Poisson , frictionAngle = 
radians(compFricDegree) 
,normalCohesion=100,shearCohesion=100,isCohesive=True,alphaKr=0,alphaKtw=0,etaRoll=0.5,momentRotationLaw=True,
 density = Density,label='spheres1')
mat_1=O.materials.append(mat1)

mat2=CohFrictMat(young = Young , poisson = Poisson , frictionAngle = 
radians(compFricDegree) 
,normalCohesion=normalCohesion,shearCohesion=shearCohesion,isCohesive=True,alphaKr=0,alphaKtw=0,etaRoll=0.5,momentRotationLaw=True,
 density = Density,label='spheres2')
mat_2=O.materials.append(mat2)

## create walls around the packing
walls=aabbWalls([mn,mx],thickness=0,material='walls')
wallIds=O.bodies.append(walls)

## use a SpherePack object to generate a random loose particles packing
sp=pack.SpherePack()
sp.makeCloud(mn,mx,rMean=AvgRadius,rRelFuzz=0,num=num_spheres,distributeMass=False,seed=1)
sp.toSimulation()


sphere1=[]
sphere2=[]

for b in O.bodies:
  if not isinstance(b.shape,Sphere): # change material only on spheres
continue
  if random.random() < 0.9:
b.mat = mat1
b.shape.color = (1,0,0)
b.state.mass*=mat1.density/mat1.density
sphere1.append(b.id)
  else:
b.mat = mat2
b.shape.color = (0,1,1)
b.state.mass*=mat2.density/mat1.density
sphere2.append(b.id)


###   DEFINING ENGINES   ###


triax=TriaxialStressController(
maxMultiplier=1.001,
finalMaxMultiplier=1.1,
thickness = 0,
stressMask = 7,
internalCompaction=True
)

newton=NewtonIntegrator(damping=damp)

O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom6D(),Ig2_Box_Sphere_ScGeom6D()],

[Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True,normalCohesion=MatchMaker(matches=((mat_1,mat_1,100),(mat_1,mat_2,normalCohesion/2),(mat_2,mat_2,normalCohesion))),shearCohesion=MatchMaker(matches=((mat_1,mat_1,100),
 (mat_1,mat_2,shearCohesion/2),(mat_2,mat_2,shearCohesion],

[Law2_ScGeom6D_CohFrictPhys_CohesionMoment(useIncrementalForm=True,always_use_moment_law=True,label='cohesiveLaw')]
),

GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8),
triax,
newton
]


###
###   APPLYING CONFINING PRESSURE   ###
###

triax.goal1=triax.goal2=triax.goal3=-9

if 1:
  while 1:
O.run(1000, True)
unb=unbalancedForce()
print ('unbalanced force:',unb,' mean stress: ',triax.meanStress," 
porosity:",triax.porosity,)
if unb error:

terminate called after throwing an instance of 'std::invalid_argument'
  what():  MatchMaker: no match for (0,1), and values required for algo 
computation 'avg' not specified.

-- 
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 #706962]: The problem of matchmaker

2023-06-13 Thread William
New question #706962 on Yade:
https://answers.launchpad.net/yade/+question/706962

When I add the 'MatchMaker' in the second engine, the error 'terminate called 
recursively' appears. I didn't find what's wrong with the code. If i delete the 
relavant code of matchmaker, it will run without the error. 

Ubuntu 21.10

> Here is the error:
terminate called recursively
terminate called recursively
terminate called recursively
terminate called after throwing an instance of 'std::invalid_argument'

>Here is my code. this code is divided into two parts. if you are going to run 
>it, you have to wait a moment (about 5 min) for finishing the first part and 
>the start the 2nd part. the error is in the second part.

from yade import pack, timing
#time calculation
startT = O.time
endT = O.time
timeSpent = endT - startT
time0 = time.time()


###   DEFINING VARIABLES AND MATERIALS   ###



nRead=readParamsFromTable(
num_spheres=2000,
key='_triax_base_',
unknownOk=True)


from yade.params import table
num_spheres=table.num_spheres
key=table.key

damp=0.7
stabilityThreshold=0.001

## Sphere material
Young=300e6
Density=2650
Poisson=0.3
compFricDegree = 0
finalFricDegree = 27
normalCohesion=100e4
shearCohesion=100e4
etaRoll=0.1
AvgRadius=0.0005

## wall material
WYoung=6000e6
WPoisson=0.5
WDensity=0
WFrictionAngle=0

# corners of the initial packing
size=0.05
mn,mx=Vector3(0,0,0),Vector3(size,size,size) 


## create materials for spheres and plates
O.materials.append(CohFrictMat(young = WYoung , poisson = WPoisson , 
frictionAngle = radians(WFrictionAngle) , density = WDensity,label='walls'))

mat1=CohFrictMat(young = Young , poisson = Poisson , frictionAngle = 
radians(compFricDegree) 
,normalCohesion=100,shearCohesion=100,isCohesive=True,alphaKr=0,alphaKtw=0,etaRoll=0.5,momentRotationLaw=True,
 density = Density,label='spheres1')
mat_1=O.materials.append(mat1)

mat2=CohFrictMat(young = Young , poisson = Poisson , frictionAngle = 
radians(compFricDegree) 
,normalCohesion=normalCohesion,shearCohesion=shearCohesion,isCohesive=True,alphaKr=0,alphaKtw=0,etaRoll=0.5,momentRotationLaw=True,
 density = Density,label='spheres2')
mat_2=O.materials.append(mat2)

print(mat_1,mat_2)


# mat_1=O.materials.append(CohFrictMat(young = Young , poisson = Poisson , 
frictionAngle = radians(compFricDegree) 
,normalCohesion=100,shearCohesion=100,isCohesive=True,alphaKr=0,alphaKtw=0,etaRoll=0.5,momentRotationLaw=True,
 density = Density,label='spheres1'))


# mat_2=O.materials.append(CohFrictMat(young = Young , poisson = Poisson , 
frictionAngle = radians(compFricDegree) 
,normalCohesion=normalCohesion,shearCohesion=shearCohesion,isCohesive=True,alphaKr=0,alphaKtw=0,etaRoll=0.5,momentRotationLaw=True,
 density = Density,label='spheres2'))

# O.materials.append(CohFrictMat(young = WYoung , poisson = WPoisson , 
frictionAngle = radians(WFrictionAngle) , density = WDensity,label='walls'))


## create walls around the packing
walls=aabbWalls([mn,mx],thickness=0,material='walls')
wallIds=O.bodies.append(walls)

## use a SpherePack object to generate a random loose particles packing
#psdSizes,psdCumm=[0.00099,0.00107,0.00116,0.00143,0.00163,0.00172,0.00209,0.00251,0.00424],[0.0,0.04,0.10,0.3,0.5,0.6,0.8,0.95,1]
sp=pack.SpherePack()
#sp.makeCloud(mn,mx,num=num_spheres,psdSizes=psdSizes,psdCumm=psdCumm,distributeMass=True,seed=1)
sp.makeCloud(mn,mx,rMean=AvgRadius,rRelFuzz=0,num=num_spheres,distributeMass=False,seed=1)
#sp.toSimulation(material='spheres1')
sp.toSimulation()


sphere1=[]
sphere2=[]

for b in O.bodies:
  if not isinstance(b.shape,Sphere): # change material only on spheres
continue
  if random.random() < 0.9:
b.mat = mat1
b.shape.color = (1,0,0)
sphere1.append(b.id)
  else:
b.mat = mat2
b.shape.color = (0,1,1)
sphere2.append(b.id)


###   DEFINING ENGINES   ###


triax=TriaxialStressController(
maxMultiplier=1.001,
finalMaxMultiplier=1.1,
thickness = 0,
stressMask = 7,
internalCompaction=True
)

newton=NewtonIntegrator(damping=damp)

O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
InteractionLoop(

[Ig2_Sphere_Sphere_ScGeom6D(),Ig2_Box_Sphere_ScGeom6D()],

[Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=False,setCohesionOnNewContacts=False,label="cohesiveIp")],

[Law2_ScGeom6D_CohFrictPhys_CohesionMoment(useIncrementalForm=True,always_use_moment_law=True,label='cohesiveLaw')]
),

GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8),
triax,
newton
]

###
###   APPLYING CONFINING PRESSURE   ###
###


Re: [Yade-users] [Question #706910]: Whether polyhedral particles are suitable for triaxial tests?

2023-06-11 Thread William
Question #706910 on Yade changed:
https://answers.launchpad.net/yade/+question/706910

Status: Answered => Solved

William 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


[Yade-users] [Question #706910]: Whether polyhedral particles are suitable for triaxial tests?

2023-06-06 Thread William
New question #706910 on Yade:
https://answers.launchpad.net/yade/+question/706910

Hi, everyone.
Irregular particles are often used in triaxial tests and spherical particles 
cannot meet our needs usually. The irregular shape particles are realized by 
clump method in Yade. However, whether polyhedral particles are suitable for 
triaxial tests?How computationally efficient is it and can we extract contact 
information or other important information from this method?
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 #706883]: The particle deposition rate is too slow

2023-06-03 Thread William
Question #706883 on Yade changed:
https://answers.launchpad.net/yade/+question/706883

Status: Answered => Solved

William confirmed that the question is solved:
Thanks Karol Brzezinski, 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 #706883]: The particle deposition rate is too slow

2023-06-03 Thread William
Question #706883 on Yade changed:
https://answers.launchpad.net/yade/+question/706883

Status: Answered => Open

William is still having a problem:
Hi, Karol. Thanks for your reply.

> you should change the timestep to be smaller than PWaveTimeStep() 
Thanks for your suggestion.

> Secondly, you can decrease the young modulus of walls.
I have decreased that. It didn't seem to work, still very slow.

> BTW do you take advantage of multithread computing (by simply running the 
> simulation with -j parameter)?
Yes, I used "yade -j 8 ..."

Please allow me to make an addition. When I delete the "blender" and
just sedimentate, the particle deposition rate  is acceptable. Thus, I
think the deposition rate might affected by the "blender".

-- 
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 #706883]: The particle deposition rate is too slow

2023-06-03 Thread William
New question #706883 on Yade:
https://answers.launchpad.net/yade/+question/706883

Hi, I want to pour the particles into a container and stir. However, the 
particle deposition rate is too slow. How can I accelerate the process?

Here is my script.

import random
import math
from yade import geom, pack, utils, plot, ymport, export
import numpy as np

#particle parameters
Density = 3000
FrictionAngle = 0
PoissonRatio = 0.5
Young = 300e6
Damp = 0.7
AvgRadius = 0.01
N_particles = 2

#Wall constants
WDensity = 3000
WFrictionAngle = 0.0
WPoissonRatio = 0.5
WYoung = 500e9


SphereMat = O.materials.append(FrictMat(young = Young, poisson = PoissonRatio, 
frictionAngle = radians(FrictionAngle), density = Density))
WallMat = O.materials.append(FrictMat(young = WYoung, poisson = WPoissonRatio, 
frictionAngle = radians(WFrictionAngle), density = WDensity))

### tank
center = (0, 0, 0)
diameter = 2
height = 1
cylinder = geom.facetCylinder(center=center, radius=diameter/2, height=height, 
segmentsNumber=80, wallMask=6,material=WallMat)
O.bodies.append(cylinder)

### funnel
# Define cylinder with funnel parameters
center2 = (0, 0, 1)
diameter2 = 0.4
height2 = 1

# create cylindrical body
cylinder2 = geom.facetCylinder(center=center2, radius=diameter2/2, 
height=height2, segmentsNumber=80, wallMask=4,material=WallMat)
O.bodies.append(cylinder2)

# Define cylinder with funnel parameters
center1 = (0,0,height2/2+1)
dBunker = 2
dOutput = 0.4
hBunker = 0
hOutput = 1
hPipe = 0

# create funnel as a bunker
funnel = geom.facetBunker(center=center1, dBunker=dBunker, dOutput=dOutput, 
hBunker=hBunker,hOutput=hOutput, hPipe=hPipe, segmentsNumber=80, 
wallMask=4,material=WallMat)
O.bodies.append(funnel)

# Define cylinder with funnel parameters
center3 = (0, 0, 4.5)
diameter3 = 2
height3 = 4

# create cylindrical body
cylinder3 = geom.facetCylinder(center=center3, radius=diameter3/2, 
height=height3, segmentsNumber=80, wallMask=4,material=WallMat)
O.bodies.append(cylinder3)

### blender
b1=[]
for i in range(60):
b1.append(O.bodies.append(sphere([0.707/2,0.707/2,i*0.02-0.48],0.04)))

for i in range(5):
for j in range(48):

b1.append(O.bodies.append(sphere([j*0.01+0.707/2,0.707/2,i*0.2-0.48],0.02)))

b1.append(O.bodies.append(sphere([-j*0.01+0.707/2,0.707/2,i*0.2-0.38],0.02)))

idclump1=O.bodies.clump(b1)
s1=O.bodies[-1]
s1.state.blockedDOFs='xyzXYZ'


b2=[]
for i in range(60):
b2.append(O.bodies.append(sphere([-0.707/2,-0.707/2,i*0.02-0.48],0.04)))

for i in range(5):
for j in range(48):

b2.append(O.bodies.append(sphere([-(j*0.01+0.707/2),-0.707/2,i*0.2-0.48],0.02)))

b2.append(O.bodies.append(sphere([-(-j*0.01+0.707/2),-0.707/2,i*0.2-0.38],0.02)))

idclump2=O.bodies.clump(b2)
s2=O.bodies[-1]
s2.state.blockedDOFs='xyzXYZ'


b3=[]
for i in range(60):
b3.append(O.bodies.append(sphere([0.707/2,-0.707/2,i*0.02-0.48],0.04)))

for i in range(5):
for j in range(48):

b3.append(O.bodies.append(sphere([(-j*0.01+0.707/2),-0.707/2,i*0.2-0.48],0.02)))

b3.append(O.bodies.append(sphere([(j*0.01+0.707/2),-0.707/2,i*0.2-0.38],0.02)))

idclump3=O.bodies.clump(b3)
s3=O.bodies[-1]
s3.state.blockedDOFs='xyzXYZ'


b4=[]
for i in range(60):
b4.append(O.bodies.append(sphere([-0.707/2,0.707/2,i*0.02-0.48],0.04)))

for i in range(5):
for j in range(48):

b4.append(O.bodies.append(sphere([-(-j*0.01+0.707/2),0.707/2,i*0.2-0.48],0.02)))

b4.append(O.bodies.append(sphere([-(j*0.01+0.707/2),0.707/2,i*0.2-0.38],0.02)))

idclump4=O.bodies.clump(b4)
s4=O.bodies[-1]
s4.state.blockedDOFs='xyzXYZ'

for b in O.bodies:
if isinstance(b.shape,Sphere):
b.shape.color=(0.,1.,0.)

### particle generation
mn = Vector3(0.6,-0.6,2.5)
mx = Vector3(-0.6,0.6,5.5)

sp = pack.SpherePack()
sp.makeCloud(mn,mx,num=N_particles,rMean=AvgRadius,rRelFuzz=0,distributeMass=False)
sp.toSimulation(material = SphereMat)



O.engines=[
   ForceResetter(),
   InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]),
   InteractionLoop(
  [Ig2_Sphere_Sphere_ScGeom(), Ig2_Facet_Sphere_ScGeom()],
  [Ip2_FrictMat_FrictMat_FrictPhys()],
  [Law2_ScGeom_FrictPhys_CundallStrack()]
   ),
   NewtonIntegrator(gravity=(0,0,-9.8),damping=0.7),
   
CombinedKinematicEngine(ids=[s1.id],comb=[RotationEngine(angularVelocity=1,rotateAroundZero=1,rotationAxis=(0,0,1),zeroPoint=(0.707/2,0.707/2,0))]),
   
CombinedKinematicEngine(ids=[s2.id],comb=[RotationEngine(angularVelocity=1,rotateAroundZero=1,rotationAxis=(0,0,1),zeroPoint=(-0.707/2,-0.707/2,0))]),
   
CombinedKinematicEngine(ids=[s3.id],comb=[RotationEngine(angularVelocity=-1,rotateAroundZero=1,rotationAxis=(0,0,1),zeroPoint=(0.707/2,-0.707/2,0))]),
   
CombinedKinematicEngine(ids=[s4.id],comb=[RotationEngine(angularVelocity=-1,rotateAroundZero=1,rotationAxis=(0,0,1),zeroPoint=(-0.707/2,0.707/2,0))])
]
O.dt=2*PWaveTimeStep()


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

Re: [Yade-users] [Question #699998]: How to simulate small-strain triaxial compression test

2023-04-12 Thread William
Question #68 on Yade changed:
https://answers.launchpad.net/yade/+question/68

William posted a new comment:
Hi, Leonard
I have read your code and the conversation. There are some questions still 
trouble me. I hope you or some other friends could help me.

> young=5e6 # contact stiffness
Many researchers adopt young=29e9 in their papers. However, the unbalanced 
force is nan and the mean stress is 0 all the time whlie I modfy this using 
your code.

> Decrease TriaxialStressController.max_vel 
How much should TriaxialStressController.max_vel  go down to?

Thanks,
William

-- 
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 #701666]: How to present the pore network model in flowengine

2022-08-22 Thread William Hoke
Question #701666 on Yade changed:
https://answers.launchpad.net/yade/+question/701666

William Hoke posted a new comment:
Hey,

Thanks for providing such informative and useful stuff about How to present the 
pore network model in a flow engine. Keep it up and provide more like this.
https://zarqaainteriorfitout.ae/sectors/retail-fit-out-companies-in-dubai/

Regards

William

-- 
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 #701792]: friction coefficient between different materials

2022-05-13 Thread William
New question #701792 on Yade:
https://answers.launchpad.net/yade/+question/701792

Hi, there are two kinds of sphere with different materials. The inner friction 
angle of the two kinds are 10 and 20 respectively. If the coefficient of 
friction between the two kinds of sphere is tan15, how could I set this value?

### Matrix
Density1 = 2600
PoissonRatio1 = 0.5
frictionangle1 = 10
Young1 = 10e7
Num1 = 9000

### Filler
Density2 = 3000
PoissonRatio2 = 0.5
frictionangle2 = 20
Young2 = 10e7
Num2 = 8

Damp = 0.25


#Packing variables
Size = 0.05
mn = Vector3(0, 0, 0)
mx = Vector3(Size, Size, Size)

mat1 = 
O.materials.append(FrictMat(young=Young1,poisson=PoissonRatio1,frictionAngle=radians(frictionangle1),density=Density1,label='Matrix'))
mat2 = 
O.materials.append(FrictMat(young=Young2,poisson=PoissonRatio2,frictionAngle=radians(frictionangle2),density=Density2,label='Filler'))

sp = pack.SpherePack()
sp.makeCloud(minCorner=mn, maxCorner=mx, rMean=0.0001, rRelFuzz=0, num=Num1, 
distributeMass = False, periodic = False)
sp.makeCloud(minCorner=mn, maxCorner=mx, rMean=0.0005, rRelFuzz=0, num=Num2, 
distributeMass = False, periodic = False)
sp.toSimulation()

for b in O.bodies:
if isinstance(b.shape,Sphere):
if b.shape.radius==0.0001:
b.shape.color = (0, 0, 1)
b.mat=O.materials[mat1]

for c in O.bodies:
if isinstance(c.shape,Sphere):
if c.shape.radius==0.0005:
c.shape.color = (0, 0, 1)
c.mat=O.materials[mat2]

-- 
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 #701783]: How to assign material properties?

2022-05-13 Thread William
Question #701783 on Yade changed:
https://answers.launchpad.net/yade/+question/701783

Status: Answered => Solved

William 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 #701783]: How to assign material properties?

2022-05-13 Thread William
Question #701783 on Yade changed:
https://answers.launchpad.net/yade/+question/701783

William posted a new comment:
Sorry for my vague expression.

The 3D model in primary view will disappear suddenly when the second
script is 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 #701783]: How to assign material properties?

2022-05-13 Thread William
Question #701783 on Yade changed:
https://answers.launchpad.net/yade/+question/701783

Description changed to:
Hi,
I have two scripts. They are used to generate a same sample and the difference 
of them is the way to assign properties for the material (sphere). The first 
program work properly but the second one dosen't.
I want to know what’s the matter with the second script.
Thanks.

The scripts are given below.

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

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


[Yade-users] [Question #701783]: How to assign material properties?

2022-05-13 Thread William
New question #701783 on Yade:
https://answers.launchpad.net/yade/+question/701783

Hi,
I have two scripts. They are used to generate a same sample and the difference 
of them is the way to assign properties for the material (sphere). The first 
program doesn't work properly but the second one dose.
I want to know what’s the matter with the first script.
Thanks.

The scripts are given below.


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

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


Re: [Yade-users] [Question #701783]: How to assign material properties?

2022-05-13 Thread William
Question #701783 on Yade changed:
https://answers.launchpad.net/yade/+question/701783

William posted a new comment:
the second script

#
### Defining parameters and variables 
#

### Matrix material
Density1 = 2600
PoissonRatio1 = 0.5
frictionangle1 = 10
Young1 = 10e7
Num1 = 9000
Damp = 0.25

#Wall constants
WDensity = 0
WFrictionAngle = 0.0
WPoissonRatio = 0.5
WYoung = 50e9

#Packing variables
Size = 0.05
mn = Vector3(0, 0, 0)
mx = Vector3(Size, Size, Size)

#Confining variables
ConfPress = -190e3
ConfPress1 = ConfPress*0.9  # Pre-Compressure


#import necessary packages
from yade import pack,plot,os,timing
import matplotlib; matplotlib.rc('axes',grid=True)
import pylab


### Sample Preparing ###



mat1 = 
O.materials.append(FrictMat(young=Young1,poisson=PoissonRatio1,frictionAngle=radians(frictionangle1),density=Density1,label='Matrix'))

#Create materials for spheres and plates
WallMat = O.materials.append(FrictMat(young = WYoung , poisson = WPoissonRatio 
, frictionAngle = radians(WFrictionAngle) , density = WDensity))
wallIds = O.bodies.append(aabbWalls([mn,mx] , thickness = 0.001 , material = 
WallMat))

sp = pack.SpherePack()
sp.makeCloud(minCorner=mn, maxCorner=mx, rMean=0.0001, rRelFuzz=0, num=Num1)
sp.toSimulation()

for b in O.bodies:
if isinstance(b.shape,Sphere):
if b.shape.radius==0.0001:
b.shape.color = (0, 0, 1)
b.mat=O.materials[mat1]

O.usesTimeStepper=True

O.trackEnerty=True

#
# Defining triaxil engines ##
#

###First step: Compression###
triax1 = TriaxialStressController(
thickness = 0.001,
internalCompaction = False,
stressMask = 7,
computeStressStrainInterval = 10,
goal1 = ConfPress1,
goal2 = ConfPress1,
goal3 = ConfPress1,
)

newton = NewtonIntegrator(damping = Damp)

### engine ###
O.engines = [
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom(), Ig2_Box_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys()],
[Law2_ScGeom_FrictPhys_CundallStrack()]
),
GlobalStiffnessTimeStepper(active = 1 , timeStepUpdateInterval = 100 , 
timestepSafetyCoefficient = 0.8 , defaultDt = 4*utils.PWaveTimeStep()),
triax1,
newton,
PyRunner(realPeriod = 10 , command = 'checkUnbalanced()' , label = 
'check'),
]

# Simulation stop conditions defination
def checkUnbalanced():
unb = unbalancedForce()
mStress = (triax1.stress(triax1.wall_right_id)[0] + 
triax1.stress(triax1.wall_top_id)[1] + triax1.stress(triax1.wall_front_id)[2])/3
if unb<0.001 and abs(ConfPress1-mStress)/abs(ConfPress1)<0.01:
print('--1 Finished--')
print('--Time:'+ str((time.time()-time0)/60) + 
'min--')
O.save('1.yade.bz2')
O.pause()

-- 
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 #701783]: How to assign material properties?

2022-05-13 Thread William
Question #701783 on Yade changed:
https://answers.launchpad.net/yade/+question/701783

William posted a new comment:
the first script

#
### Defining parameters and variables ###
#

### Matrix
Density1 = 2600
PoissonRatio1 = 0.5
frictionangle1 = 10
Young1 = 10e7
Num1 = 9000
Damp = 0.25

#Wall constants
WDensity = 0
WFrictionAngle = 0.0
WPoissonRatio = 0.5
WYoung = 50e9

#Packing variables
Size = 0.05
mn = Vector3(0, 0, 0)
mx = Vector3(Size, Size, Size)

#Confining variables
ConfPress = -190e3
ConfPress1 = ConfPress*0.9  # Pre-Compressure


#import necessary packages
from yade import pack,plot,os,timing
import matplotlib; matplotlib.rc('axes',grid=True)
import pylab


### Sample Preparing 
##


#Create materials for spheres and plates
WallMat = O.materials.append(FrictMat(young = WYoung , poisson = WPoissonRatio 
, frictionAngle = radians(WFrictionAngle) , density = WDensity))
wallIds = O.bodies.append(aabbWalls([mn,mx] , thickness = 0.001 , material = 
WallMat))

SphereMat = 
O.materials.append(FrictMat(young=Young1,poisson=PoissonRatio1,frictionAngle=radians(frictionangle1),density=Density1,label='Matrix'))
sp = pack.SpherePack()
sp.makeCloud(minCorner=mn, maxCorner=mx, rMean=0.0001, rRelFuzz=0, num=Num1)
sp.toSimulation(material = SphereMat)


O.usesTimeStepper=True

O.trackEnerty=True

#
# Defining triaxil engines ##
#

###First step: Compression###
triax1 = TriaxialStressController(
thickness = 0.001,
internalCompaction = False,
stressMask = 7,
computeStressStrainInterval = 10,
goal1 = ConfPress1,
goal2 = ConfPress1,
goal3 = ConfPress1,
)

newton = NewtonIntegrator(damping = Damp)

### engine ###
O.engines = [
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom(), Ig2_Box_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys()],
[Law2_ScGeom_FrictPhys_CundallStrack()]
),
GlobalStiffnessTimeStepper(active = 1 , timeStepUpdateInterval = 100 , 
timestepSafetyCoefficient = 0.8 , defaultDt = 4*utils.PWaveTimeStep()),
triax1,
newton,
PyRunner(realPeriod = 10 , command = 'checkUnbalanced()' , label = 
'check'),
]

# Simulation stop conditions defination
def checkUnbalanced():
unb = unbalancedForce()
mStress = (triax1.stress(triax1.wall_right_id)[0] + 
triax1.stress(triax1.wall_top_id)[1] + triax1.stress(triax1.wall_front_id)[2])/3

if unb<0.001 and abs(ConfPress1-mStress)/abs(ConfPress1)<0.01:
print('--1 Finished--')
print('--Time:'+ str((time.time()-time0)/60) + 
'min--')
O.save('1.yade.bz2')
O.pause()

-- 
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 #701737]: How to apply stress?

2022-05-10 Thread William
Question #701737 on Yade changed:
https://answers.launchpad.net/yade/+question/701737

William posted a new comment:
Hi, Jan
Thanks for your answer.

###
stress = 1e7 # max stress, Pa
rate = 1e8 # stress rate, Pa/s
def applyForce():
f = O.time * rate # linear increase, can be whatever else
f = min(f,stress) # not to excess max stress
O.forces.setPermF(Boxid,(0,0,f))

O.engines = [
...
PyRunner(iterPeriod=1,command="applyForce()"),
]
###

> stress = 1e7 # max stress, Pa
Here what we apply is 'stress(Pa)' rather than 'force(N)'?

-- 
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 #701737]: How to apply stress?

2022-05-10 Thread William
New question #701737 on Yade:
https://answers.launchpad.net/yade/+question/701737

Hi, I want to know how to apply stress on the box. I used to apply a force 
directly but I don’t think it’s correct. For example, 100kPa should be applied 
in the z direction and I write next code(1e7N = 10Pa * 10m * 10m)

Boxid = O.bodies.append(box((0,0,0),(10,10,1)))
O.forces.setPermF(Boxid,(0,0,1e7))

The force is loaded instantaneously which cause the whole process is not 
quasi-static. Is there any loading method to overcome the problem? Could I 
control the loading rate to keep the whole process quasi-static?


-- 
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 #685892]: Importing Yade in other Python applications

2019-11-15 Thread William Chevremont
Question #685892 on Yade changed:
https://answers.launchpad.net/yade/+question/685892

Status: Open => Answered

William Chevremont proposed the following answer:
Hi,

Did you compile yade using python3 version?

According to this line :

  print 'Yade version: %s%s'%(version,debugbuild)

it seems not.

William

On 15/11/2019 11:03, Rong Zhao wrote:
> New question #685892 on Yade:
> https://answers.launchpad.net/yade/+question/685892
>
> Hi, I have a problem with importing Yade in other Python applications. The 
> Yade documentation provides the easiest way to import the Yade in other 
> Python applications.  I try the provided method to create a symbolic link as 
> explained below.
>
> =
> $ cd /home/zhaorong/Desktop/
> $ ln -s /home/zhaorong/myYade/build/bins/yade-2019.01a 
> /home/zhaorong/Desktop/yadeimport.py
> =
>
> Then, I tried in Python2 and it succeeded.
> ==
> zhaorong@ubuntu64:~/Desktop$ python2
> Python 2.7.16 (default, Oct  7 2019, 17:36:04)
> [GCC 8.3.0] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
>>>> import sys
>>>> sys.path.append('/home/zhaorong/Desktop/')
>>>> from yadeimport import *
> ===
>
> But when I used the same method in python3, it failed.
> ===
> zhaorong@ubuntu64:~/Desktop$ python3
> Python 3.7.3 (default, Oct  7 2019, 12:56:13)
> [GCC 8.3.0] on linux
> Type "help", "copyright", "credits" or "license" for more information.
>>>> import sys
>>>> sys.path.append('/home/zhaorong/Desktop/')
>>>> from yadeimport import *
> Traceback (most recent call last):
>File "", line 1, in 
>File "/home/zhaorong/Desktop/yadeimport.py", line 71
>  print 'Yade version: %s%s'%(version,debugbuild)
>   ^
> SyntaxError: invalid syntax
> ===
>
> I want to know whether the Yade is imported to Python2 applications only, not 
>  Python3 applications.
>
> 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 #685214]: ElectrostaticPhys: equation and constants

2019-10-16 Thread William Chevremont
Question #685214 on Yade changed:
https://answers.launchpad.net/yade/+question/685214

William Chevremont proposed the following answer:
Hi,

As Bruno said, this was a work in progress and this will be deleted
soon, as a more general framework will replace this stuff (generic
lubricated interaction with potential between particles). For more
informations, see branch "potential" on gitlab
(pkg/dem/LubricationWithPotential.{cpp,hpp})

Better is to not use this contact law for now. I hope the new branch to
be released within 2 weeks (after tests).

William.

-- 
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 #684839]: PDFEngine

2019-10-09 Thread William Chèvremont

Hi,

PDFEngine is a recent feature. Your yade version is too old. You need to 
update it if you want to use this engine.



when I run this, here is the error:

Welcome*to Yade 2018.02b *
TCP python prompt on localhost:9000, auth cookie `udeyas'
XMLRPC info provider on http://localhost:21000


Best Regards,

William


On 09/10/2019 01:32, nobody wrote:

New question #684839 on Yade:
https://answers.launchpad.net/yade/+question/684839

Hi All,

I want to use the PDFEngine in my simulation, and I found an answer, but it 
seems not to work.


here is my MWE:

from yade import pack, plot, export
import math
O.bodies.append(geom.facetBox((.5,.5,.5),(.5,.5,.5),wallMask=31))
sp=pack.SpherePack()
sp.makeCloud((0,0,0),(1,1,1),rMean=.05,rRelFuzz=.5)
sp.toSimulation()
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys()],
[Law2_ScGeom_FrictPhys_CundallStrack()]
),
PyRunner(command='checkUnbalanced()',realPeriod=2),
#PyRunner(command='addPlotData()',iterPeriod=100),
#PyRunner(command='subbox()',iterPeriod=100),
#PyRunner(command='stress_export()',iterPeriod=1000),
#PyRunner(command='get_component()',iterPeriod=1000),
NewtonIntegrator(gravity=(0,0,-9.81),damping=0.4),
#PDFEngine(filename="PDF.txt",iterPeriod= 1000),
PDFEngine(filename="PDF.txt", iterPeriod=1000, 
numDiscretizeAnglePhi=20,numDiscretizeAngleTheta=20)
]
O.dt=.5*PWaveTimeStep()
print(len(O.bodies))
def checkUnbalanced():
if unbalancedForce()<.0001:
O.pause()
#plot.saveDataTxt('bbb.txt')
def addPlotData():
plot.addData(i=O.iter,unbalanced=unbalancedForce())
#plot.plots={'i':('unbalanced')}
#plot.plot()

###
when I run this, here is the error:

Welcome to Yade 2018.02b
TCP python prompt on localhost:9000, auth cookie `udeyas'
XMLRPC info provider on http://localhost:21000
Running script test.py
Traceback (most recent call last):
   File "/usr/bin/yade", line 182, in runScript
 execfile(script,globals())
   File "test.py", line 22, in 
 PDFEngine(filename="PDF.txt", iterPeriod=1000, 
numDiscretizeAnglePhi=20,numDiscretizeAngleTheta=20)
NameError: name 'PDFEngine' is not defined



https://answers.launchpad.net/yade/+question/682859  #3,

I did as they said, but the error said that I didn't define the name.

best,
yong


___
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 #682859]: how to calculate anisotropy of contact normal vector

2019-08-14 Thread William Chevremont
Question #682859 on Yade changed:
https://answers.launchpad.net/yade/+question/682859

Status: Open => Answered

William Chevremont proposed the following answer:
Hi,

PDFEngine do that for you. It compute the average of quantities like
stress, distance, and probability of interaction for each orientation.
For now, it works only for spherical particles.

Just add 
PDFEngine(filename="PDF.txt", iterPeriod=1000, 
numDiscretizeAnglePhi=9,numDiscretizeAngleTheta=13, label="PDFRecorder")

in your engines. This will output a PDF.txt containing the density
functions, with column name like NormalStress_xy(theta, phi)

Formulas: 
x = r sin theta sin phi
y = r cos phi
z = r sin theta cos phi

This is a work in progress (not well documented for now) but it work as
is.

-- 
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 #681105]: particle position

2019-05-28 Thread William Chèvremont
Question #681105 on Yade changed:
https://answers.launchpad.net/yade/+question/681105

William Chèvremont proposed the following answer:
You can read vtk data from matlab, using this function. You need first
to compile it using mex:

/* Convert four uint8 to float64 value */

#include "mex.h"
#include "matrix.h"
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
 
#include 

mxArray* readData(const char*);

/* The gateway function */
void mexFunction(int nlhs, mxArray *plhs[],
 int nrhs, const mxArray *prhs[])
{
/* variable declarations here */
if(nrhs != 1)
{
mexErrMsgIdAndTxt("VtkUncompresserToolBox:TooMuchInput","One input 
required");
}

if(!mxIsChar(prhs[0]))
{
mexErrMsgIdAndTxt("VtkUncompresserToolBox:BadInput","Input must be a 
filename");
}

int buflen = mxGetNumberOfElements(prhs[0]) + 1;
char* buf = (char*)mxCalloc(buflen, sizeof(char));

/* Copy the string data from string_array_ptr and place it into buf. */ 
if (mxGetString(prhs[0], buf, buflen) != 0)
mexErrMsgIdAndTxt( "VtkUncompresserToolBox:invalidStringArray",
"Could not convert string data.");

plhs[0] = readData(buf);

/* code here */
}
//
// DumpXMLFile - report on the contents of an XML or legacy vtk file
//  Usage: DumpXMLFile XMLFile1 XMLFile2 ...
// where
// XMLFile is a vtk XML file of type .vtu, .vtp, .vts, .vtr,
// .vti, .vto 
//

 
template vtkDataSet *ReadAnXMLFile(const char*fileName)
{
  vtkSmartPointer reader =
vtkSmartPointer::New();
  reader->SetFileName(fileName);
  reader->Update();
  reader->GetOutput()->Register(reader);
  return vtkDataSet::SafeDownCast(reader->GetOutput());
}
 
mxArray* readData(const char* filename)
{

  // Process each file on the command line

vtkDataSet *dataSet;
std::string extension =
  vtksys::SystemTools::GetFilenameLastExtension(filename);
// Dispatch based on the file extension
if (extension == ".vtu")
{
dataSet = ReadAnXMLFile (filename);
}
else if (extension == ".vtp")
{
dataSet = ReadAnXMLFile (filename);
}
else if (extension == ".vts")
{
dataSet = ReadAnXMLFile (filename);
}
else if (extension == ".vtr")
{
dataSet = ReadAnXMLFile (filename);
}
else if (extension == ".vti")
{
dataSet = ReadAnXMLFile (filename);
}
else if (extension == ".vto")
{
dataSet = ReadAnXMLFile (filename);
}
else if (extension == ".vtk")
{
dataSet = ReadAnXMLFile (filename);
}
else
{
  mexErrMsgIdAndTxt("VtkUncompresserToolBox:UnknownExt","Invalid 
extension");
  return 0;
}

const char *fieldnames[5] = 
{"Points","CellCount","PointData","CellData","FieldData"};
 

int numberOfCells = dataSet->GetNumberOfCells();
int numberOfPoints = dataSet->GetNumberOfPoints();

mxArray* data = mxCreateStructMatrix(1,1,5,fieldnames);

mxArray* points = mxCreateDoubleMatrix(numberOfPoints,3,mxREAL);
double* pointsPtr = mxGetPr(points);
double pos[3];

for(int i=0;iGetPoint(i,pos);
pointsPtr[i] = pos[0];
pointsPtr[i+numberOfPoints] = pos[1];
pointsPtr[i+numberOfPoints*2] = pos[2];
}

mxSetFieldByNumber(data,0,0,points);

//mxSetFieldByNumber(data,0,0,mxCreateDoubleScalar(numberOfPoints));
mxSetFieldByNumber(data,0,1,mxCreateDoubleScalar(numberOfCells));

mxArray *PD = mxCreateStructMatrix(1,1,0,0);
vtkPointData *pd = dataSet->GetPointData();
if (pd)
{
for (int i = 0; i < pd->GetNumberOfArrays(); i++)
{
int id = mxAddField(PD,pd->GetArrayName(i));

vtkAbstractArray* d = pd->GetAbstractArray(i);

if(d && d->GetDataType() == VTK_DOUBLE)
{
mxArray* dat = 
mxCreateDoubleMatrix(d->GetNumberOfTuples(),d->GetNumberOfComponents(),mxREAL);
double *datPtr = mxGetPr(dat);
double *vtkDat = (double*)d->GetVoidPointer(0);

for(int j=0;jGetNumberOfComponents();j++)
{
for(int k=0;kGetNumberOfTuples();k++)
{
datPtr[k+j*d->GetNumberOfTuples()] = 
vtkDat[j+k*d->GetNumberOfComponents()];
}
}

mxSetFieldByNumber(PD,0,id,dat);
 

Re: [Yade-users] [Question #681105]: particle position

2019-05-28 Thread William Chèvremont
Question #681105 on Yade changed:
https://answers.launchpad.net/yade/+question/681105

Status: Open => Answered

William Chèvremont proposed the following answer:
Hi,

Have a look at VTK recorder https://yade-
dem.org/doc/yade.wrapper.html?highlight=vtk#yade.wrapper.VTKRecorder.recorders

recorder "sphere" record position and radius of all particles.

William

-- 
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 #679748]: Error with lubrication law solver

2019-04-04 Thread William Chèvremont
Question #679748 on Yade changed:
https://answers.launchpad.net/yade/+question/679748

Status: Open => Answered

William Chèvremont proposed the following answer:
Hi,

Yes and no. In fact, you have two subsystem: one when the two spheres
interacts only with lubrication, and one when you have lubrication and
contact.

The "0" method solve the previous system then look if the results is in
the right condition. If not, it divide the timestep by two and do it
again on the two half timesteps, which sometimes leads to high number of
recursions. The "1" and "2" solve directly the whole compound system by
iterative methods, and the "3" is like the "0", but it predict the
transition, thus, no recursion.

Then , the "3" is most powerful in term of calculation, because it's
always a fixed number of computations.

-- 
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 #679748]: Error with lubrication law solver

2019-04-03 Thread William Chèvremont
Question #679748 on Yade changed:
https://answers.launchpad.net/yade/+question/679748

Status: Open => Answered

William Chèvremont proposed the following answer:
Hi,

There are multiple solver for this contact law, but in certain case, I
found that some can't give accurate results, just because of the
problem's stiffness. The iteratives solvers (dichotomy and Newton-
Rafson) are introduced for formulations without exact solutions.

Actually, the last solver (3, dimentionless exact solution with contact
prediction) will always give results, without any sub-stepping and/or
iterations, and should be used by default. Note that it doesn't
implement the theta-method and so, is full-implicit formulation.

-- 
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 #676053]: Export stress contour of interaction between polyhedra and spheres

2018-11-12 Thread William Chevremont
Question #676053 on Yade changed:
https://answers.launchpad.net/yade/+question/676053

Status: Open => Answered

William Chevremont proposed the following answer:
Hi,

Full script is useless because of very specific stuff done inside, this
will confuse more than explain.

The only modification to be done is in the O.engines part. My looks
like:

engines = [ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=1.5, 
label="aabb")],verletDist=-0.1,allowBiggerThanPeriod=False),
InteractionLoop(

[Ig2_Sphere_Sphere_ScGeom6D(interactionDetectionFactor=1.5,label="Ig2")],
[Ip2_FrictMat_FrictMat_LubricationPhys(eta=m_viscosity,eps=m_epsilon)],
[Law2_ScGeom_ImplicitLubricationPhys(activateNormalLubrication=True,

activateTangencialLubrication=True,

activateTwistLubrication=True,

activateRollLubrication=True,
debug=True,
resolution = 3,
theta = 1,
SolutionTol = 
1.e-8,
MaxIter = 50)]
),
NewtonIntegrator(damping=0.),

GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8,
 defaultDt=1e-6,label="TimeStepper",viscEl=False),
PDFEngine(filename="PDF.txt", virtPeriod=.1)
];

The output file (PDF.txt) is then post-proceeded with MatLab in order to
plot the stress tensor component magnitude as a function of the position
(theta, phi).

-- 
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 #676053]: Export stress contour of interaction between polyhedra and spheres

2018-11-11 Thread Chevremont William
Question #676053 on Yade changed:
https://answers.launchpad.net/yade/+question/676053

Status: Open => Answered

Chevremont William proposed the following answer:
Hi,
Very recently, I introduce PDFEngine, that seems to make what you want, but I 
tested it only for Sphere-Sphere interaction (maybe need extra development to 
handle polyhedra-sphere interaction). It give you global stress repartition, 
distance between objects and relative velocity.

To use it, you just have to add

PDFEngine(filename="PDF.txt", virtPeriod=.1)

to your engines. It'll write "PDF.txt" with column like
normalStress_xx(theta, phi). You can change angle discretization (see
options [1])

Be sure to update yade before using it (committed only 3 days ago)

[1] https://yade-
dem.org/doc/yade.wrapper.html?highlight=pdfengine#yade.wrapper.PDFEngine

-- 
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 #667236]: Distant interactions with aabbEnlargeFactor & interactionDetectionFactor

2018-03-26 Thread William Chèvremont
Question #667236 on Yade changed:
https://answers.launchpad.net/yade/+question/667236

Status: Open => Answered

William Chèvremont proposed the following answer:
Hi Nicolas,

What you are looking about is lubricated contact law. It's still under
development but you can already use it.

Here is an example of collider/interaction loop:

InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=1.5, 
label="aabb")],verletDist=-0.1,allowBiggerThanPeriod=False),
InteractionLoop(

[Ig2_Sphere_Sphere_ScGeom6D(interactionDetectionFactor=1.5,label="Ig2")],

[Ip2_ElastMat_ElastMat_LubricationPhys(eta=m_viscosity,eps=m_roughness)],
[Law2_ScGeom_ImplicitLubricationPhys(activateNormalLubrication=True,

activateTangencialLubrication=True,

activateTwistLubrication=False,

activateRollLubrication=False,
debug=False)]
),

For instance, the lubrication force is not calculated further than one
particle radius. So, having a factor of more than 2 is useless.

-- 
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 #665387]: Compile error JointedCohesiveFrictionalPM

2018-03-13 Thread William Chèvremont
Question #665387 on Yade changed:
https://answers.launchpad.net/yade/+question/665387

William Chèvremont posted a new comment:
Solved by adding #include  into
JointedCohesiveFrictionalpm.hpp, Thanks Robert.

-- 
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 #665387]: Compile error JointedCohesiveFrictionalPM

2018-03-08 Thread Chevremont William
New question #665387 on Yade:
https://answers.launchpad.net/yade/+question/665387

Hi,

I've just updated the source code of yade using git pull and I get this compile 
error, comming from code added 2 days ago:

/media/datas/Yade2/trunk/pkg/dem/JointedCohesiveFrictionalPM.cpp: In member 
function ‘void 
Ip2_JCFpmMat_JCFpmMat_JCFpmPhys::distributeCrossSectionsWeibull(boost::shared_ptr,
 Real, Real)’:
/media/datas/Yade2/trunk/pkg/dem/JointedCohesiveFrictionalPM.cpp:600:7: error: 
‘random_device’ is not a member of ‘std’
  std::random_device rd;
   ^
/media/datas/Yade2/trunk/pkg/dem/JointedCohesiveFrictionalPM.cpp:600:7: note: 
suggested alternative: ‘random_shuffle’
  std::random_device rd;
   ^
   random_shuffle
/media/datas/Yade2/trunk/pkg/dem/JointedCohesiveFrictionalPM.cpp:601:7: error: 
‘mt19937’ is not a member of ‘std’
  std::mt19937 e2(rd());
   ^~~
/media/datas/Yade2/trunk/pkg/dem/JointedCohesiveFrictionalPM.cpp:602:7: error: 
‘weibull_distribution’ is not a member of ‘std’
  std::weibull_distribution 
weibullDistribution(xSectionWeibullShapeParameter, 
xSectionWeibullScaleParameter);
   ^~~~
/media/datas/Yade2/trunk/pkg/dem/JointedCohesiveFrictionalPM.cpp:602:7: note: 
suggested alternative: ‘uniform_int_distribution’
  std::weibull_distribution 
weibullDistribution(xSectionWeibullShapeParameter, 
xSectionWeibullScaleParameter);
   ^~~~
   uniform_int_distribution
/media/datas/Yade2/trunk/pkg/dem/JointedCohesiveFrictionalPM.cpp:602:32: error: 
expected primary-expression before ‘>’ token
  std::weibull_distribution 
weibullDistribution(xSectionWeibullShapeParameter, 
xSectionWeibullScaleParameter);
^
/media/datas/Yade2/trunk/pkg/dem/JointedCohesiveFrictionalPM.cpp:602:34: error: 
‘weibullDistribution’ was not declared in this scope
  std::weibull_distribution 
weibullDistribution(xSectionWeibullShapeParameter, 
xSectionWeibullScaleParameter);
  ^~~
/media/datas/Yade2/trunk/pkg/dem/JointedCohesiveFrictionalPM.cpp:602:34: note: 
suggested alternative: ‘weibullCutOffMin’
  std::weibull_distribution 
weibullDistribution(xSectionWeibullShapeParameter, 
xSectionWeibullScaleParameter);
  ^~~
  weibullCutOffMin
/media/datas/Yade2/trunk/pkg/dem/JointedCohesiveFrictionalPM.cpp:603:40: error: 
‘e2’ was not declared in this scope
  Real correction = weibullDistribution(e2);
^~
/media/datas/Yade2/trunk/pkg/dem/JointedCohesiveFrictionalPM.cpp:603:40: note: 
suggested alternative: ‘R2’
  Real correction = weibullDistribution(e2);
^~
R2

-- 
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 #657790]: Electrostatic material

2017-09-19 Thread Chevremont William
Question #657790 on Yade changed:
https://answers.launchpad.net/yade/+question/657790

Status: Open => Answered

Chevremont William proposed the following answer:
Hi,

This material has been created to create a potential between two spheres
(only work on spheres for instance). It's already usable as is, but to
enable long range interaction between particles, you have to increase
aabbEnlargeFactor and interactionDetectionFactor.

It implements the DLVO potential.

Here is a test file that plot the potential between the two spheres:

#!/usr/local/bin/yade-trunk -x
# -*- coding: utf-8 -*-
# encoding: utf-8


from yade import plot
import math

# ElectrostaticMat
mat = O.materials.append(ElectrostaticMat(density=1000,young=1e7,poisson=0.3))

# add two spheres
O.bodies.append([
sphere(center=(0,0,0),radius=6e-6,material=mat,fixed=True),
sphere(center=(1.3e-5,0,0),radius=6e-6,material=mat, fixed=True)]);

electro_interaction = Law2_ScGeom_ElectrostaticPhys();
#[Bo1_Box_Aabb(),Bo1_Sphere_Aabb(),Bo1_Facet_Aabb(),Bo1_Wall_Aabb()]
# Set engines
O.engines=[ForceResetter(),
   InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=10)]),
   
InteractionLoop([Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=10)],
   
[Ip2_ElectrostaticMat_ElectrostaticMat_ElectrostaticPhys(DebyeLength=1e-7,Z=5e-12,A=1e-19)],
   [electro_interaction]),
   NewtonIntegrator(damping=0.2, gravity=(0,0,0)),
   PyRunner(command='upGraph()',iterPeriod=1000)]


O.dt=1e-5;

O.saveTmp();

O.bodies[1].state.vel = (-1e-7,0,0);

#plot.plots={'d':('F0','F1','F2'), 't': ('d')}
plot.plots={'d':('F0')}
plot.plot();

def upGraph():
p1 = O.bodies[0].state.pos
p2 = O.bodies[1].state.pos

dist = math.sqrt((p1[0]-p2[0])**2 + (p1[1]-p2[1])**2 + 
(p1[2]-p2[2])**2) - O.bodies[0].shape.radius - O.bodies[1].shape.radius

plot.addData(
d=dist/6e-6,
F0=O.forces.f(1)[0],
F1=O.forces.f(1)[1],
F2=O.forces.f(1)[2],
t=O.time);

if O.forces.f(1)[0] < -1.e-10:
O.bodies[1].state.pos = (1.2e-5,0,0);

if O.forces.f(1)[0] > 0.:
O.dt = 5e-7;

if dist/6e-6 < -0.01:
   O.stopAtIter = O.iter +1

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