FEM: unit test elmer, add a testmode to solver framework
This commit is contained in:
@@ -633,6 +633,7 @@ class FemCcxAnalysisTest(unittest.TestCase):
|
||||
|
||||
fcc_print('machine_ccx')
|
||||
machine = solver_ccx2_object.Proxy.createMachine(solver_ccx2_object, static2_analysis_dir)
|
||||
fcc_print(machine.testmode)
|
||||
machine.target = femsolver.run.PREPARE
|
||||
machine.start()
|
||||
machine.join() # wait for the machine to finish.
|
||||
@@ -660,7 +661,8 @@ class FemCcxAnalysisTest(unittest.TestCase):
|
||||
self.active_doc.removeObject(mesh_object.Name)
|
||||
|
||||
fcc_print('machine_elmer')
|
||||
machine_elmer = solver_elmer_object.Proxy.createMachine(solver_elmer_object, static2_analysis_dir)
|
||||
machine_elmer = solver_elmer_object.Proxy.createMachine(solver_elmer_object, static2_analysis_dir, True)
|
||||
fcc_print(machine_elmer.testmode)
|
||||
machine_elmer.target = femsolver.run.PREPARE
|
||||
machine_elmer.start()
|
||||
machine_elmer.join() # wait for the machine to finish.
|
||||
|
||||
@@ -162,13 +162,14 @@ class Proxy(solverbase.Proxy):
|
||||
dimout = ccx_prefs.GetBool("BeamShellOutput", False)
|
||||
obj.BeamShellResultOutput3D = dimout
|
||||
|
||||
def createMachine(self, obj, directory):
|
||||
def createMachine(self, obj, directory, testmode=False):
|
||||
return run.Machine(
|
||||
solver=obj, directory=directory,
|
||||
check=tasks.Check(),
|
||||
prepare=tasks.Prepare(),
|
||||
solve=tasks.Solve(),
|
||||
results=tasks.Results())
|
||||
results=tasks.Results(),
|
||||
testmode=testmode)
|
||||
|
||||
def editSupported(self):
|
||||
return True
|
||||
|
||||
@@ -75,13 +75,14 @@ class Proxy(solverbase.Proxy):
|
||||
obj.SteadyStateMaxIterations = 1
|
||||
obj.SteadyStateMinIterations = 0
|
||||
|
||||
def createMachine(self, obj, directory):
|
||||
def createMachine(self, obj, directory, testmode=False):
|
||||
return run.Machine(
|
||||
solver=obj, directory=directory,
|
||||
check=tasks.Check(),
|
||||
prepare=tasks.Prepare(),
|
||||
solve=tasks.Solve(),
|
||||
results=tasks.Results())
|
||||
results=tasks.Results(),
|
||||
testmode=testmode)
|
||||
|
||||
def createEquation(self, doc, eqId):
|
||||
return self._EQUATIONS[eqId].create(doc)
|
||||
|
||||
@@ -67,8 +67,11 @@ class Prepare(run.Prepare):
|
||||
|
||||
def run(self):
|
||||
self.pushStatus("Preparing input files...\n")
|
||||
# w = writer.Writer(self.solver, self.directory, True) # test mode
|
||||
w = writer.Writer(self.solver, self.directory)
|
||||
print("Prepare testmode: " + str(self.testmode))
|
||||
if self.testmode:
|
||||
w = writer.Writer(self.solver, self.directory, True) # test mode
|
||||
else:
|
||||
w = writer.Writer(self.solver, self.directory)
|
||||
try:
|
||||
w.write()
|
||||
self.checkHandled(w)
|
||||
|
||||
@@ -54,7 +54,7 @@ def getMachine(solver, path=None):
|
||||
_DocObserver.attach()
|
||||
m = _machines.get(solver)
|
||||
if m is None or not _isPathValid(m, path):
|
||||
m = _createMachine(solver, path)
|
||||
m = _createMachine(solver, path, testmode=False)
|
||||
return m
|
||||
|
||||
|
||||
@@ -78,7 +78,7 @@ def _isPathValid(m, path):
|
||||
return False
|
||||
|
||||
|
||||
def _createMachine(solver, path):
|
||||
def _createMachine(solver, path, testmode):
|
||||
global _dirTypes
|
||||
setting = settings.getDirSetting()
|
||||
if path is not None:
|
||||
@@ -92,7 +92,7 @@ def _createMachine(solver, path):
|
||||
elif setting == settings.CUSTOM:
|
||||
path = _getCustomDir(solver)
|
||||
_dirTypes[path] = settings.CUSTOM
|
||||
m = solver.Proxy.createMachine(solver, path)
|
||||
m = solver.Proxy.createMachine(solver, path, testmode)
|
||||
oldMachine = _machines.get(solver)
|
||||
if oldMachine is not None:
|
||||
del _dirTypes[oldMachine.directory]
|
||||
@@ -153,6 +153,7 @@ class BaseTask(task.Thread):
|
||||
super(BaseTask, self).__init__()
|
||||
self.solver = None
|
||||
self.directory = None
|
||||
self.testmode = None
|
||||
|
||||
@property
|
||||
def analysis(self):
|
||||
@@ -163,7 +164,7 @@ class Machine(BaseTask):
|
||||
|
||||
def __init__(
|
||||
self, solver, directory, check,
|
||||
prepare, solve, results):
|
||||
prepare, solve, results, testmode):
|
||||
super(Machine, self).__init__()
|
||||
self.solver = solver
|
||||
self.directory = directory
|
||||
@@ -176,6 +177,7 @@ class Machine(BaseTask):
|
||||
self._state = CHECK
|
||||
self._pendingState = None
|
||||
self._isReset = False
|
||||
self.testmode = testmode
|
||||
|
||||
@property
|
||||
def state(self):
|
||||
@@ -217,6 +219,7 @@ class Machine(BaseTask):
|
||||
for t in tasks:
|
||||
t.solver = self.solver
|
||||
t.directory = self.directory
|
||||
t.testmode = self.testmode
|
||||
|
||||
def _applyPending(self):
|
||||
if not self._isReset:
|
||||
|
||||
@@ -44,7 +44,7 @@ class Proxy(object):
|
||||
obj.Proxy = self
|
||||
obj.addExtension("App::GroupExtensionPython", self)
|
||||
|
||||
def createMachine(self, obj, directory):
|
||||
def createMachine(self, obj, directory, testmode):
|
||||
raise NotImplementedError()
|
||||
|
||||
def createEquation(self, obj, eqId):
|
||||
|
||||
@@ -65,13 +65,14 @@ class Proxy(solverbase.Proxy):
|
||||
obj.AnalysisType = ANALYSIS_TYPES
|
||||
obj.AnalysisType = ANALYSIS_TYPES[0]
|
||||
|
||||
def createMachine(self, obj, directory):
|
||||
def createMachine(self, obj, directory, testmode=False):
|
||||
return run.Machine(
|
||||
solver=obj, directory=directory,
|
||||
check=tasks.Check(),
|
||||
prepare=tasks.Prepare(),
|
||||
solve=tasks.Solve(),
|
||||
results=tasks.Results())
|
||||
results=tasks.Results(),
|
||||
testmode=testmode)
|
||||
|
||||
def editSupported(self):
|
||||
return True
|
||||
|
||||
Reference in New Issue
Block a user