// Quand les 2 fonctions Setxxx et Getxxx sont presentes, Setxxx est decrit en premier
#include "HOMARD_Iteration.hxx"
+#include "HOMARD.hxx"
#include "utilities.h"
//=============================================================================
{
aScript << "\t" << _Name << " = " << _IterParent << ".NextIteration(\"" << _Name << "\")\n";
}
+// L'hypothese (doit etre au debut)
+ aScript << "\t" << _Name << ".AssociateHypo(\"" << _NomHypo << "\")\n";
// Le nom du maillage produit
// MESSAGE (".. maillage produit " << _NomMesh );
aScript << "\t" << _Name << ".SetMeshName(\"" << _NomMesh << "\")\n" ;
// Le fichier du maillage produit
aScript << "\t" << _Name << ".SetMeshFile(\"" << _MeshFile << "\")\n";
-// Le fichier des champs, avec l'instant eventuel
- if ( _FieldFile != "" ) {
+// Le fichier des champs
+ if ( _FieldFile != "" )
+ {
aScript << "\t" << _Name << ".SetFieldFile(\"" << _FieldFile << "\")\n";
+ }
+// Si champ de pilotage, valeurs de pas de temps
+ MESSAGE (". champ de pilotage : _TimeStep = " << _TimeStep << ", _Rank : " << _Rank);
+ if ( _TimeStep != -1 )
+ {
if ( _TimeStep == -2 ) {
aScript << "\t" << _Name << ".SetTimeStepRankLast()\n";
}
else
{
- if ( ( _TimeStep != -1 ) and ( _Rank != -1 ) ) {
- aScript << "\t" << _Name << ".SetTimeStepRank( " << _TimeStep << ", " << _Rank << " )\n";
+ if ( _TimeStep != -1 )
+ {
+ if ( _Rank == -1 )
+ {
+ aScript << "\t" << _Name << ".SetTimeStep( " << _TimeStep << " )\n";
+ }
+ else
+ {
+ aScript << "\t" << _Name << ".SetTimeStepRank( " << _TimeStep << ", " << _Rank << " )\n";
+ }
}
}
}
+// Les instants d'interpolation
+ MESSAGE (". instants d'interpolation ");
+ std::list<std::string>::const_iterator it = _ListFieldInterpTSR.begin() ;
+ while(it != _ListFieldInterpTSR.end())
+ {
+ std::string FieldName = std::string((*it)) ;
+// MESSAGE ("... FieldName = "<< FieldName);
+ (*it++);
+ std::string TimeStepstr = std::string((*it)) ;
+// MESSAGE ("... TimeStepstr = "<< TimeStepstr);
+ (*it++);
+ std::string Rankstr = std::string((*it)) ;
+// MESSAGE ("... Rankstr = "<< Rankstr);
+ (*it++);
+ aScript << "\t" << _Name << ".SetFieldInterpTimeStepRank( \"" << FieldName << "\"" ;
+ aScript << ", " << TimeStepstr ;
+ aScript << ", " << Rankstr << " )\n" ;
+ }
-// MESSAGE (".. Hypothese " << _NomHypo );
- aScript << "\t" << _Name << ".AssociateHypo(\"" << _NomHypo << "\")\n";
-
+// Compute
+ MESSAGE (". Compute ");
if (_Etat == true) { aScript << "\tcodret = " <<_Name << ".Compute(1, 1)\n"; }
else { aScript << "\t#codret = " <<_Name << ".Compute(1, 1)\n"; }
// MESSAGE (". Fin de l ecriture de l iteration " << _Name );
return _FieldFile;
}
//=============================================================================
+// Instants pour le champ de pilotage
+//=============================================================================
+void HOMARD_Iteration::SetTimeStep( int TimeStep )
+{
+ _TimeStep = TimeStep;
+}
+//=============================================================================
void HOMARD_Iteration::SetTimeStepRank( int TimeStep, int Rank )
{
_TimeStep = TimeStep;
return _Rank;
}
//=============================================================================
+// Instants pour un champ a interpoler
+//=============================================================================
+void HOMARD_Iteration::SetFieldInterpTimeStep( const char* FieldInterp, int TimeStep )
+{
+ SetFieldInterpTimeStepRank( FieldInterp, TimeStep, TimeStep ) ;
+}
+//=============================================================================
+void HOMARD_Iteration::SetFieldInterpTimeStepRank( const char* FieldInterp, int TimeStep, int Rank )
+{
+ MESSAGE("Champ " << FieldInterp << ", hypothese " << _NomHypo )
+// Verification de la presence du champ dans l'hypothese
+ std::list<std::string>::iterator it = find( _ListFieldInterp.begin(), _ListFieldInterp.end(), FieldInterp );
+ if ( it == _ListFieldInterp.end() )
+ {
+ INFOS("Champ " << FieldInterp << " ; hypothese " << _NomHypo )
+ VERIFICATION("Le champ est inconnu dans l'hypothese associee a cette iteration." == 0);
+ }
+
+// . Nom du champ
+ _ListFieldInterpTSR.push_back( std::string( FieldInterp ) );
+// . Pas de temps
+ std::stringstream saux1 ;
+ saux1 << TimeStep ;
+ _ListFieldInterpTSR.push_back( saux1.str() );
+// . Numero d'ordre
+ std::stringstream saux2 ;
+ saux2 << Rank ;
+ _ListFieldInterpTSR.push_back( saux2.str() );
+}
+//=============================================================================
+const std::list<std::string>& HOMARD_Iteration::GetFieldInterpsTimeStepRank() const
+{
+ return _ListFieldInterpTSR;
+}
+//=============================================================================
+void HOMARD_Iteration::SetFieldInterp( const char* FieldInterp )
+{
+ _ListFieldInterp.push_back( std::string( FieldInterp ) );
+}
+//=============================================================================
+const std::list<std::string>& HOMARD_Iteration::GetFieldInterps() const
+{
+ return _ListFieldInterp;
+}
+//=============================================================================
+void HOMARD_Iteration::SupprFieldInterps()
+{
+ _ListFieldInterp.clear();
+}
+//=============================================================================
void HOMARD_Iteration::SetLogFile( const char* LogFile )
{
_LogFile = std::string( LogFile );