Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2015:08_09

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
commit:2015:08_09 [2015/08/09 15:37] – [Modifications - Vector Field] wauteletcommit:2015:08_09 [2016/03/30 15:23] (current) – external edit 127.0.0.1
Line 13: Line 13:
 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.   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.  
 <code> <code>
-    virtual void fillIndependentMaterialFieldID(std::map<ScalarNatureID*, VisualisationScalarID> &scalarIDMap); +    virtual void fillIndependentMaterialFieldID(std::map<std::string, VisualisationScalarID> &scalarIDMap); 
-    virtual void fillIndependentElementFieldID(std::map<ScalarNatureID*, VisualisationScalarID> &scalarIDMap);  +    virtual void fillIndependentElementFieldID(std::map<std::string, VisualisationScalarID> &scalarIDMap);  
-    virtual void fillIndependentMaterialVectorialFieldID(std::map<Vect3NatureID*, VisualisationVectorID> &vectorIDMap); +    virtual void fillIndependentMaterialVectorialFieldID(std::map<std::string, VisualisationVectorID> &vectorIDMap); 
-    virtual void fillIndependentElementVectorialFieldID(std::map<Vect3NatureID*, VisualisationVectorID> &vectorIDMap);+    virtual void fillIndependentElementVectorialFieldID(std::map<std::string, VisualisationVectorID> &vectorIDMap);
 </code>  </code> 
  
Line 30: Line 30:
 { {
     MechanicalContactMaterial::fillIndependentMaterialFieldID(scalarIDMap);     MechanicalContactMaterial::fillIndependentMaterialFieldID(scalarIDMap);
-    scalarIDMap[&CF_NORMAL_GAP]=VISUSCALAR_CONTACT; +    scalarIDMap[CF_NORMAL_GAP.getName()]=VISUSCALAR_CONTACT; 
-    scalarIDMap[&CF_CONTACT_PRESSURE]=VISUSCALAR_CONTACT;+    scalarIDMap[CF_CONTACT_PRESSURE.getName()]=VISUSCALAR_CONTACT;
 } }
 </code>  </code> 
Line 41: Line 41:
     if(static_cast<ContactElShcuts *>(getShortcuts())->getAreaInContact()!=AIC_NO)     if(static_cast<ContactElShcuts *>(getShortcuts())->getAreaInContact()!=AIC_NO)
     {     {
-        scalarIDMap[&CF_SLAVE_NODE_AREA]=VISUSCALAR_CONTACT;+        scalarIDMap[CF_SLAVE_NODE_AREA.getName()]=VISUSCALAR_CONTACT;
     }     }
 } }
Line 56: Line 56:
 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.  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 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.  
Line 66: Line 67:
  
 Par exemple, la force extérieure selon l'axe X :  Par exemple, la force extérieure selon l'axe X : 
 +
 +{{ :commit:2015:cont2externalforcex0000.png?600 |}}
 +
 ==== Champ vectoriel interne ==== ==== Champ vectoriel interne ====
  
Line 73: Line 77:
  
  
 +{{ :commit:2015:temperaturegradient0000.png?600 |}}
  
  
Line 84: Line 89:
 Exemple de la pression de contact  Exemple de la pression de contact 
  
 +
 +{{ :commit:2015:cont2contactpressure0000.png?600 |}}
  
 Exemple du cisaillement de contact  Exemple du cisaillement de contact 
 +
 +{{ :commit:2015:cont2contactshear0000.png?600 |}}
  
 <note important>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 ! </note> <note important>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 ! </note>
Line 93: Line 102:
 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.  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 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.  
Line 99: Line 109:
 <note important>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.  </note> <note important>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.  </note>
 ==== Modifications - Scalar Bar ===== ==== Modifications - Scalar Bar =====
-Afin de préparer mon prochain commit (affichage de champ vectoriel de contact), je suis repassé sur les classes gérant l'affichage des scalar/vector fields. 
  
-Au lieu d'utiliser la fonction SetScalars() ou SetVectors(), il est préférable de faire de cette manière là : +  - 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. 
  
-<code> +  J'ai ajouté la possibilité d'ajouter des unités en plus du nom affiché de la scalarBar
-        if(!scalarData) +
-        { +
-            scalarData = vtkDoubleArray::New(); +
-            scalarData->SetNumberOfComponents(1); +
-            scalarData->SetName("ScalarData"); +
-        } +
-         +
-        Remplir scalarDate  +
-         +
-        scalarData->Modified(); +
-        dataset->GetPointData()->AddArray(scalarData); +
-        //Cette méthode est plus flexible !  +
-        dataset->GetPointData()->SetActiveScalars("ScalarData"); +
-</code>    +
-   +
-Comme ça, il est possible aisément de récupérer les valeurs scalaires ou vectorielles dans un autre contexte pour faire une colorMap par exemple.  +
- +
-Il faut savoir que les filtres VTK peuvent écraser des données de l'inputData pour insérer les valeurs calculées dans l'outputData. Par exemple, l'object vtkVectorNorm() travaille sur les vecteurs de l'inputData et écrase les valeurs scalaires de l'inputData pour insérer les normes des vecteurs. Dès lors, on se retrouve avec un outputData sans les valeurs scalaires initiales (que l'on désire garder pour faire une colorMap par exemple en aval du filtre).+
  
-Suite à cette modification là, j'ai pu enlever la classe d'affichage des valeurs de champ scalaire de contact +  - 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  ===== ===== Divers  =====
  
Line 136: Line 128:
  
 <code> <code>
-[a]: +[a]:mtDrawables/CFVectors.cpp 
-[r]:mtDrawables/ContactScalarFieldValuesLabel.cpp +[a]:mtDrawables/IFVectors.cpp 
-[r]:mtDrawables/ContactScalarFieldValuesLabel.h +[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]:
 </code> </code>
  
commit/2015/08_09.1439127453.txt.gz · Last modified: 2016/03/30 15:22 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki