This commit is contained in:
L-Nafaryus 2021-10-26 13:47:10 +05:00
parent 120c2f260c
commit 085ec5a0e2
No known key found for this signature in database
GPG Key ID: EF672A5303B2FA96
4 changed files with 90 additions and 8 deletions

View File

@ -23,6 +23,9 @@ import os
env = dict(
ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
)
env.update(
CLI = os.path.join(env["ROOT"], "anisotropy/core/cli.py")
)
env.update(
BUILD = os.path.join(env["ROOT"], "build"),
LOG = os.path.join(env["ROOT"], "logs"),

View File

@ -43,7 +43,8 @@ import logging
)
def compute(path, configFile, nprocs, stage, overwrite):
from anisotropy.core.runner import UltimateRunner
from anisotropy.core.config import Config, DefaultConfig
from anisotropy.core.config import DefaultConfig
from copy import deepcopy
config = DefaultConfig()
@ -57,7 +58,18 @@ def compute(path, configFile, nprocs, stage, overwrite):
)
config.expand()
runner = UltimateRunner()
baseRunner = UltimateRunner(config = config, exec_id = True)
queue = []
for case in config.cases:
caseConfig = deepcopy(config)
caseConfig.cases = [ case ]
caseRunner = UltimateRunner(config = caseConfig)
caseRunner._exec_id = baseRunner._exec_id
queue.append(caseRunner)
baseRunner.parallel(queue)
class LiteralOption(click.Option):

View File

@ -87,7 +87,9 @@ class DefaultConfig(Config):
"nprocs": 1,
"stage": "all",
"overwrite": False,
"database": "anisotropy.db",
"build": "build",
"logs": "logs"
},
"structures": []
}

View File

@ -4,19 +4,55 @@
from datetime import datetime
from anisotropy.core.config import DefaultConfig
from anisotropy.database import *
from anisotropy.salomepl.runner import SalomeRunner
import anisotropy.samples as samples
class UltimateRunner(object):
def __init__(self):
def __init__(self, config = None, exec_id = False):
self.database = Database(..)
self.config = config or DefaultConfig()
self.database = Database(self.config["database"])
self.datebase.setup()
self._exec = Execution(date = datetime.now())
self._exec.save()
if exec_id:
self._exec_id = Execution(date = datetime.now())
self._exec_id.save()
def casePath(self):
case = self.config.cases[0]
return os.path.join(
self.config["build"],
case["label"],
"direction-{}".format(str(case["direction"]).replace(" ", "")),
"theta-{}".format(case["theta"])
)
def computeMesh(self):
pass
case = self.config.cases[0]
runner = SalomeRunner()
cliArgs = [
"computemesh",
case["label"],
case["direction"],
case["theta"],
path
]
out, err, returncode = runner.execute(
env["CLI"],
*cliArgs,
timeout = self.config["salome_timeout"],
root = env["ROOT"],
logpath = self.casePath()
)
return out, err, returncode
def _computeMesh(self):
"""Function for Salome
@ -24,6 +60,7 @@ class UltimateRunner(object):
Resolution pipeline:
cli(UR -> computeMesh) -> salomeRunner(salome -> cli) -> computemesh(UR -> _computeMesh)
"""
# TODO: add logger configuration here
sample = samples.__dict__[..]
@ -48,3 +85,31 @@ class UltimateRunner(object):
flow = sample.onephaseflow(..)
flow.build()
def pipeline(self, stage: str = None):
stage = stage or config["stage"]
match stage:
case "mesh" | "all":
with self.database.atomic():
Shape.create(self._exec_id, **self.config.cases[0])
Mesh.create(self._exec_id)
self.computeMesh(..)
case "flow" | "all":
with self.database.atomic():
Flow.create(self._exec_id)
self.computeFlow(..)
case "postProcess" | "all":
self.postProcess(..)
def parallel(queue: list, nprocs = None):
nprocs = nprocs or config["nprocs"]
parallel(nprocs, [()] * len(queue), [ runner.pipeline for runner in queue ])