Vous êtes sur la page 1sur 3

import matplotlib.

pyplot as plt
from tabulate import tabulate
import numpy as np

print("Données de l'éssai oeudométrique")


n=int(input("Entrer le nombre d'éssais realisés: "))
#test positivité
T=[]
for i in range(n): #creation de tableau
T.append([])
for i in range (n):
for j in range(2):
T[i].append(j)

for i in range (n):


T[i][0]=float(input("entrer la "+str(i+1)+" ème valeur de e; l'indice des vides
initiale n'etant pas inclu: "))
T[i][1]=float(input("entrer la contrainte corespondante "))
headers=["indice des vides","contrainte effective"]
print(tabulate(T,headers,tablefmt='pretty'))
rep=int(input("Avez vous commis une erreur ?\n Repondez par 1 pour oui et 0 pour
non "))
while (rep!=1 and rep!=0):
rep=int(input("erreur! repondez par 1 ou 0: 1 pour oui et 0 pour non "))
while rep==1:
l=int(input("quantième ligne? "))
while l<1 and l>n+1:
l=int(input("erreur! entrez correctement le numéro de la ligne "))
c=int(input("quantième colonne? "))
while c!=1 and c!=2:
c=int(input("erreur! entrez correctement le numéro de la colonne "))
T[l-2][c-1]=float(input("Rectifiez la valeur de l'élément dont vous avez commis
l'erreur"))
rep=int(input("Avez commis une autre erreur? Repondez par 1 pour oui et 0 pour
non "))
while (rep!=1 and rep!=0):
rep=int(input("erreur! repondez par 1 ou 0: 1 pour oui et 0 pour non "))

e_min=T[n-1][0]
ind=n-1
C=[]
P=[]
for i in range(n):
C.append(i)
for i in range(n):
if i==0:
C[i]=np.log10(T[i][1])
else:
C[i]=np.log10(T[i][1])
P.append(round(abs((T[i][0]-T[i-1][0])/(C[i]-C[i-1])),4))
if T[i][0]<=e_min:
e_min=T[i][0]
ind=i
print(P)
Cs=min(P)
Cc=max(P)
p_0=-Cs
p_1=-Cc
O_0=T[0][0]-(p_0 * np.log10(T[0][1]))
O_1=T[ind][0]-(p_1 * np.log10(T[ind][1]))
x_p=(O_1 - O_0)/(p_0 - p_1)
Sig_p=round(np.exp(x_p * np.log(10)),2)
print("la contrainte de préconsolidation = "+str(Sig_p),"\n L'indice de gonflement
Cs= "+str(Cs),"\n L'indice de compression Cc= "+str(Cc))

#affichage
trans=np.transpose(T)
X=trans[1]
Y=trans[0]
plt.plot(X,Y)
plt.xscale('log')
plt.xlabel('contrainte effective')
plt.ylabel('indice des vide e')
plt.title('Courbe oeudométrique')
plt.show()
#A = np.array(trans[1])
#plt.xscale('log')
x = np.array(C)
B = p_0 * x + O_0
plt.plot(x, B, color='red')
y = p_1 * x + O_1
plt.plot(x, y, color='blue')

e_0=float(input("Donner l'indice de vide initial avant chargement: "))


Sig_0=float(input("donner la valeur de la contrainte naturel sigma prime zéro: "))
h_D=float(input("donner la valeur de la distance de drainage: "))
Cv=float(input("donner la valeur du coéfficient de consolidation: "))

#etat de consolidation
if Sig_0<Sig_p :
print("Le sol est surconsolidé")
else:
if Sig_0<Sig_p :
print("Le sol est normalement consolidé")
else:
print("Le sol est en cours de consolidation")
Sig_i=float(input("Donnez la valeur de la contrainte initale "))
Sig_f=float(input("Donnez la valeur de la contrainte finale "))
#Calcul du tassement
h_0=float(input("Precisez la valeur de l'épaisseur initiale de la couche "))
eps=0
if Sig_i>=Sig_p:
eps=(Cc/(1+e_0))*np.log10(Sig_f/Sig_i)
else:
if Sig_f<=Sig_p:
eps=(Cs/(1+e_0))*np.log10(Sig_f/Sig_i)
else:
eps=(Cs/(1+e_0))*np.log10(Sig_p/Sig_i) + (Cc/(1+e_0))*np.log10(Sig_f/Sig_i)
delta_h=eps*abs(h_0)
#Calcul du temps de tassement
R=int(input("S'agit-il dun tassement à long terme ou à court terme?\n Repondez par
1 pour Long terme et par 0 pour court terme "))
while R!=1 and R!=0:
R=int(input("erreur! Repondez par 1 ou 0 "))
if R==1:
U=100
Tv=2
t=round((Tv*h_D**2)/Cv,2)
print("Le tassement à long terme sera atteint dans "+str(t)+" jours")
else:
U=10
Tv=0.008
t=round((Tv*h_D**2)/Cv,2)
print("Le tassement à court terme sera atteint dans "+str(t)+" jours")

Vous aimerez peut-être aussi