Pierre Augier
Open-science? Open-data? Open-source?
Reusable code in sciences?
Benefit from recent and future software and hardward developments?
specialized libraries by and for scientific communities (oriented towards subjects)
Only the beginning of this trend in fluid mechanics.
Science of flows.
Numerical simulations
Open-source, documented, tested, continuous integration
Main developpers: Pierre Augier (LEGI), Cyrille Bonamy (LEGI), Antoine Campagne (LEGI), Ashwin Vishnu (KTH), Julien Salort (ENS Lyon).
In collaboration with a group from KTH (Stockholm): Erik Lindborg, Antoine Campagne, Joël Sommeria, Pierre Augier, ...
(in collaboration with Julien Salors, ENS Lyon)
Examples of the MILESTONE experiments:
probes attached to a transverses (Modbus TCP)
scanning Particle Image Velocimetry (PIV):
Issue: control with computers the interaction and synchronization of the objects
(in collaboration with Julien Salors, ENS Lyon)
rcpy
motor.py
position_sensor.py
position_sensor_server.py
position_sensor_client.py
carriage.py
carriage_server.py
carriage_client.py
(in particular large series of images)
(in collaboration with Cyrille Bonamy and Antoine Campagne, LEGI)
Software for images preprocessing and Particle Image Velocimetry (PIV) computation
Many images (~ 20 To of raw data): embarrassingly parallel problem
Example of scripts to launch a PIV computation:
from fluidimage.topologies.piv import TopologyPIV
params = TopologyPIV.create_default_params()
params.series.path = '../../image_samples/Karman/Images'
params.series.ind_start = 1
params.piv0.shape_crop_im0 = 32
params.multipass.number = 2
params.multipass.use_tps = True
# params.saving.how has to be equal to 'complete' for idempotent jobs
# (on clusters)
params.saving.how = 'complete'
params.saving.postfix = 'piv_complete'
topology = TopologyPIV(params, logging_level='info')
topology.compute()
Remark: parameters in an instance of fluiddyn.util.paramcontainer.ParamContainer
. Much better than in text files or free Python variables!
Remark: launching computations on cluster is highly simplified by using fluiddyn:
from fluiddyn.clusters.legi import Calcul7 as Cluster
cluster = Cluster()
cluster.submit_script(
'piv_complete.py', name_run='fluidimage',
nb_cores_per_node=8,
walltime='3:00:00',
omp_num_threads=1,
idempotent=True, delay_signal_walltime=300)
from fluidcoriolis.milestone import Experiment
iexp = 70
exp = Experiment(iexp)
exp.name
'Exp70_2016-07-13_N0.8_L6.0_V0.08_piv3d'
print('N = {} rad/s and Uc = {} m/s'.format(exp.N, exp.Uc))
N = 0.8 rad/s and Uc = 0.08 m/s
print('R = {:.0f} and Fh = {:.2f}'.format(exp.Rc, exp.Fhc))
R = 3200 and Fh = 0.40
from fluidcoriolis.milestone.time_signals import TimeSignals
signals = TimeSignals(iexp)
Experiment 70 Probe on the carriage without correction in temperature. Probe at the surface with correction in temperature. Probe at the bottom with correction in temperature. Probe on the left without correction in temperature. Probe on the right with correction in temperature.
signals.probe_left.plot_density()
signals.probe_left.plot_density()
_ = plt.xlim([80, 130])
signals.probe_left.plot_profiles()
pack = exp.get_piv_pack()
piv_fields = pack.get_piv_array_toverT(2)
piv_fields = piv_fields.truncate(4).gaussian_filter(0.5)
/home/pierre/16MILESTONE/Data_light/PCO_top/Exp70_2016-07-13_N0.8_L6.0_V0.08_piv3d/v_exp70_t02.h5
piv = piv_fields[10]
piv.display()
plt.xlim([-1, 0])
_ = plt.ylim([0, 1])
Partial conclusion: Open-data, data in auto-descriptive formats (hdf5, netcdf, ...) + code to use and understand the data.
Navier-Stokes equations + other terms...
Science in fluid mechanics with open-source methods and Python
Development of open-source, clean, reusable codes (fluiddyn project)
Issues