← Back to team overview

yade-users team mailing list archive

Re: hertz-mindlin with viscous damping

 

On 30 June 2011 13:51, Christian Jakob <jakob@xxxxxxxxxxxxxxxxxxx> wrote:

> Dear Chiara,
>
> Thank you for your answer.
>
> 1.) Your script does not work on my yade version (bzr2877)...
>
Sorry, the script is out of date. I will update it asap. However, in case
you wanted to start using it right now, you are free to follow suggestions
below (I will ignore warnings for the moment).

Replace this: O.bodies[1].state.blockedDOFs=['rx','ry','rz'] # block
particles rotations
with: O.bodies[1].state.blockedDOFs='XYZ' # block particles rotations

Replace this:
contactLaw.betan=0.5 # normal direction
contactLaw.betas=0.0 # shear direction
contactLaw.useDamping=True
contactLaw.betas=0.5 # line 81
with:
damping.betan=0.5 # normal direction
damping.betas=0.0 # shear direction
damping.useDamping=True
damping.betas=0.5 # line 81



>
> me@debian:~$ yade /home/me/YADE/yade-source-and-**
> examples/scripts/Damping_HM.py
> Welcome to Yade bzr2877
> TCP python prompt on localhost:9000, auth cookie `akdeuy'
> XMLRPC info provider on http://localhost:21000
> Running script /home/me/YADE/yade-source-and-**
> examples/scripts/Damping_HM.py
> /home/me/YADE/lib/yade-**bzr2877/py/yade/utils.py:210: DeprecationWarning:
> dynamic=False is deprecated, use fixed=True instead
>  _commonBodySetup(b,V,**geomInert,material,pos=center,**
> dynamic=dynamic,fixed=fixed)
> /home/me/YADE/lib/yade-**bzr2877/py/yade/utils.py:195: DeprecationWarning:
> dynamic=True is deprecated, use fixed=False instead
>  _commonBodySetup(b,V,Vector3(**geomInert,geomInert,geomInert)**
> ,material,pos=center,dynamic=**dynamic,fixed=fixed)
> Traceback (most recent call last):
>  File "/home/me/YADE/bin/yade-**bzr2877", line 183, in runScript
>    execfile(script,globals())
>  File "/home/me/YADE/yade-source-**and-examples/scripts/Damping_**HM.py",
> line 28, in <module>
>    O.bodies[1].state.blockedDOFs=**['rx','ry','rz'] # block particles
> rotations
>



> ArgumentError: Python argument types in
>    None.None(State, list)
> did not match C++ signature:
>    None(State {lvalue}, std::string)
> [[ ^L clears screen, ^U kills line. F12 controller, F11 3d view, F10 both,
> F9 generator, F8 plot. ]]
> Yade [1]:
>
>
>
> 2.) Nethertheless I tried these two methods you suggested:
>
> 2.1.) WAY 1 ... viscoelastic material with unknows parameters tc, en, es
> ...
> (from /examples/ring2d/**ringSimpleViscoelastic.py)
>
> tc = 0.001      #???
> en = 0.3        #???
> es = 0.3        #???
> params=utils.**getViscoelasticFromSpheresInte**raction(tc,en,es)
> O.materials.append(ViscElMat(**frictionAngle=1,**params)) # **params sets
> kn, cn, ks, cs
> #...
>                [Ip2_ViscElMat_ViscElMat_**ViscElPhys()],
>                [Law2_ScGeom_ViscElPhys_Basic(**)],
> #...
>
> -> works, but I do not know how to verify tc, en and es ... if you know,
> let me know ;)
>
Sergei, ping :-) The coefficients of restitution, en and es, depend on the
type of material you use. This law is not of Hertzian type though.

>
> 2.2.) WAY 2 ... frictional material with beta_n and beta_s
> (from /scripts/Damping_HM.py)
>
> O.materials.append(FrictMat(**young=2e7,poisson=.3,density=**
> 2700,frictionAngle=1))
> #...
>                [Ip2_FrictMat_FrictMat_**MindlinPhys(label='damping')],
>                [Law2_ScGeom_MindlinPhys_**Mindlin(label='contactLaw')]
> #...
> contactLaw.betan=0.5 # normal direction
> contactLaw.betas=0.0 # shear direction
> contactLaw.useDamping=True
>
>
> -> does not work ...
>
> me@debian:~/YADE/my-yade-**projects$ yade two-spheres_way2.py
> Welcome to Yade bzr2877
> TCP python prompt on localhost:9000, auth cookie `sakeyc'
> XMLRPC info provider on http://localhost:21000
> Running script two-spheres_way2.py
> WARN: Law2_ScGeom_MindlinPhys_**Mindlin.betan is deprecated, use
> Law2_ScGeom_MindlinPhys_**Mindlin._beta_parameters_of_**
> Ip2_FrictMat_FrictMat_**MindlinPhys instead.
> Traceback (most recent call last):
>  File "/home/me/YADE/bin/yade-**bzr2877", line 183, in runScript
>    execfile(script,globals())
>  File "two-spheres_way2.py", line 55, in <module>
>    contactLaw.betan=0.5 # normal direction
> ValueError: Law2_ScGeom_MindlinPhys_**Mindlin.betan is deprecated;
> throwing exception requested. Reason: !Moved to MindlinPhys, where the value
> is assigned by the appropriate Ip2 functor.
> [[ ^L clears screen, ^U kills line. F12 controller, F11 3d view, F10 both,
> F9 generator, F8 plot. ]]
> Yade [1]:
>
See above.
Cheers,
Chiara

>
>
> Regards,
>
> Christian
>
> Zitat von Chiara Modenese <c.modenese@xxxxxxxxx>:
>
>
>  Dear Christian,
>>
>> viscous damping is already implemented in the current version of
>> HertzMindlin contact law. Damping can be applied in both normal and shear
>> directions. Actually, in the code you can choose between two different
>> forms
>> of damping:
>> 1) the first one refers to the solution of a damped linear spring-mass
>> system where damping coefficient is a fraction of the critical damping
>> coefficient for the system. The current contact stiffness is employed in
>> such a case (since the law is non-linear, a tangential contact stiffness
>> can
>> be computed each time step).
>> 2) the second one is based on a numerical solution provided by Tsuji et
>> al.
>> (1992) which can be used to relate damping coefficient and coefficient of
>> restitution when non-linear spring is involved.
>>
>> Up to you which method to choose, though to me the second option gives a
>> better physical interpretation of the phenomena.
>>
>> The script in .../yade/scripts/Damping_HM.py should provide you a basic
>> example to start with. Let me know if you need further help with that.
>>
>>  Chiara
>>
>>
>>
>>
>> On 29 June 2011 09:14, Christian Jakob <jakob@xxxxxxxxxxxxxxxxxxx> wrote:
>>
>>  Hello again,
>>>
>>> I need to create a material with Hertz-Mindlin contact model (given
>>> shear modulus and poisson ratio) with viscous damping in normal and
>>> shear direction. The question is: How can I do this?
>>>
>>> I can create a viscous elastic material with linear contact model ...
>>>
>>> O.materials.append(ViscElMat(**density=2700,kn=1e8,ks=1e8,**
>>> frictionAngle=1,cn=0.002,cs=0.**001))
>>>
>>> and I can create an inelastic material with Hertz model, but without
>>> viscous damping ....
>>>
>>> O.materials.append(**NormalInelasticMat(young=2e7,**
>>> poisson=0.3,frictionAngle=1,**coeff_dech=1))
>>>
>>> if I try to combine, an error occured:
>>>
>>> O.materials.append(**NormalInelasticMat(young=2e7,**
>>> poisson=0.3,frictionAngle=1,**coeff_dech=1,cn=0.002,cs=0.**001))
>>>
>>> "AttributeError: No such attribute: cn"
>>>
>>>
>>> Regards,
>>>
>>> Christian Jakob
>>> --
>>> This message was sent from Launchpad by
>>> Christian Jakob (https://launchpad.net/~jakob-**ifgt<https://launchpad.net/%7Ejakob-ifgt>
>>> )
>>> using the "Contact this team" link on the yade-users team page
>>> (https://launchpad.net/~yade-**users<https://launchpad.net/%7Eyade-users>
>>> ).
>>> For more information see
>>> https://help.launchpad.net/**YourAccount/ContactingPeople<https://help.launchpad.net/YourAccount/ContactingPeople>
>>>
>>> ______________________________**_________________
>>> Mailing list: https://launchpad.net/~yade-**users<https://launchpad.net/%7Eyade-users>
>>> Post to     : yade-users@xxxxxxxxxxxxxxxxxxx
>>> Unsubscribe : https://launchpad.net/~yade-**users<https://launchpad.net/%7Eyade-users>
>>> More help   : https://help.launchpad.net/**ListHelp<https://help.launchpad.net/ListHelp>
>>>
>>>
>>
>
>
>

References