How vvvrome/proyecto-nuclear works
Proyecto Nuclear is a Flask-based web simulator for a simplified nuclear plant. A browser user operates the dashboard and simulation endpoints; the application initializes a plant simulation and exposes its state, controls, telemetry, and OpenMC results. The principal domain stages are reactor kinetics and temperature feedback, thermal/power-cycle modeling, safety assessment, and telemetry/persistence. Separate academic-file routes support the ASIR and Física coursework. The README documents these capabilities; sampled code confirms app wiring and several simulation calls, but not every route’s internal behavior.
Main entry points: simulation.py Plant simulation · app.py Flask app · reactor_dynamics.py Reactor dynamics · simulation_recorder.py Simulation recorder
Components 34
Web application
- Flask app
src/nuclear_sim/web/app.py - Dashboard routes
src/nuclear_sim/web/routes/dashboard.py - Simulation routes
src/nuclear_sim/web/routes/simulation.py
Plant simulation
- Plant simulation
src/nuclear_sim/plant/simulation.py - Reactor model
src/nuclear_sim/plant/reactor.py - Reactor dynamics
src/nuclear_sim/plant/reactor_dynamics.py - Plant controller
src/nuclear_sim/plant/plant_controller.py - Plant instrumentation
src/nuclear_sim/plant/plant_instrumentation.py - Safety integration
src/nuclear_sim/plant/safety_integration.py - Safety system
src/nuclear_sim/safety/system.py - Actuator
src/nuclear_sim/instrumentation/actuator.py
Physics models
- Point kinetics
src/nuclear_sim/plant/reactor_kinetics.py - Temperature feedback
src/nuclear_sim/nuclear/kinetics/temperature_feedback.py - Thermal model
src/nuclear_sim/thermal/thermal_model.py - Energy balance
src/nuclear_sim/thermal/energy_balance.py - Power cycle
src/nuclear_sim/thermal/power_cycle.py - Heat exchanger
src/nuclear_sim/thermal/heat_exchanger.py - OpenMC model
src/nuclear_sim/reactor/geometry.py - OpenMC runner
src/nuclear_sim/nuclear/openmc/runner.py - Decay calculations
src/nuclear_sim/nuclear/decay.py - Decay chains
src/nuclear_sim/nuclear/decay_chain.py - Nuclide inventory
src/nuclear_sim/nuclear/inventory.py - Nuclide data
src/nuclear_sim/nuclear/nuclide_data.py - Radiation field
src/nuclear_sim/radiation/radiation_field.py
Operations and data
- Telemetry collector
src/nuclear_sim/telemetry/collector.py - Simulation recorder
src/nuclear_sim/telemetry/simulation_recorder.py - MySQL repository
src/nuclear_sim/database/repository.py - Database connection
src/nuclear_sim/database/connection.py
Academic files
- Academic routes
src/nuclear_sim/web/routes/fisica_asignatura.py - File routes
src/nuclear_sim/web/routes/files.py - Academic storage
src/nuclear_sim/web/file_storage.py
Other components
- Browser user
- OpenMC
- MySQL database
Connections 38
- Browser user → Flask app: uses over HTTP
README.md - Flask app → Dashboard routes: registers
src/nuclear_sim/web/app.py - Flask app → Simulation routes: registers
src/nuclear_sim/web/app.py - Flask app → Academic routes: registers
src/nuclear_sim/web/app.py - Flask app → File routes: registers
src/nuclear_sim/web/app.py - Flask app → Plant simulation: initializes
src/nuclear_sim/web/app.py - Flask app → Database connection: creates
src/nuclear_sim/web/app.py - Flask app → MySQL repository: configures
src/nuclear_sim/web/app.py - Flask app → Academic storage: exposes listing
src/nuclear_sim/web/app.py - Simulation routes → Plant simulation: controls
- Plant simulation → Reactor model: reads state
src/nuclear_sim/plant/simulation.py - Plant simulation → Reactor dynamics: advances
src/nuclear_sim/plant/simulation.py - Plant simulation → Thermal model: steps
src/nuclear_sim/plant/simulation.py - Plant simulation → Power cycle: runs
src/nuclear_sim/plant/simulation.py - Plant simulation → Safety integration: evaluates
src/nuclear_sim/plant/simulation.py - Plant simulation → Plant instrumentation: updates
src/nuclear_sim/plant/simulation.py - Plant simulation → Telemetry collector: collects state
src/nuclear_sim/plant/simulation.py - Reactor dynamics → Point kinetics: uses
src/nuclear_sim/plant/reactor_dynamics.py - Reactor dynamics → Temperature feedback: uses
src/nuclear_sim/plant/reactor_dynamics.py - Reactor dynamics → Thermal model: uses
src/nuclear_sim/plant/reactor_dynamics.py - Power cycle → Heat exchanger: transfers heat
src/nuclear_sim/thermal/power_cycle.py - Safety integration → Safety system: uses
src/nuclear_sim/plant/safety_integration.py - Plant controller → Reactor model: controls
src/nuclear_sim/plant/plant_controller.py - Plant controller → Actuator: sets position
src/nuclear_sim/plant/plant_controller.py - Plant controller → Reactor dynamics: sets reactivity
src/nuclear_sim/plant/plant_controller.py - OpenMC model → OpenMC runner: configures simulation
- OpenMC runner → OpenMC: runs neutronics
README.md - Telemetry collector → Simulation recorder: feeds recording
src/nuclear_sim/telemetry/simulation_recorder.py - Simulation recorder → Plant simulation: records state
src/nuclear_sim/telemetry/simulation_recorder.py - Simulation recorder → Telemetry collector: collects readings
src/nuclear_sim/telemetry/simulation_recorder.py - Simulation recorder → MySQL repository: persists records
src/nuclear_sim/telemetry/simulation_recorder.py - Database connection → MySQL database: connects
README.md - MySQL repository → MySQL database: reads and writes
README.md - Decay chains → Decay calculations: uses
src/nuclear_sim/nuclear/decay_chain.py - Nuclide inventory → Decay calculations: uses
src/nuclear_sim/nuclear/inventory.py - Decay chains → Nuclide data: loads data
scripts/run_decay_chain.py - Academic routes → File routes: file operations
- File routes → Academic storage: uses
src/nuclear_sim/web/routes/files.py