Procedures

ProcedureLocationProcedure TypeDescription
initinput_outputSubroutine

sets up parameters as defined by the problem statement

interplinear_algebraFunction

find a linearly interpolated value of a function \(f\left(x\right)\) at point \(x_{i}\) given values of the function in \(\vec{f}\) at points \(\vec{x}\)

matvecmultlinear_algebraSubroutine

multiply a matrix \(\mathbb{M}\) and a vector \(\vec{v}\) and get result \(\vec{outv}\)

nonuniformmeshmeshSubroutine

creates a nonuniform mesh with size varying from delta_x_min on the left edge of the boundary to delta_x on the right edge of the boundary. The element sizes vary as \(\log\left(\frac{a}{a^{n}}\right)\)

print_outputinput_outputSubroutine

prints out the output of file \(n\) including the mesh points \(\vec{x}\) and their values \(\vec{y}\)

read_sriminput_outputSubroutine

This subroutine opens a SRIM output file and reads the distribution of ions in the sample, outputting those to x and s

solvelinear_algebraSubroutine

solve the equation \(\mathbb{A}\vec{x} = \vec{b}\) for \(\vec{x}\) using Gauss-Seidel method

uniformmeshmeshSubroutine

creates a uniform mesh with size delta_x

workspace_setupinput_outputSubroutine

This subroutine will setup a workspace for us to generate and save our simulation files in