This chapter introduces general concepts on how input and output data are organized within JCMsuite. For this purpose, the major tools JCMsolve and JCMgeo of the JCMsuite package may be regarded as command line tools which transform certain input files into one or several output files. Any JCM input file (as well as the output files) has the suffix .jcm or .jcmp. The input files are called .jcm files regardless of the extra ‘p’. Valid .jcm input files have to match a strict format, or schema (for details see Input Schema). It is important for the user to know the input schema and to know how it is interpreted by the solver.

The JCMsuite input structure is general enough to capture complicated geometries, as well as complicated physical situations. For instance, when simulating a modern photonic crystal device, it may be necessary to specify hundreds of individually shaped cells, to account for stress-induced birefringence and to model a complex illumination setup. It comes without saying that the corresponding JCM input files exhibit an accordant complexity.

To deal with this complexity it is the aim of JCMsuite to support the usage of popular scripting languages such as Python or Matlab®. For doing so, it is possible to enrich the original .jcm input files with embedded scripting blocks. This concept is called embedded scripting, and the so extended input files carry the suffices .jcmt or .jcmpt. The additional character ‘t’ stands for template, since traditional these input files were only used for simple parameter substitutions. The .jcmt files are pre-processed by the underlying scripting language to generate the proprietary .jcm. So, the embedded scripting support may be seen as supplemental tool which helps to create and to manage large .jcm input files.