GeoOperator
Il est actuellement difficile de faire des chargements complexes. La combinaison de plusieurs “loading” successifs sur le même DOF ne conserve que le dernier loading.
Dans la cadre du fluotournage, on veut imposer à la fois la rotation des mollettes sur elles même mais aussi autour du tube (lorsque l'on calcule dans le référentiel du tube).
J'ai donc implémenté un loading spécifique qui fait 2 rotations successives. Les LoadingOperator
ne sont pas adaptés à un chargement multiple. Certain point étant d'ailleurs déplacés plusieurs fois (vu la méthodologie de “bouclage” sur les points), il fallait s'assurer que l'on n'additionne pas les déplacements. Pour changer, j'ai décidé d'utiliser les opérateur de transformation géométriques. La méthodologie du loading se trouve ainsi un peu modifiée :
PointHashSet
(contenant soit des meshPoints, soit des points géométriques selon que la cible est maillée ou non) est rempli en début de calcul.
A terme, j'ai l'idée de combiner un nombre indéfini de TransformationOperator
ajoutés dans un loading. Pour ce faire, il faut implémenter une évolution temporelle (via driver) des amplitudes des transformations.
Avant d'ajouter les tests de fluotournage, j'ai ajouté 2 tests utilisant RotativeLoading2 : 2D : apps/qs/rotation2.py 3D : apps/qs/rotation3.py
Conjointement, je me suis rendu compte que les commandes RotativeLoading selon 1 seule composante ne fonctionnent plus. J'ai supprimé la possibilité (elle n'était pas utilisée à bon escient).
Ajout d'une fonction define2
n'utilisant pas la fonction getClone
sur le Loading (les operateurs de transformation ainsi que les axes
ne pouvant être clonés. Après discussion avec Romain, la fonction define2
devrait remplacer define
.
Pour débugger des problèmes de Cedric, j'ai compilé VTK7.1 sous windows (VS2012) et adapté les cmake en conséquences (⇒ updatez les libs!!!). Qui plus est, les captures d'image posait problème à cause des packages nécessaires à gl2ps non linké avec Metafor ⇒ j'ai ajouté ces libs au link (sous windows uniquement, vu que ces libs ne sont pas dispo dans les repository de base sous linux ⇒ Romain, faut qu'on voit ce qu'on fait …)
correction d'un bug de “cast” dans boneRepairTools :
ynew=smooth(Y,nb_zones/2.) -> ynew=smooth(Y,nb_zones/2) xnew=smooth(X,nb_zones/2.) -> ynew=smooth(X,nb_zones/2) znew=smooth(Z,nb_zones/2.) -> ynew=smooth(Z,nb_zones/2)
VTK7.1 étant un peu plus stricte, il ne permet plus l'utilisation d'un double à la place d'un entier (le 2 eme paramètre de smooth
devant être un entier).
Réécriture de la fonction OneParameterRuptureCriterion
pour un peu plus de clarté de lecture…
Se pose aussi la question sur le critère de COCKROFT, si la contrainte à prendre en compte est la première contrainte principale (Traction ou compression) ou si c'est la contrainte principale la plus grande (priorité à la traction et plus petite compression ???!!!!)
Modification des tests de détection de l'appartenance d'un noeud à une maille :
GeoPointValueExtractor
à la frontière fluide/solide, il se peut que la détection commence par la maille fluide…Gestion de la mémoire des points des axes par RefCounted
Ajout d'une fonction double getMaxOfAbsValue() const;
permettant de récupérer la première valeur propre (en amplitude, quel que soit son signe)
A oo_meta/mtFEMBase/RotativeLoading2.h/cpp
A oo_meta/apps/rotation2.py A oo_meta/apps/rotation3.py A
— Luc Papeleux 2017/07/24