diff --git a/tests/DNS/test_scaling.py b/tests/DNS/test_scaling.py index e8609f31400bb13db5c4881fdea110ee54c2f5c4..d359626b6b39566e15b870f8047ee9cd1757b41d 100644 --- a/tests/DNS/test_scaling.py +++ b/tests/DNS/test_scaling.py @@ -3,7 +3,7 @@ import numpy as np import argparse import os -import turtle +import TurTLE def get_DNS_parameters( DNS_type = 'A', @@ -16,8 +16,11 @@ def get_DNS_parameters( environment = 'express', minutes = '29', no_submit = True, - src_dirname = '/draco/ptmp/clalescu/scaling'): - assert (N in [1024, 2048, 4096]) + src_dirname = '/draco/ptmp/clalescu/scaling', + src_prefix = 'fbL', + src_iteration = None, + kMeta = 1.5): + assert (N in [128, 1024, 2048, 4096]) simname = (DNS_type + '{0:0>4d}'.format(N)) if output_on: simname = DNS_type + simname @@ -30,14 +33,15 @@ def get_DNS_parameters( work_dir = 'nn{0:0>4d}np{1}'.format(nnodes, nprocesses) if not output_on: class_name += '_no_output' - src_simname = 'fb3_N{0:0>4d}_kMeta1.5'.format(N) - if N == 1024: - src_iteration = 32*1024 - if N == 2048: - src_iteration = 20*1024 - if N == 4096: - src_simname = 'fb3_N2048x2_kMeta1.5' - src_iteration = 0 + src_simname = src_prefix + '_N{0:0>4d}_kMeta{1:.1f}'.format(N, kMeta) + if type(src_iteration) == type(None): + if N == 1024: + src_iteration = 32*1024 + if N == 2048: + src_iteration = 20*1024 + if N == 4096: + src_simname = 'fb3_N2048x2_kMeta1.5' + src_iteration = 0 DNS_parameters = [ class_name, '-n', '{0}'.format(N), @@ -48,10 +52,24 @@ def get_DNS_parameters( '--niter_todo', '12', '--niter_out', '12', '--niter_stat', '3'] + # check that source sim exists + assert(os.path.exists(os.path.join(src_dirname, src_simname + '.h5'))) + # check that source checkpoint exists + dns_src = TurTLE.DNS(simname = src_simname, work_dir = src_dirname) + dns_src.read_parameters() + assert(os.path.exists(dns_src.get_checkpoint_fname(iteration = src_iteration))) DNS_parameters += [ '--src-wd', src_dirname, '--src-simname', src_simname, '--src-iteration', '{0}'.format(src_iteration)] + # hardcode precision: + if N <= 1024: + DNS_parameters += ['--precision', 'single'] + else: + DNS_parameters += ['--precision', 'double'] + # copy parameters from source simulation + for parameter in ['fk0', 'fk1', 'forcing_type', 'dt', 'dealias_type', 'dkx', 'dky', 'dkz', 'energy', 'famplitude', 'fmode', 'injection_rate', 'nu']: + DNS_parameters += ['--' + parameter, '{0}'.format(dns_src.parameters[parameter])] if DNS_type != 'A': DNS_parameters += [ '--nparticles', '{0}'.format(nparticles)] @@ -136,6 +154,21 @@ def main(): type = str, dest = 'src_dirname', default = '/draco/ptmp/clalescu/scaling') + parser.add_argument( + '--src-prefix', + type = str, + dest = 'src_prefix', + default = 'fbL') + parser.add_argument( + '--src-kMeta', + type = float, + dest = 'src_kMeta', + default = 1.5) + parser.add_argument( + '--src-iteration', + type = int, + dest = 'src_iteration', + default = None) opt = parser.parse_args(sys.argv[1:]) simname, work_dir, params = get_DNS_parameters( DNS_type = opt.DNS_setup, @@ -148,7 +181,10 @@ def main(): no_submit = not opt.submit, minutes = opt.minutes, environment = opt.environment, - src_dirname = opt.src_dirname) + src_dirname = opt.src_dirname, + src_prefix = opt.src_prefix, + src_iteration = opt.src_iteration, + kMeta = opt.src_kMeta) print(work_dir + '/' + simname) print(' '.join(params)) # these following 2 lines actually launch something @@ -156,7 +192,7 @@ def main(): # parameter conflicts after the simname and work_dir have been decided if not os.path.exists(work_dir): os.makedirs(work_dir) - c = turtle.DNS() + c = TurTLE.DNS() c.launch(params) return None