#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
-rm -rf autom4te.cache aclocal.m4 configure make_config
+rm -rf autom4te.cache aclocal.m4 configure make_config \$\(top_srcdir\)
find . -name "*~" -print -exec rm {} \;
find . -name "*.pyc" -print -exec rm {} \;
#exit
# ==================== ON SORT AVANT
find bin -name Makefile.in | xargs rm -f
+find doc -name Makefile.in | xargs rm -f
find idl -name Makefile.in | xargs rm -f
find resources -name Makefile.in | xargs rm -f
-find salome_adm -name Makefile.in | xargs rm -f
+find tests -name Makefile.in | xargs rm -f
find src -name Makefile.in | xargs rm -f
rm -f Makefile.in
+rm -f COPYING INSTALL
+rm -rf salome_adm
CHECK_HDF5
+echo
+echo ---------------------------------------------
+echo BOOST Library
+echo ---------------------------------------------
+echo
+
+CHECK_BOOST
+
echo
echo ---------------------------------------------
echo Testing OpenCascade
echo Configure
if test "${HOMARD_WITH_GUI}" = "yes"; then
-variables="cc_ok fortran_ok python_ok swig_ok threads_ok OpenGL_ok qt_ok hdf5_ok omniORB_ok Kernel_ok med2_ok SalomeGUI_ok Med_ok SMesh_ok sphinx_ok"
+variables="cc_ok fortran_ok boost_ok python_ok swig_ok threads_ok OpenGL_ok qt_ok hdf5_ok omniORB_ok Kernel_ok med2_ok SalomeGUI_ok Med_ok SMesh_ok sphinx_ok"
fi
if test "${HOMARD_WITH_GUI}" = "no"; then
-# -*- coding: utf-8 -*-
+# -*- coding: iso-8859-1 -*-
#
# HOMARD documentation build configuration file, created by
# sphinx-quickstart on Tue Jan 5 08:51:14 2010.
source_suffix = '.rst'
# The encoding of source files.
-#source_encoding = 'utf-8'
+source_encoding = 'iso-8859-1'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = u'HOMARD'
-copyright = u'1996, 2010, EDF R&D, G. Nicolas, T. Fouquet, P. Noyret'
+copyright = u'1996, 2011, EDF R&D, G. Nicolas, T. Fouquet, P. Noyret'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
-version = '9.6'
+version = '9.9'
# The full version, including alpha/beta/rc tags.
-release = '9.6'
+release = '9.9'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#
# Case "Case_0"
# =============
-Case_0 = homard.CreateCase('Case_0', 'MESH', dircase+'/tutorial_1.00.med')
+Case_0 = homard.CreateCase('Case_0', 'MAILL', dircase+'/tutorial_1.00.med')
Case_0.SetDirName(dircase)
Case_0.SetConfType(1)
#
Hypo_0.SetUseComp(0)
Hypo_0.AddComp('ERREST ')
Hypo_0.SetRefinThr(3, 1.0)
+Hypo_0.SetTypeFieldInterp(2)
+Hypo_0.AddFieldInterp('SOLU_0__DEPL____________________')
+Hypo_0.AddFieldInterp('SOLU_0__ERRE_ELEM_SIGM__________')
#
# Hypothesis "Hypo_1"
# ===================
Hypo_1.AddComp('ERREST ')
Hypo_1.SetRefinThr(3, 1.5)
Hypo_1.SetUnRefThr(3, 6.)
+Hypo_1.SetTypeFieldInterp(2)
+Hypo_1.AddFieldInterp('SOLU_1__DEPL____________________')
+Hypo_1.AddFieldInterp('SOLU_1__QIRE_ELEM_SIGM__________')
#
# Case "Case_0"
# =============
Iter_0 = homard.CreateIteration('Iter_0', Case_0.GetIter0Name())
Iter_0.SetMeshName('H_1')
Iter_0.SetMeshFile(dircase+'/maill.01.med')
-Iter_0.SetField(dircase+'/tutorial_3.00.med', 1, 1)
+Iter_0.SetFieldFile(dircase+'/tutorial_3.00.med')
+Iter_0.SetTimeStepRank( 1, 1)
homard.AssociateIterHypo('Iter_0', 'Hypo_0')
codret = homard.Compute('Iter_0', 1)
#
Iter_1 = homard.CreateIteration('Iter_1', 'Iter_0')
Iter_1.SetMeshName('H_2')
Iter_1.SetMeshFile('/tmp/maill.02.med')
-Iter_1.SetField(dircase+'/tutorial_3.01.med', 1, 1)
+Iter_1.SetFieldFile(dircase+'/tutorial_3.01.med')
+Iter_1.SetTimeStepRank(1, 1)
homard.AssociateIterHypo('Iter_1', 'Hypo_1')
codret = homard.Compute('Iter_1', 1)
--- /dev/null
+#!/usr/bin/env python
+# -*- coding: iso-8859-1 -*-
+"""
+Exemple de couplage HOMARD-Salome
+Copyright EDF-R&D 1996, 2011
+"""
+__revision__ = "V1.0"
+#
+import salome
+salome.salome_init()
+import HOMARD
+#
+homard = salome.lcc.FindOrLoadComponent("FactoryServer", "HOMARD")
+study_main = salome.myStudyManager.NewStudy("HOMARD")
+homard.SetCurrentStudy(salome.myStudy)
+#
+dircase = "/tmp"
+#
+# Creation of the boundaries
+# ==========================
+Boundary_1 = homard.CreateBoundary('intersection', 0)
+Boundary_1.SetMeshFile(dircase+'/tutorial_4.fr.med')
+Boundary_1.SetMeshName('PIQUAGE')
+#
+Boundary_2 = homard.CreateBoundary('cyl_1_ext', 1)
+Boundary_2.SetCylinder(0.0, 25., -25., 25., 50., 75., 100.)
+#
+Boundary_3 = homard.CreateBoundary('cyl_2_ext', 1)
+Boundary_3.SetCylinder(17.5, -2.5, -12.5, -100., -75., -25., 50.)
+#
+Boundary_4 = homard.CreateBoundary('cyl_1_int', 1)
+Boundary_4.SetCylinder(0.0, 25., -25., 25., 50., 75., 75.)
+#
+Boundary_5 = homard.CreateBoundary('cyl_2_int', 1)
+Boundary_5.SetCylinder(17.5, -2.5, -12.5, -100., -75., -25., 25.)
+#
+# Hypothesis "Hypo"
+# ===================
+# Creation of the hypothesis Hypo_1
+Hypo_1 = homard.CreateHypothesis('Hypo_1')
+Hypo_1.SetAdapRefinUnRef(-1, 1, 0)
+Hypo_1.AddGroup('T1_INT')
+Hypo_1.AddGroup('T2_INT')
+# Creation of the hypothesis Hypo_2
+Hypo_2 = homard.CreateHypothesis('Hypo_2')
+Hypo_2.SetAdapRefinUnRef(-1, 1, 0)
+Hypo_2.AddGroup('T1_EXT')
+Hypo_2.AddGroup('T2_EXT')
+#
+# Case "Case"
+# =============
+Case = homard.CreateCase('Case', 'PIQUAGE', dircase+'/tutorial_4.00.med')
+Case.SetDirName(dircase)
+Case.AddBoundaryGroup( 'intersection', '' )
+Case.AddBoundaryGroup( 'cyl_1_ext', 'T1_EXT' )
+Case.AddBoundaryGroup( 'cyl_2_ext', 'T2_EXT' )
+Case.AddBoundaryGroup( 'cyl_1_int', 'T1_INT' )
+Case.AddBoundaryGroup( 'cyl_2_int', 'T2_INT' )
+#
+# Creation of the iterations
+# ==========================
+# Creation of the iteration Iter_1
+Iter_1 = homard.CreateIteration('Iter_1', Case.GetIter0Name() )
+Iter_1.SetMeshName('PIQUAGE_1')
+Iter_1.SetMeshFile(dircase+'/maill.01.med')
+homard.AssociateIterHypo('Iter_1', 'Hypo_1')
+codret = homard.Compute('Iter_1', 1)
+# Creation of the iteration Iter_2
+Iter_2 = homard.CreateIteration('Iter_2', 'Iter_1' )
+Iter_2.SetMeshName('PIQUAGE_2')
+Iter_2.SetMeshFile(dircase+'/maill.02.med')
+homard.AssociateIterHypo('Iter_2', 'Hypo_2')
+codret = homard.Compute('Iter_2', 1)
+
+if salome.sg.hasDesktop():
+ salome.sg.updateObjBrowser(1)
:sorted:
raffinement
- Le raffinement est une opération consistant à découper les mailles sélectionnées.
+ Le raffinement est une opération consistant à découper les mailles sélectionnées.
niveau
- Le niveau d'une maille est le nombre de découpages qu'il a fallu pour l'obtenir. Les mailles du maillage initial sont du niveau 0 par convention.
+ Le niveau d'une maille est le nombre de découpages qu'il a fallu pour l'obtenir. Les mailles du maillage initial sont du niveau 0 par convention.
- déraffinement
- Le déraffinement est une opération consistant à supprimer des mailles. Il s'agit en fait d'annuler un précédent découpage : on ne reviendra jamais 'plus haut' que le maillage initial.
+ déraffinement
+ Le déraffinement est une opération consistant à supprimer des mailles. Il s'agit en fait d'annuler un précédent découpage : on ne reviendra jamais 'plus haut' que le maillage initial.
zone
- Une zone est une région qui définit un pilotage de raffinement : toutes les mailles dont au moins une arête est dans une zone seront raffinées.
+ Une zone est une région qui définit un pilotage de raffinement : toutes les mailles dont au moins une arête est dans une zone seront raffinées.
cas
- Un cas est défini par un maillage initial et une succession d'adaptations.
+ Un cas est défini par un maillage initial et une succession d'adaptations.
- itération
- Une itération est le processus qui permet de passer d'un maillage à un autre au sein d'un cas. Une itération met en oeuvre du raffinement et/ou du déraffinement selon l'hypothèse qui lui est attachée.
+ itération
+ Une itération est le processus qui permet de passer d'un maillage à un autre au sein d'un cas. Une itération met en oeuvre du raffinement et/ou du déraffinement selon l'hypothèse qui lui est attachée.
- hypothèse
- Une hypothèse décrit les conditions de passage d'un maillage à un autre : raffinement et/ou déraffinement, mode de pilotage, etc. Une hypothèse est référencée par une ou plusieurs itérations.
+ hypothèse
+ Une hypothèse décrit les conditions de passage d'un maillage à un autre : raffinement et/ou déraffinement, mode de pilotage, etc. Une hypothèse est référencée par une ou plusieurs itérations.
champ
- Un champ est exprimé sur un maillage, par noeud ou par maille, avec une ou plusieurs composantes. La valeur de ce champ pilote l'adaptation.
+ Un champ est exprimé sur un maillage, par noeud ou par maille, avec une ou plusieurs composantes. La valeur de ce champ pilote l'adaptation.
MED
- C'est le format d'échange des maillages et des champs pour Salome.
\ No newline at end of file
+ C'est le format d'échange des maillages et des champs pour Salome.
\ No newline at end of file
--- /dev/null
+.. _gui_create_boundary:
+
+La frontière
+============
+.. index:: single: boundary
+.. index:: single: frontière
+
+L'objet frontière contient toutes les définitions géométriques permettant de décrire une frontière courbe à suivre.
+
+Il existe deux modes de description d'une frontière :
+
+ - Discrète : ce mode est utilisé pour décrire une courbe 1D
+ - Analytique : ce mode est utilisé pour décrire une surface
+
+
+Frontière discrète
+==================
+
+Le suivi d'une frontière discrète se fera en sélectionnant une frontière choisie dans la liste des frontières discrètes existantes.
+
+Au démarrage, la liste est vide. Il faut créer une première frontière discrète par activation du bouton 'New' :
+
+.. image:: images/create_boundary_di_1.png
+ :align: center
+
+La fenêtre proposée invite au choix d'un fichier de maillage. Ce maillage est celui de toutes les lignes constituant la frontière. Un nom de frontière est proposé automatiquement : Boun_1, Boun_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour une autre frontière.
+
+.. image:: images/create_boundary_di_2.png
+ :align: center
+
+.. note::
+ Le fichier ne doit contenir qu'un seul maillage.
+
+Si des frontières discrètes ont déjà été définies pour un autre cas, on peut sélectionner l'une d'elles. On peut également créer une nouvelle frontière discrète par activation du bouton 'New', comme expliqué précédemment.
+
+.. image:: images/create_boundary_di_3.png
+ :align: center
+
+
+
+Frontière analytique
+====================
+Au démarrage, Salome affiche un tableau avec un seule colonne. Cette colonne contient la liste de tous les groupes du maillage initial définissant le cas.
+
+.. image:: images/create_boundary_an_1.png
+ :align: center
+
+Il faut créer une première frontière analytique par activation du bouton 'New'. On aura le choix entre cylindre ou sphère. Une fois que la frontière sera validée, son nom figurera en en-tête d'une deuxième colonne.
+
+.. image:: images/create_boundary_an_2.png
+ :align: center
+
+Il faut maintenant établir le lien entre le maillage définissant le cas et cette frontière décrite analytiquement. Cela se fait en cochant les groupes des faces qui doivent se trouver sur la frontière.
+
+.. image:: images/create_boundary_an_3.png
+ :align: center
+
+Cette opération est répétée autant de fois que l'on souhaite placer des faces du maillages sur une surface courbe :
+
+.. image:: images/create_boundary_an_4.png
+ :align: center
+
+.. note::
+
+ Un groupe peut très bien ne jamais être coché : cela signifie que les mailles qu'il définit n'appartiennent à aucune des frontières décrites.
+
+ Un groupe ne peut être coché qu'une seule fois. En effet, des mailles surfaciques ne peuvent pas appartenir à plus d'une surface.
+
+ Plusieurs groupes peuvent être cochés pour une même frontière. Cela arrive quand le maillage initial de la zone a été subdivisé en plusieurs groupes : toutes les mailles surfaciques appartiennent à cette surface mais ont été réparties en plusieurs groupes.
+
+ Inversement, une frontière peut très bien n'être retenue par aucun groupe. Cela arrive si elle a été définie pour un cas précédent et qu'elle est sans objet pour le cas en cours de définition.
+
+
+Il existe deux types de frontière analytique :
+
+ - Cylindre
+ - Sphère
+
+.. note::
+ Les valeurs numériques proposées par défaut tiennent compte de la géométrie du maillage.
+
+
+Un cylindre
+"""""""""""
+.. index:: single: cylindre
+
+Le cylindre est défini par un point de l'axe, son axe et son rayon. L'axe est défini par un vecteur. La norme de ce vecteur n'est pas nécessairement égale à 1 ; de même, son orientation n'a aucune importance. Un nom de frontière est proposé automatiquement : Boun_1, Boun_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour une autre frontière.
+
+.. image:: images/create_boundary_an_cy.png
+ :align: center
+
+Une sphère
+""""""""""
+.. index:: single: sphere
+
+La sphère est définie par son centre et son rayon. Un nom de frontière est proposé automatiquement : Boun_1, Boun_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour une autre frontière.
+
+.. image:: images/create_boundary_an_sp.png
+ :align: center
+
+.. index:: single: arbre d'étude
+L'arbre d'étude
+"""""""""""""""
+A l'issue de cette création de frontières, l'arbre d'études a été enrichi. On y trouve toutes les frontières créées, identifiées par leur nom, avec la possibilité de les éditer.
+
+.. image:: images/create_boundary_1.png
+ :align: center
+
+
+
Le cas
======
.. index:: single: cas
-La définition du cas se fait par la donnée des informations suivantes :
+
+La définition du cas se fait par la donnée des informations suivantes :
- Un nom
- - Un répertoire
+ - Un répertoire
- Le fichier du maillage initial
- - Le type de conformité pour la série d'adaptations envisagées
+ - Le type de conformité pour la série d'adaptations envisagées
+ - Les éventuelles frontières courbes à respecter
.. image:: images/create_case_1.png
:align: center
Le nom du cas
"""""""""""""
-Un nom de cas est proposé automatiquement : Case_0, Case_1, etc. Ce nom peut être modifié. Il ne doit pas avoir été utilisé pour un cas précédent.
+Un nom de cas est proposé automatiquement : Case_1, Case_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour un autre cas.
-Le répertoire
+Le répertoire
"""""""""""""
-Le répertoire est celui qui contiendra les fichiers produits par les adaptations successives. Ce répertoire doit exister. Par défaut, Salome propose ``/tmp``. Ce choix peut être modifié, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. C'est dans ce répertoire que seront exportés les maillages au format MED, dans des fichiers de nom ``maill.xx.med``, où ``xx`` est un numéro d'ordre créé automatiquement ; ces noms de fichiers seront visibles dans l'arbre d'études.
+Le répertoire est celui qui contiendra les fichiers produits par les adaptations successives. Ce répertoire doit exister. Par défaut, Salome propose ``/tmp``. Ce choix peut être modifié, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. C'est dans ce répertoire que seront exportés les maillages au format MED, dans des fichiers de nom ``maill.xx.med``, où ``xx`` est un numéro d'ordre créé automatiquement ; ces noms de fichiers seront visibles dans l'arbre d'études.
.. image:: images/create_case_2.png
:align: center
.. index:: single: maillage;initial
.. index:: single: MED
+
Le maillage initial
"""""""""""""""""""
-Le maillage initial doit se trouver dans un fichier au format MED. Classiquement, il aura été produit par le logiciel de calcul avec lequel on travaille. Mais il peut également avoir été créé avec le module SMESH et exporté au format MED. Le nom du fichier peut être fourni, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche.
+Le maillage initial doit se trouver dans un fichier au format MED. Classiquement, il aura été produit par le logiciel de calcul avec lequel on travaille. Mais il peut également avoir été créé avec le module SMESH et exporté au format MED. Le nom du fichier peut être fourni, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche.
.. image:: images/create_case_3.png
:align: center
Le fichier ne doit contenir qu'un seul maillage.
.. warning::
- Le maillage ne doit pas être lui-même le produit d'une adaptation de maillage par HOMARD, sous peine de perdre la cohérence entre les différents niveaux de raffinement/déraffinement
+ Le maillage ne doit pas être lui-même le produit d'une adaptation de maillage par HOMARD, sous peine de perdre la cohérence entre les différents niveaux de raffinement/déraffinement
-.. index:: single: type de conformité
-Le type de conformité
+.. index:: single: type de conformité
+
+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 définies pour ce cas devront 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.
+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.
-Si le calcul est possible avec des maillages non conforme, on a le choix entre 3 possibilités :
+Néanmoins, si le calcul est possible avec des maillages non conformes, on a le choix entre 3 possibilités :
.. image:: images/create_case_4.png
:align: center
-* 1 noeud par maille : une maille ne peut posséder qu'un seul noeud de non conformité avec ses voisines.
-* 1 noeud par arête : chaque arête d'une maille peut être découpée sans que la maille voisine par cette arête ne le soit.
-* quelconque : aucune limitation sur les raccords de conformité d'une maille à l'autre.
+* 1 noeud par maille : une maille ne peut posséder qu'un seul noeud de non conformité avec ses voisines.
+* 1 noeud par arête : chaque arête d'une maille peut être découpée sans que la maille voisine par cette arête ne le soit.
+* quelconque : aucune limitation sur les raccords de conformité d'une maille à l'autre.
-.. index:: single: arbre d'étude
-L'arbre d'étude
-"""""""""""""""
-A l'issue de cette création de cas, l'arbre d'études a été enrichi de ce nouveau cas. On y trouve l'itération initiale, identifiée par le nom du maillage qui a été lu dans le fichier fourni.
+.. index:: single: frontière
+
+Les frontières courbes
+""""""""""""""""""""""
+Quand le bord du domaine est courbe, HOMARD sait placer les nouveaux noeuds sur ces frontières pour éviter des singularités artificielles. Cette technique est aussi applicable à une courbure intérieure à un domaine.
+
+Deux cas de figure sont présents :
+
+* courbe 1D : cette courbe peut être définie dans un plan, par exemple pour un calcul 2D. Elle peut également être définie dans l'espace 3D, par exemple pour l'intersection de deux surfaces. Une ligne à suivre est décrite de manière discrète.
+* surface : une surface à suivre est décrite de manière analytique.
+
+On cochera le ou les boutons voulus :
.. image:: images/create_case_5.png
:align: center
+La définition des frontières est décrite dans :ref:`gui_create_boundary`.
+
+
+.. index:: single: arbre d'étude
+
+L'arbre d'étude
+"""""""""""""""
+A l'issue de cette création de cas, l'arbre d'études a été enrichi de ce nouveau cas. On y trouve l'itération initiale, identifiée par le nom du maillage qui a été lu dans le fichier fourni.
+
+.. image:: images/create_case_6.png
+ :align: center
+
.. _gui_create_hypothese:
-L'hypothèse
+L'hypothèse
===========
-.. index:: single: hypothèse
+.. index:: single: hypothèse
-L'hypothèse contient toutes les paramètres de pilotage d'une adaptation d'un maillage. Cette opération permet de réaliser l'itération à laquelle elle est attachée.
+L'hypothèse contient toutes les paramètres de pilotage d'une adaptation d'un maillage. Cette opération permet de réaliser l'itération à laquelle elle est attachée.
-Il existe trois classes d'hypothèses :
+Il existe trois classes d'hypothèses :
- Uniforme sur tout le maillage,
- Selon un champ,
- - En fonction de zone géométrique.
+ - En fonction de zone géométrique.
.. image:: images/create_hypothese_1.png
:align: center
-Nom de l'hypothèse
+Nom de l'hypothèse
""""""""""""""""""
-Un nom de l'hypothèse est proposé automatiquement : Hypo_0, Hypo_1, etc. Ce nom peut être modifié. Il ne doit pas avoir été utilisé pour une hypothèse précédente.
+Un nom de l'hypothèse est proposé automatiquement : Hypo_0, Hypo_1, etc. Ce nom peut être modifié. Il ne doit pas avoir été utilisé pour une hypothèse précédente.
Adaptation uniforme
"""""""""""""""""""
-Par défaut on propose un raffinement uniforme. Quand on part d'un maillage qui a déjà été raffiné, l'option de déraffinement supprimera les mailles produites.
+Par défaut on propose un raffinement uniforme. Quand on part d'un maillage qui a déjà été raffiné, l'option de déraffinement supprimera les mailles produites.
Adaptation selon un champ
"""""""""""""""""""""""""
.. note::
- Pour pouvoir adapter le maillage selon un champ il faut avoir au préalable indiqué dans la fenêtre de construction de l'itération le fichier med contenant le champ.
+ Pour pouvoir adapter le maillage selon un champ il faut avoir au préalable désigné le fichier med contenant le champ. Cela se fait dans la fenêtre de construction de l'itération (voir :ref:`gui_create_iteration`). Le nom du fichier qui a été sélectionné est affiché sans modification possible ici :
-Le nom du fichier qui a été sélectionné est affiché sans modification possible dans cette fenêtre. Le champ voulu est à choisir dans la liste qui s'affiche.
-
-.. image:: images/create_hypothese_4.png
+.. image:: images/create_hypothese_ch_1.png
:align: center
-Une fois ce champ choisi, la liste des ses composantes s'affiche. Il suffit de désigner la (ou les) composantes désirées. Si l'on choisi une seule composante, par défaut, c'est sa valeur absolue qui sera utilisée, mais il est possible d'utiliser la valeur relative. Dans le cas de plusieurs composantes, par défaut HOMARD utilisera la norme L2 (euclidienne). On peut toutefois choisir d'utiliser la norme infinie (le max des valeurs absolues des composantes).
+Le champ voulu est à choisir dans la liste des champs contenus dans le fichier.
+Une fois ce champ choisi, la liste des ses composantes s'affiche. Il suffit de désigner la (ou les) composantes désirées. Si l'on choisi une seule composante, par défaut, c'est sa valeur absolue qui sera utilisée, mais il est possible d'utiliser la valeur relative. Dans le cas de plusieurs composantes, par défaut HOMARD utilisera la norme L2 (euclidienne). On peut toutefois choisir d'utiliser la norme infinie (le max des valeurs absolues des composantes).
-.. image:: images/create_hypothese_5.png
+.. image:: images/create_hypothese_ch_2.png
:align: center
-Le raffinement se fait selon un seuil qui définit un critère haut de raffinement. Toutes les mailles pour lesquels l’indicateur est supérieur à ce critère seront raffinées.
-Pour le choix du critère, trois variantes sont possibles :
- - selon un pourcentage de mailles à raffiner, nombre réel compris entre 0 et 100 ; HOMARD raffinera les x% des mailles qui ont la plus grande valeur du champ.
- - selon une valeur relative du champ, nombre compris entre 0 et 100 ; HOMARD raffinera les mailles où le champ est supérieur à x% de l'intervalle [mini,maxi].
- - selon une valeur absolue ; toutes les mailles avec une valeur de champ supérieure à cette valeur seront raffinées.
+Le raffinement se fait selon un seuil qui définit un critère haut de raffinement. Toutes les mailles pour lesqules l'indicateur est supérieur à ce critère seront raffinées.
+Pour le choix du critère, trois variantes sont possible :
+
+ - selon un pourcentage de mailles à raffiner, nombre réel compris entre 0 et 100 ; HOMARD raffinera les x% des mailles qui ont la plus grande valeur du champ.
+ - selon une valeur relative du champ, nombre compris entre 0 et 100 ; HOMARD raffinera les mailles où le champ est supérieur à x% de l'intervalle [mini,maxi].
+ - selon une valeur absolue ; toutes les mailles avec une valeur de champ supérieure à cette valeur seront raffinées.
-La même convention s'applique au déraffinement, en remplaçant supérieur par inférieur. On peut inactiver une des fonctions (raffinement ou déraffinement) en cochant le bouton ad_hoc.
+La même convention s'applique au déraffinement, en remplaçant supérieur par inférieur. On peut inactiver une des fonctions (raffinement ou déraffinement) en cochant le bouton ad_hoc.
-.. image:: images/create_hypothese_6.png
+.. image:: images/create_hypothese_ch_3.png
:align: center
"""""""""""""""""""""""""
.. index:: single: zone
-Au démarrage, il faut créer une première zone par activation du bouton 'New' (voir :ref:`gui_create_zone`) :
+Au démarrage, il faut créer une première zone par activation du bouton 'New' (voir :ref:`gui_create_zone`) :
-.. image:: images/create_hypothese_2.png
+.. image:: images/create_hypothese_zo_1.png
:align: center
-Lorsque des zones ont déjà été créées, la liste apparaît dans la fenêtre ce qui permet de sélectionner les zones voulues.
+Lorsque des zones ont déjà été créées, la liste apparaît dans la fenêtre ce qui permet de sélectionner les zones voulues.
-.. image:: images/create_hypothese_3.png
+.. image:: images/create_hypothese_zo_2.png
:align: center
Filtrage par les groupes
""""""""""""""""""""""""
-.. index:: single: zone
+.. index:: single: groupe
+
+On peut restreindre l'application de l'hypothèse d'adaptation à des groupes. On coche le bouton associé :
+
+.. image:: images/create_hypothese_gr_1.png
+ :align: center
+
+La liste des groupes de mailles présents dans le maillage est affichée. Il suffit de cocher ceux voulus pour restreindre l'hypothèse d'adaptation.
+
+.. image:: images/create_hypothese_gr_2.png
+ :align: center
+
+
+Interpolation de champs
+"""""""""""""""""""""""
+.. index:: single: interpolation
+
+.. note::
+ Pour pouvoir interpoler un champ de l'ancien vers le nouveau maillage, il faut avoir au préalable désigné le fichier med contenant le champ. Cela se fait dans la fenêtre de construction de l'itération (voir :ref:`gui_create_iteration`).
-Après l'activation du filtrage par les groupes, la liste des groupes de mailles présents dans le maillage est affichée. Il suffit de cocher ceux voulus pour restreindre l'hypothèse d'adaptation.
+Par défaut, aucun champ n'est interpolé. A contrario, on peut demander l'interpolation de tous les champs présents dans le fichier fourni :
-.. image:: images/create_hypothese_8.png
+.. image:: images/create_hypothese_ch_4.png
:align: center
+Si on veut choisir les champs à interpoler, il faut les cocher dans la liste de tous les champs présents dans le fichier fourni :
-L'arbre d'étude
+.. image:: images/create_hypothese_ch_5.png
+ :align: center
+
+
+L'arbre d'étude
"""""""""""""""
-.. index:: single: arbre d'étude
+.. index:: single: arbre d'étude
-L'arbre d'études contient les hypothèses créées et les itérations qui les utilisent. La description des zones qui leur sont éventuellement attachées est présente.
+L'arbre d'études contient les hypothèses créées et les itérations qui les utilisent. La description des zones qui leur sont éventuellement attachées est présente.
-.. image:: images/create_hypothese_7.png
+.. image:: images/create_hypothese_2.png
:align: center
.. _gui_create_iteration:
-L'itération
+L'itération
===========
-.. index:: single: itération
-La définition d'une itération se fait par la donnée des informations suivantes :
+.. index:: single: itération
+La définition d'une itération se fait par la donnée des informations suivantes :
- - L'itération précédente
- - Le nom du maillage résultat
- - L'hypothèse utilisée
+ - L'itération précédente
+ - Le nom du maillage résultat
+ - L'hypothèse utilisée
- Eventuellement, le fichier du champ d'indicateurs d'erreur
.. image:: images/create_iteration_1.png
:align: center
-Le nom de l'itération
+Le nom de l'itération
"""""""""""""""""""""
-Un nom de cas est proposé automatiquement : Iter_0, Iter_1, etc. Ce nom peut être modifié. Il ne doit pas avoir été utilisé pour une itération précédente.
+Un nom de cas est proposé automatiquement : Iter_0, Iter_1, etc. Ce nom peut être modifié. Il ne doit pas avoir été utilisé pour une itération précédente.
-L'itération précédente
+L'itération précédente
""""""""""""""""""""""
-L'itération précédente est choisie dans l'arbre d'étude. Le nom du maillage correspondant sera affiché.
+L'itération précédente est choisie dans l'arbre d'étude. Le nom du maillage correspondant sera affiché.
-.. index:: single: maillage;résultat
-Le nom du maillage résultat
+.. index:: single: maillage;résultat
+Le nom du maillage résultat
"""""""""""""""""""""""""""
-L'itération en cours de création produira un maillage. Ce maillage sera connu sous un nom. Ce nom est fourni en le tapant dans la zone de texte. Par défaut, on propose un nom identique à celui de l'itération précédente.
+L'itération en cours de création produira un maillage. Ce maillage sera connu sous un nom. Ce nom est fourni en le tapant dans la zone de texte. Par défaut, on propose un nom identique à celui de l'itération précédente.
-.. index:: single: hypothèse
-L'hypothèse utilisée
-""""""""""""""""""""
-L'itération en cours pilotera l'adaptation par HOMARD selon un scénario défini dans une hypothèse. Celle-ci est choisi dans la liste
+.. index:: single: champ
+.. index:: single: MED
+Le champ
+""""""""
+Pour créer ou utiliser une hypothèse d'adaptation basée sur un champ exprimé sur le maillage, on doit fournir le fichier où se trouve le champ. C'est également le cas si on veut interpoler des champs du maillage n au maillage n+1. Ce fichier est au format MED. Classiquement, il aura été produit par le logiciel de calcul avec lequel on travaille. Le nom du fichier peut être fourni, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche.
-Au démarrage, il faut créer une première hypothèse par activation du bouton 'New' (voir :ref:`gui_create_hypothese`) :
.. image:: images/create_iteration_2.png
:align: center
-Ensuite, il faut éventuellement créer une nouvelle hypothèse par activation du bouton 'New', puis sélectionner celle voulue dans la liste proposée :
+Dasn le cas où des pas de temps ont été définis, une solution simple consiste à traiter les champs au dernier pas de temps enregistré dans le fichier. Si on veut définir un autre pas de temps, on coche le bouton "Choosen time step" ; les valeurs de 'Time Step' et de 'Rank' sont celles correspondant à la convention MED.
.. image:: images/create_iteration_3.png
:align: center
+.. index:: single: hypothèse
+L'hypothèse utilisée
+""""""""""""""""""""
+L'itération en cours pilotera l'adaptation par HOMARD selon un scénario défini dans une hypothèse. Celle-ci est choisi dans la liste des hypothèses existantes.
-.. note::
- Si on envisage une adaptation selon les valeurs d'un champ sur le maillage, il faut avoir renseigné les informations sur ce champ avant de créer une nouvelle hypothèse.
-
-.. index:: single: champ
-.. index:: single: MED
-Le champ
-""""""""
-Pour créer ou utiliser une hypothèse d'adaptation basée sur un champ exprimé sur le maillage, on doit fournir le fichier où se trouve le champ. Ce fichier est au format MED. Classiquement, il aura été produit par le logiciel de calcul avec lequel on travaille. Le nom du fichier peut être fourni, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche.
-
-Les valeurs de 'Time Step' et de 'Rank' sont celles correspondant à la convention MED.
+Au démarrage, il faut créer une première hypothèse par activation du bouton 'New' (voir :ref:`gui_create_hypothese`) :
.. image:: images/create_iteration_4.png
:align: center
-.. index:: single: arbre d'étude
-L'arbre d'étude
-"""""""""""""""
-A l'issue de cette création d'itération, l'arbre d'études a été enrichi. On y trouve l'itération initiale, identifiée par le nom du maillage qui a été lu dans le fichier fourni, l'itération courante, identifiée par son nom. On trouve aussi l'hypothèse qui lui est attachée.
+Ensuite, il faut éventuellement créer une nouvelle hypothèse par activation du bouton 'New', puis sélectionner celle voulue dans la liste proposée :
.. image:: images/create_iteration_5.png
:align: center
-Quand plusieurs itérations s'enchaînent, leur hypothèse est visible dans l'arbre d'étude. On remarquera dans la figure ci-après que deux itérations peuvent partager la même hypothèse.
+
+.. note::
+ Si on envisage une adaptation selon les valeurs d'un champ sur le maillage, il faut avoir renseigné les informations sur ce champ avant de créer une nouvelle hypothèse.
+
+.. index:: single: arbre d'étude
+L'arbre d'étude
+"""""""""""""""
+A l'issue de cette création d'itération, l'arbre d'études a été enrichi. On y trouve l'itération initiale, identifiée par le nom du maillage qui a été lu dans le fichier fourni, l'itération courante, identifiée par son nom. On trouve aussi l'hypothèse qui lui est attachée.
.. image:: images/create_iteration_6.png
:align: center
+Quand plusieurs itérations s'enchaînent, leur hypothèse est visible dans l'arbre d'étude. On remarquera dans la figure ci-après que deux itérations peuvent partager la même hypothèse.
+
+.. image:: images/create_iteration_7.png
+ :align: center
+
=======
.. index:: single: zone
-L'objet zone contient toutes les définitions géométriques permettant de décrire une zone à raffiner.
+L'objet zone contient toutes les définitions géométriques permettant de décrire une zone à raffiner.
Il existe deux types de zone :
- - Parallélépipède
- - Sphère
+ - Parallélépipède
+ - Sphère
Nom de la zone
""""""""""""""
-Un nom de zone est proposé automatiquement : Zone_0, Zone_1, etc. Ce nom peut être modifié. Il ne doit pas avoir été utilisé pour une zone précédente.
+Un nom de zone est proposé automatiquement : Zone_1, Zone_2, etc. Ce nom peut être modifié. Il ne doit pas avoir été déjà utilisé pour une autre zone.
-Un parallélépipède
+Un parallélépipède
""""""""""""""""""
.. index:: single: boite
-Le parallélépipède est forcément parallèle aux axes de coordonnées, il est défini par ses extrêmes dans chaque direction.
+Le parallélépipède est forcément parallèle aux axes de coordonnées. Il est défini par ses extrêmes dans chaque direction.
.. image:: images/create_zone_1.png
:align: center
-Une sphère
+Une sphère
""""""""""
.. index:: single: sphere
-La sphère est définie par son centre et son rayon.
+La sphère est définie par son centre et son rayon.
.. image:: images/create_zone_2.png
:align: center
.. note::
- Les valeurs proposées par défaut tiennent compte de la géométrie du maillage.
+ Les valeurs proposées par défaut tiennent compte de la géométrie du maillage.
Mode d'emploi pour l'interface graphique
========================================
.. index:: single: cas
-.. index:: single: itération
+.. index:: single: itération
Activer le module HOMARD
""""""""""""""""""""""""
-Pour utiliser le module HOMARD, deux façons existent :
+Pour utiliser le module HOMARD, deux façons existent :
#. en activant l'onglet HOMARD dans la liste des modules,
#. en cliquant sur le bouton HOMARD dans la barre d'outils.
-L'utilisateur a alors le choix entre créer une nouvelle étude ou en ouvrir une qui a été précédemment enregistrée.
+L'utilisateur a alors le choix entre créer une nouvelle étude ou en ouvrir une qui a été précédemment enregistrée.
-Définir une adaptation
+Définir une adaptation
""""""""""""""""""""""
-Une fois que HOMARD a été activé, la permière action consiste à créer un cas. Il s'agit de sélectionner le maillage initial de la suite d'adaptations envisagée (voir :ref:`gui_create_case`). A partir de ce cas, on définira les itérations successives (voir :ref:`gui_create_iteration`) à partir des hypothèses (voir :ref:`gui_create_hypothese`).
+Une fois que HOMARD a été activé, la permière action consiste à créer un cas. Il s'agit de sélectionner le maillage initial de la suite d'adaptations envisagée (voir :ref:`gui_create_case`). A partir de ce cas, on définira les itérations successives (voir :ref:`gui_create_iteration`) à partir des hypothèses (voir :ref:`gui_create_hypothese`).
-Récupérer le résultat d'une adaptation
+Récupérer le résultat d'une adaptation
""""""""""""""""""""""""""""""""""""""
-Le résultat d'une adaptation s'obtient en sélectionnant l'itération à calculer. On sélectionne ensuite *Lancement* dans le menu HOMARD.
+Le résultat d'une adaptation s'obtient en sélectionnant l'itération à calculer. On sélectionne ensuite *Lancement* dans le menu HOMARD.
.. image:: images/lancement_1.png
:align: center
-Le fichier contenant le maillage produit est visible dans l'arbre d'études.
+Le fichier contenant le maillage produit est visible dans l'arbre d'études.
-Mode d'emploi de la saisie des données
+Mode d'emploi de la saisie des données
""""""""""""""""""""""""""""""""""""""
.. toctree::
HOMARD est le composant qui permet l'adaptation de maillage au sein de la plateforme Salome.
-*HOMARD est une marque déposée d'EDF.*
+*HOMARD est une marque déposée d'EDF.*
-Table des matières de ce mode d'emploi
+Table des matières de ce mode d'emploi
""""""""""""""""""""""""""""""""""""""
.. toctree::
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é.
+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é.
Plusieurs motivations apparaissent pour adapter un maillage :
- - on veut simplifier la réalisation du maillage d'une géométrie complexe : on part d’une version grossière et on confie à un processus automatique la charge de l’affiner.
- - 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.
+ - 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 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.
-Schématiquement, une itération dâ\80\99adaptation 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â\80\99indicateur dâ\80\99erreur sur tout le maillage. A partir de la connaissance du maillage n°k et de lâ\80\99indicateur n°k, HOMARD crée le nouveau maillage n°k+1.
+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.
+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
:align: center
-Au final, la chaîne complète part du maillage initial produit par un mailleur. Elle comprend des maillons successifs (calcul d’indicateur / adaptation) comme sur la figure ci-après.
+Au final, la chaîne complète part du maillage initial produit par un mailleur. Elle comprend des maillons successifs (calcul d'indicateur / adaptation) comme sur la figure ci-après.
.. 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.
+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.
.. note::
- Pour une description plus complète, voir :download:`Description générale de HOMARD <files/HOMARD_0.pdf>`.
+ Pour une description plus complète, voir :download:`Description générale de HOMARD <files/HOMARD_0.pdf>`.
--- /dev/null
+.. _tui_create_boundary:
+
+La frontière
+============
+
+.. index:: single: boundary
+.. index:: single: frontière
+.. index:: single: cylindre
+.. index:: single: sphere
+
+Les variables sont décrites dans :ref:`gui_create_boundary`.
+
+Méthodes de la classe homard
+""""""""""""""""""""""""""""
+
++----------------------------------------------------------------+
++================================================================+
+| .. module:: CreateBoundary |
+| |
+| **CreateBoundary(boundary_name, boundary_type)** |
+| |
+| - ``boundary_name`` : le nom de la zone |
+| - ``boundary_type`` : entier précisant le type de frontière|
+| |
+| * 1 : cylindre |
+| * 2 : sphère |
++----------------------------------------------------------------+
+
+Méthodes de la classe boundary
+""""""""""""""""""""""""""""""
+
++---------------------------------------------------------------+
++===============================================================+
+| .. module:: GetName |
+| |
+| **GetName()** |
+| Retourne le nom de la frontière |
++---------------------------------------------------------------+
+| .. module:: GetBoundaryType |
+| |
+| **GetBoundaryType()** |
+| Retourne le type de la frontière |
++---------------------------------------------------------------+
+| .. module:: SetCylinder |
+| |
+| **SetCylinder(Xcen, Ycen, Zcen, Xaxe, Yaxe, Zaxe, R)** |
+| |
+| - ``Xcen``, ``Ycen``, ``Zcen`` : coordonnées d'un point |
+| sur l'axe du cylindre |
+| - ``Xaxe``, ``Yaxe``, ``Zaxe`` : vecteur de l'axe |
+| - ``R`` : rayon du cylindre |
++---------------------------------------------------------------+
+| .. module:: SetSphere |
+| |
+| **SetSphere(Xcen, Ycen, Zcen, R)** |
+| |
+| - ``Xcen`` : X du centre |
+| - ``Ycen`` : Y du centre |
+| - ``Zcen`` : Z du centre |
+| - ``R`` : rayon de la sphère |
++---------------------------------------------------------------+
+
+
+Exemple
+"""""""
+Création d'une frontière sphérique, puis d'une frontière cylindrique : ::
+
+ fron_1 = homard.CreateBoundary("FRON_1", 2)
+ fron_1.SetSphere(12.3, 3.4, .56, 6.5)
+ fron_2 = homard.CreateBoundary('CYL_1', 1)
+ fron_2.SetCylinder(0.0, 25., -25., 25., 50., 75., 100.)
+
+
Le cas
======
.. index:: single: cas
-.. index:: single: type de conformité
+.. index:: single: type de conformité
.. index:: single: maillage;initial
-Les variables sont décrites dans :ref:`gui_create_case`.
+Les variables sont décrites dans :ref:`gui_create_case`.
-Méthodes de la classe homard
+Méthodes de la classe homard
""""""""""""""""""""""""""""
+---------------------------------------------------------------+
| - ``mesh_name`` : le nom du maillage initial |
| - ``mesh_file`` : le nom du fichier contenant ce maillage |
| |
-| Par défaut : |
+| Par défaut : |
| |
-| * le répertoire des résultats est ``/tmp`` |
+| * le répertoire des résultats est ``/tmp`` |
| * l'adaptation est conforme |
+---------------------------------------------------------------+
-Méthodes de la classe cas
+Méthodes de la classe cas
"""""""""""""""""""""""""
+---------------------------------------------------------------+
| |
| **SetDirName(dirname)** |
| |
-| - ``dirname`` : le nom du répertoire des résutats |
+| - ``dirname`` : le nom du répertoire des résutats |
+---------------------------------------------------------------+
| .. module:: GetDirName |
| |
| **GetDirName()** |
-| Retourne le nom du répertoire des résutats associé au cas |
+| Retourne le nom du répertoire des résutats associé au cas |
+---------------------------------------------------------------+
| .. module:: SetConfType |
| |
| **SetConfType(conf_type)** |
| |
-| - ``conf_type`` : entier précisant le mode de conformité |
+| - ``conf_type`` : entier précisant le mode de conformité |
| |
| 1. conforme |
| 2. non conforme avec 1 noeud par maille |
| .. module:: GetConfType |
| |
| **GetConfType()** |
-| Retourne le type de conformité |
+| Retourne le type de conformité |
+---------------------------------------------------------------+
| .. module:: GetIter0Name |
| |
| **GetIter0Name()** |
-| Retourne le nom de l'itération 0, associée au maillage |
+| Retourne le nom de l'itération 0, associée au maillage |
| initial. Ce nom est mis automatiquement par le module |
-| HOMARD et doit être utilisé pour enchaîner les adaptations|
+| HOMARD et doit être utilisé pour enchaîner les adaptations|
++---------------------------------------------------------------+
+| .. module:: AddBoundaryGroup |
+| |
+| **AddBoundaryGroup(boundary, group)** |
+| |
+| - ``boundary`` : nom d'une frontière courbe à suivre |
+| Pour une frontière discrète : |
+| |
+| . si toutes les lignes courbes sont suivies, le second |
+| argument est une chaîne vide. |
+| . si seulement certaines lignes courbes sont suivies, |
+| ``group`` est le nom d'un groupe de segments à suivre. |
+| Pour une frontière analytique : |
+| |
+| - ``group`` : nom d'un groupe de faces placées sur la |
+| frontière |
+---------------------------------------------------------------+
Exemple
"""""""
-La création de l'objet case_1 se fait ainsi : ::
+La création de l'objet case_1 se fait ainsi : ::
case_name = "CAS_1"
mesh_name = "MAILL"
dirname = "/local00/Salome/Adapt/resu"
case_1.SetDirName(dirname)
case_1.SetConfType(1)
+ case_1.AddBoundaryGroup( 'intersection', '' )
+ case_1.AddBoundaryGroup( 'cyl_1', 'T1_EXT' )
+ case_1.AddBoundaryGroup( 'cyl_1', 'T2_EXT' )
+ case_1.AddBoundaryGroup( 'cyl_2', 'T_INT' )
.. _tui_create_hypothese:
-L'hypothèse
+L'hypothèse
===========
-.. index:: single: itération
-.. index:: single: hypothèse
+.. index:: single: itération
+.. index:: single: hypothèse
.. index:: single: zone
-Les variables sont décrites dans :ref:`gui_create_hypothese`.
+Les variables sont décrites dans :ref:`gui_create_hypothese`.
-Méthodes de la classe homard
+Méthodes de la classe homard
""""""""""""""""""""""""""""
+---------------------------------------------------------------+
| **CreateHypothesis(hypo_name)** |
| Retourne une instance de la classe hypothese |
| |
-| - ``hypo_name`` : le nom de l'hypothèse |
+| - ``hypo_name`` : le nom de l'hypothèse |
+---------------------------------------------------------------+
| .. module:: AssociateHypoZone |
| |
| **AssociateHypoZone(hypo_name, zone_name)** |
| |
-| - ``hypo_name`` : le nom de l'hypothèse |
-| - ``zone_name`` : le nom de la zone à associer |
+| - ``hypo_name`` : le nom de l'hypothèse |
+| - ``zone_name`` : le nom de la zone à associer |
+---------------------------------------------------------------+
-Méthodes de la classe hypothese
+Méthodes de la classe hypothese
"""""""""""""""""""""""""""""""
-Généralités
+Généralités
^^^^^^^^^^^
+---------------------------------------------------------------+
| .. module:: GetName |
| |
| **GetName()** |
-| Retourne le nom de l'hypothèse |
+| Retourne le nom de l'hypothèse |
+---------------------------------------------------------------+
| .. module:: SetAdapRefinUnRef |
| |
| **SetAdapRefinUnRef(Adap, Refin, UnRef)** |
| |
-| - ``Adap`` : entier précisant le type d'adaptation |
+| - ``Adap`` : entier précisant le type d'adaptation |
| |
| * -1 : uniforme |
| * 0 : selon des zones |
| * 1 : selon un champ |
| |
-| - ``Refin`` : entier précisant si le raffinement est actif|
+| - ``Refin`` : entier précisant si le raffinement est actif|
| |
| 0. inactif |
| 1. actif |
| |
-| - ``UnRef`` : entier précisant si déraffinement est actif |
+| - ``UnRef`` : entier précisant si déraffinement est actif |
| |
| 0. inactif |
| 1. actif |
| .. module:: GetUnRefType |
| |
| **GetUnRefType()** |
-| Retourne le type de déraffinement |
+| Retourne le type de déraffinement |
+---------------------------------------------------------------+
Le champ et les seuils
+---------------------------------------------------------------+
+===============================================================+
-| .. module:: SetFieldName |
+| .. module:: SetField |
| |
-| **SetFieldName(field_name)** |
+| **SetField(field_name)** |
| |
| - ``field_name`` : le nom du champ |
+---------------------------------------------------------------+
| |
| **SetUseField(use_field)** |
| |
-| - ``use_field`` : entier précisant l'usage du champ |
+| - ``use_field`` : entier précisant l'usage du champ |
| |
-| 0. valeur par maille (défaut) |
+| 0. valeur par maille (défaut) |
| 1. saut entre une maille et ses voisines |
+---------------------------------------------------------------+
| .. module:: SetRefinThr |
| |
| **SetRefinThr(type_thres, threshold)** |
| |
-| - ``type_thres`` : entier précisant le type de seuil en |
+| - ``type_thres`` : entier précisant le type de seuil en |
| raffinement |
| |
| 1. valeur absolue |
| |
| **SetUnRefThr(type_thres, threshold)** |
| |
-| - ``type_thres`` : entier précisant le type de seuil en |
-| déraffinement |
+| - ``type_thres`` : entier précisant le type de seuil en |
+| déraffinement |
| |
| 1. valeur absolue |
| 2. valeur relative en % |
| .. module:: GetUnRefThrType |
| |
| **GetUnRefThrType()** |
-| Retourne le type de seuil de déraffinement |
+| Retourne le type de seuil de déraffinement |
+---------------------------------------------------------------+
| |
| **AddComp(comp_name)** |
| |
-| - ``comp_name`` : nom d'une composante à prendre en |
+| - ``comp_name`` : nom d'une composante à prendre en |
| compte |
+---------------------------------------------------------------+
| .. module:: SetUseComp |
| |
| **SetUseComp(use_comp)** |
| |
-| - ``use_comp`` : entier précisant l'usage des composantes |
+| - ``use_comp`` : entier précisant l'usage des composantes |
| |
-| 0. norme L2 (défaut) |
+| 0. norme L2 (défaut) |
| 1. norme infinie |
| 2. valeur relative, uniquement si une seule composante|
+---------------------------------------------------------------+
| .. module:: GetListComp |
| |
| **GetListComp()** |
-| Retourne la liste des composantes utilisées |
+| Retourne la liste des composantes utilisées |
+---------------------------------------------------------------+
Le filtrage par les groupes
| |
| **AddGroup(group_name)** |
| |
-| - ``group_name`` : nom du groupe à prendre en compte |
+| - ``group_name`` : nom du groupe à prendre en compte |
+---------------------------------------------------------------+
| .. module:: GetGroups |
| |
| **GetGroups()** |
-| Retourne la liste des groupes utilisés pour le filtrage |
+| Retourne la liste des groupes utilisés pour le filtrage |
+---------------------------------------------------------------+
Exemple
"""""""
-La création de l'objet hypo_1 se fait ainsi : ::
+La création de l'objet hypo_1 se fait ainsi : ::
hypo_1 = homard.CreateHypothesis("HypoField")
hypo_1.SetAdapRefinUnRef(1, 1, 0)
- hypo_1.SetFieldName("INDICATEUR")
+ hypo_1.SetField("INDICATEUR")
hypo_1.AddComp("INDX")
hypo_1.AddComp("INDZ")
hypo_1.SetRefinThr(1, 80.)
.. _tui_create_iteration:
-L'itération
+L'itération
===========
-.. index:: single: itération
-.. index:: single: hypothèse
+.. index:: single: itération
+.. index:: single: hypothèse
.. index:: single: zone
-Les variables sont décrites dans :ref:`gui_create_iteration`.
+Les variables sont décrites dans :ref:`gui_create_iteration`.
-Méthodes de la classe homard
+Méthodes de la classe homard
""""""""""""""""""""""""""""
+---------------------------------------------------------------+
| **CreateIteration(iter_name, iter_parent_name)** |
| Retourne une instance de la classe iteration |
| |
-| - ``iter_name`` : le nom de l'itération |
-| - ``iter_parent_name`` : le nom de l'itération mère |
+| - ``iter_name`` : le nom de l'itération |
+| - ``iter_parent_name`` : le nom de l'itération mère |
| |
-| Par défaut : |
+| Par défaut : |
| |
-| * le maillage produit a le même nom que l'itération |
+| * le maillage produit a le même nom que l'itération |
+---------------------------------------------------------------+
| .. module:: AssociateIterHypo |
| |
| **AssociateIterHypo(iter_name, hypo_name)** |
| |
-| - ``iter_name`` : le nom de l'itération |
-| - ``hypo_name`` : le nom de l'hypothèse à associer |
+| - ``iter_name`` : le nom de l'itération |
+| - ``hypo_name`` : le nom de l'hypothèse à associer |
+---------------------------------------------------------------+
-Méthodes de la classe iteration
+Méthodes de la classe iteration
"""""""""""""""""""""""""""""""
-Généralités
+Généralités
^^^^^^^^^^^
+---------------------------------------------------------------+
| .. module:: GetName |
| |
| **GetName()** |
-| Retourne le nom de l'itération |
+| Retourne le nom de l'itération |
+---------------------------------------------------------------+
| .. module:: GetNumber |
| |
| **GetNumber()** |
-| Retourne le numéro de l'itération |
+| Retourne le numéro de l'itération |
+---------------------------------------------------------------+
| .. module:: GetIterParent |
| |
| **GetIterParent()** |
-| Retourne le nom de l'itération mère |
+| Retourne le nom de l'itération mère |
+---------------------------------------------------------------+
| .. module:: GetHypoName |
| |
| **GetHypoName()** |
-| Retourne le nom de l'hypothèse associée |
+| Retourne le nom de l'hypothèse associée |
+---------------------------------------------------------------+
| .. module:: GetCaseName |
| |
| **GetCaseName()** |
-| Retourne le nom du cas associé |
+| Retourne le nom du cas associé |
+---------------------------------------------------------------+
| .. module:: GetState |
| |
| **GetState()** |
-| Retourne l'état de l'itération |
+| Retourne l'état de l'itération |
| |
-| - ``0`` : itération non calculée |
-| - ``1`` : itération calculée correctement |
+| - ``0`` : itération non calculée |
+| - ``1`` : itération calculée correctement |
+---------------------------------------------------------------+
Informations sur les maillages
+---------------------------------------------------------------+
+===============================================================+
-| .. module:: SetField |
+| .. module:: SetFieldFile |
| |
-| **SetField(field_file, TimeStep, Rank)** |
+| **SetFieldFile(field_file)** |
| |
| - ``field_file`` : le nom du fichier contenant le champ |
-| - ``TimeStep`` : l'instant où est pris le champ |
-| - ``Rank`` : le numéro d'ordre où est pris le champ |
++---------------------------------------------------------------+
+| .. module:: SetTimeStepRank |
+| |
+| **SetTimeStepRank(fTimeStep, Rank)** |
+| |
+| - ``TimeStep`` : l'instant où est pris le champ |
+| - ``Rank`` : le numéro d'ordre où est pris le champ |
+---------------------------------------------------------------+
| .. module:: GetFieldFileName |
| |
| .. module:: GetTimeStep |
| |
| **GetTimeStep()** |
-| Retourne l'instant où est pris le champ |
+| Retourne l'instant où est pris le champ |
+---------------------------------------------------------------+
| .. module:: GetRank |
| |
| **GetRank()** |
-| Retourne le numéro d'ordre où est pris le champ |
+| Retourne le numéro d'ordre où est pris le champ |
+---------------------------------------------------------------+
Exemple
"""""""
.. index:: single: maillage;initial
-Pour la création de la première itération, il faut récupérer le nom qui a été donné à celle qui correspond au maillage initial. Ce nom s'obtient avec la méthode ``GetIter0Name`` appliquée au cas. ::
+Pour la création de la première itération, il faut récupérer le nom qui a été donné à celle qui correspond au maillage initial. Ce nom s'obtient avec la méthode ``GetIter0Name`` appliquée au cas. ::
iter_name = "Iteration_1"
iter_1 = homard.CreateIteration(iter_name, case_1.GetIter0Name())
iter_1.SetMeshFile("/local00/M.01.med")
homard.AssociateIterHypo(iter_name, "HypoField")
-Pour la création d'une itération suivante, on donnera le nom de l'itération parent de laquelle on part. ::
+Pour la création d'une itération suivante, on donnera le nom de l'itération parent de laquelle on part. ::
iter_name = "Iteration_2"
iter_1 = homard.CreateIteration(iter_name, "Iteration_1")
.. index:: single: boite
.. index:: single: sphere
-Les variables sont décrites dans :ref:`gui_create_zone`.
+Les variables sont décrites dans :ref:`gui_create_zone`.
-Méthodes de la classe homard
+Méthodes de la classe homard
""""""""""""""""""""""""""""
+---------------------------------------------------------------+
+===============================================================+
| .. module:: CreateZone |
| |
-| **CreateZone(zone_name)** |
+| **CreateZone(zone_name, zone_type)** |
| |
| - ``zone_name`` : le nom de la zone |
+| - ``zone_type`` : entier précisant le type de zone |
+| |
+| * 2 : parallélépipède |
+| * 4 : sphère |
+---------------------------------------------------------------+
-Méthodes de la classe zone
+Méthodes de la classe zone
""""""""""""""""""""""""""
+---------------------------------------------------------------+
| **GetName()** |
| Retourne le nom de la zone |
+---------------------------------------------------------------+
-| .. module:: SetZoneType |
-| |
-| **SetZoneType(zone_type)** |
-| |
-| - ``zone_type`` : entier précisant le type de zone |
+| .. module:: GetZoneType |
| |
-| * 2 : parallélépipède |
-| * 4 : sphère |
+| **GetZoneType()** |
+| Retourne le type de la zone |
+---------------------------------------------------------------+
| .. module:: SetBox |
| |
| - ``Xcen`` : X du centre |
| - ``Ycen`` : Y du centre |
| - ``Zcen`` : Z du centre |
-| - ``R`` : rayon de la sphère |
+| - ``R`` : rayon de la sphère |
+---------------------------------------------------------------+
Exemple
"""""""
-La création de l'objet zone_1 se fait ainsi : ::
+La création de l'objet zone_1 se fait ainsi : ::
- zone_1 = homard.CreateZone("Zone_2")
- zone_1.SetTypeZone(4)
+ zone_1 = homard.CreateZone("Zone_2", 4)
zone_1.SetSphere(12.3, 3.4, .56, 6.5)
L'adaptation
============
-.. index:: single: itération
+.. index:: single: itération
.. index:: single: calcul
-Méthodes de la classe homard
+Méthodes de la classe homard
""""""""""""""""""""""""""""
+---------------------------------------------------------------+
| .. index:: single: Compute |
| |
| **Compute(iter_name, option)** |
-| Calcule l'adaptation de maillage correspondant à |
-| une itération |
+| Calcule l'adaptation de maillage correspondant à |
+| une itération |
| |
-| - ``iter_name`` : le nom de l'itération |
-| - ``option`` : un entier précisant ce qui se passe quand |
-| des fichiers de résultats existent déjà |
-| * 0 : arrêt en erreur |
-| * 1 : écrasement des anciens fichiers |
+| - ``iter_name`` : le nom de l'itération |
+| - ``option`` : un entier précisant ce qui se passe quand |
+| des fichiers de résultats existent déjà |
+| * 0 : arrêt en erreur |
+| * 1 : écrasement des anciens fichiers |
| |
| Retourne un entier : |
-| * 0 : adaptation réussie |
-| * autre valeur : problème |
+| * 0 : adaptation réussie |
+| * autre valeur : problème |
+---------------------------------------------------------------+
Exemple
"""""""
-Le calcul de l'itération de nom "Iteration_1" avec écrasement des anciens fichiers de résultat se fait ainsi : ::
+Le calcul de l'itération de nom "Iteration_1" avec écrasement des anciens fichiers de résultat se fait ainsi : ::
iter_name = "Iteration_1"
codret = homard.Compute(iter_name, 1)
Mode d'emploi pour TUI
======================
-Le module HOMARD peut se lancer à partir d'instructions python. On trouvera ici la description de chacune des fonctions accessibles par l'utilisateur.
+Le module HOMARD peut se lancer à partir d'instructions python. On trouvera ici la description de chacune des fonctions accessibles par l'utilisateur.
.. toctree::
:maxdepth: 2
tui_create_iteration
tui_create_hypothese
tui_create_zone
+ tui_create_boundary
tui_homard
========
.. index:: single: exemple
.. index:: single: python
-On trouvera ici les instructions python pour quelques configurations caractéristiques. Les fichiers de données associés sont téléchargeables.
+On trouvera ici les instructions python pour quelques configurations caractéristiques. Les fichiers de données associés sont téléchargeables.
Raffinement uniforme
""""""""""""""""""""
.. index:: single: raffinement;uniforme
On fera ici trois raffinements uniformes successifs du maillage contenu dans le fichier ``tutorial_1.00.med``. Quelques remarques :
- * la même hypothèse est utilisée à chaque itération
- * le maillage produit porte toujours le même nom. Cela ne pose pas de problème car il est stocké dans des fichiers différents.
+ * la même hypothèse est utilisée à chaque itération
+ * le maillage produit porte toujours le même nom. Cela ne pose pas de problème car il est stocké dans des fichiers différents.
::
#
# Case "Case_0"
# =============
- Case_0 = homard.CreateCase('Case_0', 'MAILL', dircase+'/m0.med')
+ Case_0 = homard.CreateCase('Case_0', 'MAILL', dircase+'/tutorial_1.00.med')
Case_0.SetDirName(dircase)
Case_0.SetConfType(1)
#
codret = homard.Compute('Iter_2', 1)
.. note::
- Téléchargement des fichiers
+ Téléchargement des fichiers
* :download:`maillage initial<files/tutorial_1.00.med.gz>`
* :download:`commandes python<files/tutorial_1.py>`
"""""""""""""""""""""""""
.. index:: single: zone
-On procède ici au raffinement selon des zones. Pour passer du maillage initial au maillage 'M_1', on utilise une boîte encadrant le plan z=1 et une sphère centrée sur l'origine de rayon 1.05. Puis pour passer du maillage 'M_1' au maillage 'M_2', on remplace la sphère par une boîte encadrant le cube de côté 0.5, pointant sur l'origine. On notera que le type de raffinement n'a pas été précisé ; par défaut, il sera donc conforme.
+On procède ici au raffinement selon des zones. Pour passer du maillage initial au maillage 'M_1', on utilise une boîte encadrant le plan z=1 et une sphère centrée sur l'origine de rayon 1.05. Puis pour passer du maillage 'M_1' au maillage 'M_2', on remplace la sphère par une boîte encadrant le cube de côté 0.5, pointant sur l'origine. On notera que le type de raffinement n'a pas été précisé ; par défaut, il sera donc conforme.
::
dircase = "/tmp"
codret = homard.Compute('Iter_1', 1)
.. note::
- Téléchargement des fichiers
+ Téléchargement des fichiers
* :download:`maillage initial<files/tutorial_2.00.med.gz>`
* :download:`commandes python<files/tutorial_2.py>`
""""""""""""""""""""""""""
.. index:: single: champ
-On procède ici au raffinement selon un champ. Les hypothèses servent à définir le nom du champ et les seuils de raffinement/déraffinement. La donnée du fichier et des instants est faite dans l'itération.
+On procède ici au raffinement selon un champ. Les hypothèses servent à définir le nom du champ et les seuils de raffinement/déraffinement. La donnée du fichier et des instants est faite dans l'itération. Des champs sur les noeuds ou sur les mailles sont interpolés.
::
dircase = "/tmp"
Hypo_0.SetUseComp(0)
Hypo_0.AddComp('ERREST ')
Hypo_0.SetRefinThr(3, 1.0)
+ Hypo_0.SetTypeFieldInterp(2)
+ Hypo_0.AddFieldInterp('SOLU_0__DEPL____________________')
+ Hypo_0.AddFieldInterp('SOLU_0__ERRE_ELEM_SIGM__________')
#
# Hypothesis "Hypo_1"
# ===================
Hypo_1.AddComp('ERREST ')
Hypo_1.SetRefinThr(3, 1.5)
Hypo_1.SetUnRefThr(3, 6.)
+ Hypo_1.SetTypeFieldInterp(2)
+ Hypo_1.AddFieldInterp('SOLU_1__DEPL____________________')
+ Hypo_1.AddFieldInterp('SOLU_1__QIRE_ELEM_SIGM__________')
#
# Case "Case_0"
# =============
Iter_0 = homard.CreateIteration('Iter_0', Case_0.GetIter0Name())
Iter_0.SetMeshName('H_1')
Iter_0.SetMeshFile(dircase+'/maill.01.med')
- Iter_0.SetField(dircase+'/tutorial_3.00.med', 1, 1)
+ Iter_0.SetFieldFile(dircase+'/tutorial_3.00.med')
+ Iter_0.SetTimeStepRank( 1, 1)
homard.AssociateIterHypo('Iter_0', 'Hypo_0')
codret = homard.Compute('Iter_0', 1)
#
Iter_1 = homard.CreateIteration('Iter_1', 'Iter_0')
Iter_1.SetMeshName('H_2')
Iter_1.SetMeshFile('/tmp/maill.02.med')
- Iter_1.SetField(dircase+'/tutorial_3.01.med', 1, 1)
+ Iter_1.SetFieldFile(dircase+'/tutorial_3.01.med')
+ Iter_1.SetTimeStepRank(1, 1)
homard.AssociateIterHypo('Iter_1', 'Hypo_1')
codret = homard.Compute('Iter_1', 1)
.. note::
- Téléchargement des fichiers
+ Téléchargement des fichiers
- * :download:`maillage et champ étape 0<files/tutorial_3.00.med.gz>`
- * :download:`maillage et champ étape 1<files/tutorial_3.01.med.gz>`
+ * :download:`maillage et champ étape 0<files/tutorial_3.00.med.gz>`
+ * :download:`maillage et champ étape 1<files/tutorial_3.01.med.gz>`
* :download:`commandes python<files/tutorial_3.py>`
+Suivi de frontières courbes
+"""""""""""""""""""""""""""
+.. index:: single: champ
+
+On teste ici le suivi des frontières courbes : des frontières analytiques pour décrire les différentes surfaces des tuyaux et une frontière discrète pour décrire les lignes d'intersection des deux tuyaux. Le pilotage du raffinement est le suivant : raffinement uniforme de toutes les mailles contenues dans des groupes désignés.
+::
+ dircase = "/tmp"
+ #
+ # Creation of the boundaries
+ # ==========================
+ Boundary_1 = homard.CreateBoundary('intersection', 0)
+ Boundary_1.SetMeshFile(dircase+'/tutorial_4.fr.med')
+ Boundary_1.SetMeshName('PIQUAGE')
+ #
+ Boundary_2 = homard.CreateBoundary('cyl_1_ext', 1)
+ Boundary_2.SetCylinder(0.0, 25., -25., 25., 50., 75., 100.)
+ #
+ Boundary_3 = homard.CreateBoundary('cyl_2_ext', 1)
+ Boundary_3.SetCylinder(17.5, -2.5, -12.5, -100., -75., -25., 50.)
+ #
+ Boundary_4 = homard.CreateBoundary('cyl_1_int', 1)
+ Boundary_4.SetCylinder(0.0, 25., -25., 25., 50., 75., 75.)
+ #
+ Boundary_5 = homard.CreateBoundary('cyl_2_int', 1)
+ Boundary_5.SetCylinder(17.5, -2.5, -12.5, -100., -75., -25., 25.)
+ #
+ # Hypothesis "Hypo"
+ # ===================
+ # Creation of the hypothesis Hypo_1
+ Hypo_1 = homard.CreateHypothesis('Hypo_1')
+ Hypo_1.SetAdapRefinUnRef(-1, 1, 0)
+ Hypo_1.AddGroup('T1_INT')
+ Hypo_1.AddGroup('T2_INT')
+ # Creation of the hypothesis Hypo_2
+ Hypo_2 = homard.CreateHypothesis('Hypo_2')
+ Hypo_2.SetAdapRefinUnRef(-1, 1, 0)
+ Hypo_2.AddGroup('T1_EXT')
+ Hypo_2.AddGroup('T2_EXT')
+ #
+ # Case "Case"
+ # =============
+ Case = homard.CreateCase('Case', 'PIQUAGE', dircase+'/tutorial_4.00.med')
+ Case.SetDirName(dircase)
+ Case.AddBoundaryGroup( 'intersection', '' )
+ Case.AddBoundaryGroup( 'cyl_1_ext', 'T1_EXT' )
+ Case.AddBoundaryGroup( 'cyl_2_ext', 'T2_EXT' )
+ Case.AddBoundaryGroup( 'cyl_1_int', 'T1_INT' )
+ Case.AddBoundaryGroup( 'cyl_2_int', 'T2_INT' )
+ #
+ # Creation of the iterations
+ # ==========================
+ # Creation of the iteration Iter_1
+ Iter_1 = homard.CreateIteration('Iter_1', Case.GetIter0Name() )
+ Iter_1.SetMeshName('PIQUAGE_1')
+ Iter_1.SetMeshFile(dircase+'/maill.01.med')
+ homard.AssociateIterHypo('Iter_1', 'Hypo_1')
+ codret = homard.Compute('Iter_1', 1)
+ # Creation of the iteration Iter_2
+ Iter_2 = homard.CreateIteration('Iter_2', 'Iter_1' )
+ Iter_2.SetMeshName('PIQUAGE_2')
+ Iter_2.SetMeshFile(dircase+'/maill.02.med')
+ homard.AssociateIterHypo('Iter_2', 'Hypo_2')
+ codret = homard.Compute('Iter_2', 1)
+
+.. note::
+ Téléchargement des fichiers
+
+ * :download:`maillage initial<files/tutorial_4.00.med.gz>`
+ * :download:`maillage de la frontière discrète<files/tutorial_4.fr.med.gz>`
+ * :download:`commandes python<files/tutorial_4.py>`
+
+
.. toctree::
:maxdepth: 2
typedef sequence<string> listeCases;
typedef sequence<string> listeBoundarys;
- interface HOMARD_Gen : Engines::Component, SALOMEDS::Driver
+ interface HOMARD_Gen : Engines::EngineComponent, SALOMEDS::Driver
{
HOMARD_Cas CreateCase(in string nomCas, in string MeshName, in string FileName )
raises (SALOME::SALOME_Exception);
void DissociateHypoZone(in string nomZone, in string nomHypothesis)
raises (SALOME::SALOME_Exception);
+ void InvalideBoundary (in string nomBoundary) raises (SALOME::SALOME_Exception);
void InvalideZone (in string nomZone) raises (SALOME::SALOME_Exception);
void InvalideHypo (in string nomHypo) raises (SALOME::SALOME_Exception);
void InvalideIter (in string nomIter) raises (SALOME::SALOME_Exception);
HOMARD_BoundarySK.cc \
HOMARD_GenSK.cc
+BUILT_SOURCES = $(nodist_libSalomeIDLHOMARD_la_SOURCES)
+
# header files must be exported: other modules have to use this library
nodist_salomeinclude_HEADERS = $(BASEIDL_FILES:%.idl=%.hh)
SUFFIXES = .idl .hh SK.cc
.idlSK.cc:
$(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
-.idl.hh:
- $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
+#.idl.hh:
+# $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
install-exec-local: $(BASEIDL_FILES:%=$(top_srcdir)/idl/%)
$(INSTALL) -d $(DESTDIR)$(salomepythondir)
break;
}
}
- aScript << "\t" <<_NomBoundary << ".SetCaseCreation('";
- aScript << _NomCasCreation << "')\n";
-
- std::list<std::string>::const_iterator it;
- for ( it=_ListGroupSelected.begin(); it!=_ListGroupSelected.end();it++)
- aScript << "\t" << _NomBoundary << ".AddGroup('" << (*it) << "')\n" ;
-
return aScript.str();
}
std::ostringstream aScript;
aScript << "\n# Creation of the hypothesis " << _NomHypo << "\n" ;
aScript << "\t" << _NomHypo << " = homard.CreateHypothesis('" << _NomHypo << "')\n";
- aScript << "\t" << _NomHypo << ".SetCaseCreation('" << _NomCasCreation << "')\n";
aScript << "\t" << _NomHypo << ".SetAdapRefinUnRef(" << _TypeAdap << ", " << _TypeRaff << ", " << _TypeDera << ")\n";
// Raffinement selon des zones geometriques
// std::cerr << "A la fin de TexteBoundaryOption _Texte ="<<_Texte << std::endl;
}
////=============================================================================
-void HomardDriver::TexteBoundaryDi( const std::string MeshName, const std::string MeshFile )
+void HomardDriver::TexteBoundaryDi( const std::string MeshName, const std::string MeshFile, const std::string GroupName )
{
-// std::cerr << "Dans HomardDriver::TexteBoundaryDi, MeshName ="<<MeshName << std::endl;
+ MESSAGE("Dans TexteBoundaryDi de HomardDriver MeshName = "<<MeshName);
+ MESSAGE("Dans TexteBoundaryDi de HomardDriver MeshFile = "<<MeshFile);
+ MESSAGE("Dans TexteBoundaryDi de HomardDriver GroupName = "<<GroupName);
//
_Texte += "CCNoMFro " + MeshName + "\n" ;
_Texte += "CCFronti " + MeshFile + "\n" ;
+ if ( GroupName.size() > 0 ) _Texte += "CCGroFro " + GroupName + "\n" ;
//
// std::cerr << "A la fin de TexteBoundaryOption _Texte ="<<_Texte << std::endl;
}
////=============================================================================
void HomardDriver::TexteBoundaryAn( int NumeBoundary, int BoundaryType, const std::string Group, double x0, double x1, double x2, double x3, double x4, double x5, double x6 )
{
-std::cerr << "Dans TexteBoundaryAn de HomardDriver NumeBoundary = "<<NumeBoundary << std::endl;
-std::cerr << "Dans TexteBoundaryAn de HomardDriver BoundaryType = "<<BoundaryType << std::endl;
-std::cerr << "Dans TexteBoundaryAn de HomardDriver coor = "<< x0<<","<<x1<< ","<< x2<< ","<< x3<<","<<x4<<","<<x5<<","<<x6 <<std::endl;
+ MESSAGE("Dans TexteBoundaryAn de HomardDriver NumeBoundary = "<<NumeBoundary);
+ MESSAGE("Dans TexteBoundaryAn de HomardDriver BoundaryType = "<<BoundaryType);
+ MESSAGE("Dans TexteBoundaryAn de HomardDriver coor = "<< x0<<","<<x1<< ","<< x2<< ","<< x3<<","<<x4<<","<<x5<<","<<x6);
//
std::string saux, saux2 ;
//
void TexteCompo( int NumeComp, const std::string NomCompo);
void TexteBoundaryOption( int BoundaryOption );
- void TexteBoundaryDi( const std::string MeshName, const std::string MeshFile );
+ void TexteBoundaryDi( const std::string MeshName, const std::string MeshFile, const std::string GroupName );
void TexteBoundaryAn( int NumeBoundary, int BoundaryType, const std::string Group, double x0, double x1, double x2, double x3, double x4, double x5, double x6 );
void TexteFieldInterp( int TypeFieldInterp, const std::string FieldFile, const std::string MeshFile,
--- /dev/null
+/********************************************************************************
+** Form generated from reading ui file 'CreateBoundaryAn.ui'
+**
+** Created: Wed Jan 19 15:34:59 2011
+** by: Qt User Interface Compiler version 4.2.1
+**
+** WARNING! All changes made in this file will be lost when recompiling ui file!
+********************************************************************************/
+
+#ifndef CREATEBOUNDARYAN_H
+#define CREATEBOUNDARYAN_H
+
+#include <QtCore/QVariant>
+#include <QtGui/QAction>
+#include <QtGui/QApplication>
+#include <QtGui/QButtonGroup>
+#include <QtGui/QDialog>
+#include <QtGui/QDoubleSpinBox>
+#include <QtGui/QGridLayout>
+#include <QtGui/QGroupBox>
+#include <QtGui/QHBoxLayout>
+#include <QtGui/QLabel>
+#include <QtGui/QLineEdit>
+#include <QtGui/QPushButton>
+#include <QtGui/QRadioButton>
+
+class Ui_CreateBoundaryAn
+{
+public:
+ QGridLayout *gridLayout;
+ QGroupBox *gBCylindre;
+ QGridLayout *gridLayout1;
+ QDoubleSpinBox *SpinBox_Xcent;
+ QLabel *TLXcent;
+ QDoubleSpinBox *SpinBox_Radius;
+ QDoubleSpinBox *SpinBox_Zcent;
+ QLabel *TLradius;
+ QLabel *TLZcent;
+ QLabel *TLYcent;
+ QDoubleSpinBox *SpinBox_Ycent;
+ QLabel *TLXaxis;
+ QLabel *TLYaxis;
+ QLabel *TLZaxis;
+ QDoubleSpinBox *SpinBox_Zaxis;
+ QDoubleSpinBox *SpinBox_Yaxis;
+ QDoubleSpinBox *SpinBox_Xaxis;
+ QGroupBox *GBButtons;
+ QHBoxLayout *hboxLayout;
+ QPushButton *buttonOk;
+ QPushButton *buttonApply;
+ QPushButton *buttonCancel;
+ QPushButton *buttonHelp;
+ QGroupBox *gBSphere;
+ QGridLayout *gridLayout2;
+ QDoubleSpinBox *SpinBox_Rayon;
+ QDoubleSpinBox *SpinBox_Zcentre;
+ QLabel *TLRayon;
+ QLabel *TLZcentre;
+ QLabel *TLYcentre;
+ QDoubleSpinBox *SpinBox_Ycentre;
+ QDoubleSpinBox *SpinBox_Xcentre;
+ QLabel *TLXcentre;
+ QGroupBox *TypeBoundary;
+ QHBoxLayout *hboxLayout1;
+ QRadioButton *RBCylindre;
+ QRadioButton *RBSphere;
+ QLineEdit *LEBoundaryName;
+ QLabel *Name;
+
+ void setupUi(QDialog *CreateBoundaryAn)
+ {
+ CreateBoundaryAn->setObjectName(QString::fromUtf8("CreateBoundaryAn"));
+ CreateBoundaryAn->setAutoFillBackground(true);
+ CreateBoundaryAn->setSizeGripEnabled(true);
+ gridLayout = new QGridLayout(CreateBoundaryAn);
+ gridLayout->setSpacing(6);
+ gridLayout->setMargin(9);
+ gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
+ gBCylindre = new QGroupBox(CreateBoundaryAn);
+ gBCylindre->setObjectName(QString::fromUtf8("gBCylindre"));
+ QSizePolicy sizePolicy(static_cast<QSizePolicy::Policy>(0), static_cast<QSizePolicy::Policy>(0));
+ sizePolicy.setHorizontalStretch(0);
+ sizePolicy.setVerticalStretch(0);
+ sizePolicy.setHeightForWidth(gBCylindre->sizePolicy().hasHeightForWidth());
+ gBCylindre->setSizePolicy(sizePolicy);
+ gridLayout1 = new QGridLayout(gBCylindre);
+ gridLayout1->setSpacing(6);
+ gridLayout1->setMargin(9);
+ gridLayout1->setObjectName(QString::fromUtf8("gridLayout1"));
+ SpinBox_Xcent = new QDoubleSpinBox(gBCylindre);
+ SpinBox_Xcent->setObjectName(QString::fromUtf8("SpinBox_Xcent"));
+ SpinBox_Xcent->setDecimals(5);
+ SpinBox_Xcent->setMaximum(1e+09);
+ SpinBox_Xcent->setMinimum(-1e+09);
+ SpinBox_Xcent->setValue(0);
+
+ gridLayout1->addWidget(SpinBox_Xcent, 0, 1, 1, 1);
+
+ TLXcent = new QLabel(gBCylindre);
+ TLXcent->setObjectName(QString::fromUtf8("TLXcent"));
+ QSizePolicy sizePolicy1(static_cast<QSizePolicy::Policy>(0), static_cast<QSizePolicy::Policy>(0));
+ sizePolicy1.setHorizontalStretch(0);
+ sizePolicy1.setVerticalStretch(0);
+ sizePolicy1.setHeightForWidth(TLXcent->sizePolicy().hasHeightForWidth());
+ TLXcent->setSizePolicy(sizePolicy1);
+ TLXcent->setWordWrap(false);
+
+ gridLayout1->addWidget(TLXcent, 0, 0, 1, 1);
+
+ SpinBox_Radius = new QDoubleSpinBox(gBCylindre);
+ SpinBox_Radius->setObjectName(QString::fromUtf8("SpinBox_Radius"));
+ SpinBox_Radius->setDecimals(5);
+ SpinBox_Radius->setMaximum(1e+09);
+
+ gridLayout1->addWidget(SpinBox_Radius, 3, 1, 1, 2);
+
+ SpinBox_Zcent = new QDoubleSpinBox(gBCylindre);
+ SpinBox_Zcent->setObjectName(QString::fromUtf8("SpinBox_Zcent"));
+ SpinBox_Zcent->setDecimals(5);
+ SpinBox_Zcent->setMaximum(1e+09);
+ SpinBox_Zcent->setMinimum(-1e+09);
+ SpinBox_Zcent->setValue(0);
+
+ gridLayout1->addWidget(SpinBox_Zcent, 2, 1, 1, 1);
+
+ TLradius = new QLabel(gBCylindre);
+ TLradius->setObjectName(QString::fromUtf8("TLradius"));
+ QSizePolicy sizePolicy2(static_cast<QSizePolicy::Policy>(0), static_cast<QSizePolicy::Policy>(0));
+ sizePolicy2.setHorizontalStretch(0);
+ sizePolicy2.setVerticalStretch(0);
+ sizePolicy2.setHeightForWidth(TLradius->sizePolicy().hasHeightForWidth());
+ TLradius->setSizePolicy(sizePolicy2);
+ TLradius->setWordWrap(false);
+
+ gridLayout1->addWidget(TLradius, 3, 0, 1, 1);
+
+ TLZcent = new QLabel(gBCylindre);
+ TLZcent->setObjectName(QString::fromUtf8("TLZcent"));
+ QSizePolicy sizePolicy3(static_cast<QSizePolicy::Policy>(0), static_cast<QSizePolicy::Policy>(0));
+ sizePolicy3.setHorizontalStretch(0);
+ sizePolicy3.setVerticalStretch(0);
+ sizePolicy3.setHeightForWidth(TLZcent->sizePolicy().hasHeightForWidth());
+ TLZcent->setSizePolicy(sizePolicy3);
+ TLZcent->setWordWrap(false);
+
+ gridLayout1->addWidget(TLZcent, 2, 0, 1, 1);
+
+ TLYcent = new QLabel(gBCylindre);
+ TLYcent->setObjectName(QString::fromUtf8("TLYcent"));
+ QSizePolicy sizePolicy4(static_cast<QSizePolicy::Policy>(0), static_cast<QSizePolicy::Policy>(0));
+ sizePolicy4.setHorizontalStretch(0);
+ sizePolicy4.setVerticalStretch(0);
+ sizePolicy4.setHeightForWidth(TLYcent->sizePolicy().hasHeightForWidth());
+ TLYcent->setSizePolicy(sizePolicy4);
+ TLYcent->setWordWrap(false);
+
+ gridLayout1->addWidget(TLYcent, 1, 0, 1, 1);
+
+ SpinBox_Ycent = new QDoubleSpinBox(gBCylindre);
+ SpinBox_Ycent->setObjectName(QString::fromUtf8("SpinBox_Ycent"));
+ SpinBox_Ycent->setDecimals(5);
+ SpinBox_Ycent->setMaximum(1e+09);
+ SpinBox_Ycent->setMinimum(-1e+09);
+ SpinBox_Ycent->setValue(0);
+
+ gridLayout1->addWidget(SpinBox_Ycent, 1, 1, 1, 1);
+
+ TLXaxis = new QLabel(gBCylindre);
+ TLXaxis->setObjectName(QString::fromUtf8("TLXaxis"));
+ QSizePolicy sizePolicy5(static_cast<QSizePolicy::Policy>(0), static_cast<QSizePolicy::Policy>(0));
+ sizePolicy5.setHorizontalStretch(0);
+ sizePolicy5.setVerticalStretch(0);
+ sizePolicy5.setHeightForWidth(TLXaxis->sizePolicy().hasHeightForWidth());
+ TLXaxis->setSizePolicy(sizePolicy5);
+ TLXaxis->setWordWrap(false);
+
+ gridLayout1->addWidget(TLXaxis, 0, 2, 1, 1);
+
+ TLYaxis = new QLabel(gBCylindre);
+ TLYaxis->setObjectName(QString::fromUtf8("TLYaxis"));
+ QSizePolicy sizePolicy6(static_cast<QSizePolicy::Policy>(0), static_cast<QSizePolicy::Policy>(0));
+ sizePolicy6.setHorizontalStretch(0);
+ sizePolicy6.setVerticalStretch(0);
+ sizePolicy6.setHeightForWidth(TLYaxis->sizePolicy().hasHeightForWidth());
+ TLYaxis->setSizePolicy(sizePolicy6);
+ TLYaxis->setWordWrap(false);
+
+ gridLayout1->addWidget(TLYaxis, 1, 2, 1, 1);
+
+ TLZaxis = new QLabel(gBCylindre);
+ TLZaxis->setObjectName(QString::fromUtf8("TLZaxis"));
+ QSizePolicy sizePolicy7(static_cast<QSizePolicy::Policy>(0), static_cast<QSizePolicy::Policy>(0));
+ sizePolicy7.setHorizontalStretch(0);
+ sizePolicy7.setVerticalStretch(0);
+ sizePolicy7.setHeightForWidth(TLZaxis->sizePolicy().hasHeightForWidth());
+ TLZaxis->setSizePolicy(sizePolicy7);
+ TLZaxis->setWordWrap(false);
+
+ gridLayout1->addWidget(TLZaxis, 2, 2, 1, 1);
+
+ SpinBox_Zaxis = new QDoubleSpinBox(gBCylindre);
+ SpinBox_Zaxis->setObjectName(QString::fromUtf8("SpinBox_Zaxis"));
+ SpinBox_Zaxis->setDecimals(5);
+ SpinBox_Zaxis->setMaximum(1e+09);
+ SpinBox_Zaxis->setMinimum(-1e+09);
+ SpinBox_Zaxis->setValue(0);
+
+ gridLayout1->addWidget(SpinBox_Zaxis, 2, 3, 1, 1);
+
+ SpinBox_Yaxis = new QDoubleSpinBox(gBCylindre);
+ SpinBox_Yaxis->setObjectName(QString::fromUtf8("SpinBox_Yaxis"));
+ SpinBox_Yaxis->setDecimals(5);
+ SpinBox_Yaxis->setMaximum(1e+09);
+ SpinBox_Yaxis->setMinimum(-1e+09);
+ SpinBox_Yaxis->setValue(0);
+
+ gridLayout1->addWidget(SpinBox_Yaxis, 1, 3, 1, 1);
+
+ SpinBox_Xaxis = new QDoubleSpinBox(gBCylindre);
+ SpinBox_Xaxis->setObjectName(QString::fromUtf8("SpinBox_Xaxis"));
+ SpinBox_Xaxis->setDecimals(5);
+ SpinBox_Xaxis->setMaximum(1e+09);
+ SpinBox_Xaxis->setMinimum(-1e+09);
+ SpinBox_Xaxis->setValue(0);
+
+ gridLayout1->addWidget(SpinBox_Xaxis, 0, 3, 1, 1);
+
+
+ gridLayout->addWidget(gBCylindre, 2, 0, 1, 2);
+
+ GBButtons = new QGroupBox(CreateBoundaryAn);
+ GBButtons->setObjectName(QString::fromUtf8("GBButtons"));
+ QSizePolicy sizePolicy8(static_cast<QSizePolicy::Policy>(0), static_cast<QSizePolicy::Policy>(0));
+ sizePolicy8.setHorizontalStretch(0);
+ sizePolicy8.setVerticalStretch(0);
+ sizePolicy8.setHeightForWidth(GBButtons->sizePolicy().hasHeightForWidth());
+ GBButtons->setSizePolicy(sizePolicy8);
+ hboxLayout = new QHBoxLayout(GBButtons);
+ hboxLayout->setSpacing(6);
+ hboxLayout->setMargin(9);
+ hboxLayout->setObjectName(QString::fromUtf8("hboxLayout"));
+ buttonOk = new QPushButton(GBButtons);
+ buttonOk->setObjectName(QString::fromUtf8("buttonOk"));
+
+ hboxLayout->addWidget(buttonOk);
+
+ buttonApply = new QPushButton(GBButtons);
+ buttonApply->setObjectName(QString::fromUtf8("buttonApply"));
+
+ hboxLayout->addWidget(buttonApply);
+
+ buttonCancel = new QPushButton(GBButtons);
+ buttonCancel->setObjectName(QString::fromUtf8("buttonCancel"));
+
+ hboxLayout->addWidget(buttonCancel);
+
+ buttonHelp = new QPushButton(GBButtons);
+ buttonHelp->setObjectName(QString::fromUtf8("buttonHelp"));
+
+ hboxLayout->addWidget(buttonHelp);
+
+
+ gridLayout->addWidget(GBButtons, 4, 0, 1, 2);
+
+ gBSphere = new QGroupBox(CreateBoundaryAn);
+ gBSphere->setObjectName(QString::fromUtf8("gBSphere"));
+ QSizePolicy sizePolicy9(static_cast<QSizePolicy::Policy>(0), static_cast<QSizePolicy::Policy>(0));
+ sizePolicy9.setHorizontalStretch(0);
+ sizePolicy9.setVerticalStretch(0);
+ sizePolicy9.setHeightForWidth(gBSphere->sizePolicy().hasHeightForWidth());
+ gBSphere->setSizePolicy(sizePolicy9);
+ gridLayout2 = new QGridLayout(gBSphere);
+ gridLayout2->setSpacing(6);
+ gridLayout2->setMargin(9);
+ gridLayout2->setObjectName(QString::fromUtf8("gridLayout2"));
+ SpinBox_Rayon = new QDoubleSpinBox(gBSphere);
+ SpinBox_Rayon->setObjectName(QString::fromUtf8("SpinBox_Rayon"));
+ SpinBox_Rayon->setDecimals(5);
+ SpinBox_Rayon->setMaximum(1e+09);
+ SpinBox_Rayon->setMinimum(0);
+ SpinBox_Rayon->setValue(0);
+
+ gridLayout2->addWidget(SpinBox_Rayon, 1, 3, 1, 1);
+
+ SpinBox_Zcentre = new QDoubleSpinBox(gBSphere);
+ SpinBox_Zcentre->setObjectName(QString::fromUtf8("SpinBox_Zcentre"));
+ SpinBox_Zcentre->setDecimals(5);
+ SpinBox_Zcentre->setMaximum(1e+09);
+ SpinBox_Zcentre->setMinimum(-1e+09);
+ SpinBox_Zcentre->setValue(0);
+
+ gridLayout2->addWidget(SpinBox_Zcentre, 2, 1, 1, 1);
+
+ TLRayon = new QLabel(gBSphere);
+ TLRayon->setObjectName(QString::fromUtf8("TLRayon"));
+ QSizePolicy sizePolicy10(static_cast<QSizePolicy::Policy>(0), static_cast<QSizePolicy::Policy>(0));
+ sizePolicy10.setHorizontalStretch(0);
+ sizePolicy10.setVerticalStretch(0);
+ sizePolicy10.setHeightForWidth(TLRayon->sizePolicy().hasHeightForWidth());
+ TLRayon->setSizePolicy(sizePolicy10);
+ TLRayon->setWordWrap(false);
+
+ gridLayout2->addWidget(TLRayon, 1, 2, 1, 1);
+
+ TLZcentre = new QLabel(gBSphere);
+ TLZcentre->setObjectName(QString::fromUtf8("TLZcentre"));
+ QSizePolicy sizePolicy11(static_cast<QSizePolicy::Policy>(0), static_cast<QSizePolicy::Policy>(0));
+ sizePolicy11.setHorizontalStretch(0);
+ sizePolicy11.setVerticalStretch(0);
+ sizePolicy11.setHeightForWidth(TLZcentre->sizePolicy().hasHeightForWidth());
+ TLZcentre->setSizePolicy(sizePolicy11);
+ TLZcentre->setWordWrap(false);
+
+ gridLayout2->addWidget(TLZcentre, 2, 0, 1, 1);
+
+ TLYcentre = new QLabel(gBSphere);
+ TLYcentre->setObjectName(QString::fromUtf8("TLYcentre"));
+ QSizePolicy sizePolicy12(static_cast<QSizePolicy::Policy>(0), static_cast<QSizePolicy::Policy>(0));
+ sizePolicy12.setHorizontalStretch(0);
+ sizePolicy12.setVerticalStretch(0);
+ sizePolicy12.setHeightForWidth(TLYcentre->sizePolicy().hasHeightForWidth());
+ TLYcentre->setSizePolicy(sizePolicy12);
+ TLYcentre->setWordWrap(false);
+
+ gridLayout2->addWidget(TLYcentre, 1, 0, 1, 1);
+
+ SpinBox_Ycentre = new QDoubleSpinBox(gBSphere);
+ SpinBox_Ycentre->setObjectName(QString::fromUtf8("SpinBox_Ycentre"));
+ SpinBox_Ycentre->setDecimals(5);
+ SpinBox_Ycentre->setMaximum(1e+09);
+ SpinBox_Ycentre->setMinimum(-1e+09);
+ SpinBox_Ycentre->setValue(0);
+
+ gridLayout2->addWidget(SpinBox_Ycentre, 1, 1, 1, 1);
+
+ SpinBox_Xcentre = new QDoubleSpinBox(gBSphere);
+ SpinBox_Xcentre->setObjectName(QString::fromUtf8("SpinBox_Xcentre"));
+ SpinBox_Xcentre->setDecimals(5);
+ SpinBox_Xcentre->setMaximum(1e+09);
+ SpinBox_Xcentre->setMinimum(-1e+09);
+ SpinBox_Xcentre->setValue(0);
+
+ gridLayout2->addWidget(SpinBox_Xcentre, 0, 1, 1, 1);
+
+ TLXcentre = new QLabel(gBSphere);
+ TLXcentre->setObjectName(QString::fromUtf8("TLXcentre"));
+ QSizePolicy sizePolicy13(static_cast<QSizePolicy::Policy>(0), static_cast<QSizePolicy::Policy>(0));
+ sizePolicy13.setHorizontalStretch(0);
+ sizePolicy13.setVerticalStretch(0);
+ sizePolicy13.setHeightForWidth(TLXcentre->sizePolicy().hasHeightForWidth());
+ TLXcentre->setSizePolicy(sizePolicy13);
+ TLXcentre->setWordWrap(false);
+
+ gridLayout2->addWidget(TLXcentre, 0, 0, 1, 1);
+
+
+ gridLayout->addWidget(gBSphere, 3, 0, 1, 2);
+
+ TypeBoundary = new QGroupBox(CreateBoundaryAn);
+ TypeBoundary->setObjectName(QString::fromUtf8("TypeBoundary"));
+ QSizePolicy sizePolicy14(static_cast<QSizePolicy::Policy>(0), static_cast<QSizePolicy::Policy>(0));
+ sizePolicy14.setHorizontalStretch(0);
+ sizePolicy14.setVerticalStretch(0);
+ sizePolicy14.setHeightForWidth(TypeBoundary->sizePolicy().hasHeightForWidth());
+ TypeBoundary->setSizePolicy(sizePolicy14);
+ TypeBoundary->setMinimumSize(QSize(340, 0));
+ hboxLayout1 = new QHBoxLayout(TypeBoundary);
+ hboxLayout1->setSpacing(6);
+ hboxLayout1->setMargin(9);
+ hboxLayout1->setObjectName(QString::fromUtf8("hboxLayout1"));
+ RBCylindre = new QRadioButton(TypeBoundary);
+ RBCylindre->setObjectName(QString::fromUtf8("RBCylindre"));
+ RBCylindre->setIcon(QIcon(QString::fromUtf8("../../resources/cylinderpointvector.png")));
+ RBCylindre->setCheckable(true);
+ RBCylindre->setChecked(true);
+
+ hboxLayout1->addWidget(RBCylindre);
+
+ RBSphere = new QRadioButton(TypeBoundary);
+ RBSphere->setObjectName(QString::fromUtf8("RBSphere"));
+ RBSphere->setIcon(QIcon(QString::fromUtf8("../../resources/zone_spherepoint.png")));
+
+ hboxLayout1->addWidget(RBSphere);
+
+
+ gridLayout->addWidget(TypeBoundary, 1, 0, 1, 2);
+
+ LEBoundaryName = new QLineEdit(CreateBoundaryAn);
+ LEBoundaryName->setObjectName(QString::fromUtf8("LEBoundaryName"));
+ LEBoundaryName->setMaxLength(32);
+
+ gridLayout->addWidget(LEBoundaryName, 0, 1, 1, 1);
+
+ Name = new QLabel(CreateBoundaryAn);
+ Name->setObjectName(QString::fromUtf8("Name"));
+
+ gridLayout->addWidget(Name, 0, 0, 1, 1);
+
+
+ retranslateUi(CreateBoundaryAn);
+
+ QSize size(458, 500);
+ size = size.expandedTo(CreateBoundaryAn->minimumSizeHint());
+ CreateBoundaryAn->resize(size);
+
+
+ QMetaObject::connectSlotsByName(CreateBoundaryAn);
+ } // setupUi
+
+ void retranslateUi(QDialog *CreateBoundaryAn)
+ {
+ CreateBoundaryAn->setWindowTitle(QApplication::translate("CreateBoundaryAn", "Create Analytical Boundary", 0, QApplication::UnicodeUTF8));
+ gBCylindre->setTitle(QApplication::translate("CreateBoundaryAn", "Coordinates of the cylindre", 0, QApplication::UnicodeUTF8));
+ TLXcent->setText(QApplication::translate("CreateBoundaryAn", "X centre", 0, QApplication::UnicodeUTF8));
+ TLradius->setText(QApplication::translate("CreateBoundaryAn", "Radius", 0, QApplication::UnicodeUTF8));
+ TLZcent->setText(QApplication::translate("CreateBoundaryAn", "Z centre", 0, QApplication::UnicodeUTF8));
+ TLYcent->setText(QApplication::translate("CreateBoundaryAn", "Y centre", 0, QApplication::UnicodeUTF8));
+ TLXaxis->setText(QApplication::translate("CreateBoundaryAn", "X axis", 0, QApplication::UnicodeUTF8));
+ TLYaxis->setText(QApplication::translate("CreateBoundaryAn", "Y axis", 0, QApplication::UnicodeUTF8));
+ TLZaxis->setText(QApplication::translate("CreateBoundaryAn", "Z axis", 0, QApplication::UnicodeUTF8));
+ GBButtons->setTitle(QString());
+ buttonOk->setText(QApplication::translate("CreateBoundaryAn", "&Ok", 0, QApplication::UnicodeUTF8));
+ buttonApply->setText(QApplication::translate("CreateBoundaryAn", "&Apply", 0, QApplication::UnicodeUTF8));
+ buttonCancel->setText(QApplication::translate("CreateBoundaryAn", "&Cancel", 0, QApplication::UnicodeUTF8));
+ buttonHelp->setText(QApplication::translate("CreateBoundaryAn", "&Help", 0, QApplication::UnicodeUTF8));
+ gBSphere->setTitle(QApplication::translate("CreateBoundaryAn", "Coordinates of the sphere", 0, QApplication::UnicodeUTF8));
+ TLRayon->setText(QApplication::translate("CreateBoundaryAn", "Radius", 0, QApplication::UnicodeUTF8));
+ TLZcentre->setText(QApplication::translate("CreateBoundaryAn", "Z centre", 0, QApplication::UnicodeUTF8));
+ TLYcentre->setText(QApplication::translate("CreateBoundaryAn", "Y centre", 0, QApplication::UnicodeUTF8));
+ TLXcentre->setText(QApplication::translate("CreateBoundaryAn", "X centre", 0, QApplication::UnicodeUTF8));
+ TypeBoundary->setTitle(QApplication::translate("CreateBoundaryAn", "Type of boundary", 0, QApplication::UnicodeUTF8));
+ RBCylindre->setText(QString());
+ RBSphere->setText(QString());
+ Name->setText(QApplication::translate("CreateBoundaryAn", "Name", 0, QApplication::UnicodeUTF8));
+ Q_UNUSED(CreateBoundaryAn);
+ } // retranslateUi
+
+};
+
+namespace Ui {
+ class CreateBoundaryAn: public Ui_CreateBoundaryAn {};
+} // namespace Ui
+
+#endif // CREATEBOUNDARYAN_H
--- /dev/null
+<ui version="4.0" >
+ <class>CreateBoundaryAn</class>
+ <widget class="QDialog" name="CreateBoundaryAn" >
+ <property name="geometry" >
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>458</width>
+ <height>500</height>
+ </rect>
+ </property>
+ <property name="windowTitle" >
+ <string>Create Analytical Boundary</string>
+ </property>
+ <property name="autoFillBackground" >
+ <bool>true</bool>
+ </property>
+ <property name="sizeGripEnabled" >
+ <bool>true</bool>
+ </property>
+ <layout class="QGridLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item row="2" column="0" colspan="2" >
+ <widget class="QGroupBox" name="gBCylindre" >
+ <property name="sizePolicy" >
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="title" >
+ <string>Coordinates of the cylindre</string>
+ </property>
+ <layout class="QGridLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item row="0" column="1" >
+ <widget class="QDoubleSpinBox" name="SpinBox_Xcent" >
+ <property name="decimals" >
+ <number>5</number>
+ </property>
+ <property name="maximum" >
+ <double>999999999.000000000000000</double>
+ </property>
+ <property name="minimum" >
+ <double>-999999999.000000000000000</double>
+ </property>
+ <property name="value" >
+ <double>0.000000000000000</double>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0" >
+ <widget class="QLabel" name="TLXcent" >
+ <property name="sizePolicy" >
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>X centre</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1" colspan="2" >
+ <widget class="QDoubleSpinBox" name="SpinBox_Radius" >
+ <property name="decimals" >
+ <number>5</number>
+ </property>
+ <property name="maximum" >
+ <double>1000000000.000000000000000</double>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1" >
+ <widget class="QDoubleSpinBox" name="SpinBox_Zcent" >
+ <property name="decimals" >
+ <number>5</number>
+ </property>
+ <property name="maximum" >
+ <double>999999999.000000000000000</double>
+ </property>
+ <property name="minimum" >
+ <double>-999999999.000000000000000</double>
+ </property>
+ <property name="value" >
+ <double>0.000000000000000</double>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0" >
+ <widget class="QLabel" name="TLradius" >
+ <property name="sizePolicy" >
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>Radius</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0" >
+ <widget class="QLabel" name="TLZcent" >
+ <property name="sizePolicy" >
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>Z centre</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" >
+ <widget class="QLabel" name="TLYcent" >
+ <property name="sizePolicy" >
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>Y centre</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1" >
+ <widget class="QDoubleSpinBox" name="SpinBox_Ycent" >
+ <property name="decimals" >
+ <number>5</number>
+ </property>
+ <property name="maximum" >
+ <double>999999999.000000000000000</double>
+ </property>
+ <property name="minimum" >
+ <double>-999999999.000000000000000</double>
+ </property>
+ <property name="value" >
+ <double>0.000000000000000</double>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2" >
+ <widget class="QLabel" name="TLXaxis" >
+ <property name="sizePolicy" >
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>X axis</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2" >
+ <widget class="QLabel" name="TLYaxis" >
+ <property name="sizePolicy" >
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>Y axis</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="2" >
+ <widget class="QLabel" name="TLZaxis" >
+ <property name="sizePolicy" >
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>Z axis</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="3" >
+ <widget class="QDoubleSpinBox" name="SpinBox_Zaxis" >
+ <property name="decimals" >
+ <number>5</number>
+ </property>
+ <property name="maximum" >
+ <double>999999999.000000000000000</double>
+ </property>
+ <property name="minimum" >
+ <double>-999999999.000000000000000</double>
+ </property>
+ <property name="value" >
+ <double>0.000000000000000</double>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="3" >
+ <widget class="QDoubleSpinBox" name="SpinBox_Yaxis" >
+ <property name="decimals" >
+ <number>5</number>
+ </property>
+ <property name="maximum" >
+ <double>999999999.000000000000000</double>
+ </property>
+ <property name="minimum" >
+ <double>-999999999.000000000000000</double>
+ </property>
+ <property name="value" >
+ <double>0.000000000000000</double>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="3" >
+ <widget class="QDoubleSpinBox" name="SpinBox_Xaxis" >
+ <property name="decimals" >
+ <number>5</number>
+ </property>
+ <property name="maximum" >
+ <double>999999999.000000000000000</double>
+ </property>
+ <property name="minimum" >
+ <double>-999999999.000000000000000</double>
+ </property>
+ <property name="value" >
+ <double>0.000000000000000</double>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="4" column="0" colspan="2" >
+ <widget class="QGroupBox" name="GBButtons" >
+ <property name="sizePolicy" >
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="title" >
+ <string/>
+ </property>
+ <layout class="QHBoxLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QPushButton" name="buttonOk" >
+ <property name="text" >
+ <string>&Ok</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="buttonApply" >
+ <property name="text" >
+ <string>&Apply</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="buttonCancel" >
+ <property name="text" >
+ <string>&Cancel</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="buttonHelp" >
+ <property name="text" >
+ <string>&Help</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="3" column="0" colspan="2" >
+ <widget class="QGroupBox" name="gBSphere" >
+ <property name="sizePolicy" >
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="title" >
+ <string>Coordinates of the sphere</string>
+ </property>
+ <layout class="QGridLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item row="1" column="3" >
+ <widget class="QDoubleSpinBox" name="SpinBox_Rayon" >
+ <property name="decimals" >
+ <number>5</number>
+ </property>
+ <property name="maximum" >
+ <double>999999999.000000000000000</double>
+ </property>
+ <property name="minimum" >
+ <double>0.000000000000000</double>
+ </property>
+ <property name="value" >
+ <double>0.000000000000000</double>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1" >
+ <widget class="QDoubleSpinBox" name="SpinBox_Zcentre" >
+ <property name="decimals" >
+ <number>5</number>
+ </property>
+ <property name="maximum" >
+ <double>999999999.000000000000000</double>
+ </property>
+ <property name="minimum" >
+ <double>-999999999.000000000000000</double>
+ </property>
+ <property name="value" >
+ <double>0.000000000000000</double>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2" >
+ <widget class="QLabel" name="TLRayon" >
+ <property name="sizePolicy" >
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>Radius</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0" >
+ <widget class="QLabel" name="TLZcentre" >
+ <property name="sizePolicy" >
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>Z centre</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" >
+ <widget class="QLabel" name="TLYcentre" >
+ <property name="sizePolicy" >
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>Y centre</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1" >
+ <widget class="QDoubleSpinBox" name="SpinBox_Ycentre" >
+ <property name="decimals" >
+ <number>5</number>
+ </property>
+ <property name="maximum" >
+ <double>999999999.000000000000000</double>
+ </property>
+ <property name="minimum" >
+ <double>-999999999.000000000000000</double>
+ </property>
+ <property name="value" >
+ <double>0.000000000000000</double>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1" >
+ <widget class="QDoubleSpinBox" name="SpinBox_Xcentre" >
+ <property name="decimals" >
+ <number>5</number>
+ </property>
+ <property name="maximum" >
+ <double>999999999.000000000000000</double>
+ </property>
+ <property name="minimum" >
+ <double>-999999999.000000000000000</double>
+ </property>
+ <property name="value" >
+ <double>0.000000000000000</double>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0" >
+ <widget class="QLabel" name="TLXcentre" >
+ <property name="sizePolicy" >
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>X centre</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="1" column="0" colspan="2" >
+ <widget class="QGroupBox" name="TypeBoundary" >
+ <property name="sizePolicy" >
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize" >
+ <size>
+ <width>340</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="title" >
+ <string>Type of boundary</string>
+ </property>
+ <layout class="QHBoxLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QRadioButton" name="RBCylindre" >
+ <property name="text" >
+ <string/>
+ </property>
+ <property name="icon" >
+ <iconset>../../resources/cylinderpointvector.png</iconset>
+ </property>
+ <property name="checkable" >
+ <bool>true</bool>
+ </property>
+ <property name="checked" >
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="RBSphere" >
+ <property name="text" >
+ <string/>
+ </property>
+ <property name="icon" >
+ <iconset>../../resources/zone_spherepoint.png</iconset>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="0" column="1" >
+ <widget class="QLineEdit" name="LEBoundaryName" >
+ <property name="maxLength" >
+ <number>32</number>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0" >
+ <widget class="QLabel" name="Name" >
+ <property name="text" >
+ <string>Name</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
/********************************************************************************
** Form generated from reading ui file 'CreateCase.ui'
**
-** Created: Fri Nov 26 13:44:35 2010
-** by: Qt User Interface Compiler version 4.4.3
+** Created: Mon Jan 31 13:48:20 2011
+** by: Qt User Interface Compiler version 4.2.1
**
** WARNING! All changes made in this file will be lost when recompiling ui file!
********************************************************************************/
#include <QtGui/QVBoxLayout>
#include <QtGui/QWidget>
-QT_BEGIN_NAMESPACE
-
class Ui_CreateCase
{
public:
- QGridLayout *gridLayout_2;
- QHBoxLayout *horizontalLayout_5;
+ QGridLayout *gridLayout;
+ QGroupBox *GroupButtons;
+ QGridLayout *gridLayout1;
+ QPushButton *buttonOk;
+ QPushButton *buttonApply;
+ QPushButton *buttonCancel;
+ QPushButton *buttonHelp;
+ QGroupBox *GBBoundaryA;
+ QWidget *layoutWidget;
+ QVBoxLayout *vboxLayout;
+ QPushButton *PBBoundaryAnNew;
+ QPushButton *PBBoundaryAnHelp;
+ QTableWidget *TWBoundary;
+ QHBoxLayout *hboxLayout;
QLabel *Name;
QLineEdit *LECaseName;
- QHBoxLayout *horizontalLayout_4;
+ QHBoxLayout *hboxLayout1;
QLabel *Directory;
QPushButton *PushDir;
QLineEdit *LEDirName;
- QHBoxLayout *horizontalLayout_3;
+ QHBoxLayout *hboxLayout2;
QLabel *Mesh_2;
QPushButton *PushFichier;
QLineEdit *LEFileName;
- QSpacerItem *verticalSpacer_2;
+ QSpacerItem *spacerItem;
QGroupBox *GBTypeConf;
- QHBoxLayout *horizontalLayout;
+ QHBoxLayout *hboxLayout3;
QRadioButton *RBConforme;
QRadioButton *RBNonConforme;
- QSpacerItem *verticalSpacer_3;
+ QSpacerItem *spacerItem1;
QGroupBox *GBTypeNoConf;
- QHBoxLayout *horizontalLayout_2;
+ QHBoxLayout *hboxLayout4;
QRadioButton *RB1NpM;
QRadioButton *RB1NpA;
QRadioButton *RBQuelconque;
- QSpacerItem *verticalSpacer_4;
- QHBoxLayout *horizontalLayout_6;
+ QSpacerItem *spacerItem2;
+ QHBoxLayout *hboxLayout5;
QCheckBox *CBBoundaryD;
QCheckBox *CBBoundaryA;
- QSpacerItem *verticalSpacer_7;
+ QSpacerItem *spacerItem3;
+ QSpacerItem *spacerItem4;
QGroupBox *GBBoundaryD;
- QGridLayout *gridLayout_3;
- QComboBox *CBBoundaryDi;
- QSpacerItem *spacer_2;
- QPushButton *PBBoundaryDiEdit;
+ QGridLayout *gridLayout2;
+ QPushButton *PBBoundaryDiHelp;
QPushButton *PBBoundaryDiNew;
- QGroupBox *GBBoundaryA;
- QTableWidget *TWBoundary;
- QWidget *layoutWidget;
- QVBoxLayout *verticalLayout_4;
- QPushButton *PBBoundaryNew;
- QPushButton *PBBoundaryEdit;
- QPushButton *PBBoundaryDelete;
- QGroupBox *GroupButtons;
- QGridLayout *gridLayout;
- QPushButton *buttonOk;
- QPushButton *buttonApply;
- QPushButton *buttonCancel;
- QPushButton *buttonHelp;
- QSpacerItem *verticalSpacer_5;
+ QPushButton *PBBoundaryDiEdit;
+ QSpacerItem *spacerItem5;
+ QComboBox *CBBoundaryDi;
void setupUi(QDialog *CreateCase)
{
- if (CreateCase->objectName().isEmpty())
- CreateCase->setObjectName(QString::fromUtf8("CreateCase"));
- CreateCase->resize(589, 675);
- QSizePolicy sizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
+ CreateCase->setObjectName(QString::fromUtf8("CreateCase"));
+ QSizePolicy sizePolicy(static_cast<QSizePolicy::Policy>(0), static_cast<QSizePolicy::Policy>(0));
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0);
sizePolicy.setHeightForWidth(CreateCase->sizePolicy().hasHeightForWidth());
CreateCase->setSizePolicy(sizePolicy);
- CreateCase->setAutoFillBackground(false);
- gridLayout_2 = new QGridLayout(CreateCase);
- gridLayout_2->setObjectName(QString::fromUtf8("gridLayout_2"));
- horizontalLayout_5 = new QHBoxLayout();
- horizontalLayout_5->setObjectName(QString::fromUtf8("horizontalLayout_5"));
+ CreateCase->setAutoFillBackground(true);
+ gridLayout = new QGridLayout(CreateCase);
+ gridLayout->setSpacing(6);
+ gridLayout->setMargin(9);
+ gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
+ GroupButtons = new QGroupBox(CreateCase);
+ GroupButtons->setObjectName(QString::fromUtf8("GroupButtons"));
+ gridLayout1 = new QGridLayout(GroupButtons);
+ gridLayout1->setSpacing(6);
+ gridLayout1->setMargin(9);
+ gridLayout1->setObjectName(QString::fromUtf8("gridLayout1"));
+ buttonOk = new QPushButton(GroupButtons);
+ buttonOk->setObjectName(QString::fromUtf8("buttonOk"));
+ buttonOk->setAutoDefault(false);
+
+ gridLayout1->addWidget(buttonOk, 0, 0, 1, 1);
+
+ buttonApply = new QPushButton(GroupButtons);
+ buttonApply->setObjectName(QString::fromUtf8("buttonApply"));
+ buttonApply->setAutoDefault(false);
+
+ gridLayout1->addWidget(buttonApply, 0, 1, 1, 1);
+
+ buttonCancel = new QPushButton(GroupButtons);
+ buttonCancel->setObjectName(QString::fromUtf8("buttonCancel"));
+ buttonCancel->setAutoDefault(false);
+
+ gridLayout1->addWidget(buttonCancel, 0, 2, 1, 1);
+
+ buttonHelp = new QPushButton(GroupButtons);
+ buttonHelp->setObjectName(QString::fromUtf8("buttonHelp"));
+ buttonHelp->setAutoDefault(false);
+
+ gridLayout1->addWidget(buttonHelp, 0, 3, 1, 1);
+
+
+ gridLayout->addWidget(GroupButtons, 13, 0, 1, 2);
+
+ GBBoundaryA = new QGroupBox(CreateCase);
+ GBBoundaryA->setObjectName(QString::fromUtf8("GBBoundaryA"));
+ GBBoundaryA->setMinimumSize(QSize(548, 300));
+ layoutWidget = new QWidget(GBBoundaryA);
+ layoutWidget->setObjectName(QString::fromUtf8("layoutWidget"));
+ layoutWidget->setGeometry(QRect(410, 20, 120, 110));
+ vboxLayout = new QVBoxLayout(layoutWidget);
+ vboxLayout->setSpacing(6);
+ vboxLayout->setMargin(0);
+ vboxLayout->setObjectName(QString::fromUtf8("vboxLayout"));
+ PBBoundaryAnNew = new QPushButton(layoutWidget);
+ PBBoundaryAnNew->setObjectName(QString::fromUtf8("PBBoundaryAnNew"));
+ PBBoundaryAnNew->setAutoDefault(false);
+
+ vboxLayout->addWidget(PBBoundaryAnNew);
+
+ PBBoundaryAnHelp = new QPushButton(layoutWidget);
+ PBBoundaryAnHelp->setObjectName(QString::fromUtf8("PBBoundaryAnHelp"));
+ PBBoundaryAnHelp->setAutoDefault(false);
+
+ vboxLayout->addWidget(PBBoundaryAnHelp);
+
+ TWBoundary = new QTableWidget(GBBoundaryA);
+ TWBoundary->setObjectName(QString::fromUtf8("TWBoundary"));
+ TWBoundary->setGeometry(QRect(4, 20, 371, 270));
+ TWBoundary->setEditTriggers(QAbstractItemView::AnyKeyPressed|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed|QAbstractItemView::NoEditTriggers|QAbstractItemView::SelectedClicked);
+ TWBoundary->setShowGrid(true);
+ TWBoundary->setRowCount(0);
+ TWBoundary->setColumnCount(1);
+
+ gridLayout->addWidget(GBBoundaryA, 12, 0, 1, 2);
+
+ hboxLayout = new QHBoxLayout();
+ hboxLayout->setSpacing(6);
+ hboxLayout->setMargin(0);
+ hboxLayout->setObjectName(QString::fromUtf8("hboxLayout"));
Name = new QLabel(CreateCase);
Name->setObjectName(QString::fromUtf8("Name"));
- horizontalLayout_5->addWidget(Name);
+ hboxLayout->addWidget(Name);
LECaseName = new QLineEdit(CreateCase);
LECaseName->setObjectName(QString::fromUtf8("LECaseName"));
LECaseName->setMinimumSize(QSize(382, 21));
- horizontalLayout_5->addWidget(LECaseName);
+ hboxLayout->addWidget(LECaseName);
- gridLayout_2->addLayout(horizontalLayout_5, 0, 0, 1, 2);
+ gridLayout->addLayout(hboxLayout, 0, 0, 1, 2);
- horizontalLayout_4 = new QHBoxLayout();
- horizontalLayout_4->setObjectName(QString::fromUtf8("horizontalLayout_4"));
+ hboxLayout1 = new QHBoxLayout();
+ hboxLayout1->setSpacing(6);
+ hboxLayout1->setMargin(0);
+ hboxLayout1->setObjectName(QString::fromUtf8("hboxLayout1"));
Directory = new QLabel(CreateCase);
Directory->setObjectName(QString::fromUtf8("Directory"));
- horizontalLayout_4->addWidget(Directory);
+ hboxLayout1->addWidget(Directory);
PushDir = new QPushButton(CreateCase);
PushDir->setObjectName(QString::fromUtf8("PushDir"));
PushDir->setAutoDefault(false);
- horizontalLayout_4->addWidget(PushDir);
+ hboxLayout1->addWidget(PushDir);
LEDirName = new QLineEdit(CreateCase);
LEDirName->setObjectName(QString::fromUtf8("LEDirName"));
LEDirName->setMinimumSize(QSize(382, 21));
- horizontalLayout_4->addWidget(LEDirName);
+ hboxLayout1->addWidget(LEDirName);
- gridLayout_2->addLayout(horizontalLayout_4, 1, 0, 1, 1);
+ gridLayout->addLayout(hboxLayout1, 1, 0, 1, 1);
- horizontalLayout_3 = new QHBoxLayout();
- horizontalLayout_3->setObjectName(QString::fromUtf8("horizontalLayout_3"));
+ hboxLayout2 = new QHBoxLayout();
+ hboxLayout2->setSpacing(6);
+ hboxLayout2->setMargin(0);
+ hboxLayout2->setObjectName(QString::fromUtf8("hboxLayout2"));
Mesh_2 = new QLabel(CreateCase);
Mesh_2->setObjectName(QString::fromUtf8("Mesh_2"));
- horizontalLayout_3->addWidget(Mesh_2);
+ hboxLayout2->addWidget(Mesh_2);
PushFichier = new QPushButton(CreateCase);
PushFichier->setObjectName(QString::fromUtf8("PushFichier"));
PushFichier->setAutoDefault(false);
- horizontalLayout_3->addWidget(PushFichier);
+ hboxLayout2->addWidget(PushFichier);
LEFileName = new QLineEdit(CreateCase);
LEFileName->setObjectName(QString::fromUtf8("LEFileName"));
LEFileName->setMinimumSize(QSize(382, 21));
- horizontalLayout_3->addWidget(LEFileName);
+ hboxLayout2->addWidget(LEFileName);
- gridLayout_2->addLayout(horizontalLayout_3, 3, 0, 1, 2);
+ gridLayout->addLayout(hboxLayout2, 3, 0, 1, 2);
- verticalSpacer_2 = new QSpacerItem(20, 0, QSizePolicy::Minimum, QSizePolicy::Expanding);
+ spacerItem = new QSpacerItem(20, 0, QSizePolicy::Minimum, QSizePolicy::Expanding);
- gridLayout_2->addItem(verticalSpacer_2, 4, 0, 1, 1);
+ gridLayout->addItem(spacerItem, 4, 0, 1, 1);
GBTypeConf = new QGroupBox(CreateCase);
GBTypeConf->setObjectName(QString::fromUtf8("GBTypeConf"));
- horizontalLayout = new QHBoxLayout(GBTypeConf);
- horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
+ hboxLayout3 = new QHBoxLayout(GBTypeConf);
+ hboxLayout3->setSpacing(6);
+ hboxLayout3->setMargin(9);
+ hboxLayout3->setObjectName(QString::fromUtf8("hboxLayout3"));
RBConforme = new QRadioButton(GBTypeConf);
RBConforme->setObjectName(QString::fromUtf8("RBConforme"));
RBConforme->setChecked(true);
- horizontalLayout->addWidget(RBConforme);
+ hboxLayout3->addWidget(RBConforme);
RBNonConforme = new QRadioButton(GBTypeConf);
RBNonConforme->setObjectName(QString::fromUtf8("RBNonConforme"));
- horizontalLayout->addWidget(RBNonConforme);
+ hboxLayout3->addWidget(RBNonConforme);
- RBNonConforme->raise();
- RBConforme->raise();
- gridLayout_2->addWidget(GBTypeConf, 5, 0, 1, 2);
+ gridLayout->addWidget(GBTypeConf, 5, 0, 1, 2);
- verticalSpacer_3 = new QSpacerItem(20, 1, QSizePolicy::Minimum, QSizePolicy::Expanding);
+ spacerItem1 = new QSpacerItem(20, 1, QSizePolicy::Minimum, QSizePolicy::Expanding);
- gridLayout_2->addItem(verticalSpacer_3, 6, 0, 1, 1);
+ gridLayout->addItem(spacerItem1, 6, 0, 1, 1);
GBTypeNoConf = new QGroupBox(CreateCase);
GBTypeNoConf->setObjectName(QString::fromUtf8("GBTypeNoConf"));
- horizontalLayout_2 = new QHBoxLayout(GBTypeNoConf);
- horizontalLayout_2->setObjectName(QString::fromUtf8("horizontalLayout_2"));
+ hboxLayout4 = new QHBoxLayout(GBTypeNoConf);
+ hboxLayout4->setSpacing(6);
+ hboxLayout4->setMargin(9);
+ hboxLayout4->setObjectName(QString::fromUtf8("hboxLayout4"));
RB1NpM = new QRadioButton(GBTypeNoConf);
RB1NpM->setObjectName(QString::fromUtf8("RB1NpM"));
- horizontalLayout_2->addWidget(RB1NpM);
+ hboxLayout4->addWidget(RB1NpM);
RB1NpA = new QRadioButton(GBTypeNoConf);
RB1NpA->setObjectName(QString::fromUtf8("RB1NpA"));
- horizontalLayout_2->addWidget(RB1NpA);
+ hboxLayout4->addWidget(RB1NpA);
RBQuelconque = new QRadioButton(GBTypeNoConf);
RBQuelconque->setObjectName(QString::fromUtf8("RBQuelconque"));
- horizontalLayout_2->addWidget(RBQuelconque);
+ hboxLayout4->addWidget(RBQuelconque);
- gridLayout_2->addWidget(GBTypeNoConf, 7, 0, 1, 2);
+ gridLayout->addWidget(GBTypeNoConf, 7, 0, 1, 2);
- verticalSpacer_4 = new QSpacerItem(20, 0, QSizePolicy::Minimum, QSizePolicy::Expanding);
+ spacerItem2 = new QSpacerItem(20, 0, QSizePolicy::Minimum, QSizePolicy::Expanding);
- gridLayout_2->addItem(verticalSpacer_4, 8, 0, 1, 1);
+ gridLayout->addItem(spacerItem2, 8, 0, 1, 1);
- horizontalLayout_6 = new QHBoxLayout();
- horizontalLayout_6->setObjectName(QString::fromUtf8("horizontalLayout_6"));
+ hboxLayout5 = new QHBoxLayout();
+ hboxLayout5->setSpacing(6);
+ hboxLayout5->setMargin(0);
+ hboxLayout5->setObjectName(QString::fromUtf8("hboxLayout5"));
CBBoundaryD = new QCheckBox(CreateCase);
CBBoundaryD->setObjectName(QString::fromUtf8("CBBoundaryD"));
- horizontalLayout_6->addWidget(CBBoundaryD);
+ hboxLayout5->addWidget(CBBoundaryD);
CBBoundaryA = new QCheckBox(CreateCase);
CBBoundaryA->setObjectName(QString::fromUtf8("CBBoundaryA"));
- horizontalLayout_6->addWidget(CBBoundaryA);
-
-
- gridLayout_2->addLayout(horizontalLayout_6, 9, 0, 1, 1);
-
- verticalSpacer_7 = new QSpacerItem(20, 2, QSizePolicy::Minimum, QSizePolicy::Expanding);
+ hboxLayout5->addWidget(CBBoundaryA);
- gridLayout_2->addItem(verticalSpacer_7, 10, 0, 1, 1);
- GBBoundaryD = new QGroupBox(CreateCase);
- GBBoundaryD->setObjectName(QString::fromUtf8("GBBoundaryD"));
- sizePolicy.setHeightForWidth(GBBoundaryD->sizePolicy().hasHeightForWidth());
- GBBoundaryD->setSizePolicy(sizePolicy);
- gridLayout_3 = new QGridLayout(GBBoundaryD);
- gridLayout_3->setObjectName(QString::fromUtf8("gridLayout_3"));
- CBBoundaryDi = new QComboBox(GBBoundaryD);
- CBBoundaryDi->setObjectName(QString::fromUtf8("CBBoundaryDi"));
- CBBoundaryDi->setSizeAdjustPolicy(QComboBox::AdjustToContents);
+ gridLayout->addLayout(hboxLayout5, 9, 0, 1, 1);
- gridLayout_3->addWidget(CBBoundaryDi, 0, 0, 1, 1);
+ spacerItem3 = new QSpacerItem(20, 2, QSizePolicy::Minimum, QSizePolicy::Expanding);
- spacer_2 = new QSpacerItem(40, 13, QSizePolicy::Fixed, QSizePolicy::Minimum);
+ gridLayout->addItem(spacerItem3, 10, 0, 1, 1);
- gridLayout_3->addItem(spacer_2, 0, 1, 1, 1);
+ spacerItem4 = new QSpacerItem(20, 18, QSizePolicy::Minimum, QSizePolicy::Expanding);
- PBBoundaryDiEdit = new QPushButton(GBBoundaryD);
- PBBoundaryDiEdit->setObjectName(QString::fromUtf8("PBBoundaryDiEdit"));
- PBBoundaryDiEdit->setAutoDefault(false);
+ gridLayout->addItem(spacerItem4, 2, 1, 1, 1);
- gridLayout_3->addWidget(PBBoundaryDiEdit, 0, 2, 1, 1);
+ GBBoundaryD = new QGroupBox(CreateCase);
+ GBBoundaryD->setObjectName(QString::fromUtf8("GBBoundaryD"));
+ QSizePolicy sizePolicy1(static_cast<QSizePolicy::Policy>(0), static_cast<QSizePolicy::Policy>(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"));
+ PBBoundaryDiHelp = new QPushButton(GBBoundaryD);
+ PBBoundaryDiHelp->setObjectName(QString::fromUtf8("PBBoundaryDiHelp"));
+ PBBoundaryDiHelp->setAutoDefault(false);
+
+ gridLayout2->addWidget(PBBoundaryDiHelp, 0, 4, 1, 1);
PBBoundaryDiNew = new QPushButton(GBBoundaryD);
PBBoundaryDiNew->setObjectName(QString::fromUtf8("PBBoundaryDiNew"));
PBBoundaryDiNew->setAutoDefault(false);
- gridLayout_3->addWidget(PBBoundaryDiNew, 0, 3, 1, 1);
-
-
- gridLayout_2->addWidget(GBBoundaryD, 11, 0, 1, 1);
-
- GBBoundaryA = new QGroupBox(CreateCase);
- GBBoundaryA->setObjectName(QString::fromUtf8("GBBoundaryA"));
- GBBoundaryA->setMinimumSize(QSize(548, 150));
- TWBoundary = new QTableWidget(GBBoundaryA);
- if (TWBoundary->columnCount() < 2)
- TWBoundary->setColumnCount(2);
- QTableWidgetItem *__colItem = new QTableWidgetItem();
- TWBoundary->setHorizontalHeaderItem(0, __colItem);
- QTableWidgetItem *__colItem1 = new QTableWidgetItem();
- TWBoundary->setHorizontalHeaderItem(1, __colItem1);
- TWBoundary->setObjectName(QString::fromUtf8("TWBoundary"));
- TWBoundary->setGeometry(QRect(4, 20, 371, 121));
- TWBoundary->setAutoScrollMargin(16);
- TWBoundary->setEditTriggers(QAbstractItemView::AnyKeyPressed|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed|QAbstractItemView::SelectedClicked);
- TWBoundary->setShowGrid(true);
- TWBoundary->setRowCount(0);
- TWBoundary->setColumnCount(2);
- layoutWidget = new QWidget(GBBoundaryA);
- layoutWidget->setObjectName(QString::fromUtf8("layoutWidget"));
- layoutWidget->setGeometry(QRect(410, 20, 120, 110));
- verticalLayout_4 = new QVBoxLayout(layoutWidget);
- verticalLayout_4->setObjectName(QString::fromUtf8("verticalLayout_4"));
- verticalLayout_4->setContentsMargins(0, 0, 0, 0);
- PBBoundaryNew = new QPushButton(layoutWidget);
- PBBoundaryNew->setObjectName(QString::fromUtf8("PBBoundaryNew"));
- PBBoundaryNew->setAutoDefault(false);
-
- verticalLayout_4->addWidget(PBBoundaryNew);
-
- PBBoundaryEdit = new QPushButton(layoutWidget);
- PBBoundaryEdit->setObjectName(QString::fromUtf8("PBBoundaryEdit"));
- PBBoundaryEdit->setAutoDefault(false);
-
- verticalLayout_4->addWidget(PBBoundaryEdit);
-
- PBBoundaryDelete = new QPushButton(layoutWidget);
- PBBoundaryDelete->setObjectName(QString::fromUtf8("PBBoundaryDelete"));
- PBBoundaryDelete->setAutoDefault(false);
-
- verticalLayout_4->addWidget(PBBoundaryDelete);
-
-
- gridLayout_2->addWidget(GBBoundaryA, 12, 0, 1, 2);
-
- GroupButtons = new QGroupBox(CreateCase);
- GroupButtons->setObjectName(QString::fromUtf8("GroupButtons"));
- gridLayout = new QGridLayout(GroupButtons);
- gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
- buttonOk = new QPushButton(GroupButtons);
- buttonOk->setObjectName(QString::fromUtf8("buttonOk"));
- buttonOk->setAutoDefault(false);
-
- gridLayout->addWidget(buttonOk, 0, 0, 1, 1);
+ gridLayout2->addWidget(PBBoundaryDiNew, 0, 3, 1, 1);
- buttonApply = new QPushButton(GroupButtons);
- buttonApply->setObjectName(QString::fromUtf8("buttonApply"));
- buttonApply->setAutoDefault(false);
+ PBBoundaryDiEdit = new QPushButton(GBBoundaryD);
+ PBBoundaryDiEdit->setObjectName(QString::fromUtf8("PBBoundaryDiEdit"));
+ PBBoundaryDiEdit->setAutoDefault(false);
- gridLayout->addWidget(buttonApply, 0, 1, 1, 1);
+ gridLayout2->addWidget(PBBoundaryDiEdit, 0, 2, 1, 1);
- buttonCancel = new QPushButton(GroupButtons);
- buttonCancel->setObjectName(QString::fromUtf8("buttonCancel"));
- buttonCancel->setAutoDefault(false);
+ spacerItem5 = new QSpacerItem(40, 13, QSizePolicy::Fixed, QSizePolicy::Minimum);
- gridLayout->addWidget(buttonCancel, 0, 2, 1, 1);
+ gridLayout2->addItem(spacerItem5, 0, 1, 1, 1);
- buttonHelp = new QPushButton(GroupButtons);
- buttonHelp->setObjectName(QString::fromUtf8("buttonHelp"));
- buttonHelp->setAutoDefault(false);
+ CBBoundaryDi = new QComboBox(GBBoundaryD);
+ CBBoundaryDi->setObjectName(QString::fromUtf8("CBBoundaryDi"));
+ CBBoundaryDi->setSizeAdjustPolicy(QComboBox::AdjustToContents);
- gridLayout->addWidget(buttonHelp, 0, 3, 1, 1);
+ gridLayout2->addWidget(CBBoundaryDi, 0, 0, 1, 1);
- gridLayout_2->addWidget(GroupButtons, 13, 0, 1, 2);
+ gridLayout->addWidget(GBBoundaryD, 11, 0, 1, 1);
- verticalSpacer_5 = new QSpacerItem(20, 18, QSizePolicy::Minimum, QSizePolicy::Expanding);
- gridLayout_2->addItem(verticalSpacer_5, 2, 1, 1, 1);
+ retranslateUi(CreateCase);
+ QSize size(597, 850);
+ size = size.expandedTo(CreateCase->minimumSizeHint());
+ CreateCase->resize(size);
- retranslateUi(CreateCase);
CBBoundaryDi->setCurrentIndex(-1);
void retranslateUi(QDialog *CreateCase)
{
CreateCase->setWindowTitle(QApplication::translate("CreateCase", "Create Case", 0, QApplication::UnicodeUTF8));
+ GroupButtons->setTitle(QString());
+ buttonOk->setText(QApplication::translate("CreateCase", "&Ok", 0, QApplication::UnicodeUTF8));
+ buttonApply->setText(QApplication::translate("CreateCase", "&Apply", 0, QApplication::UnicodeUTF8));
+ buttonCancel->setText(QApplication::translate("CreateCase", "&Cancel", 0, QApplication::UnicodeUTF8));
+ buttonHelp->setText(QApplication::translate("CreateCase", "&Help", 0, QApplication::UnicodeUTF8));
+ GBBoundaryA->setTitle(QApplication::translate("CreateCase", "Analytic Boundary", 0, QApplication::UnicodeUTF8));
+ PBBoundaryAnNew->setText(QApplication::translate("CreateCase", "New", 0, QApplication::UnicodeUTF8));
+ PBBoundaryAnHelp->setText(QApplication::translate("CreateCase", "Help", 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);
Name->setText(QApplication::translate("CreateCase", "Name", 0, QApplication::UnicodeUTF8));
Directory->setText(QApplication::translate("CreateCase", "Directory", 0, QApplication::UnicodeUTF8));
PushDir->setText(QString());
CBBoundaryD->setText(QApplication::translate("CreateCase", "Discrete Boundary ", 0, QApplication::UnicodeUTF8));
CBBoundaryA->setText(QApplication::translate("CreateCase", "Analytic Boundary ", 0, QApplication::UnicodeUTF8));
GBBoundaryD->setTitle(QApplication::translate("CreateCase", "Discrete Boundary", 0, QApplication::UnicodeUTF8));
- PBBoundaryDiEdit->setText(QApplication::translate("CreateCase", "Edit", 0, QApplication::UnicodeUTF8));
+ PBBoundaryDiHelp->setText(QApplication::translate("CreateCase", "Help", 0, QApplication::UnicodeUTF8));
PBBoundaryDiNew->setText(QApplication::translate("CreateCase", "New", 0, QApplication::UnicodeUTF8));
- GBBoundaryA->setTitle(QApplication::translate("CreateCase", "Analytic Boundary", 0, QApplication::UnicodeUTF8));
- TWBoundary->horizontalHeaderItem(0)->setText(QApplication::translate("CreateCase", "Group", 0, QApplication::UnicodeUTF8));
- TWBoundary->horizontalHeaderItem(1)->setText(QApplication::translate("CreateCase", "Boundary", 0, QApplication::UnicodeUTF8));
- PBBoundaryNew->setText(QApplication::translate("CreateCase", "New", 0, QApplication::UnicodeUTF8));
- PBBoundaryEdit->setText(QApplication::translate("CreateCase", "Edit", 0, QApplication::UnicodeUTF8));
- PBBoundaryDelete->setText(QString());
- GroupButtons->setTitle(QString());
- buttonOk->setText(QApplication::translate("CreateCase", "&Ok", 0, QApplication::UnicodeUTF8));
- buttonApply->setText(QApplication::translate("CreateCase", "&Apply", 0, QApplication::UnicodeUTF8));
- buttonCancel->setText(QApplication::translate("CreateCase", "&Cancel", 0, QApplication::UnicodeUTF8));
- buttonHelp->setText(QApplication::translate("CreateCase", "&Help", 0, QApplication::UnicodeUTF8));
+ PBBoundaryDiEdit->setText(QApplication::translate("CreateCase", "Edit", 0, QApplication::UnicodeUTF8));
Q_UNUSED(CreateCase);
} // retranslateUi
class CreateCase: public Ui_CreateCase {};
} // namespace Ui
-QT_END_NAMESPACE
-
#endif // CREATECASE_H
<rect>
<x>0</x>
<y>0</y>
- <width>589</width>
- <height>675</height>
+ <width>597</width>
+ <height>850</height>
</rect>
</property>
<property name="sizePolicy" >
- <sizepolicy vsizetype="MinimumExpanding" hsizetype="MinimumExpanding" >
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<string>Create Case</string>
</property>
<property name="autoFillBackground" >
- <bool>false</bool>
+ <bool>true</bool>
</property>
- <layout class="QGridLayout" name="gridLayout_2" >
+ <layout class="QGridLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item row="13" column="0" colspan="2" >
+ <widget class="QGroupBox" name="GroupButtons" >
+ <property name="title" >
+ <string/>
+ </property>
+ <layout class="QGridLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item row="0" column="0" >
+ <widget class="QPushButton" name="buttonOk" >
+ <property name="text" >
+ <string>&Ok</string>
+ </property>
+ <property name="autoDefault" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1" >
+ <widget class="QPushButton" name="buttonApply" >
+ <property name="text" >
+ <string>&Apply</string>
+ </property>
+ <property name="autoDefault" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2" >
+ <widget class="QPushButton" name="buttonCancel" >
+ <property name="text" >
+ <string>&Cancel</string>
+ </property>
+ <property name="autoDefault" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="3" >
+ <widget class="QPushButton" name="buttonHelp" >
+ <property name="text" >
+ <string>&Help</string>
+ </property>
+ <property name="autoDefault" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="12" column="0" colspan="2" >
+ <widget class="QGroupBox" name="GBBoundaryA" >
+ <property name="minimumSize" >
+ <size>
+ <width>548</width>
+ <height>300</height>
+ </size>
+ </property>
+ <property name="title" >
+ <string>Analytic Boundary</string>
+ </property>
+ <widget class="QWidget" name="layoutWidget" >
+ <property name="geometry" >
+ <rect>
+ <x>410</x>
+ <y>20</y>
+ <width>120</width>
+ <height>110</height>
+ </rect>
+ </property>
+ <layout class="QVBoxLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QPushButton" name="PBBoundaryAnNew" >
+ <property name="text" >
+ <string>New</string>
+ </property>
+ <property name="autoDefault" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="PBBoundaryAnHelp" >
+ <property name="text" >
+ <string>Help</string>
+ </property>
+ <property name="autoDefault" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QTableWidget" name="TWBoundary" >
+ <property name="geometry" >
+ <rect>
+ <x>4</x>
+ <y>20</y>
+ <width>371</width>
+ <height>270</height>
+ </rect>
+ </property>
+ <property name="editTriggers" >
+ <set>QAbstractItemView::AnyKeyPressed|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed|QAbstractItemView::NoEditTriggers|QAbstractItemView::SelectedClicked</set>
+ </property>
+ <property name="showGrid" >
+ <bool>true</bool>
+ </property>
+ <property name="rowCount" >
+ <number>0</number>
+ </property>
+ <property name="columnCount" >
+ <number>1</number>
+ </property>
+ <column>
+ <property name="text" >
+ <string>a_virer</string>
+ </property>
+ </column>
+ </widget>
+ </widget>
+ </item>
<item row="0" column="0" colspan="2" >
- <layout class="QHBoxLayout" name="horizontalLayout_5" >
+ <layout class="QHBoxLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
<item>
<widget class="QLabel" name="Name" >
<property name="text" >
</layout>
</item>
<item row="1" column="0" >
- <layout class="QHBoxLayout" name="horizontalLayout_4" >
+ <layout class="QHBoxLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
<item>
<widget class="QLabel" name="Directory" >
<property name="text" >
</layout>
</item>
<item row="3" column="0" colspan="2" >
- <layout class="QHBoxLayout" name="horizontalLayout_3" >
+ <layout class="QHBoxLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
<item>
<widget class="QLabel" name="Mesh_2" >
<property name="text" >
</layout>
</item>
<item row="4" column="0" >
- <spacer name="verticalSpacer_2" >
+ <spacer>
<property name="orientation" >
<enum>Qt::Vertical</enum>
</property>
- <property name="sizeHint" stdset="0" >
+ <property name="sizeHint" >
<size>
<width>20</width>
<height>0</height>
<property name="title" >
<string>Conformity Type</string>
</property>
- <layout class="QHBoxLayout" name="horizontalLayout" >
+ <layout class="QHBoxLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
<item>
<widget class="QRadioButton" name="RBConforme" >
<property name="text" >
</widget>
</item>
</layout>
- <zorder>RBNonConforme</zorder>
- <zorder>RBConforme</zorder>
</widget>
</item>
<item row="6" column="0" >
- <spacer name="verticalSpacer_3" >
+ <spacer>
<property name="orientation" >
<enum>Qt::Vertical</enum>
</property>
- <property name="sizeHint" stdset="0" >
+ <property name="sizeHint" >
<size>
<width>20</width>
<height>1</height>
<property name="title" >
<string>Non Conformal option</string>
</property>
- <layout class="QHBoxLayout" name="horizontalLayout_2" >
+ <layout class="QHBoxLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
<item>
<widget class="QRadioButton" name="RB1NpM" >
<property name="text" >
</widget>
</item>
<item row="8" column="0" >
- <spacer name="verticalSpacer_4" >
+ <spacer>
<property name="orientation" >
<enum>Qt::Vertical</enum>
</property>
- <property name="sizeHint" stdset="0" >
+ <property name="sizeHint" >
<size>
<width>20</width>
<height>0</height>
</spacer>
</item>
<item row="9" column="0" >
- <layout class="QHBoxLayout" name="horizontalLayout_6" >
+ <layout class="QHBoxLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
<item>
<widget class="QCheckBox" name="CBBoundaryD" >
<property name="text" >
</layout>
</item>
<item row="10" column="0" >
- <spacer name="verticalSpacer_7" >
+ <spacer>
<property name="orientation" >
<enum>Qt::Vertical</enum>
</property>
- <property name="sizeHint" stdset="0" >
+ <property name="sizeHint" >
<size>
<width>20</width>
<height>2</height>
</property>
</spacer>
</item>
+ <item row="2" column="1" >
+ <spacer>
+ <property name="orientation" >
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" >
+ <size>
+ <width>20</width>
+ <height>18</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
<item row="11" column="0" >
<widget class="QGroupBox" name="GBBoundaryD" >
<property name="sizePolicy" >
- <sizepolicy vsizetype="MinimumExpanding" hsizetype="MinimumExpanding" >
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<property name="title" >
<string>Discrete Boundary</string>
</property>
- <layout class="QGridLayout" name="gridLayout_3" >
- <item row="0" column="0" >
- <widget class="QComboBox" name="CBBoundaryDi" >
- <property name="currentIndex" >
- <number>-1</number>
- </property>
- <property name="sizeAdjustPolicy" >
- <enum>QComboBox::AdjustToContents</enum>
- </property>
- </widget>
- </item>
- <item row="0" column="1" >
- <spacer name="spacer_2" >
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeType" >
- <enum>QSizePolicy::Fixed</enum>
- </property>
- <property name="sizeHint" stdset="0" >
- <size>
- <width>40</width>
- <height>13</height>
- </size>
- </property>
- </spacer>
- </item>
- <item row="0" column="2" >
- <widget class="QPushButton" name="PBBoundaryDiEdit" >
+ <layout class="QGridLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item row="0" column="4" >
+ <widget class="QPushButton" name="PBBoundaryDiHelp" >
<property name="text" >
- <string>Edit</string>
+ <string>Help</string>
</property>
<property name="autoDefault" >
<bool>false</bool>
</property>
</widget>
</item>
- </layout>
- </widget>
- </item>
- <item row="12" column="0" colspan="2" >
- <widget class="QGroupBox" name="GBBoundaryA" >
- <property name="minimumSize" >
- <size>
- <width>548</width>
- <height>150</height>
- </size>
- </property>
- <property name="title" >
- <string>Analytic Boundary</string>
- </property>
- <widget class="QTableWidget" name="TWBoundary" >
- <property name="geometry" >
- <rect>
- <x>4</x>
- <y>20</y>
- <width>371</width>
- <height>121</height>
- </rect>
- </property>
- <property name="autoScrollMargin" >
- <number>16</number>
- </property>
- <property name="editTriggers" >
- <set>QAbstractItemView::AnyKeyPressed|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed|QAbstractItemView::SelectedClicked</set>
- </property>
- <property name="showGrid" >
- <bool>true</bool>
- </property>
- <property name="rowCount" >
- <number>0</number>
- </property>
- <property name="columnCount" >
- <number>2</number>
- </property>
- <column>
- <property name="text" >
- <string>Group</string>
- </property>
- </column>
- <column>
- <property name="text" >
- <string>Boundary</string>
- </property>
- </column>
- </widget>
- <widget class="QWidget" name="layoutWidget" >
- <property name="geometry" >
- <rect>
- <x>410</x>
- <y>20</y>
- <width>120</width>
- <height>110</height>
- </rect>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout_4" >
- <item>
- <widget class="QPushButton" name="PBBoundaryNew" >
- <property name="text" >
- <string>New</string>
- </property>
- <property name="autoDefault" >
- <bool>false</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="PBBoundaryEdit" >
- <property name="text" >
- <string>Edit</string>
- </property>
- <property name="autoDefault" >
- <bool>false</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="PBBoundaryDelete" >
- <property name="text" >
- <string/>
- </property>
- <property name="autoDefault" >
- <bool>false</bool>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </widget>
- </item>
- <item row="13" column="0" colspan="2" >
- <widget class="QGroupBox" name="GroupButtons" >
- <property name="title" >
- <string/>
- </property>
- <layout class="QGridLayout" name="gridLayout" >
- <item row="0" column="0" >
- <widget class="QPushButton" name="buttonOk" >
+ <item row="0" column="2" >
+ <widget class="QPushButton" name="PBBoundaryDiEdit" >
<property name="text" >
- <string>&Ok</string>
+ <string>Edit</string>
</property>
<property name="autoDefault" >
<bool>false</bool>
</widget>
</item>
<item row="0" column="1" >
- <widget class="QPushButton" name="buttonApply" >
- <property name="text" >
- <string>&Apply</string>
- </property>
- <property name="autoDefault" >
- <bool>false</bool>
+ <spacer>
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
</property>
- </widget>
- </item>
- <item row="0" column="2" >
- <widget class="QPushButton" name="buttonCancel" >
- <property name="text" >
- <string>&Cancel</string>
+ <property name="sizeType" >
+ <enum>QSizePolicy::Fixed</enum>
</property>
- <property name="autoDefault" >
- <bool>false</bool>
+ <property name="sizeHint" >
+ <size>
+ <width>40</width>
+ <height>13</height>
+ </size>
</property>
- </widget>
+ </spacer>
</item>
- <item row="0" column="3" >
- <widget class="QPushButton" name="buttonHelp" >
- <property name="text" >
- <string>&Help</string>
+ <item row="0" column="0" >
+ <widget class="QComboBox" name="CBBoundaryDi" >
+ <property name="currentIndex" >
+ <number>-1</number>
</property>
- <property name="autoDefault" >
- <bool>false</bool>
+ <property name="sizeAdjustPolicy" >
+ <enum>QComboBox::AdjustToContents</enum>
</property>
</widget>
</item>
</layout>
</widget>
</item>
- <item row="2" column="1" >
- <spacer name="verticalSpacer_5" >
- <property name="orientation" >
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0" >
- <size>
- <width>20</width>
- <height>18</height>
- </size>
- </property>
- </spacer>
- </item>
</layout>
</widget>
<resources/>
GBAreaManagement->setSizePolicy(sizePolicy);
gridLayout_3 = new QGridLayout(GBAreaManagement);
gridLayout_3->setObjectName(QString::fromUtf8("gridLayout_3"));
+
+
+
TWZone = new QTableWidget(GBAreaManagement);
if (TWZone->columnCount() < 2)
TWZone->setColumnCount(2);
/********************************************************************************
** Form generated from reading ui file 'EditFile.ui'
**
-** Created: Mon Sep 27 14:45:55 2010
-** by: Qt User Interface Compiler version 4.5.2
+** Created: Tue Feb 1 14:56:22 2011
+** by: Qt User Interface Compiler version 4.2.1
**
** WARNING! All changes made in this file will be lost when recompiling ui file!
********************************************************************************/
#include <QtGui/QButtonGroup>
#include <QtGui/QGridLayout>
#include <QtGui/QGroupBox>
-#include <QtGui/QHeaderView>
#include <QtGui/QPushButton>
#include <QtGui/QSpacerItem>
#include <QtGui/QTextBrowser>
#include <QtGui/QWidget>
-QT_BEGIN_NAMESPACE
-
class Ui_EditFile
{
public:
- QGridLayout *gridLayout_2;
- QTextBrowser *QTBEditFile;
- QSpacerItem *verticalSpacer;
- QGroupBox *GroupButtons;
QGridLayout *gridLayout;
- QPushButton *buttonQuit;
+ QSpacerItem *spacerItem;
+ QGroupBox *GroupButtons;
+ QGridLayout *gridLayout1;
QPushButton *buttonPrint;
- QPushButton *buttonHelp;
- QSpacerItem *horizontalSpacer;
+ QPushButton *buttonQuit;
+ QSpacerItem *spacerItem1;
+ QTextBrowser *QTBEditFile;
void setupUi(QWidget *EditFile)
{
- if (EditFile->objectName().isEmpty())
- EditFile->setObjectName(QString::fromUtf8("EditFile"));
- EditFile->resize(548, 901);
- gridLayout_2 = new QGridLayout(EditFile);
- gridLayout_2->setObjectName(QString::fromUtf8("gridLayout_2"));
- QTBEditFile = new QTextBrowser(EditFile);
- QTBEditFile->setObjectName(QString::fromUtf8("QTBEditFile"));
- QTBEditFile->setMinimumSize(QSize(530, 800));
- QFont font;
- font.setFamily(QString::fromUtf8("Courier New"));
- QTBEditFile->setFont(font);
+ EditFile->setObjectName(QString::fromUtf8("EditFile"));
+ gridLayout = new QGridLayout(EditFile);
+ gridLayout->setSpacing(6);
+ gridLayout->setMargin(9);
+ gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
+ spacerItem = new QSpacerItem(331, 49, QSizePolicy::Expanding, QSizePolicy::Minimum);
- gridLayout_2->addWidget(QTBEditFile, 0, 0, 1, 2);
+ gridLayout->addItem(spacerItem, 2, 1, 1, 1);
- verticalSpacer = new QSpacerItem(20, 14, QSizePolicy::Minimum, QSizePolicy::Expanding);
+ GroupButtons = new QGroupBox(EditFile);
+ GroupButtons->setObjectName(QString::fromUtf8("GroupButtons"));
+ gridLayout1 = new QGridLayout(GroupButtons);
+ gridLayout1->setSpacing(6);
+ gridLayout1->setMargin(9);
+ gridLayout1->setObjectName(QString::fromUtf8("gridLayout1"));
+ buttonPrint = new QPushButton(GroupButtons);
+ buttonPrint->setObjectName(QString::fromUtf8("buttonPrint"));
- gridLayout_2->addItem(verticalSpacer, 1, 0, 1, 1);
+ gridLayout1->addWidget(buttonPrint, 0, 1, 1, 1);
- GroupButtons = new QGroupBox(EditFile);
- GroupButtons->setObjectName(QString::fromUtf8("GroupButtons"));
- gridLayout = new QGridLayout(GroupButtons);
- gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
- buttonQuit = new QPushButton(GroupButtons);
- buttonQuit->setObjectName(QString::fromUtf8("buttonQuit"));
- buttonQuit->setAutoDefault(true);
- buttonQuit->setDefault(true);
- buttonQuit->setFlat(true);
+ buttonQuit = new QPushButton(GroupButtons);
+ buttonQuit->setObjectName(QString::fromUtf8("buttonQuit"));
+ buttonQuit->setAutoDefault(true);
+ buttonQuit->setDefault(true);
+ buttonQuit->setFlat(true);
- gridLayout->addWidget(buttonQuit, 0, 0, 1, 1);
+ gridLayout1->addWidget(buttonQuit, 0, 0, 1, 1);
- buttonPrint = new QPushButton(GroupButtons);
- buttonPrint->setObjectName(QString::fromUtf8("buttonPrint"));
- gridLayout->addWidget(buttonPrint, 0, 1, 1, 1);
+ gridLayout->addWidget(GroupButtons, 2, 0, 1, 1);
- buttonHelp = new QPushButton(GroupButtons);
- buttonHelp->setObjectName(QString::fromUtf8("buttonHelp"));
+ spacerItem1 = new QSpacerItem(20, 14, QSizePolicy::Minimum, QSizePolicy::Expanding);
- gridLayout->addWidget(buttonHelp, 0, 2, 1, 1);
+ gridLayout->addItem(spacerItem1, 1, 0, 1, 2);
+ QTBEditFile = new QTextBrowser(EditFile);
+ QTBEditFile->setObjectName(QString::fromUtf8("QTBEditFile"));
+ QTBEditFile->setMinimumSize(QSize(530, 800));
+ QFont font;
+ font.setFamily(QString::fromUtf8("Courier New"));
+ QTBEditFile->setFont(font);
- gridLayout_2->addWidget(GroupButtons, 2, 0, 1, 1);
+ gridLayout->addWidget(QTBEditFile, 0, 0, 1, 2);
- horizontalSpacer = new QSpacerItem(249, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
- gridLayout_2->addItem(horizontalSpacer, 2, 1, 1, 1);
+ retranslateUi(EditFile);
+ QSize size(548, 901);
+ size = size.expandedTo(EditFile->minimumSizeHint());
+ EditFile->resize(size);
- retranslateUi(EditFile);
- QMetaObject::connectSlotsByName(EditFile);
+ QMetaObject::connectSlotsByName(EditFile);
} // setupUi
void retranslateUi(QWidget *EditFile)
{
- EditFile->setWindowTitle(QApplication::translate("EditFile", "Edit File", 0, QApplication::UnicodeUTF8));
- GroupButtons->setTitle(QString());
- buttonQuit->setText(QApplication::translate("EditFile", "&Quit", 0, QApplication::UnicodeUTF8));
- buttonPrint->setText(QApplication::translate("EditFile", "&Print", 0, QApplication::UnicodeUTF8));
- buttonHelp->setText(QApplication::translate("EditFile", "&Help", 0, QApplication::UnicodeUTF8));
- Q_UNUSED(EditFile);
+ EditFile->setWindowTitle(QApplication::translate("EditFile", "Edit File", 0, QApplication::UnicodeUTF8));
+ GroupButtons->setTitle(QString());
+ buttonPrint->setText(QApplication::translate("EditFile", "&Print", 0, QApplication::UnicodeUTF8));
+ buttonQuit->setText(QApplication::translate("EditFile", "&Quit", 0, QApplication::UnicodeUTF8));
+ Q_UNUSED(EditFile);
} // retranslateUi
};
class EditFile: public Ui_EditFile {};
} // namespace Ui
-QT_END_NAMESPACE
-
#endif // EDITFILE_H
<property name="windowTitle" >
<string>Edit File</string>
</property>
- <layout class="QGridLayout" name="gridLayout_2" >
- <item row="0" column="0" colspan="2" >
- <widget class="QTextBrowser" name="QTBEditFile" >
- <property name="minimumSize" >
- <size>
- <width>530</width>
- <height>800</height>
- </size>
- </property>
- <property name="font" >
- <font>
- <family>Courier New</family>
- </font>
- </property>
- </widget>
- </item>
- <item row="1" column="0" >
- <spacer name="verticalSpacer" >
+ <layout class="QGridLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item row="2" column="1" >
+ <spacer>
<property name="orientation" >
- <enum>Qt::Vertical</enum>
+ <enum>Qt::Horizontal</enum>
</property>
- <property name="sizeHint" stdset="0" >
+ <property name="sizeHint" >
<size>
- <width>20</width>
- <height>14</height>
+ <width>331</width>
+ <height>49</height>
</size>
</property>
</spacer>
<property name="title" >
<string/>
</property>
- <layout class="QGridLayout" name="gridLayout" >
+ <layout class="QGridLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item row="0" column="1" >
+ <widget class="QPushButton" name="buttonPrint" >
+ <property name="text" >
+ <string>&Print</string>
+ </property>
+ </widget>
+ </item>
<item row="0" column="0" >
<widget class="QPushButton" name="buttonQuit" >
<property name="text" >
</property>
</widget>
</item>
- <item row="0" column="1" >
- <widget class="QPushButton" name="buttonPrint" >
- <property name="text" >
- <string>&Print</string>
- </property>
- </widget>
- </item>
- <item row="0" column="2" >
- <widget class="QPushButton" name="buttonHelp" >
- <property name="text" >
- <string>&Help</string>
- </property>
- </widget>
- </item>
</layout>
</widget>
</item>
- <item row="2" column="1" >
- <spacer name="horizontalSpacer" >
+ <item row="1" column="0" colspan="2" >
+ <spacer>
<property name="orientation" >
- <enum>Qt::Horizontal</enum>
+ <enum>Qt::Vertical</enum>
</property>
- <property name="sizeHint" stdset="0" >
+ <property name="sizeHint" >
<size>
- <width>249</width>
- <height>20</height>
+ <width>20</width>
+ <height>14</height>
</size>
</property>
</spacer>
</item>
+ <item row="0" column="0" colspan="2" >
+ <widget class="QTextBrowser" name="QTBEditFile" >
+ <property name="minimumSize" >
+ <size>
+ <width>530</width>
+ <height>800</height>
+ </size>
+ </property>
+ <property name="font" >
+ <font>
+ <family>Courier New</family>
+ </font>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
<resources/>
#include "MonEditIteration.h"
#include "MonEditHypothesis.h"
#include "MonEditZone.h"
+#include "MonEditBoundaryAn.h"
#include "MonEditBoundaryDi.h"
#include "HomardQtCommun.h"
//=======================================================================
HOMARD::HOMARD_Gen_var HOMARDGUI::InitHOMARDGen(SalomeApp_Application* app)
{
- Engines::Component_var comp = app->lcc()->FindOrLoad_Component( "FactoryServer","HOMARD" );
+ Engines::EngineComponent_var comp = app->lcc()->FindOrLoad_Component( "FactoryServer","HOMARD" );
HOMARD::HOMARD_Gen_var clr = HOMARD::HOMARD_Gen::_narrow(comp);
ASSERT(!CORBA::is_nil(clr));
return clr;
{
MESSAGE("command " << theCommandID << " activated avec objet " << _ObjectName.toStdString().c_str() );
_PTR(SObject) obj = chercheMonObjet();
- if ((obj) and (HOMARD_UTILS::isBoundaryDi(obj)))
+ if ((obj))
{
- MESSAGE(".. Lancement de MonEditBoundaryDi" );
- MonEditBoundaryDi *aDlg = new MonEditBoundaryDi(0, TRUE, HOMARD::HOMARD_Gen::_duplicate(homardGen), QString(""), _ObjectName ) ;
- aDlg->show();
+ if (HOMARD_UTILS::isBoundaryDi(obj))
+ {
+ MESSAGE(".. Lancement de MonEditBoundaryDi" );
+ MonEditBoundaryDi *aDlg = new MonEditBoundaryDi(0, TRUE, HOMARD::HOMARD_Gen::_duplicate(homardGen), QString(""), _ObjectName ) ;
+ aDlg->show();
+ }
+ if (HOMARD_UTILS::isBoundaryAn(obj))
+ {
+ MESSAGE(".. Lancement de MonEditBoundaryAn" );
+ MonEditBoundaryAn *aDlg = new MonEditBoundaryAn(0, TRUE, HOMARD::HOMARD_Gen::_duplicate(homardGen), QString(""), _ObjectName ) ;
+ aDlg->show();
+ }
}
}
_ObjectName = title;
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
//
- if ( HOMARD_UTILS::isBoundaryDi(obj) )
+ if ( HOMARD_UTILS::isBoundaryAn(obj) )
+ {
+ QPixmap pix = resMgr->loadPixmap( "HOMARD", "whatis.png" );
+ menu->addAction(QIcon(pix), "Edit boundary", this,SLOT(EditBoDi()));
+ }
+ else if ( HOMARD_UTILS::isBoundaryDi(obj) )
{
QPixmap pix = resMgr->loadPixmap( "HOMARD", "whatis.png" );
menu->addAction(QIcon(pix), "Edit boundary", this,SLOT(EditBoDi()));
return bOK ;
}
//================================================================
+// Retourne vrai si l objet est une frontiere analytique
+//================================================================
+bool HOMARD_UTILS::isBoundaryAn(_PTR(SObject) MonObj)
+{
+ return isObject( MonObj, QString("BoundaryAnHomard"), -1 ) ;
+}
+//================================================================
// Retourne vrai si l objet est une frontiere discrete
//================================================================
bool HOMARD_UTILS::isBoundaryDi(_PTR(SObject) MonObj)
// of selected objects
bool isXmgrace(_PTR(SObject) MonObj);
+ bool isBoundaryAn(_PTR(SObject) MonObj);
bool isBoundaryDi(_PTR(SObject) MonObj);
bool isZone(_PTR(SObject) MonObj);
bool isHypo(_PTR(SObject) MonObj);
include $(top_srcdir)/adm_local/unix/make_common_starter.am
salomeinclude_HEADERS = \
+ MonCreateBoundaryAn.h \
+ CreateBoundaryAn.h \
+ MonEditBoundaryAn.h \
MonCreateBoundaryDi.h \
CreateBoundaryDi.h \
MonEditBoundaryDi.h \
HOMARDGUI.cxx \
HOMARDGUI_Utils.cxx \
HomardConfigFile.cxx \
+ MonCreateBoundaryAn.cxx \
+ MonEditBoundaryAn.cxx \
MonCreateBoundaryDi.cxx \
MonEditBoundaryDi.cxx \
MonCreateCase.cxx \
# MOC pre-processing
MOC_FILES = \
HOMARDGUI_moc.cxx \
+ MonCreateBoundaryAn_moc.cxx \
+ MonEditBoundaryAn_moc.cxx \
MonCreateBoundaryDi_moc.cxx \
MonEditBoundaryDi_moc.cxx \
MonCreateCase_moc.cxx \
$(PYTHON_INCLUDES) \
$(MED2_INCLUDES) \
$(HDF5_INCLUDES) \
+ $(BOOST_CPPFLAGS) \
$(CORBA_CXXFLAGS) \
$(CORBA_INCLUDES) \
$(KERNEL_CXXFLAGS) \
--- /dev/null
+using namespace std;
+
+#include "MonCreateBoundaryAn.h"
+#include "MonCreateCase.h"
+
+#include <QFileDialog>
+#include <QMessageBox>
+
+#include "SalomeApp_Tools.h"
+#include "HOMARDGUI_Utils.h"
+#include "HomardQtCommun.h"
+#include <utilities.h>
+
+#include <SUIT_Desktop.h>
+#include <SUIT_MessageBox.h>
+#include <SUIT_ResourceMgr.h>
+#include <SUIT_Session.h>
+#include <SUIT_ViewManager.h>
+
+// ------------------------------------------------------------------------------------------------------------------------
+MonCreateBoundaryAn::MonCreateBoundaryAn(MonCreateCase* parent, bool modal,
+ HOMARD::HOMARD_Gen_var myHomardGen,
+ QString caseName) :
+// ------------------------------------------------------------------------------------------------------------------------------
+/* Constructs a MonCreateBoundaryAn
+ appele pour une vraie creation
+ initialise un cylindre et non une sphere
+*/
+ QDialog(0), Ui_CreateBoundaryAn(),
+ _parent(parent),
+ _aBoundaryAnName (""),
+ _aCaseName(caseName),
+ _BoundaryType(1),
+ _BoundaryAnXcentre(0), _BoundaryAnYcentre(0), _BoundaryAnZcentre(0), _BoundaryAnRayon(0),
+ _BoundaryAnXaxis(0), _BoundaryAnYaxis(0), _BoundaryAnZaxis(0),
+ _Xcentre(0), _Ycentre(0), _Zcentre(0), _Rayon(0),
+ _Xmin(0), _Xmax(0), _Xincr(0), _Ymin(0), _Ymax(0), _Yincr(0), _Zmin(0), _Zmax(0), _Zincr(0), _DMax(0),
+ Chgt (false)
+ {
+ MESSAGE("Constructeur") ;
+ _myHomardGen=HOMARD::HOMARD_Gen::_duplicate(myHomardGen);
+ setupUi(this);
+ setModal(modal);
+
+ // Gestion des icones
+ SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
+ QPixmap pix = resMgr->loadPixmap( "HOMARD", "spherepoint.png" );
+ QIcon IS=QIcon(pix);
+ RBSphere->setIcon(IS);
+ QPixmap pix2 = resMgr->loadPixmap( "HOMARD", "cylinderpointvector.png" );
+ QIcon IS2=QIcon(pix2);
+ RBCylindre->setIcon(IS2);
+
+ InitConnect( );
+
+ SetNewBoundaryAnName() ;
+ InitValBoundaryAn(); // Cherche les valeurs de la boite englobante le maillage
+ InitMinMax(); // Initialise les bornes des boutons
+ SetCylinder(); // Propose un cylindre en premier choix
+ }
+// --------------------------------------------------------------------------------------------------------------
+MonCreateBoundaryAn::MonCreateBoundaryAn(MonCreateCase* parent,
+ HOMARD::HOMARD_Gen_var myHomardGen,
+ QString caseName):
+// --------------------------------------------------------------------------------------------------------------
+// Constructeur appele par MonEditBoundaryAn
+//
+ QDialog(0), Ui_CreateBoundaryAn(),
+ _myHomardGen(myHomardGen),
+ _parent(parent),
+ _aBoundaryAnName (""),
+ _aCaseName(caseName),
+ _BoundaryType(1),
+ _BoundaryAnXcentre(0), _BoundaryAnYcentre(0), _BoundaryAnZcentre(0), _BoundaryAnRayon(0),
+ _BoundaryAnXaxis(0), _BoundaryAnYaxis(0), _BoundaryAnZaxis(0),
+ // Pour affichage lors de l edition d une BoundaryAn sans nom de Cas
+ _Xcentre(0), _Ycentre(0), _Zcentre(0), _Rayon(0),
+ _Xmin(1), _Xmax(1), _Xincr(1), _Ymin(1), _Ymax(1), _Yincr(1), _Zmin(1), _Zmax(1), _Zincr(1), _DMax(1),
+ Chgt (false)
+ {
+ // MESSAGE("Debut de MonCreateBoundaryAn")
+ setupUi(this);
+ SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
+ QPixmap pix = resMgr->loadPixmap( "HOMARD", "spherepoint.png" );
+ QIcon IS=QIcon(pix);
+ RBSphere->setIcon(IS);
+ QPixmap pix2 = resMgr->loadPixmap( "HOMARD", "cylinderpointvector.png" );
+ QIcon IS2=QIcon(pix2);
+ RBCylindre->setIcon(IS2);
+ setModal(true);
+ InitConnect();
+ }
+
+// ------------------------------------------------------------------------
+MonCreateBoundaryAn::~MonCreateBoundaryAn()
+// ------------------------------------------------------------------------
+{
+ // no need to delete child widgets, Qt does it all for us
+}
+// ------------------------------------------------------------------------
+void MonCreateBoundaryAn::InitConnect()
+// ------------------------------------------------------------------------
+{
+ connect( RBCylindre, SIGNAL(clicked()) , this, SLOT(SetCylinder()) ) ;
+ connect( RBSphere, SIGNAL(clicked()) , this, SLOT(SetSphere()) ) ;
+ connect( buttonOk, SIGNAL( pressed() ), this, SLOT( PushOnOK() ) );
+ connect( buttonApply, SIGNAL( pressed() ), this, SLOT( PushOnApply() ) );
+ connect( buttonCancel, SIGNAL( pressed() ), this, SLOT( close() ) );
+ connect( buttonHelp, SIGNAL( pressed() ), this, SLOT( PushOnHelp() ) );
+}
+// ------------------------------------------------------------------------
+void MonCreateBoundaryAn::InitValBoundaryAn()
+// ------------------------------------------------------------------------
+{
+//
+// 1. Les coordonnees extremes du maillage
+//
+ if (_aCaseName == QString("")) { return; }
+
+ HOMARD::HOMARD_Cas_var aCas = _myHomardGen->GetCas(_aCaseName.toStdString().c_str());
+ HOMARD::extrema_var MesExtremes = aCas->GetBoundingBox();
+ int num = MesExtremes->length() ;
+ ASSERT(num == 10);
+ _Xmin=MesExtremes[0]; _Xmax=MesExtremes[1]; _Xincr=MesExtremes[2];
+ _Ymin=MesExtremes[3]; _Ymax=MesExtremes[4]; _Yincr=MesExtremes[5];
+ _Zmin=MesExtremes[6]; _Zmax=MesExtremes[7]; _Zincr=MesExtremes[8];
+ _DMax=MesExtremes[9];
+ MESSAGE ("_Xmin : " << _Xmin << " _Xmax : " << _Xmax << " _Xincr : " << _Xincr ) ;
+ MESSAGE ("_Ymin : " << _Ymin << " _Ymax : " << _Ymax << " _Yincr : " << _Yincr ) ;
+ MESSAGE ("_Zmin : " << _Zmin << " _Zmax : " << _Zmax << " _Zincr : " << _Zincr) ;
+ MESSAGE ("_DMax : " << _DMax);
+
+// 2. Caracteristiques des zones
+// en X
+ _Xcentre=(_Xmin + _Xmax)/2.;
+// en Y
+ _Ycentre=(_Ymin + _Ymax)/2.;
+// en Z
+ _Zcentre=(_Zmin + _Zmax)/2.;
+// Rayon
+ _Rayon= _DMax/4.;
+}
+
+// ------------------------------------------------------------------------
+void MonCreateBoundaryAn::InitMinMax()
+// ------------------------------------------------------------------------
+{
+// en X
+ SpinBox_Xaxis->setSingleStep(0.1);
+ SpinBox_Xcentre->setSingleStep(_Xincr);
+//en Y
+ SpinBox_Yaxis->setSingleStep(0.1);
+ SpinBox_Ycentre->setSingleStep(_Yincr);
+//en Z
+ SpinBox_Zaxis->setSingleStep(0.1);
+ SpinBox_Zcentre->setSingleStep(_Zincr);
+// Rayon
+ SpinBox_Radius->setSingleStep(_Rayon/10.);
+ SpinBox_Radius->setMinimum(0.);
+ SpinBox_Rayon->setSingleStep(_Rayon/10.);
+ SpinBox_Rayon->setMinimum(0.);
+}
+// ------------------------------------------------------------------------
+bool MonCreateBoundaryAn::PushOnApply()
+// ------------------------------------------------------------------------
+// Appele lorsque l'un des boutons Ok ou Apply est presse
+//
+{
+ std::cerr << LEBoundaryName->text().trimmed().toStdString() << std::endl;
+ if (LEBoundaryName->text().trimmed()=="")
+ {
+ QMessageBox::information( 0, "Error",
+ "The boundary must be named.",
+ QMessageBox::Ok + QMessageBox::Default );
+ return false;
+ }
+
+ switch (_BoundaryType)
+ {
+ case 1 : // il s agit d un cylindre
+ {
+ if ((_BoundaryAnXcentre != SpinBox_Xcent->value()) or
+ (_BoundaryAnYcentre != SpinBox_Ycent->value()) or
+ (_BoundaryAnZcentre != SpinBox_Zcent->value()) or
+ (_BoundaryAnRayon != SpinBox_Radius->value()) or
+ (_BoundaryAnXaxis != SpinBox_Xaxis->value()) or
+ (_BoundaryAnYaxis != SpinBox_Yaxis->value()) or
+ (_BoundaryAnZaxis != SpinBox_Zaxis->value()) )
+ {
+ Chgt = true;
+ _BoundaryAnXaxis= SpinBox_Xaxis->value();
+ _BoundaryAnYaxis= SpinBox_Yaxis->value();
+ _BoundaryAnZaxis= SpinBox_Zaxis->value();
+ _BoundaryAnXcentre=SpinBox_Xcent->value();
+ _BoundaryAnYcentre=SpinBox_Ycent->value();
+ _BoundaryAnZcentre=SpinBox_Zcent->value();
+ _BoundaryAnRayon=SpinBox_Radius->value();
+ }
+ break;
+ }
+
+ case 4 : // il s agit d une sphere
+ {
+ if ((_BoundaryAnXcentre != SpinBox_Xcentre->value()) or
+ (_BoundaryAnYcentre != SpinBox_Ycentre->value()) or
+ (_BoundaryAnZcentre != SpinBox_Zcentre->value()) or
+ (_BoundaryAnRayon != SpinBox_Rayon->value()) )
+ {
+ Chgt = true;
+ _BoundaryAnXcentre=SpinBox_Xcentre->value();
+ _BoundaryAnYcentre=SpinBox_Ycentre->value();
+ _BoundaryAnZcentre=SpinBox_Zcentre->value();
+ _BoundaryAnRayon=SpinBox_Rayon->value();
+ }
+ break;
+ }
+ }
+
+ bool bOK = CreateOrUpdateBoundaryAn();
+ return bOK;
+
+}
+// ---------------------------------------------------
+bool MonCreateBoundaryAn:: CreateOrUpdateBoundaryAn()
+//----------------------------------------------------
+// Creation de l'objet boundary
+// Mise a jour des attributs de la BoundaryAn
+
+{
+ if (_aBoundaryAnName != LEBoundaryName->text().trimmed())
+ {
+ try
+ {
+ _aBoundaryAnName = LEBoundaryName->text().trimmed();
+ aBoundaryAn = _myHomardGen->CreateBoundary( \
+ CORBA::string_dup(_aBoundaryAnName.toStdString().c_str()), \
+ CORBA::Long(_BoundaryType) );
+ _parent->addBoundaryAn(_aBoundaryAnName);
+ }
+ catch( SALOME::SALOME_Exception& S_ex )
+ {
+ QMessageBox::information( 0, "Error",
+ QString(CORBA::string_dup(S_ex.details.text)),
+ QMessageBox::Ok + QMessageBox::Default );
+ return false;
+ }
+ }
+// Mise en place des attributs
+ aBoundaryAn->SetBoundaryType(_BoundaryType);
+ switch (_BoundaryType)
+ {
+ case 1 : // il s agit d un cylindre
+ {
+ aBoundaryAn->SetCylinder(_BoundaryAnXcentre, _BoundaryAnYcentre, _BoundaryAnZcentre, _BoundaryAnXaxis, _BoundaryAnYaxis, _BoundaryAnZaxis, _BoundaryAnRayon );
+ break;
+ }
+
+ case 2 : // il s agit d une sphere
+ {
+ aBoundaryAn->SetSphere(_BoundaryAnXcentre, _BoundaryAnYcentre, _BoundaryAnZcentre, _BoundaryAnRayon);
+ break;
+ }
+ }
+ aBoundaryAn->SetLimit(_Xincr, _Yincr, _Zincr);
+
+ HOMARD_UTILS::updateObjBrowser();
+ return true;
+}
+// ------------------------------------------------------------------------
+void MonCreateBoundaryAn::PushOnOK()
+// ------------------------------------------------------------------------
+{
+ if (PushOnApply()) this->close();
+}
+// ------------------------------------------------------------------------
+void MonCreateBoundaryAn::PushOnHelp()
+// ------------------------------------------------------------------------
+{
+ HOMARD_UTILS::PushOnHelp(QString("gui_create_boundary.html#un-cylindre") ) ;
+}
+
+// -----------------------------------
+void MonCreateBoundaryAn::SetNewBoundaryAnName()
+// -----------------------------------
+{
+// Recherche d'un nom par defaut qui n'existe pas encore
+
+ HOMARD::listeBoundarys_var MyBoundaryAns = _myHomardGen->GetAllBoundarys();
+ int num = 0; QString aBoundaryAnName="";
+ while (aBoundaryAnName=="" )
+ {
+ aBoundaryAnName.setNum(num+1) ;
+ aBoundaryAnName.insert(0, QString("Boun_")) ;
+ for ( int i=0; i<MyBoundaryAns->length(); i++)
+ {
+ if ( aBoundaryAnName == QString(MyBoundaryAns[i]))
+ {
+ num=num+1;
+ aBoundaryAnName="";
+ break;
+ }
+ }
+ }
+ LEBoundaryName->clear() ;
+ LEBoundaryName->insert(aBoundaryAnName);
+}
+// ------------------------------------------------------------------------
+void MonCreateBoundaryAn::SetCylinder()
+// ------------------------------------------------------------------------
+{
+ MESSAGE("Debut de SetCylinder")
+ gBCylindre->setVisible(1);
+ gBSphere->setVisible(0);
+ adjustSize();
+ _BoundaryType=1;
+ SpinBox_Xcent->setValue(_Xcentre);
+ SpinBox_Xaxis->setValue(1.);
+ SpinBox_Ycent->setValue(_Ycentre);
+ SpinBox_Yaxis->setValue(1.);
+ SpinBox_Zcent->setValue(_Zcentre);
+ SpinBox_Zaxis->setValue(1.);
+ SpinBox_Radius->setValue(_Rayon);
+ MESSAGE("Fin de SetCylinder")
+}
+// ------------------------------------------------------------------------
+void MonCreateBoundaryAn::SetSphere()
+// ------------------------------------------------------------------------
+{
+ MESSAGE("Debut de SetSphere")
+ gBCylindre->setVisible(0);
+ gBSphere->setVisible(1);
+ adjustSize();
+ _BoundaryType=2;
+ SpinBox_Xcentre->setValue(_Xcentre);
+ SpinBox_Ycentre->setValue(_Ycentre);
+ SpinBox_Zcentre->setValue(_Zcentre);
+ SpinBox_Rayon->setValue(_Rayon);
+ MESSAGE("Fin de SetSphere")
+}
+
+
--- /dev/null
+#ifndef MON_CREATEBOUNDARYAN_H
+#define MON_CREATEBOUNDARYAN_H
+
+
+#include <SALOMEconfig.h>
+#include <SalomeApp_Module.h>
+
+#include CORBA_CLIENT_HEADER(SALOMEDS_Attributes)
+#include CORBA_CLIENT_HEADER(HOMARD_Gen)
+#include CORBA_CLIENT_HEADER(HOMARD_Boundary)
+
+#include <CreateBoundaryAn.h>
+#include <QDialog>
+
+class MonCreateCase;
+class MonCreateBoundaryAn : public QDialog, public Ui_CreateBoundaryAn
+{
+ Q_OBJECT
+
+public:
+ MonCreateBoundaryAn( MonCreateCase* parent, bool modal,
+ HOMARD::HOMARD_Gen_var myHomardGen,
+ QString caseName);
+ virtual ~MonCreateBoundaryAn();
+
+protected :
+ MonCreateBoundaryAn( MonCreateCase* parent,
+ HOMARD::HOMARD_Gen_var myHomardGen,
+ QString caseName);
+
+ MonCreateCase * _parent;
+
+ QString _aBoundaryAnName;
+ QString _aCaseName;
+
+ int _BoundaryType;
+ double _BoundaryAnXcentre, _BoundaryAnYcentre, _BoundaryAnZcentre, _BoundaryAnRayon;
+ double _BoundaryAnXaxis, _BoundaryAnYaxis, _BoundaryAnZaxis;
+ double _Xmin, _Xmax, _Xincr, _Ymin, _Ymax, _Yincr, _Zmin, _Zmax, _Zincr, _DMax ;
+ double _Xcentre, _Ycentre, _Zcentre, _Rayon ;
+
+
+ bool Chgt;
+
+ HOMARD::HOMARD_Boundary_var aBoundaryAn ;
+ HOMARD::HOMARD_Gen_var _myHomardGen;
+
+ virtual void InitConnect();
+ virtual void InitValBoundaryAn();
+ virtual void InitMinMax();
+ virtual void SetNewBoundaryAnName();
+ virtual bool CreateOrUpdateBoundaryAn();
+
+public slots:
+ virtual void SetCylinder();
+ virtual void SetSphere();
+ virtual void PushOnOK();
+ virtual bool PushOnApply();
+ virtual void PushOnHelp();
+
+};
+
+#endif // MON_CREATEBOUNDARYAN_H
// Creation de l'objet CORBA si ce n'est pas deja fait sous le meme nom
if ( _aBoundaryName != aBoundaryName )
{
- try
+ try
{
_aBoundaryName=aBoundaryName;
_aBoundary=_myHomardGen->CreateBoundary(CORBA::string_dup(_aBoundaryName.toStdString().c_str()),0);
void MonCreateBoundaryDi::PushOnHelp()
// ------------------------------------------------------------------------
{
- HOMARD_UTILS::PushOnHelp(QString("gui_create_hypothese.html"));
+ HOMARD_UTILS::PushOnHelp(QString("gui_create_boundary.html#frontiere-discrete"));
}
// ------------------------------------------------------------------------
void MonCreateBoundaryDi::AssocieLesGroupes()
using namespace std;
#include "MonCreateCase.h"
+#include "MonCreateBoundaryAn.h"
+#include "MonEditBoundaryAn.h"
#include "MonCreateBoundaryDi.h"
#include "MonEditBoundaryDi.h"
* Sets attributes to default values
*/
:
- Ui_CreateCase(),
+ Ui_CreateCase(),
_aCaseName(""),_aDirName(""), _ConfType(1)
{
_myHomardGen=HOMARD::HOMARD_Gen::_duplicate(myHomardGen);
connect( PBBoundaryDiNew, SIGNAL(pressed()), this, SLOT(PushBoundaryDiNew()));
connect( PBBoundaryDiEdit, SIGNAL(pressed()), this, SLOT(PushBoundaryDiEdit()) );
connect( CBBoundaryA, SIGNAL(stateChanged(int)), this, SLOT(SetBoundaryA()));
+ connect( PBBoundaryAnNew, SIGNAL(pressed()), this, SLOT(PushBoundaryAnNew()));
+ connect( PBBoundaryAnHelp, SIGNAL(pressed()), this, SLOT(PushBoundaryAnHelp()) );
connect( buttonOk, SIGNAL(pressed()), this, SLOT(PushOnOK()));
connect( buttonApply, SIGNAL(pressed()), this, SLOT(PushOnApply()));
return false;
}
+ if (CBBoundaryA->isChecked())
+ {
+ QStringList ListeGroup ;
+ QString NomGroup ;
+ int nbcol = TWBoundary->columnCount();
+ int nbrow = TWBoundary->rowCount();
+ for ( int col=1; col< nbcol; col++)
+ {
+ for ( int row=0; row< nbrow; row++)
+ {
+ if ( TWBoundary->item( row, col )->checkState() == Qt::Checked )
+ {
+// Nom du groupe
+ NomGroup = QString(TWBoundary->item(row, 0)->text()) ;
+// MESSAGE("NomGroup "<<NomGroup.toStdString().c_str());
+ for ( int nugr = 0 ; nugr<ListeGroup.size(); nugr++)
+ {
+// MESSAGE("....... "<<ListeGroup[nugr].toStdString().c_str());
+ if ( NomGroup == ListeGroup[nugr] )
+ {
+ QMessageBox::information( 0, "Error",
+ QString("Group "+NomGroup+" cannot be given for more than 1 boundary."),
+ QMessageBox::Ok + QMessageBox::Default );
+ return false;
+ }
+ }
+ ListeGroup.insert(0, NomGroup );
+ }
+ }
+ }
+ }
+
if (aCaseName != _aCaseName )
{
_aCaseName = aCaseName;
CORBA::string_dup(aMeshName.toStdString().c_str()), \
CORBA::string_dup(aFileName.toStdString().c_str()) );
}
- catch( SALOME::SALOME_Exception& S_ex )
+ catch( SALOME::SALOME_Exception& S_ex )
{
QMessageBox::information( 0, "Error",
QString(CORBA::string_dup(S_ex.details.text)),
_aDirName=aDirName;
aCase->SetConfType(_ConfType);
+// Enregistrement de la frontiere discrete
if (CBBoundaryD->isChecked())
{
QString monBoundaryDiName=CBBoundaryDi->currentText();
if (monBoundaryDiName != "" )
{
- aCase->AddBoundaryGroup(monBoundaryDiName.toStdString().c_str(), " ");
+ aCase->AddBoundaryGroup(monBoundaryDiName.toStdString().c_str(), "");
+ }
+ }
+
+// Enregistrement des liens (groupe,frontiere analytique)
+ if (CBBoundaryA->isChecked())
+ {
+ QString NomGroup ;
+ int nbcol = TWBoundary->columnCount();
+ int nbrow = TWBoundary->rowCount();
+ for ( int col=1; col< nbcol; col++)
+ {
+ for ( int row=0; row< nbrow; row++)
+ {
+ if ( TWBoundary->item( row, col )->checkState() == Qt::Checked )
+ {
+// Nom du groupe
+ NomGroup = QString(TWBoundary->item(row, 0)->text()) ;
+// Nom de la frontiere
+ QTableWidgetItem *__colItem = new QTableWidgetItem();
+ __colItem = TWBoundary->horizontalHeaderItem(col);
+ aCase->AddBoundaryGroup(QString(__colItem->text()).toStdString().c_str(), NomGroup.toStdString().c_str());
+ }
+ }
}
}
void MonCreateCase::SetBoundaryD()
// ------------------------------------------------------------------------
{
- if (CBBoundaryD->isChecked())
- { GBBoundaryD->setVisible(1); }
- else
- { GBBoundaryD->setVisible(0); }
+ if (CBBoundaryD->isChecked())
+ {
+ GBBoundaryD->setVisible(1);
+ bool bOK = PushOnApply();
+ if ( ! bOK) {
+ GBBoundaryD->setVisible(0);
+ CBBoundaryD->setChecked(0);
+ CBBoundaryD->setCheckState(Qt::Unchecked);
+ }
+ }
+ else { GBBoundaryD->setVisible(0); }
adjustSize();
}
// ------------------------------------------------------------------------
void MonCreateCase::PushBoundaryDiNew()
// ------------------------------------------------------------------------
{
- MonCreateBoundaryDi *BoundaryDlg = new MonCreateBoundaryDi(this, true,
+ MonCreateBoundaryDi *BoundaryDlg = new MonCreateBoundaryDi(this, true,
HOMARD::HOMARD_Gen::_duplicate(_myHomardGen), _aCaseName, "") ;
BoundaryDlg->show();
}
// ------------------------------------------------------------------------
{
if (CBBoundaryDi->currentText() == QString("")) return;
- MonEditBoundaryDi *BoundaryDlg = new MonEditBoundaryDi(this, true,
+ MonEditBoundaryDi *BoundaryDlg = new MonEditBoundaryDi(this, true,
HOMARD::HOMARD_Gen::_duplicate(_myHomardGen), _aCaseName, CBBoundaryDi->currentText() ) ;
BoundaryDlg->show();
}
void MonCreateCase::SetBoundaryA()
// ------------------------------------------------------------------------
{
- if (CBBoundaryA->isChecked()) { GBBoundaryA->setVisible(1); }
+ MESSAGE("Debut de SetBoundaryA ");
+ if (CBBoundaryA->isChecked())
+ {
+ bool bOK = PushOnApply();
+ if (bOK) {
+ GBBoundaryA->setVisible(1);
+ HOMARD::ListGroupType_var _listeGroupesCas = aCase->GetGroups();
+ QTableWidgetItem *__colItem = new QTableWidgetItem();
+ __colItem->setText(QApplication::translate("CreateCase", "", 0, QApplication::UnicodeUTF8));
+ TWBoundary->setHorizontalHeaderItem(0, __colItem);
+ for ( int i = 0; i < _listeGroupesCas->length(); i++ )
+ {
+ TWBoundary->insertRow(i);
+ TWBoundary->setItem( i, 0, new QTableWidgetItem(QString((_listeGroupesCas)[i]).trimmed()));
+ TWBoundary->item( i, 0 )->setFlags(Qt::ItemIsEnabled |Qt::ItemIsSelectable );
+ }
+ TWBoundary->resizeColumnsToContents();
+ TWBoundary->resizeRowsToContents();
+ TWBoundary->clearSelection();
+ }
+ else{
+ GBBoundaryA->setVisible(0);
+ CBBoundaryA->setChecked(0);
+ CBBoundaryA->setCheckState(Qt::Unchecked); }
+ }
else { GBBoundaryA->setVisible(0); }
adjustSize();
+//
+ MESSAGE("Fin de SetBoundaryA ");
+}
+// ------------------------------------------------------------------------
+void MonCreateCase::addBoundaryAn(QString newBoundary)
+// ------------------------------------------------------------------------
+{
+ MESSAGE("Debut de addBoundaryAn ");
+// Ajout d'une nouvelle colonne
+ int nbcol = TWBoundary->columnCount();
+ MESSAGE("nbcol " << nbcol);
+ nbcol += 1 ;
+ TWBoundary->setColumnCount ( nbcol ) ;
+ QTableWidgetItem *__colItem = new QTableWidgetItem();
+ __colItem->setText(QApplication::translate("CreateCase", newBoundary.toStdString().c_str(), 0, QApplication::UnicodeUTF8));
+ TWBoundary->setHorizontalHeaderItem(nbcol-1, __colItem);
+/* TWBoundary->horizontalHeaderItem(nbcol-1)->setFlags( Qt::ItemIsSelectable|Qt::ItemIsEnabled );*/
+// Chaque case est a cocher
+ int nbrow = TWBoundary->rowCount();
+ MESSAGE("nbrow " << nbrow);
+ for ( int i = 0; i < nbrow; i++ )
+ {
+ TWBoundary->setItem( i, nbcol-1, new QTableWidgetItem( QString ("") ) );
+ TWBoundary->item( i, nbcol-1 )->setFlags( 0 );
+ TWBoundary->item( i, nbcol-1 )->setFlags( Qt::ItemIsUserCheckable|Qt::ItemIsEnabled );
+ TWBoundary->item( i, nbcol-1 )->setCheckState( Qt::Unchecked );
+ }
+ TWBoundary->resizeColumnToContents(nbcol-1);
+// TWBoundary->resizeRowsToContents();
+ MESSAGE("Fin de addBoundaryAn ");
+}
+// ------------------------------------------------------------------------
+void MonCreateCase::PushBoundaryAnNew()
+// ------------------------------------------------------------------------
+{
+ MonCreateBoundaryAn *BoundaryDlg = new MonCreateBoundaryAn(this, true,
+ HOMARD::HOMARD_Gen::_duplicate(_myHomardGen), _aCaseName) ;
+ BoundaryDlg->show();
+}
+// ------------------------------------------------------------------------
+void MonCreateCase::PushBoundaryAnHelp()
+// ------------------------------------------------------------------------
+{
+ HOMARD_UTILS::PushOnHelp(QString("gui_create_boundary.html#frontiere-analytique") ) ;
}
// ------------------------------------------------------------------------
void MonCreateCase::CaseNameChanged()
MonCreateCase( QWidget* parent, bool modal, HOMARD::HOMARD_Gen_var myHomardGen);
~MonCreateCase();
+ void addBoundaryAn(QString newBoundary);
void addBoundaryDi(QString newBoundary);
protected :
virtual void PushBoundaryDiNew();
virtual void PushBoundaryDiEdit();
virtual void SetBoundaryA();
+ virtual void PushBoundaryAnNew();
+ virtual void PushBoundaryAnHelp();
virtual void PushOnOK();
virtual bool PushOnApply();
// Recuperation de toutes les zones enregistrees dans l'arbre d'etude
{
HOMARD::listeZones_var mesZones = _myHomardGen->GetAllZones();
- TWZone->clear();
int stop=TWZone->rowCount();
for ( int row=0; row< stop; row++)
{
TWZone->item( row, 0 )->setFlags( 0 );
TWZone->item( row, 0 )->setFlags( Qt::ItemIsUserCheckable|Qt::ItemIsEnabled );
TWZone->item( row, 0 )->setCheckState( Qt::Unchecked );
- TWZone->setItem( row, 1, new QTableWidgetItem(QString(mesZones[i])));
+ TWZone->setItem( row, 1, new QTableWidgetItem(QString(mesZones[i]).trimmed()));
TWZone->item( row, 1 )->setFlags(Qt::ItemIsEnabled |Qt::ItemIsSelectable );
row=row+1;
}
TWCMP->item( 0, 0 )->setFlags( 0 );
TWCMP->item( 0, 0 )->setFlags( Qt::ItemIsUserCheckable|Qt::ItemIsEnabled );
TWCMP->item( 0, 0 )->setCheckState( Qt::Checked );
- TWCMP->setItem( 0, 1, new QTableWidgetItem(QString((*it))));
+ TWCMP->setItem( 0, 1, new QTableWidgetItem(QString((*it)).trimmed()));
TWCMP->item( 0, 1 )->setFlags( Qt::ItemIsEnabled |Qt::ItemIsSelectable );
}
TWCMP->resizeColumnsToContents();
TWField->item( row, 0 )->setFlags( 0 );
TWField->item( row, 0 )->setFlags( Qt::ItemIsUserCheckable|Qt::ItemIsEnabled );
TWField->item( row, 0 )->setCheckState( Qt::Unchecked );
- TWField->setItem( row, 1, new QTableWidgetItem(QString(*it)));
+ TWField->setItem( row, 1, new QTableWidgetItem(QString(*it).trimmed()));
TWField->item( row, 1 )->setFlags(Qt::ItemIsEnabled |Qt::ItemIsSelectable );
row=row+1;
}
{TWGroupe->item( i, 0 )->setCheckState( Qt::Checked );}
else
{TWGroupe->item( i, 0 )->setCheckState( Qt::Unchecked );}
- TWGroupe->setItem( i, 1, new QTableWidgetItem(QString((_listeGroupesCas)[i])));
+ TWGroupe->setItem( i, 1, new QTableWidgetItem(QString((_listeGroupesCas)[i]).trimmed()));
TWGroupe->item( i, 1 )->setFlags(Qt::ItemIsEnabled |Qt::ItemIsSelectable );
}
TWGroupe->resizeColumnsToContents();
SpinBox_Zcentre->setEnabled(false) ;
}
// Rayon
+ SpinBox_Rayon->setSingleStep(_Rayon/10.);
SpinBox_Rayon->setMinimum(0.);
}
// ------------------------------------------------------------------------
--- /dev/null
+using namespace std;
+
+#include "MonEditBoundaryAn.h"
+
+#include "SalomeApp_Tools.h"
+#include "HOMARDGUI_Utils.h"
+#include <utilities.h>
+
+
+// ------------------------------------------------------------------------
+MonEditBoundaryAn::MonEditBoundaryAn( MonCreateCase* parent, bool modal,
+ HOMARD::HOMARD_Gen_var myHomardGen,
+ QString caseName, QString zoneName ):
+// ------------------------------------------------------------------------
+/* Constructs a MonEditBoundaryAn
+ herite de MonCreateBoundaryAn
+*/
+ MonCreateBoundaryAn(parent, myHomardGen, caseName)
+{
+ MESSAGE("Debut de MonEditBoundaryAn pour " << zoneName.toStdString().c_str());
+ setWindowTitle("Edit BoundaryAn");
+ _aBoundaryAnName=zoneName;
+ aBoundaryAn = _myHomardGen->GetBoundary(_aBoundaryAnName.toStdString().c_str());
+ InitValEdit();
+}
+// ------------------------------------------------------------------------
+MonEditBoundaryAn::~MonEditBoundaryAn()
+// ------------------------------------------------------------------------
+{
+ // no need to delete child widgets, Qt does it all for us
+}
+// ------------------------------------------------------------------------
+void MonEditBoundaryAn::InitValEdit()
+// ------------------------------------------------------------------------
+{
+ LEBoundaryName->setText(_aBoundaryAnName);
+ LEBoundaryName->setReadOnly(true);
+ _BoundaryType = aBoundaryAn->GetBoundaryType();
+ InitValBoundaryAnLimit();
+ if (_aCaseName != QString("")) InitValBoundaryAn();
+ switch (_BoundaryType)
+ {
+ case 1 : // il s agit d une boite
+ {
+ InitValBoundaryAnCylindre();
+ SetCylinder();
+ break;
+ }
+ case 2: // il s agit d une sphere
+ {
+ InitValBoundaryAnSphere();
+ SetSphere();
+ break;
+ }
+ };
+}
+// ------------------------------------------------------------------------
+void MonEditBoundaryAn::InitValBoundaryAnLimit()
+// ------------------------------------------------------------------------
+{
+ HOMARD::double_array_var mesCoordLimits = aBoundaryAn->GetLimit();
+ ASSERT(mesCoordLimits->length() == 3 );
+ _Xincr=mesCoordLimits[0];
+ _Yincr=mesCoordLimits[1];
+ _Zincr=mesCoordLimits[2];
+
+}
+// ------------------------------------------------------------------------
+void MonEditBoundaryAn::InitValBoundaryAnCylindre()
+// ------------------------------------------------------------------------
+{
+ HOMARD::double_array_var mesCoordBoundary = aBoundaryAn->GetCylinder();
+ ASSERT(mesCoordBoundary->length() == 7 );
+ _BoundaryAnXcentre=mesCoordBoundary[0];
+ _BoundaryAnYcentre=mesCoordBoundary[1];
+ _BoundaryAnZcentre=mesCoordBoundary[2];
+ _BoundaryAnXaxis=mesCoordBoundary[3];
+ _BoundaryAnYaxis=mesCoordBoundary[4];
+ _BoundaryAnZaxis=mesCoordBoundary[5];
+ _BoundaryAnRayon=mesCoordBoundary[6];
+
+}
+// ------------------------------------------------------------------------
+void MonEditBoundaryAn::InitValBoundaryAnSphere()
+// ------------------------------------------------------------------------
+{
+ HOMARD::double_array_var mesCoordBoundary = aBoundaryAn->GetSphere();
+ ASSERT(mesCoordBoundary->length() == 4 );
+ _BoundaryAnXcentre=mesCoordBoundary[0];
+ _BoundaryAnYcentre=mesCoordBoundary[1];
+ _BoundaryAnZcentre=mesCoordBoundary[2];
+ _BoundaryAnRayon=mesCoordBoundary[3];
+
+}
+// ------------------------------------------------------------------------
+void MonEditBoundaryAn::SetCylinder()
+// ------------------------------------------------------------------------
+{
+ gBCylindre->setVisible(1);
+ gBSphere->setVisible(0);
+ RBCylindre->setChecked(1);
+ adjustSize();
+ _BoundaryType=1;
+ RBSphere->setDisabled(true);
+ adjustSize();
+
+ SpinBox_Xcent->setValue(_BoundaryAnXcentre);
+ SpinBox_Ycent->setValue(_BoundaryAnYcentre);
+ SpinBox_Zcent->setValue(_BoundaryAnZcentre);
+
+ SpinBox_Xaxis->setValue(_BoundaryAnXaxis);
+ SpinBox_Yaxis->setValue(_BoundaryAnYaxis);
+ SpinBox_Zaxis->setValue(_BoundaryAnZaxis);
+
+
+ SpinBox_Xaxis->setSingleStep(0.1);
+ SpinBox_Xcentre->setSingleStep(_Xincr);
+ SpinBox_Yaxis->setSingleStep(0.1);
+ SpinBox_Ycentre->setSingleStep(_Yincr);
+ SpinBox_Zaxis->setSingleStep(0.1);
+ SpinBox_Zcentre->setSingleStep(_Zincr);
+// Rayon
+ SpinBox_Radius->setValue(_BoundaryAnRayon);
+ SpinBox_Radius->setSingleStep(_BoundaryAnRayon/10.);
+
+}
+// ------------------------------------------------------------------------
+void MonEditBoundaryAn::SetSphere()
+// ------------------------------------------------------------------------
+{
+ gBCylindre->setVisible(0);
+ gBSphere->setVisible(1);
+ RBSphere->setChecked(1);
+ RBCylindre->setDisabled(true);
+ adjustSize();
+ _BoundaryType=2 ;
+
+ SpinBox_Xcentre->setValue(_BoundaryAnXcentre);
+ if ( _Xincr > 0) { SpinBox_Xcentre->setSingleStep(_Xincr); }
+ else { SpinBox_Xcentre->setSingleStep(1) ; }
+
+ SpinBox_Ycentre->setValue(_BoundaryAnYcentre);
+ if ( _Yincr > 0) { SpinBox_Ycentre->setSingleStep(_Yincr); }
+ else { SpinBox_Ycentre->setSingleStep(1) ; }
+
+ SpinBox_Zcentre->setValue(_BoundaryAnZcentre);
+ if ( _Zincr > 0) { SpinBox_Zcentre->setSingleStep(_Zincr); }
+ else { SpinBox_Zcentre->setSingleStep(1);}
+
+ SpinBox_Rayon->setMinimum(0.);
+ SpinBox_Rayon->setValue(_BoundaryAnRayon);
+}
+
+
+// ---------------------------------------------------
+bool MonEditBoundaryAn::CreateOrUpdateBoundaryAn()
+//----------------------------------------------------
+// Pas de Creation de la zone
+// Mise a jour des attributs de la BoundaryAn
+
+{
+ try
+ {
+ aBoundaryAn->SetBoundaryType(_BoundaryType);
+ switch (_BoundaryType)
+ {
+ case 1 : // il s agit d un cylindre
+ {
+ aBoundaryAn->SetCylinder(_BoundaryAnXcentre, _BoundaryAnYcentre, _BoundaryAnZcentre, _BoundaryAnXaxis, _BoundaryAnYaxis, _BoundaryAnZaxis, _BoundaryAnRayon );
+ break;
+ }
+
+ case 2 : // il s agit d une sphere
+ {
+ aBoundaryAn->SetSphere(_BoundaryAnXcentre, _BoundaryAnYcentre, _BoundaryAnZcentre, _BoundaryAnRayon);
+ break;
+ }
+ }
+ if (Chgt) _myHomardGen->InvalideBoundary(_aBoundaryAnName.toStdString().c_str());
+ HOMARD_UTILS::updateObjBrowser();
+ }
+ catch( const SALOME::SALOME_Exception& S_ex ) {
+ SalomeApp_Tools::QtCatchCorbaException( S_ex );
+ return false;
+ }
+ return true;
+}
+
--- /dev/null
+#ifndef MON_EDITBOUNDARYAN_H
+#define MON_EDITBOUNDARYAN_H
+
+#include <SALOMEconfig.h>
+#include <SalomeApp_Module.h>
+
+#include CORBA_CLIENT_HEADER(SALOMEDS_Attributes)
+#include CORBA_CLIENT_HEADER(HOMARD_Gen)
+
+#include <MonCreateBoundaryAn.h>
+
+class MonEditBoundaryAn : public MonCreateBoundaryAn
+{
+ Q_OBJECT
+public:
+ MonEditBoundaryAn( MonCreateCase* parent, bool modal,
+ HOMARD::HOMARD_Gen_var myHomardGen,
+ QString caseName, QString zoneName);
+ virtual ~MonEditBoundaryAn();
+
+protected :
+ void SetCylinder();
+ void SetSphere();
+ bool CreateOrUpdateBoundaryAn();
+ void InitValEdit();
+ void InitValBoundaryAnLimit();
+ void InitValBoundaryAnCylindre();
+ void InitValBoundaryAnSphere();
+
+public slots:
+
+};
+
+#endif // MON_EDITZONE_H
RBNonConforme->setEnabled(false);
RBConforme->setEnabled(false);
-// Affichage du mode de suivi de frontiere
+// Non affichage du mode de suivi de frontiere
CBBoundaryA->setVisible(0);
GBBoundaryA->setVisible(0);
CBBoundaryD->setVisible(0);
GBBoundaryD->setVisible(0);
+// On passe en revue tous les couples (frontiere,groupe) du cas
HOMARD::ListBoundaryGroupType_var mesBoundarys = aCase->GetBoundaryGroup();
if (mesBoundarys->length()>0)
{
+ QStringList ListeFron ;
+ QString NomFron ;
bool BounDi = false ;
bool BounAn = false ;
for (int i=0; i<mesBoundarys->length(); i++)
{
- HOMARD::HOMARD_Boundary_var myBoundary = _myHomardGen->GetBoundary((mesBoundarys)[i]);
+// Nom de la frontiere
+ NomFron = mesBoundarys[i++];
+ MESSAGE("NomFron "<<NomFron.toStdString().c_str());
+// L'objet associe pour en deduire le type
+ HOMARD::HOMARD_Boundary_var myBoundary = _myHomardGen->GetBoundary(NomFron.toStdString().c_str());
int type_obj = myBoundary->GetBoundaryType() ;
- if ( type_obj==0 )
- { CBBoundaryDi->addItem(QString((mesBoundarys)[i++]));
+// C'est une frontiere discrete
+// Rermarque : on ne gere pas les groupes
+ if ( type_obj==0 )
+ {
BounDi = true ;
+ CBBoundaryDi->addItem(NomFron);
}
+
+// C'est une frontiere analytique
else
{
- i++ ;
BounAn = true ;
- };
+ int nbcol = TWBoundary->columnCount();
+// On ajoute une ligne pour le groupe
+ TWBoundary->insertRow(0);
+// La colonne 0 comporte le nom du groupe
+ TWBoundary->setItem( 0, 0, new QTableWidgetItem(QString(mesBoundarys[i]).trimmed()));
+// TWBoundary->item( 0, 0 )->setFlags(Qt::ItemIsEnabled |Qt::ItemIsSelectable );
+// Chacune des colonnes suivantes est associé a une frontiere deja presente : on y met une
+// case non cochee
+ for ( int j = 1; j < nbcol; j++ )
+ {
+ TWBoundary->setItem( 0, j, new QTableWidgetItem( QString ("") ) );
+ TWBoundary->item( 0, j )->setFlags( 0 );
+ TWBoundary->item( 0, j )->setFlags( Qt::ItemIsUserCheckable );
+ TWBoundary->item( 0, j )->setCheckState( Qt::Unchecked );
+ }
+// On cherche si la frontiere en cours d'examen a deja ete rencontree :
+// si oui, on stocke son numero de colonne
+ int ok = -1 ;
+ for ( int nufr = 0 ; nufr<ListeFron.size(); nufr++)
+ {
+ if ( ListeFron[nufr] == NomFron ) ok = nufr+1 ;
+ }
+// si non, on ajoute une colonne
+ if ( ok < 0 )
+ {
+ ListeFron.append(NomFron);
+ ok = ListeFron.size() ;
+ addBoundaryAn(NomFron);
+ }
+// on coche la case correspondant au couple (frontiere,groupe) en cours d'examen
+ TWBoundary->item( 0, ok )->setCheckState( Qt::Checked );
+ }
}
MESSAGE("BounDi "<<BounDi<<", BounAn "<<BounAn);
if ( BounAn )
{ GBBoundaryA->setVisible(1);
- GBBoundaryA->setDisabled(true);}
+// on rend les cases inactives. On ne peut pas le faire pour le tableau sinon on perd l'ascenseur !
+ int nbcol = TWBoundary->columnCount();
+ int nbrow = TWBoundary->rowCount();
+ for ( int i = 0; i < nbrow; i++ )
+ { for ( int j = 0; j < nbcol; j++ ) TWBoundary->item( i, j )->setFlags( !Qt::ItemIsEnabled ); }
+// on met un nom blanc au coin
+ QTableWidgetItem *__colItem = new QTableWidgetItem();
+ __colItem->setText(QApplication::translate("CreateCase", "", 0, QApplication::UnicodeUTF8));
+ TWBoundary->setHorizontalHeaderItem(0, __colItem);
+// on cache le bouton New
+ PBBoundaryAnNew->setVisible(0);
+ }
if ( BounDi )
{ GBBoundaryD->setVisible(1);
CBBoundaryDi->setDisabled(true);
* MonEditFile classe derivee de EditFile
* elle meme generee par uic
* Ouvre le fichier passe en parametre
- * et affiche le texte correspondant dans la fenêtre de log
+ * et affiche le texte correspondant dans la fenetre de log
* ---------------------------------------------------------
*/
/* ---------------------------------------------------------
- * MonEditFile Constructeur
+ * MonEditFile Constructeur
* ---------------------------------------------------------
*/
MonEditFile::MonEditFile( QWidget* parent, bool modal,
{
connect( buttonQuit, SIGNAL(pressed()), this, SLOT(close()));
connect( buttonPrint, SIGNAL(pressed()), this, SLOT(PushOnPrint()));
- connect( buttonHelp, SIGNAL(pressed()), this, SLOT(PushOnHelp()));
}
// ------------------------------------------------------------------------
void MonEditFile::EditText()
QMessageBox::Ok + QMessageBox::Default );
return;
}
-// ------------------------------------------------------------------------
-void MonEditFile::PushOnHelp()
-// ------------------------------------------------------------------------
-{
- HOMARD_UTILS::PushOnHelp(QString("gui_usage.html"));
-}
public slots:
virtual void PushOnPrint();
- virtual void PushOnHelp();
};
TWCMP->item( 0, 0 )->setFlags( Qt::ItemIsUserCheckable|Qt::ItemIsEnabled);
TWCMP->item( 0, 0 )->setCheckState(Qt::Checked );
TWCMP->item( 0, 0 )->setFlags( 0 );
- TWCMP->setItem( 0, 1, new QTableWidgetItem(QString(mesComposantsAvant[i])));
+ TWCMP->setItem( 0, 1, new QTableWidgetItem(QString(mesComposantsAvant[i]).trimmed()));
TWCMP->item( 0, 1 )->setFlags( Qt::ItemIsEnabled |Qt::ItemIsSelectable );
}
TWCMP->resizeColumnsToContents();
TWField->item( 0, 0 )->setFlags( Qt::ItemIsUserCheckable|Qt::ItemIsEnabled);
TWField->item( 0, 0 )->setCheckState(Qt::Checked );
TWField->item( 0, 0 )->setFlags( 0 );
- TWField->setItem( 0, 1, new QTableWidgetItem(QString(mesChampsAvant[i])));
+ TWField->setItem( 0, 1, new QTableWidgetItem(QString(mesChampsAvant[i]).trimmed()));
TWField->item( 0, 1 )->setFlags( Qt::ItemIsEnabled |Qt::ItemIsSelectable );
}
TWField->resizeColumnsToContents();
SpinBox_Xmini->setValue(_ZoneXmin);
SpinBox_Xmaxi->setValue(_ZoneXmax);
- int incr=1;
- if ( _Xincr > 0 ) { incr=_Xincr;};
+ double incr ;
+ if ( _Xincr > 0 ) {incr=_Xincr;} else{incr=1.;}
SpinBox_Xmini->setSingleStep(incr);
SpinBox_Xmaxi->setSingleStep(incr);
SpinBox_Ymini->setValue(_ZoneYmin);
SpinBox_Ymaxi->setValue(_ZoneYmax);
- if ( _Yincr > 0 ) {incr=_Yincr;} else{incr=1;}
+ if ( _Yincr > 0 ) {incr=_Yincr;} else{incr=1.;}
SpinBox_Ymini->setSingleStep(incr);
SpinBox_Ymaxi->setSingleStep(incr);
SpinBox_Zmini->setValue(_ZoneZmin);
SpinBox_Zmaxi->setValue(_ZoneZmax);
- if ( _Zincr > 0 ) {incr=_Zincr;} else{incr=1;}
+ if ( _Zincr > 0 ) {incr=_Zincr;} else{incr=1.;}
SpinBox_Zmini->setSingleStep(incr);
SpinBox_Zmaxi->setSingleStep(incr);
//=============================================================================
HOMARD_Gen_i::HOMARD_Gen_i(CORBA::ORB_ptr orb,
PortableServer::POA_ptr poa,
- PortableServer::ObjectId * contId,
- const char *instanceName,
+ PortableServer::ObjectId * contId,
+ const char *instanceName,
const char *interfaceName) :
Engines_Component_i(orb, poa, contId, instanceName, interfaceName)
{
}
//=============================================================================
/*!
- * Ajoute le composant homard dans l etude si necessaire
+ * Ajoute le composant homard dans l etude si necessaire
*/
//=============================================================================
void HOMARD_Gen_i::addInStudy(SALOMEDS::Study_ptr theStudy)
ASSERT(!CORBA::is_nil(theStudy));
MESSAGE("addInStudy: current study ID = " << GetCurrentStudyID());
SALOMEDS::StudyBuilder_var myBuilder = theStudy->NewBuilder();
-
+
// Create SComponent labelled 'homard' if it doesn't already exit
SALOMEDS::SComponent_var homardFather = theStudy->FindComponent(ComponentDataType());
if (CORBA::is_nil(homardFather))
bool aLocked = theStudy->GetProperties()->IsLocked();
if (aLocked) theStudy->GetProperties()->SetLocked(false);
-
+
homardFather = myBuilder->NewComponent(ComponentDataType());
SALOMEDS::GenericAttribute_var anAttr = myBuilder->FindOrCreateAttribute(homardFather,"AttributeName");
SALOMEDS::AttributeName_var aName = SALOMEDS::AttributeName::_narrow(anAttr);
CORBA::Object_var objVarN = _NS->Resolve("/Kernel/ModulCatalog");
- SALOME_ModuleCatalog::ModuleCatalog_var Catalogue =
+ SALOME_ModuleCatalog::ModuleCatalog_var Catalogue =
SALOME_ModuleCatalog::ModuleCatalog::_narrow(objVarN);
SALOME_ModuleCatalog::Acomponent_var Comp = Catalogue->GetComponent(ComponentDataType());
- if (!Comp->_is_nil())
+ if (!Comp->_is_nil())
{
aName->SetValue(ComponentDataType());
}
aStudyBuilder->NewCommand();
SALOMEDS::SObject_var newStudyIter = aStudyBuilder->NewObject(aCasSO);
- PublishInStudyAttr(aStudyBuilder, newStudyIter, nomIter , labelIter,
+ PublishInStudyAttr(aStudyBuilder, newStudyIter, nomIter , labelIter,
"iter_non_calculee.png", _orb->object_to_string(myIteration)) ;
aStudyBuilder->CommitCommand();
};
int number = myIteration->GetNumber() ;
- if ( number == 0 )
+ if ( number == 0 )
PublishInStudyAttr(aStudyBuilder, aIterSO, NULL , NULL, "iter0.png", NULL) ;
- else if (EtatCalcul)
+ else if (EtatCalcul)
PublishInStudyAttr(aStudyBuilder, aIterSO, NULL, NULL, "iter_calculee.png", NULL) ;
- else
+ else
PublishInStudyAttr(aStudyBuilder, aIterSO, NULL, NULL, "iter_non_calculee.png", NULL) ;
aStudyBuilder->CommitCommand();
}
//=====================================================================================
+void HOMARD_Gen_i::InvalideBoundary(const char* BoundaryName)
+//=====================================================================================
+{
+ MESSAGE( "InvalideBoundary, BoundaryName = " << BoundaryName );
+ HOMARD::HOMARD_Boundary_var myBoundary = myContextMap[GetCurrentStudyID()]._mesBoundarys[BoundaryName];
+ if (CORBA::is_nil(myBoundary))
+ {
+ SALOME::ExceptionStruct es;
+ es.type = SALOME::BAD_PARAM;
+ es.text = "Invalid Boundary ";
+ throw SALOME::SALOME_Exception(es);
+ return ;
+ };
+ SALOME::ExceptionStruct es;
+ es.type = SALOME::BAD_PARAM;
+ es.text = "No change is allowed in boundary. Ask for evolution.";
+ throw SALOME::SALOME_Exception(es);
+ return ;
+/* HOMARD::listeHypo* maListe = myBoundary->GetHypo();
+ int numberOfHypo = maListe->length();
+ for (int NumeHypo = 0; NumeHypo< numberOfHypo; NumeHypo++)
+ {
+ std::string nomHypo = std::string((*maListe)[NumeHypo]);
+ InvalideHypo(nomHypo.c_str());
+ }*/
+}
+//=====================================================================================
void HOMARD_Gen_i::InvalideZone(const char* ZoneName)
//=====================================================================================
{
SALOMEDS::SObject_var aIterSO = SALOMEDS::SObject::_narrow(myCurrentStudy->FindObjectIOR(_orb->object_to_string(myIteration)));
SALOMEDS::ChildIterator_var aIter = myCurrentStudy->NewChildIterator(aIterSO);
- for (; aIter->More(); aIter->Next())
+ for (; aIter->More(); aIter->Next())
{
SALOMEDS::SObject_var so = aIter->Value();
SALOMEDS::GenericAttribute_var anAttr;
{
SALOMEDS::SObject_var aHypObj = it->Value();
SALOMEDS::SObject_var ptrObj;
- if (aHypObj->ReferencedObject(ptrObj))
+ if (aHypObj->ReferencedObject(ptrObj))
{
if (std::string(ptrObj->GetName()) == std::string(aZoneSO->GetName()))
{
aStudyBuilder->Addreference(aSubSO, aHypoSO);
aStudyBuilder->CommitCommand();
-
+
myIteration->SetHypoName(nomHypo);
myHypo->AddIteration(nomIter);
};
std::vector<double> LesExtremes =GetBoundingBoxInMedFile(FileName);
HOMARD::extrema_var aSeq = new HOMARD::extrema();
- if (LesExtremes.size()!=10) { return false; }
+ if (LesExtremes.size()!=10) { return false; }
aSeq->length(10);
for (int i =0; i< LesExtremes.size(); i++)
aSeq[i]=LesExtremes[i];
HOMARD::HOMARD_Iteration_var myIteration = myContextMap[GetCurrentStudyID()]._mesIterations[nomIteration];
ASSERT(!CORBA::is_nil(myIteration));
-// on ne calcule pas l iteration 0
+// on ne calcule pas l iteration 0
int NumeIter = myIteration->GetNumber();
if ( NumeIter == 0 )
{
{
codret = 0 ;
};
-
+
// D.4. Les types de raffinement et de deraffinement
// Les appels corba sont lourds, il vaut mieux les grouper
{
const char* MeshName = myBoundary->GetMeshName() ;
const char* MeshFile = myBoundary->GetMeshFile() ;
- myDriver->TexteBoundaryDi( MeshName, MeshFile);
+ myDriver->TexteBoundaryDi( MeshName, MeshFile, GroupName);
BoundaryOption = BoundaryOption*2 ;
}
else if (BoundaryType == 1) // Cas d un cylindre
SALOME::ExceptionStruct es;
es.type = SALOME::BAD_PARAM;
std::string text = "Error during the adaptation.\n" ;
- try
+ try
{
ifstream fichier(MessFile.c_str(), ios::in);
string ligne;
return aResultSO._retn();
};
//=============================================================================
-SALOMEDS::SObject_ptr HOMARD_Gen_i::PublishCaseInStudy(SALOMEDS::Study_ptr theStudy,
+SALOMEDS::SObject_ptr HOMARD_Gen_i::PublishCaseInStudy(SALOMEDS::Study_ptr theStudy,
SALOMEDS::StudyBuilder_var aStudyBuilder,
HOMARD::HOMARD_Cas_ptr theObject, const char* theName)
{
}
SALOMEDS::SComponent_var theFatherHomard = theStudy->FindComponent(ComponentDataType());
- if (theFatherHomard->_is_nil())
+ if (theFatherHomard->_is_nil())
{
- MESSAGE("theFatherHomard->_is_nil()");
+ MESSAGE("theFatherHomard->_is_nil()");
return aResultSO._retn();
}
aResultSO = aStudyBuilder->NewObject(theFatherHomard);
- PublishInStudyAttr(aStudyBuilder, aResultSO, theName, "CasHomard", "cas_calcule.png",
+ PublishInStudyAttr(aStudyBuilder, aResultSO, theName, "CasHomard", "cas_calcule.png",
_orb->object_to_string(theObject) ) ;
return aResultSO._retn();
}
//=============================================================================
-SALOMEDS::SObject_ptr HOMARD_Gen_i::PublishZoneInStudy(SALOMEDS::Study_ptr theStudy,
+SALOMEDS::SObject_ptr HOMARD_Gen_i::PublishZoneInStudy(SALOMEDS::Study_ptr theStudy,
SALOMEDS::StudyBuilder_var aStudyBuilder,
HOMARD::HOMARD_Zone_ptr theObject, const char* theName)
{
SALOMEDS::SObject_var aResultSO;
SALOMEDS::GenericAttribute_var anAttr;
- if (CORBA::is_nil(theObject))
+ if (CORBA::is_nil(theObject))
{
MESSAGE("HOMARD_Gen_i.cxx::theObject->_is_nil()");
return aResultSO._retn();
}
- if (theStudy->_is_nil())
+ if (theStudy->_is_nil())
{
MESSAGE("HOMARD_Gen_i.cxx::theStudy->_is_nil()");
return aResultSO._retn();
}
SALOMEDS::SComponent_var theFatherHomard = theStudy->FindComponent(ComponentDataType());
- if (theFatherHomard->_is_nil())
+ if (theFatherHomard->_is_nil())
{
MESSAGE("theFatherHomard->_is_nil()");
return aResultSO._retn();
switch (ZoneType)
{
case 2 :
- { PublishInStudyAttr(aStudyBuilder, aResultSO, theName, "ZoneHomard",
+ { PublishInStudyAttr(aStudyBuilder, aResultSO, theName, "ZoneHomard",
"boxdxyz_2.png", _orb->object_to_string(theObject) ) ;
- break;
+ break;
}
case 4 :
- { PublishInStudyAttr(aStudyBuilder, aResultSO, theName, "ZoneHomard",
+ { PublishInStudyAttr(aStudyBuilder, aResultSO, theName, "ZoneHomard",
"spherepoint_2.png", _orb->object_to_string(theObject) ) ;
- break;
+ break;
}
}
return aResultSO._retn();
}
//=============================================================================
-SALOMEDS::SObject_ptr HOMARD_Gen_i::PublishBoundaryInStudy(SALOMEDS::Study_ptr theStudy,
+SALOMEDS::SObject_ptr HOMARD_Gen_i::PublishBoundaryInStudy(SALOMEDS::Study_ptr theStudy,
SALOMEDS::StudyBuilder_var aStudyBuilder,
HOMARD::HOMARD_Boundary_ptr theObject, const char* theName)
{
case 0 :
{ PublishInStudyAttr(aStudyBuilder, aResultSO, theName, "BoundaryDiHomard", "mesh_tree_mesh.png",
_orb->object_to_string(theObject));
- break;
+ break;
}
case 1 :
- { PublishInStudyAttr(aStudyBuilder, aResultSO, theName, "BoundaryAnHomard", "cylinderpointvector_2.png",
+ { PublishInStudyAttr(aStudyBuilder, aResultSO, theName, "BoundaryAnHomard", "cylinderpointvector_2.png",
_orb->object_to_string(theObject));
- break;
+ break;
}
case 2 :
- { PublishInStudyAttr(aStudyBuilder, aResultSO, theName, "BoundaryAnHomard", "spherepoint_2.png",
+ { PublishInStudyAttr(aStudyBuilder, aResultSO, theName, "BoundaryAnHomard", "spherepoint_2.png",
_orb->object_to_string(theObject));
- break;
+ break;
}
}
return aResultSO._retn();
}
//=============================================================================
-SALOMEDS::SObject_ptr HOMARD_Gen_i::PublishHypotheseInStudy(SALOMEDS::Study_ptr theStudy,
+SALOMEDS::SObject_ptr HOMARD_Gen_i::PublishHypotheseInStudy(SALOMEDS::Study_ptr theStudy,
SALOMEDS::StudyBuilder_var aStudyBuilder,
HOMARD::HOMARD_Hypothesis_ptr theObject, const char* theName)
{
// On recupere le module pere dans l etude
// On ajoute la categorie des hypotheses dans l etude si necessaire
SALOMEDS::SComponent_var theFatherHomard = theStudy->FindComponent(ComponentDataType());
- if (theFatherHomard->_is_nil())
+ if (theFatherHomard->_is_nil())
{
MESSAGE("theFatherHomard->_is_nil()");
return aResultSO._retn();
ret->length(myContextMap[GetCurrentStudyID()]._mesIterations.size());
std::map<std::string, HOMARD::HOMARD_Iteration_var>::const_iterator it;
int i = 0;
- for (it = myContextMap[GetCurrentStudyID()]._mesIterations.begin();
+ for (it = myContextMap[GetCurrentStudyID()]._mesIterations.begin();
it != myContextMap[GetCurrentStudyID()]._mesIterations.end(); it++)
{
ret[i++] = CORBA::string_dup((*it).first.c_str());
{
// On verifie que le fichier n est pas deja publie
SALOMEDS::ChildIterator_var aIter = myCurrentStudy->NewChildIterator(aSmeshSO);
- for (; aIter->More(); aIter->Next())
+ for (; aIter->More(); aIter->Next())
{
SALOMEDS::SObject_var aSO = aIter->Value();
SALOMEDS::GenericAttribute_var aGAttr;
// On met a jour les attributs AttributeExternalFileDef et AttributePixMap
SMESH::mesh_array* mesMaillages=aSmeshEngine->CreateMeshesFromMED(NomFich, theStatus);
- for (int i = 0; i < mesMaillages->length(); i++)
+ for (int i = 0; i < mesMaillages->length(); i++)
{
MESSAGE( ". Mise a jour des attributs");
SMESH::SMESH_Mesh_var monMaillage= (*mesMaillages)[i];
// On verifie que le fichier est deja publie
SALOMEDS::StudyBuilder_var myBuilder = myCurrentStudy->NewBuilder();
SALOMEDS::ChildIterator_var aIter = myCurrentStudy->NewChildIterator(aSmeshSO);
- for (; aIter->More(); aIter->Next())
+ for (; aIter->More(); aIter->Next())
{
SALOMEDS::SObject_var aSO = aIter->Value();
SALOMEDS::GenericAttribute_var aGAttr;
f.close();
// Remove temporary files created from the stream
- if (!isMultiFile)
+ if (!isMultiFile)
SALOMEDS_Tool::RemoveTemporaryFiles(tmpDir.c_str(), aFileSeq.in(), true);
return true;
};
//===========================================================================
-bool HOMARD_Gen_i::CanPublishInStudy(CORBA::Object_ptr theIOR)
+bool HOMARD_Gen_i::CanPublishInStudy(CORBA::Object_ptr theIOR)
{
if(CORBA::is_nil(myCurrentStudy))
return false;
};
//===========================================================================
-CORBA::Boolean HOMARD_Gen_i::CanCopy(SALOMEDS::SObject_ptr theObject)
+CORBA::Boolean HOMARD_Gen_i::CanCopy(SALOMEDS::SObject_ptr theObject)
{
// No Copy/Paste support
return false;
aScript += "\n# =====================";
}
std::map<std::string, HOMARD::HOMARD_Zone_var>::const_iterator it_zone;
- for ( it_zone = myContextMap[GetCurrentStudyID()]._mesZones.begin();
- it_zone != myContextMap[GetCurrentStudyID()]._mesZones.end(); ++it_zone)
+ for ( it_zone = myContextMap[GetCurrentStudyID()]._mesZones.begin();
+ it_zone != myContextMap[GetCurrentStudyID()]._mesZones.end(); ++it_zone)
{
HOMARD::HOMARD_Zone_var maZone = (*it_zone).second;
CORBA::String_var dumpCorbaZone = maZone->GetDumpPython();
std::string mesh0 = cMesh0.in();
CORBA::String_var cMeshName0= myIteration->GetMeshName();
std::string meshName0 = cMeshName0.in();
- dumpCas += meshName0 + std::string("', '")+ mesh0 + std::string("')\n");
+ dumpCas += meshName0 + std::string("', '")+ mesh0 + std::string("')\n");
CORBA::String_var dumpCorbaCase = myCase->GetDumpPython();
std::string dumpCas2= dumpCorbaCase.in();
aScript += "#\n# Creation of the iterations" ;
aScript += "\n# ==========================";
std::map<std::string, HOMARD::HOMARD_Iteration_var>::const_iterator it_iter;
- for (it_iter = myContextMap[GetCurrentStudyID()]._mesIterations.begin();
- it_iter != myContextMap[GetCurrentStudyID()]._mesIterations.end(); ++it_iter)
+ for (it_iter = myContextMap[GetCurrentStudyID()]._mesIterations.begin();
+ it_iter != myContextMap[GetCurrentStudyID()]._mesIterations.end(); ++it_iter)
{
HOMARD::HOMARD_Iteration_var aIter = (*it_iter).second;
CORBA::String_var dumpCorbaIter = aIter->GetDumpPython();
extern "C"
{
PortableServer::ObjectId* HOMARDEngine_factory(CORBA::ORB_ptr orb,
- PortableServer::POA_ptr poa,
+ PortableServer::POA_ptr poa,
PortableServer::ObjectId* contId,
- const char* instanceName,
+ const char* instanceName,
const char* interfaceName)
{
MESSAGE("PortableServer::ObjectId* HOMARDEngine_factory()");
class HOMARD_Gen_i:
public virtual Engines_Component_i,
public virtual POA_HOMARD::HOMARD_Gen
-{
+{
public:
HOMARD_Gen_i(CORBA::ORB_ptr orb,
PortableServer::POA_ptr poa,
- PortableServer::ObjectId* contId,
- const char* instanceName,
+ PortableServer::ObjectId* contId,
+ const char* instanceName,
const char* interfaceName);
virtual ~HOMARD_Gen_i();
-
+
SALOMEDS::Study_ptr GetCurrentStudy();
void SetCurrentStudy(SALOMEDS::Study_ptr theStudy);
void AssociateHypoZone(const char* nomZone, const char* nomHypothesis);
void DissociateHypoZone(const char* nomZone, const char* nomHypothesis);
+ void InvalideBoundary(const char* nomBoundary);
void InvalideZone(const char* nomZone);
void InvalideHypo(const char* nomHypo);
void InvalideIter(const char* nomIter);
HOMARD::listeBoundarys* GetAllBoundarys();
char* GetCaseName(const char* nomIteration);
-
+
CORBA::Boolean Compute(const char* nomIteration, CORBA::Long etatMenage);
CORBA::Boolean VerifieDir(const char* nomDir);
-
+
void PublishResultInSmesh(const char* NomFich, CORBA::Long IconeType);
void DeleteResultInSmesh(const char* NomFich, const char* MeshName);
void PublishFileUnderIteration(const char* NomIter, const char* NomFich,
virtual SALOMEDS::TMPFile* Save(SALOMEDS::SComponent_ptr theComponent,
const char* theURL,
bool isMultiFile);
-
+
virtual SALOMEDS::TMPFile* SaveASCII(SALOMEDS::SComponent_ptr theComponent,
const char* theURL,
bool isMultiFile);
-
+
virtual bool Load(SALOMEDS::SComponent_ptr theComponent,
const SALOMEDS::TMPFile& theStream,
const char* theURL,
bool isMultiFile);
virtual void Close(SALOMEDS::SComponent_ptr IORSComponent);
-
+
virtual char* ComponentDataType();
-
+
virtual char* IORToLocalPersistentID(SALOMEDS::SObject_ptr theSObject,
const char* IORString,
CORBA::Boolean isMultiFile,
const char* aLocalPersistentID,
CORBA::Boolean isMultiFile,
CORBA::Boolean isASCII);
-
+
// --> Data publishing
virtual bool CanPublishInStudy(CORBA::Object_ptr theIOR);
// --> Copy/Paste
virtual CORBA::Boolean CanCopy(SALOMEDS::SObject_ptr theObject);
-
+
virtual SALOMEDS::TMPFile* CopyFrom(SALOMEDS::SObject_ptr theObject,
CORBA::Long& theObjectID);
void addInStudy(SALOMEDS::Study_ptr theStudy);
SALOMEDS::SObject_ptr PublishCaseInStudy(SALOMEDS::Study_ptr theStudy, SALOMEDS::StudyBuilder_var aStudyBuilder,
HOMARD::HOMARD_Cas_ptr theObject, const char* theName);
-
+
SALOMEDS::SObject_ptr PublishHypotheseInStudy(SALOMEDS::Study_ptr theStudy, SALOMEDS::StudyBuilder_var aStudyBuilder,
HOMARD::HOMARD_Hypothesis_ptr theObject, const char* theName);
std::map<int, PortableServer::ServantBase*> _idmap;
};
typedef std::map<int, StudyContext> ContextMap;
-
+
::HOMARD_Gen* myHomard;
SALOMEDS::Study_var myCurrentStudy;
ContextMap myContextMap;
test_2.py \
test_2.00.med \
test_2.fr.med \
- test_2.apad.03.bilan
+ test_2.apad.03.bilan \
+ test_3.pdf \
+ test_3.py \
+ test_3.00.med \
+ test_3.fr.med \
+ test_3.apad.02.bilan
#
# Creation of the zones
# =====================
-# Creation of the box Zone_1
+# Creation of the box Zone_1
Zone_1 = homard.CreateZone('Zone_1', 2)
Zone_1.SetBox(-0.01, 1.01, -0.01, 0.4, -0.01, 0.6)
-# Creation of the sphere Zone_2
+# Creation of the sphere Zone_2
Zone_2 = homard.CreateZone('Zone_2', 4)
Zone_2.SetSphere(0.5, 0.6, 0.7, 0.75)
#
# Creation of the hypotheses
# ==========================
-# Creation of the hypothesis Zones_1_et_2
- Zones_1_et_2 = homard.CreateHypothesis('Zones_1_et_2')
- Zones_1_et_2.SetAdapRefinUnRef(0, 1, 0)
- homard.AssociateHypoZone('Zone_1', 'Zones_1_et_2')
- homard.AssociateHypoZone('Zone_2', 'Zones_1_et_2')
-
# Creation of the hypothesis a10_1pc_de_mailles_a_raffiner_sur_ERRE_ELEM_SIGM
a10_1pc_de_mailles_a_raffiner_sur_ERRE_ELEM_SIGM = homard.CreateHypothesis('a10_1pc_de_mailles_a_raffiner_sur_ERRE_ELEM_SIGM')
a10_1pc_de_mailles_a_raffiner_sur_ERRE_ELEM_SIGM.SetAdapRefinUnRef(1, 1, 0)
a10_1pc_de_mailles_a_raffiner_sur_ERRE_ELEM_SIGM.SetUseComp(0)
a10_1pc_de_mailles_a_raffiner_sur_ERRE_ELEM_SIGM.AddComp('ERREST')
a10_1pc_de_mailles_a_raffiner_sur_ERRE_ELEM_SIGM.SetRefinThr(3, 10.1)
+ a10_1pc_de_mailles_a_raffiner_sur_ERRE_ELEM_SIGM.SetTypeFieldInterp(2)
+ a10_1pc_de_mailles_a_raffiner_sur_ERRE_ELEM_SIGM.AddFieldInterp('RESU____DEPL____________________')
+ a10_1pc_de_mailles_a_raffiner_sur_ERRE_ELEM_SIGM.AddFieldInterp('RESU____ERRE_ELEM_SIGM__________')
+# Creation of the hypothesis Zones_1_et_2
+ Zones_1_et_2 = homard.CreateHypothesis('Zones_1_et_2')
+ Zones_1_et_2.SetAdapRefinUnRef(0, 1, 0)
+ homard.AssociateHypoZone('Zone_1', 'Zones_1_et_2')
+ homard.AssociateHypoZone('Zone_2', 'Zones_1_et_2')
#
# Creation of the cases
# =====================
I1.SetMeshName('M1')
I1.SetMeshFile(os.path.join(Rep_Test_Resu, 'maill.01.med'))
I1.SetFieldFile(os.path.join(Rep_Test, Test_Name + '.00.med'))
- I1.SetTimeStepRank( 1, 1)
+ I1.SetTimeStepRank(1, 1)
homard.AssociateIterHypo('I1', 'a10_1pc_de_mailles_a_raffiner_sur_ERRE_ELEM_SIGM')
result1 = homard.Compute('I1', 1)
I2.SetMeshName('M2')
I2.SetMeshFile(os.path.join(Rep_Test_Resu, 'maill.02.med'))
I2.SetFieldFile(os.path.join(Rep_Test, Test_Name + '.01.med'))
- I2.SetTimeStepRank( 1, 1)
+ I2.SetTimeStepRank(1, 1)
homard.AssociateIterHypo('I2', 'a10_1pc_de_mailles_a_raffiner_sur_ERRE_ELEM_SIGM')
result2 = homard.Compute('I2', 1)
rep_test_file = "I0" + s_iter_test_file
#
test_file = os.path.join(Rep_Test, Test_Name + "." + test_file_suff)
+mess_error_ref = "\nReference file: " + test_file
try :
file = open (test_file, "r")
mess_ref = file.readlines()
file.close()
except :
- raise Exception('Reference file does not exist.')
+ mess_error = mess_error_ref + "\nThis file does not exist.\n"
+ raise Exception(mess_error)
sys.exit(2)
#
test_file = os.path.join(Rep_Test_Resu, rep_test_file, test_file_suff)
mess = file.readlines()
file.close()
else :
- raise Exception('Result file does not exist.')
+ mess_error = "\nResult file: " + test_file
+ mess_error += "\nThis file does not exist.\n"
+ raise Exception(mess_error)
sys.exit(2)
nblign = len(mess_ref)
if ( len(mess) != nblign ):
- raise Exception('The number of lines of the files are not the same.')
+ mess_error = mess_error_ref + "\nResult file: " + test_file
+ mess_error += "\nThe number of lines of the files are not the same.\n"
+ raise Exception(mess_error)
sys.exit(2)
for num in range(nblign) :
#
# Creation of the boundaries
# ==========================
-# Creation of the boundaries Boundary_1
+# Creation of the discrete boundary Boundary_1
Boundary_1 = homard.CreateBoundary('internal_boundary', 0)
Boundary_1.SetMeshFile(os.path.join(Rep_Test, Test_Name + '.fr.med'))
Boundary_1.SetMeshName('plaque')
# Creation of the hypothesis Hypo_1
Hypo_1 = homard.CreateHypothesis('Hypo_1')
Hypo_1.SetAdapRefinUnRef(-1, 1, 0)
- Hypo_1.AddGroup('BANDE ')
- Hypo_1.AddGroup('EG ')
+ Hypo_1.AddGroup('EG')
+ Hypo_1.AddGroup('BANDE')
# Creation of the hypothesis Hypo_2
Hypo_2 = homard.CreateHypothesis('Hypo_2')
Hypo_2.SetAdapRefinUnRef(-1, 1, 0)
- Hypo_2.AddGroup('M_D ')
+ Hypo_2.AddGroup('M_D')
#
# Creation of the cases
# =====================
Case_1 = homard.CreateCase('Case_1', 'PLAQUE_0', os.path.join(Rep_Test, Test_Name + '.00.med'))
Case_1.SetDirName(Rep_Test_Resu)
Case_1.SetConfType(1)
- Case_1.AddBoundaryGroup( 'internal_boundary', ' ' )
+ Case_1.AddBoundaryGroup('internal_boundary', '')
#
# Creation of the iterations
# ==========================
rep_test_file = "I0" + s_iter_test_file
#
test_file = os.path.join(Rep_Test, Test_Name + "." + test_file_suff)
+mess_error_ref = "\nReference file: " + test_file
try :
file = open (test_file, "r")
mess_ref = file.readlines()
file.close()
except :
- raise Exception('Reference file does not exist.')
+ mess_error = mess_error_ref + "\nThis file does not exist.\n"
+ raise Exception(mess_error)
sys.exit(2)
#
test_file = os.path.join(Rep_Test_Resu, rep_test_file, test_file_suff)
mess = file.readlines()
file.close()
else :
- raise Exception('Result file does not exist.')
+ mess_error = "\nResult file: " + test_file
+ mess_error += "\nThis file does not exist.\n"
+ raise Exception(mess_error)
sys.exit(2)
nblign = len(mess_ref)
if ( len(mess) != nblign ):
- raise Exception('The number of lines of the files are not the same.')
+ mess_error = mess_error_ref + "\nResult file: " + test_file
+ mess_error += "\nThe number of lines of the files are not the same.\n"
+ raise Exception(mess_error)
sys.exit(2)
for num in range(nblign) :
--- /dev/null
+
+
+ANALYSE DU MAILLAGE
+===================
+
+ Maillage apres adaptation
+ MOYEU
+ Date de creation : mardi 1 fevrier 2011 a 17 h 21 mn 12 s
+ Dimension : 3
+ Degre : 1
+ C'est un maillage obtenu apres 2 adaptations.
+ Le niveau minimum actif est : 2
+ Le niveau maximum atteint est : 2
+
+ Direction | Unite | Minimum | Maximum
+ ---------------------------------------------------------------
+ x | m | -36.603 | 536.60
+ y | m | -75.000 | 125.00
+ z | m | -125.00 | 75.000
+
+
+ NOMBRE D'ENTITES DU CALCUL
+ ==========================
+
+
+ ************************************************************
+ * Noeuds *
+ ************************************************************
+ * Nombre total * 3710 *
+ ************************************************************
+
+ ************************************************************
+ * Segments *
+ ************************************************************
+ * Nombre total * 156 *
+ * . dont aretes isolees * 0 *
+ * . dont aretes de bord de regions 2D * 0 *
+ * . dont aretes internes aux faces/volumes * 156 *
+ ************************************************************
+
+ ************************************************************
+ * Triangles *
+ ************************************************************
+ * Nombre total * 3232 *
+ * . dont triangles de regions 2D * 0 *
+ * . dont triangles de bord * 3232 *
+ * . dont triangles internes aux volumes * 0 *
+ ************************************************************
+ * . du niveau 0 * 0 *
+ * . du niveau 1 * 0 *
+ * . du niveau 2 * 3232 *
+ ************************************************************
+
+ ************************************************************
+ * Tetraedres *
+ ************************************************************
+ * Nombre total * 17280 *
+ ************************************************************
+ * . du niveau 0 * 0 *
+ * . du niveau 1 * 0 *
+ * . du niveau 2 * 17280 *
+ ************************************************************
--- /dev/null
+# -*- coding: iso-8859-1 -*-
+"""
+Python script for HOMARD
+Copyright EDF-R&D 2011
+Test test_3
+"""
+__revision__ = "V1.0"
+
+######################################################################################
+Test_Name = "test_3"
+n_iter_test_file = 2
+######################################################################################
+import os
+import sys
+import tempfile
+import HOMARD
+import salome
+#
+pathHomard=os.getenv('HOMARD_ROOT_DIR')
+Rep_Test = os.path.join(pathHomard,"share/salome/resources/homard")
+Rep_Test_Resu = tempfile.mktemp()
+os.mkdir(Rep_Test_Resu)
+
+salome.salome_init()
+import iparameters
+ipar = iparameters.IParameters(salome.myStudy.GetCommonParameters("Interface Applicative", 1))
+ipar.append("AP_MODULES_LIST", "Homard")
+######################################################################################
+######################################################################################
+def homard_exec(theStudy):
+ """
+Python script for HOMARD
+Copyright EDF-R&D 2010
+ """
+ homard.SetCurrentStudy(theStudy)
+#
+# Creation of the boundaries
+# ==========================
+# Creation of the discrete boundary
+ Boundary_1 = homard.CreateBoundary('courbes', 0)
+ Boundary_1.SetMeshFile(os.path.join(Rep_Test, Test_Name + '.fr.med'))
+ Boundary_1.SetMeshName('COURBES')
+#
+# Creation of the external cylinder
+ Boundary_2 = homard.CreateBoundary('cyl_ext', 1)
+ Boundary_2.SetCylinder(50.0, 25., -25., 1., 0., 0., 100.)
+#
+# Creation of the internal cylinder
+ Boundary_3 = homard.CreateBoundary('cyl_int', 1)
+ Boundary_3.SetCylinder(50.0, 25., -25., 1., 0., 0., 50.)
+#
+# Creation of the first sphere
+ Boundary_4 = homard.CreateBoundary('sphere_1', 2)
+ Boundary_4.SetSphere(50.0, 25., -25., 100.)
+#
+# Creation of the second sphere
+ Boundary_5 = homard.CreateBoundary('sphere_2', 2)
+ Boundary_5.SetSphere(450.0, 25., -25., 100.)
+#
+# Creation of the hypotheses
+# ==========================
+# Uniform refinement
+ Hypo = homard.CreateHypothesis('Hypo')
+ Hypo.SetAdapRefinUnRef(-1, 1, 0)
+#
+# Creation of the cases
+# =====================
+# Creation of the case Case_1
+ Case_1 = homard.CreateCase('Case_1', 'MOYEU', os.path.join(Rep_Test, Test_Name + '.00.med'))
+ Case_1.SetDirName(Rep_Test_Resu)
+ Case_1.SetConfType(1)
+ Case_1.AddBoundaryGroup('courbes', '')
+ Case_1.AddBoundaryGroup('cyl_ext', 'EXT')
+ Case_1.AddBoundaryGroup('cyl_int', 'INT')
+ Case_1.AddBoundaryGroup('sphere_1', 'END_1')
+ Case_1.AddBoundaryGroup('sphere_2', 'END_2')
+#
+# Creation of the iterations
+# ==========================
+# Creation of the iteration Iter_1
+ Iter_1 = homard.CreateIteration('Iter_1', Case_1.GetIter0Name() )
+ Iter_1.SetMeshName('MOYEU_1')
+ Iter_1.SetMeshFile(os.path.join(Rep_Test_Resu, 'maill.01.med'))
+ homard.AssociateIterHypo('Iter_1', 'Hypo')
+ result1 = homard.Compute('Iter_1', 1)
+
+# Creation of the iteration Iter_2
+ Iter_2 = homard.CreateIteration('Iter_2', 'Iter_1')
+ Iter_2.SetMeshName('MOYEU_2')
+ Iter_2.SetMeshFile(os.path.join(Rep_Test_Resu, 'maill.02.med'))
+ homard.AssociateIterHypo('Iter_2', 'Hypo')
+ result2 = homard.Compute('Iter_2', 1)
+
+ return result1*result2
+
+######################################################################################
+
+homard = salome.lcc.FindOrLoadComponent('FactoryServer', 'HOMARD')
+#
+# Exec of HOMARD-SALOME
+#
+try :
+ result=homard_exec(salome.myStudy)
+ if (result != True):
+ raise Exception('Pb in homard_exec')
+except :
+ raise Exception('Pb in homard_exec')
+ sys.exit(1)
+#
+# Test of the result
+#
+s_iter_test_file = str(n_iter_test_file)
+test_file_suff = "apad.0" + s_iter_test_file + ".bilan"
+rep_test_file = "I0" + s_iter_test_file
+#
+test_file = os.path.join(Rep_Test, Test_Name + "." + test_file_suff)
+mess_error_ref = "\nReference file: " + test_file
+try :
+ file = open (test_file, "r")
+ mess_ref = file.readlines()
+ file.close()
+except :
+ mess_error = mess_error_ref + "\nThis file does not exist.\n"
+ raise Exception(mess_error)
+ sys.exit(2)
+#
+test_file = os.path.join(Rep_Test_Resu, rep_test_file, test_file_suff)
+if os.path.isfile (test_file) :
+ file = open (test_file, "r")
+ mess = file.readlines()
+ file.close()
+else :
+ mess_error = "\nResult file: " + test_file
+ mess_error += "\nThis file does not exist.\n"
+ raise Exception(mess_error)
+ sys.exit(2)
+
+nblign = len(mess_ref)
+if ( len(mess) != nblign ):
+ mess_error = mess_error_ref + "\nResult file: " + test_file
+ mess_error += "\nThe number of lines of the files are not the same.\n"
+ raise Exception(mess_error)
+ sys.exit(2)
+
+for num in range(nblign) :
+ if (( "creation" not in mess_ref[num] ) and ( mess_ref[num] != mess[num])) :
+ message_erreur = "\nRefe : " + mess_ref[num]
+ message_erreur += "Test : " + mess[num][:-1]
+ message_erreur += "\nThe test is different from the reference."
+ raise Exception(message_erreur)
+ sys.exit(10)
+#
+if salome.sg.hasDesktop():
+ salome.sg.updateObjBrowser(1)
+ iparameters.getSession().restoreVisualState(1)
+