From ec7d007826f9630a3c7804b8bccd9956c1affa91 Mon Sep 17 00:00:00 2001 From: Capkirk123 Date: Sat, 14 Sep 2024 13:41:45 -0400 Subject: [PATCH] Switch to new NFE models and configure new ones --- .../RO_NearFuture_Electrical_Nuclear.cfg | 2030 ++++++++++++----- 1 file changed, 1481 insertions(+), 549 deletions(-) diff --git a/GameData/RealismOverhaul/RO_SuggestedMods/NearFutureTechnologies/RO_NearFuture_Electrical_Nuclear.cfg b/GameData/RealismOverhaul/RO_SuggestedMods/NearFutureTechnologies/RO_NearFuture_Electrical_Nuclear.cfg index 507daf655b..9a01c9e729 100644 --- a/GameData/RealismOverhaul/RO_SuggestedMods/NearFutureTechnologies/RO_NearFuture_Electrical_Nuclear.cfg +++ b/GameData/RealismOverhaul/RO_SuggestedMods/NearFutureTechnologies/RO_NearFuture_Electrical_Nuclear.cfg @@ -65,16 +65,83 @@ @EngineerLevelForDangerous = 1 } } - -// RTGs +// ================================================================================= +// RTGs +// ================================================================================= +// DEPRECATED ASRG @PART[rtg-0625]:FOR[RealismOverhaul] +{ + %RSSROConfig = True + %RODeprecated = True + @MODEL + { + @scale = 0.829240, 1, 0.829240 + } + @rescaleFactor = 0.803949 + + @title = DEPRECATED + @manufacturer = #roMfrLM + @description = A much lighter and more efficient radioisotope generator by using the sterling cycle. + @mass = 0.0308 //32 kg - 1.2 kg Pu238 + //switch to ModuleResourceConverter so the RTG patch is able to apply + !MODULE[ModuleGenerator],* {} + + MODULE + { + name = ModuleResourceConverter + ConverterName = RTG + StartActionName = Start + StopActionName = Stop + AlwaysActive = True + FillAmount = 1.0 + AutoShutdown = false + GeneratesHeat = False + TemperatureModifier = 2.0 + UseSpecializationBonus = False + DefaultShutoffTemp = 0.5 + + INPUT_RESOURCE + { + ResourceName = Plutonium-238 + Ratio = 1.6428e-10 + } + + OUTPUT_RESOURCE + { + ResourceName = DepletedFuel + Ratio = 1.6428e-10 + } + + OUTPUT_RESOURCE + { + ResourceName = ElectricCharge + Ratio = 0.13 // 130 w + } + } + + RESOURCE + { + name = Plutonium-238 + amount = 0.060557 + maxAmount = 0.060557 + } + + RESOURCE + { + name = DepletedFuel + amount = 0 + maxAmount = 0.060557 + } +} +// ASRG +@PART[nfe-rtg-asrg-1]:FOR[RealismOverhaul] { %RSSROConfig = True @MODEL { @scale = 0.829240, 1, 0.829240 } - @rescaleFactor = 0.803949 + @rescaleFactor = 1.15 @title = NASA & DOE Advanced Sterling RG @manufacturer = #roMfrLM @@ -97,78 +164,839 @@ UseSpecializationBonus = False DefaultShutoffTemp = 0.5 - INPUT_RESOURCE + INPUT_RESOURCE + { + ResourceName = Plutonium-238 + Ratio = 1.6428e-10 + } + + OUTPUT_RESOURCE + { + ResourceName = DepletedFuel + Ratio = 1.6428e-10 + } + + OUTPUT_RESOURCE + { + ResourceName = ElectricCharge + Ratio = 0.13 // 130 w + } + } + + RESOURCE + { + name = Plutonium-238 + amount = 0.060557 + maxAmount = 0.060557 + } + + RESOURCE + { + name = DepletedFuel + amount = 0 + maxAmount = 0.060557 + } +} + +// SNAP-27 +@PART[nfe-rtg-snap27-1]:FOR[RealismOverhaul] +{ + %RSSROConfig = True + //nfe-rtg-snap27-1: 0.29m dia, 0.36m long + //SNAP-27: 0.4m dia, 0.46m long + @MODEL + { + @scale = 1.0795, 1, 1.0795 + } + @rescaleFactor = 1.2778 + + @title = SNAP-27 Series RTG + @manufacturer = #roMfrGE + @description = A plutonium RTG, used to power ASLEP experiments left on the moon by the Apollo missions. + @mass = 0.016265 //20 kg? - 3.735 kg Pu-238 + //switch to ModuleResourceConverter so the RTG patch is able to apply + !MODULE[ModuleGenerator],* {} + + //Aluminum fins over Hastelloy core? + skinTempTag = Aluminum + internalTempTag = Inconel + paintEmissivityTag = 0.8 + + MODULE + { + name = ModuleResourceConverter + ConverterName = RTG + StartActionName = Start + StopActionName = Stop + AlwaysActive = True + FillAmount = 1.0 + AutoShutdown = false + GeneratesHeat = False + TemperatureModifier = 2.0 + UseSpecializationBonus = False + DefaultShutoffTemp = 0.5 + + INPUT_RESOURCE + { + ResourceName = Plutonium-238 + Ratio = 1.6428e-10 + } + + OUTPUT_RESOURCE + { + ResourceName = DepletedFuel + Ratio = 1.6428e-10 + } + + OUTPUT_RESOURCE + { + ResourceName = ElectricCharge + Ratio = 0.075 // 75 w + } + } + + RESOURCE + { + name = Plutonium-238 + amount = 0.18848 //3.735 kg Pu-238 + maxAmount = 0.18848 + } + RESOURCE + { + name = DepletedFuel + amount = 0 + maxAmount = 0.18848 + } +} + +// GPHS-RTG +@PART[nfe-rtg-gphs-1]:FOR[RealismOverhaul] +{ + %RSSROConfig = True + //nfe-rtg-gphs-1: 0.365m dia, 0.91m long + //GPHS-RTG: 0.422m dia, 1.14m long + @MODEL + { + @scale = 0.9229, 1, 0.9229 + } + @rescaleFactor = 1.2527 + + @title = GPHS-RTG + @manufacturer = #roMfrGE + @description = The General Purpose Heat Source - Radioisotope Thermoelectric Generator as found on the Galileo spacecraft. + @mass = 0.0481 //55.9 kg - 7.8 kg Pu238 + //switch to ModuleResourceConverter so the RTG patch is able to apply + !MODULE[ModuleGenerator],* {} + + //Haynes 25 core, aluminum fins and fittings, high emissivity coating + skinTempTag = Aluminum + internalTempTag = Inconel + paintEmissivityTag = 0.8 + + MODULE + { + name = ModuleResourceConverter + ConverterName = RTG + StartActionName = Start + StopActionName = Stop + AlwaysActive = True + FillAmount = 1.0 + AutoShutdown = false + GeneratesHeat = False + TemperatureModifier = 2.0 + UseSpecializationBonus = False + DefaultShutoffTemp = 0.5 + + INPUT_RESOURCE + { + ResourceName = Plutonium-238 + Ratio = 1.6428e-10 + } + + OUTPUT_RESOURCE + { + ResourceName = DepletedFuel + Ratio = 1.6428e-10 + } + + OUTPUT_RESOURCE + { + ResourceName = ElectricCharge + Ratio = 0.3 // 300 w + } + } + + RESOURCE + { + name = Plutonium-238 + amount = 0.3936 //Pu238 mass 7.8 kg + maxAmount = 0.3936 + } + RESOURCE + { + name = DepletedFuel + amount = 0 + maxAmount = 0.3936 + } +} + +// MMRTG +@PART[nfe-rtg-mmrtg-1]:FOR[RealismOverhaul] +{ + %RSSROConfig = True + //nfe-rtg-mmrtg-1: 0.570m dia, 0.445m long + //MMRTG: 0.642m dia, 0.668m long + @MODEL + { + @scale = 0.6662, 1, 0.6662 + } + @rescaleFactor = 1.5011 + + @title = Multi-Mission RTG + @manufacturer = #roMfrGE + @description = The General Purpose Heat Source - Radioisotope Thermoelectric Generator as found on the Galileo spacecraft. + @mass = 0.040122 //43.6 kg - 3.478 kg Pu238 + //switch to ModuleResourceConverter so the RTG patch is able to apply + !MODULE[ModuleGenerator],* {} + + //Haynes 25 core, aluminum fins and fittings, high emissivity coating + skinTempTag = Aluminum + internalTempTag = Inconel + paintEmissivityTag = 0.8 + + MODULE + { + name = ModuleResourceConverter + ConverterName = RTG + StartActionName = Start + StopActionName = Stop + AlwaysActive = True + FillAmount = 1.0 + AutoShutdown = false + GeneratesHeat = False + TemperatureModifier = 2.0 + UseSpecializationBonus = False + DefaultShutoffTemp = 0.5 + + INPUT_RESOURCE + { + ResourceName = Plutonium-238 + Ratio = 1.6428e-10 + } + + OUTPUT_RESOURCE + { + ResourceName = DepletedFuel + Ratio = 1.6428e-10 + } + + OUTPUT_RESOURCE + { + ResourceName = ElectricCharge + Ratio = 0.11 // 110 w + } + } + + // Plutonium-238 mass approximately 3.478 kg. + RESOURCE + { + name = Plutonium-238 + amount = 0.1755 + maxAmount = 0.1755 + } + RESOURCE + { + name = DepletedFuel + amount = 0 + maxAmount = 0.1755 + } +} + +// Reactors +// Common configs +@PART[reactor-25|reactor-0625|reactor-125|nfe-reactor-25-2|nfe-reactor-1875-1|nfe-reactor-125-1|nfe-reactor-0625-1|nfe-reactor-tiny-1|nfe-reactor-tiny-2]:FOR[RealismOverhaul] +{ + %RSSROConfig = True + @MODULE[ModuleCoreHeatNoCatchup] + { + @CoreToPartRatio = 0.1 //Scale back cooling if the part is this % of core temp + @CoreTempGoalAdjustment = 0 //Dynamic goal adjustment + @CoreEnergyMultiplier = 0.1 //What percentage of our core energy do we transfer to the part + @CoolingRadiantMultiplier = 0 //If the core is colder, how much radiates? + @HeatTransferMultiplier = 0 //If the part is hotter, how much heat transfers in? + @CoolantTransferMultiplier = 0.01 //If the part is colder, how much of our energy can we transfer? + @radiatorCoolingFactor = 1 //How much energy we pull from core with an active radiator? >= 1 + @radiatorHeatingFactor = 0.01 //How much energy we push to the active radiator + @MaxCalculationWarp = 1000 //Based on how dramatic the changes are, this is the max rate of change + } +} + +// ================================================================================= +// DEPRECATED REACTORS +// ================================================================================= +// RAPID-L reactor +// ================================================================================= +// source: https://inis.iaea.org/search/search.aspx?orig_q=RN:37002589 +@PART[reactor-25]:FOR[RealismOverhaul] +{ + %RSSROConfig = True + %RODeprecated = True + @title = DEPRECATED + @manufacturer = Japan Atomic Energy Research Institute + @description = Japanese design based for lunar bases. Design lifetime 8 years at full power. Meant to be buried underground. + @mass = 6.6 //including power conversion equipment and radiators? -500 kg fuel + %specLevel = concept + + //~2 meters dia, 7 meters length + @MODEL + { + @scale = 0.41928, 1, 0.41928 + } + @rescaleFactor = 1.908027 + + // resources + !RESOURCE,* {} + RESOURCE + { + name = DepletedFuel + amount = 0 + maxAmount = 45.7 + } + //Uranium Nitride, 40% enriched? + RESOURCE + { + name = UraniumNitride + amount = 35 + maxAmount = 35 //~500 kg + } +} +@PART[reactor-25]:FOR[RealismOverhaul]:NEEDS[!SystemHeat] +{ + // reactor parameters + @MODULE[FissionGenerator] + { + @PowerGeneration = 200 + @HeatUsed = 5000 + } + @MODULE[FissionReactor] + { + // Heat to generate (kW*50 - no clue why, hardcoded) + @HeatGeneration = #$../MODULE[FissionGenerator]/HeatUsed$ + @HeatGeneration *= 50 + @NominalTemperature = 1373 // Above this temp more power output but risky + @CriticalTemperature = 1513 // Above this temp, reactor takes damage + + // Amount of damage taken by core when over critical temp + // %/s/K, so with value 0.001, at 200 K over CriticalTemp, reactor takes 0.2% damage/s + @CoreDamageRate = 0.02 + + // Base lifetime calculations off this resource + @FuelName = UraniumNitride + + !INPUT_RESOURCE {} + !OUTPUT_RESOURCE {} + INPUT_RESOURCE + { + ResourceName = UraniumNitride + Ratio = 0.000000138654 // 8 years of operation + FlowMode = NO_FLOW + } + OUTPUT_RESOURCE + { + ResourceName = DepletedFuel + Ratio = 0.00000013188 + FlowMode = NO_FLOW + } + } + @MODULE[RadioactiveStorageContainer] + { + @DangerousFuel = DepletedFuel + @SafeFuel = UraniumNitride + } + @MODULE[ModuleCoreHeatNoCatchup] + { + @CoreTempGoal = 1373 //Internal temp goal - we don't transfer till we hit this point + @HeatRadiantMultiplier = 0.1 //If the core is hotter, how much heat radiates? + @CoreShutdownTemp = 2100 //At what core temperature do we shut down all generators on this part? + @MaxCoolant = 5000 //Maximum amount of radiator capacity we can consume + } + +} +@PART[reactor-25]:FOR[zzzRealismOverhaul]:NEEDS[SystemHeat] +{ + @mass -= 2.50 //subtract 2.5 tons radiator mass, since system heat actually needs rads + //Radiator mass just determined with Heat Control Radiators... + !MODULE[ModuleUpdateOverride] {} + !MODULE[FissionReactor] {} + !MODULE[FissionGenerator] {} + !MODULE[ModuleCoreHeatNoCatchup] {} + !MODULE[RadioactiveStorageContainer] {} + + //if the user has installed SystemHeat reactor configs, this will already be configured with SystemHeat modules + //if they have not, then the reactor will not be configured + //to make things easier for me, just preemptively delete any SystemHeat modules that might exist and make new ones + //patch must be run in zzzRealismOverhaul to make sure we patch *after* SystemHeat does + + !MODULE[ModuleSystemHeat] {} + !MODULE[ModuleSystemHeatFissionReactor] {} + !MODULE[ModuleSystemHeatFissionFuelContainer] {} + + MODULE + { + name = ModuleSystemHeat + volume = 10 + moduleID = reactor + iconName = Icon_Nuclear + } + + MODULE + { + name = ModuleSystemHeatFissionReactor + moduleID = reactor + + // -- Heat stuff + // ModuleSystemHeat instance to link to + systemHeatModuleID = reactor + // Heat kW + HeatGeneration + { + key = 0 0 0 0 + key = 100 5000 0 0 + } + + // Above this temp, risky + NominalTemperature = 850 //reactor outlet temp 1373 K, but heat rejected to radiator at only 950 K after thermoelectric system + // Above this temp, reactor takes damage + CriticalTemperature = 950 + // Amount of damage taken by core when over critical temp + // %/s/K, so with value 0.001, at 200 K over CriticalTemp, reactor takes 0.2% damage/s + CoreDamageRate = 0.008 + + // When repairing, amount of core damage to heal (%) + RepairAmountPerKit = 20 + + CurrentPowerPercent = 100 + ThrottleIncreaseRate = 5 + MinimumThrottle = 5 + + // -- Electrical stuff + // Power generated + ElectricalGeneration + { + key = 0 0 + key = 100 200 + } + + // --- Fuel stuff + // Base lifetime calculations off this resource + FuelName = UraniumNitride + + INPUT_RESOURCE + { + ResourceName = UraniumNitride + Ratio = 0.000000138654 // 8 years of operation + FlowMode = NO_FLOW + } + OUTPUT_RESOURCE + { + ResourceName = DepletedFuel + Ratio = 0.00000013188 + DumpExcess = false + FlowMode = NO_FLOW + } + } + + MODULE + { + name = ModuleSystemHeatFissionFuelContainer + EngineerLevelForTransfer = 1 + ResourceNames = UraniumNitride, DepletedFuel + } +} +// ================================================================================= +// TOPAZ-II reactor - main source: http://fti.neep.wisc.edu/neep602/SPRING00/lecture35.pdf +// ================================================================================= +@PART[reactor-125]:FOR[RealismOverhaul] +{ + %RSSROConfig = True + %RODeprecated = True + @title = DEPRECATED + @manufacturer = #roMfrKurchatov + @description = Thermionic reactor ENISY. Only loosely related to TOPAZ-I, which was flown in the last 2 Soviet RORSAT satellites, it was part of an alternate thermionic reactor program to TOPAZ-I. Planned to be flown in the late 90s. Design lifetime 4 years at full power. + @mass = 1.010 //including radiator mass and heat conversion equipment? -27 kg fuel + %specLevel = prototype + + //1.4 meters dia, 4 meters length + @MODEL + { + @scale = 0.60345, 1, 0.60345 + } + @rescaleFactor = 1.855994 + + // resources + !RESOURCE,* {} + RESOURCE + { + name = DepletedFuel + amount = 0 + maxAmount = 2.461 + } + //Uranium Oxide, 96% enriched + RESOURCE + { + name = EnrichedUranium + amount = 2.461 + maxAmount = 2.461 //~27 kg fuel + } +} +@PART[reactor-125]:FOR[RealismOverhaul]:NEEDS[!SystemHeat] +{ + @MODULE[FissionGenerator] + { + @PowerGeneration = 6 + @HeatUsed = 135 + } + @MODULE[FissionReactor] + { + // Heat to generate (kW*50 - no clue why, hardcoded) + @HeatGeneration = #$../MODULE[FissionGenerator]/HeatUsed$ + @HeatGeneration *= 50 + @NominalTemperature = 823 // Above this temp more power output but risky + @CriticalTemperature = 1073 // Above this temp, reactor takes damage + + // Amount of damage taken by core when over critical temp + // %/s/K, so with value 0.001, at 200 K over CriticalTemp, reactor takes 0.2% damage/s + @CoreDamageRate = 0.01 + + // Base lifetime calculations off this resource + @FuelName = EnrichedUranium + + !INPUT_RESOURCE {} + !OUTPUT_RESOURCE {} + INPUT_RESOURCE + { + ResourceName = EnrichedUranium + Ratio = 0.000000019496 // 4 years of operation + FlowMode = NO_FLOW + } + OUTPUT_RESOURCE + { + ResourceName = DepletedFuel + Ratio = 0.000000019496 + FlowMode = NO_FLOW + } + } + @MODULE[RadioactiveStorageContainer] + { + @DangerousFuel = DepletedFuel + @SafeFuel = EnrichedUranium + } + @MODULE[ModuleCoreHeatNoCatchup] + { + @CoreTempGoal = 823 //Internal temp goal - we don't transfer till we hit this point + @HeatRadiantMultiplier = 0.1 //If the core is hotter, how much heat radiates? + @CoreShutdownTemp = 1580 //At what core temperature do we shut down all generators on this part? + @MaxCoolant = 135 //Maximum amount of radiator capacity we can consume + } +} +@PART[reactor-125]:FOR[zzzRealismOverhaul]:NEEDS[SystemHeat] +{ + @mass -= 0.075 //subtract 75 kg radiator mass, since system heat actually needs rads + !MODULE[ModuleUpdateOverride] {} + !MODULE[FissionReactor] {} + !MODULE[FissionGenerator] {} + !MODULE[ModuleCoreHeatNoCatchup] {} + !MODULE[RadioactiveStorageContainer] {} + + //if the user has installed SystemHeat reactor configs, this will already be configured with SystemHeat modules + //if they have not, then the reactor will not be configured + //to make things easier for me, just preemptively delete any SystemHeat modules that might exist and make new ones + //patch must be run in zzzRealismOverhaul to make sure we patch *after* SystemHeat does + + !MODULE[ModuleSystemHeat] {} + !MODULE[ModuleSystemHeatFissionReactor] {} + !MODULE[ModuleSystemHeatFissionFuelContainer] {} + + MODULE + { + name = ModuleSystemHeat + volume = 1 + moduleID = reactor + iconName = Icon_Nuclear + } + + MODULE + { + name = ModuleSystemHeatFissionReactor + moduleID = reactor + + // -- Heat stuff + // ModuleSystemHeat instance to link to + systemHeatModuleID = reactor + // Heat kW + HeatGeneration + { + key = 0 0 + key = 100 135 + } + + // Above this temp, risky + NominalTemperature = 600 //reactor outlet temp 2100 K, but heat rejected to radiator at only 600 K after electrode + // Above this temp, reactor takes damage + CriticalTemperature = 700 + // Amount of damage taken by core when over critical temp + // %/s/K, so with value 0.001, at 200 K over CriticalTemp, reactor takes 0.2% damage/s + CoreDamageRate = 0.008 + + // When repairing, amount of core damage to heal (%) + RepairAmountPerKit = 20 + + CurrentPowerPercent = 100 + ThrottleIncreaseRate = 5 + MinimumThrottle = 5 + + // -- Electrical stuff + // Power generated + ElectricalGeneration + { + key = 0 0 + key = 100 6 + } + + // --- Fuel stuff + // Base lifetime calculations off this resource + FuelName = EnrichedUranium + + INPUT_RESOURCE + { + ResourceName = EnrichedUranium + Ratio = 0.000000019496 // 4 years of operation + FlowMode = NO_FLOW + } + OUTPUT_RESOURCE + { + ResourceName = DepletedFuel + Ratio = 0.000000019496 + DumpExcess = false + FlowMode = NO_FLOW + } + + } + MODULE + { + name = ModuleSystemHeatFissionFuelContainer + EngineerLevelForTransfer = 1 + ResourceNames = EnrichedUranium, DepletedFuel + } +} + +// ================================================================================= +// SAFE-400 - main source: https://aip.scitation.org/doi/abs/10.1063/1.1449775 +// ================================================================================= +@PART[reactor-0625]:FOR[RealismOverhaul] +{ + %RSSROConfig = True + %RODeprecated = True + @title = DEPRECATED + @manufacturer = #roMfrLANL + @description = Safe Affordable Fission Engine. Small and lightweight but powerful reactor enabled by new technology. Design lifetime of 15 years at full power. + @mass = 2.048 // -140 kg fuel + //541 kg, not including shielding, radiator mass or heat conversion equipment + //Guess 1646 kg for controls, power conversion equipment, shielding, radiators (half of Prometheus) + %specLevel = concept + + //2/3rds the size of Prometheus? 1.4x5.3 meters + @MODEL + { + @scale = 0.5196, 1, 0.5196 + } + @rescaleFactor = 4.4902 + + // resources + !RESOURCE,* {} + RESOURCE + { + name = DepletedFuel + amount = 0 + maxAmount = 12.76 + } + //Uranium Nitride, unknown enrichment + RESOURCE + { + name = UraniumNitride + amount = 9.79 + maxAmount = 9.79 //~140 kg fuel + } +} +@PART[reactor-0625]:FOR[RealismOverhaul]:NEEDS[!SystemHeat] +{ + // reactor parameters + @MODULE[FissionGenerator] + { + @PowerGeneration = 100 + @HeatUsed = 400 + } + @MODULE[FissionReactor] + { + // Heat to generate (kW*50 - no clue why, hardcoded) + @HeatGeneration = #$../MODULE[FissionGenerator]/HeatUsed$ + @HeatGeneration *= 50 + @NominalTemperature = 1240 // Above this temp more power output but risky + @CriticalTemperature = 1400 // Above this temp, reactor takes damage + + + // Amount of damage taken by core when over critical temp + // %/s/K, so with value 0.001, at 200 K over CriticalTemp, reactor takes 0.2% damage/s + @CoreDamageRate = 0.002 + + // Base lifetime calculations off this resource + @FuelName = UraniumNitride + + !INPUT_RESOURCE {} + !OUTPUT_RESOURCE {} + INPUT_RESOURCE + { + ResourceName = UraniumNitride + Ratio = 0.000000020682 // 15 years + FlowMode = NO_FLOW + } + OUTPUT_RESOURCE + { + ResourceName = DepletedFuel + Ratio = 0.000000026596 + FlowMode = NO_FLOW + } + } + @MODULE[RadioactiveStorageContainer] + { + @DangerousFuel = DepletedFuel + @SafeFuel = UraniumNitride + } + @MODULE[ModuleCoreHeatNoCatchup] + { + @CoreTempGoal = 1240 //Internal temp goal - we don't transfer till we hit this point + @HeatRadiantMultiplier = 0.05 //If the core is hotter, how much heat radiates? + @CoreShutdownTemp = 2000 //At what core temperature do we shut down all generators on this part? + @MaxCoolant = 400 //Maximum amount of radiator capacity we can consume + } +} +@PART[reactor-0625]:FOR[zzzRealismOverhaul]:NEEDS[SystemHeat] +{ + @mass -= 0.400 //subtract 400 kg radiator mass, since system heat actually needs rads + //Radiator mass just determined with Heat Control Radiators... + !MODULE[ModuleUpdateOverride] {} + !MODULE[FissionReactor] {} + !MODULE[FissionGenerator] {} + !MODULE[ModuleCoreHeatNoCatchup] {} + !MODULE[RadioactiveStorageContainer] {} + + //if the user has installed SystemHeat reactor configs, this will already be configured with SystemHeat modules + //if they have not, then the reactor will not be configured + //to make things easier for me, just preemptively delete any SystemHeat modules that might exist and make new ones + + !MODULE[ModuleSystemHeat] {} + !MODULE[ModuleSystemHeatFissionReactor] {} + !MODULE[ModuleSystemHeatFissionFuelContainer] {} + + MODULE + { + name = ModuleSystemHeat + volume = 1 + moduleID = reactor + iconName = Icon_Nuclear + } + + MODULE + { + name = ModuleSystemHeatFissionReactor + moduleID = reactor + + // -- Heat stuff + // ModuleSystemHeat instance to link to + systemHeatModuleID = reactor + // Heat kW + HeatGeneration + { + key = 0 0 + key = 100 400 + } + + // Above this temp, risky + NominalTemperature = 505 //reactor outlet temp 1240 K, but heat rejected to radiator at only 505? K after recuperator + // Above this temp, reactor takes damage + CriticalTemperature = 605 + // Amount of damage taken by core when over critical temp + // %/s/K, so with value 0.001, at 200 K over CriticalTemp, reactor takes 0.2% damage/s + CoreDamageRate = 0.008 + + // When repairing, amount of core damage to heal (%) + RepairAmountPerKit = 20 + + CurrentPowerPercent = 100 + ThrottleIncreaseRate = 5 + MinimumThrottle = 5 + + // -- Electrical stuff + // Power generated + ElectricalGeneration { - ResourceName = Plutonium-238 - Ratio = 1.6428e-10 + key = 0 0 + key = 100 100 } - OUTPUT_RESOURCE + // --- Fuel stuff + // Base lifetime calculations off this resource + FuelName = UraniumNitride + + INPUT_RESOURCE { - ResourceName = DepletedFuel - Ratio = 1.6428e-10 + ResourceName = UraniumNitride + Ratio = 0.000000020682 // 15 years + FlowMode = NO_FLOW } - OUTPUT_RESOURCE { - ResourceName = ElectricCharge - Ratio = 0.13 // 130 w + ResourceName = DepletedFuel + Ratio = 0.000000026596 + DumpExcess = false + FlowMode = NO_FLOW } - } - - RESOURCE - { - name = Plutonium-238 - amount = 0.060557 - maxAmount = 0.060557 - } - RESOURCE - { - name = DepletedFuel - amount = 0 - maxAmount = 0.060557 } -} - -// Reactors -// Common configs -@PART[reactor-25|reactor-0625|reactor-125]:FOR[RealismOverhaul] -{ - %RSSROConfig = True - @MODULE[ModuleCoreHeatNoCatchup] + MODULE { - @CoreToPartRatio = 0.1 //Scale back cooling if the part is this % of core temp - @CoreTempGoalAdjustment = 0 //Dynamic goal adjustment - @CoreEnergyMultiplier = 0.1 //What percentage of our core energy do we transfer to the part - @CoolingRadiantMultiplier = 0 //If the core is colder, how much radiates? - @HeatTransferMultiplier = 0 //If the part is hotter, how much heat transfers in? - @CoolantTransferMultiplier = 0.01 //If the part is colder, how much of our energy can we transfer? - @radiatorCoolingFactor = 1 //How much energy we pull from core with an active radiator? >= 1 - @radiatorHeatingFactor = 0.01 //How much energy we push to the active radiator - @MaxCalculationWarp = 1000 //Based on how dramatic the changes are, this is the max rate of change + name = ModuleSystemHeatFissionFuelContainer + EngineerLevelForTransfer = 1 + ResourceNames = UraniumNitride, DepletedFuel } } + // ================================================================================= -// reactor-25 based parts +// nfe-reactor-25-2 based parts // ================================================================================= -// RAPID-L reactor +// SNAP-50 35 kWe - main source: https://beyondnerva.com/fission-power-systems/systems-for-nuclear-auxiliary-power-snap/snap-50/ and references // ================================================================================= -// source: https://inis.iaea.org/search/search.aspx?orig_q=RN:37002589 -@PART[reactor-25]:FOR[RealismOverhaul] +@PART[nfe-reactor-25-2]:FOR[RealismOverhaul] { - @title = RAPID-L Nuclear Reactor - @manufacturer = Japan Atomic Energy Research Institute - @description = Japanese design based for lunar bases. Design lifetime 8 years at full power. Meant to be buried underground. - @mass = 6.6 //including power conversion equipment and radiators? -500 kg fuel - %specLevel = concept + @name = RO-reactor-snap50 + %RSSROConfig = True + @title = NASA SNAP-50 35 kWe Nuclear Reactor + @manufacturer = #roMfrPW + @description = The SNAP 50 was a developmental reactor program separate from the main program. Developed for the ANP under the infamous Project PLUTO, Pratt & Whitney offered the reactor to NASA after the end of the ANP program. The SNAP 50 was advantageous in that it would operate a high conversion efficiencies and high power levels. But, because of the Rankine cycle conversion, it had a higher probability of single point failure and increased weight. This is a scaled-down design, intended for space stations or nuclear-electric tugs. Design lifetime 2 years at full power. + @mass = 7.6505 //including radiator mass and heat conversion equipment? -187.5 kg fuel + %specLevel = prototype //reactor core tested as part of ANP/Project PLUTO, power conversion system tested as part of SNAP? - //~2 meters dia, 7 meters length + //nfe-reactor-25-2: 2.5m dia, 4.9m long + //35 kWe: 1.5 meters dia, 1.8 meters long + //300 kWe: ~6.5 meters dia, 10.5 meters long @MODEL { - @scale = 0.41928, 1, 0.41928 + @scale = 1.6333, 1, 1.6333 } - @rescaleFactor = 1.908027 + @rescaleFactor = 0.3673 + + %node_attach = #$node_stack_bottom$ + @attachRules = 1,0,1,1,1 // resources !RESOURCE,* {} @@ -176,36 +1004,34 @@ { name = DepletedFuel amount = 0 - maxAmount = 45.7 + maxAmount = 17.0938 } - //Uranium Nitride, 40% enriched? + //Uranium Nitride, enrichment unknown? RESOURCE { name = UraniumNitride - amount = 35 - maxAmount = 35 //~500 kg + amount = 13.125 + maxAmount = 13.125 //~187.5 kg fuel } } - -@PART[reactor-25]:FOR[RealismOverhaul]:NEEDS[!SystemHeat] +@PART[RO-reactor-snap50]:FOR[RealismOverhaul]:NEEDS[!SystemHeat] { // reactor parameters @MODULE[FissionGenerator] { - @PowerGeneration = 200 - @HeatUsed = 5000 + @PowerGeneration = 35 + @HeatUsed = 385 } @MODULE[FissionReactor] { - // Heat to generate (kW*50 - no clue why, hardcoded) @HeatGeneration = #$../MODULE[FissionGenerator]/HeatUsed$ @HeatGeneration *= 50 - @NominalTemperature = 1373 // Above this temp more power output but risky - @CriticalTemperature = 1513 // Above this temp, reactor takes damage + @NominalTemperature = 1366 // Above this temp more power output but risky + @CriticalTemperature = 1400 // Above this temp, reactor takes damage // Amount of damage taken by core when over critical temp // %/s/K, so with value 0.001, at 200 K over CriticalTemp, reactor takes 0.2% damage/s - @CoreDamageRate = 0.02 + @CoreDamageRate = 0.05 // Base lifetime calculations off this resource @FuelName = UraniumNitride @@ -215,13 +1041,13 @@ INPUT_RESOURCE { ResourceName = UraniumNitride - Ratio = 0.000000138654 // 8 years of operation + Ratio = 0.000000207837 // 2 years of operation FlowMode = NO_FLOW } OUTPUT_RESOURCE { ResourceName = DepletedFuel - Ratio = 0.00000013188 + Ratio = 0.0000002709266 FlowMode = NO_FLOW } } @@ -232,16 +1058,15 @@ } @MODULE[ModuleCoreHeatNoCatchup] { - @CoreTempGoal = 1373 //Internal temp goal - we don't transfer till we hit this point - @HeatRadiantMultiplier = 0.1 //If the core is hotter, how much heat radiates? - @CoreShutdownTemp = 2100 //At what core temperature do we shut down all generators on this part? - @MaxCoolant = 5000 //Maximum amount of radiator capacity we can consume + @CoreTempGoal = 1366 //Internal temp goal - we don't transfer till we hit this point + @HeatRadiantMultiplier = 0.05 //If the core is hotter, how much heat radiates? + @CoreShutdownTemp = 2000 //At what core temperature do we shut down all generators on this part? + @MaxCoolant = 2200 //Maximum amount of radiator capacity we can consume } - } -@PART[reactor-25]:FOR[zzzRealismOverhaul]:NEEDS[SystemHeat] +@PART[RO-reactor-snap50]:FOR[zzzRealismOverhaul]:NEEDS[SystemHeat] { - @mass -= 2.50 //subtract 2.5 tons radiator mass, since system heat actually needs rads + @mass -= 0.170 //subtract 170 kg radiator mass, since system heat actually needs rads //Radiator mass just determined with Heat Control Radiators... !MODULE[ModuleUpdateOverride] {} !MODULE[FissionReactor] {} @@ -265,7 +1090,7 @@ moduleID = reactor iconName = Icon_Nuclear } - + MODULE { name = ModuleSystemHeatFissionReactor @@ -278,19 +1103,19 @@ HeatGeneration { key = 0 0 0 0 - key = 100 5000 0 0 + key = 100 385 0 0 } // Above this temp, risky - NominalTemperature = 850 //reactor outlet temp 1373 K, but heat rejected to radiator at only 950 K after thermoelectric system + NominalTemperature = 865 //reactor outlet temp 1366 K, but heat rejected to radiator at only 865 K after condensor // Above this temp, reactor takes damage - CriticalTemperature = 950 + CriticalTemperature = 965 // Amount of damage taken by core when over critical temp // %/s/K, so with value 0.001, at 200 K over CriticalTemp, reactor takes 0.2% damage/s CoreDamageRate = 0.008 // When repairing, amount of core damage to heal (%) - RepairAmountPerKit = 20 + RepairAmountPerKit = 20 CurrentPowerPercent = 100 ThrottleIncreaseRate = 5 @@ -301,7 +1126,7 @@ ElectricalGeneration { key = 0 0 - key = 100 200 + key = 100 35 } // --- Fuel stuff @@ -311,13 +1136,13 @@ INPUT_RESOURCE { ResourceName = UraniumNitride - Ratio = 0.000000138654 // 8 years of operation + Ratio = 0.000000207837 // 2 years of operation FlowMode = NO_FLOW } - OUTPUT_RESOURCE + @OUTPUT_RESOURCE { ResourceName = DepletedFuel - Ratio = 0.00000013188 + Ratio = 0.0000002709266 DumpExcess = false FlowMode = NO_FLOW } @@ -330,27 +1155,30 @@ ResourceNames = UraniumNitride, DepletedFuel } } - // ================================================================================= -// Prometheus reactor +// SNAP-50 300 kWe - main source: https://beyondnerva.com/fission-power-systems/systems-for-nuclear-auxiliary-power-snap/snap-50/ and references // ================================================================================= -// source: http://everyspec.com/NASA/NASA-JPL/JPL_Prometheus_Final_Report_3673/ -// https://web.archive.org/web/20160327150008/http://navalreactorshistorydb.info:8080/xtf/data/pdf/002/002.pdf -+PART[reactor-25]:FOR[RealismOverhaul] ++PART[RO-reactor-snap50]:FOR[RealismOverhaul] { - @name = RO-reactor-prometheus - @title = Prometheus 200 KWe Nuclear Reactor - @manufacturer = #roMfrJPL - @description = NASA reactor design intended for large deep space nuclear-electric probes, including Jupiter Icy Moons Explorer (JIMO). Advanced gas-cooled fast reactor design with redundant Brayton-cycle generators. Design lifetime 10 years at full power, plus 10 years at reduced power. - @mass = 4.362 //reactor assembly 3309 kg, radiators 1553 kg, -500 kg fuel? - %specLevel = concept + @name = RO-reactor-snap50-300 + %RSSROConfig = True + @title = NASA SNAP-50 300 kWe Nuclear Reactor + @manufacturer = #roMfrPW + @description = The SNAP 50 was a developmental reactor program separate from the main program. Developed for ANP under the infamous Project PLUTO, Pratt & Whitney offered the reactor to NASA after the end of the ANP program. The SNAP 50 was advantageous in that it would operate a high conversion efficiencies and high power levels. But, because of the Rankine cycle conversion, it had a higher probability of single point failure and increased weight. This is the full-size design, intended for large space stations or lunar bases. Design lifetime 2 years at full power. + @mass = 19.431 //including radiator mass and heat conversion equipment? -300 kg fuel + %specLevel = prototype //reactor core tested as part of ANP/Project PLUTO, power conversion system tested as part of SNAP? - //by pixel counting, ~2.1x7.8 meters + //nfe-reactor-25-2: 2.5m dia, 4.9m long + //35 kWe: 1.5 meters dia, 1.8 meters long + //300 kWe: ~6.5 meters dia, 10.5 meters long @MODEL { - @scale = 0.41928, 1, 0.41928 + @scale = 1.2133, 1, 1.2133 } - @rescaleFactor = 2.0034 + @rescaleFactor = 2.1429 + + %node_attach = #$node_stack_bottom$ + @attachRules = 1,0,1,1,1 // resources !RESOURCE,* {} @@ -358,72 +1186,70 @@ { name = DepletedFuel amount = 0 - maxAmount = 45.6 + maxAmount = 27.35 } - //Uranium Oxide + //Uranium Nitride, enrichment unknown? RESOURCE { - name = EnrichedUranium - amount = 45.6 - maxAmount = 45.6 //500 kg? + name = UraniumNitride + amount = 21 + maxAmount = 21 //~300 kg fuel } } - -@PART[RO-reactor-prometheus]:FOR[RealismOverhaul]:NEEDS[!SystemHeat] +@PART[RO-reactor-snap50-300]:FOR[RealismOverhaul]:NEEDS[!SystemHeat] { // reactor parameters @MODULE[FissionGenerator] { - @PowerGeneration = 200 - @HeatUsed = 1000 + @PowerGeneration = 300 + @HeatUsed = 2200 } @MODULE[FissionReactor] { - // Heat to generate (kW*50 - no clue why, hardcoded) @HeatGeneration = #$../MODULE[FissionGenerator]/HeatUsed$ @HeatGeneration *= 50 - @NominalTemperature = 1150 // Above this temp more power output but risky - @CriticalTemperature = 1350 // Above this temp, reactor takes damage + @NominalTemperature = 1366 // Above this temp more power output but risky + @CriticalTemperature = 1400 // Above this temp, reactor takes damage // Amount of damage taken by core when over critical temp // %/s/K, so with value 0.001, at 200 K over CriticalTemp, reactor takes 0.2% damage/s - @CoreDamageRate = 0.02 + @CoreDamageRate = 0.05 // Base lifetime calculations off this resource - @FuelName = EnrichedUranium + @FuelName = UraniumNitride !INPUT_RESOURCE {} !OUTPUT_RESOURCE {} INPUT_RESOURCE { - ResourceName = EnrichedUranium - Ratio = 0.000000121322 // 10 years of operation at full power, 10 years at reduced power. 12 years? + ResourceName = UraniumNitride + Ratio = 0.000000332725 // 2 years of operation FlowMode = NO_FLOW } OUTPUT_RESOURCE { ResourceName = DepletedFuel - Ratio = 0.000000121322 + Ratio = 0.0000004337254 FlowMode = NO_FLOW } } @MODULE[RadioactiveStorageContainer] { @DangerousFuel = DepletedFuel - @SafeFuel = EnrichedUranium + @SafeFuel = UraniumNitride } @MODULE[ModuleCoreHeatNoCatchup] { - @CoreTempGoal = 1150 //Internal temp goal - we don't transfer till we hit this point - @HeatRadiantMultiplier = 0.1 //If the core is hotter, how much heat radiates? - @CoreShutdownTemp = 1350 //At what core temperature do we shut down all generators on this part? - @MaxCoolant = 5000 //Maximum amount of radiator capacity we can consume + @CoreTempGoal = 1366 //Internal temp goal - we don't transfer till we hit this point + @HeatRadiantMultiplier = 0.05 //If the core is hotter, how much heat radiates? + @CoreShutdownTemp = 2000 //At what core temperature do we shut down all generators on this part? + @MaxCoolant = 2200 //Maximum amount of radiator capacity we can consume } - } -@PART[RO-reactor-prometheus]:FOR[zzzRealismOverhaul]:NEEDS[SystemHeat] +@PART[RO-reactor-snap50-300]:FOR[zzzRealismOverhaul]:NEEDS[SystemHeat] { - @mass -= 1.553 //subtract radiator mass since system heat actually needs rads + @mass -= 0.91 //subtract 910 kg radiator mass, since system heat actually needs rads + //Radiator mass just determined with Heat Control Radiators... !MODULE[ModuleUpdateOverride] {} !MODULE[FissionReactor] {} !MODULE[FissionGenerator] {} @@ -446,7 +1272,7 @@ moduleID = reactor iconName = Icon_Nuclear } - + MODULE { name = ModuleSystemHeatFissionReactor @@ -459,19 +1285,19 @@ HeatGeneration { key = 0 0 0 0 - key = 100 1000 0 0 + key = 100 2200 0 0 } // Above this temp, risky - NominalTemperature = 505 //reactor outlet temp 1150 K, but heat rejected to radiator at only 505 K after recuperator + NominalTemperature = 865 //reactor outlet temp 1366 K, but heat rejected to radiator at only 865 K after condensor // Above this temp, reactor takes damage - CriticalTemperature = 605 + CriticalTemperature = 965 // Amount of damage taken by core when over critical temp // %/s/K, so with value 0.001, at 200 K over CriticalTemp, reactor takes 0.2% damage/s CoreDamageRate = 0.008 // When repairing, amount of core damage to heal (%) - RepairAmountPerKit = 20 + RepairAmountPerKit = 20 CurrentPowerPercent = 100 ThrottleIncreaseRate = 5 @@ -482,23 +1308,23 @@ ElectricalGeneration { key = 0 0 - key = 100 200 + key = 100 300 } // --- Fuel stuff // Base lifetime calculations off this resource - FuelName = EnrichedUranium + FuelName = UraniumNitride INPUT_RESOURCE { - ResourceName = EnrichedUranium - Ratio = 0.000000121322 // 12 years of operation + ResourceName = UraniumNitride + Ratio = 0.000000332725 // 2 years of operation FlowMode = NO_FLOW } - OUTPUT_RESOURCE + @OUTPUT_RESOURCE { ResourceName = DepletedFuel - Ratio = 0.000000121322 + Ratio = 0.0000004337254 DumpExcess = false FlowMode = NO_FLOW } @@ -508,33 +1334,34 @@ { name = ModuleSystemHeatFissionFuelContainer EngineerLevelForTransfer = 1 - ResourceNames = EnrichedUranium, DepletedFuel + ResourceNames = UraniumNitride, DepletedFuel } } // ================================================================================= -// SNAP-8 35 kWe - main source: https://beyondnerva.com/fission-power-systems/systems-for-nuclear-auxiliary-power-snap/snap-50/ -// https://beyondnerva.com/fission-power-systems/systems-for-nuclear-auxiliary-power-snap/snap-8/ +// nfe-reactor-1875-1 based parts +// ================================================================================= +// Prometheus reactor // ================================================================================= -+PART[reactor-25]:FOR[RealismOverhaul] +// source: http://everyspec.com/NASA/NASA-JPL/JPL_Prometheus_Final_Report_3673/ +// https://web.archive.org/web/20160327150008/http://navalreactorshistorydb.info:8080/xtf/data/pdf/002/002.pdf +@PART[nfe-reactor-1875-1]:FOR[RealismOverhaul] { - @name = RO-reactor-snap8 + @name = RO-reactor-prometheus %RSSROConfig = True - @title = NASA SNAP-8 Nuclear Reactor - @manufacturer = #roMfrAtomicsInt - @description = The SNAP 8 program was an evolution of the SNAP 2/10A design. Much larger and more powerful than it's predecessors, it was heavily shielded for use on manned space stations, with an output of 35 kWe. Reverted to thermoelectric power converters due to development cost and reliability concerns around the mercury vapor turbines of SNAP-2. Design lifetime 5 years at full power. - @mass = 13.657 //including radiator mass and heat conversion equipment? -82 kg fuel - %specLevel = prototype //reactor and power conversion equipment tested extensively + @title = Prometheus 200 KWe Nuclear Reactor + @manufacturer = #roMfrJPL + @description = NASA reactor design intended for large deep space nuclear-electric probes, including Jupiter Icy Moons Explorer (JIMO). Advanced gas-cooled fast reactor design with redundant Brayton-cycle generators. Design lifetime 10 years at full power, plus 10 years at reduced power. + @mass = 4.362 //reactor assembly 3309 kg, radiators 1553 kg, -500 kg fuel? + %specLevel = concept - //6.6 meters diameter, 8.2 meters tall + //nfe-reactor-1875-1: 1.875x3.5 + //by pixel counting, ~2.1x7.8 meters @MODEL { - @scale = 1.114, 1, 1.114 + @scale = 0.5026, 1, 0.5026 } - @rescaleFactor = 2.340 - - %node_attach = #$node_stack_bottom$ - @attachRules = 1,0,1,1,1 + @rescaleFactor = 2.2286 // resources !RESOURCE,* {} @@ -542,34 +1369,36 @@ { name = DepletedFuel amount = 0 - maxAmount = 7.47 + maxAmount = 45.6 } - //Uranium-Zirconium-Hydride, unknown enrichment + //Uranium Oxide RESOURCE { name = EnrichedUranium - amount = 7.47 - maxAmount = 7.47 //~82 kg fuel + amount = 45.6 + maxAmount = 45.6 //500 kg? } } -@PART[RO-reactor-snap8]:FOR[RealismOverhaul]:NEEDS[!SystemHeat] + +@PART[RO-reactor-prometheus]:FOR[RealismOverhaul]:NEEDS[!SystemHeat] { // reactor parameters @MODULE[FissionGenerator] { - @PowerGeneration = 35 - @HeatUsed = 600 + @PowerGeneration = 200 + @HeatUsed = 1000 } @MODULE[FissionReactor] { + // Heat to generate (kW*50 - no clue why, hardcoded) @HeatGeneration = #$../MODULE[FissionGenerator]/HeatUsed$ @HeatGeneration *= 50 - @NominalTemperature = 978 // Above this temp more power output but risky - @CriticalTemperature = 1078 // Above this temp, reactor takes damage + @NominalTemperature = 1150 // Above this temp more power output but risky + @CriticalTemperature = 1350 // Above this temp, reactor takes damage // Amount of damage taken by core when over critical temp // %/s/K, so with value 0.001, at 200 K over CriticalTemp, reactor takes 0.2% damage/s - @CoreDamageRate = 0.05 + @CoreDamageRate = 0.02 // Base lifetime calculations off this resource @FuelName = EnrichedUranium @@ -579,13 +1408,13 @@ INPUT_RESOURCE { ResourceName = EnrichedUranium - Ratio = 0.0000000473565 // 5 years of operation + Ratio = 0.000000121322 // 10 years of operation at full power, 10 years at reduced power. 12 years? FlowMode = NO_FLOW } OUTPUT_RESOURCE { ResourceName = DepletedFuel - Ratio = 0.0000000473565 + Ratio = 0.000000121322 FlowMode = NO_FLOW } } @@ -596,16 +1425,16 @@ } @MODULE[ModuleCoreHeatNoCatchup] { - @CoreTempGoal = 1366 //Internal temp goal - we don't transfer till we hit this point - @HeatRadiantMultiplier = 0.05 //If the core is hotter, how much heat radiates? - @CoreShutdownTemp = 2000 //At what core temperature do we shut down all generators on this part? - @MaxCoolant = 2200 //Maximum amount of radiator capacity we can consume + @CoreTempGoal = 1150 //Internal temp goal - we don't transfer till we hit this point + @HeatRadiantMultiplier = 0.1 //If the core is hotter, how much heat radiates? + @CoreShutdownTemp = 1350 //At what core temperature do we shut down all generators on this part? + @MaxCoolant = 5000 //Maximum amount of radiator capacity we can consume } + } -@PART[RO-reactor-snap8]:FOR[zzzRealismOverhaul]:NEEDS[SystemHeat] +@PART[RO-reactor-prometheus]:FOR[zzzRealismOverhaul]:NEEDS[SystemHeat] { - @mass -= 0.315 //subtract 315 kg radiator mass, since system heat actually needs rads - //Radiator mass just determined with Heat Control Radiators... + @mass -= 1.553 //subtract radiator mass since system heat actually needs rads !MODULE[ModuleUpdateOverride] {} !MODULE[FissionReactor] {} !MODULE[FissionGenerator] {} @@ -628,7 +1457,7 @@ moduleID = reactor iconName = Icon_Nuclear } - + MODULE { name = ModuleSystemHeatFissionReactor @@ -641,19 +1470,19 @@ HeatGeneration { key = 0 0 0 0 - key = 100 600 0 0 + key = 100 1000 0 0 } // Above this temp, risky - NominalTemperature = 766 //reactor outlet temp 978 K, but heat rejected to radiator at only 766 K after thermoelectric system + NominalTemperature = 505 //reactor outlet temp 1150 K, but heat rejected to radiator at only 505 K after recuperator // Above this temp, reactor takes damage - CriticalTemperature = 866 + CriticalTemperature = 605 // Amount of damage taken by core when over critical temp // %/s/K, so with value 0.001, at 200 K over CriticalTemp, reactor takes 0.2% damage/s CoreDamageRate = 0.008 // When repairing, amount of core damage to heal (%) - RepairAmountPerKit = 20 + RepairAmountPerKit = 20 CurrentPowerPercent = 100 ThrottleIncreaseRate = 5 @@ -664,7 +1493,7 @@ ElectricalGeneration { key = 0 0 - key = 100 35 + key = 100 200 } // --- Fuel stuff @@ -674,13 +1503,13 @@ INPUT_RESOURCE { ResourceName = EnrichedUranium - Ratio = 0.0000000473565 // 5 years of operation + Ratio = 0.000000121322 // 12 years of operation FlowMode = NO_FLOW } - @OUTPUT_RESOURCE + OUTPUT_RESOURCE { ResourceName = DepletedFuel - Ratio = 0.0000000473565 + Ratio = 0.000000121322 DumpExcess = false FlowMode = NO_FLOW } @@ -693,26 +1522,30 @@ ResourceNames = EnrichedUranium, DepletedFuel } } + // ================================================================================= -// SNAP-50 35 kWe - main source: https://beyondnerva.com/fission-power-systems/systems-for-nuclear-auxiliary-power-snap/snap-50/ and references +// nfe-reactor-125-1 based parts +// ================================================================================= +// SNAP-8 35 kWe - main source: https://beyondnerva.com/fission-power-systems/systems-for-nuclear-auxiliary-power-snap/snap-50/ +// https://beyondnerva.com/fission-power-systems/systems-for-nuclear-auxiliary-power-snap/snap-8/ // ================================================================================= -+PART[reactor-25]:FOR[RealismOverhaul] +@PART[nfe-reactor-125-1]:FOR[RealismOverhaul] //this is supposed to be an SP-100 model, but it's pretty close to SNAP-8 (SNAP-8 is related?) { - @name = RO-reactor-snap50 + @name = RO-reactor-snap8 %RSSROConfig = True - @title = NASA SNAP-50 35 kWe Nuclear Reactor - @manufacturer = #roMfrPW - @description = The SNAP 50 was a developmental reactor program separate from the main program. Developed for the ANP under the infamous Project PLUTO, Pratt & Whitney offered the reactor to NASA after the end of the ANP program. The SNAP 50 was advantageous in that it would operate a high conversion efficiencies and high power levels. But, because of the Rankine cycle conversion, it had a higher probability of single point failure and increased weight. This is a scaled-down design, intended for space stations or nuclear-electric tugs. Design lifetime 2 years at full power. - @mass = 7.6505 //including radiator mass and heat conversion equipment? -187.5 kg fuel - %specLevel = prototype //reactor core tested as part of ANP/Project PLUTO, power conversion system tested as part of SNAP? + @title = NASA SNAP-8 Nuclear Reactor + @manufacturer = #roMfrAtomicsInt + @description = The SNAP 8 program was an evolution of the SNAP 2/10A design. Much larger and more powerful than it's predecessors, it was heavily shielded for use on manned space stations, with an output of 35 kWe. Reverted to thermoelectric power converters due to development cost and reliability concerns around the mercury vapor turbines of SNAP-2. Design lifetime 5 years at full power. + @mass = 13.657 //including radiator mass and heat conversion equipment? -82 kg fuel + %specLevel = prototype //reactor and power conversion equipment tested extensively - //35 kWe: 1.5 meters dia, 1.8 meters long - //300 kWe: ~6.5 meters dia, 10.5 meters long + //nfe-reactor-125-1: 1.25m dia, 2.4m tall + //6.6 meters diameter, 8.2 meters tall @MODEL { - @scale = 1.68224, 1, 1.68224 + @scale = 1.5454, 1, 1.5454 } - @rescaleFactor = 0.428 + @rescaleFactor = 3.4167 %node_attach = #$node_stack_bottom$ @attachRules = 1,0,1,1,1 @@ -723,57 +1556,57 @@ { name = DepletedFuel amount = 0 - maxAmount = 17.0938 + maxAmount = 7.47 } - //Uranium Nitride, enrichment unknown? + //Uranium-Zirconium-Hydride, unknown enrichment RESOURCE { - name = UraniumNitride - amount = 13.125 - maxAmount = 13.125 //~187.5 kg fuel + name = EnrichedUranium + amount = 7.47 + maxAmount = 7.47 //~82 kg fuel } } -@PART[RO-reactor-snap50]:FOR[RealismOverhaul]:NEEDS[!SystemHeat] +@PART[RO-reactor-snap8]:FOR[RealismOverhaul]:NEEDS[!SystemHeat] { // reactor parameters @MODULE[FissionGenerator] { @PowerGeneration = 35 - @HeatUsed = 385 + @HeatUsed = 600 } @MODULE[FissionReactor] { @HeatGeneration = #$../MODULE[FissionGenerator]/HeatUsed$ @HeatGeneration *= 50 - @NominalTemperature = 1366 // Above this temp more power output but risky - @CriticalTemperature = 1400 // Above this temp, reactor takes damage + @NominalTemperature = 978 // Above this temp more power output but risky + @CriticalTemperature = 1078 // Above this temp, reactor takes damage // Amount of damage taken by core when over critical temp // %/s/K, so with value 0.001, at 200 K over CriticalTemp, reactor takes 0.2% damage/s @CoreDamageRate = 0.05 // Base lifetime calculations off this resource - @FuelName = UraniumNitride + @FuelName = EnrichedUranium !INPUT_RESOURCE {} !OUTPUT_RESOURCE {} INPUT_RESOURCE { - ResourceName = UraniumNitride - Ratio = 0.000000207837 // 2 years of operation + ResourceName = EnrichedUranium + Ratio = 0.0000000473565 // 5 years of operation FlowMode = NO_FLOW } OUTPUT_RESOURCE { ResourceName = DepletedFuel - Ratio = 0.0000002709266 + Ratio = 0.0000000473565 FlowMode = NO_FLOW } } @MODULE[RadioactiveStorageContainer] { @DangerousFuel = DepletedFuel - @SafeFuel = UraniumNitride + @SafeFuel = EnrichedUranium } @MODULE[ModuleCoreHeatNoCatchup] { @@ -783,9 +1616,9 @@ @MaxCoolant = 2200 //Maximum amount of radiator capacity we can consume } } -@PART[RO-reactor-snap50]:FOR[zzzRealismOverhaul]:NEEDS[SystemHeat] +@PART[RO-reactor-snap8]:FOR[zzzRealismOverhaul]:NEEDS[SystemHeat] { - @mass -= 0.170 //subtract 170 kg radiator mass, since system heat actually needs rads + @mass -= 0.315 //subtract 315 kg radiator mass, since system heat actually needs rads //Radiator mass just determined with Heat Control Radiators... !MODULE[ModuleUpdateOverride] {} !MODULE[FissionReactor] {} @@ -822,19 +1655,19 @@ HeatGeneration { key = 0 0 0 0 - key = 100 385 0 0 + key = 100 600 0 0 } // Above this temp, risky - NominalTemperature = 865 //reactor outlet temp 1366 K, but heat rejected to radiator at only 865 K after condensor + NominalTemperature = 766 //reactor outlet temp 978 K, but heat rejected to radiator at only 766 K after thermoelectric system // Above this temp, reactor takes damage - CriticalTemperature = 965 + CriticalTemperature = 866 // Amount of damage taken by core when over critical temp // %/s/K, so with value 0.001, at 200 K over CriticalTemp, reactor takes 0.2% damage/s CoreDamageRate = 0.008 // When repairing, amount of core damage to heal (%) - RepairAmountPerKit = 20 + RepairAmountPerKit = 20 CurrentPowerPercent = 100 ThrottleIncreaseRate = 5 @@ -850,18 +1683,18 @@ // --- Fuel stuff // Base lifetime calculations off this resource - FuelName = UraniumNitride + FuelName = EnrichedUranium INPUT_RESOURCE { - ResourceName = UraniumNitride - Ratio = 0.000000207837 // 2 years of operation + ResourceName = EnrichedUranium + Ratio = 0.0000000473565 // 5 years of operation FlowMode = NO_FLOW } @OUTPUT_RESOURCE { ResourceName = DepletedFuel - Ratio = 0.0000002709266 + Ratio = 0.0000000473565 DumpExcess = false FlowMode = NO_FLOW } @@ -871,32 +1704,33 @@ { name = ModuleSystemHeatFissionFuelContainer EngineerLevelForTransfer = 1 - ResourceNames = UraniumNitride, DepletedFuel + ResourceNames = EnrichedUranium, DepletedFuel } } + // ================================================================================= -// SNAP-50 300 kWe - main source: https://beyondnerva.com/fission-power-systems/systems-for-nuclear-auxiliary-power-snap/snap-50/ and references +// nfe-reactor-0625-1 based parts +// ================================================================================= +// BES-5 reactor - main source: http://www.svengrahn.pp.se/trackind/RORSAT/RORSAT.html // ================================================================================= -+PART[reactor-25]:FOR[RealismOverhaul] +@PART[nfe-reactor-0625-1]:FOR[RealismOverhaul] { - @name = RO-reactor-snap50-300 + @name = RO-reactor-BES5 %RSSROConfig = True - @title = NASA SNAP-50 300 kWe Nuclear Reactor - @manufacturer = #roMfrPW - @description = The SNAP 50 was a developmental reactor program separate from the main program. Developed for ANP under the infamous Project PLUTO, Pratt & Whitney offered the reactor to NASA after the end of the ANP program. The SNAP 50 was advantageous in that it would operate a high conversion efficiencies and high power levels. But, because of the Rankine cycle conversion, it had a higher probability of single point failure and increased weight. This is the full-size design, intended for large space stations or lunar bases. Design lifetime 2 years at full power. - @mass = 19.431 //including radiator mass and heat conversion equipment? -300 kg fuel - %specLevel = prototype //reactor core tested as part of ANP/Project PLUTO, power conversion system tested as part of SNAP? + @title = BES-5 Nuclear Reactor + @manufacturer = #roMfrRedStar + @description = Soviet nuclear reactor, used in the first 31 RORSAT satellites. Intended lifetime of 4 months at full power. + @mass = 1.107 //Assumed the same as TOPAZ-I (Satellites equipped with BES-5 had roughly the same gross mass as satellites with TOPAZ-I). -30 kg fuel + //385 kg including shielding, not including power and radiator systems? + %specLevel = operational - //35 kWe: 1.5 meters dia, 1.8 meters long - //300 kWe: ~6.5 meters dia, 10.5 meters long + //nfe-reactor-0625-1: 0.625 m dia, 1.4 m length + //1.4 meters dia, 3.9 meters length @MODEL { - @scale = 0.8679, 1, 0.8679 + @scale = 0.8041, 1, 0.8041 } - @rescaleFactor = 2.996 - - %node_attach = #$node_stack_bottom$ - @attachRules = 1,0,1,1,1 + @rescaleFactor = 2.7857 // resources !RESOURCE,* {} @@ -904,69 +1738,70 @@ { name = DepletedFuel amount = 0 - maxAmount = 27.35 + maxAmount = 2.7347 } - //Uranium Nitride, enrichment unknown? + //Uranium-Molybdenum alloy, 90% enriched RESOURCE { - name = UraniumNitride - amount = 21 - maxAmount = 21 //~300 kg fuel + name = EnrichedUranium + amount = 2.7347 + maxAmount = 2.7347 //~30 kg fuel } } -@PART[RO-reactor-snap50-300]:FOR[RealismOverhaul]:NEEDS[!SystemHeat] + +@PART[RO-reactor-BES5]:FOR[RealismOverhaul]:NEEDS[!SystemHeat] { - // reactor parameters @MODULE[FissionGenerator] { - @PowerGeneration = 300 - @HeatUsed = 2200 + @PowerGeneration = 3 + @HeatUsed = 100 } @MODULE[FissionReactor] { + // Heat to generate (kW*50 - no clue why, hardcoded) @HeatGeneration = #$../MODULE[FissionGenerator]/HeatUsed$ @HeatGeneration *= 50 - @NominalTemperature = 1366 // Above this temp more power output but risky - @CriticalTemperature = 1400 // Above this temp, reactor takes damage + @NominalTemperature = 823 // Above this temp more power output but risky + @CriticalTemperature = 1073 // Above this temp, reactor takes damage // Amount of damage taken by core when over critical temp // %/s/K, so with value 0.001, at 200 K over CriticalTemp, reactor takes 0.2% damage/s - @CoreDamageRate = 0.05 + @CoreDamageRate = 0.01 // Base lifetime calculations off this resource - @FuelName = UraniumNitride + @FuelName = EnrichedUranium !INPUT_RESOURCE {} !OUTPUT_RESOURCE {} INPUT_RESOURCE { - ResourceName = UraniumNitride - Ratio = 0.000000332725 // 2 years of operation + ResourceName = EnrichedUranium + Ratio = 0.00000026376 // 4 months of operation FlowMode = NO_FLOW } OUTPUT_RESOURCE { ResourceName = DepletedFuel - Ratio = 0.0000004337254 + Ratio = 0.00000026376 FlowMode = NO_FLOW } } @MODULE[RadioactiveStorageContainer] { @DangerousFuel = DepletedFuel - @SafeFuel = UraniumNitride + @SafeFuel = EnrichedUranium } @MODULE[ModuleCoreHeatNoCatchup] { - @CoreTempGoal = 1366 //Internal temp goal - we don't transfer till we hit this point - @HeatRadiantMultiplier = 0.05 //If the core is hotter, how much heat radiates? - @CoreShutdownTemp = 2000 //At what core temperature do we shut down all generators on this part? - @MaxCoolant = 2200 //Maximum amount of radiator capacity we can consume + @CoreTempGoal = 823 //Internal temp goal - we don't transfer till we hit this point + @HeatRadiantMultiplier = 0.1 //If the core is hotter, how much heat radiates? + @CoreShutdownTemp = 1580 //At what core temperature do we shut down all generators on this part? + @MaxCoolant = 135 //Maximum amount of radiator capacity we can consume } } -@PART[RO-reactor-snap50-300]:FOR[zzzRealismOverhaul]:NEEDS[SystemHeat] +@PART[RO-reactor-BES5]:FOR[zzzRealismOverhaul]:NEEDS[SystemHeat] { - @mass -= 0.91 //subtract 910 kg radiator mass, since system heat actually needs rads + @mass -= 0.050 //subtract 50 kg radiator mass, since system heat actually needs rads //Radiator mass just determined with Heat Control Radiators... !MODULE[ModuleUpdateOverride] {} !MODULE[FissionReactor] {} @@ -986,11 +1821,11 @@ MODULE { name = ModuleSystemHeat - volume = 10 + volume = 1 moduleID = reactor iconName = Icon_Nuclear } - + MODULE { name = ModuleSystemHeatFissionReactor @@ -1003,19 +1838,19 @@ HeatGeneration { key = 0 0 0 0 - key = 100 2200 0 0 + key = 100 100 0 0 } // Above this temp, risky - NominalTemperature = 865 //reactor outlet temp 1366 K, but heat rejected to radiator at only 865 K after condensor + NominalTemperature = 970 //reactor outlet temp ??? K, but heat rejected to radiator at only 970 K after thermoelectric system // Above this temp, reactor takes damage - CriticalTemperature = 965 + CriticalTemperature = 1070 // Amount of damage taken by core when over critical temp // %/s/K, so with value 0.001, at 200 K over CriticalTemp, reactor takes 0.2% damage/s CoreDamageRate = 0.008 // When repairing, amount of core damage to heal (%) - RepairAmountPerKit = 20 + RepairAmountPerKit = 20 CurrentPowerPercent = 100 ThrottleIncreaseRate = 5 @@ -1026,23 +1861,23 @@ ElectricalGeneration { key = 0 0 - key = 100 300 + key = 100 3 } // --- Fuel stuff // Base lifetime calculations off this resource - FuelName = UraniumNitride + FuelName = EnrichedUranium INPUT_RESOURCE { - ResourceName = UraniumNitride - Ratio = 0.000000332725 // 2 years of operation + ResourceName = EnrichedUranium + Ratio = 0.00000026376 // 4 months of operation FlowMode = NO_FLOW } - @OUTPUT_RESOURCE + OUTPUT_RESOURCE { ResourceName = DepletedFuel - Ratio = 0.0000004337254 + Ratio = 0.00000026376 DumpExcess = false FlowMode = NO_FLOW } @@ -1052,29 +1887,30 @@ { name = ModuleSystemHeatFissionFuelContainer EngineerLevelForTransfer = 1 - ResourceNames = UraniumNitride, DepletedFuel + ResourceNames = EnrichedUranium, DepletedFuel } } + // ================================================================================= -// reactor-125 based parts -// ================================================================================= -// TOPAZ-II reactor - main source: http://fti.neep.wisc.edu/neep602/SPRING00/lecture35.pdf +// TOPAZ-I reactor - main source: https://inis.iaea.org/collection/NCLCollectionStore/_Public/25/070/25070118.pdf // ================================================================================= -@PART[reactor-125]:FOR[RealismOverhaul] ++PART[RO-reactor-BES5]:FOR[RealismOverhaul] { + @name = RO-reactor-TOPAZI %RSSROConfig = True - @title = TOPAZ-II Nuclear Reactor - @manufacturer = #roMfrKurchatov - @description = Thermionic reactor ENISY. Only loosely related to TOPAZ-I, which was flown in the last 2 Soviet RORSAT satellites, it was part of an alternate thermionic reactor program to TOPAZ-I. Planned to be flown in the late 90s. Design lifetime 4 years at full power. - @mass = 1.010 //including radiator mass and heat conversion equipment? -27 kg fuel - %specLevel = prototype + @title = TOPAZ-I Nuclear Reactor + @manufacturer = #roMfrRedStar + @description = Thermionic reactor TEU-5 TOPOL, used in the last 2 Soviet RORSAT satellites. Design lifetime of 1 year. + @mass = 0.905 //including shielding, not including power and radiator systems? 930 kg fully assembled? -25 kg fuel + %specLevel = operational - //1.4 meters dia, 4 meters length + //nfe-reactor-0625-1: 0.625 m dia, 1.4 m length + //1.4 meters dia, 3.9 meters length @MODEL { - @scale = 0.60345, 1, 0.60345 + @scale = 0.8041, 1, 0.8041 } - @rescaleFactor = 1.855994 + @rescaleFactor = 2.7857 // resources !RESOURCE,* {} @@ -1082,30 +1918,29 @@ { name = DepletedFuel amount = 0 - maxAmount = 2.461 + maxAmount = 2.2789 } - //Uranium Oxide, 96% enriched + //Uranium-Molybdenum alloy, 90% enriched RESOURCE { name = EnrichedUranium - amount = 2.461 - maxAmount = 2.461 //~27 kg fuel + amount = 2.2789 + maxAmount = 2.2789 //~25 kg fuel } } - -@PART[reactor-125]:FOR[RealismOverhaul]:NEEDS[!SystemHeat] +@PART[RO-reactor-TOPAZI]:FOR[RealismOverhaul]:NEEDS[!SystemHeat] { @MODULE[FissionGenerator] { - @PowerGeneration = 6 - @HeatUsed = 135 + @PowerGeneration = 5 + @HeatUsed = 100 } @MODULE[FissionReactor] { // Heat to generate (kW*50 - no clue why, hardcoded) @HeatGeneration = #$../MODULE[FissionGenerator]/HeatUsed$ @HeatGeneration *= 50 - @NominalTemperature = 823 // Above this temp more power output but risky + @NominalTemperature = 970 // Above this temp more power output but risky @CriticalTemperature = 1073 // Above this temp, reactor takes damage // Amount of damage taken by core when over critical temp @@ -1120,13 +1955,13 @@ INPUT_RESOURCE { ResourceName = EnrichedUranium - Ratio = 0.000000019496 // 4 years of operation + Ratio = 0.000000072213 // 1 years of operation FlowMode = NO_FLOW } OUTPUT_RESOURCE { ResourceName = DepletedFuel - Ratio = 0.000000019496 + Ratio = 0.000000072213 FlowMode = NO_FLOW } } @@ -1137,15 +1972,16 @@ } @MODULE[ModuleCoreHeatNoCatchup] { - @CoreTempGoal = 823 //Internal temp goal - we don't transfer till we hit this point + @CoreTempGoal = 970 //Internal temp goal - we don't transfer till we hit this point @HeatRadiantMultiplier = 0.1 //If the core is hotter, how much heat radiates? @CoreShutdownTemp = 1580 //At what core temperature do we shut down all generators on this part? @MaxCoolant = 135 //Maximum amount of radiator capacity we can consume } } -@PART[reactor-125]:FOR[zzzRealismOverhaul]:NEEDS[SystemHeat] +@PART[RO-reactor-TOPAZI]:FOR[zzzRealismOverhaul]:NEEDS[SystemHeat] { - @mass -= 0.075 //subtract 75 kg radiator mass, since system heat actually needs rads + @mass -= 0.050 //subtract 50 kg radiator mass, since system heat actually needs rads + //Radiator mass just determined with Heat Control Radiators... !MODULE[ModuleUpdateOverride] {} !MODULE[FissionReactor] {} !MODULE[FissionGenerator] {} @@ -1180,20 +2016,20 @@ // Heat kW HeatGeneration { - key = 0 0 - key = 100 135 + key = 0 0 0 0 + key = 100 100 0 0 } // Above this temp, risky - NominalTemperature = 600 //reactor outlet temp 2100 K, but heat rejected to radiator at only 600 K after electrode + NominalTemperature = 873 //reactor outlet temp 1773 K, but heat rejected to radiator at only 873 K after electrode // Above this temp, reactor takes damage - CriticalTemperature = 700 + CriticalTemperature = 973 // Amount of damage taken by core when over critical temp // %/s/K, so with value 0.001, at 200 K over CriticalTemp, reactor takes 0.2% damage/s CoreDamageRate = 0.008 // When repairing, amount of core damage to heal (%) - RepairAmountPerKit = 20 + RepairAmountPerKit = 20 CurrentPowerPercent = 100 ThrottleIncreaseRate = 5 @@ -1204,7 +2040,7 @@ ElectricalGeneration { key = 0 0 - key = 100 6 + key = 100 5 } // --- Fuel stuff @@ -1214,18 +2050,18 @@ INPUT_RESOURCE { ResourceName = EnrichedUranium - Ratio = 0.000000019496 // 4 years of operation + Ratio = 0.000000072213 // 1 years of operation FlowMode = NO_FLOW } OUTPUT_RESOURCE { ResourceName = DepletedFuel - Ratio = 0.000000019496 + Ratio = 0.000000072213 DumpExcess = false FlowMode = NO_FLOW } - } + MODULE { name = ModuleSystemHeatFissionFuelContainer @@ -1235,24 +2071,25 @@ } // ================================================================================= -// TOPAZ-I reactor - main source: https://inis.iaea.org/collection/NCLCollectionStore/_Public/25/070/25070118.pdf +// TOPAZ-II reactor - main source: http://fti.neep.wisc.edu/neep602/SPRING00/lecture35.pdf // ================================================================================= -+PART[reactor-125]:FOR[RealismOverhaul] ++PART[RO-reactor-BES5]:FOR[RealismOverhaul] { - @name = RO-reactor-TOPAZI + @name = RO-reactor-TOPAZII %RSSROConfig = True - @title = TOPAZ-I Nuclear Reactor - @manufacturer = #roMfrRedStar - @description = Thermionic reactor TEU-5 TOPOL, used in the last 2 Soviet RORSAT satellites. Design lifetime of 1 year. - @mass = 0.905 //including shielding, not including power and radiator systems? 930 kg fully assembled? -25 kg fuel - %specLevel = operational + @title = TOPAZ-II Nuclear Reactor + @manufacturer = #roMfrKurchatov + @description = Thermionic reactor ENISY. Only loosely related to TOPAZ-I, which was flown in the last 2 Soviet RORSAT satellites, it was part of an alternate thermionic reactor program to TOPAZ-I. Planned to be flown in the late 90s. Design lifetime 4 years at full power. + @mass = 1.010 //including radiator mass and heat conversion equipment? -27 kg fuel + %specLevel = prototype - //1.4 meters dia, 4 meters length + //nfe-reactor-0625-1: 0.625 m dia, 1.4 m length + //1.4 meters dia, 3.9 meters length @MODEL { - @scale = 0.60345, 1, 0.60345 + @scale = 0.8041, 1, 0.8041 } - @rescaleFactor = 1.855994 + @rescaleFactor = 2.7857 // resources !RESOURCE,* {} @@ -1260,29 +2097,30 @@ { name = DepletedFuel amount = 0 - maxAmount = 2.2789 + maxAmount = 2.461 } - //Uranium-Molybdenum alloy, 90% enriched + //Uranium Oxide, 96% enriched RESOURCE { name = EnrichedUranium - amount = 2.2789 - maxAmount = 2.2789 //~25 kg fuel + amount = 2.461 + maxAmount = 2.461 //~27 kg fuel } } -@PART[RO-reactor-TOPAZI]:FOR[RealismOverhaul]:NEEDS[!SystemHeat] + +@PART[RO-reactor-TOPAZII]:FOR[RealismOverhaul]:NEEDS[!SystemHeat] { @MODULE[FissionGenerator] { - @PowerGeneration = 5 - @HeatUsed = 100 + @PowerGeneration = 6 + @HeatUsed = 135 } @MODULE[FissionReactor] { // Heat to generate (kW*50 - no clue why, hardcoded) @HeatGeneration = #$../MODULE[FissionGenerator]/HeatUsed$ @HeatGeneration *= 50 - @NominalTemperature = 970 // Above this temp more power output but risky + @NominalTemperature = 823 // Above this temp more power output but risky @CriticalTemperature = 1073 // Above this temp, reactor takes damage // Amount of damage taken by core when over critical temp @@ -1297,13 +2135,13 @@ INPUT_RESOURCE { ResourceName = EnrichedUranium - Ratio = 0.000000072213 // 1 years of operation + Ratio = 0.000000019496 // 4 years of operation FlowMode = NO_FLOW } OUTPUT_RESOURCE { ResourceName = DepletedFuel - Ratio = 0.000000072213 + Ratio = 0.000000019496 FlowMode = NO_FLOW } } @@ -1314,16 +2152,15 @@ } @MODULE[ModuleCoreHeatNoCatchup] { - @CoreTempGoal = 970 //Internal temp goal - we don't transfer till we hit this point + @CoreTempGoal = 823 //Internal temp goal - we don't transfer till we hit this point @HeatRadiantMultiplier = 0.1 //If the core is hotter, how much heat radiates? @CoreShutdownTemp = 1580 //At what core temperature do we shut down all generators on this part? @MaxCoolant = 135 //Maximum amount of radiator capacity we can consume } } -@PART[RO-reactor-TOPAZI]:FOR[zzzRealismOverhaul]:NEEDS[SystemHeat] +@PART[RO-reactor-TOPAZII]:FOR[zzzRealismOverhaul]:NEEDS[SystemHeat] { - @mass -= 0.050 //subtract 50 kg radiator mass, since system heat actually needs rads - //Radiator mass just determined with Heat Control Radiators... + @mass -= 0.075 //subtract 75 kg radiator mass, since system heat actually needs rads !MODULE[ModuleUpdateOverride] {} !MODULE[FissionReactor] {} !MODULE[FissionGenerator] {} @@ -1358,20 +2195,20 @@ // Heat kW HeatGeneration { - key = 0 0 0 0 - key = 100 100 0 0 + key = 0 0 + key = 100 135 } // Above this temp, risky - NominalTemperature = 873 //reactor outlet temp 1773 K, but heat rejected to radiator at only 873 K after electrode + NominalTemperature = 600 //reactor outlet temp 2100 K, but heat rejected to radiator at only 600 K after electrode // Above this temp, reactor takes damage - CriticalTemperature = 973 + CriticalTemperature = 700 // Amount of damage taken by core when over critical temp // %/s/K, so with value 0.001, at 200 K over CriticalTemp, reactor takes 0.2% damage/s CoreDamageRate = 0.008 // When repairing, amount of core damage to heal (%) - RepairAmountPerKit = 20 + RepairAmountPerKit = 20 CurrentPowerPercent = 100 ThrottleIncreaseRate = 5 @@ -1382,7 +2219,7 @@ ElectricalGeneration { key = 0 0 - key = 100 5 + key = 100 6 } // --- Fuel stuff @@ -1392,18 +2229,18 @@ INPUT_RESOURCE { ResourceName = EnrichedUranium - Ratio = 0.000000072213 // 1 years of operation + Ratio = 0.000000019496 // 4 years of operation FlowMode = NO_FLOW } OUTPUT_RESOURCE { ResourceName = DepletedFuel - Ratio = 0.000000072213 + Ratio = 0.000000019496 DumpExcess = false FlowMode = NO_FLOW } - } + } MODULE { name = ModuleSystemHeatFissionFuelContainer @@ -1413,25 +2250,48 @@ } // ================================================================================= -// BES-5 reactor - main source: http://www.svengrahn.pp.se/trackind/RORSAT/RORSAT.html +// nfe-reactor-tiny-1 based parts +// ================================================================================= +// SNAP-10A - main source: https://apps.dtic.mil/dtic/tr/fulltext/u2/a146831.pdf // ================================================================================= -+PART[reactor-125]:FOR[RealismOverhaul] +@PART[nfe-reactor-tiny-1]:FOR[RealismOverhaul] { - @name = RO-reactor-BES5 + @name = RO-reactor-snap10a //rename to not break existing vessels %RSSROConfig = True - @title = BES-5 Nuclear Reactor - @manufacturer = #roMfrRedStar - @description = Soviet nuclear reactor, used in the first 31 RORSAT satellites. Intended lifetime of 4 months at full power. - @mass = 1.107 //Assumed the same as TOPAZ-I (Satellites equipped with BES-5 had roughly the same gross mass as satellites with TOPAZ-I). -30 kg fuel - //385 kg including shielding, not including power and radiator systems? + @title = NASA SNAP-10A Nuclear Reactor + @manufacturer = #roMfrAtomicsInt + @description = Only design from the SNAPSHOT (Space Nuclear Auxiliary Power Shot) program to ever be launched, and the first nuclear reactor to ever be operated in-orbit. Design lifetime 1 year. + @mass = 0.433 //-3 kg fuel + //including radiator mass and heat conversion equipment %specLevel = operational - - //1.4 meters dia, 4 meters length + + //nfe-reactor-tiny-1: 1.22m long, 0.625m wide @MODEL { - @scale = 0.60345, 1, 0.60345 + @scale = 0.7413, 1, 0.7413 // 3.16m long, 1.2m wide + } + @rescaleFactor = 2.59 + + //delete the fairing + !MODULE[ModuleMultiJettison] {} + MODULE + { + name = ModuleB9DisableTransform + transform = AeroshellPanel + } + + //manually fix B9PS nodes because the fix is not getting applied for some reason + @MODULE[ModuleB9PartSwitch] + { + @SUBTYPE,* + { + @attachNode[1] *= 2.59 + @NODE + { + @position[1] /= 2.59 + } + } } - @rescaleFactor = 1.855994 // resources !RESOURCE,* {} @@ -1439,31 +2299,31 @@ { name = DepletedFuel amount = 0 - maxAmount = 2.7347 + maxAmount = 0.271 } - //Uranium-Molybdenum alloy, 90% enriched + //Uranium-Zirconium-Hydride, unknown enrichment RESOURCE { name = EnrichedUranium - amount = 2.7347 - maxAmount = 2.7347 //~30 kg fuel + amount = 0.271 + maxAmount = 0.271 //~3 kg fuel } } - -@PART[RO-reactor-BES5]:FOR[RealismOverhaul]:NEEDS[!SystemHeat] +@PART[RO-reactor-snap10a]:FOR[RealismOverhaul]:NEEDS[!SystemHeat] { + // reactor parameters @MODULE[FissionGenerator] { - @PowerGeneration = 3 - @HeatUsed = 100 + @PowerGeneration = 0.59 + @HeatUsed = 30 } @MODULE[FissionReactor] { - // Heat to generate (kW*50 - no clue why, hardcoded) @HeatGeneration = #$../MODULE[FissionGenerator]/HeatUsed$ @HeatGeneration *= 50 - @NominalTemperature = 823 // Above this temp more power output but risky - @CriticalTemperature = 1073 // Above this temp, reactor takes damage + @NominalTemperature = 846 // Above this temp more power output but risky + @CriticalTemperature = 866 // Above this temp, reactor takes damage + // Amount of damage taken by core when over critical temp // %/s/K, so with value 0.001, at 200 K over CriticalTemp, reactor takes 0.2% damage/s @@ -1477,13 +2337,13 @@ INPUT_RESOURCE { ResourceName = EnrichedUranium - Ratio = 0.00000026376 // 4 months of operation + Ratio = 0.000000008592 // 1 year FlowMode = NO_FLOW } OUTPUT_RESOURCE { ResourceName = DepletedFuel - Ratio = 0.00000026376 + Ratio = 0.000000008592 FlowMode = NO_FLOW } } @@ -1494,16 +2354,24 @@ } @MODULE[ModuleCoreHeatNoCatchup] { - @CoreTempGoal = 823 //Internal temp goal - we don't transfer till we hit this point - @HeatRadiantMultiplier = 0.1 //If the core is hotter, how much heat radiates? - @CoreShutdownTemp = 1580 //At what core temperature do we shut down all generators on this part? - @MaxCoolant = 135 //Maximum amount of radiator capacity we can consume + @CoreTempGoal = 846 //Internal temp goal - we don't transfer till we hit this point + @HeatRadiantMultiplier = 0.05 //If the core is hotter, how much heat radiates? + @CoreShutdownTemp = 2000 //At what core temperature do we shut down all generators on this part? + @MaxCoolant = 30 //Maximum amount of radiator capacity we can consume } } -@PART[RO-reactor-BES5]:FOR[zzzRealismOverhaul]:NEEDS[SystemHeat] +@PART[RO-reactor-snap10a]:FOR[zzzRealismOverhaul]:NEEDS[SystemHeat] { - @mass -= 0.050 //subtract 50 kg radiator mass, since system heat actually needs rads + @mass -= 0.024 //subtract 24 kg radiator mass, since system heat actually needs rads //Radiator mass just determined with Heat Control Radiators... + //add radiator mass back if radiator variant is selected + @MODULE[ModuleB9PartSwitch] + { + @SUBTYPE[Size0Radiators] + { + @addedMass = 0.024 + } + } !MODULE[ModuleUpdateOverride] {} !MODULE[FissionReactor] {} !MODULE[FissionGenerator] {} @@ -1539,19 +2407,19 @@ HeatGeneration { key = 0 0 0 0 - key = 100 100 0 0 + key = 100 30 0 0 } // Above this temp, risky - NominalTemperature = 970 //reactor outlet temp ??? K, but heat rejected to radiator at only 970 K after thermoelectric system + NominalTemperature = 766 //reactor outlet temp 846 K, but heat rejected to radiator at only 766 K after thermoelectric system // Above this temp, reactor takes damage - CriticalTemperature = 1070 + CriticalTemperature = 866 // Amount of damage taken by core when over critical temp // %/s/K, so with value 0.001, at 200 K over CriticalTemp, reactor takes 0.2% damage/s CoreDamageRate = 0.008 // When repairing, amount of core damage to heal (%) - RepairAmountPerKit = 20 + RepairAmountPerKit = 20 CurrentPowerPercent = 100 ThrottleIncreaseRate = 5 @@ -1562,7 +2430,7 @@ ElectricalGeneration { key = 0 0 - key = 100 3 + key = 100 0.59 } // --- Fuel stuff @@ -1572,13 +2440,13 @@ INPUT_RESOURCE { ResourceName = EnrichedUranium - Ratio = 0.00000026376 // 4 months of operation + Ratio = 0.000000008592 // 1 year FlowMode = NO_FLOW } OUTPUT_RESOURCE { ResourceName = DepletedFuel - Ratio = 0.00000026376 + Ratio = 0.000000008592 DumpExcess = false FlowMode = NO_FLOW } @@ -1591,30 +2459,26 @@ ResourceNames = EnrichedUranium, DepletedFuel } } - // ================================================================================= -// Kilopower - main source: http://anstd.ans.org/NETS-2019-Papers/Track-4--Space-Reactors/abstract-96-0.pdf +// SNAP-2 - main source: https://www.osti.gov/biblio/4430852 +// https://beyondnerva.com/fission-power-systems/systems-for-nuclear-auxiliary-power-snap/snap-2/ // ================================================================================= -+PART[reactor-125]:FOR[RealismOverhaul] ++PART[RO-reactor-snap10a]:FOR[RealismOverhaul] { - @name = RO-reactor-kilopower + @name = RO-reactor-snap2 %RSSROConfig = True - @title = NASA Kilopower 10kWe Reactor - @manufacturer = #roMfrLANL - @description = Simple and extremely reliable 10 kW stirling reactor. Developed by NASA for long-term manned expeditions to the Moon and Mars and advanced outer solar system probes. Design lifetime 100 years at full power. Meant to be buried underground for use in crewed bases. - @mass = 0.714 // low shielding variant, -43 kg fuel + @title = NASA SNAP-2 Nuclear Reactor + @manufacturer = #roMfrAtomicsInt + @description = Sister program to SNAP-10A, SNAP-2 used the same reactor design, but mated to a much more efficient (and complex) Mercury vapor turbine. Design lifetime 1 year. + @mass = 1.178 //-3 kg fuel //including radiator mass and heat conversion equipment? - %specLevel = prototype + %specLevel = prototype //same reactor as SNAP-10, CRU system tested independently - //0.6 meters dia, 1.5 meters length - @MODEL + //Same size as SNAP-10A, but force the adapter to always be active because that's where the mercury boiler lives + @MODULE[ModuleB9PartSwitch] { - @scale = 0.7556, 1, 0.7556 + !SUBTYPE[Compact] {} } - @rescaleFactor = 0.6618 - - %node_attach = #$node_stack_bottom$ - @attachRules = 1,1,1,1,1 // resources !RESOURCE,* {} @@ -1622,35 +2486,35 @@ { name = DepletedFuel amount = 0 - maxAmount = 3.92 + maxAmount = 0.271 } - //Uranium-Molybdenum alloy, 93% enriched + //Uranium-Zirconium-Hydride, unknown enrichment RESOURCE { name = EnrichedUranium - amount = 3.92 - maxAmount = 3.92 //~43 kg fuel + amount = 0.271 + maxAmount = 0.271 //~3 kg fuel } } -@PART[RO-reactor-kilopower]:FOR[RealismOverhaul]:NEEDS[!SystemHeat] +@PART[RO-reactor-snap2]:FOR[RealismOverhaul]:NEEDS[!SystemHeat] { // reactor parameters @MODULE[FissionGenerator] { @PowerGeneration = 10 - @HeatUsed = 40 + @HeatUsed = 55 //reactor run at higher power level than SNAP-10 } @MODULE[FissionReactor] { - // Heat to generate (kW*50 - no clue why, hardcoded) @HeatGeneration = #$../MODULE[FissionGenerator]/HeatUsed$ @HeatGeneration *= 50 - @NominalTemperature = 1073 // Above this temp more power output but risky - @CriticalTemperature = 1273 // Above this temp, reactor takes damage + @NominalTemperature = 846 // Above this temp more power output but risky + @CriticalTemperature = 866 // Above this temp, reactor takes damage + // Amount of damage taken by core when over critical temp // %/s/K, so with value 0.001, at 200 K over CriticalTemp, reactor takes 0.2% damage/s - @CoreDamageRate = 0.001 + @CoreDamageRate = 0.01 // Base lifetime calculations off this resource @FuelName = EnrichedUranium @@ -1660,13 +2524,13 @@ INPUT_RESOURCE { ResourceName = EnrichedUranium - Ratio = 0.000000001055 // around 24MWh in 1g of U235 - only 4% of U235 undergoes fission before fuel is considered depleted + Ratio = 0.000000008592 // 1 year FlowMode = NO_FLOW } OUTPUT_RESOURCE { ResourceName = DepletedFuel - Ratio = 0.000000001055 + Ratio = 0.000000008592 FlowMode = NO_FLOW } } @@ -1677,16 +2541,35 @@ } @MODULE[ModuleCoreHeatNoCatchup] { - @CoreTempGoal = 1073 //Internal temp goal - we don't transfer till we hit this point - @HeatRadiantMultiplier = 0.1 //If the core is hotter, how much heat radiates? + @CoreTempGoal = 846 //Internal temp goal - we don't transfer till we hit this point + @HeatRadiantMultiplier = 0.05 //If the core is hotter, how much heat radiates? @CoreShutdownTemp = 2000 //At what core temperature do we shut down all generators on this part? - @MaxCoolant = 40 //Maximum amount of radiator capacity we can consume + @MaxCoolant = 30 //Maximum amount of radiator capacity we can consume } } -@PART[RO-reactor-kilopower]:FOR[zzzRealismOverhaul]:NEEDS[SystemHeat] +@PART[RO-reactor-snap2]:FOR[zzzRealismOverhaul]:NEEDS[SystemHeat] { - @mass -= 0.027 //subtract 27 kg radiator mass, since system heat actually needs rads + @mass -= 0.036 //subtract 36 kg radiator mass, since system heat actually needs rads //Radiator mass just determined with Heat Control Radiators... + //add radiator mass back if radiator variant is selected + //not actually enough rads for SNAP-2, so only partially cancel out heat load + @MODULE[ModuleB9PartSwitch] + { + @SUBTYPE[Size0Radiators] + { + @addedMass = 0.024 + @MODULE,* + { + @DATA,* + { + @HeatGeneration + { + @key,1 = 100 26 0 0 //only reject 29 out of 55 kW + } + } + } + } + } !MODULE[ModuleUpdateOverride] {} !MODULE[FissionReactor] {} !MODULE[FissionGenerator] {} @@ -1722,19 +2605,19 @@ HeatGeneration { key = 0 0 0 0 - key = 100 40 0 0 + key = 100 55 0 0 //reactor run at higher power than SNAP-10 } // Above this temp, risky - NominalTemperature = 640 //reactor outlet temp 1073 K, but heat rejected to radiator at only 640? K after stirling engine + NominalTemperature = 588 //reactor outlet temp 922 K, but heat rejected to radiator at only 588 K after mercury vapor turbine // Above this temp, reactor takes damage - CriticalTemperature = 740 + CriticalTemperature = 688 // Amount of damage taken by core when over critical temp // %/s/K, so with value 0.001, at 200 K over CriticalTemp, reactor takes 0.2% damage/s CoreDamageRate = 0.008 // When repairing, amount of core damage to heal (%) - RepairAmountPerKit = 20 + RepairAmountPerKit = 20 CurrentPowerPercent = 100 ThrottleIncreaseRate = 5 @@ -1755,13 +2638,13 @@ INPUT_RESOURCE { ResourceName = EnrichedUranium - Ratio = 0.000000001055 // around 24MWh in 1g of U235 - only 4% of U235 undergoes fission before fuel is considered depleted + Ratio = 0.000000008592 // 1 year FlowMode = NO_FLOW } OUTPUT_RESOURCE { ResourceName = DepletedFuel - Ratio = 0.000000001055 + Ratio = 0.000000008592 DumpExcess = false FlowMode = NO_FLOW } @@ -1776,27 +2659,44 @@ } // ================================================================================= -// reactor-0625 based parts +// nfe-reactor-tiny-2 based parts // ================================================================================= -// SAFE-400 - main source: https://aip.scitation.org/doi/abs/10.1063/1.1449775 +// Kilopower - main source: http://anstd.ans.org/NETS-2019-Papers/Track-4--Space-Reactors/abstract-96-0.pdf // ================================================================================= -@PART[reactor-0625]:FOR[RealismOverhaul] +@PART[nfe-reactor-tiny-2]:FOR[RealismOverhaul] { + @name = RO-reactor-kilopower //rename to not break existing vessels %RSSROConfig = True - @title = NASA SAFE-400 Nuclear Reactor + @title = NASA Kilopower 10kWe Reactor @manufacturer = #roMfrLANL - @description = Safe Affordable Fission Engine. Small and lightweight but powerful reactor enabled by new technology. Design lifetime of 15 years at full power. - @mass = 2.048 // -140 kg fuel - //541 kg, not including shielding, radiator mass or heat conversion equipment - //Guess 1646 kg for controls, power conversion equipment, shielding, radiators (half of Prometheus) - %specLevel = concept + @description = Simple and extremely reliable 10 kW stirling reactor. Developed by NASA for long-term manned expeditions to the Moon and Mars and advanced outer solar system probes. Design lifetime 100 years at full power. Meant to be buried underground for use in crewed bases. + @mass = 0.714 // low shielding variant, -43 kg fuel + //including radiator mass and heat conversion equipment? + %specLevel = prototype - //2/3rds the size of Prometheus? 1.4x5.3 meters + //nfe-reactor-tiny-2: 0.625m wide, 1.3m long + //0.6 meters dia, 1.5 meters length @MODEL { - @scale = 0.5196, 1, 0.5196 + @scale = 0.8320, 1, 0.8320 + } + @rescaleFactor = 1.1538 + + %node_attach = #$node_stack_bottom$ + @attachRules = 1,1,1,1,1 + + //manually fix B9PS nodes because the fix is not getting applied for some reason + @MODULE[ModuleB9PartSwitch] + { + @SUBTYPE,* + { + @attachNode[1] *= 1.1538 + @NODE + { + @position[1] /= 1.1538 + } + } } - @rescaleFactor = 4.4902 // resources !RESOURCE,* {} @@ -1804,71 +2704,70 @@ { name = DepletedFuel amount = 0 - maxAmount = 12.76 + maxAmount = 3.92 } - //Uranium Nitride, unknown enrichment + //Uranium-Molybdenum alloy, 93% enriched RESOURCE { - name = UraniumNitride - amount = 9.79 - maxAmount = 9.79 //~140 kg fuel + name = EnrichedUranium + amount = 3.92 + maxAmount = 3.92 //~43 kg fuel } } -@PART[reactor-0625]:FOR[RealismOverhaul]:NEEDS[!SystemHeat] +@PART[RO-reactor-kilopower]:FOR[RealismOverhaul]:NEEDS[!SystemHeat] { // reactor parameters @MODULE[FissionGenerator] { - @PowerGeneration = 100 - @HeatUsed = 400 + @PowerGeneration = 10 + @HeatUsed = 40 } @MODULE[FissionReactor] { // Heat to generate (kW*50 - no clue why, hardcoded) @HeatGeneration = #$../MODULE[FissionGenerator]/HeatUsed$ @HeatGeneration *= 50 - @NominalTemperature = 1240 // Above this temp more power output but risky - @CriticalTemperature = 1400 // Above this temp, reactor takes damage - + @NominalTemperature = 1073 // Above this temp more power output but risky + @CriticalTemperature = 1273 // Above this temp, reactor takes damage // Amount of damage taken by core when over critical temp // %/s/K, so with value 0.001, at 200 K over CriticalTemp, reactor takes 0.2% damage/s - @CoreDamageRate = 0.002 + @CoreDamageRate = 0.001 // Base lifetime calculations off this resource - @FuelName = UraniumNitride + @FuelName = EnrichedUranium !INPUT_RESOURCE {} !OUTPUT_RESOURCE {} INPUT_RESOURCE { - ResourceName = UraniumNitride - Ratio = 0.000000020682 // 15 years + ResourceName = EnrichedUranium + Ratio = 0.000000001055 // around 24MWh in 1g of U235 - only 4% of U235 undergoes fission before fuel is considered depleted FlowMode = NO_FLOW } OUTPUT_RESOURCE { ResourceName = DepletedFuel - Ratio = 0.000000026596 + Ratio = 0.000000001055 FlowMode = NO_FLOW } } @MODULE[RadioactiveStorageContainer] { @DangerousFuel = DepletedFuel - @SafeFuel = UraniumNitride + @SafeFuel = EnrichedUranium } @MODULE[ModuleCoreHeatNoCatchup] { - @CoreTempGoal = 1240 //Internal temp goal - we don't transfer till we hit this point - @HeatRadiantMultiplier = 0.05 //If the core is hotter, how much heat radiates? + @CoreTempGoal = 1073 //Internal temp goal - we don't transfer till we hit this point + @HeatRadiantMultiplier = 0.1 //If the core is hotter, how much heat radiates? @CoreShutdownTemp = 2000 //At what core temperature do we shut down all generators on this part? - @MaxCoolant = 400 //Maximum amount of radiator capacity we can consume + @MaxCoolant = 40 //Maximum amount of radiator capacity we can consume } } -@PART[reactor-0625]:FOR[zzzRealismOverhaul]:NEEDS[SystemHeat] +@PART[RO-reactor-kilopower]:FOR[zzzRealismOverhaul]:NEEDS[SystemHeat] { - @mass -= 0.400 //subtract 400 kg radiator mass, since system heat actually needs rads + @mass -= 0.027 //subtract 27 kg radiator mass, since system heat actually needs rads //Radiator mass just determined with Heat Control Radiators... !MODULE[ModuleUpdateOverride] {} !MODULE[FissionReactor] {} @@ -1879,6 +2778,7 @@ //if the user has installed SystemHeat reactor configs, this will already be configured with SystemHeat modules //if they have not, then the reactor will not be configured //to make things easier for me, just preemptively delete any SystemHeat modules that might exist and make new ones + //patch must be run in zzzRealismOverhaul to make sure we patch *after* SystemHeat does !MODULE[ModuleSystemHeat] {} !MODULE[ModuleSystemHeatFissionReactor] {} @@ -1903,20 +2803,20 @@ // Heat kW HeatGeneration { - key = 0 0 - key = 100 400 + key = 0 0 0 0 + key = 100 40 0 0 } // Above this temp, risky - NominalTemperature = 505 //reactor outlet temp 1240 K, but heat rejected to radiator at only 505? K after recuperator + NominalTemperature = 640 //reactor outlet temp 1073 K, but heat rejected to radiator at only 640? K after stirling engine // Above this temp, reactor takes damage - CriticalTemperature = 605 + CriticalTemperature = 740 // Amount of damage taken by core when over critical temp // %/s/K, so with value 0.001, at 200 K over CriticalTemp, reactor takes 0.2% damage/s CoreDamageRate = 0.008 // When repairing, amount of core damage to heal (%) - RepairAmountPerKit = 20 + RepairAmountPerKit = 20 CurrentPowerPercent = 100 ThrottleIncreaseRate = 5 @@ -1927,55 +2827,71 @@ ElectricalGeneration { key = 0 0 - key = 100 100 + key = 100 10 } // --- Fuel stuff // Base lifetime calculations off this resource - FuelName = UraniumNitride + FuelName = EnrichedUranium INPUT_RESOURCE { - ResourceName = UraniumNitride - Ratio = 0.000000020682 // 15 years + ResourceName = EnrichedUranium + Ratio = 0.000000001055 // around 24MWh in 1g of U235 - only 4% of U235 undergoes fission before fuel is considered depleted FlowMode = NO_FLOW } OUTPUT_RESOURCE { ResourceName = DepletedFuel - Ratio = 0.000000026596 + Ratio = 0.000000001055 DumpExcess = false FlowMode = NO_FLOW } - } + MODULE { name = ModuleSystemHeatFissionFuelContainer EngineerLevelForTransfer = 1 - ResourceNames = UraniumNitride, DepletedFuel + ResourceNames = EnrichedUranium, DepletedFuel } } // ================================================================================= -// SNAP-10A - main source: https://apps.dtic.mil/dtic/tr/fulltext/u2/a146831.pdf +// SAFE-400 - main source: https://aip.scitation.org/doi/abs/10.1063/1.1449775 // ================================================================================= -+PART[reactor-0625]:FOR[RealismOverhaul] ++PART[RO-reactor-kilopower]:FOR[RealismOverhaul] { - @name = RO-reactor-snap10a %RSSROConfig = True - @title = NASA SNAP-10A Nuclear Reactor - @manufacturer = #roMfrAtomicsInt - @description = Only design from the SNAPSHOT (Space Nuclear Auxiliary Power Shot) program to ever be launched, and the first nuclear reactor to ever be operated in-orbit. Design lifetime 1 year. - @mass = 0.433 //-3 kg fuel - //including radiator mass and heat conversion equipment - %specLevel = operational + @name = RO-reactor-SAFE400 + @title = NASA SAFE-400 Nuclear Reactor + @manufacturer = #roMfrLANL + @description = Safe Affordable Fission Engine. Small and lightweight but powerful reactor enabled by new technology. Design lifetime of 15 years at full power. + @mass = 2.048 // -140 kg fuel + //541 kg, not including shielding, radiator mass or heat conversion equipment + //Guess 1646 kg for controls, power conversion equipment, shielding, radiators (half of Prometheus) + %specLevel = concept + //nfe-reactor-tiny-2: 0.625m wide, 1.3m long + //2/3rds the size of Prometheus? 1.4x5.3 meters @MODEL { - @scale = 1.57379, 1, 1.57379 // 3.16m long, 1.2m wide + @scale = 0.5494, 1, 0.5494 + } + @rescaleFactor = 4.0769 + + //manually fix B9PS nodes because the fix is not getting applied for some reason + @MODULE[ModuleB9PartSwitch] + { + @SUBTYPE,* + { + @attachNode[1] *= 4.0769 + @NODE + { + @position[1] /= 4.0769 + } + } } - @rescaleFactor = 1.270815 // resources !RESOURCE,* {} @@ -1983,70 +2899,71 @@ { name = DepletedFuel amount = 0 - maxAmount = 0.271 + maxAmount = 12.76 } - //Uranium-Zirconium-Hydride, unknown enrichment + //Uranium Nitride, unknown enrichment RESOURCE { - name = EnrichedUranium - amount = 0.271 - maxAmount = 0.271 //~3 kg fuel + name = UraniumNitride + amount = 9.79 + maxAmount = 9.79 //~140 kg fuel } } -@PART[RO-reactor-snap10a]:FOR[RealismOverhaul]:NEEDS[!SystemHeat] +@PART[RO-reactor-SAFE400]:FOR[RealismOverhaul]:NEEDS[!SystemHeat] { // reactor parameters @MODULE[FissionGenerator] { - @PowerGeneration = 0.59 - @HeatUsed = 30 + @PowerGeneration = 100 + @HeatUsed = 400 } @MODULE[FissionReactor] { + // Heat to generate (kW*50 - no clue why, hardcoded) @HeatGeneration = #$../MODULE[FissionGenerator]/HeatUsed$ @HeatGeneration *= 50 - @NominalTemperature = 846 // Above this temp more power output but risky - @CriticalTemperature = 866 // Above this temp, reactor takes damage + @NominalTemperature = 1240 // Above this temp more power output but risky + @CriticalTemperature = 1400 // Above this temp, reactor takes damage // Amount of damage taken by core when over critical temp // %/s/K, so with value 0.001, at 200 K over CriticalTemp, reactor takes 0.2% damage/s - @CoreDamageRate = 0.01 + @CoreDamageRate = 0.002 // Base lifetime calculations off this resource - @FuelName = EnrichedUranium + @FuelName = UraniumNitride !INPUT_RESOURCE {} !OUTPUT_RESOURCE {} INPUT_RESOURCE { - ResourceName = EnrichedUranium - Ratio = 0.000000008592 // 1 year + ResourceName = UraniumNitride + Ratio = 0.000000020682 // 15 years FlowMode = NO_FLOW } OUTPUT_RESOURCE { ResourceName = DepletedFuel - Ratio = 0.000000008592 + Ratio = 0.000000026596 FlowMode = NO_FLOW } } @MODULE[RadioactiveStorageContainer] { @DangerousFuel = DepletedFuel - @SafeFuel = EnrichedUranium + @SafeFuel = UraniumNitride } @MODULE[ModuleCoreHeatNoCatchup] { - @CoreTempGoal = 846 //Internal temp goal - we don't transfer till we hit this point + @CoreTempGoal = 1240 //Internal temp goal - we don't transfer till we hit this point @HeatRadiantMultiplier = 0.05 //If the core is hotter, how much heat radiates? @CoreShutdownTemp = 2000 //At what core temperature do we shut down all generators on this part? - @MaxCoolant = 30 //Maximum amount of radiator capacity we can consume + @MaxCoolant = 400 //Maximum amount of radiator capacity we can consume } } -@PART[RO-reactor-snap10a]:FOR[zzzRealismOverhaul]:NEEDS[SystemHeat] +@PART[RO-reactor-SAFE400]:FOR[zzzRealismOverhaul]:NEEDS[SystemHeat] { - @mass -= 0.024 //subtract 24 kg radiator mass, since system heat actually needs rads + @mass -= 0.400 //subtract 400 kg radiator mass, since system heat actually needs rads //Radiator mass just determined with Heat Control Radiators... !MODULE[ModuleUpdateOverride] {} !MODULE[FissionReactor] {} @@ -2057,7 +2974,6 @@ //if the user has installed SystemHeat reactor configs, this will already be configured with SystemHeat modules //if they have not, then the reactor will not be configured //to make things easier for me, just preemptively delete any SystemHeat modules that might exist and make new ones - //patch must be run in zzzRealismOverhaul to make sure we patch *after* SystemHeat does !MODULE[ModuleSystemHeat] {} !MODULE[ModuleSystemHeatFissionReactor] {} @@ -2082,20 +2998,20 @@ // Heat kW HeatGeneration { - key = 0 0 0 0 - key = 100 30 0 0 + key = 0 0 + key = 100 400 } // Above this temp, risky - NominalTemperature = 766 //reactor outlet temp 846 K, but heat rejected to radiator at only 766 K after thermoelectric system + NominalTemperature = 505 //reactor outlet temp 1240 K, but heat rejected to radiator at only 505? K after recuperator // Above this temp, reactor takes damage - CriticalTemperature = 866 + CriticalTemperature = 605 // Amount of damage taken by core when over critical temp // %/s/K, so with value 0.001, at 200 K over CriticalTemp, reactor takes 0.2% damage/s CoreDamageRate = 0.008 // When repairing, amount of core damage to heal (%) - RepairAmountPerKit = 20 + RepairAmountPerKit = 20 CurrentPowerPercent = 100 ThrottleIncreaseRate = 5 @@ -2106,56 +3022,70 @@ ElectricalGeneration { key = 0 0 - key = 100 0.59 + key = 100 100 } // --- Fuel stuff // Base lifetime calculations off this resource - FuelName = EnrichedUranium + FuelName = UraniumNitride INPUT_RESOURCE { - ResourceName = EnrichedUranium - Ratio = 0.000000008592 // 1 year + ResourceName = UraniumNitride + Ratio = 0.000000020682 // 15 years FlowMode = NO_FLOW } OUTPUT_RESOURCE { ResourceName = DepletedFuel - Ratio = 0.000000008592 + Ratio = 0.000000026596 DumpExcess = false FlowMode = NO_FLOW } - } + } MODULE { name = ModuleSystemHeatFissionFuelContainer EngineerLevelForTransfer = 1 - ResourceNames = EnrichedUranium, DepletedFuel + ResourceNames = UraniumNitride, DepletedFuel } } + // ================================================================================= -// SNAP-2 - main source: https://www.osti.gov/biblio/4430852 -// https://beyondnerva.com/fission-power-systems/systems-for-nuclear-auxiliary-power-snap/snap-2/ +// RAPID-L reactor // ================================================================================= -+PART[reactor-0625]:FOR[RealismOverhaul] +// source: https://inis.iaea.org/search/search.aspx?orig_q=RN:37002589 ++PART[RO-reactor-kilopower]:FOR[RealismOverhaul] { - @name = RO-reactor-snap2 %RSSROConfig = True - @title = NASA SNAP-2 Nuclear Reactor - @manufacturer = #roMfrAtomicsInt - @description = Sister program to SNAP-10A, SNAP-2 used the same reactor design, but mated to a much more efficient (and complex) Mercury vapor turbine. Design lifetime 1 year. - @mass = 1.178 //-3 kg fuel - //including radiator mass and heat conversion equipment? - %specLevel = prototype //same reactor as SNAP-10, CRU system tested independently + @name = RO-reactor-RAPIDL + @title = RAPID-L Nuclear Reactor + @manufacturer = Japan Atomic Energy Research Institute + @description = Japanese design based for lunar bases. Design lifetime 8 years at full power. Meant to be buried underground. + @mass = 6.6 //including power conversion equipment and radiators? -500 kg fuel + %specLevel = concept - //Twice SNAP-10 based on drawings? + //nfe-reactor-tiny-2: 0.625m wide, 1.3m long + //~2 meters dia, 7 meters length @MODEL { - @scale = 1.57379, 1, 1.57379 // 3.16m long, 1.2m wide + @scale = 0.5943, 1, 0.5943 + } + @rescaleFactor = 5.3846 + + //manually fix B9PS nodes because the fix is not getting applied for some reason + @MODULE[ModuleB9PartSwitch] + { + @SUBTYPE,* + { + @attachNode[1] *= 5.3846 + @NODE + { + @position[1] /= 5.3846 + } + } } - @rescaleFactor = 2.5 // resources !RESOURCE,* {} @@ -2163,70 +3093,72 @@ { name = DepletedFuel amount = 0 - maxAmount = 0.271 + maxAmount = 45.7 } - //Uranium-Zirconium-Hydride, unknown enrichment + //Uranium Nitride, 40% enriched? RESOURCE { - name = EnrichedUranium - amount = 0.271 - maxAmount = 0.271 //~3 kg fuel + name = UraniumNitride + amount = 35 + maxAmount = 35 //~500 kg } } -@PART[RO-reactor-snap2]:FOR[RealismOverhaul]:NEEDS[!SystemHeat] + +@PART[RO-reactor-RAPIDL]:FOR[RealismOverhaul]:NEEDS[!SystemHeat] { // reactor parameters @MODULE[FissionGenerator] { - @PowerGeneration = 10 - @HeatUsed = 55 //reactor run at higher power level than SNAP-10 + @PowerGeneration = 200 + @HeatUsed = 5000 } @MODULE[FissionReactor] { + // Heat to generate (kW*50 - no clue why, hardcoded) @HeatGeneration = #$../MODULE[FissionGenerator]/HeatUsed$ @HeatGeneration *= 50 - @NominalTemperature = 846 // Above this temp more power output but risky - @CriticalTemperature = 866 // Above this temp, reactor takes damage - + @NominalTemperature = 1373 // Above this temp more power output but risky + @CriticalTemperature = 1513 // Above this temp, reactor takes damage // Amount of damage taken by core when over critical temp // %/s/K, so with value 0.001, at 200 K over CriticalTemp, reactor takes 0.2% damage/s - @CoreDamageRate = 0.01 + @CoreDamageRate = 0.02 // Base lifetime calculations off this resource - @FuelName = EnrichedUranium + @FuelName = UraniumNitride !INPUT_RESOURCE {} !OUTPUT_RESOURCE {} INPUT_RESOURCE { - ResourceName = EnrichedUranium - Ratio = 0.000000008592 // 1 year + ResourceName = UraniumNitride + Ratio = 0.000000138654 // 8 years of operation FlowMode = NO_FLOW } OUTPUT_RESOURCE { ResourceName = DepletedFuel - Ratio = 0.000000008592 + Ratio = 0.00000013188 FlowMode = NO_FLOW } } @MODULE[RadioactiveStorageContainer] { @DangerousFuel = DepletedFuel - @SafeFuel = EnrichedUranium + @SafeFuel = UraniumNitride } @MODULE[ModuleCoreHeatNoCatchup] { - @CoreTempGoal = 846 //Internal temp goal - we don't transfer till we hit this point - @HeatRadiantMultiplier = 0.05 //If the core is hotter, how much heat radiates? - @CoreShutdownTemp = 2000 //At what core temperature do we shut down all generators on this part? - @MaxCoolant = 30 //Maximum amount of radiator capacity we can consume + @CoreTempGoal = 1373 //Internal temp goal - we don't transfer till we hit this point + @HeatRadiantMultiplier = 0.1 //If the core is hotter, how much heat radiates? + @CoreShutdownTemp = 2100 //At what core temperature do we shut down all generators on this part? + @MaxCoolant = 5000 //Maximum amount of radiator capacity we can consume } + } -@PART[RO-reactor-snap2]:FOR[zzzRealismOverhaul]:NEEDS[SystemHeat] +@PART[RO-reactor-RAPIDL]:FOR[zzzRealismOverhaul]:NEEDS[SystemHeat] { - @mass -= 0.036 //subtract 36 kg radiator mass, since system heat actually needs rads + @mass -= 2.50 //subtract 2.5 tons radiator mass, since system heat actually needs rads //Radiator mass just determined with Heat Control Radiators... !MODULE[ModuleUpdateOverride] {} !MODULE[FissionReactor] {} @@ -2246,7 +3178,7 @@ MODULE { name = ModuleSystemHeat - volume = 1 + volume = 10 moduleID = reactor iconName = Icon_Nuclear } @@ -2263,19 +3195,19 @@ HeatGeneration { key = 0 0 0 0 - key = 100 55 0 0 //reactor run at higher power than SNAP-10 + key = 100 5000 0 0 } // Above this temp, risky - NominalTemperature = 588 //reactor outlet temp 922 K, but heat rejected to radiator at only 588 K after mercury vapor turbine + NominalTemperature = 850 //reactor outlet temp 1373 K, but heat rejected to radiator at only 950 K after thermoelectric system // Above this temp, reactor takes damage - CriticalTemperature = 688 + CriticalTemperature = 950 // Amount of damage taken by core when over critical temp // %/s/K, so with value 0.001, at 200 K over CriticalTemp, reactor takes 0.2% damage/s CoreDamageRate = 0.008 // When repairing, amount of core damage to heal (%) - RepairAmountPerKit = 20 + RepairAmountPerKit = 20 CurrentPowerPercent = 100 ThrottleIncreaseRate = 5 @@ -2286,23 +3218,23 @@ ElectricalGeneration { key = 0 0 - key = 100 10 + key = 100 200 } // --- Fuel stuff // Base lifetime calculations off this resource - FuelName = EnrichedUranium + FuelName = UraniumNitride INPUT_RESOURCE { - ResourceName = EnrichedUranium - Ratio = 0.000000008592 // 1 year + ResourceName = UraniumNitride + Ratio = 0.000000138654 // 8 years of operation FlowMode = NO_FLOW } OUTPUT_RESOURCE { ResourceName = DepletedFuel - Ratio = 0.000000008592 + Ratio = 0.00000013188 DumpExcess = false FlowMode = NO_FLOW } @@ -2312,6 +3244,6 @@ { name = ModuleSystemHeatFissionFuelContainer EngineerLevelForTransfer = 1 - ResourceNames = EnrichedUranium, DepletedFuel + ResourceNames = UraniumNitride, DepletedFuel } }