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:21] – [Configuration des champs disponibles] 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 62: Line 63:
  
 ===== Modifications - Vector Field ===== ===== 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 ==== ==== 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 |}}
 +
 +
 +
 +<note important>Tout comme les champs scalaires extrapolées et moyennées, l'interprétation peut être difficile !</note>
  
 ==== Champ vectoriel contact ==== ==== 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 |}}
 +
 +<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>
  
 ==== Configuration des champs disponibles ==== ==== Configuration des champs disponibles ====
Line 71: 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 77: 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 114: 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.1439126517.txt.gz · Last modified: 2016/03/30 15:22 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki