Commit b49f29db authored by Cristian Lalescu's avatar Cristian Lalescu
Browse files

Merge branch 'feature/executable' into develop

parents a622d95a f11c52a1
import os
import sys
import numpy as np
import argparse
import bfps
class Launcher:
def __init__(
self,
data_dir = './'):
self.parser = bfps.get_parser(
bfps.NavierStokes,
work_dir = os.path.realpath(data_dir))
def __init__(self):
self.base_class = bfps.NavierStokes
self.parser = argparse.ArgumentParser(prog = 'bfps')
self.parser.add_argument(
'-v', '--version',
action = 'version',
version = '%(prog)s ' + bfps.__version__)
self.parser.add_argument(
'-n',
type = int,
dest = 'n',
default = 32,
metavar = 'N',
help = 'code is run by default in a grid of NxNxN')
self.parser.add_argument(
'--run',
dest = 'run',
action = 'store_true')
self.parser.add_argument(
'--ncpu',
type = int, dest = 'ncpu',
default = 2)
self.parser.add_argument(
'--precision',
type = str, dest = 'precision',
default = 'single')
self.parser.add_argument(
'--simname',
type = str, dest = 'simname',
default = 'test')
self.parser.add_argument(
'--wd',
type = str, dest = 'work_dir',
default = './')
self.parser.add_argument(
'--njobs',
type = int, dest = 'njobs',
default = 1)
self.parser.add_argument(
'--QR-stats',
action = 'store_true',
dest = 'QR_stats')
dest = 'QR_stats',
help = 'add this option if you want to compute velocity gradient and QR stats')
self.parser.add_argument(
'--kMeta',
type = float,
......@@ -41,8 +73,18 @@ class Launcher:
type = int,
dest = 'src_iteration',
default = 0)
self.data_dir = data_dir
self.base_class = bfps.NavierStokes
self.parser.add_argument(
'--particle-rand-seed',
type = int,
dest = 'particle_rand_seed',
default = None)
c = self.base_class()
for k in sorted(c.parameters.keys()):
self.parser.add_argument(
'--{0}'.format(k),
type = type(c.parameters[k]),
dest = k,
default = None)
return None
def __call__(
self,
......@@ -50,17 +92,14 @@ class Launcher:
opt = self.parser.parse_args(args)
if opt.environment != '':
bfps.host_info['environment'] = opt.environment
opt.nx = opt.n
opt.ny = opt.n
opt.nz = opt.n
opt.work_dir = os.path.join(
os.path.realpath(opt.work_dir),
'N{0:0>4}'.format(opt.n))
c = self.base_class(
work_dir = opt.work_dir,
fluid_precision = opt.precision,
simname = opt.simname,
QR_stats_on = opt.QR_stats)
c.pars_from_namespace(opt)
# with the default Lundgren forcing, I can estimate the dissipation
# with nondefault forcing, figure out the amplitude for this viscosity
# yourself
......@@ -75,6 +114,16 @@ class Launcher:
meantrS2 = (opt.n//2 / opt.kMeta)**4 * c.parameters['nu']**2
c.parameters['max_Q_estimate'] = meantrS2
c.parameters['max_R_estimate'] = .4*meantrS2**1.5
# command line parameters will overwrite any defaults
cmd_line_pars = vars(opt)
for k in ['nx', 'ny', 'nz']:
if type(cmd_line_pars[k]) == type(None):
cmd_line_pars[k] = opt.n
for k in c.parameters.keys():
if k in cmd_line_pars.keys():
if not type(cmd_line_pars[k]) == type(None):
c.parameters[k] = cmd_line_pars[k]
c.fill_up_fluid_code()
c.finalize_code()
c.write_src()
......@@ -83,11 +132,7 @@ class Launcher:
if not os.path.exists(os.path.join(c.work_dir, c.simname + '.h5')):
c.write_par()
if c.parameters['nparticles'] > 0:
if opt.particle_rand_seed != 0:
rseed = opt.particle_rand_seed
else:
rseed = None
data = c.generate_tracer_state(species = 0, rseed = rseed)
data = c.generate_tracer_state(species = 0, rseed = opt.particle_rand_seed)
for s in range(1, c.particle_species):
c.generate_tracer_state(species = s, data = data)
init_condition_file = os.path.join(
......
......@@ -53,41 +53,3 @@ from .fluid_converter import fluid_converter
from .fluid_resize import fluid_resize
from .NavierStokes import NavierStokes
import argparse
def get_parser(base_class = NavierStokes,
n = 32,
ncpu = 2,
precision = 'single',
simname = 'test',
work_dir = './',
njobs = 1):
parser = argparse.ArgumentParser()
parser.add_argument('--run', dest = 'run', action = 'store_true')
parser.add_argument('-n',
type = int, dest = 'n',
default = n)
parser.add_argument('--ncpu',
type = int, dest = 'ncpu',
default = ncpu)
parser.add_argument('--precision',
type = str, dest = 'precision',
default = precision)
parser.add_argument('--simname',
type = str, dest = 'simname',
default = simname)
parser.add_argument('--wd',
type = str, dest = 'work_dir',
default = work_dir)
parser.add_argument('--njobs',
type = int, dest = 'njobs',
default = njobs)
c = base_class(simname = simname)
for k in sorted(c.parameters.keys()):
parser.add_argument(
'--{0}'.format(k),
type = type(c.parameters[k]),
dest = k,
default = c.parameters[k])
return parser
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