Table of Contents
Commit 2015-08-09
Ceci est un commit de visualisation. Le code source a juste été compilé sur chaque station et la batterie n'a pas été lancée.
Modifications - Scalar Field
Champ disponible
J'ai établi une procédure pour aller récupérer les champs matérielles ou élémentaires disponibles dans chaque interaction/élément repris dans le drawable list de la fenêtre BWIN.
Désormais, nous n'avons plus tous les champs exotiques dans les combox box des champs vectorielles ou scalaires.
Dans la structure du code, vous avez les fonctions d'interface suivantes dans les interactions et/ou les éléments pour ajouter les champs scalaires disponibles ou les champs vectorielles disponibles.
virtual void fillIndependentMaterialFieldID(std::map<std::string, VisualisationScalarID> &scalarIDMap); virtual void fillIndependentElementFieldID(std::map<std::string, VisualisationScalarID> &scalarIDMap); virtual void fillIndependentMaterialVectorialFieldID(std::map<std::string, VisualisationVectorID> &vectorIDMap); virtual void fillIndependentElementVectorialFieldID(std::map<std::string, VisualisationVectorID> &vectorIDMap);
Malheureusement, les éléments de Metafor sont beaucoup trop riches et nous sommes forcés de passer par les éléments pour récupérer le matériau. En fait, il n'est pas possible de récupérer le matériau via le shortcut dans la classe FieldApplicator. Il n'existe pas d'interaction pour les éléments de ressort, de coque, … etc mais juste des matériaux différents et des éléments différents. J'ai du me calquer sur la structure existante pour ajouter cette fonctionnalité, ce qui n'a pas toujours très aisé !
La propriété élémentaire se distincte de la propriété matérielle par le fait qu'elle est disponible dans l'élément peu importe le matériau associé. Par exemple, pour les éléments de contact, nous avons l'aire de contact et pour les éléments de volume, nous avons l'aspect ratio.
Voici quelques exemples pour les matériaux de contact :
void NormalMechanicalContactMaterial::fillIndependentMaterialFieldID(std::map<ScalarNatureID*, VisualisationScalarID> &scalarIDMap) const { MechanicalContactMaterial::fillIndependentMaterialFieldID(scalarIDMap); scalarIDMap[CF_NORMAL_GAP.getName()]=VISUSCALAR_CONTACT; scalarIDMap[CF_CONTACT_PRESSURE.getName()]=VISUSCALAR_CONTACT; }
void ContactInteraction::fillIndependentElementFieldID(std::map<ScalarNatureID*, VisualisationScalarID> &scalarIDMap) { if(static_cast<ContactElShcuts *>(getShortcuts())->getAreaInContact()!=AIC_NO) { scalarIDMap[CF_SLAVE_NODE_AREA.getName()]=VISUSCALAR_CONTACT; } }
Il faut constater que l'on ajoute un Tag (“VISUSCALAR_CONTACT”) pour chaque option scalaire ou vectorielle ajoutée dans la map. Ce tag est jusqu'à présent unique afin de pouvoir filtrer les champs scalaires ou vectorielles par la suite.
Configuration des champs disponibles
Il est possible en cliquant sur le bouton “More” du panneau ScalarWidget de configurer sa ComboBox en affichant uniquement les champs que l'on désire voir.
Les modifications sont opérées uniquement lorsque l'on a cliqué sur le bouton “Ok” de la boite de dialogue et elles sont sauvegardés dans notre vizwin.conf.
Modifications - Vector Field
J'ai ajouté la possibilité d'afficher le vecteur totale ou une de ses composantes selon X, Y, Z dans le VectorValuesWidget.
Par exemple, la force extérieure selon l'axe X :
Champ vectoriel interne
Il est possible d'afficher des champs internes vectorielles sur le maillage. Ces champs sont obtenus en extrapolant les composantes des vecteurs des points d'intégration (Points de Gauss) vers les nœuds et en effectuant une somme vectorielle et en divisant par le nombre de contribution des éléments en chaque nœud.
Exemple du gradient thermique :
Champ vectoriel contact
J'ai ajouté la possibilité de représenter des grandeurs de contact sous forme vectorielles. Il n'est plus obligatoire de les affichés via les forces externes dans Metafor !
Exemple de la pression de contact
Exemple du cisaillement de contact
Configuration des champs disponibles
Il est possible en cliquant sur le bouton “More” du panneau VectorWidget de configurer sa ComboBox en affichant uniquement les champs que l'on désire voir.
Les modifications sont opérées uniquement lorsque l'on a cliqué sur le bouton “Ok” de la boite de dialogue et elles sont sauvegardés dans notre vizwin.conf.
Modifications - Scalar Bar
- J'ai ajouté la possibilité de renommer le nom affiché de la scalarBar. Par défaut, il prend la valeur du champ sélectionné de la combox box. Tant que l'on ne change pas le champ affiché de la combo box, nous pouvons modifié le nom affiché de la scalarBar et le sauvegarder dans le vizwin.conf.
- J'ai ajouté la possibilité d'ajouter des unités en plus du nom affiché de la scalarBar.
- J'ai ajouté la possibilité de multiplier toutes les valeurs numériques affichées par un facteur d'échelle (Valeur numérique VTK = valeur numérique Metafor x facteur d'échelle.).
Divers
J'ai remis certaines options de visualisation par défaut :
- affichage des masses concentrées sous forme de pixel.
- pas d'affichage de la lumière spéculaire sur tous les drawables.
- pas d'affichage des outils de contact.
Fichiers ajoutés/supprimés
[a]:mtDrawables/CFVectors.cpp [a]:mtDrawables/IFVectors.cpp [a]:mtDrawables/Vectors.cpp [a]:mtDrawables/CFVectors.h [a]:mtDrawables/IFVectors.h [a]:mtDrawables/Vectors.h [a]:mtDrawables/WithVectorialField.h [a]:mtDrawables/WithVectorialFieldValuesLabel.h [a]:mtKernel/VisualisationNatureIDs.cpp [a]:mtKernel/VisualisationNatureIDs.h [a]:mtQt/ScalarFieldConfigurationDialog.h [a]:mtQt/VectorFieldConfigurationDialog.h [a]:mtQt/ScalarFieldConfigurationDialog.ui [a]:mtQt/VectorFieldConfigurationDialog.ui [a]:mtQt/ScalarFieldConfigurationDialog.cpp [a]:mtQt/VectorFieldConfigurationDialog.cpp [r]:
Tests ajoutés/supprimés
[r]: [a]:
— Gaëtan WAUTELET 2015/08/09