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.
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.
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.
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 :
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 :
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
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.
J'ai remis certaines options de visualisation par défaut :
[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]:
[r]: [a]:
— Gaëtan WAUTELET 2015/08/09