Table of Contents
Commit 2017-07-24
- RotativeLoading2 : embryon de loading via
GeoOperator
- VTK7.1 : compilation Metafor avec VTK7.1 sous windows
- Divers
RotativeLoading2 :
RotativeLoading2
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 :
- Unordered List Item Pour s'assurer que chaque point ne subit que 1 fois les opérations de transformation, un
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. - Le calcul de l'amplitude se fait comme habituellement à travers les drivers temporels
- La configuration précédente est récupérée comme état initial des transformations (INCREMENTAL_LOAD)
- Les 2 operateurs de Rotation sont successivement appliqués (Initialisation, Execution, Finalisation)
- Un resetShcut de la target est appelé (pour remettre à 0 toutes les variables internes du code)
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
RotativeLoading
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).
LoadingSet
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
.
Divers :
VTK7.1
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 …)
geniso
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).
OneParameterRuptureCriterion
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 ???!!!!)
GeoPointValueExtractor
Modification des tests de détection de l'appartenance d'un noeud à une maille :
- En couplage Fluide Structure, Marco importe des mailles (fluides) qui n'ont pas d'élément dans Metafor. Or si on génère un
GeoPointValueExtractor
à la frontière fluide/solide, il se peut que la détection commence par la maille fluide…
mtGeo::Axe
Gestion de la mémoire des points des axes par RefCounted
mtMath::Vect3
Ajout d'une fonction double getMaxOfAbsValue() const;
permettant de récupérer la première valeur propre (en amplitude, quel que soit son signe)
Fichiers ajoutés/supprimés
A oo_meta/mtFEMBase/RotativeLoading2.h/cpp
Tests ajoutés/supprimés
A oo_meta/apps/rotation2.py A oo_meta/apps/rotation3.py A
— Luc Papeleux 2017/07/24