Back-propagate inlet temperatures from heat removal

This commit is contained in:
Codex Agent
2025-11-23 00:30:38 +01:00
parent 001d8b7171
commit 1a8b91a37d

View File

@@ -16,7 +16,7 @@ from .fuel import FuelAssembly, decay_heat_fraction
from .generator import DieselGenerator, GeneratorState from .generator import DieselGenerator, GeneratorState
from .neutronics import NeutronDynamics from .neutronics import NeutronDynamics
from .state import CoolantLoopState, CoreState, PlantState, PumpState, TurbineState from .state import CoolantLoopState, CoreState, PlantState, PumpState, TurbineState
from .thermal import ThermalSolver, heat_transfer, saturation_pressure from .thermal import ThermalSolver, heat_transfer, saturation_pressure, temperature_rise
from .turbine import SteamGenerator, Turbine from .turbine import SteamGenerator, Turbine
LOGGER = logging.getLogger(__name__) LOGGER = logging.getLogger(__name__)
@@ -358,6 +358,16 @@ class Reactor:
state.time_elapsed += dt state.time_elapsed += dt
# Update inlet temperatures based on heat removed/added for next iteration.
primary_cooling = temperature_rise(transferred, state.primary_loop.mass_flow_rate)
state.primary_loop.temperature_in = max(
constants.ENVIRONMENT_TEMPERATURE, state.primary_loop.temperature_out - primary_cooling
)
secondary_cooling = max(0.0, state.secondary_loop.temperature_out - constants.ENVIRONMENT_TEMPERATURE - 40.0)
state.secondary_loop.temperature_in = max(
constants.ENVIRONMENT_TEMPERATURE, state.secondary_loop.temperature_out - max(20.0, secondary_cooling)
)
LOGGER.info( LOGGER.info(
( (
"t=%5.1fs rods=%.2f core_power=%.1fMW prompt=%.1fMW :: " "t=%5.1fs rods=%.2f core_power=%.1fMW prompt=%.1fMW :: "