Reference Material

Conventions for Report Writing

The project has strict standards in respect of conventions even in reports that contain no code, ultimately to support the ‘write once, use many times’ concept, so that text may be cut, edited and pasted into source code, or indeed used safely to define variable names, constraints on their values and physical dimensions. Thus, since many compilers support only ASCII characters, only ASCII is allowed in reports. Similarly, very long lines (typically arising from MS Windows wordprocessing) should be split at the ends of sentences, and preferably so that maximum line length is \(120\) characters. A number of tools are available in tex/importools. Contributors may use their style of choice for both reports (and code) provided they follow systems that allow for automatic conversion to the conventions expected in the NEPTUNE repositories, and are prepared to help construct gitlab runners and github hooks to this end. However, it will be generally found easier to use and bibtex as indicated below.

For shorter documents it is acceptable to use Markdown in the ‘dialect’ defined by PANDOC, see Annex A of ref. [3]. Resulting .md files frequently convert straightforwardly to format, using the md2tex.bash script from tex/importools.

General textual issues

It is helpful to use newcommand for certain keywords where they have a special format or because the terminology is not fully established. Although some do not, most people do find variations in use of spelling, punctuation, capitalisation etc. to be irritating, and so the following conventions will be enforced where possible:

  • • use of newcommand for , viz. \papp and \exc instead of explicit proxyapp or mini-app and ExCALIBUR respectively

  • • punctuation, viz. eg.\ rather than e.g.

  • • hyphenation, generally to be avoided because may use it to break lines, viz. finite element rather than finite-element (or simply FE), opensource rather than open source, major exception is abbreviation of dimensions (below).

  • • capitalisation, eg. Exascale rather than exascale

  • • abbreviation of dimensions, 2-D and 3-D preferred to 2D and 3D or 2d and 3d

  • • spelling, UK English preferred, and ’-ise’ etc. preferred to ’-ize’

  • • no spaces between authors’ initials in bibtex files (see also Section 11.1)

  • • consistent usage of acronyms, employing the table of Section 11.2

  • • consistent usage of mathematical symbols, employing the table of Section 11.3

Citations

Regarding citations, those for unpublished reports MUST include a link to a website, such as arXiv, and it would be helpful if links to other open-access material were also given. Use of the following conventions for constructing the keys of citations should help avoid clashes:

  • 1. For published papers, use where possible an \(8\)-character alphanumeric for published papers, consisting of the first two letters of the first author’s name, the last two digits of the year in the Gregorian calendar, and the first \(4\) letters of the first significant word (ie. not ‘The’ or ‘On’) of the title, preserving capitalisations. Thus the paper ref. [97] by Bangerth and Heister, published in 2013 and entitled ‘What makes computational open source software libraries successful?’, has key ‘Ba13What’.

  • 2. Books and theses should be keyed with the full second-name(s) of the author(s) strung together without capitalisation, up to a limit of approx. \(30\) characters, using ‘etal’ to indicate any omitted author-names. As an example, the book by Rouson, Xia and Xu ref. [96] has key ‘rousonxiaxu’.

  • 3. If there are duplicates in different files, then preface each key with the name of the .bib file it is in, for other duplicates within a file, add ‘2’, ‘3’ etc. to the end of the key.

Software Compatibility

When discussing software in the text, the following conventions in are proposed:

  • Small capitals denote a package name, use {\textsc or abbreviation \F{

  • Italics denote a program name, use {\textit or abbreviation \I{

  • • Fixed width font denotes any code name or fragment which is not otherwise obviously source code, use {\texttt or abbreviation \T{

There is no need for special fonts if the object is identified by a suitable suffix, thus “_m" for a module containing executable code, “_h" or “.h" for an object description or namespace code, “.cpp" for name of file containing C++ source, “.exe" for an executable, etc. Similarly file suffices that imply a particular format or software for their interpretation, may simply be written with a leading stop, eg. “.html" and “.exe".

In order to ensure smooth transliteration from mathematical symbols to the names of the software variables, Table 11.1 lists the recommended two-character equivalents for symbols used in the definition of mathematical symbols.

Table 11.1: TWO CHARACTER EQUIVALENTS of symbols and commands.

aa

\(A\)

al

\(\alpha \)

ar

\(\rightarrow \)

as

\(*\)

bb

\(B\)

be

\(\beta \)

bl

\([\)

br

\(]\)

cc

\(C\)

ch

\(\chi \)

cl

:

cm

,

cs

;

dd

\(D\)

de

\(\delta \)

dl

\(\Delta \)

dq

"

ds

\ddot

dv

\(/\)

ee

\(E\)

el

\(\ell \)

ep

\(\epsilon \)

et

\(\eta \)

ff

\(F\)

ga

\(\gamma \)

gg

\(G\)

gm

\(\Gamma \)

gt

\(>\)

hh

\(H\)

ii

\(I\)

in

\(\infty \)

it

\(\iota \)

jj

\(J\)

ka

\(\kappa \)

kk

\(K\)

la

\(\lambda \)

ll

\(L\)

lm

\(\Lambda \)

lt

\(<\)

me

\(\omega \)

mg

\(\Omega \)

ml

\(\times \)

mm

\(M\)

mn

\(-\)

mu

\(\mu \)

n1

\(n_1\) etc.

nn

\(N\)

nu

\(\nu \)

o2

\boldmath

o3

\mathcal

o4

\mathsf

o5

\mathtt

o6

\mathbb

o7

\mathfrak

o8

\mathrm

ob

\bar

oh

\hat

oe

suffix

ol

preceding superfix

on

above

or

superfix

os

underneath

ow

prefix

pa

\(\|\)

pe

\(\perp \)

pf

\(\Phi \)

ph

\(\phi \)

pi

\(\pi \)

pj

\(\Psi \)

pl

{

pp

\(P\)

pr

}

ps

\(\psi \)

pt

\(\partial \)

pu

\(+\)

py

\(\Pi \)

qq

\(Q\)

rh

\(\rho \)

rr

\(R\)

sg

\(\Sigma \)

si

\(\sigma \)

sq

\('\)

ss

\(S\)

st

\(.\)

ta

\(\tau \)

te

\(\Theta \)

th

\(\theta \)

ti

\(~\)

tt

\(T\)

un

_

up

\(\upsilon \)

us

\(\Upsilon \)

uu

\(U\)

vb

\(|\)

ve

\(\varepsilon \)

vf

\(\varphi \)

vp

\(\varpi \)

vr

\(\varrho \)

vs

\(\varsigma \)

vt

\(\vartheta \)

vv

\(V\)

ww

\(W\)

xi

\(\xi \)

xj

\(\Xi \)

xx

\(X\)

yy

\(Y\)

ze

\(\zeta \)

zz

\(Z\)

See Section 4.3 for a guide explaining the reasons for the above choices.