==== 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 &scalarIDMap); virtual void fillIndependentElementFieldID(std::map &scalarIDMap); virtual void fillIndependentMaterialVectorialFieldID(std::map &vectorIDMap); virtual void fillIndependentElementVectorialFieldID(std::map &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 &scalarIDMap) const { MechanicalContactMaterial::fillIndependentMaterialFieldID(scalarIDMap); scalarIDMap[CF_NORMAL_GAP.getName()]=VISUSCALAR_CONTACT; scalarIDMap[CF_CONTACT_PRESSURE.getName()]=VISUSCALAR_CONTACT; } void ContactInteraction::fillIndependentElementFieldID(std::map &scalarIDMap) { if(static_cast(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. Les champs matérielles disponibles précédemment dans la combobox ont été placés dans les différents matériaux ad hoc. J'ai fait mon possible ... il se peut qu'il y ait des erreurs, étant donné que les noms repris dans "NatureIDs" ne sont pas toujours très claires ! Grâce à une adaptation des macros disponibles dans "NatureIDs", tous les champs de la combo box sont ajoutés avec leur nom étendu et non leur nom "clé" pour les récupérer dans le singleton NatureIDList. La combox box contenant l'ensemble des champs scalaires ou vectorielles est trié par ordre alphabétique et est terminé par l'indicatif unknown. ==== 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. {{ :commit:2015:scalarfieldconfiguration.png?600 |}} 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. Les champs scalaires nodaux sont repris sous l'intitulé "Nodal" (Field1D(ScalarNatureID, VariantID) dans Metafor). Puisque ce sont des Field1D(ScalarNatureID, VariantID), leur nom étendu est une combinaison de la Nature et du Variant, ce qui donne un nom incompréhensible avec la combinaison des deux. Dès lors, j'ai renommé en dur chaque champ Field1D(ScalarNatureID, VariantID) affiché dans le ScalarWidget. ===== 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 : {{ :commit:2015:cont2externalforcex0000.png?600 |}} ==== 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 : {{ :commit:2015:temperaturegradient0000.png?600 |}} Tout comme les champs scalaires extrapolées et moyennées, l'interprétation peut être difficile ! ==== 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 {{ :commit:2015:cont2contactpressure0000.png?600 |}} Exemple du cisaillement de contact {{ :commit:2015:cont2contactshear0000.png?600 |}} Attention, nous affichons dans la visualisation uniquement le nœud esclave de contact. Les nœuds maitre de contact ne sont pas affichées jusqu'à présent pour les champs vectorielles et les champs scalaires. Faites attention dans le cas du contact en défo-défo (simple ou double passe) et en auto-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. {{ :commit:2015:scalarfieldconfiguration.png?600 |}} 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. Les champs vectorielles nodaux sont repris sous l'intitulé "Nodal" (Field3D(Vect3NatureID, VariantID) dans Metafor). Puisque ce sont des Field3D(Vect3NatureID, VariantID), leur nom étendu est une combinaison de la Nature et du Variant, ce qui donne un nom incompréhensible avec la combinaison des deux. Dès lors, j'ai renommé en dur chaque champ Field3D(Vect3NatureID, VariantID) affiché dans le ScalarWidget. ==== 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.). {{ :commit:2015:cont2scalarbarconfiguration.png?600 |}} ===== 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]: --- //[[gwautelet@ulg.ac.be|Gaëtan WAUTELET]] 2015/08/09//