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()