# The structure of parameter files Most of the run-time behavior of ASPECT is driven by a parameter file that looks in essence like this: ```{literalinclude} ../../../../manual/cookbooks/overview/doc/structure.part.prm ``` Some parameters live at the top level, but most parameters are grouped into subsections. An input parameter file is therefore much like a file system: a few files live in the root directory; others are in a nested hierarchy of sub-directories. And just as with files, parameters have both a name (the thing to the left of the equals sign) and a content (what's to the right). All parameters you can list in this input file have been *declared* in ASPECT. What this means is that you can't just list anything in the input file, and expect that entries that are unknown are simply ignored. Rather, if your input file contains a line setting a parameter that is unknown, you will get an error message. Likewise, all declared parameters have a description of possible values associated with them - for example, some parameters must be non-negative integers (the number of initial refinement steps), can either be true or false (whether the computation should be resumed from a saved state), or can only be a single element from a selection (the name of the material model). If an entry in your input file doesn't satisfy these constraints, it will be rejected at the time of reading the file (and not when a part of the program actually accesses the value and the programmer has taken the time to also implement some error checking at this location). Finally, because parameters have been declared, you do not *need* to specify a parameter in the input file: if a parameter isn't listed, then the program will simply use the default provided when declaring the parameter. :::{note} In cases where a parameter requires a significant amount of text, you can end a line in the input file with a backslash. This indicates that the following line will simply continue to be part of the text of the current line, in the same way as the C/C++ preprocessor expands lines that end in backslashes. The underlying implementation always eats whitespace at the beginning of each continuing line, but not before the backslash. This means that the parameter file ``` set Some parameter = abc\ def ``` is equivalent to ``` set Some parameter = abcdef ``` that is, with no space between `abc` and `def` despite the leading whitespace at the beginning of the second line. If you do want space between these two parts, you need to add it before the backslash in the first of the two lines.