Performing globalization

This commit is contained in:
L-Nafaryus 2021-03-22 22:49:56 +05:00
parent f8c35fa369
commit d13ff1bc7d
No known key found for this signature in database
GPG Key ID: C76D8DCD2727DBB7
5 changed files with 97 additions and 34 deletions

63
run.py
View File

@ -1,5 +1,64 @@
#!/usr/bin/env python import os, sys
# -*- coding: utf-8 -*- from collections import namedtuple
ROOT = os.getcwd()
sys.path.append(ROOT)
import src.utils
import src.salome_utils
if __name__ == "__main__":
nprocs = os.cpu_count()
port = 2810
salomeServers = []
salomeServer = namedtuple("salomeServer", ["process", "port"])
for n in range(nprocs):
while not utils.portIsFree:
port += 1
s = salomeServer(salome_utils.startServer(port), port)
salomeServers.append(s)
var = []
cmd = "python "
# TODO: pass it to samples in namedtuples
# get sample.directions and etc ..
structures = [
"simpleCubic",
"bodyCenteredCubic",
"faceCenteredCubic"
]
directions = [
[1, 0, 0],
[0, 0, 1],
[1, 1, 1]
]
cmd += "-m "
var.append((salomeServer[n].port, cmd))
utils.parallel(nprocs, var, salome_utils.execute)
if __name__ == "__main__": if __name__ == "__main__":
### ###

View File

@ -1,13 +1,28 @@
from . import geometry_utils from .src import geometry_utils
import GEOM import GEOM
from . import mesh_utils from .src import mesh_utils
import SMESH import SMESH
from . import anisotropeCubic from .src import anisotropeCubic
import salome import salome
import math import math
def genMesh(ctype, theta, flowdirection):
_G = globals()
for g in _G:
func = g.get(ctype)
if func:
salome.salome_init()
func(theta, flowdirection)
salome.salome_close()
else:
raise Exception("Unknown type of the sample function")
def simpleCubic(theta, flowdirection): def simpleCubic(theta, flowdirection):
radius = 1 radius = 1
stackAngle = [0.5 * math.pi, 0.5 * math.pi, 0.5 * math.pi] stackAngle = [0.5 * math.pi, 0.5 * math.pi, 0.5 * math.pi]
@ -62,8 +77,3 @@ def faceCenteredCubic(theta, flowdirection):
mesh_utils.meshCompute(mesh) mesh_utils.meshCompute(mesh)
def genMesh(ctype, theta, flowdirection):
salome.salome_init()
salome.salome_close()

0
src/__init__.py Normal file
View File

View File

@ -1,6 +1,3 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import salome import salome
import subprocess import subprocess
import logging import logging
@ -8,45 +5,37 @@ import logging
def hasDesktop() -> bool: def hasDesktop() -> bool:
return salome.sg.hasDesktop() return salome.sg.hasDesktop()
def startServer(port, logPath): def startServer(port):
log = open("{}/salome.log".format(logPath), "a")
logging.info("Starting SALOME on port {} ...".format(port)) logging.info("Starting SALOME on port {} ...".format(port))
p = subprocess.Popen(["salome", "start", "--port", str(port), "-t"], p = subprocess.Popen(["salome", "start", "--port", str(port), "-t"],
shell = True, shell = False,
stdout = log, stdout = subprocess.PIPE,
stderr = log) stderr = subprocess.PIPE)
log.close()
return p return p
def killServer(port, logPath): def killServer(port):
log = open("{}/salome.log".format(logPath), "a")
logging.info("Terminating SALOME on port {} ...".format(port)) logging.info("Terminating SALOME on port {} ...".format(port))
p = subprocess.Popen(["salome", "kill", str(port)], p = subprocess.Popen(["salome", "kill", str(port)],
shell = True, shell = True,
stdout = log, stdout = subprocess.PIPE,
stderr = log) stderr = subprocess.PIPE)
log.close()
return p return p
def execute(port, cmd, logPath): def execute(port, cmd):
log = open("{}/salome.log".format(logPath), "a")
logging.info("Executing command in the SALOME on port {} ...".format(port)) logging.info("Executing command in the SALOME on port {} ...".format(port))
p = subprocess.Popen(["salome", "connect", "-p", str(port), str(cmd)], # cmd = "python -m"; = "python -c"
p = subprocess.Popen(["salome", "remote", "-p", str(port), "--", str(cmd)],
shell = True, shell = True,
stdout = log, stdout = subprocess.PIPE,
stderr = log) stderr = subprocess.PIPE)
log.close()
return p return p

View File

@ -1,4 +1,5 @@
from multiprocessing import Queue, Process, cpu_count from multiprocessing import Queue, Process, cpu_count
import socket
def queue(cmd, qin, qout, *args): def queue(cmd, qin, qout, *args):
@ -64,4 +65,8 @@ def parallel(np, var, cmd):
return results return results
def portIsFree(address, port):
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
return s.connect_ex((address, port)) == 0