- tétraèdres
- hexaèdres
- prismes
+
Si le maillage initial comporte des pyramides, il y a arrêt en erreur. Toutefois, si on est certain que les raffinements ultérieurs ne toucheront aucune des arêtes des pyramides, on cochera la case "Pyramides autorisées". Les adaptations se dérouleront normalement et les pyramides seront restituées telles quelles dans le maillage final.
L'arbre d'étude
Une première série d'options portent sur la finesse maximale de maillage que l'on ne veut pas dépasser. Deux directives sont possibles, séparément ou ensemble. On peut imposer une taille de maille minimale : une maille dont le diamètre est inférieur à cette limite ne sera plus découpée. Par défaut, on propose un diamètre minimal nul, ce qui revient à ne rien imposer. On peut imposer un niveau de raffinement maximal. Par défaut, le maximum est à 99, ce qui équivaut en général à ne rien imposer.
-La seconde série d'options n'a d'intérêt que dans le cas où l'adaptation est piloté par un champ et que ce champ n'est pas défini partout dans le maillage. Cela arrive par exemple quand on construit un champ basé sur une distance dans un plan alors que le domaine est 3D : le champ ne sera pas défini sur les noeuds hors du plan. Pour de tels champs, cette option permet de préciser le comportement que l'on souhaite dans les régions où le champ n'est pas défini. Par défaut, il ne se passe rien : les mailles sont gardées telles quelles. On peut choisir les deux autres variantes : raffiner, toutes les mailles seront a priori coupées, ou déraffiner, toutes les mailles seront candidates au déraffinement.
+La deuxième série d'options n'a d'intérêt que dans le cas où l'adaptation est piloté par un champ et que ce champ n'est pas défini partout dans le maillage. Cela arrive par exemple quand on construit un champ basé sur une distance dans un plan alors que le domaine est 3D : le champ ne sera pas défini sur les noeuds hors du plan. Pour de tels champs, cette option permet de préciser le comportement que l'on souhaite dans les régions où le champ n'est pas défini. Par défaut, il ne se passe rien : les mailles sont gardées telles quelles. On peut choisir les deux autres variantes : raffiner, toutes les mailles seront a priori coupées, ou déraffiner, toutes les mailles seront candidates au déraffinement.
+Le dernier choix porte sur une sortie supplémentaire de l'adaptation. Si la case est cochée, le fichier MED en sortie contiendra un champ contenant le niveau de raffinement de chaque maille. La convention est celle de HOMARD : une maille du maillage initial est de niveau 0, une maille issue d'un raffinement d'une maille initiale porte le niveau 1, etc. Les mailles de transition qui sont produites entre deux mailles de niveau différents, n et n+1, sont affectées du demi-niveau n+0,5. Par défaut, la case n'est pas cochée et le champ n'est pas produit.
.. image:: images/create_hypothese_av_1.png
:align: center
.. _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
-""""""""""""""""""""""""""""
-Ces méthodes retournent une instance de la classe boundary.
-
-+----------------------------------------------------------------------------------------+
-+----------------------------------------------------------------------------------------+
-| .. module:: CreateBoundaryDi |
-| |
-| **CreateBoundaryDi(boundary_name, mesh_name, mesh_file)** |
-| |
-| - ``boundary_name`` : le nom de la frontière discrète |
-| - ``mesh_name`` : le nom du maillage de la frontière |
-| - ``mesh_file`` : le nom du fichier contenant ce maillage |
-+----------------------------------------------------------------------------------------+
-| .. module:: CreateBoundaryCylinder |
-| |
-| **CreateBoundaryCylinder(boundary_name, Xcen, Ycen, Zcen, Xaxe, Yaxe, Zaxe, R)** |
-| |
-| - ``boundary_name`` : le nom de la frontière analytique basée sur un cylindre |
-| - ``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:: CreateBoundarySphere |
-| |
-| **CreateBoundarySphere(boundary_name, Xcen, Ycen, Zcen, R)** |
-| |
-| - ``boundary_name`` : le nom de la frontière analytique basée sur une sphere |
-| - ``Xcen``, ``Ycen``, ``Zcen`` : coordonnées du centre de la sphère |
-| - ``R`` : rayon de la 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 : |
-| |
-| * 0 : discrète |
-| * 1 : cylindre |
-| * 2 : sphère |
-+-------------------------------------------------------------------+
-| .. module:: GetCoords |
-| |
-| **GetCoords()** |
-| Retourne un tableau contenant les coordonnées de la frontière |
-| dans l'ordre d'entrée dans le CreateBoundaryXXXX associé |
-+-------------------------------------------------------------------+
-
-
-Exemple
-"""""""
-Création d'une frontière discrète, d'une frontière sphèrique, puis d'une frontière cylindrique : ::
-
- inter = homard.CreateBoundaryDi("INTERSECTION", 'PIQUAGE', dircase+'/tutorial_4.fr.med')
- fron_1 = homard.CreateBoundarySphere("FRON_1", 12.3, 3.4, .56, 6.5)
- fron_2 = homard.CreateBoundaryCylinder('CYL_1', 0.0, 25., -25., 25., 50., 75., 100.)
-
-
-Saisie graphique correspondante
+L'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.
+
+Il existe trois classes d'hypothèses :
+
+ - Uniforme sur tout le maillage,
+ - Selon un champ,
+ - En fonction de zone géométrique.
+
+.. image:: images/create_hypothese_1.png
+ :align: center
+
+
+Nom de l'hypothèse
+""""""""""""""""""
+Un nom de l'hypothèse est proposé automatiquement : Hypo_1, Hypo_2, 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.
+
+Adaptation selon un champ
+"""""""""""""""""""""""""
+
+.. note::
+ 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 :
+
+.. image:: images/create_hypothese_ch_1.png
+ :align: center
+
+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 choisit 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).
+
+On peut choisir de ne pas utiliser directement le champ, mais sa variation d'un élément à ses voisins. Pour cela, on activera le bouton "*Saut entre éléments*".
+
+.. 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 lesquelles 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.
+
+.. image:: images/create_hypothese_ch_3.png
+ :align: center
+
+
+Adaptation selon une zone
+"""""""""""""""""""""""""
+.. index:: single: zone
+
+Au démarrage, il faut créer une première zone par activation du bouton "*Nouveau*" (voir :ref:`gui_create_zone`) :
+
+.. 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. On doit alors préciser si une zone est utilisée pour raffiner toutes les mailles dont une arête est contenue dans la zone, ou si la zone est utilisée pour déraffiner les mailles intérieures à la zone. Si aucun choix n'est fait, la zone est ignorée dans cette hypothèse.
+
+.. image:: images/create_hypothese_zo_2.png
+ :align: center
+
+
+Filtrage par les groupes
+""""""""""""""""""""""""
+.. index:: single: groupe
+
+On peut restreindre l'application de l'hypothèse d'adaptation à des groupes. Ainsi les mailles n'appartenant pas à ces groupes ne seront pas modidiées, sauf par contamination ultérieure du raffinement pour assurer la conformité du maillage final.
+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`).
+
+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_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 :
+
+.. image:: images/create_hypothese_ch_5.png
+ :align: center
+
+
+Les options avancées
+""""""""""""""""""""
+Si la case "Options avancées" n'est pas cochée, aucune contrainte supplémentaire n'est définie.
+Si la case est cochée, on définira les options avancées.
+
+Une première série d'options portent sur la finesse maximale de maillage que l'on ne veut pas dépasser. Deux directives sont possibles, séparément ou ensemble. On peut imposer une taille de maille minimale : une maille dont le diamètre est inférieur à cette limite ne sera plus découpée. Par défaut, on propose un diamètre minimal nul, ce qui revient à ne rien imposer. On peut imposer un niveau de raffinement maximal. Par défaut, le maximum est à 99, ce qui équivaut en général à ne rien imposer.
+
+La deuxième série d'options n'a d'intérêt que dans le cas où l'adaptation est piloté par un champ et que ce champ n'est pas défini partout dans le maillage. Cela arrive par exemple quand on construit un champ basé sur une distance dans un plan alors que le domaine est 3D : le champ ne sera pas défini sur les noeuds hors du plan. Pour de tels champs, cette option permet de préciser le comportement que l'on souhaite dans les régions où le champ n'est pas défini. Par défaut, il ne se passe rien : les mailles sont gardées telles quelles. On peut choisir les deux autres variantes : raffiner, toutes les mailles seront a priori coupées, ou déraffiner, toutes les mailles seront candidates au déraffinement.
+
+Le dernier choix porte sur une sortie supplémentaire de l'adaptation. Si la case est cochée, le fichier MED en sortie contiendra un champ contenant le niveau de raffinement de chaque maille. La convention est celle de HOMARD : une maille du maillage initial est de niveau 0, une maille issue d'un raffinement d'une maille initiale porte le niveau 1, etc. Les mailles de transition qui sont produites entre deux mailles de niveau différents, n et n+1, sont affectées du demi-niveau n+0,5. Par défaut, la case n'est pas cochée et le champ n'est pas produit.
+
+.. image:: images/create_hypothese_av_1.png
+ :align: center
+
+.. index:: single: arbre d'étude
+
+L'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.
+
+.. image:: images/create_hypothese_2.png
+ :align: center
+
+
+
+Méthodes python correspondantes
"""""""""""""""""""""""""""""""
-Consulter :ref:`gui_create_boundary`
+Consulter :ref:`tui_create_hypothese`
| .. module:: CreateCase |
| |
| **CreateCase(case_name, mesh_name, mesh_file)** |
-| Retourne une instance de la classe cas |
+| Retourne une instance de la classe ``cas`` après sa |
+| création |
| |
| - ``case_name`` : le nom du cas |
| - ``mesh_name`` : le nom du maillage initial |
| * le répertoire des résultats est ``/tmp`` |
| * l'adaptation est conforme |
+---------------------------------------------------------------+
+| .. module:: GetCase |
+| |
+| **GetCase(case_name)** |
+| Retourne l'instance de la classe ``cas`` connue par |
+| son nom |
+| |
+| - ``case_name`` : le nom du cas |
++---------------------------------------------------------------+
+| .. module:: GetAllCases |
+| |
+| **GetAllCases()** |
+| Retourne la liste des noms de tous les cas créés |
+| |
++---------------------------------------------------------------+
Méthodes de la classe cas
| .. module:: SetDirName |
| |
| **SetDirName(dirname)** |
+| Affecte le répertoire des résutats associé au cas |
| |
| - ``dirname`` : le nom du répertoire des résutats |
+---------------------------------------------------------------+
| .. module:: SetConfType |
| |
| **SetConfType(conf_type)** |
+| Définit le mode de conformité associé au cas |
| |
| - ``conf_type`` : entier précisant le mode de conformité |
| |
| |
| **GetIter0Name()** |
| Retourne le nom de l'itération 0, associée au maillage |
-| initial. Ce nom est mis automatiquement par le module |
+| initial. Ce nom est créé automatiquement par le module |
| HOMARD et doit être utilisé pour enchaîner les adaptations|
+---------------------------------------------------------------+
| .. module:: AddBoundaryGroup |
| |
| **AddBoundaryGroup(boundary, group)** |
+| Ajoute une frontière à la définition du cas |
| |
| - ``boundary`` : nom d'une frontière courbe à suivre |
| |
| .. module:: SetPyram |
| |
| **SetPyram(option)** |
+| Définit le statut des pyramides pour le cas |
| |
| - ``option`` : entier précisant le statut des pyramides |
| éventuellement présentes dans le maillage initial |
| .. module:: CreateHypothesis |
| |
| **CreateHypothesis(hypo_name)** |
-| Retourne une instance de la classe hypothese |
+| Retourne une instance de la classe ``hypothese`` |
| |
| - ``hypo_name`` : le nom de l'hypothèse |
+---------------------------------------------------------------+
| * 1 : raffinement |
| * -1 : déraffinement |
+---------------------------------------------------------------+
+| .. module:: GetHypothesis |
+| |
+| **GetHypothesis(hypo_name)** |
+| Retourne l'instance de la classe ``hypothese`` connue par |
+| son nom |
+| |
+| - ``hypo_name`` : le nom de l'hypothèse |
++---------------------------------------------------------------+
+| .. module:: GetAllHypotheses |
+| |
+| **GetAllHypotheses()** |
+| Retourne la liste des noms de toutes les hypothèses créées|
+| |
++---------------------------------------------------------------+
Méthodes de la classe hypothese
"""""""""""""""""""""""""""""""
| .. module:: SetAdapRefinUnRef |
| |
| **SetAdapRefinUnRef(Adap, Refin, UnRef)** |
+| Affecte le mode d'adaptation associé à l'hypothèse |
| |
| - ``Adap`` : entier précisant le type d'adaptation |
| |
| .. module:: SetField |
| |
| **SetField(field_name)** |
+| Attribue un nom de champ à l'hypothèse |
| |
| - ``field_name`` : le nom du champ |
+---------------------------------------------------------------+
| .. module:: SetUseField |
| |
| **SetUseField(use_field)** |
+| Attribue un mode d'usage du champ à l'hypothèse |
| |
| - ``use_field`` : entier précisant l'usage du champ |
| |
| .. module:: SetRefinThr |
| |
| **SetRefinThr(type_thres, threshold)** |
+| Définit les seuils en raffinement |
| |
| - ``type_thres`` : entier précisant le type de seuil en |
| raffinement |
| .. module:: SetUnRefThr |
| |
| **SetUnRefThr(type_thres, threshold)** |
+| Définit les seuils en déraffinement |
| |
| - ``type_thres`` : entier précisant le type de seuil en |
| déraffinement |
| .. module:: AddComp |
| |
| **AddComp(comp_name)** |
+| Ajoute une composante du champ à considérer |
| |
| - ``comp_name`` : nom d'une composante à prendre en |
| compte |
| .. module:: SetUseComp |
| |
| **SetUseComp(use_comp)** |
+| Définit l'usage des composantes |
| |
| - ``use_comp`` : entier précisant l'usage des composantes |
| |
| .. module:: AddGroup |
| |
| **AddGroup(group_name)** |
+| Ajoute un groupe au filtrage |
| |
| - ``group_name`` : nom du groupe à prendre en compte |
+---------------------------------------------------------------+
| .. module:: SetNivMax |
| |
| **SetNivMax(nivmax)** |
+| Définit le niveau maximal de raffinement |
| |
| - ``nivmax`` : niveau de raffinement à ne pas dépasser |
+---------------------------------------------------------------+
| .. module:: SetDiamMin |
| |
| **SetDiamMin(diammin)** |
+| Définit le diamètre minimal des futures mailles |
| |
| - ``diammin`` : diamètre minimal voulu pour une maille |
+---------------------------------------------------------------+
| **GetDiamMin()** |
| Retourne le diamètre minimal voulu |
+---------------------------------------------------------------+
+| .. module:: SetAdapInit |
+| |
+| **SetAdapInit(option)** |
+| Définit le traitement à appliquer aux mailles où |
+| le champ de pilotage du raffinement n'est pas défini |
+| |
+| - ``option`` : entier précisant le choix retenu |
+| |
+| * 0 : aucun effet (défaut) |
+| * 1 : les mailles sans indicateurs sont raffinées |
+| * -1 : les mailles sans indicateurs sont déraffinées |
++---------------------------------------------------------------+
+| .. module:: GetAdapInit |
+| |
+| **GetAdapInit()** |
+| Retourne le type de traitement à appliquer aux mailles où |
+| le champ de pilotage du raffinement n'est pas défini |
++---------------------------------------------------------------+
+| .. module:: SetLevelOutput |
+| |
+| **SetLevelOutput(option)** |
+| Précise si on veut récupérer le niveau de raffinement des |
+| mailles sous la forme d'un champ |
+| |
+| - ``option`` : entier précisant le choix retenu |
+| |
+| * 0 : aucun effet (défaut) |
+| * 1 : le champ est produit |
++---------------------------------------------------------------+
+| .. module:: GetLevelOutput |
+| |
+| **GetLevelOutput()** |
+| Retourne le choix retenu pour la récupération du niveau |
+| de raffinement |
++---------------------------------------------------------------+
Exemple
| .. module:: CreateIteration |
| |
| **CreateIteration(iter_name, iter_parent_name)** |
-| Retourne une instance de la classe iteration |
+| Retourne une instance de la classe ``iteration`` après |
+| sa création |
| |
| - ``iter_name`` : le nom de l'itération |
| - ``iter_parent_name`` : le nom de l'itération mère |
| .. module:: AssociateIterHypo |
| |
| **AssociateIterHypo(iter_name, hypo_name)** |
+| Associe une hypothèse à une itération |
| |
| - ``iter_name`` : le nom de l'itération |
| - ``hypo_name`` : le nom de l'hypothèse à associer |
+---------------------------------------------------------------+
+| .. module:: GetIteration |
+| |
+| **GetIteration(iter_name)** |
+| Retourne l'instance de la classe ``iteration`` connue par |
+| son nom |
+| |
+| - ``iter_name`` : le nom de l'itération |
++---------------------------------------------------------------+
+| .. module:: GetAllIterations |
+| |
+| **GetAllIterations()** |
+| Retourne la liste des noms de toutes les itérations créées|
+| |
++---------------------------------------------------------------+
Méthodes de la classe iteration
"""""""""""""""""""""""""""""""
| .. module:: SetMeshFile |
| |
| **SetMeshFile(mesh_file)** |
+| Définit le fichier du maillage produit |
| |
| - ``mesh_file`` : le nom du fichier qui contiendra |
| le maillage produit |
| .. module:: SetFieldFile |
| |
| **SetFieldFile(field_file)** |
+| Définit le fichier des champs utiles |
| |
| - ``field_file`` : le nom du fichier contenant le champ |
+---------------------------------------------------------------+
| .. module:: SetTimeStepRank |
| |
| **SetTimeStepRank(TimeStep, Rank)** |
+| Définit les instants pour le champ |
+| |
+| Inutile si aucun instant n'est défini pour le champ |
| |
| - ``TimeStep`` : l'instant où est pris le champ |
| - ``Rank`` : le numéro d'ordre où est pris le champ |
iter_name = "Iteration_1"
iter_1 = homard.CreateIteration(iter_name, case_1.GetIter0Name())
- iter_1.SetField(field_file, 0, 0)
+ iter_1.SetField(field_file)
+ iter_1.SetTimeStepRank( 0, 0)
iter_1.SetMeshName("maill_01")
iter_1.SetMeshFile("/local00/M.01.med")
homard.AssociateIterHypo(iter_name, "HypoField")
iter_name = "Iteration_2"
iter_2 = homard.CreateIteration(iter_name, "Iteration_1")
- iter_2.SetField(field_file, 0, 0)
+ iter_2.SetField(field_file)
+ iter_2.SetTimeStepRank( 1, 1)
iter_2.SetMeshName("maill_02")
iter_2.SetMeshFile("/local00/M.02.med")
homard.AssociateIterHypo(iter_name, "HypoField")
| .. module:: CreateZoneBox |
| |
| **CreateZoneBox(zone_name, Xmin, Xmax, Ymin, Ymax, Zmin, Zmax)** |
+| Retourne une instance de la classe ``zone`` de type parallélépipèdique |
+| après sa création |
| |
| - ``zone_name`` : le nom de la zone basée sur un parallélépipède |
| - ``Xmin``, ``Xmax`` : coordonnées extrêmes selon X |
| .. module:: CreateZoneCylinder |
| |
| **CreateZoneCylinder(zone_name, Xbase, Ybase, Zbase, Xaxe, Yaxe, Zaxe, R, H)** |
+| Retourne une instance de la classe ``zone`` de type cylindrique |
+| après sa création |
| |
| - ``zone_name`` : le nom de la zone basée sur un cylindre |
| - ``Xbase``, ``Ybase``, ``Zbase`` : coordonnées d'un point de base |
| .. module:: CreateZonePipe |
| |
| **CreateZonePipe(zone_name, Xbase, Ybase, Zbase, Xaxe, Yaxe, Zaxe, R, H, Rint)** |
+| Retourne une instance de la classe ``zone`` de type tuyau |
+| après sa création |
| |
| - ``zone_name`` : le nom de la zone basée sur un tuyau |
| - ``Xbase``, ``Ybase``, ``Zbase`` : coordonnées d'un point de base |
| .. module:: CreateZoneSphere |
| |
| **CreateZoneSphere(zone_name, Xcen, Ycen, Zcen, R)** |
+| Retourne une instance de la classe ``zone`` de type sphérique |
+| après sa création |
| |
| - ``zone_name`` : le nom de la zone basée sur une sphère |
| - ``Xcen``, ``Ycen``, ``Zcen`` : coordonnées du centre de la sphère |
| .. module:: CreateZoneBox2D |
| |
| **CreateZoneBox2D(zone_name, Umin, Umax, Vmin, Vmax, Orient)** |
+| Retourne une instance de la classe ``zone`` de type rectangulaire |
+| après sa création |
| |
| - ``zone_name`` : le nom de la zone basée sur un rectangle |
| - ``Umin``, ``Umax`` : coordonnées extrêmes pour la 1ère dimension |
| .. module:: CreateZoneDisk |
| |
| **CreateZoneDisk(zone_name, Ucen, Vcen, R, Orient)** |
+| Retourne une instance de la classe ``zone`` de type disque |
+| après sa création |
| |
| - ``zone_name`` : le nom de la zone basée sur un disque plein |
| - ``Ucen``, ``Vcen`` : coordonnées du centre du disque |
| .. module:: CreateZoneDiskWithHole |
| |
| **CreateZoneDiskWithHole(zone_name, Ucen, Vcen, R, Rint, Orient)** |
+| Retourne une instance de la classe ``zone`` de type disque troué |
+| après sa création |
| |
| - ``zone_name`` : le nom de la zone basée sur un disque troué |
| - ``Ucen``, ``Vcen`` : coordonnées du centre du disque |
maillage est 2D, dans un des plans de coordonnées.
+
+
++---------------------------------------------------------------+
++---------------------------------------------------------------+
+| .. module:: GetZone |
+| |
+| **GetZone(zone_name)** |
+| Retourne l'instance de la classe ``zone`` connue par |
+| son nom |
+| |
+| - ``zone_name`` : le nom de la zone |
++---------------------------------------------------------------+
+| .. module:: GetAllZones |
+| |
+| **GetAllZones()** |
+| Retourne la liste des noms de toutes les zones créées |
+| |
++---------------------------------------------------------------+
+
+
Méthodes de la classe zone
""""""""""""""""""""""""""
void SetAdapInit(in long AdapInit) raises (SALOME::SALOME_Exception);
long GetAdapInit() raises (SALOME::SALOME_Exception);
+ void SetLevelOutput(in long LevelOutput) raises (SALOME::SALOME_Exception);
+ long GetLevelOutput() raises (SALOME::SALOME_Exception);
+
string GetDumpPython() raises (SALOME::SALOME_Exception);
};
os << separator() << hypothesis.GetNivMax();
os << separator() << hypothesis.GetDiamMin();
+ os << separator() << hypothesis.GetAdapInit();
+ os << separator() << hypothesis.GetLevelOutput();
// MESSAGE( ". Fin avec "<<os.str());
return os.str();
if ( !ok ) return false;
hypothesis.SetDiamMin( strtod( chunk.c_str(), 0 ) );
+ chunk = getNextChunk( stream, start, ok );
+ if ( !ok ) return false;
+ hypothesis.SetAdapInit( strtod( chunk.c_str(), 0 ) );
+
+ chunk = getNextChunk( stream, start, ok );
+ if ( !ok ) return false;
+ hypothesis.SetLevelOutput( strtod( chunk.c_str(), 0 ) );
+
return true;
}
}
if ( _TypeRaff == 1 )
{
- aScript << "\t" << _NomHypo << ".SetRefinThr(" << _TypeThR;
- aScript << ", " << _ThreshR << ")\n";
+ aScript << "\t" << _NomHypo << ".SetRefinThr(" << _TypeThR << ", " << _ThreshR << ")\n";
}
if ( _TypeDera == 1 )
{
- aScript << "\t" << _NomHypo << ".SetUnRefThr(" << _TypeThC;
- aScript << ", " << _ThreshC << ")\n";
+ aScript << "\t" << _NomHypo << ".SetUnRefThr(" << _TypeThC << ", " << _ThreshC << ")\n";
}
}
}
if ( _NivMax > 0 )
{
- aScript << "\tNivMax = " << _NivMax << "\n";
- aScript << "\t" <<_NomHypo << ".SetNivMax(NivMax)\n";
+ aScript << "\t" <<_NomHypo << ".SetNivMax(" << _NivMax << ")\n";
}
if ( _DiamMin > 0 )
{
- aScript << "\tDiamMin = " << _DiamMin << "\n";
- aScript << "\t" <<_NomHypo << ".SetDiamMin(DiamMin)\n";
+ aScript << "\t" <<_NomHypo << ".SetDiamMin(" << _DiamMin << ")\n";
}
if ( _AdapInit != 0 )
{
- aScript << "\tAdapInit = " << _AdapInit << "\n";
- aScript << "\t" <<_NomHypo << ".SetAdapInit(AdapInit)\n";
+ aScript << "\t" <<_NomHypo << ".SetAdapInit(" << _AdapInit << ")\n";
+ }
+ if ( _LevelOutput != 0 )
+ {
+ aScript << "\t" <<_NomHypo << ".SetLevelOutput(" << _LevelOutput << ")\n";
}
return aScript.str();
{
return _DiamMin;
}
+//=============================================================================
+void HOMARD_Hypothesis::SetLevelOutput( int LevelOutput )
+//=============================================================================
+{
+ _LevelOutput = LevelOutput;
+}
+//=============================================================================
+const int HOMARD_Hypothesis::GetLevelOutput() const
+//=============================================================================
+{
+ return _LevelOutput;
+}
const double GetDiamMin() const;
void SetAdapInit( int AdapInit );
const int GetAdapInit() const;
+ void SetLevelOutput( int LevelOutput );
+ const int GetLevelOutput() const;
private:
int _NivMax;
double _DiamMin;
int _AdapInit;
+ int _LevelOutput;
std::list<std::string> _ListIter;
std::list<std::string> _ListZone;
_NomIter( "" ), _Etat( false ),
_NumIter( -1 ),
_NomMesh( "" ), _MeshFile( "" ),
- _FieldFile( "" ), _TimeStep( 0 ), _Rank( 0 ),
+ _FieldFile( "" ), _TimeStep( -1 ), _Rank( -1 ),
_MessFile( "" ),
_IterParent( "" ),
_NomHypo( "" ), _NomCas( "" ), _NomDir( "" )
aScript << "\t" << _NomIter << ".SetMeshName(\"" << _NomMesh << "\")\n" ;
// Le fichier du maillage produit
aScript << "\t" << _NomIter << ".SetMeshFile(\"" << _MeshFile << "\")\n";
- if (_FieldFile != "") {
+// Le fichier des champs, avec l'instant eventuel
+ if ( _FieldFile != "" ) {
aScript << "\t" << _NomIter << ".SetFieldFile(\"" << _FieldFile << "\")\n";
- aScript << "\tTimeStep = " << _TimeStep << "\n";
- aScript << "\tRank = " << _Rank << "\n";
- aScript << "\t" << _NomIter << ".SetTimeStepRank( TimeStep, Rank )\n";
+ if ( ( _TimeStep != -1 ) and ( _Rank != -1 ) ) {
+ aScript << "\t" << _NomIter << ".SetTimeStepRank( " << _TimeStep << ", " << _Rank << " )\n";
+ }
}
aScript << "\thomard.AssociateIterHypo(\"" <<_NomIter << "\", \"" << _NomHypo << "\")\n";
if (_Etat == true)
{
- aScript << "\tcodret = homard.Compute(\"" <<_NomIter << "\", 1)\n";
+ aScript << "\tcodret = " <<_NomIter << ".Compute(1)\n";
}
else
{
- aScript << "\t#codret = homard.Compute(\"" <<_NomIter << "\", 1)\n";
+ aScript << "\t#codret = " <<_NomIter << ".Compute(1)\n";
}
return aScript.str();
}
}
////=============================================================================
-void HomardDriver::TexteAdvanced( int Pyram, int NivMax, double DiamMin, int AdapInit )
+void HomardDriver::TexteAdvanced( int Pyram, int NivMax, double DiamMin, int AdapInit, int LevelOutput )
{
- MESSAGE("TexteAdvanced, Pyram ="<<Pyram<<", NivMax ="<<NivMax<<", DiamMin ="<<DiamMin<<", AdapInit ="<<AdapInit);
+ MESSAGE("TexteAdvanced, Pyram ="<<Pyram<<", NivMax ="<<NivMax<<", DiamMin ="<<DiamMin<<", AdapInit ="<<AdapInit<<", LevelOutput ="<<LevelOutput);
std::string saux ;
if ( Pyram > 0 )
_Texte += "AdapInit " + saux2 + "\n" ;
}
}
+ if ( LevelOutput != 0 )
+ {
+ _Texte += "# Sortie des niveaux de raffinement\n" ;
+ _Texte += "NCNiveau NIVEAU\n" ;
+ }
}
////=============================================================================
void TexteFieldInterp( int TypeFieldInterp, const std::string FieldFile, const std::string MeshFile,
int TimeStep, int Rank );
void TexteFieldInterpName( int NumeChamp, const std::string FieldName);
- void TexteAdvanced( int Pyram, int NivMax, double DiamMin, int AdapInit);
+ void TexteAdvanced( int Pyram, int NivMax, double DiamMin, int AdapInit, int LevelOutput);
void CloseFichier();
//
int ExecuteHomard();
/********************************************************************************
** Form generated from reading UI file 'CreateHypothesis.ui'
**
-** Created: Wed Apr 11 11:35:26 2012
+** Created: Wed Nov 14 11:07:43 2012
** by: Qt User Interface Compiler version 4.6.3
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
QRadioButton *RBUniforme;
QRadioButton *RBChamp;
QRadioButton *RBZone;
+ QCheckBox *CBGroupe;
QGroupBox *GBUniform;
QGridLayout *gridLayout;
QRadioButton *RBUniDera;
QRadioButton *RBFieldAll;
QRadioButton *RBFieldChosen;
QTableWidget *TWField;
- QCheckBox *CBGroupe;
QCheckBox *CBAdvanced;
QGroupBox *GBAdvancedOptions;
QGridLayout *gridLayout_1;
QRadioButton *RBAIN;
QRadioButton *RBAIR;
QRadioButton *RBAID;
+ QCheckBox *CBLevelOutput;
QGroupBox *GBButtons;
QGridLayout *gridLayout7;
QPushButton *buttonOk;
{
if (CreateHypothesis->objectName().isEmpty())
CreateHypothesis->setObjectName(QString::fromUtf8("CreateHypothesis"));
- CreateHypothesis->resize(770, 1428);
+ CreateHypothesis->resize(770, 1453);
QSizePolicy sizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0);
gridLayout_3->addWidget(GBTypeAdaptation, 1, 0, 1, 2);
+ CBGroupe = new QCheckBox(CreateHypothesis);
+ CBGroupe->setObjectName(QString::fromUtf8("CBGroupe"));
+
+ gridLayout_3->addWidget(CBGroupe, 2, 0, 1, 2);
+
GBUniform = new QGroupBox(CreateHypothesis);
GBUniform->setObjectName(QString::fromUtf8("GBUniform"));
gridLayout = new QGridLayout(GBUniform);
gridLayout->addWidget(RBUniRaff, 0, 0, 1, 1);
- gridLayout_3->addWidget(GBUniform, 2, 0, 1, 2);
+ gridLayout_3->addWidget(GBUniform, 3, 0, 1, 2);
GBFieldFile = new QGroupBox(CreateHypothesis);
GBFieldFile->setObjectName(QString::fromUtf8("GBFieldFile"));
gridLayout1->addWidget(LEFieldFile, 0, 1, 1, 1);
- gridLayout_3->addWidget(GBFieldFile, 3, 0, 1, 2);
+ gridLayout_3->addWidget(GBFieldFile, 4, 0, 1, 2);
GBFieldManagement = new QGroupBox(CreateHypothesis);
GBFieldManagement->setObjectName(QString::fromUtf8("GBFieldManagement"));
gridLayout2->addLayout(hboxLayout4, 2, 0, 1, 1);
- gridLayout_3->addWidget(GBFieldManagement, 4, 0, 1, 2);
+ gridLayout_3->addWidget(GBFieldManagement, 5, 0, 1, 2);
GBAreaManagement = new QGroupBox(CreateHypothesis);
GBAreaManagement->setObjectName(QString::fromUtf8("GBAreaManagement"));
gridLayout_4->addLayout(vboxLayout1, 0, 2, 1, 1);
- gridLayout_3->addWidget(GBAreaManagement, 5, 0, 1, 2);
+ gridLayout_3->addWidget(GBAreaManagement, 6, 0, 1, 2);
GBField = new QGroupBox(CreateHypothesis);
GBField->setObjectName(QString::fromUtf8("GBField"));
gridLayout5->addWidget(TWField, 1, 0, 1, 1);
- gridLayout_3->addWidget(GBField, 6, 0, 1, 2);
-
- CBGroupe = new QCheckBox(CreateHypothesis);
- CBGroupe->setObjectName(QString::fromUtf8("CBGroupe"));
-
- gridLayout_3->addWidget(CBGroupe, 7, 0, 1, 2);
+ gridLayout_3->addWidget(GBField, 7, 0, 1, 2);
CBAdvanced = new QCheckBox(CreateHypothesis);
CBAdvanced->setObjectName(QString::fromUtf8("CBAdvanced"));
gridLayout_1->addWidget(GBAdapInit, 2, 0, 1, 2);
+ CBLevelOutput = new QCheckBox(GBAdvancedOptions);
+ CBLevelOutput->setObjectName(QString::fromUtf8("CBLevelOutput"));
+
+ gridLayout_1->addWidget(CBLevelOutput, 3, 0, 1, 1);
+
gridLayout_3->addWidget(GBAdvancedOptions, 9, 0, 1, 2);
RBUniforme->setText(QApplication::translate("CreateHypothesis", "Uniform", 0, QApplication::UnicodeUTF8));
RBChamp->setText(QApplication::translate("CreateHypothesis", "Driven by a field", 0, QApplication::UnicodeUTF8));
RBZone->setText(QApplication::translate("CreateHypothesis", "With geometrical zones", 0, QApplication::UnicodeUTF8));
+ CBGroupe->setText(QApplication::translate("CreateHypothesis", "Filtering with groups", 0, QApplication::UnicodeUTF8));
GBUniform->setTitle(QApplication::translate("CreateHypothesis", "Uniform adaptation", 0, QApplication::UnicodeUTF8));
RBUniDera->setText(QApplication::translate("CreateHypothesis", "Coarsening", 0, QApplication::UnicodeUTF8));
RBUniRaff->setText(QApplication::translate("CreateHypothesis", "Refinement", 0, QApplication::UnicodeUTF8));
___qtablewidgetitem5->setText(QApplication::translate("CreateHypothesis", "Selection", 0, QApplication::UnicodeUTF8));
QTableWidgetItem *___qtablewidgetitem6 = TWField->horizontalHeaderItem(1);
___qtablewidgetitem6->setText(QApplication::translate("CreateHypothesis", "Field Name", 0, QApplication::UnicodeUTF8));
- CBGroupe->setText(QApplication::translate("CreateHypothesis", "Filtering with groups", 0, QApplication::UnicodeUTF8));
CBAdvanced->setText(QApplication::translate("CreateHypothesis", "Advanced options", 0, QApplication::UnicodeUTF8));
GBAdvancedOptions->setTitle(QApplication::translate("CreateHypothesis", "Advanced options", 0, QApplication::UnicodeUTF8));
TLMinimalDiameter->setText(QApplication::translate("CreateHypothesis", "Minimal diameter", 0, QApplication::UnicodeUTF8));
RBAIN->setText(QApplication::translate("CreateHypothesis", "Nothing", 0, QApplication::UnicodeUTF8));
RBAIR->setText(QApplication::translate("CreateHypothesis", "Refinement", 0, QApplication::UnicodeUTF8));
RBAID->setText(QApplication::translate("CreateHypothesis", "Coarsening", 0, QApplication::UnicodeUTF8));
+ CBLevelOutput->setText(QApplication::translate("CreateHypothesis", "Output of the level of refinement", 0, QApplication::UnicodeUTF8));
GBButtons->setTitle(QString());
buttonOk->setText(QApplication::translate("CreateHypothesis", "OK", 0, QApplication::UnicodeUTF8));
buttonApply->setText(QApplication::translate("CreateHypothesis", "Apply", 0, QApplication::UnicodeUTF8));
<x>0</x>
<y>0</y>
<width>770</width>
- <height>1428</height>
+ <height>1453</height>
</rect>
</property>
<property name="sizePolicy">
</widget>
</item>
<item row="2" column="0" colspan="2">
+ <widget class="QCheckBox" name="CBGroupe">
+ <property name="text">
+ <string>Filtering with groups</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0" colspan="2">
<widget class="QGroupBox" name="GBUniform">
<property name="title">
<string>Uniform adaptation</string>
</layout>
</widget>
</item>
- <item row="3" column="0" colspan="2">
+ <item row="4" column="0" colspan="2">
<widget class="QGroupBox" name="GBFieldFile">
<property name="title">
<string/>
</layout>
</widget>
</item>
- <item row="4" column="0" colspan="2">
+ <item row="5" column="0" colspan="2">
<widget class="QGroupBox" name="GBFieldManagement">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
</layout>
</widget>
</item>
- <item row="5" column="0" colspan="2">
+ <item row="6" column="0" colspan="2">
<widget class="QGroupBox" name="GBAreaManagement">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
</layout>
</widget>
</item>
- <item row="6" column="0" colspan="2">
+ <item row="7" column="0" colspan="2">
<widget class="QGroupBox" name="GBField">
<property name="title">
<string>Field Interpolation</string>
</layout>
</widget>
</item>
- <item row="7" column="0" colspan="2">
- <widget class="QCheckBox" name="CBGroupe">
- <property name="text">
- <string>Filtering with groups</string>
- </property>
- </widget>
- </item>
<item row="8" column="0" colspan="2">
<widget class="QCheckBox" name="CBAdvanced">
<property name="text">
</layout>
</widget>
</item>
+ <item row="3" column="0">
+ <widget class="QCheckBox" name="CBLevelOutput">
+ <property name="text">
+ <string>Output of the level of refinement</string>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</item>
/********************************************************************************
** Form generated from reading UI file 'CreateIteration.ui'
**
-** Created: Wed Apr 11 11:35:39 2012
+** Created: Wed Nov 14 11:09:41 2012
** by: Qt User Interface Compiler version 4.6.3
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
SpinBox_Rank = new QSpinBox(GBField);
SpinBox_Rank->setObjectName(QString::fromUtf8("SpinBox_Rank"));
- SpinBox_Rank->setMaximum(1010000);
SpinBox_Rank->setMinimum(-1);
- SpinBox_Rank->setValue(1);
+ SpinBox_Rank->setMaximum(1010000);
+ SpinBox_Rank->setValue(-1);
gridLayout1->addWidget(SpinBox_Rank, 4, 5, 1, 1);
SpinBox_TimeStep = new QSpinBox(GBField);
SpinBox_TimeStep->setObjectName(QString::fromUtf8("SpinBox_TimeStep"));
- SpinBox_TimeStep->setMaximum(100000);
SpinBox_TimeStep->setMinimum(-2);
+ SpinBox_TimeStep->setMaximum(100000);
SpinBox_TimeStep->setValue(-1);
gridLayout1->addWidget(SpinBox_TimeStep, 4, 1, 1, 1);
-<ui version="4.0" >
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
<class>CreateIteration</class>
- <widget class="QWidget" name="CreateIteration" >
- <property name="geometry" >
+ <widget class="QWidget" name="CreateIteration">
+ <property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<height>598</height>
</rect>
</property>
- <property name="windowTitle" >
+ <property name="windowTitle">
<string>Create an iteration</string>
</property>
- <layout class="QGridLayout" >
- <property name="margin" >
+ <layout class="QGridLayout">
+ <property name="margin">
<number>9</number>
</property>
- <property name="spacing" >
+ <property name="spacing">
<number>6</number>
</property>
- <item row="6" column="0" colspan="4" >
- <widget class="QGroupBox" name="GBField" >
- <property name="title" >
+ <item row="6" column="0" colspan="4">
+ <widget class="QGroupBox" name="GBField">
+ <property name="title">
<string>Field information</string>
</property>
- <layout class="QGridLayout" >
- <property name="margin" >
+ <layout class="QGridLayout">
+ <property name="margin">
<number>9</number>
</property>
- <property name="spacing" >
+ <property name="spacing">
<number>6</number>
</property>
- <item row="0" column="2" colspan="5" >
- <widget class="QLineEdit" name="LEFieldFile" >
- <property name="minimumSize" >
+ <item row="0" column="2" colspan="5">
+ <widget class="QLineEdit" name="LEFieldFile">
+ <property name="minimumSize">
<size>
<width>282</width>
<height>21</height>
</property>
</widget>
</item>
- <item row="1" column="3" colspan="4" >
+ <item row="1" column="3" colspan="4">
<spacer>
- <property name="orientation" >
+ <property name="orientation">
<enum>Qt::Vertical</enum>
</property>
- <property name="sizeHint" >
+ <property name="sizeHint" stdset="0">
<size>
<width>138</width>
<height>18</height>
</property>
</spacer>
</item>
- <item row="2" column="6" >
- <widget class="QRadioButton" name="RBChosen" >
- <property name="text" >
+ <item row="2" column="6">
+ <widget class="QRadioButton" name="RBChosen">
+ <property name="text">
<string>Chosen time step</string>
</property>
</widget>
</item>
- <item row="4" column="6" >
+ <item row="4" column="6">
<spacer>
- <property name="orientation" >
+ <property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
- <property name="sizeType" >
+ <property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
- <property name="sizeHint" >
+ <property name="sizeHint" stdset="0">
<size>
<width>255</width>
<height>13</height>
</property>
</spacer>
</item>
- <item row="4" column="5" >
- <widget class="QSpinBox" name="SpinBox_Rank" >
- <property name="maximum" >
+ <item row="4" column="5">
+ <widget class="QSpinBox" name="SpinBox_Rank">
+ <property name="minimum">
+ <number>-1</number>
+ </property>
+ <property name="maximum">
<number>1010000</number>
</property>
- <property name="minimum" >
+ <property name="value">
<number>-1</number>
</property>
- <property name="value" >
- <number>1</number>
- </property>
</widget>
</item>
- <item row="4" column="4" >
- <widget class="QLabel" name="Rank" >
- <property name="text" >
+ <item row="4" column="4">
+ <widget class="QLabel" name="Rank">
+ <property name="text">
<string>Rank</string>
</property>
</widget>
</item>
- <item row="4" column="2" colspan="2" >
+ <item row="4" column="2" colspan="2">
<spacer>
- <property name="orientation" >
+ <property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
- <property name="sizeType" >
+ <property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
- <property name="sizeHint" >
+ <property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>13</height>
</property>
</spacer>
</item>
- <item row="4" column="1" >
- <widget class="QSpinBox" name="SpinBox_TimeStep" >
- <property name="maximum" >
- <number>100000</number>
- </property>
- <property name="minimum" >
+ <item row="4" column="1">
+ <widget class="QSpinBox" name="SpinBox_TimeStep">
+ <property name="minimum">
<number>-2</number>
</property>
- <property name="value" >
+ <property name="maximum">
+ <number>100000</number>
+ </property>
+ <property name="value">
<number>-1</number>
</property>
</widget>
</item>
- <item row="4" column="0" >
- <widget class="QLabel" name="TimeStep" >
- <property name="text" >
+ <item row="4" column="0">
+ <widget class="QLabel" name="TimeStep">
+ <property name="text">
<string>Time step</string>
</property>
</widget>
</item>
- <item row="3" column="0" colspan="4" >
+ <item row="3" column="0" colspan="4">
<spacer>
- <property name="orientation" >
+ <property name="orientation">
<enum>Qt::Vertical</enum>
</property>
- <property name="sizeHint" >
+ <property name="sizeHint" stdset="0">
<size>
<width>138</width>
<height>28</height>
</property>
</spacer>
</item>
- <item row="2" column="3" colspan="3" >
- <widget class="QRadioButton" name="RBLast" >
- <property name="text" >
+ <item row="2" column="3" colspan="3">
+ <widget class="QRadioButton" name="RBLast">
+ <property name="text">
<string>Last time step</string>
</property>
</widget>
</item>
- <item row="2" column="0" colspan="3" >
- <widget class="QRadioButton" name="RBNo" >
- <property name="text" >
+ <item row="2" column="0" colspan="3">
+ <widget class="QRadioButton" name="RBNo">
+ <property name="text">
<string>No time step</string>
</property>
- <property name="checkable" >
+ <property name="checkable">
<bool>true</bool>
</property>
- <property name="checked" >
+ <property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
- <item row="0" column="1" >
- <widget class="QPushButton" name="PushFieldFile" >
- <property name="text" >
+ <item row="0" column="1">
+ <widget class="QPushButton" name="PushFieldFile">
+ <property name="text">
<string/>
</property>
</widget>
</item>
- <item row="0" column="0" >
- <widget class="QLabel" name="FieldFile" >
- <property name="text" >
+ <item row="0" column="0">
+ <widget class="QLabel" name="FieldFile">
+ <property name="text">
<string>Field file</string>
</property>
</widget>
</layout>
</widget>
</item>
- <item row="0" column="0" colspan="2" >
- <widget class="QLabel" name="Iteration_Name" >
- <property name="text" >
+ <item row="0" column="0" colspan="2">
+ <widget class="QLabel" name="Iteration_Name">
+ <property name="text">
<string>Iteration Name</string>
</property>
</widget>
</item>
- <item row="0" column="2" colspan="2" >
- <widget class="QLineEdit" name="LEIterationName" >
- <property name="minimumSize" >
+ <item row="0" column="2" colspan="2">
+ <widget class="QLineEdit" name="LEIterationName">
+ <property name="minimumSize">
<size>
<width>290</width>
<height>21</height>
</size>
</property>
- <property name="maxLength" >
+ <property name="maxLength">
<number>200</number>
</property>
</widget>
</item>
- <item row="1" column="0" >
- <widget class="QLabel" name="Iter_Parent" >
- <property name="text" >
+ <item row="1" column="0">
+ <widget class="QLabel" name="Iter_Parent">
+ <property name="text">
<string>Previous iteration</string>
</property>
</widget>
</item>
- <item row="1" column="1" >
+ <item row="1" column="1">
<spacer>
- <property name="orientation" >
+ <property name="orientation">
<enum>Qt::Vertical</enum>
</property>
- <property name="sizeHint" >
+ <property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>24</height>
</property>
</spacer>
</item>
- <item row="1" column="2" >
- <widget class="QPushButton" name="PBIterParent" >
- <property name="enabled" >
+ <item row="1" column="2">
+ <widget class="QPushButton" name="PBIterParent">
+ <property name="enabled">
<bool>true</bool>
</property>
- <property name="maximumSize" >
+ <property name="maximumSize">
<size>
<width>50</width>
<height>27</height>
</size>
</property>
- <property name="text" >
+ <property name="text">
<string/>
</property>
</widget>
</item>
- <item row="1" column="3" >
- <widget class="QLineEdit" name="LEIterationParentName" >
- <property name="minimumSize" >
+ <item row="1" column="3">
+ <widget class="QLineEdit" name="LEIterationParentName">
+ <property name="minimumSize">
<size>
<width>0</width>
<height>21</height>
</size>
</property>
- <property name="maxLength" >
+ <property name="maxLength">
<number>200</number>
</property>
- <property name="readOnly" >
+ <property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
- <item row="2" column="0" >
- <widget class="QLabel" name="Mesh_n" >
- <property name="text" >
+ <item row="2" column="0">
+ <widget class="QLabel" name="Mesh_n">
+ <property name="text">
<string>Mesh n</string>
</property>
</widget>
</item>
- <item row="2" column="1" >
+ <item row="2" column="1">
<spacer>
- <property name="orientation" >
+ <property name="orientation">
<enum>Qt::Vertical</enum>
</property>
- <property name="sizeHint" >
+ <property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>21</height>
</property>
</spacer>
</item>
- <item row="2" column="2" colspan="2" >
- <widget class="QLineEdit" name="LEMeshName_n" >
- <property name="minimumSize" >
+ <item row="2" column="2" colspan="2">
+ <widget class="QLineEdit" name="LEMeshName_n">
+ <property name="minimumSize">
<size>
<width>290</width>
<height>21</height>
</size>
</property>
- <property name="maxLength" >
+ <property name="maxLength">
<number>32</number>
</property>
- <property name="readOnly" >
+ <property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
- <item row="3" column="1" >
+ <item row="3" column="1">
<spacer>
- <property name="orientation" >
+ <property name="orientation">
<enum>Qt::Vertical</enum>
</property>
- <property name="sizeHint" >
+ <property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>22</height>
</property>
</spacer>
</item>
- <item row="4" column="0" colspan="2" >
- <widget class="QLabel" name="Mesh_np1" >
- <property name="text" >
+ <item row="4" column="0" colspan="2">
+ <widget class="QLabel" name="Mesh_np1">
+ <property name="text">
<string>Mesh n+1</string>
</property>
</widget>
</item>
- <item row="4" column="2" colspan="2" >
- <widget class="QLineEdit" name="LEMeshName_np1" >
- <property name="minimumSize" >
+ <item row="4" column="2" colspan="2">
+ <widget class="QLineEdit" name="LEMeshName_np1">
+ <property name="minimumSize">
<size>
<width>290</width>
<height>21</height>
</size>
</property>
- <property name="maxLength" >
+ <property name="maxLength">
<number>32</number>
</property>
</widget>
</item>
- <item row="5" column="1" >
+ <item row="5" column="1">
<spacer>
- <property name="orientation" >
+ <property name="orientation">
<enum>Qt::Vertical</enum>
</property>
- <property name="sizeHint" >
+ <property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>21</height>
</property>
</spacer>
</item>
- <item row="7" column="1" >
+ <item row="7" column="1">
<spacer>
- <property name="orientation" >
+ <property name="orientation">
<enum>Qt::Vertical</enum>
</property>
- <property name="sizeHint" >
+ <property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>22</height>
</property>
</spacer>
</item>
- <item row="8" column="0" colspan="4" >
- <widget class="QGroupBox" name="Hypothese" >
- <property name="title" >
+ <item row="8" column="0" colspan="4">
+ <widget class="QGroupBox" name="Hypothese">
+ <property name="title">
<string>Hypothesis</string>
</property>
- <layout class="QGridLayout" >
- <property name="margin" >
+ <layout class="QGridLayout">
+ <property name="margin">
<number>9</number>
</property>
- <property name="spacing" >
+ <property name="spacing">
<number>6</number>
</property>
- <item row="0" column="0" >
- <widget class="QComboBox" name="CBHypothese" >
- <property name="currentIndex" >
+ <item row="0" column="0">
+ <widget class="QComboBox" name="CBHypothese">
+ <property name="currentIndex">
<number>-1</number>
</property>
- <property name="sizeAdjustPolicy" >
+ <property name="sizeAdjustPolicy">
<enum>QComboBox::AdjustToContents</enum>
</property>
</widget>
</item>
- <item row="0" column="1" >
+ <item row="0" column="1">
<spacer>
- <property name="orientation" >
+ <property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
- <property name="sizeType" >
+ <property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
- <property name="sizeHint" >
+ <property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>13</height>
</property>
</spacer>
</item>
- <item row="0" column="2" >
- <widget class="QPushButton" name="PBHypoEdit" >
- <property name="text" >
+ <item row="0" column="2">
+ <widget class="QPushButton" name="PBHypoEdit">
+ <property name="text">
<string>Edit</string>
</property>
</widget>
</item>
- <item row="0" column="3" >
- <widget class="QPushButton" name="PBHypoNew" >
- <property name="text" >
+ <item row="0" column="3">
+ <widget class="QPushButton" name="PBHypoNew">
+ <property name="text">
<string>New</string>
</property>
</widget>
</layout>
</widget>
</item>
- <item row="9" column="0" >
+ <item row="9" column="0">
<spacer>
- <property name="orientation" >
+ <property name="orientation">
<enum>Qt::Vertical</enum>
</property>
- <property name="sizeHint" >
+ <property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>21</height>
</property>
</spacer>
</item>
- <item row="10" column="0" colspan="4" >
- <widget class="QGroupBox" name="GroupButtons" >
- <property name="title" >
+ <item row="10" column="0" colspan="4">
+ <widget class="QGroupBox" name="GroupButtons">
+ <property name="title">
<string/>
</property>
- <layout class="QGridLayout" >
- <property name="margin" >
+ <layout class="QGridLayout">
+ <property name="margin">
<number>9</number>
</property>
- <property name="spacing" >
+ <property name="spacing">
<number>6</number>
</property>
- <item row="0" column="0" >
- <widget class="QPushButton" name="buttonOk" >
- <property name="text" >
+ <item row="0" column="0">
+ <widget class="QPushButton" name="buttonOk">
+ <property name="text">
<string>OK</string>
</property>
- <property name="autoDefault" >
+ <property name="autoDefault">
<bool>false</bool>
</property>
- <property name="default" >
+ <property name="default">
<bool>false</bool>
</property>
</widget>
</item>
- <item row="0" column="1" >
- <widget class="QPushButton" name="buttonApply" >
- <property name="text" >
+ <item row="0" column="1">
+ <widget class="QPushButton" name="buttonApply">
+ <property name="text">
<string>Apply</string>
</property>
</widget>
</item>
- <item row="0" column="2" >
- <widget class="QPushButton" name="buttonCancel" >
- <property name="text" >
+ <item row="0" column="2">
+ <widget class="QPushButton" name="buttonCancel">
+ <property name="text">
<string>Cancel</string>
</property>
</widget>
</item>
- <item row="0" column="3" >
- <widget class="QPushButton" name="buttonHelp" >
- <property name="text" >
+ <item row="0" column="3">
+ <widget class="QPushButton" name="buttonHelp">
+ <property name="text">
<string>Help</string>
</property>
</widget>
<source>Maximal level</source>
<translation>Niveau maximal</translation>
</message>
+ <message>
+ <source>Output of the level of refinement</source>
+ <translation>Sortie du niveau de raffinement</translation>
+ </message>
<message>
<source>Create an iteration</source>
<translation>Création d'une itération</translation>
../../idl/libSalomeIDLHOMARD.la \
../HOMARD_I/libHOMARDEngine.la \
$(KERNEL_LDFLAGS) \
- $(MED3_LIBS) \
+ $(MED3_LIBS_C_ONLY) \
-lSalomeLifeCycleCORBA \
$(GUI_LDFLAGS) \
-lSalomeApp \
_UsField(0), _UsCmpI(0), _TypeFieldInterp(0),
_NivMax(-1),
_DiamMin(-1.),
- _AdapInit(0)
+ _AdapInit(0),
+ _LevelOutput(0)
+
{
MESSAGE("Constructeur") ;
_myHomardGen=HOMARD::HOMARD_Gen::_duplicate(myHomardGen);
}
SetFieldNo();
GBAdvancedOptions->setVisible(0);
+ CBLevelOutput->setChecked(false);
}
// ------------------------------------------------------------------------
_aHypothesis->SetDiamMin(_DiamMin);
// Enregistrement de l'intialisation de l'adaptation
_aHypothesis->SetAdapInit(_AdapInit);
+// Sortie des niveaux de raffinement
+ if (CBLevelOutput->isChecked()) { _LevelOutput = 1 ; }
+ _aHypothesis->SetLevelOutput(_LevelOutput);
}
HOMARD_UTILS::updateObjBrowser();
_NivMax = -1 ;
_DiamMin = -1. ;
_AdapInit = 0 ;
+ CBLevelOutput->setChecked(false);
+ _LevelOutput = 0 ;
}
adjustSize();
}
int _NivMax;
double _DiamMin;
int _AdapInit;
+ int _LevelOutput;
HOMARD::HOMARD_Gen_var _myHomardGen;
HOMARD::HOMARD_Hypothesis_var _aHypothesis;
// ------------------------------------------------------------------------
void MonCreateIteration::SetTSNo()
// ------------------------------------------------------------------------
-// Par defaut, on declare que le pas de temps vaut -1
+// Si on ne tient pas compte du pas de temps, on declare que le pas de temps
+// vaut -1, valeur par defaut de med
{
Rank->setVisible(0);
SpinBox_Rank->setVisible(0);
+ SpinBox_Rank->setValue(-1);
+
TimeStep->setVisible(0);
SpinBox_TimeStep->setVisible(0);
SpinBox_TimeStep->setValue(-1);
+
adjustSize();
}
// ------------------------------------------------------------------------
void MonCreateIteration::SetTSLast()
// ------------------------------------------------------------------------
-// Par defaut, on declare que le pas de temps vaut -2
+// Si on choisit le dernier instant, on declare que le pas de temps vaut -2
{
Rank->setVisible(0);
SpinBox_Rank->setVisible(0);
+ SpinBox_Rank->setValue(-2);
+
TimeStep->setVisible(0);
SpinBox_TimeStep->setVisible(0);
SpinBox_TimeStep->setValue(-2);
+
adjustSize();
}
// ------------------------------------------------------------------------
void MonCreateIteration::SetTSChosen()
// ------------------------------------------------------------------------
+// Si choisit un instant, on prepositionne a 0
{
Rank->setVisible(1);
SpinBox_Rank->setVisible(1);
+ SpinBox_Rank->setValue(0);
+
TimeStep->setVisible(1);
SpinBox_TimeStep->setVisible(1);
- SpinBox_TimeStep->setValue(1);
+ SpinBox_TimeStep->setValue(0);
+
adjustSize();
}
int NivMax = _aHypothesis->GetNivMax();
double DiamMin = _aHypothesis->GetDiamMin();
int AdapInit = _aHypothesis->GetAdapInit();
- if ( NivMax > 0 or DiamMin > 0 or AdapInit != 0 )
+ int LevelOutput = _aHypothesis->GetLevelOutput();
+ if ( NivMax > 0 or DiamMin > 0 or AdapInit != 0 or LevelOutput != 0 )
{ GBAdvancedOptions->setVisible(1);
if ( NivMax > 0 )
{ spinBoxNivMax->setValue(NivMax);
else
{ GBAdapInit->setVisible(0) ;
}
+ if ( LevelOutput != 0 )
+ {
+ CBLevelOutput->setChecked(true);
+ CBLevelOutput->setEnabled(false);
+ }
+ else
+ { CBLevelOutput->setVisible(0) ;
+ }
}
else
{ GBAdvancedOptions->setVisible(0); }
herite de MonCreateIteration
*/
MonCreateIteration(parent, modal, myHomardGen, IterParentName),
- _rank(0), _step(0), _IterationName(""), _FieldFile(""),_aTypeAdap()
+ _rank(-1), _step(-1), _IterationName(""), _FieldFile(""),_aTypeAdap()
{
MESSAGE("Debut de MonEditIteration" << IterName.toStdString().c_str());
setWindowTitle(QObject::tr("HOM_ITER_EDIT_WINDOW_TITLE"));
#include "HOMARD_DriverTools.hxx"
#include "HomardMedCommun.h"
+#include "HOMARD_version.h"
+
#include "utilities.h"
#include "Utils_SINGLETON.hxx"
#include "Utils_CorbaException.hxx"
myHypothesis->SetNivMax(-1);
myHypothesis->SetDiamMin(-1.0);
myHypothesis->SetAdapInit(0);
+ myHypothesis->SetLevelOutput(0);
return HOMARD::HOMARD_Hypothesis::_duplicate(myHypothesis);
}
MESSAGE ( ". DiamMin = " << DiamMin );
int AdapInit = myHypo->GetAdapInit();
MESSAGE ( ". AdapInit = " << AdapInit );
- myDriver->TexteAdvanced(Pyram, NivMax, DiamMin, AdapInit);
+ int LevelOutput = myHypo->GetLevelOutput();
+ MESSAGE ( ". LevelOutput = " << LevelOutput );
+ myDriver->TexteAdvanced(Pyram, NivMax, DiamMin, AdapInit, LevelOutput);
// F. Ecriture du texte dans le fichier
if (codret == 0)
return aStreamFile._retn();
}
+
+// Version information
+char* HOMARD_Gen_i::getVersion()
+{
+#if HOMARD_DEVELOPMENT
+ return CORBA::string_dup(HOMARD_VERSION_STR"dev");
+#else
+ return CORBA::string_dup(HOMARD_VERSION_STR);
+#endif
+}
+
//=============================================================================
extern "C"
{
HOMARD::HOMARD_Boundary_ptr newBoundary();
- virtual Engines::TMPFile* DumpPython(CORBA::Object_ptr theStudy,
- CORBA::Boolean isPublished,
- CORBA::Boolean isMultiFile,
- CORBA::Boolean& isValidScript);
-
+ virtual Engines::TMPFile* DumpPython(CORBA::Object_ptr theStudy,
+ CORBA::Boolean isPublished,
+ CORBA::Boolean isMultiFile,
+ CORBA::Boolean& isValidScript);
+
+ virtual char* getVersion();
private:
struct StudyContext
ASSERT( myHomardHypothesis );
return myHomardHypothesis->GetAdapInit();
}
+//=============================================================================
+void HOMARD_Hypothesis_i::SetLevelOutput( CORBA::Long LevelOutput )
+{
+ ASSERT( myHomardHypothesis );
+ myHomardHypothesis->SetLevelOutput( LevelOutput );
+}
+//=============================================================================
+CORBA::Long HOMARD_Hypothesis_i::GetLevelOutput()
+{
+ ASSERT( myHomardHypothesis );
+ return myHomardHypothesis->GetLevelOutput();
+}
//=============================================================================
std::string HOMARD_Hypothesis_i::Dump() const
CORBA::Double GetDiamMin();
void SetAdapInit( CORBA::Long AdapInit );
CORBA::Long GetAdapInit();
+ void SetLevelOutput( CORBA::Long LevelOutput );
+ CORBA::Long GetLevelOutput();
std::string Dump() const;
bool Restore( const std::string& stream );
$(GEOM_CXXFLAGS) \
-I$(srcdir)/../HOMARD \
-I$(srcdir)/../HOMARDGUI \
+ -I$(top_builddir) \
-I$(top_builddir)/idl \
-I$(GEOM_ROOT_DIR)/include/salome \
- -I$(SMESH_ROOT_DIR)/include/salome \
+ -I$(SMESH_ROOT_DIR)/include/salome \
-I$(MED_ROOT_DIR)/include/salome \
-I$(top_builddir)/adm_local/unix
../../idl/libSalomeIDLHOMARD.la \
../HOMARD/libHOMARDImpl.la \
$(KERNEL_LDFLAGS) \
- $(MED3_LIBS) \
+ $(MED3_LIBS_C_ONLY) \
-lSalomeContainer \
-lSalomeNS \
-lRegistry \
-lTOOLSDS \
-lSalomeGenericObj \
$(SMESH_LDFLAGS) \
- -lSalomeIDLSMESH \
- -lSMESHClient
+ -lSalomeIDLSMESH
######################################################################################
homard = salome.lcc.FindOrLoadComponent('FactoryServer', 'HOMARD')
+assert homard is not None, "Impossible to load homard engine"
+
#
# Exec of HOMARD-SALOME
#
error_main = homard_exec(salome.myStudy)
if error_main :
raise Exception('Pb in homard_exec at iteration %d' %error_main )
-except :
- raise Exception('Pb in homard_exec at iteration %d' %error_main )
- sys.exit(1)
+except Exception, e:
+ raise Exception('Pb in homard_exec: '+e.message)
+
#
# Test of the result
#
######################################################################################
homard = salome.lcc.FindOrLoadComponent('FactoryServer', 'HOMARD')
+assert homard is not None, "Impossible to load homard engine"
#
# Exec of HOMARD-SALOME
#
error_main = homard_exec(salome.myStudy)
if error_main :
raise Exception('Pb in homard_exec at iteration %d' %error_main )
-except :
- raise Exception('Pb in homard_exec at iteration %d' %error_main )
- sys.exit(1)
+except Exception, e:
+ raise Exception('Pb in homard_exec: '+e.message)
+
#
# Test of the result
#
######################################################################################
homard = salome.lcc.FindOrLoadComponent('FactoryServer', 'HOMARD')
+assert homard is not None, "Impossible to load homard engine"
+
#
# Exec of HOMARD-SALOME
#
error_main = homard_exec(salome.myStudy)
if error_main :
raise Exception('Pb in homard_exec at iteration %d' %error_main )
-except :
- if error_main :
- raise Exception('Pb in homard_exec at iteration %d' %error_main )
- sys.exit(1)
+except Exception, e:
+ raise Exception('Pb in homard_exec: '+e.message)
+
#
# Test of the result
#