diff --git a/bfps/FluidResize.py b/bfps/FluidResize.py index 1730a6d63f94a6ae70c06589575cc0027a03d978..0cb0f561163ed3a7f080da5157562b90ab2c26dd 100644 --- a/bfps/FluidResize.py +++ b/bfps/FluidResize.py @@ -24,10 +24,13 @@ -from ._fluid_base import _fluid_particle_base - +import os +import argparse import numpy as np +import bfps +from ._fluid_base import _fluid_particle_base + class FluidResize(_fluid_particle_base): """This class is meant to resize snapshots of DNS states to new grids. Typical stuff for DNS of turbulence. @@ -109,11 +112,45 @@ class FluidResize(_fluid_particle_base): parser): _fluid_particle_base.specific_parser_arguments(self, parser) parser.add_argument( - '-N', + '-m', type = int, - dest = 'N', + dest = 'm', default = 32, metavar = 'M', help = 'resize from N to M') + parser.add_argument( + '--src_wd', + type = str, + dest = 'src_work_dir', + required = True) + parser.add_argument( + '--src_iteration', + type = int, + dest = 'src_iteration', + required = True) + return None + def launch( + self, + args = [], + **kwargs): + parser = argparse.ArgumentParser('bfps ' + type(self).__name__) + self.add_parser_arguments(parser) + opt = parser.parse_args(args) + cmd_line_pars = vars(opt) + for k in ['dst_nx', 'dst_ny', 'dst_nz']: + if type(cmd_line_pars[k]) == type(None): + cmd_line_pars[k] = opt.m + self.pars_from_namespace(opt) + src_file = os.path.join( + opt.src_work_dir, + opt.src_simname + '_cvorticity_i{0:0>5x}'.format(opt.src_iteration)) + read_file = os.path.join( + self.work_dir, + opt.src_simname + '_cvorticity_i{0:0>5x}'.format(opt.src_iteration)) + if not os.path.exists(read_file): + os.symlink(src_file, read_file) + self.set_host_info(bfps.host_info) + self.write_par(iter0 = opt.src_iteration) + self.run(ncpu = opt.ncpu) return None diff --git a/tests/base.py b/tests/base.py index 14b485b27937751ea3e3b078e9dc396a76dcd8b0..2264de23b013fd2f497561fed0cab2b40cd54e56 100644 --- a/tests/base.py +++ b/tests/base.py @@ -92,25 +92,21 @@ parser.add_argument( def double(opt): old_simname = 'N{0:0>3x}'.format(opt.n) new_simname = 'N{0:0>3x}'.format(opt.n*2) - c = FluidResize( - work_dir = opt.work_dir, - simname = old_simname + '_double', - dtype = opt.precision) - c.parameters['nx'] = opt.n - c.parameters['ny'] = opt.n - c.parameters['nz'] = opt.n - c.parameters['dst_nx'] = 2*opt.n - c.parameters['dst_ny'] = 2*opt.n - c.parameters['dst_nz'] = 2*opt.n - c.parameters['dst_simname'] = new_simname - c.parameters['src_simname'] = old_simname - c.parameters['niter_todo'] = 0 - c.write_src() - c.set_host_info({'type' : 'pc'}) - c.write_par() - c.run(ncpu = opt.ncpu, - err_file = 'err_', - out_file = 'out_') + c = FluidResize(dtype = opt.precision) + c.launch( + args = ['--simname', old_simname + '_double', + '--wd', opt.work_dir, + '--nx', '{0}'.format(opt.n), + '--ny', '{0}'.format(opt.n), + '--nz', '{0}'.format(opt.n), + '--dst_nx', '{0}'.format(2*opt.n), + '--dst_ny', '{0}'.format(2*opt.n), + '--dst_nz', '{0}'.format(2*opt.n), + '--dst_simname', new_simname, + '--src_simname', old_simname, + '--src_iteration', '0', + '--src_wd', './', + '--niter_todo', '0']) return None def launch( diff --git a/todo.txt b/todo.txt index 43148eb74932a24a6a9d2004c73842fbe8059da3..d84ce416d8561747f9b603a9564a69126eea430e 100644 --- a/todo.txt +++ b/todo.txt @@ -6,7 +6,7 @@ (C) code overview @documentation (C) move stat I/O to cpp lib @design @HDF5 (C) test involving hydrodynamic similarity @tests -(C) tests should use launch instead of bfps.get_parser @design @tests +(C) tests should use launch instead of get_parser @design @tests (C) use HDF5 io for fields @design @HDF5 +I/O (D) generalize interpolation comparison test @tests (D) generate separate lib(s) with extra classes @tests +alternate_algorithms