Dane Sabo 943066540c Auto sync: 2025-11-10 18:04:37 (36 files changed)
M  .task/backlog.data

M  .task/completed.data

M  .task/pending.data

M  .task/undo.data

A  Class_Work/nuce2101/exam2/NUCE2101_SABO/Submission.pdf

A  Class_Work/nuce2101/exam2/NUCE2101_SABO/problem1.py

A  Class_Work/nuce2101/exam2/NUCE2101_SABO/problem1_equal_loading.png

A  Class_Work/nuce2101/exam2/NUCE2101_SABO/problem1_unequal_loading.png
2025-11-10 18:04:37 -05:00

371 lines
13 KiB
TeX

\section*{Problem 2}
\subsubsection*{Cross-Section Data}
Two-group cross-section data stored in Python dictionary:
\begin{lstlisting}[language=Python,
basicstyle=\ttfamily\small,
keywordstyle=\color{blue},
commentstyle=\color{gray},
stringstyle=\color{red},
showstringspaces=false,
numbers=left,
numberstyle=\tiny,
frame=single,
breaklines=true]
import numpy as np
cross_sections = {
'fast': {
'D': 1.4, # Diffusion constant [cm]
'Sigma_a': 0.010, # Absorption [cm^-1]
'Sigma_s': 0.050, # Scattering from fast to thermal [cm^-1]
'nu_Sigma_f': 0.000, # nu*Sigma_f [cm^-1]
'chi': 1, # Fission spectrum
'v': 1.8e7, # Average group velocity [cm/sec]
},
'thermal': {
'D': 0.35, # Diffusion constant [cm]
'Sigma_a': 0.080, # Absorption [cm^-1]
'Sigma_s': 0.0, # Scattering from thermal to fast [cm^-1]
'nu_Sigma_f': 0.125, # nu*Sigma_f [cm^-1]
'chi': 0, # Fission spectrum
'v': 2.2e5, # Average group velocity [cm/sec]
}
}
# Extract variables for easy access
D_fast = cross_sections['fast']['D']
D_thermal = cross_sections['thermal']['D']
Sigma_a_fast = cross_sections['fast']['Sigma_a']
Sigma_a_thermal = cross_sections['thermal']['Sigma_a']
Sigma_s_fast = cross_sections['fast']['Sigma_s']
nu_Sigma_f_fast = cross_sections['fast']['nu_Sigma_f']
nu_Sigma_f_thermal = cross_sections['thermal']['nu_Sigma_f']
\end{lstlisting}
\subsection*{Part A}
\subsubsection*{Python Code}
\begin{lstlisting}[language=Python,
basicstyle=\ttfamily\small,
keywordstyle=\color{blue},
commentstyle=\color{gray},
stringstyle=\color{red},
showstringspaces=false,
numbers=left,
numberstyle=\tiny,
frame=single,
breaklines=true]
# Four-Factor Formula: k_inf = epsilon * p * f * eta
# Fast fission factor: epsilon = 1 (no fast fissions)
epsilon = 1.0
# Resonance escape probability
p = Sigma_s_fast / (Sigma_a_fast + Sigma_s_fast)
# Thermal utilization factor: f = 1 (single-region)
f = 1.0
# Reproduction factor
eta = nu_Sigma_f_thermal / Sigma_a_thermal
# Four-Factor Formula
k_inf = epsilon * p * f * eta
print(f"k_inf = epsilon * p * f * eta = {k_inf:.4f}")
\end{lstlisting}
\subsubsection*{Solution}
The infinite multiplication factor is calculated using the \textbf{Four-Factor Formula}:
\[k_\infty = \varepsilon \cdot p \cdot f \cdot \eta\]
where:
\begin{itemize}
\item $\varepsilon$ = fast fission factor (neutrons from fast fissions per thermal fission)
\item $p$ = resonance escape probability (fraction of fast neutrons reaching thermal energies)
\item $f$ = thermal utilization factor (fraction of thermal neutrons absorbed in fuel)
\item $\eta$ = reproduction factor (neutrons produced per thermal neutron absorbed in fuel)
\end{itemize}
\textbf{Given cross-sections:}
\begin{itemize}
\item $\nu\Sigma_{f,fast}$ = 0.000 cm$^{-1}$ (no fast fissions)
\item $\nu\Sigma_{f,thermal}$ = 0.125 cm$^{-1}$
\item $\Sigma_{a,fast}$ = 0.010 cm$^{-1}$
\item $\Sigma_{a,thermal}$ = 0.080 cm$^{-1}$
\item $\Sigma_{s,fast}$ = 0.050 cm$^{-1}$ (scattering from fast to thermal)
\end{itemize}
\textbf{Calculating each factor:}
\textbf{1. Fast fission factor:}
\[\varepsilon = 1.0000 \quad \text{(no fast fissions since } \nu\Sigma_{f,fast} = 0\text{)}\]
\textbf{2. Resonance escape probability:}
\[p = \frac{\Sigma_{s,fast}}{\Sigma_{a,fast} + \Sigma_{s,fast}} = \frac{0.050}{0.010 + 0.050} = \frac{0.050}{0.060} = 0.8333\]
\textbf{3. Thermal utilization factor:}
\[f = 1.0000 \quad \text{(single-region, homogeneous medium)}\]
\textbf{4. Reproduction factor:}
\[\eta = \frac{\nu\Sigma_{f,thermal}}{\Sigma_{a,thermal}} = \frac{0.125}{0.080} = 1.5625\]
\textbf{Final calculation:}
\[k_\infty = \varepsilon \cdot p \cdot f \cdot \eta = 1.0000 \times 0.8333 \times 1.0000 \times 1.5625 = 1.3021\]
\[\boxed{k_\infty = 1.302}\]
\subsection*{Part B}
\subsubsection*{Python Code}
\begin{lstlisting}[language=Python,
basicstyle=\ttfamily\small,
keywordstyle=\color{blue},
commentstyle=\color{gray},
stringstyle=\color{red},
showstringspaces=false,
numbers=left,
numberstyle=\tiny,
frame=single,
breaklines=true]
# Calculate diffusion lengths
# L^2_fast = D_fast / Sigma_total_fast
# where Sigma_total_fast = Sigma_a_fast + Sigma_s_fast (removal from fast group)
Sigma_total_fast = Sigma_a_fast + Sigma_s_fast
L_squared_fast = D_fast / Sigma_total_fast
# L^2_th = D_th / Sigma_a_th
L_squared_th = D_thermal / Sigma_a_thermal
L_fast = np.sqrt(L_squared_fast)
L_thermal = np.sqrt(L_squared_th)
print(f"L_fast = {L_fast:.3f} cm")
print(f"L_thermal = {L_thermal:.3f} cm")
\end{lstlisting}
\subsubsection*{Solution}
The diffusion lengths for each group are calculated as:
\[L^2 = \frac{D}{\Sigma_{removal}}\]
\textbf{Fast Group:}
The removal cross-section includes both absorption and scattering out:
\[\Sigma_{removal,fast} = \Sigma_{a,fast} + \Sigma_{s,fast} = 0.010 + 0.050 = 0.060 \text{ cm}^{-1}\]
\[L^2_{fast} = \frac{D_{fast}}{\Sigma_{removal,fast}} = \frac{1.4}{0.060} = 23.333 \text{ cm}^2\]
\[L_{fast} = \sqrt{23.333} = 4.830 \text{ cm}\]
\textbf{Thermal Group:}
For the thermal group (lowest energy group), only absorption removes neutrons:
\[L^2_{thermal} = \frac{D_{thermal}}{\Sigma_{a,thermal}} = \frac{0.35}{0.080} = 4.375 \text{ cm}^2\]
\[L_{thermal} = \sqrt{4.375} = 2.092 \text{ cm}\]
\[\boxed{L_{fast} = 4.830 \text{ cm}, \quad L_{thermal} = 2.092 \text{ cm}}\]
\subsection*{Part C}
\subsubsection*{Solution}
For a rectangular solid geometry (box) with dimensions $L_x$, $L_y$, and $L_z$, where the neutron flux goes to zero at the edges (bare reactor boundary condition), the \textbf{geometric buckling} is:
\[\boxed{B^2 = \left(\frac{\pi}{L_x}\right)^2 + \left(\frac{\pi}{L_y}\right)^2 + \left(\frac{\pi}{L_z}\right)^2}\]
This expression comes from solving the neutron diffusion equation with boundary conditions $\phi = 0$ at the reactor boundaries. The solution for the fundamental mode has the form:
\[\phi(x,y,z) = A \sin\left(\frac{\pi x}{L_x}\right) \sin\left(\frac{\pi y}{L_y}\right) \sin\left(\frac{\pi z}{L_z}\right)\]
The geometric buckling is the eigenvalue associated with this spatial mode, representing the curvature of the neutron flux distribution. Each term corresponds to the buckling in one spatial dimension:
\begin{itemize}
\item $B_x^2 = \left(\frac{\pi}{L_x}\right)^2$ - buckling in x-direction
\item $B_y^2 = \left(\frac{\pi}{L_y}\right)^2$ - buckling in y-direction
\item $B_z^2 = \left(\frac{\pi}{L_z}\right)^2$ - buckling in z-direction
\end{itemize}
The total geometric buckling is the sum of the directional components.
\textbf{Note:} The derivation of this formula from the diffusion equation was completed in Exam 1. The proof is left to that work.
\subsection*{Part D}
\subsubsection*{Python Code}
\begin{lstlisting}[language=Python,
basicstyle=\ttfamily\small,
keywordstyle=\color{blue},
commentstyle=\color{gray},
stringstyle=\color{red},
showstringspaces=false,
numbers=left,
numberstyle=\tiny,
frame=single,
breaklines=true]
import sympy as sm
# Given dimensions
L_x_val = 150 # cm (width)
L_y_val = 200 # cm (length)
# Define L_z (height) as unknown
L_z_sym = sm.Symbol('L_z', positive=True)
# Buckling with unknown height
B_sq = (sm.pi / L_x_val)**2 + (sm.pi / L_y_val)**2 + (sm.pi / L_z_sym)**2
# Criticality equation: k_inf = (L^2_fast * B^2 + 1)(L^2_thermal * B^2 + 1)
criticality_eq = (L_squared_fast * B_sq + 1) * (L_squared_th * B_sq + 1) - k_inf
# Solve for L_z
L_z_solutions = sm.solve(criticality_eq, L_z_sym)
L_z_critical = float([sol for sol in L_z_solutions if sol.is_real and sol > 0][0])
print(f"Critical height L_z = {L_z_critical:.2f} cm")
\end{lstlisting}
\subsubsection*{Solution}
For a trough with width $L_x = 150$ cm and length $L_y = 200$ cm, we need to find the critical height $L_z$ where $k_{eff} = 1$.
\textbf{Criticality condition using two-group theory:}
At criticality, the effective multiplication factor equals unity:
\[k_{eff} = \frac{k_\infty}{(L_{fast}^2 B^2 + 1)(L_{thermal}^2 B^2 + 1)} = 1\]
Rearranging:
\[(L_{fast}^2 B^2 + 1)(L_{thermal}^2 B^2 + 1) = k_\infty\]
The geometric buckling for the rectangular trough is:
\[B^2 = \left(\frac{\pi}{L_x}\right)^2 + \left(\frac{\pi}{L_y}\right)^2 + \left(\frac{\pi}{L_z}\right)^2\]
\textbf{Known values:}
\begin{itemize}
\item $k_\infty = 1.3021$
\item $L_{fast}^2 = 23.333$ cm$^2$
\item $L_{thermal}^2 = 4.375$ cm$^2$
\item $L_x = 150$ cm
\item $L_y = 200$ cm
\end{itemize}
\textbf{Calculation:}
Substituting the buckling expression:
\[B^2 = \left(\frac{\pi}{150}\right)^2 + \left(\frac{\pi}{200}\right)^2 + \left(\frac{\pi}{L_z}\right)^2\]
\[B^2 = 4.386 \times 10^{-4} + 2.467 \times 10^{-4} + \frac{\pi^2}{L_z^2}\]
Substituting into the criticality equation:
\[\left(23.333 \left(6.853 \times 10^{-4} + \frac{\pi^2}{L_z^2}\right) + 1\right) \left(4.375 \left(6.853 \times 10^{-4} + \frac{\pi^2}{L_z^2}\right) + 1\right) = 1.3021\]
Solving this equation numerically (or symbolically with SymPy) yields:
\[\boxed{L_z = 31.72 \text{ cm}}\]
\textbf{Verification:}
\begin{itemize}
\item $B^2 = 0.010496$ cm$^{-2}$
\item $k_{eff} = 1.000000$ \checkmark
\end{itemize}
The trough would become critical at a height of approximately 31.7 cm.
\subsection*{Part E}
\subsubsection*{Python Code}
\begin{lstlisting}[language=Python,
basicstyle=\ttfamily\small,
keywordstyle=\color{blue},
commentstyle=\color{gray},
stringstyle=\color{red},
showstringspaces=false,
numbers=left,
numberstyle=\tiny,
frame=single,
breaklines=true]
# Prompt criticality
BETA = 640e-5 # Delayed neutron fraction
# Prompt critical k_eff = 1/(1-beta)
k_eff_prompt = 1 / (1 - BETA)
# Solve for height at prompt criticality
L_z_prompt_sym = sm.Symbol('L_z_prompt', positive=True)
B_sq_prompt = (sm.pi / L_x_val)**2 + (sm.pi / L_y_val)**2 + (sm.pi / L_z_prompt_sym)**2
prompt_crit_eq = (L_squared_fast * B_sq_prompt + 1) * \
(L_squared_th * B_sq_prompt + 1) - k_inf / k_eff_prompt
L_z_prompt_solutions = sm.solve(prompt_crit_eq, L_z_prompt_sym)
L_z_prompt = float([sol for sol in L_z_prompt_solutions
if sol.is_real and sol > 0][0])
print(f"Prompt critical height L_z = {L_z_prompt:.2f} cm")
\end{lstlisting}
\subsubsection*{Solution}
\textbf{Prompt criticality} occurs when the reactor can sustain a chain reaction on prompt neutrons alone, without relying on delayed neutrons. This happens when:
\[k_{eff} = \frac{1}{1 - \beta}\]
where $\beta$ is the delayed neutron fraction.
\textbf{Given:}
\begin{itemize}
\item $\beta = 640 \times 10^{-5} = 0.00640$
\end{itemize}
\textbf{Prompt critical condition:}
\[k_{eff,prompt} = \frac{1}{1 - 0.00640} = \frac{1}{0.99360} = 1.00644\]
Using the same two-group criticality equation from Part D, but now solving for the height where $k_{eff} = 1.00644$:
\[\frac{k_\infty}{(L_{fast}^2 B^2 + 1)(L_{thermal}^2 B^2 + 1)} = 1.00644\]
Rearranging:
\[(L_{fast}^2 B^2 + 1)(L_{thermal}^2 B^2 + 1) = \frac{k_\infty}{k_{eff,prompt}} = \frac{1.3021}{1.00644} = 1.2938\]
With $B^2 = \left(\frac{\pi}{150}\right)^2 + \left(\frac{\pi}{200}\right)^2 + \left(\frac{\pi}{L_z}\right)^2$, solving numerically:
\[\boxed{L_{z,prompt} = 32.18 \text{ cm}}\]
\textbf{Comparison:}
\begin{itemize}
\item Delayed critical height: $L_z = 31.72$ cm
\item Prompt critical height: $L_{z,prompt} = 32.18$ cm
\item Difference: $\Delta L_z = 0.46$ cm
\end{itemize}
The liquid must rise an additional 0.46 cm above delayed criticality to reach prompt criticality. This small difference highlights why delayed neutrons are crucial for reactor control.
\subsection*{Part F}
\subsubsection*{Solution}
The presence of people near the trough could significantly impact the critical height.
\textbf{Physical mechanism:}
If the neutron flux is not actually zero at the trough edges (as assumed in our bare reactor model), people standing nearby would:
\begin{enumerate}
\item \textbf{Act as neutron reflectors:} Human bodies contain significant amounts of water ($\sim$60\% by mass), which is an excellent neutron moderator and reflector
\item \textbf{Reduce neutron leakage:} Neutrons that would have escaped the trough can be scattered back by the hydrogen in the water content of human tissue
\item \textbf{Increase system reactivity:} Reduced leakage means more neutrons remain in the system to cause fissions
\end{enumerate}
\textbf{Impact on critical height:}
\[\boxed{\text{Critical height would DECREASE}}\]