Skip to content
Snippets Groups Projects
Commit 98c3eb2f authored by Cristian Lalescu's avatar Cristian Lalescu
Browse files

make the DNS class more general

parent 32e6ba50
No related branches found
No related tags found
1 merge request!23WIP: Feature/use cmake
Pipeline #
......@@ -78,7 +78,8 @@ class DNS(_code):
self.C_field_dtype = 'double'
self.fluid_precision = 'double'
return None
def write_src(self):
def write_src(
self):
self.version_message = (
'/***********************************************************************\n' +
'* this code automatically generated by bfps\n' +
......@@ -623,7 +624,8 @@ class DNS(_code):
return None
def prepare_launch(
self,
args = []):
args = [],
extra_parameters = None):
"""Set up reasonable parameters.
With the default Lundgren forcing applied in the band [2, 4],
......@@ -657,6 +659,10 @@ class DNS(_code):
if self.dns_type in ['NSVEparticles', 'NSVEparticles_no_output']:
for k in self.NSVEp_extra_parameters.keys():
self.parameters[k] = self.NSVEp_extra_parameters[k]
if type(extra_parameters) != type(None):
if self.dns_type in extra_parameters.keys():
for k in extra_parameters[self.dns_type].keys():
self.parameters[k] = extra_parameters[self.dns_type][k]
self.parameters['nu'] = (opt.kMeta * 2 / opt.n)**(4./3)
self.parameters['dt'] = (opt.dtfactor / opt.n)
# custom famplitude for 288 and 576
......@@ -837,12 +843,10 @@ class DNS(_code):
for kz in range(src_file[src_dset_name].shape[0]):
dst_file[dst_dset_name][kz] = src_file[src_dset_name][kz]
else:
print('aloha')
min_shape = (min(dst_shape[0], src_file[src_dset_name].shape[0]),
min(dst_shape[1], src_file[src_dset_name].shape[1]),
min(dst_shape[2], src_file[src_dset_name].shape[2]),
3)
print(self.ctype)
dst_file.create_dataset(
dst_dset_name,
shape = dst_shape,
......@@ -852,6 +856,18 @@ class DNS(_code):
dst_file[dst_dset_name][kz,:min_shape[1], :min_shape[2]] = \
src_file[src_dset_name][kz, :min_shape[1], :min_shape[2]]
return None
def generate_particle_data(
self,
opt = None):
if self.parameters['nparticles'] > 0:
self.generate_tracer_state(
species = 0,
rseed = opt.particle_rand_seed)
if not os.path.exists(self.get_particle_file_name()):
with h5py.File(self.get_particle_file_name(), 'w') as particle_file:
particle_file.create_group('tracers0/velocity')
particle_file.create_group('tracers0/acceleration')
return None
def launch_jobs(
self,
opt = None,
......@@ -911,14 +927,7 @@ class DNS(_code):
self.write_par(
particle_ic = None)
if self.dns_type in ['NSVEparticles', 'NSVEparticles_no_output']:
if self.parameters['nparticles'] > 0:
self.generate_tracer_state(
species = 0,
rseed = opt.particle_rand_seed)
if not os.path.exists(self.get_particle_file_name()):
with h5py.File(self.get_particle_file_name(), 'w') as particle_file:
particle_file.create_group('tracers0/velocity')
particle_file.create_group('tracers0/acceleration')
self.generate_particle_data(opt = opt)
self.run(
nb_processes = opt.nb_processes,
nb_threads_per_process = opt.nb_threads_per_process,
......
......@@ -58,9 +58,9 @@ int NSVEparticles<rnumber>::write_checkpoint(void)
template <typename rnumber>
int NSVEparticles<rnumber>::finalize(void)
{
this->NSVE<rnumber>::finalize();
this->ps.release();
delete this->particles_output_writer_mpi;
this->NSVE<rnumber>::finalize();
return EXIT_SUCCESS;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment