Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
TurTLE
TurTLE
Commits
3ad8cf2d
Commit
3ad8cf2d
authored
Jan 20, 2020
by
Tobias Baetge
Committed by
Cristian Lalescu
Jan 30, 2020
Browse files
test for different drag coefficients in quiescent flow
parent
48bfdd45
Changes
4
Hide whitespace changes
Inline
Side-by-side
TurTLE/DNS.py
View file @
3ad8cf2d
...
@@ -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.0
5
)
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
,
...
...
TurTLE/test/test_turtle_NSVE_Stokes_particles.py
View file @
3ad8cf2d
...
@@ -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
=
1
0
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__'
:
...
...
cpp/full_code/NSVE_Stokes_particles.cpp
View file @
3ad8cf2d
...
@@ -45,8 +45,8 @@ int NSVE_Stokes_particles<rnumber>::initialize(void)
...
@@ -45,8 +45,8 @@ int NSVE_Stokes_particles<rnumber>::initialize(void)
this
->
fs
->
cvelocity
->
fftw_plan_rigor
);
this
->
fs
->
cvelocity
->
fftw_plan_rigor
);
particles_inner_computer_2nd_order_Stokes
<
double
,
long
long
int
>
current_particles_inner_computer
;
particles_inner_computer_2nd_order_Stokes
<
double
,
long
long
int
>
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<rnumber>::initialize(void)
...
@@ -79,7 +79,7 @@ int NSVE_Stokes_particles<rnumber>::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<rnumber>::read_parameters(void)
...
@@ -207,6 +207,7 @@ int NSVE_Stokes_particles<rnumber>::read_parameters(void)
this
->
tracers0_neighbours
=
hdf5_tools
::
read_value
<
int
>
(
parameter_file
,
"parameters/tracers0_neighbours"
);
this
->
tracers0_neighbours
=
hdf5_tools
::
read_value
<
int
>
(
parameter_file
,
"parameters/tracers0_neighbours"
);
this
->
tracers0_smoothness
=
hdf5_tools
::
read_value
<
int
>
(
parameter_file
,
"parameters/tracers0_smoothness"
);
this
->
tracers0_smoothness
=
hdf5_tools
::
read_value
<
int
>
(
parameter_file
,
"parameters/tracers0_smoothness"
);
this
->
tracers0_cutoff
=
hdf5_tools
::
read_value
<
double
>
(
parameter_file
,
"parameters/tracers0_cutoff"
);
this
->
tracers0_cutoff
=
hdf5_tools
::
read_value
<
double
>
(
parameter_file
,
"parameters/tracers0_cutoff"
);
this
->
drag_coefficient
=
hdf5_tools
::
read_value
<
double
>
(
parameter_file
,
"parameters/drag_coefficient"
);
H5Fclose
(
parameter_file
);
H5Fclose
(
parameter_file
);
return
EXIT_SUCCESS
;
return
EXIT_SUCCESS
;
}
}
...
...
cpp/full_code/NSVE_Stokes_particles.hpp
View file @
3ad8cf2d
...
@@ -58,7 +58,7 @@ class NSVE_Stokes_particles: public NSVE<rnumber>
...
@@ -58,7 +58,7 @@ class NSVE_Stokes_particles: public NSVE<rnumber>
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
<
abstract_particles_system
<
long
long
int
,
double
>>
ps
;
std
::
unique_ptr
<
abstract_particles_system
<
long
long
int
,
double
>>
ps
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment