]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
[EDF27816] : management of SALOME_FILE_BIG_OBJ_DIR with var expansion + addition...
authorAnthony Geay <anthony.geay@edf.fr>
Mon, 5 Jun 2023 11:29:57 +0000 (13:29 +0200)
committerAnthony Geay <anthony.geay@edf.fr>
Mon, 5 Jun 2023 11:29:57 +0000 (13:29 +0200)
idl/SALOME_PyNode.idl
src/Basics/HeatMarcel.cxx
src/Container/SALOME_PyNode.py

index d4054d40a1bee3c931ac6a27b9c2a1eb1ee7a0d9..7aaec47753bd5d2dfd9243daeeb9d14bf62d6476 100644 (file)
@@ -103,6 +103,10 @@ module Engines
     void assignVarInContext(in string varName, in pickledArgs value) raises (SALOME::SALOME_Exception);
 
     pickledArgs callMethodOnVarInContext(in string varName, in string methodName, in pickledArgs args) raises (SALOME::SALOME_Exception);
+    
+    listofstring listAllVarsInContext() raises (SALOME::SALOME_Exception);
+
+    void removeAllVarsInContext() raises (SALOME::SALOME_Exception);
   } ;
 
 };
index a461a228861d1484f21e55a230fae1a87f7fa450..f43b8229b26ecf74de58abbb4b8641d057c4c0c6 100644 (file)
@@ -27,8 +27,7 @@
 #include <vector>
 #include <numeric>
 #include <chrono>
-
-#include <iostream>
+#include <iomanip>
 
 template<class T>
 static void GetSlice(T start, T stop, const unsigned int sliceId, const unsigned int nbOfSlices, T& startSlice, T& stopSlice)
@@ -59,7 +58,7 @@ static void SimulateOneCoreOfComputationNode(std::uint64_t start, std::uint64_t
 
 static long double SimulateOnAllCoresOfComputationNodeInternal(std::uint64_t nbTurn, unsigned int nbThreads)
 {
-  SIMPLE_MESSAGE( "Number of turn = 10**" << std::log10((double)nbTurn) );
+  SIMPLE_MESSAGE( "Number of turn = " << std::scientific << std::setprecision(12) << (double)nbTurn );
   std::vector< std::thread > threads(nbThreads);
   std::vector<long double> res(nbThreads);
   for(auto iCore = 0 ; iCore < nbThreads ; ++iCore)
index 5e43428dece829c874d3b98bf61adb0984e1ed58..2e5f636e932de2f83d57f21e6d42ab1460b146f5 100644 (file)
@@ -132,7 +132,7 @@ def GetBigObjectDirectory():
   import os
   if SALOME_FILE_BIG_OBJ_DIR not in os.environ:
     raise RuntimeError("An object of size higher than limit detected and no directory specified to dump it in file !")
-  return os.environ[SALOME_FILE_BIG_OBJ_DIR]
+  return os.path.expandvars( os.path.expandvars( os.environ[SALOME_FILE_BIG_OBJ_DIR] ) )
 
 def GetBigObjectFileName():
   """
@@ -295,6 +295,7 @@ class PyScriptNode_i (Engines__POA.PyScriptNode,Generic):
         data = argsInPy.data()
       _,kws=pickle.loads(data)
       for elt in kws:
+        # fetch real data if necessary
         kws[elt] = UnProxyObject( kws[elt] )
       self.context.update(kws)
     except Exception:
@@ -313,6 +314,7 @@ class PyScriptNode_i (Engines__POA.PyScriptNode,Generic):
         argsout.append(self.context[arg])
       ret = [ ]
       for arg in argsout:
+        # the proxy mecanism is catched here
         argPickle = SpoolPickleObject( arg )
         retArg = SenderByte_i( self.poa,argPickle )
         id_o = self.poa.activate_object(retArg)
@@ -324,6 +326,15 @@ class PyScriptNode_i (Engines__POA.PyScriptNode,Generic):
       l=traceback.format_exception(exc_typ,exc_val,exc_fr)
       raise SALOME.SALOME_Exception(SALOME.ExceptionStruct(SALOME.BAD_PARAM,"".join(l),"PyScriptNode:Second %s, outargsname: %s" % (self.nodeName,outargsname),0))
 
+  def listAllVarsInContext(self):
+      import re
+      pat = re.compile("^__([a-z]+)__$")
+      return [elt for elt in self.context if not pat.match(elt)]
+      
+  def removeAllVarsInContext(self):
+      for elt in self.listAllVarsInContext():
+        del self.context[elt]
+
   def getValueOfVarInContext(self,varName):
     try:
       return pickle.dumps(self.context[varName],-1)