NRE 7203 - Advanced Reactor Physics - Homework 1¶
JONATHONS WORK FOR HOMEWORK 1¶
# import relevant packages
import matplotlib.pyplot as plt
import numpy as np
import copy
from pointsource_sphere import PointSourceInSphere
from pointsource_sphere import PlotSigT
plt.rcParams['font.size'] = 16
%matplotlib inline
plt.rcParams['figure.figsize'] = [6, 4] # Set default figure size
# Define some constants
nMC = 100
S0 = 5000
R = 12.0
nRegions_a = 10
nRegions_b = 10
nRegions_c = 30
sigT_a = np.random.uniform(0.10, 0.25, size=nRegions_a)
sigT_b = np.random.uniform(0.10, 0.25, size=nRegions_b)
sigT_b[6] = 3.0 # manually assign to 7th pos in array (starting from 0 so really pos 6 in python world).
sigT_c = np.random.uniform(0.10, 0.25, size=nRegions_c)
Calculation a¶
# Calculation a
mc = PointSourceInSphere(nMC=nMC, S0=S0, R=R, sigT=sigT_a)
mc.Solve(scheme='analytic')
mc.Solve('ST')
mc.Solve('DT')
mc.Solve('wdt')
# EXECUTION TIMES
print("EXECUTION TIMES")
print("ST = {:.5f}".format(mc.times['ST']))
print("DT = {:.5f}".format(mc.times['DT']))
print("WDT = {:.5f}".format(mc.times['WDT']))
# LEAKAGES
print("\nLEAKAGE")
print("Analytic Leakage = {:.5f} %".format(100*mc.resAN['leakage']))
print("MC/ST Leakage = {:.5f} %".format(100*mc.resST['leakage']), "pm {:.5f}".format(100*mc.resST['errleakage']))
print("MC/DT Leakage = {:.5f} %".format(100*mc.resDT['leakage']), "pm {:.5f}".format(100*mc.resDT['errleakage']))
print("MC/WDT Leakage = {:.5f} %".format(100*mc.resWDT['leakage']), "pm {:.5f}".format(100*mc.resWDT['errleakage']))
# FIGURE OF MERITS
print("\nFOMs")
mc.PrintFOM('ST')
mc.PrintFOM('DT')
mc.PrintFOM('WDT')
# FLUXES
mc.PlotFluxes('all')
# Deepcopy data:
mc_a = copy.deepcopy(mc)
# Save figure
plt.savefig('Results/Figure_a.png')
Now solving with method: analytic
Now solving with method: ST
Running generation 0
Running generation 10
Running generation 20
Running generation 30
Running generation 40
Running generation 50
Running generation 60
Running generation 70
Running generation 80
Running generation 90
Finished after 99 MC runs! Time was 3.873950958251953
Now solving with method: DT
Running generation 0
Running generation 10
Running generation 20
Running generation 30
Running generation 40
Running generation 50
Running generation 60
Running generation 70
Running generation 80
Running generation 90
Finished after 99 MC runs! Time was 3.5577402114868164
Now solving with method: wdt
Running generation 0
Running generation 10
Running generation 20
Running generation 30
Running generation 40
Running generation 50
Running generation 60
Running generation 70
Running generation 80
Running generation 90
Finished after 99 MC runs! Time was 4.57941746711731
EXECUTION TIMES
ST = 3.87395
DT = 3.55774
WDT = 4.57942
LEAKAGE
Analytic Leakage = 12.79313 %
MC/ST Leakage = 12.81720 % pm 0.46496
MC/DT Leakage = 12.86280 % pm 0.55292
MC/WDT Leakage = 12.70944 % pm 0.39017
FOMs
FOM - ST: 0.00031194857915035066
FOM - DT: 0.0002407959257579548
FOM - WDT: 0.0003618540003301058

Calculation b¶
mc = PointSourceInSphere(nMC=nMC, S0=S0, R=R, sigT=sigT_b)
mc.Solve(scheme='analytic')
mc.Solve('ST')
mc.Solve('DT')
mc.Solve('wdt')
# EXECUTION TIMES
print("EXECUTION TIMES")
print("ST = {:.5f}".format(mc.times['ST']))
print("DT = {:.5f}".format(mc.times['DT']))
print("WDT = {:.5f}".format(mc.times['WDT']))
# LEAKAGES
print("Analytic Leakage = {:.5f} %".format(100*mc.resAN['leakage']))
print("MC/ST Leakage = {:.5f} %".format(100*mc.resST['leakage']), "pm {:.5f}".format(100*mc.resST['errleakage']))
print("MC/DT Leakage = {:.5f} %".format(100*mc.resDT['leakage']), "pm {:.5f}".format(100*mc.resDT['errleakage']))
print("MC/WDT Leakage = {:.5f} %".format(100*mc.resWDT['leakage']), "pm {:.5f}".format(100*mc.resWDT['errleakage']))
# FIGURE OF MERITS
print("\nFOMs")
mc.PrintFOM('ST')
mc.PrintFOM('DT')
mc.PrintFOM('WDT')
# FLUXES
mc.PlotFluxes('all')
# Deepcopy data:
mc_b = copy.deepcopy(mc)
# Save figure
plt.savefig('Results/Figure_b.png')
Now solving with method: analytic
Now solving with method: ST
Running generation 0
Running generation 10
Running generation 20
Running generation 30
Running generation 40
Running generation 50
Running generation 60
Running generation 70
Running generation 80
Running generation 90
Finished after 99 MC runs! Time was 3.795607089996338
Now solving with method: DT
Running generation 0
Running generation 10
Running generation 20
Running generation 30
Running generation 40
Running generation 50
Running generation 60
Running generation 70
Running generation 80
Running generation 90
Finished after 99 MC runs! Time was 17.01483416557312
Now solving with method: wdt
Running generation 0
Running generation 10
Running generation 20
Running generation 30
Running generation 40
Running generation 50
Running generation 60
Running generation 70
Running generation 80
Running generation 90
Finished after 99 MC runs! Time was 35.381208419799805
EXECUTION TIMES
ST = 3.79561
DT = 17.01483
WDT = 35.38121
Analytic Leakage = 2.90537 %
MC/ST Leakage = 2.90860 % pm 0.21444
MC/DT Leakage = 2.94320 % pm 0.22673
MC/WDT Leakage = 2.89972 % pm 0.19785
FOMs
FOM - ST: 0.00035371562390919915
FOM - DT: 8.012064679268595e-05
FOM - WDT: 7.527196584226644e-05

Calculation c¶
mc = PointSourceInSphere(nMC=nMC, S0=S0, R=R, sigT=sigT_c)
mc.Solve(scheme='analytic')
mc.Solve('ST')
mc.Solve('DT')
mc.Solve('wdt')
# EXECUTION TIMES
print("EXECUTION TIMES")
print("ST = {:.5f}".format(mc.times['ST']))
print("DT = {:.5f}".format(mc.times['DT']))
print("WDT = {:.5f}".format(mc.times['WDT']))
# LEAKAGES
print("Analytic Leakage = {:.5f} %".format(100*mc.resAN['leakage']))
print("MC/ST Leakage = {:.5f} %".format(100*mc.resST['leakage']), "pm {:.5f}".format(100*mc.resST['errleakage']))
print("MC/DT Leakage = {:.5f} %".format(100*mc.resDT['leakage']), "pm {:.5f}".format(100*mc.resDT['errleakage']))
print("MC/WDT Leakage = {:.5f} %".format(100*mc.resWDT['leakage']), "pm {:.5f}".format(100*mc.resWDT['errleakage']))
# FIGURE OF MERITS
print("\nFOMs")
mc.PrintFOM('ST')
mc.PrintFOM('DT')
mc.PrintFOM('WDT')
# FLUXES
mc.PlotFluxes('all')
# Deepcopy data:
mc_c = copy.deepcopy(mc)
# Save figure
plt.savefig('Results/Figure_c.png')
Now solving with method: analytic
Now solving with method: ST
Running generation 0
Running generation 10
Running generation 20
Running generation 30
Running generation 40
Running generation 50
Running generation 60
Running generation 70
Running generation 80
Running generation 90
Finished after 99 MC runs! Time was 6.552052974700928
Now solving with method: DT
Running generation 0
Running generation 10
Running generation 20
Running generation 30
Running generation 40
Running generation 50
Running generation 60
Running generation 70
Running generation 80
Running generation 90
Finished after 99 MC runs! Time was 3.69978404045105
Now solving with method: wdt
Running generation 0
Running generation 10
Running generation 20
Running generation 30
Running generation 40
Running generation 50
Running generation 60
Running generation 70
Running generation 80
Running generation 90
Finished after 99 MC runs! Time was 4.0094358921051025
EXECUTION TIMES
ST = 6.55205
DT = 3.69978
WDT = 4.00944
Analytic Leakage = 10.48701 %
MC/ST Leakage = 10.54000 % pm 0.41469
MC/DT Leakage = 10.50660 % pm 0.42146
MC/WDT Leakage = 10.44587 % pm 0.35399
FOMs
FOM - ST: 0.0002217139946331617
FOM - DT: 0.00036997018345799365
FOM - WDT: 0.000429480888408497

PLOTTING SIGMA TOTAL¶
PlotSigT(mc=mc_a, yLower=0.0, yUpper=0.3)

PlotSigT(mc=mc_b, yLower=0.0, yUpper=3.1)

PlotSigT(mc=mc_c, yLower=0.0, yUpper=0.3)
