Salome HOME
Padder : write new parameters in DataFile
authoruhz <ulysse.humbert-gonzalez@opencascade.com>
Thu, 9 Mar 2017 15:46:31 +0000 (16:46 +0100)
committeruhz <ulysse.humbert-gonzalez@opencascade.com>
Thu, 9 Mar 2017 15:52:22 +0000 (16:52 +0100)
src/Tools/padder/meshjob/idl/MESHJOB.idl
src/Tools/padder/meshjob/impl/MeshJobManager_i.cxx
src/Tools/padder/meshjob/impl/MeshJobManager_i.hxx
src/Tools/padder/unittests/usecase_meshJobManager.py

index e37a3678181f2eca226f437f25e281a45069e97b..f403e55f324752ff68d410380657eb5e3ea2ab9f 100644 (file)
@@ -72,6 +72,16 @@ module MESHJOB
   // This defines a set of parameters for the job initialization
   typedef sequence<MESHJOB::MeshJobFile> MeshJobFileList;
 
+  // This defines a single parameter for the job initialization
+  struct MeshJobParameter
+  {
+    string name;
+    string value;
+  };
+  
+  // This defines a set of parameters for the job initialization
+  typedef sequence<MESHJOB::MeshJobParameter> MeshJobParameterList;
+
   // This defines the result data of a job 
   struct MeshJobResults
   {
@@ -97,7 +107,9 @@ module MESHJOB
       raises (SALOME::SALOME_Exception);
 
     /*! Initialize a smesh computation job and return the job identifier */
-    long    initialize(in MESHJOB::MeshJobFileList meshJobFileList, in string configId)
+    long    initialize(in MESHJOB::MeshJobFileList meshJobFileList,
+                       in MESHJOB::MeshJobParameterList MeshJobParameterList,
+                       in string configId)
       raises (SALOME::SALOME_Exception);
 
     /*! Submit the job execution and return true if submission is OK */
index 17d1c0fb0b26d3548ea2497850c28af568bac533..7a77330d808917261ac0d461bb2c51f13bc8b749 100644 (file)
@@ -168,7 +168,8 @@ static std::string REMOTE_WORKDIR("/tmp/spadder.remote.workdir."+USER);
  * <outputMedFile>
  */
 const char * MeshJobManager_i::_writeDataFile(std::vector<MESHJOB::MeshJobFile> listConcreteMesh,
-                                              std::vector<MESHJOB::MeshJobFile> listSteelBarMesh) {
+                                              std::vector<MESHJOB::MeshJobFile> listSteelBarMesh,
+                                              const MESHJOB::MeshJobParameterList & meshJobParameterList) {
 #ifdef WIN32
   _mkdir(LOCAL_INPUTDIR.c_str());
 #else
@@ -212,9 +213,17 @@ const char * MeshJobManager_i::_writeDataFile(std::vector<MESHJOB::MeshJobFile>
     dataFile << line.c_str() << std::endl;
   }
   
-  // Finally, we conclude with the name of the output file
+  // We conclude the list of files with the name of the output file
   line = OUTPUTFILE;
   dataFile << line.c_str() << std::endl;
+
+  // We put the numerical parameters at the end of the data file
+  for(CORBA::ULong i=0; i<meshJobParameterList.length(); i++) {
+    MESHJOB::MeshJobParameter param = meshJobParameterList[i];
+    line = std::string(param.name) + " " + std::string(param.value);
+    dataFile << line.c_str() << std::endl;
+  }
+
   dataFile.close();
   return dataFilename->c_str();  
 }
@@ -282,6 +291,7 @@ long MeshJobManager_i::JOBID_UNDEFINED = -1;
 
 /*! Initialize a smesh computation job and return the job identifier */
 CORBA::Long MeshJobManager_i::initialize(const MESHJOB::MeshJobFileList & meshJobFileList,
+                                         const MESHJOB::MeshJobParameterList & meshJobParameterList,
                                          const char * configId)
 {
   beginService("MeshJobManager_i::initialize");
@@ -340,7 +350,7 @@ CORBA::Long MeshJobManager_i::initialize(const MESHJOB::MeshJobFileList & meshJo
   // data is a text file containing the list of file names and group
   // names.
   //
-  const char * dataFilename = this->_writeDataFile(listConcreteMesh, listSteelBarMesh);
+  const char * dataFilename = this->_writeDataFile(listConcreteMesh, listSteelBarMesh, meshJobParameterList);
   LOG("dataFilename = " << dataFilename);
   const char * scriptFilename = this->_writeScriptFile(dataFilename, configId);
   LOG("scriptFilename = " << scriptFilename);
index 176d32f0c33d62219d4735bea7f41323843399d2..618a4a2f2239e0bb03a02f210c4745a06bcdfba8 100644 (file)
@@ -56,6 +56,7 @@ public:
   bool           configure  (const char *configId,
                              const MESHJOB::ConfigParameter & configParameter);
   CORBA::Long    initialize (const MESHJOB::MeshJobFileList & meshJobFileList,
+                             const MESHJOB::MeshJobParameterList & meshJobParameterList,
                              const char *configId);
   bool           start      (CORBA::Long jobId);
   char*          getState   (CORBA::Long jobId);
@@ -84,7 +85,8 @@ private:
   std::map<long, MESHJOB::MeshJobPaths*> _jobPathsMap;
 
   const char* _writeDataFile   (std::vector<MESHJOB::MeshJobFile> listConcreteMesh,
-                                std::vector<MESHJOB::MeshJobFile> listSteelBarMesh);
+                                std::vector<MESHJOB::MeshJobFile> listSteelBarMesh,
+                                const MESHJOB::MeshJobParameterList & meshJobParameterList);
   const char* _writeScriptFile (const char * dataFileName, const char * configId);
 
   std::vector<std::string> * _getResourceNames();
index 127f321196eecfbace3176b1362a611ef41761cf..131e7c3157aad3adadf26228826a6f0f60a594a9 100644 (file)
@@ -160,10 +160,16 @@ def test03_parameters():
 #meshJobFileList = test02_parameters()
 meshJobFileList = test03_parameters()
 
+meshJobParameterList = []
+param = MESHJOB.MeshJobParameter(name="RminRmax",value="1.5")
+meshJobParameterList.append(param)
+param = MESHJOB.MeshJobParameter(name="NbIteration",value="3")
+meshJobParameterList.append(param)
+
 #
 # Prepare, start and follow-up the job
 #
-jobid = component.initialize(meshJobFileList, configId)
+jobid = component.initialize(meshJobFileList, meshJobParameterList, configId)
 if jobid<0:
     msg = component.getLastErrorMessage()
     print "ERR: %s"%msg