From 1715435683d3b2261cbeda1a8a3c44e545abb243 Mon Sep 17 00:00:00 2001 From: Cristian C Lalescu <Cristian.Lalescu@ds.mpg.de> Date: Mon, 30 Sep 2019 15:06:40 +0200 Subject: [PATCH] hacks DNS.py to run static_field this is not nice at all, but the purpose is to have basic functionality for testing. It's pretty obvious this will need a custom launcher for production work. --- TurTLE/DNS.py | 14 +++++++++----- cpp/full_code/static_field.cpp | 7 +++++-- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/TurTLE/DNS.py b/TurTLE/DNS.py index 411f2cf7..21ef90ed 100644 --- a/TurTLE/DNS.py +++ b/TurTLE/DNS.py @@ -440,7 +440,7 @@ class DNS(_code): assert (self.parameters['niter_todo'] % self.parameters['niter_stat'] == 0) assert (self.parameters['niter_todo'] % self.parameters['niter_out'] == 0) assert (self.parameters['niter_out'] % self.parameters['niter_stat'] == 0) - if self.dns_type in ['NSVEparticles_no_output', 'NSVEcomplex_particles', 'NSVEparticles']: + if self.dns_type in ['NSVEparticles_no_output', 'NSVEcomplex_particles', 'NSVEparticles', 'static_field']: assert (self.parameters['niter_todo'] % self.parameters['niter_part'] == 0) assert (self.parameters['niter_out'] % self.parameters['niter_part'] == 0) _code.write_par(self, iter0 = iter0) @@ -643,6 +643,10 @@ class DNS(_code): 'NSVEparticles_no_output', help = 'plain Navier-Stokes vorticity formulation, with basic fluid tracers, checkpoints are NOT SAVED') + parser_static_field = subparsers.add_parser( + 'static_field', + help = 'static field with basic fluid tracers') + parser_NSVEp2 = subparsers.add_parser( 'NSVEparticles', help = 'plain Navier-Stokes vorticity formulation, with basic fluid tracers') @@ -655,7 +659,7 @@ class DNS(_code): 'NSVEp_extra_sampling', help = 'plain Navier-Stokes vorticity formulation, with basic fluid tracers, that sample velocity gradient, as well as pressure and its derivatives.') - for parser in ['NSVEparticles_no_output', 'NSVEp2', 'NSVEp2p', 'NSVEp_extra']: + for parser in ['NSVEparticles_no_output', 'NSVEp2', 'NSVEp2p', 'NSVEp_extra', 'static_field']: eval('self.simulation_parser_arguments({0})'.format('parser_' + parser)) eval('self.job_parser_arguments({0})'.format('parser_' + parser)) eval('self.particle_parser_arguments({0})'.format('parser_' + parser)) @@ -698,7 +702,7 @@ class DNS(_code): self.dns_type = opt.DNS_class self.name = self.dns_type + '-' + self.fluid_precision + '-v' + TurTLE.__version__ # merge parameters if needed - if self.dns_type in ['NSVEparticles', 'NSVEcomplex_particles', 'NSVEparticles_no_output', 'NSVEp_extra_sampling']: + if self.dns_type in ['NSVEparticles', 'NSVEcomplex_particles', 'NSVEparticles_no_output', 'NSVEp_extra_sampling', 'static_field']: for k in self.NSVEp_extra_parameters.keys(): self.parameters[k] = self.NSVEp_extra_parameters[k] if type(extra_parameters) != type(None): @@ -763,7 +767,7 @@ class DNS(_code): # hardcoded FFTW complex representation size field_size = 3*(opt.nx+2)*opt.ny*opt.nz*self.fluid_dtype.itemsize checkpoint_size = field_size - if self.dns_type in ['NSVEparticles', 'NSVEcomplex_particles', 'NSVEparticles_no_output', 'NSVEp_extra_sampling']: + if self.dns_type in ['static_field', 'NSVEparticles', 'NSVEcomplex_particles', 'NSVEparticles_no_output', 'NSVEp_extra_sampling']: rhs_size = self.parameters['tracers0_integration_steps'] if type(opt.tracers0_integration_steps) != type(None): rhs_size = opt.tracers0_integration_steps @@ -1039,7 +1043,7 @@ class DNS(_code): f['vorticity/complex/{0}'.format(0)] = data f.close() # now take care of particles' initial condition - if self.dns_type in ['NSVEparticles', 'NSVEcomplex_particles', 'NSVEparticles_no_output', 'NSVEp_extra_sampling']: + if self.dns_type in ['static_field', 'NSVEparticles', 'NSVEcomplex_particles', 'NSVEparticles_no_output', 'NSVEp_extra_sampling']: self.generate_particle_data(opt = opt) return None def launch_jobs( diff --git a/cpp/full_code/static_field.cpp b/cpp/full_code/static_field.cpp index b7aaad36..0b679739 100644 --- a/cpp/full_code/static_field.cpp +++ b/cpp/full_code/static_field.cpp @@ -65,14 +65,16 @@ int static_field<rnumber>::initialize(void) nx, ny, nz, this->comm, fftw_planner_string_to_flag[this->fftw_plan_rigor]); + this->vorticity->real_space_representation = false; this->velocity = new field<rnumber, FFTW, THREE>( nx, ny, nz, this->comm, fftw_planner_string_to_flag[this->fftw_plan_rigor]); - //reading initial field which is either default or a specified source field + this->velocity->real_space_representation = false; + //read vorticity field this->vorticity->io( - this->simname + std::string(".h5"), + this->simname + std::string("_checkpoint_0.h5"), "vorticity", this->iteration, true); @@ -94,6 +96,7 @@ int static_field<rnumber>::initialize(void) template <typename rnumber> int static_field<rnumber>::step(void) { + this->iteration ++; return EXIT_SUCCESS; } -- GitLab