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
a2b474e0
Commit
a2b474e0
authored
Feb 04, 2019
by
Cristian Lalescu
Browse files
checkpoint
parent
07261318
Pipeline
#43263
failed with stage
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
bfps/DNS.py
View file @
a2b474e0
...
...
@@ -430,9 +430,7 @@ class DNS(_code):
return
None
def
write_par
(
self
,
iter0
=
0
,
particle_ic
=
None
,
particles_off
=
False
):
iter0
=
0
):
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
)
...
...
@@ -479,7 +477,7 @@ class DNS(_code):
4
),
dtype
=
np
.
int64
)
ofile
[
'checkpoint'
]
=
int
(
0
)
if
(
self
.
dns_type
in
[
'NSVE'
,
'NSVE_no_output'
])
or
particles_off
:
if
(
self
.
dns_type
in
[
'NSVE'
,
'NSVE_no_output'
]):
return
None
if
type
(
particle_ic
)
==
type
(
None
):
...
...
@@ -995,58 +993,61 @@ class DNS(_code):
particle_file
.
create_group
(
'tracers0/pressure_gradient'
)
particle_file
.
create_group
(
'tracers0/pressure_Hessian'
)
return
None
def
launch_jobs
(
def
generate_initial_condition
(
self
,
opt
=
None
,
particle_initial_condition
=
None
):
if
not
os
.
path
.
exists
(
os
.
path
.
join
(
self
.
work_dir
,
self
.
simname
+
'.h5'
)):
# take care of fields' initial condition
# first, check if initial field exists
need_field
=
False
if
not
os
.
path
.
exists
(
self
.
get_checkpoint_0_fname
()):
opt
=
None
):
# take care of fields' initial condition
# first, check if initial field exists
need_field
=
False
if
not
os
.
path
.
exists
(
self
.
get_checkpoint_0_fname
()):
need_field
=
True
else
:
f
=
h5py
.
File
(
self
.
get_checkpoint_0_fname
(),
'r'
)
try
:
dset
=
f
[
'vorticity/complex/0'
]
need_field
=
(
dset
.
shape
==
(
self
.
parameters
[
'ny'
],
self
.
parameters
[
'nz'
],
self
.
parameters
[
'nx'
]
//
2
+
1
,
3
))
except
:
need_field
=
True
f
.
close
()
if
need_field
:
f
=
h5py
.
File
(
self
.
get_checkpoint_0_fname
(),
'a'
)
if
len
(
opt
.
src_simname
)
>
0
:
source_cp
=
0
src_file
=
'not_a_file'
while
True
:
src_file
=
os
.
path
.
join
(
os
.
path
.
realpath
(
opt
.
src_work_dir
),
opt
.
src_simname
+
'_checkpoint_{0}.h5'
.
format
(
source_cp
))
f0
=
h5py
.
File
(
src_file
,
'r'
)
if
'{0}'
.
format
(
opt
.
src_iteration
)
in
f0
[
'vorticity/complex'
].
keys
():
f0
.
close
()
break
source_cp
+=
1
self
.
copy_complex_field
(
src_file
,
'vorticity/complex/{0}'
.
format
(
opt
.
src_iteration
),
f
,
'vorticity/complex/{0}'
.
format
(
0
))
else
:
f
=
h5py
.
File
(
self
.
get_checkpoint_0_fname
(),
'r'
)
try
:
dset
=
f
[
'vorticity/complex/0'
]
need_field
=
(
dset
.
shape
==
(
self
.
parameters
[
'ny'
],
self
.
parameters
[
'nz'
],
self
.
parameters
[
'nx'
]
//
2
+
1
,
3
))
except
:
need_field
=
True
f
.
close
()
if
need_field
:
f
=
h5py
.
File
(
self
.
get_checkpoint_0_fname
(),
'a'
)
if
len
(
opt
.
src_simname
)
>
0
:
source_cp
=
0
src_file
=
'not_a_file'
while
True
:
src_file
=
os
.
path
.
join
(
os
.
path
.
realpath
(
opt
.
src_work_dir
),
opt
.
src_simname
+
'_checkpoint_{0}.h5'
.
format
(
source_cp
))
f0
=
h5py
.
File
(
src_file
,
'r'
)
if
'{0}'
.
format
(
opt
.
src_iteration
)
in
f0
[
'vorticity/complex'
].
keys
():
f0
.
close
()
break
source_cp
+=
1
self
.
copy_complex_field
(
src_file
,
'vorticity/complex/{0}'
.
format
(
opt
.
src_iteration
),
f
,
'vorticity/complex/{0}'
.
format
(
0
))
else
:
data
=
self
.
generate_vector_field
(
write_to_file
=
False
,
spectra_slope
=
2.0
,
amplitude
=
0.05
)
f
[
'vorticity/complex/{0}'
.
format
(
0
)]
=
data
f
.
close
()
self
.
write_par
(
particle_ic
=
None
)
# take care of particles' initial condition
if
self
.
dns_type
in
[
'NSVEparticles'
,
'NSVEcomplex_particles'
,
'NSVEparticles_no_output'
,
'NSVEp_extra_sampling'
]:
self
.
generate_particle_data
(
opt
=
opt
)
data
=
self
.
generate_vector_field
(
write_to_file
=
False
,
spectra_slope
=
2.0
,
amplitude
=
0.05
)
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'
]:
self
.
generate_particle_data
(
opt
=
opt
)
return
None
def
launch_jobs
(
self
,
opt
=
None
):
if
not
os
.
path
.
exists
(
self
.
get_data_file_name
()):
self
.
generate_initial_condition
()
self
.
write_par
()
self
.
run
(
nb_processes
=
opt
.
nb_processes
,
nb_threads_per_process
=
opt
.
nb_threads_per_process
,
...
...
bfps/test/test_particle_clouds.py
0 → 100644
View file @
a2b474e0
#! /usr/bin/env python
#######################################################################
# #
# Copyright 2019 Max Planck Institute #
# for Dynamics and Self-Organization #
# #
# This file is part of bfps. #
# #
# bfps is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published #
# by the Free Software Foundation, either version 3 of the License, #
# or (at your option) any later version. #
# #
# bfps is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# You should have received a copy of the GNU General Public License #
# along with bfps. If not, see <http://www.gnu.org/licenses/> #
# #
# Contact: Cristian.Lalescu@ds.mpg.de #
# #
#######################################################################
import
os
import
numpy
as
np
import
h5py
import
sys
import
bfps
from
bfps
import
DNS
def
main
():
nclouds
=
4
nparticles_per_cloud
=
3
nparticles
=
nclouds
*
nparticles_per_cloud
niterations
=
32
c
=
DNS
()
ic_file
=
h5py
.
File
(
c
.
get_checkpoint_0_fname
(),
'a'
)
ic_file
[
'tracers0/state/0'
]
=
np
.
random
.
random
((
nclouds
,
nparticles_per_cloud
,
3
))
ic_file
[
'tracers0/rhs/0'
]
=
np
.
zeros
((
2
,
nclouds
,
nparticles_per_cloud
,
3
))
ic_file
.
close
()
c
.
launch
(
[
'NSVEparticles'
,
'-n'
,
'32'
,
'--src-simname'
,
'B32p1e4'
,
'--forcing_type'
,
'linear'
,
'--src-wd'
,
bfps
.
lib_dir
+
'/test'
,
'--src-iteration'
,
'0'
,
'--np'
,
'4'
,
'--ntpp'
,
'1'
,
'--fftw_plan_rigor'
,
'FFTW_PATIENT'
,
'--niter_todo'
,
'{0}'
.
format
(
niterations
),
'--niter_out'
,
'{0}'
.
format
(
niterations
),
'--niter_stat'
,
'1'
,
'--nparticles'
,
'{0}'
.
format
(
nparticles
),
'--tracers0_integration_steps'
,
'2'
,
'--wd'
,
'./'
])
return
None
if
__name__
==
'__main__'
:
main
()
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