Warning: Undefined array key "DOKU_PREFS" in /home/clients/a4e6fc1ce1761b72982b805de0f418c4/web/python/mesrecettespython/inc/common.php on line 2082
cuve_cylindrique_horizontale [Les recettes Python de Tyrtamos]

Outils pour utilisateurs

Outils du site


cuve_cylindrique_horizontale

Warning: Undefined array key -1 in /home/clients/a4e6fc1ce1761b72982b805de0f418c4/web/python/mesrecettespython/inc/html.php on line 1458

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
cuve_cylindrique_horizontale [2008/03/17 09:25]
tyrtamos
cuve_cylindrique_horizontale [2008/04/12 08:42]
tyrtamos
Ligne 57: Ligne 57:
  
 Maintenant, si la hauteur du liquide dépasse le rayon r de la cuve, le calcul sera différent. Pour éviter de le refaire, on va utiliser l'astuce suivante: si h>r, on va calculer pour h=d-h, ce qui nous ramène au cas précédent, et on va prendre à la fin le complément du volume trouvé: v=vt-v! Maintenant, si la hauteur du liquide dépasse le rayon r de la cuve, le calcul sera différent. Pour éviter de le refaire, on va utiliser l'astuce suivante: si h>r, on va calculer pour h=d-h, ce qui nous ramène au cas précédent, et on va prendre à la fin le complément du volume trouvé: v=vt-v!
 +
 +===== Le code =====
  
 Tout cela nous donne le code Python suivant: Tout cela nous donne le code Python suivant:
  
- +<code python>  
 +#!/usr/bin/python 
 +# -*- coding: utf-8 -*- 
 + 
 +# indispensable pour qu'une division entre 2 entiers donne un résultat décimal! 
 +from __future__ import division 
 + 
 +from math import pi,sqrt,acos 
 + 
 +def volcuve(h,d,vt): 
 +    """volcuve(h,d,vt): Calcule le volume restant de liquide d'une cuve cylindique horizontale de diamètre d et de volume total vt""" 
 +    if h==0: 
 +        return 0 
 +    r=d/2 
 +    if h==r: 
 +        return vt/2 
 +    if h==d: 
 +        return vt 
 +    if h>r: 
 +        h=d-h 
 +        nivhaut=True 
 +    else: 
 +        nivhaut=False 
 +    st=pi*r*r 
 +    alpha=acos((r-h)/r) 
 +    sr=(r-h)*sqrt(r*r-(r-h)**2) 
 +    sa=st/pi*alpha 
 +    sh=sa-sr 
 +    v=vt*sh/st 
 +    if nivhaut: 
 +        v=vt-v 
 +    return v 
 + 
 +# exemples d'utilisation: 
 +print volcuve(0,120,3500) # affiche: 0 
 +print volcuve(40,120,3500) # affiche: 1021.26992027 
 +print volcuve(60,120,3500) # affiche: 1750.0 
 +print volcuve(80,120,3500) # affiche: 2478.73007973 
 +print volcuve(100,120,3500) # affiche: 3116.57143452 
 +print volcuve(120,120,3500) # affiche: 3500 
 +</code> 
 + 
 +Si vous utilisez cette fonction dans une calculatrice, je vous conseille d'ajouter les vérifications des arguments:
  
 +  * %%0<=h<=d%%  (et si h>d, c'est que ça déborde :-D)  
 +  * d>0
 +  * vt>0
  
 +Vous pouvez essayer cette fonction dans ma calculatrice en ligne: [[http://calculext.jpvweb.com]] 
  
 +<html>
 +<head>
 +<style type="text/css">
 +<!--
 +body {background-image:url(fondcorps.jpg);}
 +-->
 +</style>
 +</head>
 +<body>
 +</body>
 +</html>
cuve_cylindrique_horizontale.txt · Dernière modification: 2008/04/12 08:42 de tyrtamos