\begin{frame} \frametitle{An Overview of Application Thorns} \begin{centering} \begin{figure}[h] \centering \includegraphics[height=3cm]{thorn.png} \end{figure} \end{centering} \end{frame} \begin{frame} \frametitle{Basic Thorn Anatomy} \begin{itemize}[<+->] \item Each thorn consists of a subdirectory containing four files: \item interface.ccl - This file defines the Cactus interface. It will include a header block which gives details about the thorns interactions with other thorns, if any. It will also include a block defining the thorn's global variables, if any. \item param.ccl - This file includes the parameters introduced by this thorn, as well as the parameters needed from other thorn interactions, as defined in the interface.ccl file. This file can also detail the scope of the given parameters (i.e. global, private, etc.) \item configuration.ccl - This file is optional. It contains capabilities which a thorn provides, requires, or may use if available. For example, this file can provide access to external libraries, provide access to functions for other thorns, or split a thorn into several thorns, all of which require some commone (not aliased) functions. \end{itemize} \end{frame} \begin{frame} \frametitle{Continued} \begin{itemize}[<+->] \item schedule.ccl - This file contains scheduling information for routines called by the flesh. This will determine which routines will be run in which order; via: \begin{itemize} \item Assignment Statements - switch on grid variable storage for the duration of the program's execution. \item Schedule Blocks - schedule a given subroutine from a thorn to be called at given time's in the program's execution. \item Conditional Statements - Allow both assignment statements and schedule blocks to be processed given conditional parameter values. \end{itemize} \end{itemize} \end{frame} \begin{frame} \frametitle{Continued} \begin{itemize}[<+->] \item The thorn will also include a README file with a brief description of the thorn, as well as several subdirectories, including: \begin{itemize} \item /src - For holding source files, as well as compilation instructions. \item /src/include - For include files. \item /doc - For documentation. \item /par - For example parameter files. \item /test - For holding the thorn's test suite. \end{itemize} \end{itemize} \end{frame}