# -*- coding: Latin-1 -*-
# Programme de calcul de la dilatation des mers par r�chauffement climatique
# Dominique Lefebvre pour TangenteX.com
# 8 ao�t 2017
#

# importation des librairies
from scipy import interpolate, array, arange, integrate

# Table de variation de la temp�rature (�C) de l'eau en fonction de la profondeur
xTemp = array([0.0,100.0,200.0,300.0,400.0,500.0,600.0,700.0,800.0,900.0,
               1000.0,1250.0,1500.0,2000.0,2500.0,3000.0,4000.0,5000.0])
yTemp = array([22.0,22.0,21.8,21.2,18.0,13.5,10.5,8.3,7.0,6.0,5.5,4.8,4.4,
               4.0,3.7,3.5,3.2,2.9])

# Table de variation du coeff de dilatation thermique (�C^-1) en fonction de la 
# temp�rature (�C)
xCDT = array([0.0,2.0,4.0,6.0,10.0,20.0,40.0,60.0,80.0,100.0])
yCDT = array([-0.5e-04,-0.5e-04,0.15e-04,0.15e-04,0.6e-04,1.5e-04,3.01e-04,
              4.56e-04,5.84e-04,6.82e-04])

# param�tres de mod�lisation
# je choisis la profondeur d'eau qui est en �quilibre thermique avec l'atmosph�re
# et l'�l�vation de temp�rature max dans le meilleur des sc�narii de RC
hColonne = 1000.0 # profondeur en m�tres
dh = 1.0          # �paisseur d'une tranche horizontale de la colonne en m�tres
dT = 0.6          # variation de temp�rature en �C


# Calcul des fonctions d'interpolation (spline cubique) sur les diff�rentes tables
fTemp = interpolate.interp1d(xTemp,yTemp,kind='linear')
fCDT  = interpolate.interp1d(xCDT,yCDT,kind='linear')


# calcul de la hausse du niveau de la mer
h = arange(0.0,hColonne,dh)
zh = []
for i in h:
    # chercher la temp�rature en fonction de la profondeur
    Ti = fTemp(i)
    # chercher le CDT en fonction de la temp�rature
    CDTi = fCDT(Ti)
    # calculer la variation verticale de la tranche i
    dz = CDTi*dT
    zh.append(dz)

# int�gration des hausses unitaires   
hausseTotale = integrate.simps(zh,x=h)
print 'Hausse du niveau de la mer: ',hausseTotale,' m'