Spaces:
Sleeping
Sleeping
File size: 3,622 Bytes
0a7c6ee 9f20e46 0a7c6ee 9f20e46 0a7c6ee 9f20e46 0a7c6ee 9f20e46 0a7c6ee 9f20e46 0a7c6ee 9f20e46 0a7c6ee | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | import { useState } from 'react';
import PoissonApp from './components/poisson/PoissonApp';
import DangVanApp from './components/dangvan/DangVanApp';
import ThermiqueApp from './components/thermique/ThermiqueApp';
import './index.css';
export default function App() {
const [currentApp, setCurrentApp] = useState(null); // null = home, 'poisson' = Poisson app
// Page d'accueil avec sélection des applications
if (!currentApp) {
return (
<div className="home-page">
<header className="home-header">
<h1>SimSite</h1>
<p>Plateforme de Simulation Numérique</p>
</header>
<main className="app-selector">
<div className="app-card" onClick={() => setCurrentApp('poisson')}>
<div className="app-icon">∇²</div>
<h2>Équation de Poisson</h2>
<p>Résolution de -Δu = f avec conditions aux limites de Dirichlet et Neumann</p>
<ul>
<li>Visualisation 3D interactive du maillage</li>
<li>Distribution du champ de solution</li>
<li>Animation de l'évolution temporelle</li>
<li>Paramètres configurables</li>
</ul>
<span className="app-tag">FEniCSx</span>
</div>
<div className="app-card" onClick={() => setCurrentApp('thermique')}>
<div className="app-icon">∂T/∂t</div>
<h2>Diffusion Thermique</h2>
<p>Simulation de transfert de chaleur transitoire</p>
<ul>
<li>Visualisation 3D interactive du maillage</li>
<li>Distribution du champ de température</li>
<li>Animation de l'évolution temporelle</li>
<li>Paramètres configurables</li>
</ul>
<span className="app-tag">FEniCSx</span>
</div>
<div className="app-card" onClick={() => setCurrentApp('dangvan')}>
<div className="app-icon">σ</div>
<h2>Critère de Dang Van</h2>
<p>Analyse de fatigue multiaxiale</p>
<ul>
<li>Calcul du critère de Dang Van</li>
<li>Visualisation graphique du diagramme</li>
<li>Différents types de chargement</li>
<li>Exemples prédéfinis</li>
</ul>
<span className="app-tag">NumPy</span>
</div>
</main>
<footer className="home-footer">
<p>Powered by FEniCSx, Three.js & React</p>
</footer>
</div>
);
}
// Application Poisson
if (currentApp === 'poisson') {
return <PoissonApp onBack={() => setCurrentApp(null)} />;
}
// Application Diffusion Thermique
if (currentApp === 'thermique') {
return <ThermiqueApp onBack={() => setCurrentApp(null)} />;
}
// Application Dang Van
if (currentApp === 'dangvan') {
return <DangVanApp onBack={() => setCurrentApp(null)} />;
}
return null;
}
|