To manage large input files it is necessary to introduce clearly arranged structures and to support classification of variables. Therefore, the IDDL allows to group variables into so called sections, e.g.,
NumDefaults { directSolver = no; iterativeType = "BiCGStab"; linearAccuracy = 1e-11; }
In the example above the section name NumDefaults is followed by the section body, enclosed in braces, which may contain variables as well as further subsections. The user can define as many variables and sections as necessary to structure an input file.
Sections having a section body are enclosed in braces ({}). A semicolon (;) must not be given after the closing brace.
Like variable names, section names may only consist of letters, numbers or underscores (_) and the first character must not be a number. Section names are case sensitive.
Sections can be nested to an arbitrary depth, e.g.,
Section1 { a = 1; b = 2; Section1a { a = 3; c = 4; Section1b { b = 5; d = 6; } } } x = 7;
Section1 is a short section which consists of three elements (two variables a and b and a nested section named Section1a). On the other hand, Section1a consists of two variables a and c and a section named Section1b. It is to note that the variable a within Section1 and the variable a within Section1a are different variables. This also applies for variable b within Section1 and variable b within Section1b.
Variables defined outside of a section are called global variables (e.g., variable x in the example above).
Sections defined once cannot be reopened to append additional items.
Section2 { u1 = 12; } Section2 { u2 = 24; // Error! Opening Section2 a second time. }
This is necessary to prevent from splitting up a single section definition across several blocks, or even worse across several files.