<card> [ : <arglist> ] ;
that is, a valid card name, depending on its nature, may be followed
by a colon and by a list of (comma separated) arguments; it is always
terminated by a semicolon.
Statements are logically divided in blocks.
Each block is opened by a begin statement and it is closed
by an end statement:
begin: <block> ;
# block data
end: <block> ;
The valid blocks (and their sequence) is:
The data block at present contains the type of problem that is solved by the analysis. The most significant one is initial value.
The <problem> block takes the name of the problem defined in the data block; it contains all the information required by the integration method to perform the desired simulation regardless of the nature of the problem.
The control data block mostly contains information about the problem that is required to ensure that a consistent model will be generated.
The nodes block contains all the nodes required by the simulation. They are separated from the rest of the data for historical reasons, because the nodes are defined as the entities that make degrees of freedom available to the simulation, so they must exist before any element is generated.
The drivers block is optional. It may contain some special driver data.
Finally, the elements block contains all the elements. They are defined as the entities that generate equations using the degrees of freedom provided by the nodes.
A layout of a typical input file is:
begin: data;
# global simulation data
problem: initial value;
end: data;
begin: initial value;
# problem-dependent data
end: initial value;
begin: control data;
# global model data
end: control data;
begin: nodes;
# nodes
end: nodes;
begin: drivers;
# drivers
end: drivers;
begin: elements;
# elements
end: elements;