+---------------------------------------------------------------+
+The options of the schema
+=========================
+The default values are defined by the preferences of the module HOMARD.
+
++---------------------------------------------------------------+
++---------------------------------------------------------------+
+| .. module:: SetMaxIter |
+| |
+| **SetMaxIter(MaxIter)** |
+| Defines the maximal number of iterations for the schema. |
+| |
+| - ``MaxIter`` : the maximal number of iterations of the |
+| schema |
++---------------------------------------------------------------+
+| .. module:: GetMaxIter |
+| |
+| **GetMaxIter()** |
+| Returns the maximal number of iterations of the schema |
++---------------------------------------------------------------+
+| .. module:: SetMaxNode |
+| |
+| **SetMaxNode(MaxNode)** |
+| Defines the maximal number of nodes for the adaptation. |
+| |
+| - ``MaxNode`` : the maximal number of nodes for the |
+| adaptation. If MaxNode equals 0, no limit. |
++---------------------------------------------------------------+
+| .. module:: GetMaxNode |
+| |
+| **GetMaxNode()** |
+| Returns the maximal number of nodes for the adaptation |
++---------------------------------------------------------------+
+| .. module:: SetMaxElem |
+| |
+| **SetMaxElem(MaxElem)** |
+| Defines the maximal number of meshes for the adaptation. |
+| |
+| - ``MaxElem`` : the maximal number of meshes for the |
+| adaptation. If MaxElem equals 0, no limit. |
++---------------------------------------------------------------+
+| .. module:: GetMaxElem |
+| |
+| **GetMaxElem()** |
+| Returns the maximal number of meshes for the adaptation |
++---------------------------------------------------------------+
+| .. module:: SetTestConvergence |
+| |
+| **SetTestConvergence(Type, VRef)** |
+| Defines a convergence test for the schema. |
+| |
+| - ``Type`` : the type of convergence of the schema. |
+| |
+| * 0 : no test |
+| * 1 : if the test value is greater than VRef |
+| * 2 : if the test value is lower than VRef |
+| |
+| - ``VRef`` : the reference value for the test |
++---------------------------------------------------------------+
+| .. module:: GetTestConvergenceType |
+| |
+| **GetTestConvergenceType()** |
+| Returns the type of convergence of the schema. |
++---------------------------------------------------------------+
+| .. module:: GetTestConvergenceVRef |
+| |
+| **GetTestConvergenceVRef()** |
+| Returns the reference value for the test. |
++---------------------------------------------------------------+
+
+
Example
*******
The creation of a schema is done as follows:
DirName = "/scratch/D68518/computation"
MeshFile = "/scratch/D68518/computation/maill.00.med"
YACS_0 = Case.CreateYACSSchema("YACS_0", ScriptFile, DirName, MeshFile)
+ YACS_0.SetMaxIter(4)
It can be writen down in a file :
::
"""
Lancement d'un calcul ASTER
"""
-__revision__ = "V5.8"
+__revision__ = "V5.9"
#
import sys
import os
#if self.verbose_max :
#print commande_base
#
- fic_caract = tempfile.mktemp()
- fic_caract_2 = tempfile.mktemp()
+ t_aux = tempfile.mkstemp()
+ fic_caract = t_aux[1]
+ t_aux = tempfile.mkstemp()
+ fic_caract_2 = t_aux[1]
#
# 3. Lancement
# 3.1. Commande finale
# 2. Commande de l'examen de l'etat du job,
#
fic_etat = os.path.join(self.rep_calc, self.nomjob+".etat")
- fic_etat_2 = tempfile.mktemp()
+ t_aux = tempfile.mkstemp()
+ fic_etat_2 = t_aux[1]
commande_base = os.path.join(self.aster_root, "bin", "as_run")
commande_base += " --actu " + numjob + " " + self.nomjob + " " + self.mode
if self.verbose_max :
| .. module:: GetName |
| |
| **GetName()** |
-| Retourne le nom du schéma |
+| Retourne le nom du schéma. |
+---------------------------------------------------------------+
| .. module:: SetType |
| |
| .. module:: GetType |
| |
| **GetType()** |
-| Retourne le type du schéma |
+| Retourne le type du schéma. |
+---------------------------------------------------------------+
| .. module:: SetScriptFile |
| |
| **SetScriptFile(script_file)** |
-| Définit le fichier du script python de lancement du calcul|
+| Définit le fichier du script python de lancement du |
+| calcul. |
| |
| - ``script_file`` : le nom du fichier qui contient le |
| le script python |
| |
| **GetScriptFile()** |
| Retourne le nom du fichier MED qui contient le script |
-| python |
+| python. |
+---------------------------------------------------------------+
| .. module:: SetDirName |
| |
| **SetDirName(dir_name)** |
-| Définit le nom du répertoire de calcul |
+| Définit le nom du répertoire de calcul. |
| |
| - ``dir_name`` : le nom du répertoire de calcul |
+---------------------------------------------------------------+
| .. module:: GetDirName |
| |
| **GetDirName()** |
-| Retourne le nom du répertoire de calcul |
+| Retourne le nom du répertoire de calcul. |
+---------------------------------------------------------------+
| .. module:: SetMeshFile |
| |
| **SetMeshFile(mesh_file)** |
-| Définit le fichier MED du tout premier maillage |
+| Définit le fichier MED du tout premier maillage. |
| |
| - ``mesh_file`` : le nom du fichier MED contenant le tout |
| premier maillage de calcul |
| |
| **GetMeshFile()** |
| Retourne le nom du fichier MED du tout premier maillage |
-| de calcul |
+| de calcul. |
+---------------------------------------------------------------+
| .. module:: SetXMLFile |
| |
| **SetXMLFile(xml_file)** |
-| Définit le fichier xml pour l'écriture |
+| Définit le fichier xml pour l'écriture. |
| |
| - ``xml_file`` : le nom du fichier xml |
+---------------------------------------------------------------+
| .. module:: GetXMLFile |
| |
| **GetXMLFile()** |
-| Retourne le nom du fichier xml |
+| Retourne le nom du fichier xml. |
++---------------------------------------------------------------+
+
+
+Les options du schéma
+=====================
+Les valeurs par défaut sont définies dans les préférences du module HOMARD.
+
++---------------------------------------------------------------+
++---------------------------------------------------------------+
+| .. module:: SetMaxIter |
+| |
+| **SetMaxIter(MaxIter)** |
+| Définit le nombre maximal d'itérations pour le schéma. |
+| |
+| - ``MaxIter`` : le nombre maximal d'itérations du schéma |
++---------------------------------------------------------------+
+| .. module:: GetMaxIter |
+| |
+| **GetMaxIter()** |
+| Retourne le nombre maximal d'itérations du schéma. |
++---------------------------------------------------------------+
+| .. module:: SetMaxNode |
+| |
+| **SetMaxNode(MaxNode)** |
+| Définit le nombre maximal de noeuds pour l'adaptation. |
+| |
+| - ``MaxNode`` : le nombre maximal de noeuds pour |
+| l'adaptation. Si MaxNode est nul, aucune limite n'est |
+| imposée. |
++---------------------------------------------------------------+
+| .. module:: GetMaxNode |
+| |
+| **GetMaxNode()** |
+| Retourne le nombre maximal de noeuds pour l'adaptation. |
++---------------------------------------------------------------+
+| .. module:: SetMaxElem |
+| |
+| **SetMaxElem(MaxElem)** |
+| Définit le nombre maximal de mailles pour l'adaptation. |
+| |
+| - ``MaxElem`` : le nombre maximal de mailles pour |
+| l'adaptation. Si MaxElem est nul, aucune limite n'est |
+| imposée. |
++---------------------------------------------------------------+
+| .. module:: GetMaxElem |
+| |
+| **GetMaxElem()** |
+| Retourne le nombre maximal de mailles pour l'adaptation. |
++---------------------------------------------------------------+
+| .. module:: SetTestConvergence |
+| |
+| **SetTestConvergence(Type, VRef)** |
+| Précise un test de convergence pour le schéma. |
+| |
+| - ``Type`` : le type de convergence du schéma. |
+| |
+| * 0 : aucun test |
+| * 1 : quand la valeur de test est supérieure à VRef |
+| * 2 : quand la valeur de test est inférieure à VRef |
+| |
+| - ``VRef`` : la valeur de référence du test |
++---------------------------------------------------------------+
+| .. module:: GetTestConvergenceType |
+| |
+| **GetTestConvergenceType()** |
+| Retourne le type de convergence du schéma. |
++---------------------------------------------------------------+
+| .. module:: GetTestConvergenceVRef |
+| |
+| **GetTestConvergenceVRef()** |
+| Retourne la valeur de référence utilisée pour le test de |
+| convergence du schéma. |
+---------------------------------------------------------------+
DirName = "/scratch/D68518/calcul"
MeshFile = "/scratch/D68518/calcul/maill.00.med"
YACS_0 = Case.CreateYACSSchema("YACS_0", ScriptFile, DirName, MeshFile)
+ YACS_0.SetMaxIter(4)
On peut ensuite l'écrire dans un fichier :
::
long GetLevelOutput() raises (SALOME::SALOME_Exception);
void AddGroup(in string LeGroupe) raises (SALOME::SALOME_Exception);
+ void SupprGroup(in string LeGroupe) raises (SALOME::SALOME_Exception);
+ void SupprGroups() raises (SALOME::SALOME_Exception);
void SetGroups(in ListGroupType ListGroup) raises (SALOME::SALOME_Exception);
ListGroupType GetGroups() raises (SALOME::SALOME_Exception);
# Associated iteration #0
Iter0 = Case.GetIter0()
]]></code></script>
- <load container="DefaultContainer"/>
<inport name="Case" type="HOMARD_Cas"/>
<outport name="Iter0" type="HOMARD_Iteration"/>
</inline>
OK = 1
MessInfo = " "
]]></code></script>
- <load container="DefaultContainer"/>
<inport name="NumAdapt" type="int"/>
<inport name="LastIter" type="HOMARD_Iteration"/>
<inport name="Hypo" type="HOMARD_Hypothesis"/>
# Iteration 0 associee
Iter0 = Case.GetIter0()
]]></code></script>
- <load container="DefaultContainer"/>
<inport name="Case" type="HOMARD_Cas"/>
<outport name="Iter0" type="HOMARD_Iteration"/>
</inline>
OK = 1
MessInfo = " "
]]></code></script>
- <load container="DefaultContainer"/>
<inport name="NumAdapt" type="int"/>
<inport name="LastIter" type="HOMARD_Iteration"/>
<inport name="Hypo" type="HOMARD_Hypothesis"/>
//=============================================================================
void HOMARD_Cas::AddBoundaryGroup( const char* Boundary, const char* Group )
{
+// MESSAGE ( ". AddBoundaryGroup : Boundary = " << Boundary );
+// MESSAGE ( ". AddBoundaryGroup : Group = " << Group );
_ListBoundaryGroup.push_back( Boundary );
_ListBoundaryGroup.push_back( Group );
}
//=============================================================================
void HOMARD_Hypothesis::AddComp( const char* NomComp )
{
-// On commence par la supprimer au cas ou elle aurait deja ete inseree
+// On commence par supprimer la composante au cas ou elle aurait deja ete inseree
// Cela peut se produire dans un schema YACS quand on repasse plusieurs fois par la
// definition de l'hypothese
SupprComp( NomComp ) ;
//=============================================================================
void HOMARD_Hypothesis::AddGroup( const char* Group)
{
+// On commence par supprimer le groupe au cas ou il aurait deja ete insere
+// Cela peut se produire dans un schema YACS quand on repasse plusieurs fois par la
+// definition de l'hypothese
+ SupprGroup( Group ) ;
+// Insertion veritable
_ListGroupSelected.push_back(Group);
}
//=============================================================================
+void HOMARD_Hypothesis::SupprGroup( const char* Group )
+{
+ MESSAGE ("SupprGroup pour "<<Group) ;
+ std::list<std::string>::iterator it = find( _ListGroupSelected.begin(), _ListGroupSelected.end(), Group );
+ if ( it != _ListGroupSelected.end() ) { it = _ListGroupSelected.erase( it ); }
+}
+//=============================================================================
+void HOMARD_Hypothesis::SupprGroups()
+{
+ _ListGroupSelected.clear();
+}
+//=============================================================================
void HOMARD_Hypothesis::SetGroups( const std::list<std::string>& ListGroup )
{
_ListGroupSelected.clear();
void SetLevelOutput( int LevelOutput );
const int GetLevelOutput() const;
- void AddGroup( const char* LeGroupe);
+ void AddGroup( const char* Group);
+ void SupprGroup( const char* Group );
+ void SupprGroups();
void SetGroups(const std::list<std::string>& ListGroup );
const std::list<std::string>& GetGroups() const;
//===============================================================================
void HomardDriver::TexteMaillage( const std::string NomMesh, const std::string MeshFile, int apres )
{
- MESSAGE("TexteMaillage, NomMesh ="<<NomMesh<<", MeshFile ="<<MeshFile<<", apres ="<<apres);
+ MESSAGE("TexteMaillage, NomMesh = "<<NomMesh);
+ MESSAGE("TexteMaillage, MeshFile = "<<MeshFile);
+ MESSAGE("TexteMaillage, apres = "<<apres);
std::string saux ;
saux = "P1" ;
if ( apres < 1 ) { saux = "__" ; }
MESSAGE("TexteBoundaryDi, MeshName = "<<MeshName);
MESSAGE("TexteBoundaryDi, MeshFile = "<<MeshFile);
//
+ _Texte += "#\n# Frontiere discrete\n" ;
_Texte += "CCNoMFro \"" + MeshName + "\"\n" ;
_Texte += "CCFronti \"" + MeshFile + "\"\n" ;
//
// pythonStructure : le python correspondant a la frontiere
// methode : methode associee a la creation de la frontiere
// BoundaryName : nom de la frontiere
+// MeshName : nom du maillage dans le cas d'une frontiere discrete
+// MeshFile : nom du fichier du maillage dans le cas d'une frontiere discrete
//===============================================================================
-std::string YACSDriver::Texte_Iter_1_Boundary( int BoundaryType, const std::string pythonStructure, const std::string methode, const std::string BoundaryName )
+std::string YACSDriver::Texte_Iter_1_Boundary( int BoundaryType, const std::string pythonStructure, const std::string methode, const std::string BoundaryName, const std::string MeshName, const std::string MeshFile )
{
MESSAGE("Texte_Iter_1_Boundary, BoundaryType = "<<BoundaryType<<", pythonStructure = "<<pythonStructure);
MESSAGE("methode = "<<methode<<", BoundaryName = "<<BoundaryName );
+ if (BoundaryType == 0) { MESSAGE("MeshName = "<<MeshName<<", MeshFile = "<<MeshFile ); }
//
// 1. Le nom du noeud
std::string noeud_2 = methode + "_" + BoundaryName ;
_Texte += " <node>Etude_Initialisation.SetCurrentStudy</node>\n" ;
_Texte += " <method>" + methode + "</method>\n" ;
// 4. Les inports
-// 4.1. Le nom de la zone
+// ATTENTION : les noms doivent etre les memes que dans Gen.xml, donc HOMARD_Gen.idl
+// 4.1. Le nom de la frontiere
_Texte += Texte_inport( "string", "BoundaryName" ) ;
TexteParametre( node, "BoundaryName", "string", BoundaryName ) ;
-// 4.2. Les valeurs numeriques
-// ATTENTION : les noms doivent etre les memes que dans Gen.xml, donc HOMARD_Gen.idl
-// 4.2.1. Decodage des valeurs
+// 4.2. Cas d une frontiere discrete
+ if (BoundaryType == 0)
+ {
+ _Texte += Texte_inport( "string", "MeshName" ) ;
+ TexteParametre( node, "MeshName", "string", MeshName ) ;
+ _Texte += Texte_inport( "string", "FileName" ) ;
+ TexteParametre( node, "FileName", "string", MeshFile ) ;
+ }
+// 4.3. Cas d'une frontiere analytique : les valeurs numeriques
+ else
+ {
+// 4.3.1. Decodage des valeurs
// La chaine pythonStructure est de ce genre :
// CreateBoundaryCylinder('cyl_2', 17.5, -2.5, -12.5, -100., -75., -25., 50.)
// CreateBoundaryDi("intersection", "PIQUAGE", "/scratch/D68518/Salome/script/sfr_2d_piquage.fr.med")
- std::string ligne = pythonStructure ;
+ std::string ligne = pythonStructure ;
// On commence par ne garder que ce qui suit la premiere virgule
- ligne = GetStringInTexte( ligne, ",", 1 );
+ ligne = GetStringInTexte( ligne, ",", 1 );
// On boucle pour isoler toutes les chaines dans les virgules
- std::string lignebis ;
- std::string x0, x1, x2, x3, x4, x5, x6, x7 ;
- int iaux = 0 ;
- while ( ligne != lignebis )
- {
- lignebis = GetStringInTexte ( ligne, ",", 0 ) ;
+ std::string lignebis ;
+ std::string x0, x1, x2, x3, x4, x5, x6, x7 ;
+ int iaux = 0 ;
+ while ( ligne != lignebis )
+ {
+ lignebis = GetStringInTexte ( ligne, ",", 0 ) ;
// MESSAGE("lignebis = "<<lignebis );
- if ( iaux == 0 ) { x0 = lignebis ; }
- else if ( iaux == 1 ) { x1 = lignebis ; }
- else if ( iaux == 2 ) { x2 = lignebis ; }
- else if ( iaux == 3 ) { x3 = lignebis ; }
- else if ( iaux == 4 ) { x4 = lignebis ; }
- else if ( iaux == 5 ) { x5 = lignebis ; }
- else if ( iaux == 6 ) { x6 = lignebis ; }
- ligne = GetStringInTexte( ligne, ",", 1 );
- iaux += 1 ;
- }
+ if ( iaux == 0 ) { x0 = lignebis ; }
+ else if ( iaux == 1 ) { x1 = lignebis ; }
+ else if ( iaux == 2 ) { x2 = lignebis ; }
+ else if ( iaux == 3 ) { x3 = lignebis ; }
+ else if ( iaux == 4 ) { x4 = lignebis ; }
+ else if ( iaux == 5 ) { x5 = lignebis ; }
+ else if ( iaux == 6 ) { x6 = lignebis ; }
+ ligne = GetStringInTexte( ligne, ",", 1 );
+ iaux += 1 ;
+ }
// La derniere valeur est toujours mise dans x7
- x7 = GetStringInTexte ( ligne, ")", 0 ) ;
- MESSAGE("Valeurs = "<< x0<<", "<<x1<< ", "<< x2<< ", "<< x3<<", "<<x4<<", "<<x5<<", "<<x6<<", x7"<<x7);
+ x7 = GetStringInTexte ( ligne, ")", 0 ) ;
+ MESSAGE("Valeurs = "<< x0<<", "<<x1<< ", "<< x2<< ", "<< x3<<", "<<x4<<", "<<x5<<", "<<x6<<", x7"<<x7);
//
-// 4.2. Cas d une frontiere discrete (0)
- if (BoundaryType == 0) // Cas d une frontiere discrete
- {
- _Texte += Texte_inport( "string", "MeshName" ) ;
- TexteParametre( node, "MeshName", "string", x0 ) ;
- _Texte += Texte_inport( "string", "FileName" ) ;
- TexteParametre( node, "FileName", "string", x7 ) ;
- }
-// 4.2. Cas du cylindre (1)
- else if ( BoundaryType == 1 )
- {
- _Texte += Texte_inport( "double", "Xcentre" ) ;
- _Texte += Texte_inport( "double", "Ycentre" ) ;
- _Texte += Texte_inport( "double", "Zcentre" ) ;
- _Texte += Texte_inport( "double", "Xaxis" ) ;
- _Texte += Texte_inport( "double", "Yaxis" ) ;
- _Texte += Texte_inport( "double", "Zaxis" ) ;
- _Texte += Texte_inport( "double", "Radius" ) ;
- TexteParametre( node, "Xcentre", "double", x0 ) ;
- TexteParametre( node, "Ycentre", "double", x1 ) ;
- TexteParametre( node, "Zcentre", "double", x2 ) ;
- TexteParametre( node, "Xaxis", "double", x3 ) ;
- TexteParametre( node, "Yaxis", "double", x4 ) ;
- TexteParametre( node, "Zaxis", "double", x5 ) ;
- TexteParametre( node, "Radius", "double", x7 ) ;
- }
+// 4.3.2. Cas du cylindre (1)
+ if ( BoundaryType == 1 )
+ {
+ _Texte += Texte_inport( "double", "Xcentre" ) ;
+ _Texte += Texte_inport( "double", "Ycentre" ) ;
+ _Texte += Texte_inport( "double", "Zcentre" ) ;
+ _Texte += Texte_inport( "double", "Xaxis" ) ;
+ _Texte += Texte_inport( "double", "Yaxis" ) ;
+ _Texte += Texte_inport( "double", "Zaxis" ) ;
+ _Texte += Texte_inport( "double", "Radius" ) ;
+ TexteParametre( node, "Xcentre", "double", x0 ) ;
+ TexteParametre( node, "Ycentre", "double", x1 ) ;
+ TexteParametre( node, "Zcentre", "double", x2 ) ;
+ TexteParametre( node, "Xaxis", "double", x3 ) ;
+ TexteParametre( node, "Yaxis", "double", x4 ) ;
+ TexteParametre( node, "Zaxis", "double", x5 ) ;
+ TexteParametre( node, "Radius", "double", x7 ) ;
+ }
//
-// 4.2. Cas de la sphere (2)
- else if ( BoundaryType == 2 )
- {
- _Texte += Texte_inport( "double", "Xcentre" ) ;
- _Texte += Texte_inport( "double", "Ycentre" ) ;
- _Texte += Texte_inport( "double", "Zcentre" ) ;
- _Texte += Texte_inport( "double", "Radius" ) ;
- TexteParametre( node, "Xcentre", "double", x0 ) ;
- TexteParametre( node, "Ycentre", "double", x1 ) ;
- TexteParametre( node, "Zcentre", "double", x2 ) ;
- TexteParametre( node, "Radius", "double", x7 ) ;
- }
+// 4.3.3. Cas de la sphere (2)
+ else if ( BoundaryType == 2 )
+ {
+ _Texte += Texte_inport( "double", "Xcentre" ) ;
+ _Texte += Texte_inport( "double", "Ycentre" ) ;
+ _Texte += Texte_inport( "double", "Zcentre" ) ;
+ _Texte += Texte_inport( "double", "Radius" ) ;
+ TexteParametre( node, "Xcentre", "double", x0 ) ;
+ TexteParametre( node, "Ycentre", "double", x1 ) ;
+ TexteParametre( node, "Zcentre", "double", x2 ) ;
+ TexteParametre( node, "Radius", "double", x7 ) ;
+ }
//
-// 4.3. Cas d un cone defini par un axe et un angle
- else if ( BoundaryType == 3 )
- {
- _Texte += Texte_inport( "double", "Xaxis" ) ;
- _Texte += Texte_inport( "double", "Yaxis" ) ;
- _Texte += Texte_inport( "double", "Zaxis" ) ;
- _Texte += Texte_inport( "double", "Angle" ) ;
- _Texte += Texte_inport( "double", "Xcentre" ) ;
- _Texte += Texte_inport( "double", "Ycentre" ) ;
- _Texte += Texte_inport( "double", "Zcentre" ) ;
- TexteParametre( node, "Xaxis", "double", x0 ) ;
- TexteParametre( node, "Yaxis", "double", x1 ) ;
- TexteParametre( node, "Zaxis", "double", x2 ) ;
- TexteParametre( node, "Angle", "double", x3 ) ;
- TexteParametre( node, "Xcentre", "double", x4 ) ;
- TexteParametre( node, "Ycentre", "double", x5 ) ;
- TexteParametre( node, "Zcentre", "double", x7 ) ;
- }
+// 4.3.4. Cas d un cone defini par un axe et un angle
+ else if ( BoundaryType == 3 )
+ {
+ _Texte += Texte_inport( "double", "Xaxis" ) ;
+ _Texte += Texte_inport( "double", "Yaxis" ) ;
+ _Texte += Texte_inport( "double", "Zaxis" ) ;
+ _Texte += Texte_inport( "double", "Angle" ) ;
+ _Texte += Texte_inport( "double", "Xcentre" ) ;
+ _Texte += Texte_inport( "double", "Ycentre" ) ;
+ _Texte += Texte_inport( "double", "Zcentre" ) ;
+ TexteParametre( node, "Xaxis", "double", x0 ) ;
+ TexteParametre( node, "Yaxis", "double", x1 ) ;
+ TexteParametre( node, "Zaxis", "double", x2 ) ;
+ TexteParametre( node, "Angle", "double", x3 ) ;
+ TexteParametre( node, "Xcentre", "double", x4 ) ;
+ TexteParametre( node, "Ycentre", "double", x5 ) ;
+ TexteParametre( node, "Zcentre", "double", x7 ) ;
+ }
//
-// 4.4. Cas d un cone defini par les 2 rayons
- else if ( BoundaryType == 4 )
- {
- _Texte += Texte_inport( "double", "Xcentre1" ) ;
- _Texte += Texte_inport( "double", "Ycentre1" ) ;
- _Texte += Texte_inport( "double", "Zcentre1" ) ;
- _Texte += Texte_inport( "double", "Radius1" ) ;
- _Texte += Texte_inport( "double", "Xcentre2" ) ;
- _Texte += Texte_inport( "double", "Ycentre2" ) ;
- _Texte += Texte_inport( "double", "Zcentre2" ) ;
- _Texte += Texte_inport( "double", "Radius2" ) ;
- TexteParametre( node, "Xcentre1", "double", x0 ) ;
- TexteParametre( node, "Ycentre1", "double", x1 ) ;
- TexteParametre( node, "Zcentre1", "double", x2 ) ;
- TexteParametre( node, "Radius1", "double", x3 ) ;
- TexteParametre( node, "Xcentre2", "double", x4 ) ;
- TexteParametre( node, "Ycentre2", "double", x5 ) ;
- TexteParametre( node, "Zcentre2", "double", x6 ) ;
- TexteParametre( node, "Radius2", "double", x7 ) ;
- }
-// 4.5. Cas du tore (5)
- else if ( BoundaryType == 5 )
- {
- _Texte += Texte_inport( "double", "Xcentre" ) ;
- _Texte += Texte_inport( "double", "Ycentre" ) ;
- _Texte += Texte_inport( "double", "Zcentre" ) ;
- _Texte += Texte_inport( "double", "Xaxis" ) ;
- _Texte += Texte_inport( "double", "Yaxis" ) ;
- _Texte += Texte_inport( "double", "Zaxis" ) ;
- _Texte += Texte_inport( "double", "RRev" ) ;
- _Texte += Texte_inport( "double", "RPri" ) ;
- TexteParametre( node, "Xcentre", "double", x0 ) ;
- TexteParametre( node, "Ycentre", "double", x1 ) ;
- TexteParametre( node, "Zcentre", "double", x2 ) ;
- TexteParametre( node, "Xaxis", "double", x3 ) ;
- TexteParametre( node, "Yaxis", "double", x4 ) ;
- TexteParametre( node, "Zaxis", "double", x5 ) ;
- TexteParametre( node, "RRev", "double", x6 ) ;
- TexteParametre( node, "RPri", "double", x7 ) ;
- }
+// 4.3.5. Cas d un cone defini par les 2 rayons
+ else if ( BoundaryType == 4 )
+ {
+ _Texte += Texte_inport( "double", "Xcentre1" ) ;
+ _Texte += Texte_inport( "double", "Ycentre1" ) ;
+ _Texte += Texte_inport( "double", "Zcentre1" ) ;
+ _Texte += Texte_inport( "double", "Radius1" ) ;
+ _Texte += Texte_inport( "double", "Xcentre2" ) ;
+ _Texte += Texte_inport( "double", "Ycentre2" ) ;
+ _Texte += Texte_inport( "double", "Zcentre2" ) ;
+ _Texte += Texte_inport( "double", "Radius2" ) ;
+ TexteParametre( node, "Xcentre1", "double", x0 ) ;
+ TexteParametre( node, "Ycentre1", "double", x1 ) ;
+ TexteParametre( node, "Zcentre1", "double", x2 ) ;
+ TexteParametre( node, "Radius1", "double", x3 ) ;
+ TexteParametre( node, "Xcentre2", "double", x4 ) ;
+ TexteParametre( node, "Ycentre2", "double", x5 ) ;
+ TexteParametre( node, "Zcentre2", "double", x6 ) ;
+ TexteParametre( node, "Radius2", "double", x7 ) ;
+ }
+// 4.3.6. Cas du tore (5)
+ else if ( BoundaryType == 5 )
+ {
+ _Texte += Texte_inport( "double", "Xcentre" ) ;
+ _Texte += Texte_inport( "double", "Ycentre" ) ;
+ _Texte += Texte_inport( "double", "Zcentre" ) ;
+ _Texte += Texte_inport( "double", "Xaxis" ) ;
+ _Texte += Texte_inport( "double", "Yaxis" ) ;
+ _Texte += Texte_inport( "double", "Zaxis" ) ;
+ _Texte += Texte_inport( "double", "RRev" ) ;
+ _Texte += Texte_inport( "double", "RPri" ) ;
+ TexteParametre( node, "Xcentre", "double", x0 ) ;
+ TexteParametre( node, "Ycentre", "double", x1 ) ;
+ TexteParametre( node, "Zcentre", "double", x2 ) ;
+ TexteParametre( node, "Xaxis", "double", x3 ) ;
+ TexteParametre( node, "Yaxis", "double", x4 ) ;
+ TexteParametre( node, "Zaxis", "double", x5 ) ;
+ TexteParametre( node, "RRev", "double", x6 ) ;
+ TexteParametre( node, "RPri", "double", x7 ) ;
+ }
//
-// 4.2. Erreur
- else
- { VERIFICATION("Type de frontiere inconnu." == 0); }
-
+// 4.3.7. Erreur
+ else
+ { VERIFICATION("Type de frontiere inconnu." == 0); }
+ }
//
// 5. La fin
_Texte += " <outport name=\"return\" type=\"HOMARD_Boundary\"/>\n" ;
void Texte_DataInit_MeshFile( const std::string Meshfile ) ;
void Texte_Alternance_Calcul_HOMARD_Calcul( const std::string FileName ) ;
void Texte_Iter_1_Case_Options( const std::string pythonCas ) ;
- std::string Texte_Iter_1_Boundary( int BoundaryType, const std::string pythonStructure, const std::string methode, const std::string BoundaryName ) ;
+ std::string Texte_Iter_1_Boundary( int BoundaryType, const std::string pythonStructure, const std::string methode, const std::string BoundaryName, const std::string MeshName, const std::string MeshFile ) ;
std::string Texte_Iter_1_Zone( int ZoneType, const std::string pythonStructure, const std::string methode, const std::string ZoneName ) ;
std::string Texte_Iter_1_control() ;
std::string Texte_control( const std::string noeud_1, const std::string noeud_2, int option ) ;
//=============================================================================
HOMARD::HOMARD_Boundary_ptr HOMARD_Gen_i::CreateBoundaryDi(const char* BoundaryName, const char* MeshName, const char* MeshFile)
{
- INFOS ("CreateBoundaryDi : BoundaryName = " << BoundaryName << "MeshName = " << MeshName );
+ INFOS ("CreateBoundaryDi : BoundaryName = " << BoundaryName << ", MeshName = " << MeshName );
HOMARD::HOMARD_Boundary_var myBoundary = CreateBoundary(BoundaryName, 0);
myBoundary->SetMeshFile( MeshFile ) ;
myBoundary->SetMeshName( MeshName ) ;
std::string BoundaryName = std::string((*ListBoundaryGroupType)[NumBoundary]);
MESSAGE ( "... BoundaryName = " << BoundaryName);
// 2.1. La frontiere a-t-elle deja ete ecrite ?
- // Cela arrive quand elle estliéé a plusieurs groupes. Il ne faut l'ecrire que la premiere fois
+ // Cela arrive quand elle est liee a plusieurs groupes. Il ne faut l'ecrire que la premiere fois
int A_faire = 1 ;
std::list<std::string>::const_iterator it = ListeBoundaryTraitees.begin();
while (it != ListeBoundaryTraitees.end())
if (BoundaryType == 0)
{
const char* MeshName = myBoundary->GetMeshName() ;
+ MESSAGE ( ". MeshName = " << MeshName );
const char* MeshFile = myBoundary->GetMeshFile() ;
+ MESSAGE ( ". MeshFile = " << MeshFile );
myDriver->TexteBoundaryDi( MeshName, MeshFile);
if ( BoundaryOption % 2 != 0 ) { BoundaryOption = BoundaryOption*2 ; }
}
// 4. Mise en place des instructions
int BoundaryType = myBoundary->GetType();
MESSAGE ( "... BoundaryType = " << BoundaryType);
+ const char* MeshName ;
+ const char* MeshFile ;
+ if (BoundaryType == 0)
+ {
+ MeshName = myBoundary->GetMeshName() ;
+ MESSAGE ( ". MeshName = " << MeshName );
+ MeshFile = myBoundary->GetMeshFile() ;
+ MESSAGE ( ". MeshFile = " << MeshFile );
+ }
std::string texte_control_0 ;
- texte_control_0 = myDriver->Texte_Iter_1_Boundary(BoundaryType, pythonStructure, methode, BoundaryName );
+ texte_control_0 = myDriver->Texte_Iter_1_Boundary(BoundaryType, pythonStructure, methode, BoundaryName, MeshName, MeshFile );
texte_control += texte_control_0 ;
// 5. Memorisation du traitement
ListeBoundaryTraitees.push_back( BoundaryName );
myHomardHypothesis->AddGroup( Group );
}
//=============================================================================
+void HOMARD_Hypothesis_i::SupprGroup( const char* Group )
+{
+ ASSERT( myHomardHypothesis );
+ myHomardHypothesis->SupprGroup(Group);
+}
+//=============================================================================
+void HOMARD_Hypothesis_i::SupprGroups()
+{
+ ASSERT( myHomardHypothesis );
+ myHomardHypothesis->SupprGroups();
+}
+//=============================================================================
void HOMARD_Hypothesis_i::SetGroups(const HOMARD::ListGroupType& ListGroup)
{
ASSERT( myHomardHypothesis );
CORBA::Long GetLevelOutput();
void AddGroup( const char* Group);
+ void SupprGroup( const char* Group );
+ void SupprGroups();
void SetGroups(const HOMARD::ListGroupType& ListGroup);
HOMARD::ListGroupType* GetGroups();
Copyright EDF-R&D 2010, 2014
Test test_1
"""
-__revision__ = "V2.3"
+__revision__ = "V2.4"
#========================================================================
Test_Name = "test_1"
sys.path.append(Rep_Test)
from test_util import test_results
# Repertoire des resultats
-dircase = tempfile.mktemp()
-os.mkdir(dircase)
+dircase = tempfile.mkdtemp()
# ==================================
-
salome.salome_init()
import iparameters
ipar = iparameters.IParameters(salome.myStudy.GetCommonParameters("Interface Applicative", 1))
Copyright EDF-R&D 2010, 2014
Test test_11 associe au tutorial 1
"""
-__revision__ = "V2.1"
+__revision__ = "V2.2"
#========================================================================
Test_Name = "test_11"
sys.path.append(Rep_Test)
from test_util import test_results
# Repertoire des resultats
-dircase = tempfile.mktemp()
-os.mkdir(dircase)
+dircase = tempfile.mkdtemp()
# Repertoire des donnees du tutorial
data_dir = os.path.join(pathHomard, "share", "doc", "salome", "gui", "HOMARD", "fr", "_downloads")
data_dir = os.path.normpath(data_dir)
Copyright EDF-R&D 2010, 2014
Test test_11 associe au tutorial 2
"""
-__revision__ = "V2.1"
+__revision__ = "V2.2"
#========================================================================
Test_Name = "test_12"
sys.path.append(Rep_Test)
from test_util import test_results
# Repertoire des resultats
-dircase = tempfile.mktemp()
-os.mkdir(dircase)
+dircase = tempfile.mkdtemp()
# Repertoire des donnees du tutorial
data_dir = os.path.join(pathHomard, "share", "doc", "salome", "gui", "HOMARD", "fr", "_downloads")
data_dir = os.path.normpath(data_dir)
Copyright EDF-R&D 2010, 2014
Test test_11 associe au tutorial 3
"""
-__revision__ = "V2.1"
+__revision__ = "V2.2"
#========================================================================
Test_Name = "test_13"
sys.path.append(Rep_Test)
from test_util import test_results
# Repertoire des resultats
-dircase = tempfile.mktemp()
-os.mkdir(dircase)
+dircase = tempfile.mkdtemp()
# Repertoire des donnees du tutorial
data_dir = os.path.join(pathHomard, "share", "doc", "salome", "gui", "HOMARD", "fr", "_downloads")
data_dir = os.path.normpath(data_dir)
Copyright EDF-R&D 2010, 2014
Test test_11 associe au tutorial 4
"""
-__revision__ = "V2.1"
+__revision__ = "V2.2"
#========================================================================
Test_Name = "test_14"
sys.path.append(Rep_Test)
from test_util import test_results
# Repertoire des resultats
-dircase = tempfile.mktemp()
-os.mkdir(dircase)
+dircase = tempfile.mkdtemp()
# Repertoire des donnees du tutorial
data_dir = os.path.join(pathHomard, "share", "doc", "salome", "gui", "HOMARD", "fr", "_downloads")
data_dir = os.path.normpath(data_dir)
Copyright EDF-R&D 2010, 2014
Test test_11 associe au tutorial 5
"""
-__revision__ = "V2.1"
+__revision__ = "V2.2"
#========================================================================
Test_Name = "test_15"
sys.path.append(Rep_Test)
from test_util import test_results
# Repertoire des resultats
-dircase = tempfile.mktemp()
-os.mkdir(dircase)
+dircase = tempfile.mkdtemp()
# Repertoire des donnees du tutorial
data_dir = os.path.join(pathHomard, "share", "doc", "salome", "gui", "HOMARD", "fr", "_downloads")
data_dir = os.path.normpath(data_dir)
Copyright EDF-R&D 2010, 2014
Test test_2
"""
-__revision__ = "V2.3"
+__revision__ = "V2.4"
#========================================================================
Test_Name = "test_2"
sys.path.append(Rep_Test)
from test_util import test_results
# Repertoire des resultats
-dircase = tempfile.mktemp()
-os.mkdir(dircase)
+dircase = tempfile.mkdtemp()
# ==================================
-
salome.salome_init()
import iparameters
ipar = iparameters.IParameters(salome.myStudy.GetCommonParameters("Interface Applicative", 1))
ScriptFile = os.path.normpath(ScriptFile)
DirName = dircase
YACS_test_2 = Case_test_2.CreateYACSSchema("YACS_test_2", ScriptFile, DirName, MeshFile)
+ YACS_test_2.SetMaxIter(4)
YACS_test_2.SetType(1)
filexml = os.path.join(dircase, 'YACS_test_2.xml')
error = YACS_test_2.WriteOnFile(filexml)
Copyright EDF-R&D 2011, 2013
Test test_3
"""
-__revision__ = "V2.2"
+__revision__ = "V2.3"
#========================================================================
Test_Name = "test_3"
import HOMARD
import salome
#
+# ==================================
pathHomard = os.getenv('HOMARD_ROOT_DIR')
+# Repertoire des donnees du test
Rep_Test = os.path.join(pathHomard, "share", "salome", "resources", "homard")
Rep_Test = os.path.normpath(Rep_Test)
-dircase = tempfile.mktemp()
-os.mkdir(dircase)
-
sys.path.append(Rep_Test)
from test_util import test_results
+# Repertoire des resultats
+dircase = tempfile.mkdtemp()
+# ==================================
salome.salome_init()
import iparameters
def homard_exec(theStudy):
"""
Python script for HOMARD
-Copyright EDF-R&D 2010, 2013
"""
error = 0
#
while not error :
#
homard.SetCurrentStudy(theStudy)
-#
-# Creation of the boundaries
-# ==========================
-# Creation of the discrete boundary
+ #
+ # Creation of the boundaries
+ # ==========================
+ # Creation of the discrete boundary
Boundary_3_1 = homard.CreateBoundaryDi('courbes', 'COURBES', os.path.join(Rep_Test, Test_Name + '.fr.med'))
-#
-# Creation of the external cylinder
+ #
+ # Creation of the external cylinder
Boundary_3_2 = homard.CreateBoundaryCylinder('cyl_ext', 50.0, 25., -25., 1., 0., 0., 100.)
-#
-# Creation of the internal cylinder
+ #
+ # Creation of the internal cylinder
Boundary_3_3 = homard.CreateBoundaryCylinder('cyl_int', 50.0, 25., -25., 1., 0., 0., 50.)
-#
-# Creation of the first sphere
+ #
+ # Creation of the first sphere
Boundary_3_4 = homard.CreateBoundarySphere('sphere_1', 50.0, 25., -25., 100.)
-#
-# Creation of the second sphere
+ #
+ # Creation of the second sphere
Boundary_3_5 = homard.CreateBoundarySphere('sphere_2', 450.0, 25., -25., 100.)
-#
-# Creation of the hypotheses
-# ==========================
-# Uniform refinement
+ #
+ # Creation of the hypotheses
+ # ==========================
+ # Uniform refinement
HypoName = "Hypo_" + Test_Name
print "-------- Creation of the hypothesis", HypoName
Hypo_test_3 = homard.CreateHypothesis(HypoName)
print HypoName, " : zones utilisées :", Hypo_test_3.GetZones()
print HypoName, " : champ utilisé :", Hypo_test_3.GetFieldName()
print HypoName, " : composantes utilisées :", Hypo_test_3.GetComps()
-#
+ #
for num in range (n_boucle+1) :
-#
+ #
print "-------- num =", num, "--------"
-#
-# Creation of the case Case_test_3
-# ===========================
+ #
+ # Creation of the case Case_test_3
+ # ===========================
if ( num <= 1 ) :
CaseName = "Case_" + Test_Name
print "-------- Creation of the case", CaseName
Case_test_3.AddBoundaryGroup('cyl_int', 'INT')
Case_test_3.AddBoundaryGroup('sphere_1', 'END_1')
Case_test_3.AddBoundaryGroup('sphere_2', 'END_2')
-#
-# Creation of the iterations
-# ==========================
- # Creation of the iteration 1
+ #
+ # Creation of the iterations
+ # ==========================
+ # Creation of the iteration 1
IterName = "I_" + Test_Name + "_1"
print "-------- Creation of the iteration", IterName
Iter_test_3_1 = Case_test_3.NextIteration(IterName)
print "-------- Creation of the schema", YACSName
YACS_test_3 = Case_test_3.CreateYACSSchema(YACSName, ScriptFile, DirName, MeshFile)
YACS_test_3.SetType(2)
+ YACS_test_3.SetMaxIter(2)
error = YACS_test_3.Write()
if error :
error = 10*num + 5
print "-------- Creation of the hypothesis", HypoName
Hypo_test_3 = homard.CreateHypothesis(HypoName)
Hypo_test_3.SetUnifRefinUnRef(1)
-#
+ #
break
-#
+ #
return error
#========================================================================