Commit c65bda19 authored by Renato Bellotti's avatar Renato Bellotti
Browse files

Added comments and docstrings for the most important code.

parent cec7a481
......@@ -12,8 +12,16 @@ OpalDictionary class
class OpalDict:
This file contains values from a .data file, plus some user provided values.
def __init__(self, template):
template: str
self.dict = {}
self.rangevars = {}
self.uservars = []
......@@ -41,12 +49,18 @@ class OpalDict:
return self.dict.items()
def fillDictionary(self, fileName):
Read the given .data file and and the key-value pairs to self.
fp = open(fileName, "r")
for line in fp:
if not line == "\n":
li = line.strip()
# ignore outcommented lines
if not li.startswith("#"):
# cut off comments at the end of the line
aline = line.split("#")[0]
# the name-value pairs are separated by whitespace
name, val = aline.split()
self.dict[name.rstrip()] = val.lstrip().rstrip()
......@@ -87,6 +101,14 @@ class OpalDict:
self.scaleDictVar('GUNSOLB', 1.)
def addUserValues(self, argv):
Add user-provided key-value pairs to those from the .data fileself.
argv: str
Command line arguments to
for arg in argv:
if arg.find("=") > 0:
......@@ -55,24 +55,86 @@ class Simulation:
self.opaldict = opaldict
self.dirname = ""
def createDirectory(self, dirname, doKeep, quiet):
def createDirectory(dirname, doKeep, quiet):
Helper method to create a directory.
dirname: str
directory to create
doKeep: bool
if True, keep the directory if it alread exists, else delete it
quiet: bool
if True, do not print output
Whether a new directory was created
# If there's already a directory remove it...
if os.path.isdir(self.dirname):
if os.path.isdir(dirname):
if doKeep:
print('KEEP existing directory {}'.format(self.dirname))
print('KEEP existing directory {}'.format(dirname))
return False
if not quiet:
print('REMOVE existing directory {}'.format(self.dirname))
print('REMOVE existing directory {}'.format(dirname))
# create directory
return True
def run(self, N, baseFileName, inputfilePath, tmplFile, oinpFile,
doTest, doKeep, doNobatch, doOptimize, info, queue, hypert, quiet):
Run an OPAL simulation.
Support for batch systems is available.
N: int
A running number.
Useful when multiple output directories are needed
baseFileName: str
The base name of the simulation.
If the template file is called mysim.tmpl,
then the data file must be called
and the base name is mysim
inputfilePath: str
Path to the directory that contains the .in file
(if running an optimisation).
If running a single simulation: Path to the directory that
contains the .tmpl file(s)
tmplFile: str
Path to the .tmpl file
oinpFile: str
Path to the .in file (called Opal in file)
doTest: bool
if True, does everything but submitting the job
doKeep: bool
if True:
if same simulation has been run before, keep old data and abort
doNobatch: bool
run OPAL locally not using the batch system
and wait until the job is done
doOptimize: bool
use optimization template (if any)
info: int
Steers the std-output of OPAL.
The range is 0 < num < 6 (default), from minimum to maximum output
queue: str
Defines in which queue the job goes.
hypert: int
Defines the number of Hyper-Threads used. Default: 0
quiet: bool
suppress debug printout
# make directory name indicating changed values
self.dirname = baseFileName
if N >= 0:
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment