"""Physical constants and engineering limits for the simulation.""" from __future__ import annotations SECONDS_PER_MINUTE = 60.0 MEGAWATT = 1_000_000.0 NEUTRON_LIFETIME = 0.1 # seconds, prompt neutron lifetime surrogate FUEL_ENERGY_DENSITY = 200.0 * MEGAWATT # J/kg released as heat COOLANT_HEAT_CAPACITY = 4_200.0 # J/(kg*K) for water/steam COOLANT_DENSITY = 700.0 # kg/m^3 averaged between phases STEAM_LATENT_HEAT = 2_200_000.0 # J/kg approximate latent heat of vaporization CORE_MELTDOWN_TEMPERATURE = 2_873.0 # K (approx 2600C) threshold for irreversible meltdown MAX_CORE_TEMPERATURE = CORE_MELTDOWN_TEMPERATURE # Allow simulation to approach meltdown temperature MAX_PRESSURE = 15.0 # MPa typical PWR primary loop limit CONTROL_ROD_SPEED = 0.03 # fraction insertion per second CONTROL_ROD_WORTH = 0.042 # delta rho contribution when fully withdrawn CONTROL_ROD_BANK_WEIGHTS = (0.4, 0.35, 0.25) ROD_MANUAL_STEP = 0.025 STEAM_TURBINE_EFFICIENCY = 0.34 GENERATOR_EFFICIENCY = 0.96 ENVIRONMENT_TEMPERATURE = 295.0 # K AMU_TO_KG = 1.660_539_066_60e-27 MEV_TO_J = 1.602_176_634e-13 ELECTRON_FISSION_CROSS_SECTION = 5e-16 # cm^2, tuned for simulation scale PUMP_SPOOL_TIME = 5.0 # seconds to reach commanded flow PRIMARY_PUMP_SHUTOFF_HEAD_MPA = 8.0 # approximate shutoff head for primary pumps SECONDARY_PUMP_SHUTOFF_HEAD_MPA = 7.0 TURBINE_SPOOL_TIME = 12.0 # seconds to reach steady output # Turbine/condenser parameters TURBINE_THROTTLE_MIN = 0.1 TURBINE_THROTTLE_MAX = 1.0 TURBINE_THROTTLE_EFFICIENCY_DROP = 0.15 # efficiency loss when at minimum throttle CONDENSER_BASE_PRESSURE_MPA = 0.01 CONDENSER_MAX_PRESSURE_MPA = 0.3 CONDENSER_BACKPRESSURE_PENALTY = 0.35 # fractional power loss at max back-pressure GENERATOR_SPOOL_TIME = 10.0 # seconds to reach full output # Auxiliary power assumptions PUMP_POWER_MW = 12.0 # MW draw per pump unit BASE_AUX_LOAD_MW = 5.0 # control, instrumentation, misc. NORMAL_CORE_POWER_MW = 3_000.0 TEST_MAX_POWER_MW = 4_000.0 PRIMARY_OUTLET_TARGET_K = 580.0 SECONDARY_OUTLET_TARGET_K = 520.0 PRIMARY_NOMINAL_PRESSURE = 7.0 # MPa typical RBMK channel header pressure SECONDARY_NOMINAL_PRESSURE = 7.0 # MPa steam drum/steam line pressure surrogate STEAM_GENERATOR_UA_MW_PER_K = 25.0 # overall UA for steam generator (MW/K) # Loop volume / inventory assumptions PRIMARY_LOOP_VOLUME_M3 = 350.0 SECONDARY_LOOP_VOLUME_M3 = 320.0 PRIMARY_PRESSURIZER_SETPOINT_MPA = 7.0 PRIMARY_PRESSURIZER_DEADBAND_MPA = 0.15 PRIMARY_PRESSURIZER_HEAT_RATE_MPA_PER_S = 0.08 PRIMARY_PRESSURIZER_SPRAY_RATE_MPA_PER_S = 0.12 PRIMARY_PRESSURIZER_LEVEL_DRAW_PER_S = 0.002 PRIMARY_PRESSURIZER_LEVEL_FILL_PER_S = 0.001 LOOP_INVENTORY_CORRECTION_RATE = 0.08 # fraction of nominal mass restored per second toward target PRIMARY_INVENTORY_TARGET = 0.95 SECONDARY_INVENTORY_TARGET = 0.9 SECONDARY_STEAM_LOSS_FRACTION = 0.02 # fraction of steam mass that leaves the loop each second NPSH_REQUIRED_MPA = 0.25 LOW_LEVEL_FLOW_FLOOR = 0.05 # Threshold inventories (event counts) for flagging common poisons in diagnostics. KEY_POISON_THRESHOLDS = { "Xe": 1e20, # xenon "I": 1e20, # iodine precursor to xenon "Sm": 5e19, # samarium }