\contentsline {section}{\numberline {1}Introduction}{4}{section.1} \contentsline {section}{\numberline {2}Tricks}{6}{section.2} \contentsline {subsection}{\numberline {2.1}Higher order matrix representation}{6}{subsection.2.1} \contentsline {subsection}{\numberline {2.2}Evolution operators}{6}{subsection.2.2} \contentsline {section}{\numberline {3}Single-flavour grids and convolutions}{7}{section.3} \contentsline {subsection}{\numberline {3.1}Grid Definitions (\texttt {grid\_def})}{7}{subsection.3.1} \contentsline {subsection}{\numberline {3.2}$x$-space functions}{8}{subsection.3.2} \contentsline {subsection}{\numberline {3.3}Grid Convolution operators}{10}{subsection.3.3} \contentsline {subsubsection}{\numberline {3.3.1}Other operations on \texttt {grid\_conv} objects}{12}{subsubsection.3.3.1} \contentsline {subsubsection}{\numberline {3.3.2}Derived \texttt {grid\_conv} objects}{12}{subsubsection.3.3.2} \contentsline {section}{\numberline {4}Multi-flavour grids and convolutions}{13}{section.4} \contentsline {subsection}{\numberline {4.1}Full-flavour PDFs and flavour representations}{13}{subsection.4.1} \contentsline {subsubsection}{\numberline {4.1.1}Human representation.}{14}{subsubsection.4.1.1} \contentsline {subsubsection}{\numberline {4.1.2}Evolution representation.}{16}{subsubsection.4.1.2} \contentsline {subsection}{\numberline {4.2}Splitting function matrices}{17}{subsection.4.2} \contentsline {subsubsection}{\numberline {4.2.1}Derived splitting matrices}{18}{subsubsection.4.2.1} \contentsline {subsection}{\numberline {4.3}The DGLAP convolution components}{19}{subsection.4.3} \contentsline {subsubsection}{\numberline {4.3.1}QCD constants}{19}{subsubsection.4.3.1} \contentsline {subsubsection}{\numberline {4.3.2}DGLAP splitting matrices}{20}{subsubsection.4.3.2} \contentsline {subsubsection}{\numberline {4.3.3}Mass threshold matrices}{22}{subsubsection.4.3.3} \contentsline {subsubsection}{\numberline {4.3.4}Putting it together: \texttt {dglap\_holder}}{23}{subsubsection.4.3.4} \contentsline {section}{\numberline {5}Renormalisation Group Evolution}{24}{section.5} \contentsline {subsection}{\numberline {5.1}Running coupling}{25}{subsection.5.1} \contentsline {subsection}{\numberline {5.2}DGLAP evolution}{26}{subsection.5.2} \contentsline {subsubsection}{\numberline {5.2.1}Direct evolution}{26}{subsubsection.5.2.1} \contentsline {subsubsection}{\numberline {5.2.2}Precomputed evolution and the \texttt {evln\_operator}}{27}{subsubsection.5.2.2} \contentsline {section}{\numberline {6}Tabulated PDFs}{28}{section.6} \contentsline {subsection}{\numberline {6.1}Preparing a table}{28}{subsection.6.1} \contentsline {subsection}{\numberline {6.2}Accessing a table}{30}{subsection.6.2} \contentsline {section}{\numberline {7}Vanilla interface}{31}{section.7} \contentsline {subsection}{\numberline {7.1}Initialisation}{31}{subsection.7.1} \contentsline {subsection}{\numberline {7.2}Usage}{32}{subsection.7.2} \contentsline {section}{\numberline {8}Benchmarks}{34}{section.8} \contentsline {subsection}{\numberline {8.1}Accuracy}{34}{subsection.8.1} \contentsline {subsection}{\numberline {8.2}Timing}{38}{subsection.8.2} \contentsline {section}{\numberline {9}Conclusions}{40}{section.9} \contentsline {section}{\numberline {A}Example program}{41}{section.A} \contentsline {section}{\numberline {B}Useful tips on fortran\nobreakspace {}95}{44}{section.B} \contentsline {paragraph}{Free form.}{44}{section*.3} \contentsline {paragraph}{Modules, and features relating to arrays.}{44}{section*.4} \contentsline {paragraph}{Dynamic memory allocation, pointers.}{46}{section*.5} \contentsline {paragraph}{Derived types.}{47}{section*.6} \contentsline {paragraph}{Operator overloading}{47}{section*.7} \contentsline {paragraph}{Floating point precision:}{48}{section*.8} \contentsline {paragraph}{Optional and keyword arguments}{49}{section*.9}