\section{Interaction Groups}\label{table:interaction_groups}
\begin{table}[h]
\begin{center}
\begin{tabular}{|c|c|c|c|} \cline{2-4}
  \multicolumn{1}{c|}{} & 
  \multicolumn{1}{p{40 mm}|}{
    \centering{\href{http://esys.geocomp.uq.edu.au/esys-particle_python_doc/current/pythonapi/html/esys.lsm.LsmPy.NRotSphere-class.html}{\textbf{NRotSphere}}}
  } & 
  \multicolumn{1}{p{40 mm}|}{
    \centering{\href{http://esys.geocomp.uq.edu.au/esys-particle_python_doc/current/pythonapi/html/esys.lsm.LsmPy.RotSphere-class.html}{\textbf{RotSphere}}}
  } & 
  \multicolumn{1}{p{40 mm}|}{
    \centering{\href{http://esys.geocomp.uq.edu.au/esys-particle_python_doc/current/pythonapi/html/esys.lsm.LsmPy.RotThermalSphere-class.html}{\textbf{RotThermalSphere}}}
  } 
  \\\hline
  % Start Body Forces
  & 
  \multicolumn{3}{c|}{
    \href{http://esys.geocomp.uq.edu.au/esys-particle_python_doc/current/pythonapi/html/esys.lsm.LsmPy.GravityPrms-class.html}{Gravity}
  }
  \\\cline{2-4}
  & 
  \multicolumn{3}{c|}{
    \href{http://esys.geocomp.uq.edu.au/esys-particle_python_doc/current/pythonapi/html/esys.lsm.LsmPy.DampingPrms-class.html}{Damping}
  } 
  \\\cline{2-4}
  \raisebox{1.25 ex}[0 pt]{\textbf{Body Forces}} & 
  \multicolumn{3}{c|}{
    \href{http://esys.geocomp.uq.edu.au/esys-particle_python_doc/current/pythonapi/html/esys.lsm.LsmPy.LinDampingPrms-class.html}{Damping}
  } 
  \\\cline{2-4}
  & 
  & 
  \href{http://esys.geocomp.uq.edu.au/esys-particle_python_doc/current/pythonapi/html/esys.lsm.LsmPy.RotDampingPrms-class.html}{RotDamping}
  &
  \\\hline\hline
  % End Body Forces
  % Start Unbonded Particle-Particle Interactions
  \textbf{Unbonded} &  &  &  \\
  \textbf{Particle-Particle} & 
  \raisebox{2 ex}[0 pt]{\href{http://esys.geocomp.uq.edu.au/esys-particle_python_doc/current/pythonapi/html/esys.lsm.LsmPy.NRotElasticPrms-class.html}{NRotElastic}} & 
  \raisebox{2 ex}[0 pt]{\href{http://esys.geocomp.uq.edu.au/esys-particle_python_doc/current/pythonapi/html/esys.lsm.LsmPy.RotElasticPrms-class.html}{RotElastic}} &
  \raisebox{2 ex}[0 pt]{\href{http://esys.geocomp.uq.edu.au/esys-particle_python_doc/current/pythonapi/html/esys.lsm.LsmPy.RotThermalElasticPrms-class.html}{RotThermalElastic}}
  \\[-1.35 ex] \cline{2-4} \\[-1.35 ex]
  \textbf{Interactions} & 
  \raisebox{0.5 ex}[0 pt]{\href{http://esys.geocomp.uq.edu.au/esys-particle_python_doc/current/pythonapi/html/esys.lsm.LsmPy.NRotFrictionPrms-class.html}{NRotFriction}} & 
  \raisebox{0.5 ex}[0 pt]{\href{http://esys.geocomp.uq.edu.au/esys-particle_python_doc/current/pythonapi/html/esys.lsm.LsmPy.RotFrictionPrms-class.html}{RotFriction}} &
  \raisebox{0.5 ex}[0 pt]{\href{http://esys.geocomp.uq.edu.au/esys-particle_python_doc/current/pythonapi/html/esys.lsm.LsmPy.RotThermalFrictionPrms-class.html}{RotThermalFriction}}
  \\\hline\cline{1-4}
  % End Unbonded Particle-Particle Interactions
  % Start Bonded Particle-Particle Interactions
  \textbf{Bonded} &  &  & 
  \\
  \textbf{Particle-Particle} &
  \href{http://esys.geocomp.uq.edu.au/esys-particle_python_doc/current/pythonapi/html/esys.lsm.LsmPy.NRotBondPrms-class.html}{NRotBond} & 
  \href{http://esys.geocomp.uq.edu.au/esys-particle_python_doc/current/pythonapi/html/esys.lsm.LsmPy.RotBondPrms-class.html}{RotBond} &
  \href{http://esys.geocomp.uq.edu.au/esys-particle_python_doc/current/pythonapi/html/esys.lsm.LsmPy.RotThermalBondPrms-class.html}{RotThermalBond}
  \\
  \textbf{Interactions} &  &  &
  \\\hline\hline
  % End Bonded Particle-Particle Interactions
  % Start UnBonded Wall-Particle Interactions
  \textbf{Unbonded} & 
  \multicolumn{3}{c|}{
    \href{http://esys.geocomp.uq.edu.au/esys-particle_python_doc/current/pythonapi/html/esys.lsm.LsmPy.NRotElasticWallPrms-class.html}{NRotElasticWall}
  } 
  \\\cline{2-4}
  \textbf{Wall-Particle} & 
  \multicolumn{3}{c|}{
    \href{http://esys.geocomp.uq.edu.au/esys-particle_python_doc/current/pythonapi/html/esys.lsm.LsmPy.NRotElasticLinMeshPrms-class.html}{NRotElasticLinMesh}
  } 
  \\\cline{2-4}
  \textbf{Interactions} & 
  \multicolumn{3}{c|}{
    \href{http://esys.geocomp.uq.edu.au/esys-particle_python_doc/current/pythonapi/html/esys.lsm.LsmPy.NRotElasticTriMeshPrms-class.html}{NRotElasticTriMesh}
  } 
  \\\hline\cline{1-4}
  % End UnBonded Wall-Particle Interactions
  % Start Bonded Wall-Particle Interactions
  & 
  \multicolumn{3}{c|}{
    \href{http://esys.geocomp.uq.edu.au/esys-particle_python_doc/current/pythonapi/html/esys.lsm.LsmPy.NRotBondedWallPrms-class.html}{NRotBondedWall}
  } 
  \\\cline{2-4}
  \raisebox{1.25 ex}[0 pt]{\textbf{Bonded}} & 
  \multicolumn{3}{c|}{
    \href{http://esys.geocomp.uq.edu.au/esys-particle_python_doc/current/pythonapi/html/esys.lsm.LsmPy.NRotBondedLinMeshPrms-class.html}{NRotBondedLinMesh}
  } 
  \\\cline{2-4}
  \raisebox{1.25 ex}[0 pt]{\textbf{Wall-Particle}} & 
  \multicolumn{3}{c|}{
    \href{http://esys.geocomp.uq.edu.au/esys-particle_python_doc/current/pythonapi/html/esys.lsm.LsmPy.NRotBondedTriMeshPrms-class.html}{NRotBondedTriMesh}
  } 
  \\\cline{2-4}
  \raisebox{1.25 ex}[0 pt]{\textbf{Interactions}} & 
  \multicolumn{3}{c|}{
    \href{http://esys.geocomp.uq.edu.au/esys-particle_python_doc/current/pythonapi/html/esys.lsm.LsmPy.NRotSoftBondedWallPrms-class.html}{NRotSoftBondedWall}
  } 
  \\\hline
  % End Bonded Wall-Particle Interactions
\end{tabular}
\end{center}
\end{table}
