Méthode par défaut de calcul du résidu + divers
Historiquement, le calcul du résidu est fondé sur la méthode 1, dont la normalisation induit une division par le nombre de degrés de liberté. Cette méthode était valide dans le cadre de tests de validation numérique, de tests de la littérature, à déplacements imposé, sur des maillages de quelques dizaines de DDLs (ce qui était accessible à l'époque),…
Malheureusement, cette méthode de normalisation du résidu devient de plus en plus fausse au fur et à mesure que le nombre de degrés de liberté augmente. De longue date, des alterantives ont été implémentées, dont la méthode 4 qui, pour moi, est la méthode via laquelle la normalisation du résidu est la plus indépendante des conditions de calcul (maillage, charge, évolution temporelle,…).
Ayant du, récemment, débugger un test biomedical de Cedric (énormément de DDLs), dont le problème était une fois de plus la méthode de calcul du résidu, j'ai décidé de modifier le défaut …
A partir de ce commit, la méthode de calcul du résidu par défaut est la méthode 4 : $$Residual = \frac{||FreeResidual||}{Rmin}$$
Soit une normalisation :
voir la page Managing N.-R. Iterations pour plus d'info sur les méthodes de calcul du résidu.
Le frein qui nous a toujours retenu de changer la méthode de calcul du résidu par défaut est la batterie. En effet, changer ce défaut induite :
La valeur par défaut de la tolérance est restée inchangée à 1.0e-4.
La méthode 4 induisant un calcul de résidu plus restrictif, c'est la seconde option qui a été majoritairement choisie. Pour certains gros tests pour lesquels la tolérance avait été durcie pour contre balancer la division par nbDofs (j'ai vu des 1.0-8, 1.0e-10 même 1.0e-12), j'ai adapté la tolérance pour que ca passe (je n'ai pas étudié en détails toutes les conséquences sur tous les cas tests modifiés, juste le comportement global).
Afin de ne pas perturber certaines méthodes très sensibles (XFEM, Thixo, ….) et ne pas perdre trop de temps de temps à débugger, j'ai réimposé la méthode 1 dans une 50aine de cas tests (en indiquant que c'est pour raison de continuité)
Au final, plus de 500 tests qui ont des différences sur les TSC_STP et plus de 1000 sur les TSC_ITE (souvent à l'augmentation), mais comme c'est pour un meilleur respect de l'équilibre, je considère que c'est pour un mieux…
Au final, la hausse du temps de calcul total des batteries reste limitée (sur les quelques derniers commits):
Revision | 2929 | 2932 | 2934 | 2940 | 2943 |
---|---|---|---|---|---|
Author | papeleux | boman | wautelet | wautelet | NEW |
Date | 2017-05-17 | 2017-05-19 | 2017-05-28 | 2017-06-07 | future |
CPU-Linux64-gcc.txt | 149276.9 | 103752.9 | 84805.7 | 102454.4 | 99818.0 |
CPU-Linux64-clang.txt | 64591.2 | 65007.6 | 64466.3 | 94025.0 | 68993.1 |
CPU-Linux64-icc.txt | 142815.4 | 102337.4 | 146745.5 | 151232.3 | 111865.3 |
CPU-Windows-msvc.txt | 94457.5 | 80004.0 | 81810.9 | 123648.1 | 84797.6 |
Correction de AIC_USER : méthode d'imposition de l'AIC par l'utilisateur Ajout de 2 tests utilisant le AIC_USER
Ajout d'un “mime type” aux fichiers *.py dans les fichiers “Verif.html” de manière à ce que, si votre navigateur est configuré correctement, les fichiers *.py soient ouverts avec EditPadPro (ou tout autre éditeur de texte).
Ajout d'un script timers2CSV.py traduisant les fichiers timers au format CSV, calculant le temps du “reste” (ce qui n'est pas mesuré) et écrit dans un ordre logique…
A utiliser avec l'utiliraire “PostProLoop”
le tests mtExactDataTransfer_CGAL.tests.disk3D_LocMort déconne encore et toujours sous gaston (une fois il marche, une fois pas). Faudra un jour regarder ca …
A toolbox\timers2CSV.py
A apps\qs\slidingRd2dEpeUserAreaInContact.py A apps\qs\slidingRd3dUserAreaInContact.py
— Luc Papeleux 2017/06/16