FEM: unit test elmer, add a testmode to solver framework

This commit is contained in:
Bernd Hahnebach
2017-12-01 19:45:01 +01:00
committed by wmayer
parent 3458c0b08e
commit 168c7cf028
7 changed files with 25 additions and 14 deletions

View File

@@ -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.

View File

@@ -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

View File

@@ -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)

View File

@@ -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)

View File

@@ -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:

View File

@@ -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):

View File

@@ -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