From: prascle Date: Tue, 6 Mar 2012 16:04:15 +0000 (+0000) Subject: PR: modifs Gerald 20120216 X-Git-Tag: V6_5_0a1~3 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=211ca35055bf809704f411a17efc2cb3041b6bfc;p=modules%2Fhomard.git PR: modifs Gerald 20120216 --- diff --git a/doc/gui_create_case.rst b/doc/gui_create_case.rst index 0e5fe972..5758e8e9 100644 --- a/doc/gui_create_case.rst +++ b/doc/gui_create_case.rst @@ -47,7 +47,7 @@ Le maillage initial doit se trouver dans un fichier au format MED. Classiquement Le type de conformité """"""""""""""""""""" -Les itérations qui seront définies pour ce cas devront respecter le même comportement vis-à-vis de la conformité. +Les itérations qui seront calculées pour ce cas devront toutes respecter le même comportement vis-à-vis de la conformité. L'option par défaut, 'conforme', implique que les maillages produits par HOMARD seront conformes au sens des éléments finis. C'est le choix classique de la plupart des logiciels de simulation par éléments finis. @@ -78,6 +78,26 @@ On cochera le ou les boutons voulus : La définition des frontières est décrite dans :ref:`gui_create_boundary`. +.. index:: single: pyramide + +Les options avancées +"""""""""""""""""""" +Par défaut, aucune option avancée n'est active. + +Néanmoins, on peut définir une oprion avancée : + +.. image:: images/create_case_7.png + :align: center + +Par défaut, HOMARD sait traiter des maillages en 2 ou 3 dimensions et comportant les mailles suivantes : + - mailles-points + - segments + - triangles + - quadrangles + - tétraèdres + - hexaèdres + - prismes +Si le maillage initial comporte des pyramides, il y a arrêt en erreur. Toutefois, si on est certain que les raffinements ultérieurs ne toucheront aucune des arêtes des pyramides, on cochera la case "Pyramides autorisées". Les adaptations se dérouleront normalement et les pyramides seront restituées telles quelles dans le maillage final. L'arbre d'étude """"""""""""""" diff --git a/doc/gui_homard.rst b/doc/gui_homard.rst index 9952cd9a..c4df6439 100644 --- a/doc/gui_homard.rst +++ b/doc/gui_homard.rst @@ -38,6 +38,13 @@ Les deux fichiers de texte, Liste.n.vers.(n+1) et apad.n.vers.(n+1).bilan, sont .. image:: images/lancement_3.png :align: center + + +.. note:: + Par défaut, le calcul est lancé avec l'exécutable de HOMARD installé avec Salome. Si on souhaite utiliser une version privée de HOMARD, pour tester une évolution par exemple, il faut préciser où le nouvel exécutable est disponible. Pour cela, il faut renseigner deux variables d'environnement. + "*HOMARD_REP_EXE_PRIVATE*" définit le répertoire dans lequel se trouve l'exécutable voulu. + "*HOMARD_EXE_PRIVATE*" définit le nom de l'exécutable dans ce répertoire, si ce nom est différent de "*homard*". + Méthodes python correspondantes """"""""""""""""""""""""""""""" Consulter :ref:`tui_create_iteration` diff --git a/doc/images/create_case_1.png b/doc/images/create_case_1.png index 34796a77..ddef5000 100644 Binary files a/doc/images/create_case_1.png and b/doc/images/create_case_1.png differ diff --git a/doc/images/create_case_7.png b/doc/images/create_case_7.png new file mode 100644 index 00000000..766430fe Binary files /dev/null and b/doc/images/create_case_7.png differ diff --git a/doc/images/intro_3.png b/doc/images/intro_3.png new file mode 100644 index 00000000..64be42a1 Binary files /dev/null and b/doc/images/intro_3.png differ diff --git a/doc/images/intro_4.png b/doc/images/intro_4.png new file mode 100644 index 00000000..5931fa4b Binary files /dev/null and b/doc/images/intro_4.png differ diff --git a/doc/images/intro_5.png b/doc/images/intro_5.png new file mode 100644 index 00000000..e0730d7e Binary files /dev/null and b/doc/images/intro_5.png differ diff --git a/doc/images/intro_6.png b/doc/images/intro_6.png new file mode 100644 index 00000000..21f79c2d Binary files /dev/null and b/doc/images/intro_6.png differ diff --git a/doc/images/intro_7.png b/doc/images/intro_7.png new file mode 100644 index 00000000..5e8ceec3 Binary files /dev/null and b/doc/images/intro_7.png differ diff --git a/doc/intro.rst b/doc/intro.rst index a510bb8d..d2a631fd 100644 --- a/doc/intro.rst +++ b/doc/intro.rst @@ -3,13 +3,27 @@ Introduction ============ Le logiciel HOMARD est destiné à adapter les maillages dans le cadre des codes de calculs par éléments ou volumes finis. Ce logiciel, réalisé par EDF R&D, procède par raffinement et déraffinement des maillages bidimensionnels ou tridimensionnels. Il est conçu pour être utilisé indépendamment du code de calcul auquel il est couplé. +HOMARD sait traiter des maillages en 2 ou 3 dimensions et comportant les mailles suivantes : + - mailles-points + - segments + - triangles + - quadrangles + - tétraèdres + - hexaèdres + - prismes + +Ces mailles peuvent être présentes simultanément. Par exemple, HOMARD saura adapter un maillage comportant des triangles et des quadrangles. +Les noeuds acceptés sont évidemment les noeuds qui sont les sommets des mailles, ce qui correspond à la description classique « en degré 1 » . Si les éléments sont décrits « en degré 2 », les noeuds complémentaires sont gérés. En revanche, il ne peut pas y avoir cohabitation de mailles décrites en degré 1 et d'autres décrites en degré 2. Enfin, HOMARD sait prendre en compte des noeuds isolés, qui n'appartiendraient à aucune définition de mailles : ils ressortiront tels quels du processus d'adaptation. + +Le cas des pyramides est à part. HOMARD produit des pyramides pour assurer la conformité du raffinement de maillages formés d'hexaèdres ou de prismes. En revanche, HOMARD n'adapte pas un maillage qui contiendrait des pyramides au départ, sauf cas particuliers (voir :ref:`gui_create_case`). + Plusieurs motivations apparaissent pour adapter un maillage : - - on veut simplifier la réalisation du maillage d'une géométrie complexe : on par d'une version grossière et on confie à un processus automatique la charge de le raffiner. + - on veut simplifier la réalisation du maillage d'une géométrie complexe : on part d'un maillage grossier et on confie à un processus automatique la charge de le raffiner. - on veut s'assurer de la convergence de la solution numérique : plutôt que de réaliser à la main des maillages de plus en plus fins, on laisse le logiciel chercher lui-même les endroits où il faudrait affiner le maillage pour augmenter la précision du résultat. - les conditions du calcul changent au cours de son déroulement : les zones qui doivent être maillées finement se déplacent. Si on maille fin partout dès le début, le maillage est trop gros. En adaptant au fur et à mesure, le maillage ne sera fin qu'aux endroits nécessaires : sa taille sera réduite et la qualité de la solution sera bonne. -Dans tous les cas, le principe de l'adaptation de maillage reste le même. Sur le maillage de départ, on réalise le calcul standard. A partir d'une analyse de la solution numérique obtenue, on estime l'erreur qui a été commise par rapport à la solution réelle. Cette estimation se représente par une valeur d'indicateur d'erreur dans chaque maille du calcul. A partir de là, on applique le principe suivant : les mailles où l'indicateur d'erreur est fort devraient être plus petites et réciproquement, les mailles où l'indicateur d'erreur est faible pourraient être plus grandes. Avec cette information, on alimente HOMARD qui va modifier le maillage en conséquence. Sur le nouveau maillage, on recommencera alors le calcul. +Dans tous les cas, le principe de l'adaptation de maillage reste le même. Sur le maillage de départ, on réalise le calcul standard. Avec une analyse de la solution numérique obtenue, on estime l'erreur qui a été commise par rapport à la solution réelle. Cette estimation se représente par une valeur d'indicateur d'erreur dans chaque maille du calcul. A partir de là, on applique le principe suivant : les mailles où l'indicateur d'erreur est fort devraient être plus petites et, réciproquement, les mailles où l'indicateur d'erreur est faible pourraient être plus grandes. Avec cette information, on alimente HOMARD qui va modifier le maillage en conséquence. Sur le nouveau maillage, on recommencera alors le calcul. Schématiquement, une itération d'adaptation de maillage se présente ainsi. Le logiciel calcule la solution numérique sur le maillage n°k, puis en déduit les valeurs de l'indicateur d'erreur sur tout le maillage. A partir de la connaissance du maillage n°k et de l'indicateur n°k, HOMARD crée le nouveau maillage n°k+1. .. image:: images/intro_1.png @@ -20,7 +34,27 @@ Au final, la cha .. image:: images/intro_2.png :align: center -A partir de ce schéma de base, des variantes sont possibles. Si aucun calcul d'erreur n'est disponible dans le logiciel couplé, on peut utiliser un champ pour piloter l'adaptation. Un champ de contraintes en mécaniques peut être utilisé : raffiner là où les contraintes sont importantes est souvent efficace pour améliorer la qualité de la simulation. On peut également adapter en fonction du saut d'une variable d'une maille à sa voisine ou dans une zone connue a priori. Grâce à ses nombreuses options, HOMARD permet d'envisager de nombreux scénarios d'adaptation de maillage. +Des variantes de ce schéma de base sont possibles. Si aucun calcul d'erreur n'est disponible dans le logiciel couplé, on peut utiliser un champ pour piloter l'adaptation. Un champ de contraintes en mécaniques peut être utilisé : raffiner là où les contraintes sont importantes est souvent efficace pour améliorer la qualité de la simulation. On peut également adapter en fonction du saut d'une variable d'une maille à sa voisine ou dans une zone connue a priori. Grâce à ses nombreuses options, HOMARD permet d'envisager de multiples scénarios d'adaptation de maillage. .. note:: Pour une description plus complète, voir :download:`Description générale de HOMARD `. + + +Quelques illustrations de maillage adaptés +========================================== + +.. image:: images/intro_3.png + :align: center + +.. image:: images/intro_4.png + :align: center + +.. image:: images/intro_5.png + :align: center + +.. image:: images/intro_6.png + :align: center + +.. image:: images/intro_7.png + :align: center + diff --git a/doc/tui_create_case.rst b/doc/tui_create_case.rst index 77e58b40..202c7915 100644 --- a/doc/tui_create_case.rst +++ b/doc/tui_create_case.rst @@ -56,10 +56,10 @@ M | | | - ``conf_type`` : entier précisant le mode de conformité | | | -| 1. conforme | -| 2. non conforme avec 1 noeud par maille | -| 3. non conforme avec 1 noeud par arete de maille | -| 4. non conforme quelconque | +| * 1 : conforme | +| * 2 : non conforme avec 1 noeud par maille | +| * 3 : non conforme avec 1 noeud par arete de maille | +| * 4 : non conforme quelconque | +---------------------------------------------------------------+ | .. module:: GetConfType | | | @@ -92,6 +92,28 @@ M | frontière | +---------------------------------------------------------------+ +Les options avancées +^^^^^^^^^^^^^^^^^^^^ + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: SetPyram | +| | +| **SetPyram(option)** | +| | +| - ``option`` : entier précisant le statut des pyramides | +| éventuellement présentes dans le maillage initial | +| | +| * 0 : pyramides refusées (défaut) | +| * 1 : pyramides autorisées | ++---------------------------------------------------------------+ +| .. module:: GetPyram | +| | +| **GetPyram()** | +| Retourne le statut accordé aux pyramides éventuellement | +| présentes dans le maillage initial | ++---------------------------------------------------------------+ + Exemple """"""" diff --git a/doc/tui_create_hypothese.rst b/doc/tui_create_hypothese.rst index 3ffeb89c..24ad8ec2 100644 --- a/doc/tui_create_hypothese.rst +++ b/doc/tui_create_hypothese.rst @@ -54,13 +54,13 @@ G | | | - ``Refin`` : entier précisant si le raffinement est actif| | | -| 0. inactif | -| 1. actif | +| * 0 : inactif | +| * 1 : actif | | | | - ``UnRef`` : entier précisant si déraffinement est actif | | | -| 0. inactif | -| 1. actif | +| * 0 : inactif | +| * 1 : actif | | | +---------------------------------------------------------------+ | .. module:: GetAdapType | @@ -101,8 +101,8 @@ Le champ et les seuils | | | - ``use_field`` : entier précisant l'usage du champ | | | -| 0. valeur par élément (défaut) | -| 1. saut entre un élément et ses voisins | +| * 0 : valeur par élément (défaut) | +| * 1 : saut entre un élément et ses voisins | +---------------------------------------------------------------+ | .. module:: SetRefinThr | | | @@ -111,9 +111,9 @@ Le champ et les seuils | - ``type_thres`` : entier précisant le type de seuil en | | raffinement | | | -| 1. valeur absolue | -| 2. valeur relative en % | -| 3. fraction des mailles en % | +| * 1 : valeur absolue | +| * 2 : valeur relative en % | +| * 3 : fraction des mailles en % | | | | - ``threshold`` : valeur du seuil | +---------------------------------------------------------------+ @@ -129,9 +129,9 @@ Le champ et les seuils | - ``type_thres`` : entier précisant le type de seuil en | | déraffinement | | | -| 1. valeur absolue | -| 2. valeur relative en % | -| 3. fraction des mailles en % | +| * 1 : valeur absolue | +| * 2 : valeur relative en % | +| * 3 : fraction des mailles en % | | | | - ``threshold`` : valeur du seuil | +---------------------------------------------------------------+ @@ -160,9 +160,9 @@ Les composantes du champ | | | - ``use_comp`` : entier précisant l'usage des composantes | | | -| 0. norme L2 (défaut) | -| 1. norme infinie | -| 2. valeur relative, uniquement si une seule composante| +| * 0 : norme L2 (défaut) | +| * 1 : norme infinie | +| * 2 : valeur relative, si une seule composante | +---------------------------------------------------------------+ | .. module:: GetListComp | | | @@ -187,8 +187,8 @@ Le filtrage par les groupes | Retourne la liste des groupes utilisés pour le filtrage | +---------------------------------------------------------------+ -Les options avancéess -^^^^^^^^^^^^^^^^^^^^^ +Les options avancées +^^^^^^^^^^^^^^^^^^^^ +---------------------------------------------------------------+ +---------------------------------------------------------------+ diff --git a/doc/tui_create_iteration.rst b/doc/tui_create_iteration.rst index 776aecc9..a9590dcf 100644 --- a/doc/tui_create_iteration.rst +++ b/doc/tui_create_iteration.rst @@ -65,7 +65,11 @@ G | .. module:: GetNumber | | | | **GetNumber()** | -| Retourne le numéro de l'itération | +| Retourne le numéro de l'itération. | +| | +| L'itération 0 est celle associée au maillage initial. | +| Ensuite, une itération de numéro N est issue de | +| l'adaptation d'une itération de numéro N-1. | +---------------------------------------------------------------+ | .. module:: GetIterParent | | | diff --git a/idl/HOMARD_Cas.idl b/idl/HOMARD_Cas.idl index e1ce5a96..132150fa 100644 --- a/idl/HOMARD_Cas.idl +++ b/idl/HOMARD_Cas.idl @@ -60,6 +60,9 @@ module HOMARD void AddBoundaryGroup(in string NomBoundary, in string Group) raises (SALOME::SALOME_Exception); + void SetPyram(in long Pyram) raises (SALOME::SALOME_Exception); + long GetPyram() raises (SALOME::SALOME_Exception); + }; }; #endif diff --git a/idl/HOMARD_Gen.idl b/idl/HOMARD_Gen.idl index 8981c2a8..ed79e837 100644 --- a/idl/HOMARD_Gen.idl +++ b/idl/HOMARD_Gen.idl @@ -136,7 +136,7 @@ module HOMARD void InvalideHypo (in string HypoName) raises (SALOME::SALOME_Exception); void InvalideIter (in string IterName) raises (SALOME::SALOME_Exception); - boolean Compute (in string IterName, in long etatMenage) + long Compute (in string IterName, in long etatMenage) raises (SALOME::SALOME_Exception); boolean VerifieDir (in string IterName) raises (SALOME::SALOME_Exception); diff --git a/idl/HOMARD_Iteration.idl b/idl/HOMARD_Iteration.idl index cc4d0856..26582e36 100644 --- a/idl/HOMARD_Iteration.idl +++ b/idl/HOMARD_Iteration.idl @@ -70,7 +70,7 @@ module HOMARD void SetMessFile(in string MessFile) raises (SALOME::SALOME_Exception); string GetMessFile() raises (SALOME::SALOME_Exception); - boolean Compute(in long etatMenage) raises (SALOME::SALOME_Exception); + long Compute(in long etatMenage) raises (SALOME::SALOME_Exception); string GetDumpPython() raises (SALOME::SALOME_Exception); }; diff --git a/src/HOMARD/HOMARD_Cas.cxx b/src/HOMARD/HOMARD_Cas.cxx index 30c73816..5522eaea 100644 --- a/src/HOMARD/HOMARD_Cas.cxx +++ b/src/HOMARD/HOMARD_Cas.cxx @@ -102,6 +102,11 @@ std::string HOMARD_Cas::GetDumpPython() const aScript << *it << "\")\n"; it++; } + if ( _Pyram > 0 ) + { + aScript << "\t" <<_NomCas << ".SetPyram("; + aScript << _Pyram << ")\n"; + } return aScript.str(); } @@ -224,3 +229,17 @@ void HOMARD_Cas::SupprBoundaryGroup() { _ListBoundaryGroup.clear(); } +//============================================================================= +void HOMARD_Cas::SetPyram( int Pyram ) +//============================================================================= +{ + MESSAGE ("SetPyram, Pyram = " << Pyram ); + _Pyram = Pyram; +} +//============================================================================= +const int HOMARD_Cas::GetPyram() const +//============================================================================= +{ + MESSAGE ("GetPyram, Pyram = " << _Pyram ); + return _Pyram; +} diff --git a/src/HOMARD/HOMARD_Cas.hxx b/src/HOMARD/HOMARD_Cas.hxx index 0c393040..fef06e68 100644 --- a/src/HOMARD/HOMARD_Cas.hxx +++ b/src/HOMARD/HOMARD_Cas.hxx @@ -67,6 +67,9 @@ public: const std::list& GetBoundaryGroup() const; void SupprBoundaryGroup(); + void SetPyram( int Pyram ); + const int GetPyram() const; + private: std::string _NomCas; std::string _NomDir; @@ -76,6 +79,8 @@ private: std::list _ListGroup; std::list _ListBoundaryGroup; + int _Pyram; + typedef std::string IterName; typedef std::list IterNames; IterNames _ListIter; diff --git a/src/HOMARD/HOMARD_DriverTools.cxx b/src/HOMARD/HOMARD_DriverTools.cxx index 6f7e8bf3..b2d476cf 100644 --- a/src/HOMARD/HOMARD_DriverTools.cxx +++ b/src/HOMARD/HOMARD_DriverTools.cxx @@ -130,6 +130,8 @@ namespace HOMARD for ( it = ListString.begin(); it != ListString.end(); ++it ) os << separator() << *it; + os << separator() << cas.GetPyram(); + // MESSAGE( ". Fin avec "< 0 ) + { aScript << "\t" <<_NomHypo << ".SetDiamMin("; aScript << _DiamMin << ")\n"; } @@ -414,10 +417,10 @@ void HOMARD_Hypothesis::SetDiamMin( double DiamMin ) //============================================================================= { _DiamMin = DiamMin; - if ( _NivMax < 0 ) +/* if ( _NivMax < 0 ) { _NivMax = 99 ; - } + }*/ } //============================================================================= const double HOMARD_Hypothesis::GetDiamMin() const diff --git a/src/HOMARD/HOMARD_Iteration.cxx b/src/HOMARD/HOMARD_Iteration.cxx index 87f16016..13adb738 100644 --- a/src/HOMARD/HOMARD_Iteration.cxx +++ b/src/HOMARD/HOMARD_Iteration.cxx @@ -102,11 +102,11 @@ std::string HOMARD_Iteration::GetDumpPython() const aScript << "\thomard.AssociateIterHypo(\"" <<_NomIter << "\", \"" << _NomHypo << "\")\n"; if (_Etat == true) { - aScript << "\tresult = homard.Compute(\"" <<_NomIter << "\", 1)\n"; + aScript << "\tcodret = homard.Compute(\"" <<_NomIter << "\", 1)\n"; } else { - aScript << "\t# result = homard.Compute(\"" <<_NomIter << "\", 1)\n"; + aScript << "\t#codret = homard.Compute(\"" <<_NomIter << "\", 1)\n"; } return aScript.str(); diff --git a/src/HOMARD/HomardDriver.cxx b/src/HOMARD/HomardDriver.cxx index 51bf1765..6fec7958 100644 --- a/src/HOMARD/HomardDriver.cxx +++ b/src/HOMARD/HomardDriver.cxx @@ -38,16 +38,16 @@ HomardDriver::HomardDriver(const std::string siter, const std::string siterp1): char* dirchar; char* execchar; std::string dir; std::string executable; - if ( !(dirchar = getenv("HOMARD_REP_EXE")) ) - dir = "/local00/HOMARD_SVN/trunk/bin" ; - else - dir = std::string(dirchar); - if ( !(execchar = getenv("HOMARD_EXE")) ) - executable = "HOMARD.out"; - else - executable = std::string(execchar); + if ( !(dirchar = getenv("HOMARD_REP_EXE_PRIVATE")) ) + { dirchar = getenv("HOMARD_REP_EXE") ; } + dir = std::string(dirchar); + MESSAGE("HomardDriver, dirchar ="< 0 ) + { + _Texte += "# Autorisation de pyramides dans le maillage initial\n" ; + { _Texte += "TypeElem ignore_pyra\n" ; } } + if ( NivMax > 0 ) { - std::stringstream saux1 ; - saux1 << DiamMin ; - std::string saux2 = saux1.str() ; - _Texte += "DiametMi " + saux2 + "\n" ; + _Texte += "# Niveaux extremes\n" ; + { std::stringstream saux1 ; + saux1 << NivMax ; + std::string saux2 = saux1.str() ; + _Texte += "NiveauMa " + saux2 + "\n" ; + } + } + if ( DiamMin > 0 ) + { + _Texte += "# Diametre minimal\n" ; + { std::stringstream saux1 ; + saux1 << DiamMin ; + std::string saux2 = saux1.str() ; + _Texte += "DiametMi " + saux2 + "\n" ; + } } } diff --git a/src/HOMARD/HomardDriver.hxx b/src/HOMARD/HomardDriver.hxx index 51672569..b286ba9d 100644 --- a/src/HOMARD/HomardDriver.hxx +++ b/src/HOMARD/HomardDriver.hxx @@ -52,7 +52,7 @@ public: void TexteFieldInterp( int TypeFieldInterp, const std::string FieldFile, const std::string MeshFile, int TimeStep, int Rank ); void TexteFieldInterpName( int NumeChamp, const std::string FieldName); - void TexteAdvanced( int NivMax, double DiamMin); + void TexteAdvanced( int Pyram, int NivMax, double DiamMin); void CloseFichier(); // int ExecuteHomard(); diff --git a/src/HOMARDGUI/CreateCase.h b/src/HOMARDGUI/CreateCase.h index 37603d39..46af698f 100644 --- a/src/HOMARDGUI/CreateCase.h +++ b/src/HOMARDGUI/CreateCase.h @@ -1,10 +1,10 @@ /******************************************************************************** -** Form generated from reading ui file 'CreateCase.ui' +** Form generated from reading UI file 'CreateCase.ui' ** -** Created: Fri Oct 28 11:27:32 2011 -** by: Qt User Interface Compiler version 4.2.1 +** Created: Wed Feb 15 18:15:40 2012 +** by: Qt User Interface Compiler version 4.6.3 ** -** WARNING! All changes made in this file will be lost when recompiling ui file! +** WARNING! All changes made in this file will be lost when recompiling UI file! ********************************************************************************/ #ifndef CREATECASE_H @@ -17,394 +17,464 @@ #include #include #include +#include #include #include #include +#include #include #include #include #include #include #include -#include + +QT_BEGIN_NAMESPACE class Ui_CreateCase { public: - QGridLayout *gridLayout; - QGroupBox *GBBoundaryA; - QTableWidget *TWBoundary; - QWidget *layoutWidget; - QGridLayout *gridLayout1; - QPushButton *PBBoundaryAnEdit; - QPushButton *PBBoundaryAnNew; - QPushButton *PBBoundaryAnHelp; - QGroupBox *GBBoundaryD; - QGridLayout *gridLayout2; - QPushButton *PBBoundaryDiEdit; - QPushButton *PBBoundaryDiNew; - QComboBox *CBBoundaryDi; - QSpacerItem *spacerItem; - QPushButton *PBBoundaryDiHelp; - QGroupBox *GroupButtons; - QGridLayout *gridLayout3; - QPushButton *buttonHelp; - QPushButton *buttonCancel; - QPushButton *buttonApply; - QPushButton *buttonOk; + QGridLayout *gridLayout_2; QHBoxLayout *hboxLayout; - QCheckBox *CBBoundaryD; - QCheckBox *CBBoundaryA; - QHBoxLayout *hboxLayout1; QLabel *Name; QLineEdit *LECaseName; - QHBoxLayout *hboxLayout2; + QHBoxLayout *hboxLayout1; QLabel *Directory; QPushButton *PushDir; QLineEdit *LEDirName; - QHBoxLayout *hboxLayout3; + QSpacerItem *spacerItem; + QHBoxLayout *hboxLayout2; QLabel *Mesh_2; QPushButton *PushFichier; QLineEdit *LEFileName; QSpacerItem *spacerItem1; QGroupBox *GBTypeConf; - QHBoxLayout *hboxLayout4; + QHBoxLayout *hboxLayout3; QRadioButton *RBConforme; QRadioButton *RBNonConforme; QSpacerItem *spacerItem2; QGroupBox *GBTypeNoConf; - QHBoxLayout *hboxLayout5; + QHBoxLayout *hboxLayout4; QRadioButton *RB1NpM; QRadioButton *RB1NpA; QRadioButton *RBQuelconque; QSpacerItem *spacerItem3; + QHBoxLayout *hboxLayout5; + QCheckBox *CBBoundaryD; + QCheckBox *CBBoundaryA; QSpacerItem *spacerItem4; + QGroupBox *GBBoundaryD; + QGridLayout *gridLayout; + QPushButton *PBBoundaryDiEdit; + QPushButton *PBBoundaryDiNew; + QComboBox *CBBoundaryDi; QSpacerItem *spacerItem5; + QPushButton *PBBoundaryDiHelp; + QGroupBox *GBBoundaryA; + QFormLayout *formLayout; + QTableWidget *TWBoundary; + QGridLayout *gridLayout1; + QPushButton *PBBoundaryAnEdit; + QPushButton *PBBoundaryAnNew; + QPushButton *PBBoundaryAnHelp; + QSpacerItem *spacer; + QCheckBox *CBAdvanced; + QGroupBox *GBAdvancedOptions; + QGridLayout *gridLayout2; + QCheckBox *CBPyramid; + QSpacerItem *spacer_3; + QSpacerItem *spacer_4; + QGroupBox *GroupButtons; + QGridLayout *gridLayout3; + QPushButton *buttonHelp; + QPushButton *buttonApply; + QPushButton *buttonOk; + QPushButton *buttonCancel; + QSpacerItem *spacer_2; void setupUi(QDialog *CreateCase) { - CreateCase->setObjectName(QString::fromUtf8("CreateCase")); - QSizePolicy sizePolicy(static_cast(0), static_cast(0)); - sizePolicy.setHorizontalStretch(0); - sizePolicy.setVerticalStretch(0); - sizePolicy.setHeightForWidth(CreateCase->sizePolicy().hasHeightForWidth()); - CreateCase->setSizePolicy(sizePolicy); - CreateCase->setAutoFillBackground(true); - gridLayout = new QGridLayout(CreateCase); - gridLayout->setSpacing(6); - gridLayout->setMargin(9); - gridLayout->setObjectName(QString::fromUtf8("gridLayout")); - GBBoundaryA = new QGroupBox(CreateCase); - GBBoundaryA->setObjectName(QString::fromUtf8("GBBoundaryA")); - GBBoundaryA->setMinimumSize(QSize(548, 200)); - TWBoundary = new QTableWidget(GBBoundaryA); - TWBoundary->setObjectName(QString::fromUtf8("TWBoundary")); - TWBoundary->setGeometry(QRect(4, 20, 371, 161)); - TWBoundary->setEditTriggers(QAbstractItemView::AnyKeyPressed|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed|QAbstractItemView::NoEditTriggers|QAbstractItemView::SelectedClicked); - TWBoundary->setShowGrid(true); - TWBoundary->setRowCount(0); - TWBoundary->setColumnCount(1); - layoutWidget = new QWidget(GBBoundaryA); - layoutWidget->setObjectName(QString::fromUtf8("layoutWidget")); - layoutWidget->setGeometry(QRect(430, 40, 77, 95)); - gridLayout1 = new QGridLayout(layoutWidget); - gridLayout1->setSpacing(6); - gridLayout1->setMargin(0); - gridLayout1->setObjectName(QString::fromUtf8("gridLayout1")); - PBBoundaryAnEdit = new QPushButton(layoutWidget); - PBBoundaryAnEdit->setObjectName(QString::fromUtf8("PBBoundaryAnEdit")); - PBBoundaryAnEdit->setAutoDefault(false); - - gridLayout1->addWidget(PBBoundaryAnEdit, 1, 0, 1, 1); - - PBBoundaryAnNew = new QPushButton(layoutWidget); - PBBoundaryAnNew->setObjectName(QString::fromUtf8("PBBoundaryAnNew")); - PBBoundaryAnNew->setAutoDefault(false); + if (CreateCase->objectName().isEmpty()) + CreateCase->setObjectName(QString::fromUtf8("CreateCase")); + CreateCase->resize(601, 1070); + QSizePolicy sizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); + sizePolicy.setHorizontalStretch(0); + sizePolicy.setVerticalStretch(0); + sizePolicy.setHeightForWidth(CreateCase->sizePolicy().hasHeightForWidth()); + CreateCase->setSizePolicy(sizePolicy); + CreateCase->setAutoFillBackground(true); + gridLayout_2 = new QGridLayout(CreateCase); + gridLayout_2->setObjectName(QString::fromUtf8("gridLayout_2")); + hboxLayout = new QHBoxLayout(); +#ifndef Q_OS_MAC + hboxLayout->setSpacing(6); +#endif +#ifndef Q_OS_MAC + hboxLayout->setContentsMargins(0, 0, 0, 0); +#endif + hboxLayout->setObjectName(QString::fromUtf8("hboxLayout")); + Name = new QLabel(CreateCase); + Name->setObjectName(QString::fromUtf8("Name")); + + hboxLayout->addWidget(Name); + + LECaseName = new QLineEdit(CreateCase); + LECaseName->setObjectName(QString::fromUtf8("LECaseName")); + LECaseName->setMinimumSize(QSize(382, 21)); + + hboxLayout->addWidget(LECaseName); - gridLayout1->addWidget(PBBoundaryAnNew, 0, 0, 1, 1); - PBBoundaryAnHelp = new QPushButton(layoutWidget); - PBBoundaryAnHelp->setObjectName(QString::fromUtf8("PBBoundaryAnHelp")); - PBBoundaryAnHelp->setAutoDefault(false); + gridLayout_2->addLayout(hboxLayout, 0, 0, 1, 4); - gridLayout1->addWidget(PBBoundaryAnHelp, 2, 0, 1, 1); + hboxLayout1 = new QHBoxLayout(); +#ifndef Q_OS_MAC + hboxLayout1->setSpacing(6); +#endif + hboxLayout1->setContentsMargins(0, 0, 0, 0); + hboxLayout1->setObjectName(QString::fromUtf8("hboxLayout1")); + Directory = new QLabel(CreateCase); + Directory->setObjectName(QString::fromUtf8("Directory")); + hboxLayout1->addWidget(Directory); - gridLayout->addWidget(GBBoundaryA, 12, 0, 1, 2); + PushDir = new QPushButton(CreateCase); + PushDir->setObjectName(QString::fromUtf8("PushDir")); + PushDir->setAutoDefault(false); - GBBoundaryD = new QGroupBox(CreateCase); - GBBoundaryD->setObjectName(QString::fromUtf8("GBBoundaryD")); - QSizePolicy sizePolicy1(static_cast(0), static_cast(0)); - sizePolicy1.setHorizontalStretch(0); - sizePolicy1.setVerticalStretch(0); - sizePolicy1.setHeightForWidth(GBBoundaryD->sizePolicy().hasHeightForWidth()); - GBBoundaryD->setSizePolicy(sizePolicy1); - gridLayout2 = new QGridLayout(GBBoundaryD); - gridLayout2->setSpacing(6); - gridLayout2->setMargin(9); - gridLayout2->setObjectName(QString::fromUtf8("gridLayout2")); - PBBoundaryDiEdit = new QPushButton(GBBoundaryD); - PBBoundaryDiEdit->setObjectName(QString::fromUtf8("PBBoundaryDiEdit")); - PBBoundaryDiEdit->setAutoDefault(false); + hboxLayout1->addWidget(PushDir); - gridLayout2->addWidget(PBBoundaryDiEdit, 0, 3, 1, 1); + LEDirName = new QLineEdit(CreateCase); + LEDirName->setObjectName(QString::fromUtf8("LEDirName")); + LEDirName->setMinimumSize(QSize(382, 21)); - PBBoundaryDiNew = new QPushButton(GBBoundaryD); - PBBoundaryDiNew->setObjectName(QString::fromUtf8("PBBoundaryDiNew")); - PBBoundaryDiNew->setAutoDefault(false); + hboxLayout1->addWidget(LEDirName); - gridLayout2->addWidget(PBBoundaryDiNew, 0, 2, 1, 1); - CBBoundaryDi = new QComboBox(GBBoundaryD); - CBBoundaryDi->setObjectName(QString::fromUtf8("CBBoundaryDi")); - CBBoundaryDi->setSizeAdjustPolicy(QComboBox::AdjustToContents); + gridLayout_2->addLayout(hboxLayout1, 1, 0, 1, 4); - gridLayout2->addWidget(CBBoundaryDi, 0, 0, 1, 1); + spacerItem = new QSpacerItem(20, 18, QSizePolicy::Minimum, QSizePolicy::Expanding); - spacerItem = new QSpacerItem(40, 13, QSizePolicy::Fixed, QSizePolicy::Minimum); + gridLayout_2->addItem(spacerItem, 2, 1, 1, 1); - gridLayout2->addItem(spacerItem, 0, 1, 1, 1); + hboxLayout2 = new QHBoxLayout(); +#ifndef Q_OS_MAC + hboxLayout2->setSpacing(6); +#endif + hboxLayout2->setContentsMargins(0, 0, 0, 0); + hboxLayout2->setObjectName(QString::fromUtf8("hboxLayout2")); + Mesh_2 = new QLabel(CreateCase); + Mesh_2->setObjectName(QString::fromUtf8("Mesh_2")); - PBBoundaryDiHelp = new QPushButton(GBBoundaryD); - PBBoundaryDiHelp->setObjectName(QString::fromUtf8("PBBoundaryDiHelp")); - PBBoundaryDiHelp->setAutoDefault(false); + hboxLayout2->addWidget(Mesh_2); - gridLayout2->addWidget(PBBoundaryDiHelp, 0, 4, 1, 1); + PushFichier = new QPushButton(CreateCase); + PushFichier->setObjectName(QString::fromUtf8("PushFichier")); + PushFichier->setAutoDefault(false); + hboxLayout2->addWidget(PushFichier); - gridLayout->addWidget(GBBoundaryD, 11, 0, 1, 1); + LEFileName = new QLineEdit(CreateCase); + LEFileName->setObjectName(QString::fromUtf8("LEFileName")); + LEFileName->setMinimumSize(QSize(382, 21)); - GroupButtons = new QGroupBox(CreateCase); - GroupButtons->setObjectName(QString::fromUtf8("GroupButtons")); - gridLayout3 = new QGridLayout(GroupButtons); - gridLayout3->setSpacing(6); - gridLayout3->setMargin(9); - gridLayout3->setObjectName(QString::fromUtf8("gridLayout3")); - buttonHelp = new QPushButton(GroupButtons); - buttonHelp->setObjectName(QString::fromUtf8("buttonHelp")); - buttonHelp->setAutoDefault(false); + hboxLayout2->addWidget(LEFileName); - gridLayout3->addWidget(buttonHelp, 0, 3, 1, 1); - buttonCancel = new QPushButton(GroupButtons); - buttonCancel->setObjectName(QString::fromUtf8("buttonCancel")); - buttonCancel->setAutoDefault(false); + gridLayout_2->addLayout(hboxLayout2, 3, 0, 1, 4); - gridLayout3->addWidget(buttonCancel, 0, 2, 1, 1); + spacerItem1 = new QSpacerItem(20, 0, QSizePolicy::Minimum, QSizePolicy::Expanding); - buttonApply = new QPushButton(GroupButtons); - buttonApply->setObjectName(QString::fromUtf8("buttonApply")); - buttonApply->setAutoDefault(false); + gridLayout_2->addItem(spacerItem1, 4, 1, 1, 3); - gridLayout3->addWidget(buttonApply, 0, 1, 1, 1); + GBTypeConf = new QGroupBox(CreateCase); + GBTypeConf->setObjectName(QString::fromUtf8("GBTypeConf")); + hboxLayout3 = new QHBoxLayout(GBTypeConf); +#ifndef Q_OS_MAC + hboxLayout3->setSpacing(6); +#endif +#ifndef Q_OS_MAC + hboxLayout3->setContentsMargins(9, 9, 9, 9); +#endif + hboxLayout3->setObjectName(QString::fromUtf8("hboxLayout3")); + RBConforme = new QRadioButton(GBTypeConf); + RBConforme->setObjectName(QString::fromUtf8("RBConforme")); + RBConforme->setChecked(true); - buttonOk = new QPushButton(GroupButtons); - buttonOk->setObjectName(QString::fromUtf8("buttonOk")); - buttonOk->setAutoDefault(false); + hboxLayout3->addWidget(RBConforme); - gridLayout3->addWidget(buttonOk, 0, 0, 1, 1); + RBNonConforme = new QRadioButton(GBTypeConf); + RBNonConforme->setObjectName(QString::fromUtf8("RBNonConforme")); + hboxLayout3->addWidget(RBNonConforme); - gridLayout->addWidget(GroupButtons, 13, 0, 1, 1); - hboxLayout = new QHBoxLayout(); - hboxLayout->setSpacing(6); - hboxLayout->setMargin(0); - hboxLayout->setObjectName(QString::fromUtf8("hboxLayout")); - CBBoundaryD = new QCheckBox(CreateCase); - CBBoundaryD->setObjectName(QString::fromUtf8("CBBoundaryD")); + gridLayout_2->addWidget(GBTypeConf, 5, 0, 1, 1); - hboxLayout->addWidget(CBBoundaryD); + spacerItem2 = new QSpacerItem(20, 1, QSizePolicy::Minimum, QSizePolicy::Expanding); - CBBoundaryA = new QCheckBox(CreateCase); - CBBoundaryA->setObjectName(QString::fromUtf8("CBBoundaryA")); + gridLayout_2->addItem(spacerItem2, 6, 1, 1, 1); - hboxLayout->addWidget(CBBoundaryA); + GBTypeNoConf = new QGroupBox(CreateCase); + GBTypeNoConf->setObjectName(QString::fromUtf8("GBTypeNoConf")); + hboxLayout4 = new QHBoxLayout(GBTypeNoConf); +#ifndef Q_OS_MAC + hboxLayout4->setSpacing(6); +#endif +#ifndef Q_OS_MAC + hboxLayout4->setContentsMargins(9, 9, 9, 9); +#endif + hboxLayout4->setObjectName(QString::fromUtf8("hboxLayout4")); + RB1NpM = new QRadioButton(GBTypeNoConf); + RB1NpM->setObjectName(QString::fromUtf8("RB1NpM")); + hboxLayout4->addWidget(RB1NpM); - gridLayout->addLayout(hboxLayout, 9, 0, 1, 1); + RB1NpA = new QRadioButton(GBTypeNoConf); + RB1NpA->setObjectName(QString::fromUtf8("RB1NpA")); - hboxLayout1 = new QHBoxLayout(); - hboxLayout1->setSpacing(6); - hboxLayout1->setMargin(0); - hboxLayout1->setObjectName(QString::fromUtf8("hboxLayout1")); - Name = new QLabel(CreateCase); - Name->setObjectName(QString::fromUtf8("Name")); + hboxLayout4->addWidget(RB1NpA); - hboxLayout1->addWidget(Name); + RBQuelconque = new QRadioButton(GBTypeNoConf); + RBQuelconque->setObjectName(QString::fromUtf8("RBQuelconque")); - LECaseName = new QLineEdit(CreateCase); - LECaseName->setObjectName(QString::fromUtf8("LECaseName")); - LECaseName->setMinimumSize(QSize(382, 21)); + hboxLayout4->addWidget(RBQuelconque); - hboxLayout1->addWidget(LECaseName); + gridLayout_2->addWidget(GBTypeNoConf, 7, 0, 1, 3); - gridLayout->addLayout(hboxLayout1, 0, 0, 1, 2); + spacerItem3 = new QSpacerItem(20, 0, QSizePolicy::Minimum, QSizePolicy::Expanding); - hboxLayout2 = new QHBoxLayout(); - hboxLayout2->setSpacing(6); - hboxLayout2->setMargin(0); - hboxLayout2->setObjectName(QString::fromUtf8("hboxLayout2")); - Directory = new QLabel(CreateCase); - Directory->setObjectName(QString::fromUtf8("Directory")); + gridLayout_2->addItem(spacerItem3, 8, 1, 1, 3); - hboxLayout2->addWidget(Directory); + hboxLayout5 = new QHBoxLayout(); +#ifndef Q_OS_MAC + hboxLayout5->setSpacing(6); +#endif + hboxLayout5->setContentsMargins(0, 0, 0, 0); + hboxLayout5->setObjectName(QString::fromUtf8("hboxLayout5")); + CBBoundaryD = new QCheckBox(CreateCase); + CBBoundaryD->setObjectName(QString::fromUtf8("CBBoundaryD")); - PushDir = new QPushButton(CreateCase); - PushDir->setObjectName(QString::fromUtf8("PushDir")); - PushDir->setAutoDefault(false); + hboxLayout5->addWidget(CBBoundaryD); - hboxLayout2->addWidget(PushDir); + CBBoundaryA = new QCheckBox(CreateCase); + CBBoundaryA->setObjectName(QString::fromUtf8("CBBoundaryA")); - LEDirName = new QLineEdit(CreateCase); - LEDirName->setObjectName(QString::fromUtf8("LEDirName")); - LEDirName->setMinimumSize(QSize(382, 21)); + hboxLayout5->addWidget(CBBoundaryA); - hboxLayout2->addWidget(LEDirName); + gridLayout_2->addLayout(hboxLayout5, 9, 0, 1, 2); - gridLayout->addLayout(hboxLayout2, 1, 0, 1, 1); + spacerItem4 = new QSpacerItem(20, 2, QSizePolicy::Minimum, QSizePolicy::Expanding); - hboxLayout3 = new QHBoxLayout(); - hboxLayout3->setSpacing(6); - hboxLayout3->setMargin(0); - hboxLayout3->setObjectName(QString::fromUtf8("hboxLayout3")); - Mesh_2 = new QLabel(CreateCase); - Mesh_2->setObjectName(QString::fromUtf8("Mesh_2")); + gridLayout_2->addItem(spacerItem4, 10, 1, 1, 1); - hboxLayout3->addWidget(Mesh_2); + GBBoundaryD = new QGroupBox(CreateCase); + GBBoundaryD->setObjectName(QString::fromUtf8("GBBoundaryD")); + sizePolicy.setHeightForWidth(GBBoundaryD->sizePolicy().hasHeightForWidth()); + GBBoundaryD->setSizePolicy(sizePolicy); + gridLayout = new QGridLayout(GBBoundaryD); +#ifndef Q_OS_MAC + gridLayout->setSpacing(6); +#endif +#ifndef Q_OS_MAC + gridLayout->setContentsMargins(9, 9, 9, 9); +#endif + gridLayout->setObjectName(QString::fromUtf8("gridLayout")); + PBBoundaryDiEdit = new QPushButton(GBBoundaryD); + PBBoundaryDiEdit->setObjectName(QString::fromUtf8("PBBoundaryDiEdit")); + PBBoundaryDiEdit->setAutoDefault(false); - PushFichier = new QPushButton(CreateCase); - PushFichier->setObjectName(QString::fromUtf8("PushFichier")); - PushFichier->setAutoDefault(false); + gridLayout->addWidget(PBBoundaryDiEdit, 0, 3, 1, 1); - hboxLayout3->addWidget(PushFichier); + PBBoundaryDiNew = new QPushButton(GBBoundaryD); + PBBoundaryDiNew->setObjectName(QString::fromUtf8("PBBoundaryDiNew")); + PBBoundaryDiNew->setAutoDefault(false); - LEFileName = new QLineEdit(CreateCase); - LEFileName->setObjectName(QString::fromUtf8("LEFileName")); - LEFileName->setMinimumSize(QSize(382, 21)); + gridLayout->addWidget(PBBoundaryDiNew, 0, 2, 1, 1); - hboxLayout3->addWidget(LEFileName); + CBBoundaryDi = new QComboBox(GBBoundaryD); + CBBoundaryDi->setObjectName(QString::fromUtf8("CBBoundaryDi")); + CBBoundaryDi->setSizeAdjustPolicy(QComboBox::AdjustToContents); + gridLayout->addWidget(CBBoundaryDi, 0, 0, 1, 1); - gridLayout->addLayout(hboxLayout3, 3, 0, 1, 2); + spacerItem5 = new QSpacerItem(40, 13, QSizePolicy::Fixed, QSizePolicy::Minimum); - spacerItem1 = new QSpacerItem(20, 0, QSizePolicy::Minimum, QSizePolicy::Expanding); + gridLayout->addItem(spacerItem5, 0, 1, 1, 1); - gridLayout->addItem(spacerItem1, 4, 0, 1, 1); + PBBoundaryDiHelp = new QPushButton(GBBoundaryD); + PBBoundaryDiHelp->setObjectName(QString::fromUtf8("PBBoundaryDiHelp")); + PBBoundaryDiHelp->setAutoDefault(false); - GBTypeConf = new QGroupBox(CreateCase); - GBTypeConf->setObjectName(QString::fromUtf8("GBTypeConf")); - hboxLayout4 = new QHBoxLayout(GBTypeConf); - hboxLayout4->setSpacing(6); - hboxLayout4->setMargin(9); - hboxLayout4->setObjectName(QString::fromUtf8("hboxLayout4")); - RBConforme = new QRadioButton(GBTypeConf); - RBConforme->setObjectName(QString::fromUtf8("RBConforme")); - RBConforme->setChecked(true); + gridLayout->addWidget(PBBoundaryDiHelp, 0, 4, 1, 1); - hboxLayout4->addWidget(RBConforme); - RBNonConforme = new QRadioButton(GBTypeConf); - RBNonConforme->setObjectName(QString::fromUtf8("RBNonConforme")); + gridLayout_2->addWidget(GBBoundaryD, 11, 0, 1, 3); - hboxLayout4->addWidget(RBNonConforme); + GBBoundaryA = new QGroupBox(CreateCase); + GBBoundaryA->setObjectName(QString::fromUtf8("GBBoundaryA")); + GBBoundaryA->setMinimumSize(QSize(548, 200)); + formLayout = new QFormLayout(GBBoundaryA); + formLayout->setObjectName(QString::fromUtf8("formLayout")); + TWBoundary = new QTableWidget(GBBoundaryA); + if (TWBoundary->columnCount() < 1) + TWBoundary->setColumnCount(1); + QTableWidgetItem *__qtablewidgetitem = new QTableWidgetItem(); + TWBoundary->setHorizontalHeaderItem(0, __qtablewidgetitem); + TWBoundary->setObjectName(QString::fromUtf8("TWBoundary")); + TWBoundary->setEditTriggers(QAbstractItemView::AnyKeyPressed|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed|QAbstractItemView::SelectedClicked); + TWBoundary->setShowGrid(true); + TWBoundary->setRowCount(0); + TWBoundary->setColumnCount(1); + + formLayout->setWidget(0, QFormLayout::LabelRole, TWBoundary); + + gridLayout1 = new QGridLayout(); +#ifndef Q_OS_MAC + gridLayout1->setSpacing(6); +#endif + gridLayout1->setContentsMargins(0, 0, 0, 0); + gridLayout1->setObjectName(QString::fromUtf8("gridLayout1")); + PBBoundaryAnEdit = new QPushButton(GBBoundaryA); + PBBoundaryAnEdit->setObjectName(QString::fromUtf8("PBBoundaryAnEdit")); + PBBoundaryAnEdit->setAutoDefault(false); + + gridLayout1->addWidget(PBBoundaryAnEdit, 1, 0, 1, 1); + + PBBoundaryAnNew = new QPushButton(GBBoundaryA); + PBBoundaryAnNew->setObjectName(QString::fromUtf8("PBBoundaryAnNew")); + PBBoundaryAnNew->setAutoDefault(false); + + gridLayout1->addWidget(PBBoundaryAnNew, 0, 0, 1, 1); + + PBBoundaryAnHelp = new QPushButton(GBBoundaryA); + PBBoundaryAnHelp->setObjectName(QString::fromUtf8("PBBoundaryAnHelp")); + PBBoundaryAnHelp->setAutoDefault(false); + + gridLayout1->addWidget(PBBoundaryAnHelp, 2, 0, 1, 1); + + + formLayout->setLayout(0, QFormLayout::FieldRole, gridLayout1); - gridLayout->addWidget(GBTypeConf, 5, 0, 1, 2); + gridLayout_2->addWidget(GBBoundaryA, 12, 0, 1, 4); - spacerItem2 = new QSpacerItem(20, 1, QSizePolicy::Minimum, QSizePolicy::Expanding); + spacer = new QSpacerItem(239, 41, QSizePolicy::Minimum, QSizePolicy::Expanding); - gridLayout->addItem(spacerItem2, 6, 0, 1, 1); + gridLayout_2->addItem(spacer, 13, 0, 1, 1); - GBTypeNoConf = new QGroupBox(CreateCase); - GBTypeNoConf->setObjectName(QString::fromUtf8("GBTypeNoConf")); - hboxLayout5 = new QHBoxLayout(GBTypeNoConf); - hboxLayout5->setSpacing(6); - hboxLayout5->setMargin(9); - hboxLayout5->setObjectName(QString::fromUtf8("hboxLayout5")); - RB1NpM = new QRadioButton(GBTypeNoConf); - RB1NpM->setObjectName(QString::fromUtf8("RB1NpM")); + CBAdvanced = new QCheckBox(CreateCase); + CBAdvanced->setObjectName(QString::fromUtf8("CBAdvanced")); - hboxLayout5->addWidget(RB1NpM); + gridLayout_2->addWidget(CBAdvanced, 14, 0, 1, 1); - RB1NpA = new QRadioButton(GBTypeNoConf); - RB1NpA->setObjectName(QString::fromUtf8("RB1NpA")); + GBAdvancedOptions = new QGroupBox(CreateCase); + GBAdvancedOptions->setObjectName(QString::fromUtf8("GBAdvancedOptions")); + gridLayout2 = new QGridLayout(GBAdvancedOptions); + gridLayout2->setObjectName(QString::fromUtf8("gridLayout2")); + CBPyramid = new QCheckBox(GBAdvancedOptions); + CBPyramid->setObjectName(QString::fromUtf8("CBPyramid")); - hboxLayout5->addWidget(RB1NpA); + gridLayout2->addWidget(CBPyramid, 0, 0, 1, 1); - RBQuelconque = new QRadioButton(GBTypeNoConf); - RBQuelconque->setObjectName(QString::fromUtf8("RBQuelconque")); - hboxLayout5->addWidget(RBQuelconque); + gridLayout_2->addWidget(GBAdvancedOptions, 15, 0, 1, 2); + spacer_3 = new QSpacerItem(128, 13, QSizePolicy::Fixed, QSizePolicy::Minimum); - gridLayout->addWidget(GBTypeNoConf, 7, 0, 1, 2); + gridLayout_2->addItem(spacer_3, 15, 2, 1, 2); - spacerItem3 = new QSpacerItem(20, 0, QSizePolicy::Minimum, QSizePolicy::Expanding); + spacer_4 = new QSpacerItem(239, 41, QSizePolicy::Minimum, QSizePolicy::Expanding); - gridLayout->addItem(spacerItem3, 8, 0, 1, 1); + gridLayout_2->addItem(spacer_4, 16, 0, 1, 2); - spacerItem4 = new QSpacerItem(20, 2, QSizePolicy::Minimum, QSizePolicy::Expanding); + GroupButtons = new QGroupBox(CreateCase); + GroupButtons->setObjectName(QString::fromUtf8("GroupButtons")); + gridLayout3 = new QGridLayout(GroupButtons); +#ifndef Q_OS_MAC + gridLayout3->setSpacing(6); +#endif +#ifndef Q_OS_MAC + gridLayout3->setContentsMargins(9, 9, 9, 9); +#endif + gridLayout3->setObjectName(QString::fromUtf8("gridLayout3")); + buttonHelp = new QPushButton(GroupButtons); + buttonHelp->setObjectName(QString::fromUtf8("buttonHelp")); + buttonHelp->setAutoDefault(false); - gridLayout->addItem(spacerItem4, 10, 0, 1, 1); + gridLayout3->addWidget(buttonHelp, 0, 4, 1, 1); - spacerItem5 = new QSpacerItem(20, 18, QSizePolicy::Minimum, QSizePolicy::Expanding); + buttonApply = new QPushButton(GroupButtons); + buttonApply->setObjectName(QString::fromUtf8("buttonApply")); + buttonApply->setAutoDefault(false); - gridLayout->addItem(spacerItem5, 2, 1, 1, 1); + gridLayout3->addWidget(buttonApply, 0, 1, 1, 1); + buttonOk = new QPushButton(GroupButtons); + buttonOk->setObjectName(QString::fromUtf8("buttonOk")); + buttonOk->setAutoDefault(false); - retranslateUi(CreateCase); + gridLayout3->addWidget(buttonOk, 0, 0, 1, 1); - QSize size(601, 843); - size = size.expandedTo(CreateCase->minimumSizeHint()); - CreateCase->resize(size); + buttonCancel = new QPushButton(GroupButtons); + buttonCancel->setObjectName(QString::fromUtf8("buttonCancel")); + buttonCancel->setAutoDefault(false); + gridLayout3->addWidget(buttonCancel, 0, 2, 1, 1); - CBBoundaryDi->setCurrentIndex(-1); + gridLayout_2->addWidget(GroupButtons, 17, 0, 1, 3); - QMetaObject::connectSlotsByName(CreateCase); + spacer_2 = new QSpacerItem(128, 25, QSizePolicy::Fixed, QSizePolicy::Minimum); + + gridLayout_2->addItem(spacer_2, 17, 3, 1, 1); + + + retranslateUi(CreateCase); + + CBBoundaryDi->setCurrentIndex(-1); + + + QMetaObject::connectSlotsByName(CreateCase); } // setupUi void retranslateUi(QDialog *CreateCase) { - CreateCase->setWindowTitle(QApplication::translate("CreateCase", "Create a case", 0, QApplication::UnicodeUTF8)); - GBBoundaryA->setTitle(QApplication::translate("CreateCase", "Analytical boundary", 0, QApplication::UnicodeUTF8)); - if (TWBoundary->columnCount() < 1) - TWBoundary->setColumnCount(1); - - QTableWidgetItem *__colItem = new QTableWidgetItem(); - __colItem->setText(QApplication::translate("CreateCase", "a_virer", 0, QApplication::UnicodeUTF8)); - TWBoundary->setHorizontalHeaderItem(0, __colItem); - PBBoundaryAnEdit->setText(QApplication::translate("CreateCase", "Edit", 0, QApplication::UnicodeUTF8)); - PBBoundaryAnNew->setText(QApplication::translate("CreateCase", "New", 0, QApplication::UnicodeUTF8)); - PBBoundaryAnHelp->setText(QApplication::translate("CreateCase", "Help", 0, QApplication::UnicodeUTF8)); - GBBoundaryD->setTitle(QApplication::translate("CreateCase", "Discrete boundary", 0, QApplication::UnicodeUTF8)); - PBBoundaryDiEdit->setText(QApplication::translate("CreateCase", "Edit", 0, QApplication::UnicodeUTF8)); - PBBoundaryDiNew->setText(QApplication::translate("CreateCase", "New", 0, QApplication::UnicodeUTF8)); - PBBoundaryDiHelp->setText(QApplication::translate("CreateCase", "Help", 0, QApplication::UnicodeUTF8)); - GroupButtons->setTitle(QString()); - buttonHelp->setText(QApplication::translate("CreateCase", "Help", 0, QApplication::UnicodeUTF8)); - buttonCancel->setText(QApplication::translate("CreateCase", "Cancel", 0, QApplication::UnicodeUTF8)); - buttonApply->setText(QApplication::translate("CreateCase", "Apply", 0, QApplication::UnicodeUTF8)); - buttonOk->setText(QApplication::translate("CreateCase", "OK", 0, QApplication::UnicodeUTF8)); - CBBoundaryD->setText(QApplication::translate("CreateCase", "Discrete boundary", 0, QApplication::UnicodeUTF8)); - CBBoundaryA->setText(QApplication::translate("CreateCase", "Analytical boundary", 0, QApplication::UnicodeUTF8)); - Name->setText(QApplication::translate("CreateCase", "Name", 0, QApplication::UnicodeUTF8)); - Directory->setText(QApplication::translate("CreateCase", "Directory", 0, QApplication::UnicodeUTF8)); - PushDir->setText(QString()); - Mesh_2->setText(QApplication::translate("CreateCase", "Mesh", 0, QApplication::UnicodeUTF8)); - PushFichier->setText(QString()); - GBTypeConf->setTitle(QApplication::translate("CreateCase", "Conformity type", 0, QApplication::UnicodeUTF8)); - RBConforme->setText(QApplication::translate("CreateCase", "Conformal", 0, QApplication::UnicodeUTF8)); - RBNonConforme->setText(QApplication::translate("CreateCase", "Non conformal", 0, QApplication::UnicodeUTF8)); - GBTypeNoConf->setTitle(QApplication::translate("CreateCase", "Non conformal option", 0, QApplication::UnicodeUTF8)); - RB1NpM->setText(QApplication::translate("CreateCase", "1 hanging node per mesh", 0, QApplication::UnicodeUTF8)); - RB1NpA->setText(QApplication::translate("CreateCase", "1 node per edge", 0, QApplication::UnicodeUTF8)); - RBQuelconque->setText(QApplication::translate("CreateCase", "Free", 0, QApplication::UnicodeUTF8)); - Q_UNUSED(CreateCase); + CreateCase->setWindowTitle(QApplication::translate("CreateCase", "Create a case", 0, QApplication::UnicodeUTF8)); + Name->setText(QApplication::translate("CreateCase", "Name", 0, QApplication::UnicodeUTF8)); + Directory->setText(QApplication::translate("CreateCase", "Directory", 0, QApplication::UnicodeUTF8)); + PushDir->setText(QString()); + Mesh_2->setText(QApplication::translate("CreateCase", "Mesh", 0, QApplication::UnicodeUTF8)); + PushFichier->setText(QString()); + GBTypeConf->setTitle(QApplication::translate("CreateCase", "Conformity type", 0, QApplication::UnicodeUTF8)); + RBConforme->setText(QApplication::translate("CreateCase", "Conformal", 0, QApplication::UnicodeUTF8)); + RBNonConforme->setText(QApplication::translate("CreateCase", "Non conformal", 0, QApplication::UnicodeUTF8)); + GBTypeNoConf->setTitle(QApplication::translate("CreateCase", "Non conformal option", 0, QApplication::UnicodeUTF8)); + RB1NpM->setText(QApplication::translate("CreateCase", "1 hanging node per mesh", 0, QApplication::UnicodeUTF8)); + RB1NpA->setText(QApplication::translate("CreateCase", "1 node per edge", 0, QApplication::UnicodeUTF8)); + RBQuelconque->setText(QApplication::translate("CreateCase", "Free", 0, QApplication::UnicodeUTF8)); + CBBoundaryD->setText(QApplication::translate("CreateCase", "Discrete boundary", 0, QApplication::UnicodeUTF8)); + CBBoundaryA->setText(QApplication::translate("CreateCase", "Analytical boundary", 0, QApplication::UnicodeUTF8)); + GBBoundaryD->setTitle(QApplication::translate("CreateCase", "Discrete boundary", 0, QApplication::UnicodeUTF8)); + PBBoundaryDiEdit->setText(QApplication::translate("CreateCase", "Edit", 0, QApplication::UnicodeUTF8)); + PBBoundaryDiNew->setText(QApplication::translate("CreateCase", "New", 0, QApplication::UnicodeUTF8)); + PBBoundaryDiHelp->setText(QApplication::translate("CreateCase", "Help", 0, QApplication::UnicodeUTF8)); + GBBoundaryA->setTitle(QApplication::translate("CreateCase", "Analytical boundary", 0, QApplication::UnicodeUTF8)); + QTableWidgetItem *___qtablewidgetitem = TWBoundary->horizontalHeaderItem(0); + ___qtablewidgetitem->setText(QApplication::translate("CreateCase", "a_virer", 0, QApplication::UnicodeUTF8)); + PBBoundaryAnEdit->setText(QApplication::translate("CreateCase", "Edit", 0, QApplication::UnicodeUTF8)); + PBBoundaryAnNew->setText(QApplication::translate("CreateCase", "New", 0, QApplication::UnicodeUTF8)); + PBBoundaryAnHelp->setText(QApplication::translate("CreateCase", "Help", 0, QApplication::UnicodeUTF8)); + CBAdvanced->setText(QApplication::translate("CreateCase", "Advanced options", 0, QApplication::UnicodeUTF8)); + GBAdvancedOptions->setTitle(QApplication::translate("CreateCase", "Advanced options", 0, QApplication::UnicodeUTF8)); + CBPyramid->setText(QApplication::translate("CreateCase", "Authorized pyramids", 0, QApplication::UnicodeUTF8)); + GroupButtons->setTitle(QString()); + buttonHelp->setText(QApplication::translate("CreateCase", "Help", 0, QApplication::UnicodeUTF8)); + buttonApply->setText(QApplication::translate("CreateCase", "Apply", 0, QApplication::UnicodeUTF8)); + buttonOk->setText(QApplication::translate("CreateCase", "OK", 0, QApplication::UnicodeUTF8)); + buttonCancel->setText(QApplication::translate("CreateCase", "Cancel", 0, QApplication::UnicodeUTF8)); } // retranslateUi }; @@ -413,4 +483,6 @@ namespace Ui { class CreateCase: public Ui_CreateCase {}; } // namespace Ui +QT_END_NAMESPACE + #endif // CREATECASE_H diff --git a/src/HOMARDGUI/CreateCase.ui b/src/HOMARDGUI/CreateCase.ui index 3bdc0ef5..95204dcd 100644 --- a/src/HOMARDGUI/CreateCase.ui +++ b/src/HOMARDGUI/CreateCase.ui @@ -1,299 +1,46 @@ - + + CreateCase - - + + 0 0 601 - 843 + 1070 - - - 0 - 0 + + 0 0 - + Create a case - + true - - - 9 - - - 6 - - - - - - 548 - 200 - - - - Analytical boundary - - - - - 4 - 20 - 371 - 161 - - - - QAbstractItemView::AnyKeyPressed|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed|QAbstractItemView::NoEditTriggers|QAbstractItemView::SelectedClicked - - - true - - - 0 - - - 1 - - - - a_virer - - - - - - - 430 - 40 - 77 - 95 - - - - - 0 - - - 6 - - - - - Edit - - - false - - - - - - - New - - - false - - - - - - - Help - - - false - - - - - - - - - - - - 0 - 0 - 0 - 0 - - - - Discrete boundary - - - - 9 - - - 6 - - - - - Edit - - - false - - - - - - - New - - - false - - - - - - - -1 - - - QComboBox::AdjustToContents - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 40 - 13 - - - - - - - - Help - - - false - - - - - - - - - - - - - - 9 - - - 6 - - - - - Help - - - false - - - - - - - Cancel - - - false - - - - - - - Apply - - - false - - - - - - - OK - - - false - - - - - - - - - - 0 - - + + + + 6 - - - - Discrete boundary - - - - - - - Analytical boundary - - - - - - - - + 0 - - 6 - - - + + Name - - + + 382 21 @@ -303,34 +50,34 @@ - - - - 0 - - + + + 6 + + 0 + - - + + Directory - - + + - + false - - + + 382 21 @@ -340,34 +87,47 @@ - - - - 0 + + + + Qt::Vertical - + + + 20 + 18 + + + + + + + 6 + + 0 + - - + + Mesh - - + + - + false - - + + 382 21 @@ -377,12 +137,12 @@ - + - + Qt::Vertical - + 20 0 @@ -390,31 +150,31 @@ - - - + + + Conformity type - - - 9 - - + + 6 + + 9 + - - + + Conformal - + true - - + + Non conformal @@ -422,12 +182,12 @@ - + - + Qt::Vertical - + 20 1 @@ -435,35 +195,35 @@ - - - + + + Non conformal option - - - 9 - - + + 6 + + 9 + - - + + 1 hanging node per mesh - - + + 1 node per edge - - + + Free @@ -471,12 +231,12 @@ - + - + Qt::Vertical - + 20 0 @@ -484,12 +244,36 @@ - + + + + 6 + + + 0 + + + + + Discrete boundary + + + + + + + Analytical boundary + + + + + + - + Qt::Vertical - + 20 2 @@ -497,15 +281,291 @@ - - - + + + + + 0 + 0 + + + + Discrete boundary + + + + 9 + + + 6 + + + + + Edit + + + false + + + + + + + New + + + false + + + + + + + -1 + + + QComboBox::AdjustToContents + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 40 + 13 + + + + + + + + Help + + + false + + + + + + + + + + + 548 + 200 + + + + Analytical boundary + + + + + + QAbstractItemView::AnyKeyPressed|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed|QAbstractItemView::SelectedClicked + + + true + + + 0 + + + 1 + + + + a_virer + + + + + + + + 0 + + + 6 + + + + + Edit + + + false + + + + + + + New + + + false + + + + + + + Help + + + false + + + + + + + + + + + Qt::Vertical - + - 20 - 18 + 239 + 41 + + + + + + + + Advanced options + + + + + + + Advanced options + + + + + + Authorized pyramids + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 128 + 13 + + + + + + + + Qt::Vertical + + + + 239 + 41 + + + + + + + + + + + + 9 + + + 6 + + + + + Help + + + false + + + + + + + Apply + + + false + + + + + + + OK + + + false + + + + + + + Cancel + + + false + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 128 + 25 diff --git a/src/HOMARDGUI/HOMARD_msg_fr.ts b/src/HOMARDGUI/HOMARD_msg_fr.ts index 4741dc74..9d3dce94 100644 --- a/src/HOMARDGUI/HOMARD_msg_fr.ts +++ b/src/HOMARDGUI/HOMARD_msg_fr.ts @@ -339,6 +339,10 @@ Advanced options Options avancées + + Authorized pyramids + Pyramides autorisées + Minimal diameter Diamètre minimal diff --git a/src/HOMARDGUI/MonCreateCase.cxx b/src/HOMARDGUI/MonCreateCase.cxx index 477525d1..6934339a 100644 --- a/src/HOMARDGUI/MonCreateCase.cxx +++ b/src/HOMARDGUI/MonCreateCase.cxx @@ -43,8 +43,10 @@ MonCreateCase::MonCreateCase(QWidget* parent, bool modal, HOMARD::HOMARD_Gen_var */ : Ui_CreateCase(), - _aCaseName(""),_aDirName(""), _ConfType(1) - { + _aCaseName(""),_aDirName(""), + _ConfType(1), + _Pyram(0) +{ _myHomardGen=HOMARD::HOMARD_Gen::_duplicate(myHomardGen); setupUi(this); setModal(modal); @@ -55,7 +57,9 @@ MonCreateCase::MonCreateCase(QWidget* parent, bool modal, HOMARD::HOMARD_Gen_var GBBoundaryD->setVisible(0); GBTypeNoConf->setVisible(0); adjustSize(); - } + GBAdvancedOptions->setVisible(0); + CBPyramid->setChecked(false); +} // ------------------------------------------------------------------------ MonCreateCase::~MonCreateCase() @@ -85,6 +89,8 @@ void MonCreateCase::InitConnect() connect( PBBoundaryAnEdit, SIGNAL(pressed()), this, SLOT(PushBoundaryAnEdit()) ); connect( PBBoundaryAnHelp, SIGNAL(pressed()), this, SLOT(PushBoundaryAnHelp()) ); + connect( CBAdvanced, SIGNAL(stateChanged(int)), this, SLOT(SetAdvanced())); + connect( buttonOk, SIGNAL(pressed()), this, SLOT(PushOnOK())); connect( buttonApply, SIGNAL(pressed()), this, SLOT(PushOnApply())); connect( buttonCancel, SIGNAL(pressed()), this, SLOT(close())); @@ -274,6 +280,13 @@ bool MonCreateCase::PushOnApply() } } +// Options avancees + if (CBAdvanced->isChecked()) + { +// Autorisation des pyramides + if (CBPyramid->isChecked()) { _Pyram = 1 ; } + } + HOMARD_UTILS::updateObjBrowser(); return true; } @@ -499,3 +512,16 @@ void MonCreateCase::CaseNameChanged() PushFichier->show(); } } +// ------------------------------------------------------------------------ +void MonCreateCase::SetAdvanced() +// ------------------------------------------------------------------------ +{ + MESSAGE("Debut de SetAdvanced "); + if (CBAdvanced->isChecked()) { GBAdvancedOptions->setVisible(1); } + else + { GBAdvancedOptions->setVisible(0); + CBPyramid->setChecked(false); + _Pyram = 0 ; + } + adjustSize(); +} diff --git a/src/HOMARDGUI/MonCreateCase.h b/src/HOMARDGUI/MonCreateCase.h index cb4c62d4..bb6ce470 100644 --- a/src/HOMARDGUI/MonCreateCase.h +++ b/src/HOMARDGUI/MonCreateCase.h @@ -47,6 +47,8 @@ protected : int _ConfType; + int _Pyram; + HOMARD::HOMARD_Cas_var aCase ; HOMARD::HOMARD_Gen_var _myHomardGen; @@ -73,6 +75,8 @@ public slots: virtual void PushBoundaryAnEdit(); virtual void PushBoundaryAnHelp(); + virtual void SetAdvanced(); + virtual void PushOnOK(); virtual bool PushOnApply(); virtual void PushOnHelp(); diff --git a/src/HOMARDGUI/MonEditCase.cxx b/src/HOMARDGUI/MonEditCase.cxx index 7a1b3963..199d5460 100644 --- a/src/HOMARDGUI/MonEditCase.cxx +++ b/src/HOMARDGUI/MonEditCase.cxx @@ -54,7 +54,7 @@ MonEditCase::~MonEditCase() void MonEditCase::InitValEdit() // ------------------------------ { - MESSAGE("Debut de MonEditCase::InitValEdit"); + MESSAGE("InitValEdit"); LECaseName->setText(_aCaseName); LECaseName->setReadOnly(true); @@ -179,6 +179,21 @@ void MonEditCase::InitValEdit() PBBoundaryDiNew->setVisible(0); PBBoundaryDiHelp->setVisible(0); } } +// +// Les options avancees (non modifiables) + CBAdvanced->setVisible(0) ; + CBAdvanced->setEnabled(false) ; + int Pyram = aCase->GetPyram(); + MESSAGE("Pyram "< 0 ) + { GBAdvancedOptions->setVisible(1); + CBPyramid->setChecked(true); + CBPyramid->setEnabled(false); + } + else + { GBAdvancedOptions->setVisible(0); + CBPyramid->setChecked(false); + } // adjustSize(); } @@ -188,5 +203,4 @@ bool MonEditCase::PushOnApply() // ------------------------------------- { return true ; - }; diff --git a/src/HOMARDGUI/MonEditHypothesis.cxx b/src/HOMARDGUI/MonEditHypothesis.cxx index b01ddbe1..e31e5808 100644 --- a/src/HOMARDGUI/MonEditHypothesis.cxx +++ b/src/HOMARDGUI/MonEditHypothesis.cxx @@ -102,12 +102,20 @@ void MonEditHypothesis::InitValEdit() CBAdvanced->setVisible(0) ; int NivMax = _aHypothesis->GetNivMax(); double DiamMin = _aHypothesis->GetDiamMin(); - if ( NivMax > 0 ) + if ( NivMax > 0 or DiamMin > 0 ) { GBAdvancedOptions->setVisible(1); - spinBoxNivMax->setValue(NivMax); - spinBoxNivMax->setDisabled(true); - doubleSpinBoxDiamMin->setValue(DiamMin); - doubleSpinBoxDiamMin->setDisabled(true); + if ( NivMax > 0 ) + { spinBoxNivMax->setValue(NivMax); + spinBoxNivMax->setDisabled(true); } + else + { TLMaximalLevel->setVisible(0); + spinBoxNivMax->setVisible(0); } + if ( DiamMin > 0 ) + { doubleSpinBoxDiamMin->setValue(DiamMin); + doubleSpinBoxDiamMin->setDisabled(true); } + else + { TLMinimalDiameter->setVisible(0); + doubleSpinBoxDiamMin->setVisible(0); } } else { GBAdvancedOptions->setVisible(0); } diff --git a/src/HOMARD_I/HOMARD_Cas_i.cxx b/src/HOMARD_I/HOMARD_Cas_i.cxx index a5077680..92586a7f 100755 --- a/src/HOMARD_I/HOMARD_Cas_i.cxx +++ b/src/HOMARD_I/HOMARD_Cas_i.cxx @@ -205,14 +205,14 @@ HOMARD::ListGroupType* HOMARD_Cas_i::GetGroups() //============================================================================= void HOMARD_Cas_i::AddBoundaryGroup( const char* Boundary, const char* Group) { - MESSAGE ("Dans AddBoundaryGroup"); + MESSAGE ("AddBoundaryGroup"); ASSERT( myHomardCas ); myHomardCas->AddBoundaryGroup( Boundary, Group ); } //============================================================================= HOMARD::ListBoundaryGroupType* HOMARD_Cas_i::GetBoundaryGroup() { - MESSAGE ("Dans GetBoundaryGroup"); + MESSAGE ("GetBoundaryGroup"); ASSERT(myHomardCas ); const std::list& ListString = myHomardCas->GetBoundaryGroup(); HOMARD::ListBoundaryGroupType_var aResult = new HOMARD::ListBoundaryGroupType(); @@ -226,6 +226,20 @@ HOMARD::ListBoundaryGroupType* HOMARD_Cas_i::GetBoundaryGroup() return aResult._retn(); } +//============================================================================= +void HOMARD_Cas_i::SetPyram( CORBA::Long Pyram ) +{ + MESSAGE ("SetPyram, Pyram = " << Pyram ); + ASSERT( myHomardCas ); + myHomardCas->SetPyram( Pyram ); +} +//============================================================================= +CORBA::Long HOMARD_Cas_i::GetPyram() +{ + MESSAGE ("GetPyram"); + ASSERT( myHomardCas ); + return myHomardCas->GetPyram(); +} //============================================================================= std::string HOMARD_Cas_i::Dump() const { diff --git a/src/HOMARD_I/HOMARD_Cas_i.hxx b/src/HOMARD_I/HOMARD_Cas_i.hxx index cf63e55d..79f7f91d 100644 --- a/src/HOMARD_I/HOMARD_Cas_i.hxx +++ b/src/HOMARD_I/HOMARD_Cas_i.hxx @@ -65,6 +65,9 @@ public: HOMARD::ListBoundaryGroupType* GetBoundaryGroup(); void AddBoundaryGroup( const char* Boundary, const char* Group); + void SetPyram( CORBA::Long Pyram ); + CORBA::Long GetPyram(); + std::string Dump() const; bool Restore( const std::string& stream ); diff --git a/src/HOMARD_I/HOMARD_Gen_i.cxx b/src/HOMARD_I/HOMARD_Gen_i.cxx index bf9fb00f..eb4fb142 100755 --- a/src/HOMARD_I/HOMARD_Gen_i.cxx +++ b/src/HOMARD_I/HOMARD_Gen_i.cxx @@ -585,6 +585,9 @@ HOMARD::HOMARD_Cas_ptr HOMARD_Gen_i::CreateCase(const char* nomCas, const char* // PublishResultInSmesh(MeshFile, 0); +// Valeurs par defaut des filtrages + myCase->SetPyram(0); + return HOMARD::HOMARD_Cas::_duplicate(myCase); } @@ -601,6 +604,7 @@ HOMARD::HOMARD_Cas_ptr HOMARD_Gen_i::GetCas(const char* nomCas) throw SALOME::SALOME_Exception(es); return 0; }; + return HOMARD::HOMARD_Cas::_duplicate(myCase); } @@ -991,7 +995,7 @@ HOMARD::HOMARD_Zone_ptr HOMARD_Gen_i::CreateZoneDiskWithHole(const char* ZoneNam //============================================================================= -CORBA::Boolean HOMARD_Gen_i::Compute(const char* nomIteration, CORBA::Long etatMenage) +CORBA::Long HOMARD_Gen_i::Compute(const char* nomIteration, CORBA::Long etatMenage) { MESSAGE ( "Compute : calcul de " << nomIteration ); IsValidStudy () ; @@ -1007,7 +1011,7 @@ CORBA::Boolean HOMARD_Gen_i::Compute(const char* nomIteration, CORBA::Long etatM es.type = SALOME::BAD_PARAM; es.text = "This iteration is the first of the case and cannot be computed."; throw SALOME::SALOME_Exception(es); - return 0; + return 1; }; // on verifie qu il y a une hypothese (erreur improbable); @@ -1018,7 +1022,7 @@ CORBA::Boolean HOMARD_Gen_i::Compute(const char* nomIteration, CORBA::Long etatM es.type = SALOME::BAD_PARAM; es.text= "This iteration does not have any associated hypothesis."; throw SALOME::SALOME_Exception(es); - return 0; + return 2; } HOMARD::HOMARD_Hypothesis_var myHypo = myContextMap[GetCurrentStudyID()]._mesHypotheses[nomHypo]; ASSERT(!CORBA::is_nil(myHypo)); @@ -1038,7 +1042,12 @@ CORBA::Boolean HOMARD_Gen_i::Compute(const char* nomIteration, CORBA::Long etatM throw SALOME::SALOME_Exception(es); return 0; */ - Compute(nomIterationParent, etatMenage); + int codret = Compute(nomIterationParent, etatMenage); + if (codret != 0) + { + // GERALD -- QMESSAGE BOX + ASSERT("Pb au calcul de l'iteration precedente" == 0); + } }; const char* nomCas = myIteration->GetCaseName(); @@ -1119,7 +1128,7 @@ CORBA::Boolean HOMARD_Gen_i::Compute(const char* nomIteration, CORBA::Long etatM std::string text = "Directory : " + DirCompute.str() + "is not empty"; es.text = CORBA::string_dup(text.c_str()); throw SALOME::SALOME_Exception(es); - return false; + return 3; } } } @@ -1176,7 +1185,7 @@ CORBA::Boolean HOMARD_Gen_i::Compute(const char* nomIteration, CORBA::Long etatM std::string text = "MeshFile : " + std::string(MeshFile) + " already exists "; es.text = CORBA::string_dup(text.c_str()); throw SALOME::SALOME_Exception(es); - return false; + return 4; } else { @@ -1189,7 +1198,7 @@ CORBA::Boolean HOMARD_Gen_i::Compute(const char* nomIteration, CORBA::Long etatM std::string text = "PB with meshfile destruction "; es.text = CORBA::string_dup(text.c_str()); throw SALOME::SALOME_Exception(es); - return false; + return 5; } } } @@ -1427,14 +1436,13 @@ CORBA::Boolean HOMARD_Gen_i::Compute(const char* nomIteration, CORBA::Long etatM } } // E.7. Ajout des options avancees + int Pyram = myCase->GetPyram(); + MESSAGE ( ". Pyram = " << Pyram ); int NivMax = myHypo->GetNivMax(); MESSAGE ( ". NivMax = " << NivMax ); - if ( NivMax > 0 ) - { - double DiamMin = myHypo->GetDiamMin(); - MESSAGE ( ". DiamMin = " << DiamMin ); - myDriver->TexteAdvanced(NivMax, DiamMin); - } + double DiamMin = myHypo->GetDiamMin() ; + MESSAGE ( ". DiamMin = " << DiamMin ); + myDriver->TexteAdvanced(Pyram, NivMax, DiamMin); // F. Ecriture du texte dans le fichier if (codret == 0) @@ -1444,11 +1452,12 @@ CORBA::Boolean HOMARD_Gen_i::Compute(const char* nomIteration, CORBA::Long etatM // G. Execution // - int codretexec = 1 ; + int codretexec = 12 ; if (codret == 0) { codretexec = myDriver->ExecuteHomard(); // + MESSAGE ( "Erreur en executant HOMARD : " << codretexec ); if (codretexec == 0) { SetEtatIter(nomIteration,true); @@ -1509,8 +1518,7 @@ CORBA::Boolean HOMARD_Gen_i::Compute(const char* nomIteration, CORBA::Long etatM delete myDriver; } // - if (codret == 0) { return true; } - else { return false; } + return codretexec ; } //=========================================================================== diff --git a/src/HOMARD_I/HOMARD_Gen_i.hxx b/src/HOMARD_I/HOMARD_Gen_i.hxx index 85dd7aa8..8c8fb943 100644 --- a/src/HOMARD_I/HOMARD_Gen_i.hxx +++ b/src/HOMARD_I/HOMARD_Gen_i.hxx @@ -128,7 +128,7 @@ public: char* GetCaseName(const char* nomIteration); - CORBA::Boolean Compute(const char* nomIteration, CORBA::Long etatMenage); + CORBA::Long Compute(const char* nomIteration, CORBA::Long etatMenage); CORBA::Boolean VerifieDir(const char* nomDir); void PublishResultInSmesh(const char* NomFich, CORBA::Long IconeType); diff --git a/src/HOMARD_I/HOMARD_Iteration_i.cxx b/src/HOMARD_I/HOMARD_Iteration_i.cxx index 77e983a3..9b8851a6 100644 --- a/src/HOMARD_I/HOMARD_Iteration_i.cxx +++ b/src/HOMARD_I/HOMARD_Iteration_i.cxx @@ -166,7 +166,7 @@ void HOMARD_Iteration_i::AddIteration( const char* NomIter ) } //============================================================================= -CORBA::Boolean HOMARD_Iteration_i::Compute(CORBA::Long etatMenage) +CORBA::Long HOMARD_Iteration_i::Compute(CORBA::Long etatMenage) { MESSAGE ( "Compute : calcul d'une iteration" ); ASSERT( myHomardIteration ); diff --git a/src/HOMARD_I/HOMARD_Iteration_i.hxx b/src/HOMARD_I/HOMARD_Iteration_i.hxx index 8a899254..d7df0313 100644 --- a/src/HOMARD_I/HOMARD_Iteration_i.hxx +++ b/src/HOMARD_I/HOMARD_Iteration_i.hxx @@ -84,7 +84,7 @@ public: void SetHypoName( const char* NomHypo ); char* GetHypoName(); - CORBA::Boolean Compute(CORBA::Long etatMenage); + CORBA::Long Compute(CORBA::Long etatMenage); std::string Dump() const; bool Restore( const std::string& stream );