easier to read
This commit is contained in:
parent
c67fbacfc7
commit
3be1a33820
|
@ -1,56 +1,30 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
# Makes postprocessing routines accessible from everywhere.
|
# Makes postprocessing routines accessible from everywhere.
|
||||||
import os
|
|
||||||
import sys
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
import damask
|
import damask
|
||||||
|
|
||||||
damaskEnv = damask.Environment()
|
env = damask.Environment()
|
||||||
baseDir = damaskEnv.relPath('processing/')
|
bin_dir = env.root_dir/Path('bin')
|
||||||
binDir = damaskEnv.relPath('bin/')
|
|
||||||
|
|
||||||
if not os.path.isdir(binDir):
|
if not bin_dir.exists():
|
||||||
os.mkdir(binDir)
|
bin_dir.mkdir()
|
||||||
|
|
||||||
#define ToDo list
|
|
||||||
processing_subDirs = ['pre',
|
|
||||||
'post',
|
|
||||||
]
|
|
||||||
|
|
||||||
sys.stdout.write('\nsymbolic linking...\n')
|
sys.stdout.write('\nsymbolic linking...\n')
|
||||||
|
for sub_dir in ['pre','post']:
|
||||||
|
the_dir = env.root_dir/Path('processing')/Path(sub_dir)
|
||||||
|
|
||||||
for subDir in processing_subDirs:
|
for the_file in the_dir.glob('*.py'):
|
||||||
theDir = os.path.abspath(os.path.join(baseDir,subDir))
|
src = the_dir/the_file
|
||||||
|
dst = bin_dir/Path(the_file.with_suffix('').name)
|
||||||
sys.stdout.write('\n'+binDir+' ->\n'+theDir+damask.util.deemph(' ...')+'\n')
|
dst.unlink(True)
|
||||||
|
dst.symlink_to(src)
|
||||||
for theFile in os.listdir(theDir):
|
|
||||||
theName,theExt = os.path.splitext(theFile)
|
|
||||||
if theExt in ['.py']:
|
|
||||||
|
|
||||||
src = os.path.abspath(os.path.join(theDir,theFile))
|
|
||||||
sym_link = os.path.abspath(os.path.join(binDir,theName))
|
|
||||||
|
|
||||||
if os.path.lexists(sym_link):
|
|
||||||
os.remove(sym_link)
|
|
||||||
output = theName+damask.util.deemph(theExt)
|
|
||||||
else:
|
|
||||||
output = damask.util.emph(theName)+damask.util.deemph(theExt)
|
|
||||||
|
|
||||||
sys.stdout.write(damask.util.deemph('... ')+output+'\n')
|
|
||||||
os.symlink(src,sym_link)
|
|
||||||
|
|
||||||
|
|
||||||
sys.stdout.write('\npruning broken links...\n')
|
sys.stdout.write('\npruning broken links...\n')
|
||||||
|
for filename in bin_dir.glob('*'):
|
||||||
brokenLinks = 0
|
if not filename.is_file():
|
||||||
|
filename.unlink
|
||||||
for filename in os.listdir(binDir):
|
|
||||||
path = os.path.join(binDir,filename)
|
|
||||||
if os.path.islink(path) and not os.path.exists(path):
|
|
||||||
sys.stdout.write(' '+damask.util.delete(path)+'\n')
|
|
||||||
os.remove(path)
|
|
||||||
brokenLinks += 1
|
|
||||||
|
|
||||||
sys.stdout.write(('none.' if brokenLinks == 0 else '')+'\n')
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ import numpy as np
|
||||||
from optparse import OptionParser
|
from optparse import OptionParser
|
||||||
import damask
|
import damask
|
||||||
|
|
||||||
sys.path.append(damask.solver.Marc().libraryPath())
|
sys.path.append(str(damask.solver.Marc().library_path))
|
||||||
|
|
||||||
scriptName = os.path.splitext(os.path.basename(__file__))[0]
|
scriptName = os.path.splitext(os.path.basename(__file__))[0]
|
||||||
scriptID = ' '.join([scriptName,damask.version])
|
scriptID = ' '.join([scriptName,damask.version])
|
||||||
|
|
|
@ -9,7 +9,7 @@ import damask
|
||||||
|
|
||||||
scriptName = os.path.splitext(os.path.basename(__file__))[0]
|
scriptName = os.path.splitext(os.path.basename(__file__))[0]
|
||||||
scriptID = ' '.join([scriptName,damask.version])
|
scriptID = ' '.join([scriptName,damask.version])
|
||||||
sys.path.append(damask.solver.Marc().libraryPath())
|
sys.path.append(str(damask.solver.Marc().library_path))
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------------------------
|
||||||
def outMentat(cmd,locals):
|
def outMentat(cmd,locals):
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
import os
|
import os
|
||||||
|
from pathlib import Path
|
||||||
import tkinter
|
import tkinter
|
||||||
|
|
||||||
class Environment:
|
class Environment:
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
"""Read and provide values of DAMASK configuration."""
|
"""Read and provide values of DAMASK configuration."""
|
||||||
self.options = self._get_options()
|
|
||||||
try:
|
try:
|
||||||
tk = tkinter.Tk()
|
tk = tkinter.Tk()
|
||||||
self.screen_width = tk.winfo_screenwidth()
|
self.screen_width = tk.winfo_screenwidth()
|
||||||
|
@ -15,17 +15,8 @@ class Environment:
|
||||||
self.screen_width = 1024
|
self.screen_width = 1024
|
||||||
self.screen_height = 768
|
self.screen_height = 768
|
||||||
|
|
||||||
def relPath(self,relative = '.'):
|
@property
|
||||||
"""Return absolute path from path relative to DAMASK root."""
|
def options(self):
|
||||||
return os.path.join(self.rootDir(),relative)
|
|
||||||
|
|
||||||
|
|
||||||
def rootDir(self):
|
|
||||||
"""Return DAMASK root path."""
|
|
||||||
return os.path.normpath(os.path.join(os.path.realpath(__file__),'../../../'))
|
|
||||||
|
|
||||||
|
|
||||||
def _get_options(self):
|
|
||||||
options = {}
|
options = {}
|
||||||
for item in ['DAMASK_NUM_THREADS',
|
for item in ['DAMASK_NUM_THREADS',
|
||||||
'MSC_ROOT',
|
'MSC_ROOT',
|
||||||
|
@ -34,3 +25,13 @@ class Environment:
|
||||||
options[item] = os.environ[item] if item in os.environ else None
|
options[item] = os.environ[item] if item in os.environ else None
|
||||||
|
|
||||||
return options
|
return options
|
||||||
|
|
||||||
|
@property
|
||||||
|
def root_dir(self):
|
||||||
|
"""Return DAMASK root path."""
|
||||||
|
return Path(__file__).parents[2]
|
||||||
|
|
||||||
|
|
||||||
|
# for compatibility
|
||||||
|
def rootDir(self):
|
||||||
|
return str(self.root_dir)
|
||||||
|
|
|
@ -2,6 +2,7 @@ import os
|
||||||
import subprocess
|
import subprocess
|
||||||
import shlex
|
import shlex
|
||||||
import string
|
import string
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
from .._environment import Environment
|
from .._environment import Environment
|
||||||
|
|
||||||
|
@ -25,22 +26,22 @@ class Marc:
|
||||||
self.version = -1
|
self.version = -1
|
||||||
|
|
||||||
|
|
||||||
#--------------------------
|
@property
|
||||||
def libraryPath(self):
|
def library_path(self):
|
||||||
|
|
||||||
path_MSC = Environment().options['MSC_ROOT']
|
path_MSC = Environment().options['MSC_ROOT']
|
||||||
path_lib = '{}/mentat{}/shlib/linux64'.format(path_MSC,self.version)
|
path_lib = Path('{}/mentat{}/shlib/linux64'.format(path_MSC,self.version))
|
||||||
|
|
||||||
return path_lib if os.path.exists(path_lib) else ''
|
return path_lib if path_lib.is_file() else None
|
||||||
|
|
||||||
|
|
||||||
#--------------------------
|
@property
|
||||||
def toolsPath(self):
|
def tools_path(self):
|
||||||
|
|
||||||
path_MSC = Environment().options['MSC_ROOT']
|
path_MSC = Environment().options['MSC_ROOT']
|
||||||
path_tools = '{}/marc{}/tools'.format(path_MSC,self.version)
|
path_tools = '{}/marc{}/tools'.format(path_MSC,self.version)
|
||||||
|
|
||||||
return path_tools if os.path.exists(path_tools) else ''
|
return path_tools if path_tools.is_file() else None
|
||||||
|
|
||||||
|
|
||||||
#--------------------------
|
#--------------------------
|
||||||
|
@ -53,21 +54,21 @@ class Marc:
|
||||||
):
|
):
|
||||||
|
|
||||||
|
|
||||||
damaskEnv = Environment()
|
env = Environment()
|
||||||
|
|
||||||
user = os.path.join(damaskEnv.relPath('src'),'DAMASK_marc{}.{}'.format(self.version,'f90' if compile else 'marc'))
|
user = env.root_dir/Path('src')/Path('DAMASK_marc{}'.format(version)).with_suffix('.f90' if compile else '.marc')
|
||||||
if not os.path.isfile(user):
|
if not user.is_file():
|
||||||
raise FileNotFoundError("DAMASK4Marc ({}) '{}' not found".format(('source' if compile else 'binary'),user))
|
raise FileNotFoundError("DAMASK4Marc ({}) '{}' not found".format(('source' if compile else 'binary'),user))
|
||||||
|
|
||||||
# Define options [see Marc Installation and Operation Guide, pp 23]
|
# Define options [see Marc Installation and Operation Guide, pp 23]
|
||||||
script = 'run_damask_{}mp'.format(optimization)
|
script = 'run_damask_{}mp'.format(optimization)
|
||||||
|
|
||||||
cmd = os.path.join(self.toolsPath(),script) + \
|
cmd = str(self.tools_path/Path(script)) + \
|
||||||
' -jid ' + model + '_' + job + \
|
' -jid ' + model + '_' + job + \
|
||||||
' -nprocd 1 -autorst 0 -ci n -cr n -dcoup 0 -b no -v no'
|
' -nprocd 1 -autorst 0 -ci n -cr n -dcoup 0 -b no -v no'
|
||||||
|
|
||||||
if compile: cmd += ' -u ' + user + ' -save y'
|
if compile: cmd += ' -u ' + str(user) + ' -save y'
|
||||||
else: cmd += ' -prog ' + os.path.splitext(user)[0]
|
else: cmd += ' -prog ' + str(user.with_suffix(''))
|
||||||
|
|
||||||
print('job submission {} compilation: {}'.format('with' if compile else 'without',user))
|
print('job submission {} compilation: {}'.format('with' if compile else 'without',user))
|
||||||
if logfile: log = open(logfile, 'w')
|
if logfile: log = open(logfile, 'w')
|
||||||
|
|
Loading…
Reference in New Issue