FormBeton / app.py
jkind's picture
Add application file
3edcde7
import gradio as gr
def definir_criteres(D, R_prime, A):
return D, R_prime, A
def calculer_rapport_CE(R_prime, sigma_c, G):
CE = (R_prime / (0.50 * sigma_c)) + 0.5
return CE
def determiner_dosage_ciment(CE, A):
C = 400 # Placeholder, replace with actual calculation
return C
def ajuster_dosage_eau(C, CE, D):
E = C / CE
correction = {5: 0.15, 10: 0.09, 16: 0.04, 25: 0, 40: -0.04, 63: -0.08, 100: -0.12}
E *= (1 + correction.get(D, 0))
return E
def definir_courbe_granulaire(D, K, Ks, Kp):
Y = 50 - K + Ks + Kp
X = D / 2 if D <= 40 else (5 + D) / 2
return X, Y
def determiner_proportions_granulats(granulats, courbe_reference):
proportions = {}
for granulat in granulats:
proportions[granulat] = 0.5 # Placeholder
return proportions
def calculer_masse_granulats(gamma, Vc, Vg, proportions, densites):
masses = {}
for granulat, proportion in proportions.items():
volume = Vg * proportion
masses[granulat] = volume * densites[granulat]
return masses
def calculer_composition(D, R_prime, A, sigma_c, G, K, Ks, Kp, densite_sable, densite_gravier_5_20, densite_gravier_20_50):
densites = {'sable': densite_sable, 'gravier_5_20': densite_gravier_5_20, 'gravier_20_50': densite_gravier_20_50}
CE = calculer_rapport_CE(R_prime, sigma_c, G)
C = determiner_dosage_ciment(CE, A)
E = ajuster_dosage_eau(C, CE, D)
X, Y = definir_courbe_granulaire(D, K, Ks, Kp)
granulats = {'sable': {}, 'gravier_5_20': {}, 'gravier_20_50': {}}
courbe_reference = (X, Y)
proportions = determiner_proportions_granulats(granulats, courbe_reference)
Vc = C / 3.1
gamma = 0.835
Vg = 835 - Vc
masses = calculer_masse_granulats(gamma, Vc, Vg, proportions, densites)
return f"Dosage en ciment: {C} kg/m³", f"Dosage en eau: {E} L/m³", f"Masses des granulats: {masses}"
# Interface Gradio
interface = gr.Interface(
fn=calculer_composition,
inputs=[
gr.Number(value=40, label="Dimension maximale des granulats (D)"),
gr.Number(value=35, label="Résistance souhaitée (R_prime)"),
gr.Number(value=10, label="Ouvrabilité désirée (A)"),
gr.Number(value=45, label="Résistance moyenne réelle du ciment (sigma_c)"),
gr.Number(value=0.55, label="Coefficient granulaire (G)"),
gr.Number(value=-4, label="Coefficient de correction (K)"),
gr.Number(value=2.8, label="Module de finesse du sable (Ks)"),
gr.Number(value=5, label="Coefficient de correction pompabilité (Kp)"),
gr.Number(value=2.60, label="Densité du sable (kg/L)"),
gr.Number(value=2.55, label="Densité du gravier 5/20 (kg/L)"),
gr.Number(value=2.55, label="Densité du gravier 20/50 (kg/L)")
],
outputs=[
gr.Textbox(label="Dosage en ciment (kg/m³)"),
gr.Textbox(label="Dosage en eau (L/m³)"),
gr.Textbox(label="Masses des granulats")
],
title="Calcul de la Composition Optimale du Béton (Méthode Dreux-Gorisse)",
description="Entrez les paramètres nécessaires pour calculer la composition optimale du béton."
)
if __name__ == "__main__":
interface.launch()