Differences between MIF 2.2 and MIF 2.1 Formats

  1. The first line of a MIF 2.2 file must be “# MIF 2.2”.
  2. The basename, scalar_output_format and vector_field_output_format options to the Oxs_TimeDriver and Oxs_MinDriver objects are no longer supported. Instead, there is a new top-level extension command, SetOptions, where these options are declared. The SetOptions block also supports new options for controlling output formats, mesh types, and filenames.
  3. In the MIF 2.1 format, MIF files are processed in a two pass mode. During the first pass, Specify commands simply store the contents of the Specify blocks without creating any Oxs_Ext objects. The Oxs_Ext objects associated with each Specify block are created in the second pass from the data stored in the first pass. In the MIF 2.2 format, this is replaced with a one pass mode, where Oxs_Ext objects are created at the time that the Specify commands are parsed. This processing model is more intuitive for MIF file authors, but has two main consequences. The first is that in MIF 2.1 format files, Tcl procs that are used only inside Specify commands can be placed anywhere inside the MIF file (for example, commonly at the end), because they won't be called during the first pass. As long as they are defined at any point during the first pass, they will be available for use in the second pass. In contrast, in the MIF 2.2 format, Tcl procs definitions must generally be moved forward, before any references in Specify blocks. The second consequence is that Oxs_Ext objects defined by Specify commands are available for use inside the MIF file. This allows support for the new commands discussed next.


OOMMF Documentation Team
September 27, 2024