In [1]:
#! /usr/bin/env python
# -*- coding: utf-8 -*-


%matplotlib inline
import matplotlib.pyplot as plt
import math
from math import *
from scipy import *
from pylab import *
from scipy.optimize import curve_fit
import numpy as np
import matplotlib.pyplot as plt
In [2]:
from IPython.display import Image
Image(filename='manip_confinement/20200326_180542_2.jpg')   #   photo du setup, une bouteille d'eau avec un trou fait à la perceuse (forets de 2.5, 4 et 4.5 mm) et un réglet scotché.
#on remplit en eau et on lance un chrono (au smartphone) quand le ménisque est à 10 cm du trou de vidange et on prend le temps tous les centimètres.
Out[2]:
In [3]:
hauteur=array([10,9,8,7,6,5,4,3,2,1])  # hauteur d'eau en cm
hauteur=hauteur/100 # hauteur en m
temps_small=array([0,8.2,17.1,27,37.5,48,63,79,99,132])  #  instant passage menisque à ces hauteurs pour un trou de 2.5 mm de diamètre
temps_medium=array([0,3,6.4,9,12.8,15.8,20.7,26,32.5,42])  #  instant passage menisque à ces hauteurs pour un trou de 4 mm de diamètre
temps_large=array([0,2.3,4,6.6,9.2,11.8,15.5,19.9,24.6,31.5])  #  instant passage menisque à ces hauteurs pour un trou de 4.5 mm de diamètre
In [4]:
plt.plot(hauteur, temps_small, 'or')
plt.plot(hauteur, temps_medium, 'ob')
plt.plot(hauteur, temps_large, 'om')
plt.xticks(fontsize=15)
plt.yticks(fontsize=15)
plt.xlabel("hauteur eau (m)",fontsize=15)
plt.ylabel("temps depuis le passage menisque hauteur 10 cm (s)",fontsize=15)
plt.xlim(0,0.12)
plt.ylim(0,150)
#plt.legend(loc=0,fontsize=15)
plt.show()

A partir de la relation de Bernouilli on peut montrer que l'instant de passage du ménisque à une hauteur h (référence = position du trou) est donné par: t(h)=$\frac{2S}{S_o\sqrt{2g}} (\sqrt{ho}-\sqrt{h})$ où ho est la hauteur initiale du ménisque, S est la surface de la base de la bouteille, $S_o$ la surface du trou de vidange et g l'accélération de pesanteur. On va ajuster les données par cette relation.

In [5]:
def f_vidange(x, a):
    return a*(sqrt(0.1)-sqrt(x))
In [6]:
pop, covop = curve_fit(f_vidange, hauteur, temps_small)
coeff_small = pop[0]
xth = np.linspace(0, 0.12, num=40)
tth_small = f_vidange(xth,coeff_small)

pop, covop = curve_fit(f_vidange, hauteur, temps_medium)
coeff_medium = pop[0]
xth = np.linspace(0, 0.12, num=40)
tth_medium = f_vidange(xth,coeff_medium)

pop, covop = curve_fit(f_vidange, hauteur, temps_large)
coeff_large = pop[0]
xth = np.linspace(0, 0.12, num=40)
tth_large = f_vidange(xth,coeff_large)
In [7]:
plt.plot(hauteur, temps_small, 'or')
plt.plot(xth, tth_small, '-r')
plt.plot(hauteur, temps_medium, 'ob')
plt.plot(xth, tth_medium, '-b')
plt.plot(hauteur, temps_large, 'om')
plt.plot(xth, tth_large, '-m')
plt.xticks(fontsize=15)
plt.yticks(fontsize=15)
plt.xlabel("hauteur eau (m)",fontsize=15)
plt.ylabel("temps depuis le passage menisque hauteur 10 cm (s)",fontsize=15)
plt.xlim(0,0.12)
plt.ylim(0,150)
#plt.legend(loc=0,fontsize=15)
plt.show()

affichage des coefficients:

In [8]:
print ('trou 2.5 mm de diamètre:',coeff_small,'s.m-1/2')
print ('trou 4 mm de diamètre:',coeff_medium,'s.m-1/2')
print ('trou 4.5 mm de diamètre:',coeff_large,'s.m-1/2')
trou 2.5 mm de diamètre: 571.2949549029047 s.m-1/2
trou 4 mm de diamètre: 185.99810335502318 s.m-1/2
trou 4.5 mm de diamètre: 139.70672941664503 s.m-1/2

le coeff est donné par $\frac{2S}{S_o\sqrt{2g}}$ où S est la surface de la base de la bouteille, $S_o$ la surface du trou de vidange et g l'accélération de pesanteur On va tracer l'évolution de ce coeff avec l'inverse de la surface du trou de vidange

In [9]:
coeff=array([571.3,186,139.7])
diametre_trou=array([2.5,4,4.5])
surface=3.1415*((diametre_trou*1e-3)/2)**2
inv_S=1/surface
In [10]:
plt.plot(inv_S, coeff, 'or')
plt.xticks(fontsize=15)
plt.yticks(fontsize=15)
plt.xlabel("inverse surface trou (m-2)",fontsize=15)
plt.ylabel("coeff (s.m-1/2)",fontsize=15)
plt.xlim(0,3e5)
plt.ylim(0,600)
#plt.legend(loc=0,fontsize=15)
plt.show()
In [11]:
def f_lin(x, a):
    return a*x
In [12]:
pop, covop = curve_fit(f_lin, inv_S, coeff)
pente = pop[0]
xth = np.linspace(0, 300000, num=40)
coeff_th = f_lin(xth,pente)
In [13]:
plt.plot(inv_S, coeff, 'or')
plt.plot(xth, coeff_th, '-r')
plt.xticks(fontsize=15)
plt.yticks(fontsize=15)
plt.xlabel("inverse surface trou (m-2)",fontsize=15)
plt.ylabel("coeff (s.m-1/2)",fontsize=15)
plt.xlim(0,3e5)
plt.ylim(0,600)
#plt.legend(loc=0,fontsize=15)
plt.show()
In [14]:
print('pente=',pente,'m^3/2.s')
pente= 0.0027027053814472645 m^3/2.s

La pente est donnée par $S\sqrt{\frac{2}{g}}$ On extrait la surface de la base, puis son rayon:

In [15]:
S=pente*sqrt(9.81/2)
r=sqrt(S/3.1415)

print("rayon=",r*100," cm")
rayon= 4.365063582226338  cm

On mesure au réglet un rayon de 3 cm (ce n'est pas bien constant de part la géométrie de la bouteille d'eau)

Si on tient compte d'un coefficient de contraction de la surface du jet de 0.6 - valeur communément considérée, mais faudrait que je mesure; alors on obtient:

In [16]:
S=0.6*pente*sqrt(9.81/2)
r=sqrt(S/3.1415)

print("rayon=",r*100," cm")
rayon= 3.3811637118198195  cm
In [ ]: