Hello all,
We (my tutor and I) would like to study faults with DEM. We are interested in applying time- and temperature dependent contact laws. We understand we need to create our own pair_style. This one will be as the Hertz law. But friction coefficient (and maybe some other parameters) depends on time and temperature.
1. How is it possible to put the temperature of a particle into the new contact law ?
Concerning the time dependent law we would like to consider the healing. If 2 particles are in contact the friction coefficient is increasing. And when those particles are not anymore in contact the friction coefficient comes back to a constant. Because of this the coefficient depends on the pairing and on the time in contact.
2. How is it possible to put a coefficient into the contact law in function of the pairing (and not as a global parameter) ?
3. How is it possible to compute the time 2 particles are in contact ?
Thanks in advance
Alexandre Sac--Morane
mschramm | Tue, 03/30/2021 - 17:31
Some answers
1) You will need to add a few properties so that temperature can be referenced. Temperature is used in the granular bond code as a bond break condition (https://github.com/schrummy14/LIGGGHTS_Flexible_Fibers/blob/master/src/b...).
2) How do you want this coefficient to act then? Is it something that needs to be calculated each time step?
3) Add extra history values. See the add_history_value function in tangential_model_history.h or normal_model_thornton_ning.h.
Once the two spheres come into contact, you would need to obtain the time step and add this number to the old timestep. This would allow the model to work even if you change the time step midway through your simulations.
AlexSM | Wed, 03/31/2021 - 11:52
Thanks for your answer
Thanks
1) If I understand well, to get temperature is mainly "fix_Temp". And of course I need other properties.
2) We would like this coefficient increases at each time. For example following a logarithmic or a linear law.
A draft algorithm could be :
There is a table. At line I and column J we have the time contact between particles I and J (variable named dt_ij).
During a current step:
- the friction coefficient is computed µ_ij = f(dt_ij) where f is the evolution law (linear, logarithmic or other)
- the contact law between I and J is computed (depending on µ_ij)
- particles I and J move
- if particles I and J are again in contact the table is updated and dt_ij = dt_ij + dt (dt is step time).
If not dt_ij is updated at 0
3) Thanks for this help. I have found this (https://www.cfdem.com/forums/adding-new-contact-history-array-liggghts-code) for the use of this function. And what is the function to get the current time from a contact_law.h or contact_law.cpp ? Is it something like "find_fix_property()"?
Alexandre
mschramm | Tue, 04/13/2021 - 20:07
current time
Hello,
for the current time you would want
#include "update.h"
and to get the current time
double curTime = update->get_cur_time();
Mateus Kostka | Tue, 04/13/2021 - 13:03
Parameterisation and contact model
Hello everybody,
The adjustment of the parameterization is an intresting approach.
I plan to add parameters to implement a contact model, based on diffusion equations.
How is it possible to implement these parameters and to use them in my new contact model.
I would like to update the hertzian contact model.
How can I access my new script in liggghts, to calculate the contact with the new equations and parameters?
I plan to insert the parameters in global_properies.h and update the script normal_model_hertz.h
But how can I use my updated scripts in liggghts public?
Does I need to changer other scripts as well?
Best regards and thank you.
Mateus Kostka
AlexSM | Wed, 04/14/2021 - 14:36
Create your own liggght
Hello,
The way I found to add parameters is to create my own version of Liggghts. I changed the src code (create a normal_model_hertz_own.h and add parameters in atom.h for example). After that you need to compile again (make auto) and then normally it works.
Files you need to change depend on what you want to do
Alexandre