From ed4777d2fd2c4b0791e2b4c45f23606cbe635272 Mon Sep 17 00:00:00 2001 From: bruberu <80226372+bruberu@users.noreply.github.com> Date: Thu, 28 Aug 2025 22:39:42 -0500 Subject: [PATCH 1/3] fix: depletion and max power calculations --- .../supercritical/api/nuclear/fission/FissionReactor.java | 7 ++++--- .../multiblockpart/MetaTileEntityFuelRodImportBus.java | 2 +- src/main/resources/assets/supercritical/lang/en_us.lang | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/java/supercritical/api/nuclear/fission/FissionReactor.java b/src/main/java/supercritical/api/nuclear/fission/FissionReactor.java index e3fc3f2..eafb565 100644 --- a/src/main/java/supercritical/api/nuclear/fission/FissionReactor.java +++ b/src/main/java/supercritical/api/nuclear/fission/FissionReactor.java @@ -184,11 +184,12 @@ public FissionReactor(int size, int depth, double controlRodInsertion) { effectiveCoolantChannels = new ArrayList<>(); // 2pi * r^2 + 2pi * r * l surfaceArea = (reactorRadius * reactorRadius) * Math.PI * 2 + reactorDepth * reactorRadius * Math.PI * 2; - structuralMass = reactorDepth * reactorRadius * reactorRadius * Math.PI * - 300; // Assuming 300 kg/m^3 when it's basically empty, does not have to be precise } public void prepareThermalProperties() { + structuralMass = reactorDepth * reactorRadius * reactorRadius * Math.PI * + 300; // Assuming 300 kg/m^3 when it's basically empty, does not have to be precise + int idRod = 0, idControl = 0, idChannel = 0; for (int i = 0; i < reactorLayout.length; i++) { @@ -676,6 +677,7 @@ public void updatePressure() { } public void updateNeutronPoisoning() { + this.decayProductsAmount *= decayProductRate; this.neutronPoisonAmount += this.decayProductsAmount * (1 - decayProductRate) * poisonFraction; this.neutronPoisonAmount *= decayProductRate * Math.exp(-crossSectionRatio * power / surfaceArea); } @@ -706,7 +708,6 @@ public void updatePower() { this.neutronFlux *= 0.5; this.power *= 0.5; } - this.decayProductsAmount *= decayProductRate; } public boolean checkForMeltdown() { diff --git a/src/main/java/supercritical/common/metatileentities/multi/multiblockpart/MetaTileEntityFuelRodImportBus.java b/src/main/java/supercritical/common/metatileentities/multi/multiblockpart/MetaTileEntityFuelRodImportBus.java index 87f2471..237e6dd 100644 --- a/src/main/java/supercritical/common/metatileentities/multi/multiblockpart/MetaTileEntityFuelRodImportBus.java +++ b/src/main/java/supercritical/common/metatileentities/multi/multiblockpart/MetaTileEntityFuelRodImportBus.java @@ -284,7 +284,7 @@ public void setInternalFuelRod(FuelRod rod) { @Override public boolean isDepleted(double totalDepletion) { - return this.depletionPoint <= totalDepletion; + return this.depletionPoint <= totalDepletion * this.internalFuelRod.getWeight(); } @Override diff --git a/src/main/resources/assets/supercritical/lang/en_us.lang b/src/main/resources/assets/supercritical/lang/en_us.lang index 83570e6..0b91d2d 100644 --- a/src/main/resources/assets/supercritical/lang/en_us.lang +++ b/src/main/resources/assets/supercritical/lang/en_us.lang @@ -155,7 +155,7 @@ supercritical.gui.fission.pressure=Pressure: %.3f Pa supercritical.gui.fission.power=Power: %.3f MW / %.3f MW supercritical.gui.fission.k_eff=Neutron multiplication factor: %f supercritical.gui.fission.depletion=Current depletion: %f%% -supercritical.gui.fission.depleted_rod=Depleted rod: %s +supercritical.gui.fission.depleted_rod=Making %s supercritical.gui.fission.lock.locked=Reactor locked and active! supercritical.gui.fission.lock.unlocked=Reactor not active From 9708e9c745c50c3670687f245bae410aec8a4f06 Mon Sep 17 00:00:00 2001 From: bruberu <80226372+bruberu@users.noreply.github.com> Date: Thu, 28 Aug 2025 23:10:49 -0500 Subject: [PATCH 2/3] fix: update decay product amount calculation to new system --- .../java/supercritical/api/nuclear/fission/FissionReactor.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/supercritical/api/nuclear/fission/FissionReactor.java b/src/main/java/supercritical/api/nuclear/fission/FissionReactor.java index eafb565..e81ad55 100644 --- a/src/main/java/supercritical/api/nuclear/fission/FissionReactor.java +++ b/src/main/java/supercritical/api/nuclear/fission/FissionReactor.java @@ -701,7 +701,8 @@ public void updatePower() { this.neutronFlux *= Math.exp(inverseReactorPeriod); this.fuelDepletion += this.neutronFlux * reactorDepth; - this.decayProductsAmount += Math.max(neutronFlux, 0.) / 1000; + // Should be about 0.001x of the value of the variable "power". + this.decayProductsAmount += Math.max(neutronFlux, 0.) / 250000; this.power = this.neutronFlux * this.neutronToPowerConversion; } else { From dd2234810f763ac59be08c3158aa833162b93ffc Mon Sep 17 00:00:00 2001 From: bruberu <80226372+bruberu@users.noreply.github.com> Date: Fri, 29 Aug 2025 22:56:30 -0500 Subject: [PATCH 3/3] fix: structural mass should be initialized in the constructor too, I guess --- .../java/supercritical/api/nuclear/fission/FissionReactor.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/supercritical/api/nuclear/fission/FissionReactor.java b/src/main/java/supercritical/api/nuclear/fission/FissionReactor.java index e81ad55..d8f782b 100644 --- a/src/main/java/supercritical/api/nuclear/fission/FissionReactor.java +++ b/src/main/java/supercritical/api/nuclear/fission/FissionReactor.java @@ -184,6 +184,9 @@ public FissionReactor(int size, int depth, double controlRodInsertion) { effectiveCoolantChannels = new ArrayList<>(); // 2pi * r^2 + 2pi * r * l surfaceArea = (reactorRadius * reactorRadius) * Math.PI * 2 + reactorDepth * reactorRadius * Math.PI * 2; + + // Apparently we do need to initialize it here as well. + structuralMass = reactorDepth * reactorRadius * reactorRadius * Math.PI * 300; } public void prepareThermalProperties() {