← Back to team overview

yade-dev team mailing list archive

Re: Constitutive laws

 

So, I have a proposal, introducing two new attributes :

One would be "LawFunctor.status" in ... LawFunctor. Here is a possible c++ implementation in LawFunctor.hpp ((bool, status,0,,"boolean expressing the status of the considered LawFunctor. The use is safe if status=True (law validated, support might come from mailing list..), whereas for status=False, no warranty exists that the law is validated and/or maintained/used by anyone else. A warning, see InteractionLoop.Law2warning, is displayed in this case.)) The idea is to put in InteractionLoop something like (please apologize possible syntax mistakes) :
if (LawFunctor->status==False)
cout/cerr << "You're using a non validated constitutive law ! Please consider using another LawFunctor with status = True (e.g. Law2_ScGeom_FrictPhys_CundallStrack), unless you are 100% autonom";

This warning would display at each iteration, so that users necessarily see it. To not bother "100% autonom" people, here comes the second attribute : InteractionLoop.Law2warning ! Wich has such a c++ implementation, in InteractionLoop.hpp, for example : ((bool,Law2warning,1,,"Autonom people that use constitutive laws with status=0 may set this attribute to False to get rid of related warnings."))


In this framework :
- For what concerns the devs, we get rid of the wiki page. Devs would only have to take care of defining correctly the value of their status, rather than painting in green or red in the wiki page. All other informations such as description, publications, example scripts, should be already in the sphinx doc (If not, such infos would probably be neither on the wiki). There would be no risk of deprecation of the wiki page compared to c++ code. If new laws are commited, it is easy to check which status value is defined in the commit. - For users, the warning of https://www.yade-dem.org/doc/user.html#law2-functor-s would be rephrased, to put attention of users on LawFunctor.status, rather than pointing towards the wiki page. Users that did not read nor this warning, nor the doc of their Law and pick unfortunately a "red" Law2 would be bored by the warning, and quickly would use e.g. Law2_ScGeom_FrictPhys_CundallStrack, before asking "useless" questions.

Among the drawbacks, I confess that there is no synthetic presentation with such design, compared with the coloured table of the wiki. But maybe this could be generated automaticcaly, grepping for "status,1" in the code ? And I consider in any case, that an up-to-date not so synthetic information is better that a deprecated synthetic one...

Tell me what you think !

Jérôme




Le 26/05/2014 11:06, Bruno Chareyre a écrit :
2/ is very unlikely to happen. More realistic is to translate the table in *.rst. I was secretely hopping that you would be volunteer for that. :)
Besides, I'm open to suggestions on how to improve.
B


On 26/05/14 10:19, Jérôme Duriez wrote:
Hi,

Many thanks to the guy who in fact updated Law2_ScGeom6D_NormalInelasticityPhys_NormalInelasticity for me ! I had only to add the name of the example script... So, I edited my one (or even two) lines in the wiki page.

I do not know how much you were serious about your 2/ proposition, Bruno (this could be a project for a computer science student ?), but let us hope that this day will come. Otherwise I have no doubt that the destiny of this page is to be most of the time deprecated. We just had another example with Law2_ScGeom_ViscElPhys_Basic, with guys that are nevertheless "quite" involved in Yade... (there is an euphemism there)

Jérôme


Le 23/05/2014 13:21, Bruno Chareyre a écrit :
Hi Jerome,
Thank you for suggestions. First, I'm glad you recognize that the functors table is less puzzling than the inheritance diagram (or let's say, they have different purpose). I saw many situations where users would come with a very specific question, then we realize that they picked a wrong contact law (bugged and/or unmaintained, L3 to name one). Frustrating for users, wasted time for everyone. It was the reason to write this table. Another possible solution would be to reduce the total number of functors. For instance eliminate from the source code every law which results at least partly from code duplication, and/or has no example script, and/or is not documented, and/or has no known maintainer.

Now, your message is twofold: 1/ where this content should be, and 2/ what this content should be. 1/ If someone could re-type this wiki page in rst format, he would have his karma increased. The right place to put it is in place of this warning, which currently links to the wiki page:
https://yade-dem.org/doc/user.html#law2-functor-s
Obviously, writing the table in rst will not escape the need to put information in two different places: class documentation and user manual (actually it may be easier to modify a table in a wiki page compared to rst+github, but still I would like the rst option). So:

2/ If someone could write a program that would heuristicaly fill the columns of the table by browsing bug reports, frequency and authors of commits to each law, and bibliographic reference mentionned in the class documentation (warning: references to original papers like Cundall1979 should not appear in the "publications" column, it needs a semantic analysis of the docstrings), his karma would not only explode, I would also pay him. Before this happens, laws will be orphan until somebody will vouch for them and update the documentation (thank you for updating NormalInelasticity, now you know you need to put an example script).


Thank you for raising this need for updates. It actually reminded me to ping Anton and Raphaël for Law2_ScGeom_ViscElPhys_Basic, which still looks red.
Could you please guys do something?

Thanks

Bruno


On 23/05/14 10:09, Jérôme Duriez wrote:
Hi,

This wiki page makes me puzzled since I stumbled upon it. Is there really a consensus to consider this page as really usefull, and *efficient* ?

Surely, it could be useful for new users that discover the diagram of https://www.yade-dem.org/doc/yade.wrapper.html#lawfunctor...

But, I tend to answer "no" about the relevance. For me, sphinx doc is the best interface between users and the code (the best place to put documentation !) *and the most easy to maintain*. Each change in the sphinx doc follows the git procedure, with possible control from all developpers and history. Probably such collaborative work features are also be possible with the wiki, but why would we sum / mix the tools ? For example, the authors of the wiki page designated Law2_ScGeom6D_NormalInelasticityPhys_NormalInelasticity as orphan and colored it in red... Sure, it is up to class authors (me, here..) to correct such things, but I wrote a description, with publications and example script in (*).*Why should I/we re-type it in the wiki page ?*

Let us focus on sphinx doc, so that it corresponds to / explains as best as possible the c++ code. This is already a great challenge, maybe there is no need to have to maintain wiki pages about the same subjects ?

Jérôme

(*) : https://www.yade-dem.org/doc/yade.wrapper.html#yade.wrapper.Law2_ScGeom6D_NormalInelasticityPhys_NormalInelasticity


Le 22/05/2014 18:24, Christian Jakob a écrit :
Hi,


I updated the wiki for constitutive laws [1].
Please check for mistakes and add missing informations (examples, dev. status, active users, ...).

I detected a duplicate in law description in [2] and [3], which are exactly the same. Can someone fix that, please?


Regards,

Christian


[1] https://yade-dem.org/wiki/ConstitutiveLaws#Constitutive_laws
[2] https://yade-dem.org/doc/yade.wrapper.html?highlight=cohesion#yade.wrapper.Law2_ScGeom6D_CohFrictPhys_CohesionMoment [3] https://yade-dem.org/doc/yade.wrapper.html?highlight=cohesion#yade.wrapper.Law2_ScGeom6D_InelastCohFrictPhys_CohesionMoment


_______________________________________________
Mailing list: https://launchpad.net/~yade-dev
Post to     : yade-dev@xxxxxxxxxxxxxxxxxxx
Unsubscribe : https://launchpad.net/~yade-dev
More help   : https://help.launchpad.net/ListHelp


--
Jérôme Duriez
Post-Doctorant UJF
Laboratoire 3SR
Bureau E139 - 04.56.52.86.30


_______________________________________________
Mailing list:https://launchpad.net/~yade-dev
Post to     :yade-dev@xxxxxxxxxxxxxxxxxxx
Unsubscribe :https://launchpad.net/~yade-dev
More help   :https://help.launchpad.net/ListHelp


--
_______________
Bruno Chareyre
Associate Professor
ENSE³ - Grenoble INP
Lab. 3SR
BP 53
38041 Grenoble cedex 9
Tél : +33 4 56 52 86 21
Fax : +33 4 76 82 70 43
________________


_______________________________________________
Mailing list:https://launchpad.net/~yade-dev
Post to     :yade-dev@xxxxxxxxxxxxxxxxxxx
Unsubscribe :https://launchpad.net/~yade-dev
More help   :https://help.launchpad.net/ListHelp

--
Jérôme Duriez
Post-Doctorant UJF
Laboratoire 3SR
Bureau E139 - 04.56.52.86.30


_______________________________________________
Mailing list:https://launchpad.net/~yade-dev
Post to     :yade-dev@xxxxxxxxxxxxxxxxxxx
Unsubscribe :https://launchpad.net/~yade-dev
More help   :https://help.launchpad.net/ListHelp


--
_______________
Bruno Chareyre
Associate Professor
ENSE³ - Grenoble INP
Lab. 3SR
BP 53
38041 Grenoble cedex 9
Tél : +33 4 56 52 86 21
Fax : +33 4 76 82 70 43
________________


_______________________________________________
Mailing list: https://launchpad.net/~yade-dev
Post to     : yade-dev@xxxxxxxxxxxxxxxxxxx
Unsubscribe : https://launchpad.net/~yade-dev
More help   : https://help.launchpad.net/ListHelp

--
Jérôme Duriez
Post-Doctorant UJF
Laboratoire 3SR
Bureau E139 - 04.56.52.86.30


Follow ups

References