Commit 3ad8cf2d by Tobias Baetge Committed by Cristian Lalescu

### test for different drag coefficients in quiescent flow

parent 48bfdd45
 ... @@ -704,8 +704,9 @@ class DNS(_code): ... @@ -704,8 +704,9 @@ class DNS(_code): pars['spectrum_k_cutoff'] = float(16) pars['spectrum_k_cutoff'] = float(16) pars['spectrum_coefficient'] = float(1) pars['spectrum_coefficient'] = float(1) if dns_type == 'NSVE_Stokes_particles': if dns_type == 'NSVE_Stokes_particles': pars['initial_field_amplitude'] = float(0.05) pars['initial_field_amplitude'] = float(0.0) pars['initial_particle_vel'] = float(0.05) pars['initial_particle_vel'] = float(0.05) pars['drag_coefficient'] = float(0.1) return pars return pars def prepare_launch( def prepare_launch( self, self, ... ...
 ... @@ -29,42 +29,77 @@ import os ... @@ -29,42 +29,77 @@ import os import numpy as np import numpy as np import h5py import h5py import sys import sys import matplotlib.pyplot as plt import TurTLE import TurTLE from TurTLE import DNS from TurTLE import DNS def main(): def main(): """ """ Run test where the trajectory of initially moving particles in a Run test where the trajectory of initially moving particles in a quiescent flow is compared to the analytical exponential quiescent flow is compared to the analytical exponential """ """ drag_coefficients = ['30.','20.','10.','1.','0.1'] niterations = 100 niterations = 100 nparticles = 10 nparticles = 1 njobs = 1 njobs = 1 c = DNS() dt=0.01 c.launch( fig = plt.figure() plt.ylabel('$v$') plt.xlabel('$t$') plt.yscale('log') j=0 for drag_coeff in drag_coefficients: c = DNS() c.launch( ['NSVE_Stokes_particles', ['NSVE_Stokes_particles', '-n', '32', '-n', '32', '--simname', 'quiescent_nsve_stokes_particles', '--simname', 'quiescent_nsve_stokes_particles_drag'+str(j), '--np', '4', '--np', '4', '--ntpp', '1', '--ntpp', '1', '--dt', '{0}'.format(dt), '--fftw_plan_rigor', 'FFTW_PATIENT', '--fftw_plan_rigor', 'FFTW_PATIENT', '--niter_todo', '{0}'.format(niterations), '--niter_todo', '{0}'.format(niterations), '--niter_out', '{0}'.format(niterations), '--niter_out', '{0}'.format(1), '--niter_stat', '1', '--niter_stat', '1', '--checkpoints_per_file', '{0}'.format(3), '--checkpoints_per_file', '{0}'.format(3), '--nparticles', '{0}'.format(nparticles), '--nparticles', '{0}'.format(nparticles), '--initial_field_amplitude', '0', '--initial_field_amplitude', '0', '--initial_particle_vel', '0.05', '--initial_particle_vel', '0.05', '--drag_coefficient', drag_coeff, '--famplitude', '0', '--famplitude', '0', '--njobs', '{0}'.format(njobs), '--njobs', '{0}'.format(njobs), '--wd', './'] + '--wd', './'] + sys.argv[1:]) sys.argv[1:]) f = h5py.File('quiescent_nsve_stokes_particles_particles.h5', 'r') print(f['tracers0/momentum/0'][:]) print(f['tracers0/momentum/100'][:]-f['tracers0/momentum/0'][:]) f = h5py.File('quiescent_nsve_stokes_particles_drag'+str(j)+'_particles.h5', 'r') print(f['tracers0/position/100'][:]-f['tracers0/position/0'][:]) f2 = h5py.File('quiescent_nsve_stokes_particles_drag'+str(j)+'.h5', 'r') particle_momentum = [np.sqrt(f['tracers0/momentum/'+'{}'.format(i)][0][0]**2 +f['tracers0/momentum/'+'{}'.format(i)][0][1]**2 +f['tracers0/momentum/'+'{}'.format(i)][0][2]**2) for i in range(niterations)] time_values = np.arange(0, niterations*dt, dt) def theory_exponential(t): return f2['parameters/initial_particle_vel']*np.exp(-t*np.float(drag_coeff)) numerics, = plt.plot(time_values, particle_momentum, alpha = 0.3, lw=2) plt.plot(time_values, theory_exponential(time_values), color=numerics.get_color(), ls = '--') plt.plot(0,0,color=numerics.get_color(),label=r'$\frac{1}{St}=$'+drag_coeff) plt.legend(loc='lower left') print(f['tracers0/momentum/0'][:]) print(f['tracers0/momentum/100'][:]-f['tracers0/momentum/0'][:]) print(f['tracers0/position/100'][:]-f['tracers0/position/0'][:]) plt.savefig('Stokes_test1.pdf') j+=1 return None return None if __name__ == '__main__': if __name__ == '__main__': ... ...
 ... @@ -45,8 +45,8 @@ int NSVE_Stokes_particles::initialize(void) ... @@ -45,8 +45,8 @@ int NSVE_Stokes_particles::initialize(void) this->fs->cvelocity->fftw_plan_rigor); this->fs->cvelocity->fftw_plan_rigor); particles_inner_computer_2nd_order_Stokes current_particles_inner_computer; particles_inner_computer_2nd_order_Stokes current_particles_inner_computer; current_particles_inner_computer.set_drag_coefficient(0.1); current_particles_inner_computer.set_drag_coefficient(this->drag_coefficient); DEBUG_MSG("drag coefficient is set to %f \n", current_particles_inner_computer.get_drag_coefficient()); //DEBUG_MSG("drag coefficient is set to %f \n", current_particles_inner_computer.get_drag_coefficient()); //DEBUG_MSG_WAIT(MPI_COMM_WORLD, "before call to particles_system_builder\n"); //DEBUG_MSG_WAIT(MPI_COMM_WORLD, "before call to particles_system_builder\n"); this->ps = particles_system_builder_with_p2p( this->ps = particles_system_builder_with_p2p( this->fs->cvelocity, // (field object) this->fs->cvelocity, // (field object) ... @@ -79,7 +79,7 @@ int NSVE_Stokes_particles::initialize(void) ... @@ -79,7 +79,7 @@ int NSVE_Stokes_particles::initialize(void) "tracers0", "tracers0", "position/0"); "position/0"); this->particles_sample_writer_mpi->setParticleFileLayout(this->ps->getParticleFileLayout()); this->particles_sample_writer_mpi->setParticleFileLayout(this->ps->getParticleFileLayout()); DEBUG_MSG("drag coefficient is after initialization %f \n", current_particles_inner_computer.get_drag_coefficient()); //DEBUG_MSG("drag coefficient is after initialization %f \n", current_particles_inner_computer.get_drag_coefficient()); return EXIT_SUCCESS; return EXIT_SUCCESS; } } ... @@ -207,6 +207,7 @@ int NSVE_Stokes_particles::read_parameters(void) ... @@ -207,6 +207,7 @@ int NSVE_Stokes_particles::read_parameters(void) this->tracers0_neighbours = hdf5_tools::read_value(parameter_file, "parameters/tracers0_neighbours"); this->tracers0_neighbours = hdf5_tools::read_value(parameter_file, "parameters/tracers0_neighbours"); this->tracers0_smoothness = hdf5_tools::read_value(parameter_file, "parameters/tracers0_smoothness"); this->tracers0_smoothness = hdf5_tools::read_value(parameter_file, "parameters/tracers0_smoothness"); this->tracers0_cutoff = hdf5_tools::read_value(parameter_file, "parameters/tracers0_cutoff"); this->tracers0_cutoff = hdf5_tools::read_value(parameter_file, "parameters/tracers0_cutoff"); this->drag_coefficient = hdf5_tools::read_value(parameter_file, "parameters/drag_coefficient"); H5Fclose(parameter_file); H5Fclose(parameter_file); return EXIT_SUCCESS; return EXIT_SUCCESS; } } ... ...
 ... @@ -58,7 +58,7 @@ class NSVE_Stokes_particles: public NSVE ... @@ -58,7 +58,7 @@ class NSVE_Stokes_particles: public NSVE int tracers0_neighbours; int tracers0_neighbours; int tracers0_smoothness; int tracers0_smoothness; double tracers0_cutoff; double tracers0_cutoff; double drag_coefficient; /* other stuff */ /* other stuff */ std::unique_ptr> ps; std::unique_ptr> ps; ... ...
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!