Input Schema

The input schema declares all possible settings of the input data structures.

The previous chapter Data Structure has introduced the common data structure of the .jcm input files: It consists of a data tree built up by nested sections containing key-value lists of primitive data types:

Section1 {
  Key1 = <Data1>
  Key2 = <Data2>
  Section11 {
    Key11_1 = <Data11_1>
  Section12 {

Here, Section1, Section11 are section names and Key1, Key2, etc., are names of primitives. We commonly call them “tags”. The assigned data <Data1>, <Data2>, etc., must be of one of the primitive types as listed here.

The data trees contained in the JCM input files must match a schema to be acceptable for JCMsuite. The input schema has the following function:

  • Manifestation of all allowed tags within a section
  • Specifying the role of a tag, e.g., if it is a (sub)-section or a primitive of a specific type
  • Declaration of default values for primitives
  • Setting the allowed range for a primitive, for example:
    • Restriction of a real number parameter to a certain interval
    • Listing the items of an enumeration primitive
    • Setting the shape of a vector or matrix
  • Establishing rules concerning the appearance or the interdependency of tags:
    • A tag may appear multiple times or not. In the latter case is called “simple”.
    • A tag may be optional
    • One tag may exclude another: When the first tag is set it is not allowed to set the other.
    • One tag may include another: When the first tag is set it is required to set the second tag as well.

The chapters project.jcmp, materials.jcm, boundary_conditions.jcm, sources.jcm, and , layout.jcm declare the input schema of JCMsolve and JCMgeo for the individual input files. Before browsing through these, it is advised to look into the next chapter: How to Use the Parameter Reference.