Problem specification format (MIF)

MIF 1.1

`#`

MIF x.y'', where x.y represents the format revision
number. (There was a MIF 1.0 format, but it was never part of a
released version of OOMMF.)
After the format identifier line, any line ending in a backslash,
``\`

', is joined to the succeeding line before any other processing
is performed. Lines beginning with a ``#`

' character are comments
and are ignored. Blank lines are also ignored.

All other lines must consist of a *Record Identifier* followed by
a parameter list. The Record Identifier is separated from the
parameter list by one or more `:' and/or `=' characters. Whitespace
and case is ignored in the Record Identifier field.

The parameter list must be a proper Tcl list. The
parameters are parsed (broken into separate elements) following normal
Tcl rules; in short, items are separated by whitespace, except as
grouped by double quotes and curly braces. The grouping characters are
removed during parsing. Any ``#`' character that is found outside of
any grouping mechanism is interpreted as a comment start character. The
``#`' and all following characters on that line are interpreted as a
comment.

Order of the records in a MIF 1.1 file is unimportant, except as
explicitly stated below. If two or more lines contain the same Record
Identifier, then the last one takes precedence
(except for Field Range records, of which there may be several active).
All records are required unless listed as optional. Some of these
record types are not yet supported by **mmProbEd**, however your may
edit a MIF 1.1 file by hand and supply it to
**mmSolve2D**
using
**FileSource**.

For convenience, the Record Identifier tags are organized into several
groups; these groups correspond to the buttons presented by
**mmProbEd**. We follow this convention below.

This is a convenience entry for`#`Material Name:**mmProbEd**; inside the MIF 1.1 file it is a comment line. It relates a symbolic name (e.g., Iron) to specific values to the next 4 items. Ignored by solvers.**Ms:**Saturation magnetization in A/m.**A:**Exchange stiffness in J/m.**K1:**Crystalline anisotropy constant in J/m^{3}. If*K*1 > 0, then the anisotropy axis (or axes) is an easy axis; if*K*1 < 0 then the anisotropy axis is a hard axis.**Anisotropy Type:**Crystalline anisotropy type; One of < uniaxial | cubic >.**Anisotropy Dir1:**Directional cosines of first crystalline anisotropy axis, taken with respect to the coordinate axes (3 numbers). Optional; Default is 1 0 0 (x-axis).**Anisotropy Dir2:**Directional cosines of second crystalline anisotropy axis, taken with respect to the coordinate axes (3 numbers). Optional; Default is 0 1 0 (y-axis).

For uniaxial materials it suffices to specify only Anisotropy Dir1. For cubic materials one should also specify Anisotropy Dir2; the third axis direction will be calculated as the cross product of the first two. The anisotropy directions will be automatically normalized if necessary, so for example 1 1 1 is valid input (it will be modified to .5774 .5774 .5774). For cubic materials, Dir2 will be adjusted to be perpendicular to Dir1 (by subtracting out the component parallel to Dir1).**Anisotropy Init:**Method to use to set up directions of anisotropy axes, as a function of spatial location; This is a generalization of the Anisotropy Dir1/2 records. The value for this record should be one of < Constant | UniformXY | UniformS2 >. Constant uses the values specified for Anisotropy Dir1 and Dir2, with no dispersion. UniformXY ignores the values given for Anisotropy Dir1 and Dir2, and randomly varies the anisotropy directions uniformly in the xy-plane. UniformS2 is similar, but randomly varies the anisotropy directions uniformly on the unit sphere (*S*^{2}). This record is optional; the default value is Constant.**Edge K1:**Anisotropy constant similar to crystalline anisotropy constant K1 described above, but applied only along the edge surface of the part. This is a uniaxial anisotropy, directed along the normal to the boundary surface. Units are J/m^{3}, with positive values making the surface normal an easy axis, and negative values making the surface an easy plane. The default value for Edge K1 is 0, which disables the term.**Do Precess:**If 1, then enable the precession term in the Landau-Lifshitz ODE. If 0, then do pure damping only. (Optional; default value is 1.)**Gyratio:**The gyromagnetic ratio, in m/(A.s). This is optional, with default value of 2.21e5. See the discussion of the Landau-Lifshitz ODE under the Damp Coef record identifier description.**Damp Coef:**The ODE solver in OOMMF integrates the Landau-Lifshitz equation, written as

is the gyromagnetic ratio (in m/(A.s)),

The last is specified by the ``Damp Coef'' entry in the MIF 1.1 file. If not specified, a default value of 0.5 is used, which allows the solver to converge in a reasonable number of iterations. Physical materials will typically have a damping coefficient in the range 0.004 to 0.15. The solver engine

is the damping coefficient (dimensionless).**mmSolve2D**requires a non-zero damping coefficient.

**Demag Type:**Specify algorithm used to calculate self-magnetostatic (demagnetization) field. Must be one of**ConstMag:**Calculates the*average*field in each cell under the assumption that the magnetization is constant in each cell, using formulae from [12]. (The other demag options calculate the field at the center of each cell.)**3dSlab:**Calculate the in-plane field components using offset blocks of constant (volume) charge. Details are given in [3]. Field components parallel to the*z*-axis are calculated using squares of constant (surface) charge on the upper and lower surfaces of the sample.**3dCharge:**Calculate the in-plane field component using rectangles of constant (surface) charge on each cell. This is equivalent to assuming constant magnetization in each cell. The*z*-components of the field are calculated in the same manner as for the 3dSlab approach.**FastPipe:**Algorithm suitable for simulations that have infinite extent in the*z*-direction. This is a 2D version of the 3dSlab algorithm.**None:**No demagnetization. Fastest but least accurate method.`:-}`

All of these algorithms except FastPipe and None require that the Part Thickness (cf. the Part Geometry section) be set. All algorithms use Fast Fourier Transform (FFT) techniques to accelerate the calculations.

**Part Width:**Nominal part width (*x*-dimension) in meters. Should be an integral multiple of Cell Size.**Part Height:**Nominal part height (*y*-dimension) in meters. Should be an integral multiple of Cell Size.**Part Thickness:**Part thickness (*z*-dimension) in meters. Required for 3D demag kernels.**Cell Size:**In-plane (*xy*-plane) edge dimension of base calculation cell. This cell is a rectangular brick, with square in-plane cross-section and thickness given by Part Thickness. N.B.: Part Width and Part Height should be integral multiples of Cell Size. Part Width and Part Height will be automatically adjusted slightly (up to 0.01%) to meet this condition (affecting a small change to the problem), but if the required adjustment is too large then the problem specification is considered to be invalid, and the solver will signal an error.**Part Shape:**Optional. Part shape in the*xy*-plane; must be one of the following:**Rectangle**

The sample fills the area specified by Part Width and Part Height. (Default.)**Ellipse**

The sample (or the magnetically active portion thereof) is an ellipse inscribed into the rectangular area specified by Part Width and Part Height.**Ellipsoid**

Similar to the Ellipse shape, but the part thickness is varied to simulate an ellipsoid, with axis lengths of Part Width, Part Height and Part Thickness.**Oval r**

Shape is a rounded rectangle, where each corner is replaced by a quarter circle with radius*r*, where 0 < =*r*< = 1 is relative to the half-width of the rectangle.**Pyramid overhang**

Shape is a truncated pyramid, with ramp transition base width (overhang) specified in meters.**Mask filename**

Shape and thickness are determined by a bitmap file, the name of which is specified as the second parameter. The given filename must be accessible to the solver application. At present the bitmap file must be in either the PPM (portable pixmap), GIF, or BMP formats. (Formats other than the PPM P3 (text) format may be handled by spawning an**any2ppm**subprocess.) The bitmap will be spatially scaled as necessary to fit the simulation. White areas of the bitmap are interpreted as being non-magnetic (or having 0 thickness); all other areas are assumed to be composed of the material specified in the ``Material Parameters'' section. Thickness is determined by the relative darkness of the pixels in the bitmap. Black pixels are given full nominal thickness (specified by the ``Part Thickness'' parameter above), and gray pixels are linearly mapped to a thickness between the nominal thickness and 0.In general, bitmap pixel values are converted to a thickness relative to the nominal thickness by the formula 1-(R+G+B)/(3M), where R, G and B are the magnitudes of the red, green and blue components, respectively, and M is the maximum allowed component magnitude. For example, black has R=G=B=0, so the relative thickness is 1, and white has R=G=B=M, so the relative thickness is 0.

**Init Mag:**Name of routine to use to initialize the simulation magnetization directions (as a function of position), and routine parameters, if any. Optional, with default Random. The list of routines is long, and it is easy to add new ones. See the filefor details. A few of the more useful routines are:**maginit.cc****Random**

Random directions on the unit sphere. This is somewhat like a quenched thermal demagnetized state.**Uniform theta phi**

Uniform magnetization in the direction indicated by the two additional parameters, theta and phi, where the first is the angle from the*z*-axis (in degrees), and the second is the angle from the*x*-axis (in degrees) of the projection onto the*xy*-plane.**Vortex**

Fits an idealized vortex about the center of the sample.**avfFile filename**

The second parameter specifies an OVF/VIO (i.e., ``any'' vector field) file to use to initialize the magnetization. The grid in the input file will be scaled as necessary to fit the grid in the current simulation. The file must be accessible to the intended solver application.

**Experiment parameters
**

The following records specify the applied field schedule:

**Field Range:**Specifies a range of applied fields that are stepped though in a linear manner. The parameter list should be 7 numbers, followed by optional control point (stopping criteria) specifications. The 7 required fields are the begin field Bx By Bz in Tesla, the end field Bx By Bz in Tesla, and an integer number of steps (intervals) to take between the begin and end fields (inclusive). Use as many Field Range records as necessary--they will be stepped through in order of appearance. If the step count is 0, then the end field is ignored and only the begin field is applied. If the step count is larger than 0, and the begin field is the same as the last field from the previous range, then the begin field is not repeated.The optional control point specs determine the conditions that cause the applied field to be stepped, or more precisely, ends the simulation of the magnetization evolution for the current applied field. The control point specs are specified as

*-type value*pairs. There are 3 recognized control point types:**-torque**,**-time**, and**-iteration**. If a -torque pair is given, then the simulation at the current applied field is ended when |**m**×**h**| (i.e., |**M**×**H**|/*M*_{s}^{2}) at all spins in the simulation is smaller than the specified -torque value (dimensionless). If a -time pair is given, then the simulation at the current field is ended when the elapsed simulation time*for the current field step*reaches the specified -time value (in seconds). Similarly, an -iteration pair steps the applied field when the iteration count for the current field step reaches the -iteration value. If multiple control point specs are given, then the applied field is advanced when any one of the specs is met. If no control point specs are given on a range line, then the**Default Control Point Spec**is used.For example, consider the following Field Range line:

Field Range: 0 0 0 0.05 0 0 5 -torque 1e-5 -time 1e-9

This specifies 6 applied field values, (0,0,0), (0.01,0,0), (0.02,0,0), ..., (0.05,0,0) (in Tesla), with the advancement from one to the next occurring whenever |

**m**×**h**| is smaller than 1e-5 for all spins, or when 1 nanosecond (simulation time) has elapsed at the current field. (If -torque was not specified, then the applied field would be stepped at 1, 2, 3 4 and 5 ns in simulation time.)This Field Range record is optional, with a default value of 0 0 0 0 0 0 0.

**Default Control Point Spec:**List of control point*-type value*pairs to use as stepping criteria for any field range with no control point specs. This is a generalization of and replacement for the*Converge |mxh| Value*record. Optional, with default ``-torque 1e-5.''**Field Type:**Applied (external) field routine and parameters, if any. This is optional, with default Uniform. At most one record of this type is allowed, but the Multi type may be used to apply a collection of fields. The nominal applied field (NAF) is stepped through the Field Ranges described above, and is made available to the external field routines which use or ignore it as appropriate.

The following Field Type routines are available:**Uniform**

Applied field is uniform with value specified by the NAF.**Ribbon relcharge x0 y0 x1 y1 height**

Charge ``Ribbon,'' lying perpendicular to the*xy*-plane. Here relcharge is the charge strength relative to Ms, and (x0,y0), (x1,y1) are the endpoints of the ribbon (in meters). The ribbon extends height/2 above and below the calculation plane. This routine ignores the NAF.**Tie rfx rfy rfz x0 y0 x1 y1 ribwidth**

The points (x0,y0) and (x1,y1) define (in meters) the endpoints of the center spine of a rectangular ribbon of width ribwidth lying in the*xy*-plane. The cells with sample point inside this rectangle see an applied field of (rfx,rfy,rfz), in units relative to Ms. (If the field is large, then the magnetizations in the rectangle will be ``tied'' to the direction of that field.) This routine ignores the NAF.**OneFile filename multiplier**

Read B field in from a file. Each value in the file is multiplied by the ``multiplier'' value on input. This makes it simple to reverse field direction (use -1 for the multiplier), or to convert H fields to B fields (use 1.256637e-6). The input file may be any of the vector field file types recognized by**mmDisp**. The input dimensions will be scaled as necessary to fit the simulation grid, with zeroth order interpolation as necessary. This routine ignores the NAF.**FileSeq filename procname multiplier**

This is a generalization of the OneFile routine that reads in fields from a sequence of files. Here ``filename'' is the name of a file containing Tcl code to be sourced during problem initialization, and ``procname'' is the name of a Tcl procedure defined in filename, which takes the nominal B field components and field step count values as imports (4 values total), and returns the name of the vector field file that should be used as the applied B field for that field step.**Multi routinecount**`\`

param1count name1 param1 param2 ...`\`

param2count name2 param1 param2 ...`\`

...

Allows a conglomeration of several field type routines. All entries must be on the same logical line, i.e., end physical lines with '`\`

' continuation characters as necessary. Here routinecount is the number of routines, and param1count is the number parameters (including name1) needed by the first routine, etc.

**Base Output Filename:**Default base name used to construct output filenames.**Magnetization Output Format:**Format to use in the OVF data block for exported magnetization files. Should be one of ``binary 4'' (default), ``binary 8'', or ``text*format-spec*'', where*format-spec*is a C`printf`-style format code (default is`¨%`).`#`.17g¨**Total Field Output Format:**Analogous to the Magnetization Output Format, but for total field output files.

**Converge**Nominal value to use as a stopping criterion: When**|**mxh**|**Value:**|**(i.e.,**m**×**h**|**|**) at all spins in the simulation is smaller than this value, it is assumed that a relaxed (equilibrium) state has been reached for the current applied field. This is a dimensionless value.**M**×**H**|/*M*_{s}^{2}

**NOTE:**This Record Identifier is deprecated. Use*Default Control Point Spec*instead.**Randomizer Seed:**Value with which to seed random number generator. Optional. Default value is 0, which uses the system clock to generate a semi-random seed.**Max Time Step:**Limit the maximum ODE step size to no larger than this amount, in seconds. Optional.**Min Time Step:**Limit the minimum ODE step size to no less than this amount, in seconds. Optional.**User Comment:**Free-form comment string that may be used for problem identification. Optional.

# MIF 1.1 # # All units are SI. # ####################### MATERIAL PARAMETERS ############################ Ms: 800e3 # Saturation magnetization in A/m. A: 13e-12 # Exchange stiffness in J/m. K1: 0.5e3 # Anisotropy constant in J/m^3. Anisotropy Type: uniaxial # One of <uniaxial|cubic>. Anisotropy Dir1: 1 0 0 # Directional cosines wrt to coordinate axes ####################### DEMAG SPECIFICATION ############################ Demag Type: ConstMag # One of <ConstMag|3dSlab|2dSlab|3dCharge|FastPipe|None>. ########################## PART GEOMETRY ############################### Part Width: 0.25e-6 # Nominal part width in m Part Height: 1.0e-6 # Nominal part height in m Part Thickness: 1e-9 # Part thickness in m. Cell Size: 8.1e-9 # Cell size in m. #Part Shape: # One of <Rectangle|Ellipse|Oval|Mask>. Optional. ###################### INITIAL MAGNETIZATION ########################### Init Mag: Uniform 90 45 # Initial magnetization routine and parameters ###################### EXPERIMENT PARAMETERS ########################### Field Range: -.05 -.01 0. .05 .01 0. 100 # Start_field Stop_field Steps Field Range: .05 .01 0. -.05 -.01 0. 100 Field Type: Multi 4 \ 7 Ribbon 1 0 1.0e-6 0.25e-6 1.0e-6 1e-9 \ 7 Ribbon 1 0 0 0.25e-6 0 1e-9 \ 9 Tie 100 0 0 0.12e-6 0.5e-6 0.13e-6 0.5e-6 8.1e-9 \ 1 Uniform # The above positions ribbons of positive charge along the upper # and lower edges with strength Ms, applies a large (100 Ms) field # to the center cell, and also applies a uniform field across the # sample stepped from (-.05,-.01,0.) to (.05,.01,0.) (Tesla), and # back, in approximately 0.001 T steps. Default Control Point Spec: -torque 1e-6 # Assume equilibrium has been # reached, and step the applied field, when the reduced torque |mxh| # drops below 1e-6. ###################### OUTPUT SPECIFICATIONS ########################### Base Output Filename: samplerun Magnetization Output Format: binary 8 # Save magnetization states # in binary format with full (8-byte) precision. ########################## MISCELLANEOUS ############################### Randomizer Seed: 1 # Value to seed random number generator with. User Comment: This is an example MIF 1.1 file, with lots of comments.

Figure 4:
Example MIF 1.1 file.
(Description.)

MIF 2.0

A sample MIF 2.0 file is included below. The first line of a MIF file must be of the
form ```#`

MIF x.y'', where x.y represents the format revision
number, here 2.0. Unlike MIF 1.1 files, the structure of MIF 2.0
files are governed by the requirement that they be valid Tcl scripts.
During processing MIF 2.0 files are evaluated inside a Tcl safe
interpreter. Safe interpreters disable certain commands (for example,
disk input/output), but otherwise the full power of the Tcl scripting
language is available for use inside a MIF 2.0 file. Two special
commands, `Specify` and `Miscellaneous`, are used to communicate
to the solver the details of the problem to be solved.

An **OXS** simulation is built as a collection of `Oxs_Ext` (OXS
Extension) objects. Each `Oxs_Ext` object is specified and
initialized in the input MIF 2.0 file using the `Specify` command. The
`Specify` command takes two arguments: the name of the `Oxs_Ext`
object to create, and an initialization string which is passed on to the
`Oxs_Ext` object during its construction. The objects are created
in the order in which they appear in the MIF file, so order is
important in some cases. In particular, if one `Oxs_Ext` object
refers to another in its initialization string, then the referred to
object must precede the referrer in the MIF file.

Here is a simple `Specify` block:

Specify Oxs_EulerEvolve:foo { alpha 0.5 start_dm 0.01 }The name of the new

The second argument to the `Specify` command is an arbitrary string
that is interpreted by the new `Oxs_Ext` (child) object in its
constructor. The format of this string is up to the designer of the
child class, but it is recommended that the string be structured as a
Tcl list with an even number of elements, with each pair consisting of
a key + value pair. This is the format followed by all `Oxs_Ext`
classes released by the OOMMF team. (Refer to the
**Oxsii** documentation for more details on the
individual `Oxs_Ext` child
classes.)

In the above example, the initialization string consists of two key +
value pairs, ``alpha 0.5'' and ``start_dm 0.01''. The first specifies
that the damping parameter in the Landau-Lifshitz ODE is 0.5.
The second specifies the initial step size for the integration routine.
Interested parties should refer to a Tcl programming reference (e.g.,
[15]) for details on forming a proper Tcl list, but in this
example the list as a whole is set off with curly braces (```{`

''
and ```}`

''), and individual elements are white space delimited.

Sometimes the value portion of a key + value pair will itself be a list, as in this next example:

Specify Oxs_RectangularMesh:mesh { cellsize {10e-9 10e-9 10e-9} atlas Oxs_SectionAtlas:WorldAtlas }Here the value associated with ``cellsize'' is a list of 3 elements (the sampling rate along each of the coordinate axes, in meters). Notice also that the ``atlas'' value refers to an earlier

A `Specify` block may also include embedded `Oxs_Ext` objects.
This is frequently used to initialize a spatially varying quantity. For
example,

Specify Oxs_UniaxialAnisotropy { axis { Oxs_RandomVectorFieldInit { min_norm 1 max_norm 1 } } K1 { Oxs_UniformScalarFieldInit { value 530e3 } } }This magneto-crystalline anisotropy object has a cell-wise randomly distributed easy axis. To initialize its internal data structure,

The `Oxs_UniaxialAnisotropy` class also supports cell-wise varying
K1, so the value associated with ``K1'' is another embedded
`Oxs_Ext` object. In this particular example, however, K1 is
uniform throughout the simulation region, so the trivial
`Oxs_UniformScalarFieldInit` class is used for initialization (to
the value
530e3 J/m^3).

This concludes a brief overview of the `Specify` block command and
structure. Because the interpretation of the initialization string in
the `Specify` block is left to the constructed object, the MIF 2.0
format is freely extensible. This also means that one must refer to the
documentation of each `Oxs_Ext` child class to know how to interpret
the corresponding initialization string. Details on the
standard `Oxs_Ext` child classes are included with the
**Oxsii** documentation.

The `Miscellaneous` block is intended to provide to the solver any
information that does not fit naturally into one of the `Specify`
blocks. This is intended mainly for development purposes, and may be
deprecated in the future.

The content of the `Miscellaneous` block is structured as a Tcl list with an even number of elements, consisting of key + value pairs.
The only key currently supported is `basename`; the associated value
is used as a base for output name construction by some
of the data output routines. There is an example `Miscellaneous`
block in the sample MIF 2.0 file included below.

# MIF 2.0 # # All units are SI. # # This file must be a valid Tcl script. # # Individual Oxs_Ext objects are loaded and initialized # via Specify command blocks. The following block defines # the extents (in meters) of the volume to be modeled. # The prefix 'Oxs_SectionAtlas' specifies the type # of Oxs_Ext object to create, and the suffix ':WorldAtlas' is # the name assigned to this particular instance. Each object # created by a Specify command must have a unique full name # (here 'Oxs_SectionAtlas:WorldAtlas'). If the suffix is # not explicitly given, then the default ':' is automatically # assigned. References may be made to either the full name, # or the shorter suffix instance name (here ':WorldAtlas') if the # latter is unique. See the Oxs_StandardDriver block for some # reference examples. Specify Oxs_SectionAtlas:WorldAtlas { top { Oxs_RectangularSection { xrange {0 500e-9} yrange {0 250e-9} zrange {3e-9 9e-9} } } bottom { Oxs_RectangularSection { xrange {0 500e-9} yrange {0 250e-9} zrange {0 3e-9} } } world { Oxs_RectangularSection { xrange {0 500e-9} yrange {0 250e-9} zrange {0 9e-9} } } } # The Oxs_RectangularMesh object is initialized with the # discretization cell size (in meters). Specify Oxs_RectangularMesh:mesh { cellsize {10e-9 10e-9 10e-9} atlas :WorldAtlas } # Magnetocrystalline anisotropy block. # Oxs_UniformScalarFieldInit and Oxs_UniformVectorFieldInit # are examples of embedded Oxs_Ext objects used to provide # internal initialization of the Oxs_UniaxialAnisotropy # object. Specify Oxs_UniaxialAnisotropy { K1 { Oxs_UniformScalarFieldInit { value 530e3 } } axis { Oxs_RandomVectorFieldInit { min_norm 1 max_norm 1 } } } # Exchange energy with spatially varying exchange # coefficient A. Inside the top layer (refer to # Oxs_SectionAtlas:WorldAtlas above) A = 13e-12 J/m, # in the bottom layer A = 30e-12 J/m (taken from the # default_A value), and the interlayer coupling is # A = 20e-12 J/m. Specify Oxs_Exchange6Ngbr { default_A 30e-12 atlas :WorldAtlas A { { top top 13e-12 } { top bottom 20e-12 } } } # Define a couple of constants for later use. set PI [expr {4*atan(1.)}] set MU0 [expr {4*$PI*1e-7}] # The Oxs_UZeeman class is initialized with field ranges # in A/m. The following block uses the Hscale option to # allow inputs in mT. To make the $mu0 subsitution active, # we enclose the block with double quotes ("") instead of # curly braces ({}). (There are other ways to achieve this.) Specify Oxs_UZeeman:AppliedField " Hscale [expr 0.001/$MU0] Hrange { { 0 0 0 10 0 0 2 } { 10 0 0 -10 0 0 2 } { 0 0 0 0 10 0 4 } { 1 1 1 5 5 5 0 } } " # Enable demagnetization (stray) field computation. # This block takes no parameters. Specify Oxs_Demag {} # First order Euler ODE solver Specify Oxs_EulerEvolve { alpha 0.5 start_dm 0.01 } # The following procedure is used to initialize the initial # spin configuration in the Oxs_StandardDriver block. proc UpDownSpin { x y z xmin ymin zmin xmax ymax zmax } { if { $x < 0.55*$xmin + 0.45*$xmax } { return "0 1 0" } elseif { $x > 0.45*$xmin + 0.55*$xmax } { return "0 -1 0" } else { return "0 0 1" } } Specify Oxs_StandardDriver { evolver Oxs_EulerEvolve min_timestep 1e-18 max_timestep 1e-9 stopping_dm_dt 0.01 mesh :mesh number_of_stages 1 stage_iteration_limit 0 total_iteration_limit 0 Ms { Oxs_UniformScalarFieldInit { value 8e5 } } m0 { Oxs_ScriptVectorFieldInit { script {UpDownSpin} norm 1 } } } # Block specifying various miscellaneous data Miscellaneous { basename test }

Figure 5:
Example MIF 2.0 file.
(Description.)

January 22, 2001