Design Definition File

The Design Definition File (DDF) is a developer-generated file that documents the result of the design engineering processes.

Design specification

Template given. Describe modules and hierarchy of modules. Also describes likely and unlikely changes to the code. Anticipated changes guide the design: ideally a change affects only one module

The design specification may need to be supplemented by a Module Interface Specification (MIS). More concrete in defining access routines and syntax, but still abstract in not defining how things are done.

Use of VECMA/SEAVEA as framework UQ by ensembles, active subspaces (from ref. [73]) and GPs for surrogates (from ref. [74]).

The proposed NEPTUNE development is of sufficient complexity that the production of code should be as automatic as as possible, and the ‘write once, use many times’ principle implies that the starting point for code generation will often be or Markdown format documents from the DJF or indeed DDF.

For NEPTUNE, the initial write should be in format representing an extension of the tabular layout used to generate Table 11.3, for conversion to Doxygen input format for documentation and C++ source, specifying:

  • • variable name, which for NEPTUNE should be generated from using substitutions set out in Table 11.1.

  • • brief description, to remind user what is the purpose of the variable

  • • units

    • – physical units should be SI, except eV for temperatures and mm for CAD inputs

    • – scale factors for extreme-valued fields, eg. \(10^{18}\) for number densities, or for quantised fields, eg. position expressed in units of separation of a uniform grid.

  • • default value(s) on input

  • • simple constraints on variable values

    • – whether real number or integer-valued

    • – range specification, eg. \(0 < n \leq 10\) if \(n\) must be a positive, small integer

  • • detailed description of what variable does, if not covered by group description.

  • • constraints in terms of other variables

Input variables are grouped according to the objects/classes which they help define.

smardda-misc illustrates how to produce software that auto-generates the equivalent of .h files to describe objects and and .cpp or .m files for

  • 1. setting default values of variables

  • 2. dumping inputs to .log text-files if required

  • 3. checking constraints on input variables

  • 4. saving acceptable values