From c9b1dcc3d20a411f3094c58ec08fe1baf35de7e9 Mon Sep 17 00:00:00 2001 From: Gerald Nicolas Date: Fri, 21 Mar 2014 11:11:55 +0100 Subject: [PATCH] =?utf8?q?Correction=20d'une=20erreur=20sur=20le=20tri=20e?= =?utf8?q?ntre=20raffinement=20et=20d=C3=A9raffinement.=20AM=C3=A9lioratio?= =?utf8?q?n=20des=20tutoriaux?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- doc/en/tutorials.rst | 16 +++-- doc/files/tutorial_1.py | 15 ++++- doc/files/tutorial_2.py | 15 ++++- doc/files/tutorial_3.py | 17 +++-- doc/files/tutorial_4.py | 15 ++++- doc/files/tutorial_5.py | 14 +++- doc/files/tutorial_util.py | 97 ++++++++++++++++++++++++++++ doc/fr/tutorials.rst | 16 +++-- src/HOMARD/HOMARD.hxx | 9 +++ src/HOMARD/HOMARD_Cas.cxx | 14 ++-- src/HOMARDGUI/MonCreateCase.cxx | 7 +- src/HOMARDGUI/MonCreateYACS.cxx | 7 +- src/HOMARDGUI/MonMeshInfo.cxx | 7 +- src/HOMARDGUI/MonPursueIteration.cxx | 13 +--- src/HOMARD_I/HOMARD_Gen_i.cxx | 94 ++++++--------------------- 15 files changed, 220 insertions(+), 136 deletions(-) mode change 100644 => 100755 doc/files/tutorial_3.py mode change 100644 => 100755 doc/files/tutorial_4.py mode change 100644 => 100755 doc/files/tutorial_5.py create mode 100755 doc/files/tutorial_util.py diff --git a/doc/en/tutorials.rst b/doc/en/tutorials.rst index 95dea101..9d5f7fa8 100644 --- a/doc/en/tutorials.rst +++ b/doc/en/tutorials.rst @@ -37,13 +37,15 @@ One will make here three successive uniform refinements of the mesh contained in .. literalinclude:: ../files/tutorial_1.py - :lines: 57-89 + :lines: 62-94 .. note:: Download the files * :download:`initial mesh<../files/tutorial_1.00.med.gz>` * :download:`python script<../files/tutorial_1.py>` + * :download:`python script for the compression<../files/tutorial_util.py>` + Refinement by zones @@ -53,13 +55,14 @@ Refinement by zones One proceeds here to refinement according to zones. To pass from the initial mesh to the mesh 'M_1', one uses a box framing the z=1 plane and a sphere centered on the origin with radius 1.05. Then to pass from the mesh 'M_1' to the mesh 'M_2', one replaces the sphere by a box framing the cube on side 0.5, pointing on the origin and the meshes in the very first zone are unrefined. .. literalinclude:: ../files/tutorial_2.py - :lines: 57-99 + :lines: 62-104 .. note:: Download the files * :download:`initial mesh<../files/tutorial_2.00.med.gz>` * :download:`python script<../files/tutorial_2.py>` + * :download:`python script for the compression<../files/tutorial_util.py>` Refinement driven by a field @@ -70,7 +73,7 @@ One proceeds here to refinement according to a field. The hypotheses are used to To adapt the H_1 mesh resulting from the Iter_1 iteration, two alternatives are applied. In the first, Iter_2, the field is a scalar field of indicators of error and one cuts out the 1.5% of elements where the error is largest. In the second alternative, Iter_2_bis, one is based on a vector field and one examines the jump of this vector between an element and its neighbors: one will cut out where the infinite standard of this jump is higher than the absolute threshold of 0.0001. .. literalinclude:: ../files/tutorial_3.py - :lines: 57-128 + :lines: 62-133 .. note:: Download the files @@ -78,6 +81,7 @@ To adapt the H_1 mesh resulting from the Iter_1 iteration, two alternatives are * :download:`mesh and field stage 0<../files/tutorial_3.00.med.gz>` * :download:`mesh and field stage 1<../files/tutorial_3.01.med.gz>` * :download:`python script<../files/tutorial_3.py>` + * :download:`python script for the compression<../files/tutorial_util.py>` Non plane boundaries @@ -89,7 +93,7 @@ One tests the follow-up of the curved borders here: analytical borders to descri Scheme YACS carrying out this adaptation is downloadable. .. literalinclude:: ../files/tutorial_4.py - :lines: 57-115 + :lines: 62-120 .. note:: Download the files @@ -97,6 +101,7 @@ Scheme YACS carrying out this adaptation is downloadable. * :download:`initial mesh<../files/tutorial_4.00.med.gz>` * :download:`mesh of the discrete boundary<../files/tutorial_4.fr.med.gz>` * :download:`python script<../files/tutorial_4.py>` + * :download:`python script for the compression<../files/tutorial_util.py>` * :download:`YACS scheme<../files/tutorial_4.xml>` @@ -108,7 +113,7 @@ The instructions to adapt a 2D mesh are exactly identical to those necessary to In the case presented here, one for the first time refines all the elements contained in a bored disk, then in one second iteration, all the elements contained in a rectangle. One will note the use of the follow-up of the circular borders of the field. .. literalinclude:: ../files/tutorial_5.py - :lines: 57-99 + :lines: 62-104 .. note:: Download the files @@ -116,6 +121,7 @@ In the case presented here, one for the first time refines all the elements cont * :download:`initial mesh<../files/tutorial_5.00.med.gz>` * :download:`mesh of the discrete boundary<../files/tutorial_5.fr.med.gz>` * :download:`python script<../files/tutorial_5.py>` + * :download:`python script for the compression<../files/tutorial_util.py>` .. toctree:: diff --git a/doc/files/tutorial_1.py b/doc/files/tutorial_1.py index c67c1961..ae8e5548 100755 --- a/doc/files/tutorial_1.py +++ b/doc/files/tutorial_1.py @@ -22,11 +22,12 @@ """ Exemple de couplage HOMARD-Salome -Copyright EDF-R&D 1996, 2010, 2013 +Copyright EDF-R&D 1996, 2010, 2014 """ -__revision__ = "V1.7" +__revision__ = "V1.8" # import os +import sys # # ================================== # Repertoire a personnaliser @@ -44,7 +45,11 @@ if not os.path.isdir(dircase) : # ================================== # Ce repertoire contient les fichiers de donnees : tutorial_1.00.med pathHomard = os.getenv('HOMARD_ROOT_DIR') -data_dir = os.path.join(pathHomard, "share/doc/salome/gui/HOMARD/fr/_downloads") +data_dir = os.path.join(pathHomard, "share", "doc", "salome", "gui", "HOMARD", "fr", "_downloads") +sys.path.append(data_dir) +from tutorial_util import gzip_gunzip +gzip_gunzip(data_dir, 1, -1) +# ================================== # import salome salome.salome_init() @@ -88,5 +93,9 @@ Iter_1_3.SetMeshFile(dircase+'/maill.03.med') Iter_1_3.AssociateHypo('Hypo_1') codret = Iter_1_3.Compute(1, 2) +# ================================== +gzip_gunzip(data_dir, 1, 1) +# ================================== + if salome.sg.hasDesktop(): salome.sg.updateObjBrowser(1) diff --git a/doc/files/tutorial_2.py b/doc/files/tutorial_2.py index bdcafbf7..01f36f6d 100755 --- a/doc/files/tutorial_2.py +++ b/doc/files/tutorial_2.py @@ -22,11 +22,12 @@ """ Exemple de couplage HOMARD-Salome -Copyright EDF-R&D 1996, 2010, 2013 +Copyright EDF-R&D 1996, 2010, 2014 """ -__revision__ = "V1.8" +__revision__ = "V1.9" # import os +import sys # # ================================== # Repertoire a personnaliser @@ -44,7 +45,11 @@ if not os.path.isdir(dircase) : # ================================== # Ce repertoire contient les fichiers de donnees : tutorial_2.00.med pathHomard = os.getenv('HOMARD_ROOT_DIR') -data_dir = os.path.join(pathHomard, "share/doc/salome/gui/HOMARD/fr/_downloads") +data_dir = os.path.join(pathHomard, "share", "doc", "salome", "gui", "HOMARD", "fr", "_downloads") +sys.path.append(data_dir) +from tutorial_util import gzip_gunzip +gzip_gunzip(data_dir, 2, -1) +# ================================== # import salome salome.salome_init() @@ -98,5 +103,9 @@ Iter_2_2.SetMeshFile(dircase+'/maill.02.med') Iter_2_2.AssociateHypo('Hypo_2_bis') codret = Iter_2_2.Compute(1, 2) +# ================================== +gzip_gunzip(data_dir, 2, 1) +# ================================== + if salome.sg.hasDesktop(): salome.sg.updateObjBrowser(1) diff --git a/doc/files/tutorial_3.py b/doc/files/tutorial_3.py old mode 100644 new mode 100755 index 922f65d0..ad3afb33 --- a/doc/files/tutorial_3.py +++ b/doc/files/tutorial_3.py @@ -22,11 +22,12 @@ """ Exemple de couplage HOMARD-Salome -Copyright EDF-R&D 1996, 2010, 2013 +Copyright EDF-R&D 1996, 2010, 2014 """ -__revision__ = "V1.7" +__revision__ = "V1.8" # import os +import sys # # ================================== # Repertoire a personnaliser @@ -44,7 +45,11 @@ if not os.path.isdir(dircase) : # ================================== # Ce repertoire contient les fichiers de donnees : tutorial_3.00.med, tutorial_3.01.med pathHomard = os.getenv('HOMARD_ROOT_DIR') -data_dir = os.path.join(pathHomard, "share/doc/salome/gui/HOMARD/fr/_downloads") +data_dir = os.path.join(pathHomard, "share", "doc", "salome", "gui", "HOMARD", "fr", "_downloads") +sys.path.append(data_dir) +from tutorial_util import gzip_gunzip +gzip_gunzip(data_dir, 3, -1) +# ================================== # import salome salome.salome_init() @@ -126,6 +131,10 @@ Iter_3_2_bis.SetFieldFile(data_dir+'/tutorial_3.01.med') Iter_3_2_bis.SetTimeStepRank(1, 1) Iter_3_2_bis.AssociateHypo('Hypo_1vers2_bis') codret = Iter_3_2_bis.Compute(1, 2) -# + +# ================================== +gzip_gunzip(data_dir, 3, 1) +# ================================== + if salome.sg.hasDesktop(): salome.sg.updateObjBrowser(1) diff --git a/doc/files/tutorial_4.py b/doc/files/tutorial_4.py old mode 100644 new mode 100755 index 0ff9e741..27405636 --- a/doc/files/tutorial_4.py +++ b/doc/files/tutorial_4.py @@ -22,11 +22,12 @@ """ Exemple de couplage HOMARD-Salome -Copyright EDF-R&D 1996, 2011, 2013 +Copyright EDF-R&D 1996, 2011, 2014 """ -__revision__ = "V2.3" +__revision__ = "V2.4" # import os +import sys # # ================================== # Repertoire a personnaliser @@ -44,7 +45,11 @@ if not os.path.isdir(dircase) : # ================================== # Ce repertoire contient les fichiers de donnees : tutorial_4.00.med, tutorial_4.fr.med pathHomard = os.getenv('HOMARD_ROOT_DIR') -data_dir = os.path.join(pathHomard, "share/doc/salome/gui/HOMARD/fr/_downloads") +data_dir = os.path.join(pathHomard, "share", "doc", "salome", "gui", "HOMARD", "fr", "_downloads") +sys.path.append(data_dir) +from tutorial_util import gzip_gunzip +gzip_gunzip(data_dir, 4, -1) +# ================================== # import salome salome.salome_init() @@ -114,5 +119,9 @@ Iter_4_3.SetMeshFile(dircase+'/maill.03.med') Iter_4_3.AssociateHypo('Hypo_4_bis') codret = Iter_4_3.Compute(1, 2) +# ================================== +gzip_gunzip(data_dir, 4, 1) +# ================================== + if salome.sg.hasDesktop(): salome.sg.updateObjBrowser(1) diff --git a/doc/files/tutorial_5.py b/doc/files/tutorial_5.py old mode 100644 new mode 100755 index 494eec29..e82b99cd --- a/doc/files/tutorial_5.py +++ b/doc/files/tutorial_5.py @@ -22,11 +22,12 @@ """ Exemple de couplage HOMARD-Salome -Copyright EDF-R&D 1996, 2010, 2013 +Copyright EDF-R&D 1996, 2010, 2014 """ -__revision__ = "V1.6" +__revision__ = "V1.7" # import os +import sys # # ================================== # Repertoire a personnaliser @@ -44,7 +45,11 @@ if not os.path.isdir(dircase) : # ================================== # Ce repertoire contient les fichiers de donnees : tutorial_5.00.med, tutorial_5.fr.med pathHomard = os.getenv('HOMARD_ROOT_DIR') -data_dir = os.path.join(pathHomard, "share/doc/salome/gui/HOMARD/fr/_downloads") +data_dir = os.path.join(pathHomard, "share", "doc", "salome", "gui", "HOMARD", "fr", "_downloads") +sys.path.append(data_dir) +from tutorial_util import gzip_gunzip +gzip_gunzip(data_dir, 5, -1) +# ================================== # import salome salome.salome_init() @@ -98,6 +103,9 @@ Iter_5_2.SetMeshFile(dircase+'/maill.02.med') Iter_5_2.AssociateHypo('Hypo_5_bis') codret = Iter_5_2.Compute(1, 2) +# ================================== +gzip_gunzip(data_dir, 5, 1) +# ================================== if salome.sg.hasDesktop(): salome.sg.updateObjBrowser(1) diff --git a/doc/files/tutorial_util.py b/doc/files/tutorial_util.py new file mode 100755 index 00000000..19f3b53d --- /dev/null +++ b/doc/files/tutorial_util.py @@ -0,0 +1,97 @@ +# -*- coding: iso-8859-1 -*- +# Copyright (C) 2011-2014 CEA/DEN, EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +""" +Python script for HOMARD +Copyright EDF-R&D 2014 +""" +__revision__ = "V1.0" + +import os +import sys +#======================================================================== +#======================================================================== +def gzip_gunzip(data_dir, num_tuto, option) : + """ +Compression/Uncompression of the med files of a directory such as tutorial_x.nn.med +data_dir: directory +num_tuto: number of the tutorial +option : 1: compression, -1: uncompression +Copyright EDF-R&D 2014 + """ +# + ficloc_basis = "tutorial_%d" % num_tuto +# + ok = True + num = -1 +# +# Uncompression +# + if ( option == -1 ) : +# + while ok : + num += 1 + ficloc = ficloc_basis + ".%02d.med" % num + nomfic = os.path.join(data_dir, ficloc) + if not os.path.isfile(nomfic) : + ficloc += ".gz" + nomfic = os.path.join(data_dir, ficloc) + if os.path.isfile(nomfic) : + os.system("gunzip "+nomfic) + else : + ok = False + break +# + ficloc = ficloc_basis + ".fr.med" + nomfic = os.path.join(data_dir, ficloc) + if not os.path.isfile(nomfic) : + ficloc += ".gz" + nomfic = os.path.join(data_dir, ficloc) + if os.path.isfile(nomfic) : + os.system("gunzip "+nomfic) +# +# Compression +# + elif ( option == 1 ) : +# + while ok : + num += 1 + ficloc = ficloc_basis + ".%02d.med.gz" % num + nomfic = os.path.join(data_dir, ficloc) + if not os.path.isfile(nomfic) : + ficloc = ficloc_basis + ".%02d.med" % num + nomfic = os.path.join(data_dir, ficloc) + if os.path.isfile(nomfic) : + os.system("gzip "+nomfic) + else : + ok = False + break +# + ficloc = ficloc_basis + ".fr.med.gz" + nomfic = os.path.join(data_dir, ficloc) + if not os.path.isfile(nomfic) : + ficloc = ficloc_basis + ".fr.med" + nomfic = os.path.join(data_dir, ficloc) + if os.path.isfile(nomfic) : + os.system("gzip "+nomfic) +# + return +# +#======================================================================== +#======================================================================== diff --git a/doc/fr/tutorials.rst b/doc/fr/tutorials.rst index 46ae9688..204a67f0 100644 --- a/doc/fr/tutorials.rst +++ b/doc/fr/tutorials.rst @@ -36,13 +36,14 @@ On fera ici trois raffinements uniformes successifs du maillage contenu dans le * 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. .. literalinclude:: ../files/tutorial_1.py - :lines: 57-89 + :lines: 62-94 .. note:: Téléchargement des fichiers * :download:`maillage initial<../files/tutorial_1.00.med.gz>` * :download:`commandes python<../files/tutorial_1.py>` + * :download:`commandes python de l'utilitaire de compression<../files/tutorial_util.py>` Raffinement par des zones @@ -52,13 +53,14 @@ Raffinement par des zones 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 et on déraffine les mailles contenues dans la toute première zone. .. literalinclude:: ../files/tutorial_2.py - :lines: 57-99 + :lines: 62-104 .. note:: Téléchargement des fichiers * :download:`maillage initial<../files/tutorial_2.00.med.gz>` * :download:`commandes python<../files/tutorial_2.py>` + * :download:`commandes python de l'utilitaire de compression<../files/tutorial_util.py>` Raffinement selon un champ @@ -69,7 +71,7 @@ On proc Pour adapter le maillage H_1 issu de l'itération Iter_1, deux variantes sont appliquées. Dans la première, Iter_2, le champ est un champ scalaire d'indicateurs d'erreur et on découpe les 1.5% de mailles où l'erreur est la plus grande. Dans la seconde variante, Iter_2_bis, on se base sur un champ vectoriel et on examine le saut de ce vecteur entre une maille et ses voisines : on découpera là où la norme infinie de ce saut est supérieure au seuil absolu de 0.0001. .. literalinclude:: ../files/tutorial_3.py - :lines: 57-128 + :lines: 62-133 .. note:: Téléchargement des fichiers @@ -77,6 +79,7 @@ Pour adapter le maillage H_1 issu de l'it * :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>` + * :download:`commandes python de l'utilitaire de compression<../files/tutorial_util.py>` Suivi de frontières courbes @@ -88,7 +91,7 @@ On teste ici le suivi des fronti Le schéma YACS réalisant cette adaptation est téléchargeable. .. literalinclude:: ../files/tutorial_4.py - :lines: 57-115 + :lines: 62-120 .. note:: Téléchargement des fichiers @@ -96,6 +99,7 @@ Le sch * :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>` + * :download:`commandes python de l'utilitaire de compression<../files/tutorial_util.py>` * :download:`schéma YACS<../files/tutorial_4.xml>` @@ -107,7 +111,7 @@ Les instructions pour adapter un maillage 2D sont exactement identiques Dans le cas présenté ici, on raffine une première fois toutes les mailles contenues dans un disque percé, puis dans une seconde itération, toutes les mailles contenues dans un rectangle. On notera l'utilisation du suivi des frontières circulaires du domaine. .. literalinclude:: ../files/tutorial_5.py - :lines: 57-99 + :lines: 62-104 .. note:: Téléchargement des fichiers @@ -115,7 +119,9 @@ Dans le cas pr * :download:`maillage initial<../files/tutorial_5.00.med.gz>` * :download:`maillage de la frontière discrète<../files/tutorial_5.fr.med.gz>` * :download:`commandes python<../files/tutorial_5.py>` + * :download:`commandes python de l'utilitaire de compression<../files/tutorial_util.py>` .. toctree:: :maxdepth: 2 + diff --git a/src/HOMARD/HOMARD.hxx b/src/HOMARD/HOMARD.hxx index 429306e4..4281c27e 100644 --- a/src/HOMARD/HOMARD.hxx +++ b/src/HOMARD/HOMARD.hxx @@ -41,4 +41,13 @@ #define HOMARDIMPL_EXPORT #endif +// La gestion des repertoires +#ifndef CHDIR + #ifdef WIN32 + #define CHDIR _chdir + #else + #define CHDIR chdir + #endif +#endif + #endif diff --git a/src/HOMARD/HOMARD_Cas.cxx b/src/HOMARD/HOMARD_Cas.cxx index 48bcf26d..0aaea700 100644 --- a/src/HOMARD/HOMARD_Cas.cxx +++ b/src/HOMARD/HOMARD_Cas.cxx @@ -33,6 +33,7 @@ #include "HOMARD_Cas.hxx" #include "utilities.h" +#include "HOMARD.hxx" #include #include @@ -113,25 +114,18 @@ int HOMARD_Cas::SetDirName( const char* NomDir ) MESSAGE("SetDirName, _ListIter.size() : "<<_ListIter.size()); if ( _ListIter.size() > 1 ) { erreur = 1 ; } // Creation -#ifndef WIN32 - if ( chdir(NomDir) == 0 ) -#else - if ( _chdir(NomDir) == 0 ) -#endif + if ( CHDIR(NomDir) == 0 ) { _NomDir = std::string( NomDir ); } else { #ifndef WIN32 if ( mkdir(NomDir, S_IRWXU|S_IRGRP|S_IXGRP) == 0 ) - { - if ( chdir(NomDir) == 0 ) #else if ( _mkdir(NomDir) == 0 ) - { - if ( _chdir(NomDir) == 0 ) #endif - { _NomDir = std::string( NomDir ); } + { + if ( CHDIR(NomDir) == 0 ) { _NomDir = std::string( NomDir ); } else { erreur = 2 ; } } else { erreur = 2 ; } diff --git a/src/HOMARDGUI/MonCreateCase.cxx b/src/HOMARDGUI/MonCreateCase.cxx index 5377c1ff..258d6018 100644 --- a/src/HOMARDGUI/MonCreateCase.cxx +++ b/src/HOMARDGUI/MonCreateCase.cxx @@ -22,6 +22,7 @@ #include "MonEditBoundaryAn.h" #include "MonCreateBoundaryDi.h" #include "MonEditBoundaryDi.h" +#include "HOMARD.hxx" #include #include @@ -170,11 +171,7 @@ bool MonCreateCase::PushOnApply(int option) return false; } } -#ifndef WIN32 - if (chdir(aDirName.toStdString().c_str()) != 0) -#else - if (_chdir(aDirName.toStdString().c_str()) != 0) -#endif + if (CHDIR(aDirName.toStdString().c_str()) != 0) { QMessageBox::critical( 0, QObject::tr("HOM_ERROR"), QObject::tr("HOM_CASE_DIRECTORY_3") ); diff --git a/src/HOMARDGUI/MonCreateYACS.cxx b/src/HOMARDGUI/MonCreateYACS.cxx index fb43a487..d9b21d91 100644 --- a/src/HOMARDGUI/MonCreateYACS.cxx +++ b/src/HOMARDGUI/MonCreateYACS.cxx @@ -18,6 +18,7 @@ // #include "MonCreateYACS.h" +#include "HOMARD.hxx" #include #include @@ -148,11 +149,7 @@ bool MonCreateYACS::PushOnApply() return false; } } -#ifndef WIN32 - if (chdir(aDirName.toStdString().c_str()) != 0) -#else - if (_chdir(aDirName.toStdString().c_str()) != 0) -#endif + if (CHDIR(aDirName.toStdString().c_str()) != 0) { QMessageBox::critical( 0, QObject::tr("HOM_ERROR"), QObject::tr("HOM_CASE_DIRECTORY_3") ); diff --git a/src/HOMARDGUI/MonMeshInfo.cxx b/src/HOMARDGUI/MonMeshInfo.cxx index 32ba01b4..c18b00e7 100644 --- a/src/HOMARDGUI/MonMeshInfo.cxx +++ b/src/HOMARDGUI/MonMeshInfo.cxx @@ -18,6 +18,7 @@ // #include "MonMeshInfo.h" +#include "HOMARD.hxx" #include #include @@ -115,11 +116,7 @@ bool MonMeshInfo::PushOnApply() return false; } } -#ifndef WIN32 - if (chdir(aDirName.toStdString().c_str()) != 0) -#else - if (_chdir(aDirName.toStdString().c_str()) != 0) -#endif + if (CHDIR(aDirName.toStdString().c_str()) != 0) { QMessageBox::critical( 0, QObject::tr("HOM_ERROR"), QObject::tr("HOM_CASE_DIRECTORY_3") ); diff --git a/src/HOMARDGUI/MonPursueIteration.cxx b/src/HOMARDGUI/MonPursueIteration.cxx index ebc280ba..ea6575f6 100644 --- a/src/HOMARDGUI/MonPursueIteration.cxx +++ b/src/HOMARDGUI/MonPursueIteration.cxx @@ -18,6 +18,7 @@ // #include "MonPursueIteration.h" +#include "HOMARD.hxx" #include #include @@ -107,11 +108,7 @@ bool MonPursueIteration::PushOnApply() return false; } } -#ifndef WIN32 - if (chdir(aDirName.toStdString().c_str()) != 0) -#else - if (_chdir(aDirName.toStdString().c_str()) != 0) -#endif + if (CHDIR(aDirName.toStdString().c_str()) != 0) { QMessageBox::critical( 0, QObject::tr("HOM_ERROR"), QObject::tr("HOM_CASE_DIRECTORY_3") ); @@ -125,11 +122,7 @@ bool MonPursueIteration::PushOnApply() QObject::tr("HOM_START_DIRECTORY_1") ); return false; } -#ifndef WIN32 - if (chdir(aDirNameStart.toStdString().c_str()) != 0) -#else - if (_chdir(aDirNameStart.toStdString().c_str()) != 0) -#endif + if (CHDIR(aDirNameStart.toStdString().c_str()) != 0) { QMessageBox::critical( 0, QObject::tr("HOM_ERROR"), QObject::tr("HOM_START_DIRECTORY_3") ); diff --git a/src/HOMARD_I/HOMARD_Gen_i.cxx b/src/HOMARD_I/HOMARD_Gen_i.cxx index bd1db458..f7f2dc6b 100755 --- a/src/HOMARD_I/HOMARD_Gen_i.cxx +++ b/src/HOMARD_I/HOMARD_Gen_i.cxx @@ -1248,11 +1248,7 @@ HOMARD::HOMARD_Cas_ptr HOMARD_Gen_i::CreateCaseFromIteration(const char* nomCas, // A. Decodage du point de reprise // A.1. Controle du repertoire de depart de l'iteration -#ifndef WIN32 - codret = chdir(DirNameStart) ; -#else - codret = _chdir(DirNameStart) ; -#endif + codret = CHDIR(DirNameStart) ; if ( codret != 0 ) { SALOME::ExceptionStruct es; @@ -1436,11 +1432,7 @@ HOMARD::HOMARD_Cas_ptr HOMARD_Gen_i::CreateCaseFromIteration(const char* nomCas, throw SALOME::SALOME_Exception(es); } // E.3. Copie du maillage HOMARD au format MED -#ifndef WIN32 - codret = chdir(DirNameStart) ; -#else - codret = _chdir(DirNameStart) ; -#endif + codret = CHDIR(DirNameStart) ; std::string commande = "cp " + file_maillage_homard + " " + nomDirIterTotal ; MESSAGE ( "commande : " << commande ) ; codret = system(commande.c_str()) ; @@ -1459,11 +1451,7 @@ HOMARD::HOMARD_Cas_ptr HOMARD_Gen_i::CreateCaseFromIteration(const char* nomCas, delete[] MeshName ; delete[] MeshFile ; -#ifndef WIN32 - chdir(nomDirWork.c_str()); -#else - _chdir(nomDirWork.c_str()); -#endif + CHDIR(nomDirWork.c_str()); return HOMARD::HOMARD_Cas::_duplicate(myCase); } //============================================================================= @@ -1522,11 +1510,7 @@ std::string HOMARD_Gen_i::CreateCase1(const char* DirNameStart, CORBA::Long Numb int NumeIterMax = -1 ; // A.1. Controle du repertoire de depart du cas -#ifndef WIN32 - codret = chdir(DirNameStart) ; -#else - codret = _chdir(DirNameStart) ; -#endif + codret = CHDIR(DirNameStart) ; if ( codret != 0 ) { SALOME::ExceptionStruct es; @@ -1556,11 +1540,11 @@ std::string HOMARD_Gen_i::CreateCase1(const char* DirNameStart, CORBA::Long Numb #endif if ( ( DirName_1 != "." ) && ( DirName_1 != ".." ) ) { -#ifndef WIN32 - if ( chdir(DirName_1.c_str()) == 0 ) + if ( CHDIR(DirName_1.c_str()) == 0 ) { // On cherche le fichier de configuration dans ce sous-repertoire - codret = chdir(DirNameStart); + codret = CHDIR(DirNameStart); +#ifndef WIN32 DIR *dp_1; struct dirent *dirp_1; dp_1 = opendir(DirName_1.c_str()) ; @@ -1568,9 +1552,6 @@ std::string HOMARD_Gen_i::CreateCase1(const char* DirNameStart, CORBA::Long Numb { std::string file_name_1(dirp_1->d_name); #else - if ( _chdir(DirName_1.c_str()) == 0 ) - { - codret = _chdir(DirNameStart); HANDLE hFind1 = INVALID_HANDLE_VALUE; WIN32_FIND_DATA ffd1; hFind1 = FindFirstFile(DirName_1.c_str(), &ffd1); @@ -1583,11 +1564,7 @@ std::string HOMARD_Gen_i::CreateCase1(const char* DirNameStart, CORBA::Long Numb if ( bilan != string::npos ) { // Decodage du fichier pour trouver le numero d'iteration -#ifndef WIN32 - chdir(DirName_1.c_str()) ; -#else - _chdir(DirName_1.c_str()) ; -#endif + CHDIR(DirName_1.c_str()) ; std::ifstream fichier( file_name_1.c_str() ); if ( fichier ) // ce test échoue si le fichier n'est pas ouvert @@ -1634,11 +1611,7 @@ std::string HOMARD_Gen_i::CreateCase1(const char* DirNameStart, CORBA::Long Numb es.text = CORBA::string_dup(text.c_str()); throw SALOME::SALOME_Exception(es); } -#ifndef WIN32 - chdir(DirNameStart) ; -#else - _chdir(DirNameStart) ; -#endif + CHDIR(DirNameStart) ; } if ( existe ) { break ; } } @@ -1653,12 +1626,10 @@ std::string HOMARD_Gen_i::CreateCase1(const char* DirNameStart, CORBA::Long Numb } #ifndef WIN32 closedir(dp); - chdir(nomDirWork.c_str()); #else - FindClose(hFind); - } - _chdir(nomDirWork.c_str()); + FindClose(hFind); #endif + CHDIR(nomDirWork.c_str()); if ( ( Number >= 0 && ( !existe ) ) || ( Number < 0 && ( NumeIterMax == -1 ) ) ) { @@ -2536,11 +2507,7 @@ CORBA::Long HOMARD_Gen_i::Compute(const char* NomIteration, CORBA::Long etatMena // D. On passe dans le repertoire de l'iteration a calculer MESSAGE ( ". On passe dans DirCompute = " << DirCompute ); -#ifndef WIN32 - chdir(DirCompute); -#else - _chdir(DirCompute); -#endif + CHDIR(DirCompute); // E. Les donnees de l'execution HOMARD // E.1. L'objet du texte du fichier de configuration @@ -2669,11 +2636,7 @@ CORBA::Long HOMARD_Gen_i::Compute(const char* NomIteration, CORBA::Long etatMena delete myDriver; MESSAGE ( ". On retourne dans nomDirWork = " << nomDirWork ); -#ifndef WIN32 - chdir(nomDirWork.c_str()); -#else - _chdir(nomDirWork.c_str()); -#endif + CHDIR(nomDirWork.c_str()); } return codretexec ; @@ -2841,11 +2804,7 @@ char* HOMARD_Gen_i::CreateDirNameIter(const char* nomrep, CORBA::Long num ) { MESSAGE ( "CreateDirNameIter : nomrep ="<< nomrep << ", num = "< DirName = " << DirName); MESSAGE ( ". On retourne dans nomDirActuel = " << nomDirActuel ); -#ifndef WIN32 - chdir(nomDirActuel.c_str()); -#else - _chdir(nomDirActuel.c_str()); -#endif + CHDIR(nomDirActuel.c_str()); return CORBA::string_dup( DirName.c_str() ); } //============================================================================= @@ -2954,13 +2900,11 @@ char* HOMARD_Gen_i::ComputeDirManagement(HOMARD::HOMARD_Cas_var myCase, HOMARD:: MESSAGE (". DirCompute = " << DirCompute.str() ); // B.3.3. Si le sous-repertoire n'existe pas, on le cree -#ifndef WIN32 - if (chdir(DirCompute.str().c_str()) != 0) + if (CHDIR(DirCompute.str().c_str()) != 0) { +#ifndef WIN32 if (mkdir(DirCompute.str().c_str(), S_IRWXU|S_IRGRP|S_IXGRP) != 0) #else - if (_chdir(DirCompute.str().c_str()) != 0) - { if (_mkdir(DirCompute.str().c_str()) != 0) #endif { -- 2.39.2