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
../../_images/NRE7203_HOMEWORK1_5_1.png

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
../../_images/NRE7203_HOMEWORK1_7_1.png

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
../../_images/NRE7203_HOMEWORK1_9_1.png

PLOTTING SIGMA TOTAL

PlotSigT(mc=mc_a, yLower=0.0, yUpper=0.3)
../../_images/NRE7203_HOMEWORK1_11_0.png
PlotSigT(mc=mc_b, yLower=0.0, yUpper=3.1)
../../_images/NRE7203_HOMEWORK1_12_0.png
PlotSigT(mc=mc_c, yLower=0.0, yUpper=0.3)
../../_images/NRE7203_HOMEWORK1_13_0.png