
thetaevolve has been developed based on the eulerevolve class from OOMMF 1.2a3.
It is unknown if thetaevolve will compile and be functional with earlier (or
later) versions of OOMMF.

Installation:

Copy thetaevolve.cc and thetaevolve.h into the directory /oommf/app/oxs/local 
and run "tclsh oommf.tcl pimake". Normally it should not be necessary
to run the distclean command and do a full recompilation of all classes.

Basic Principle:

To include the effect of temperature in the micromagnetic model, the well known
Landau-Lifshitz-Gilbert equation (LLG) is augmented by a highly irregular
fluctuating field, so the resulting equation is a stochastic differential
equation of the Langevin type.(cf. e.g. J.L. Garcia-Palacios andF.J. Lazaro, 
Phys. Rev. B Vol.58, 14937 for details) The fluctuating field is looked upon as 
white noise that has no correlation in time, space or in axis-direction (x,y,z).

Caveats:

Treating the thermal perturbations, which have a finite correlation time, as
white noise is allowed only if the actual correlation time is much smaller than
the response time of the system under study. These assumption may become wrong
for low temperatures and/or strong fields H_eff.
Concerning the chosen timestep, which is not variable but fixed in this
evolverclass, numerical stability has to be considered. That is, if the timestep
is set too big, the whole system will become unstable and start to oscillate,
or at even bigger timesteps end up in deterministic chaos. To prevent this, it
is advised to start a simulation with temperature set to zero (thetaevolve 
will use variable timesteps then) and check for the lower boundary of the
timesteps in this run. Choosing a timestep well below this value should be
safe.
For accurate numerical results (e.g. when trying to determine the
Curie-temperature of a system) the change of saturation magnetisation with
temperature has to be respected. It is not yet clear exactly how this is done
best, but it is clear that it must be done in some way. Otherwise good results
can only be expected for a density of just a single spin per cell.

Usage:

thetaevolve is to be used together with timedriver. Specify blocks are as
normal, only the name is "UHH_thetaevolve". For clarity you might want to have
a look at the enclosed thetademo.mif2 file.
thetaevolve provides the same outputs as eulerevolve and uses mostly the same
parameters.
"min-timestep" and "max_timestep" are no longer used and replaced by
"fixed_timestep" (in seconds), as constant timesteps are used with temperatures
above zero. The default value for "fixed_timestep" is 1e-16.
Also there are some specific additional parameters, first of all "temperature"
(in Kelvin) with default value 300. When temperature is set to zero thetaevolve
will act exactly like eulerevolve, i.e. variable timesteps depending on the
numerical error are used. This is thought of as an easy way to check how small
"fixed_timestep" has to be, to ensure (hopefully) numerical stability.
Random numbers for the fluctuating field are generated by a portable random
number generator that is part of the thetaevolve class. This shall ensure a high
level of security with respect to the period length of independent random
numbers (>1e18). Also this should make simulations exactly reproducable
independent of the platform used (provided identical mif-files are used).
This generator must be initialized with the seed parameter "uniform_seed".
Any integer from 0 to 714024 can be used as a unique seed. Other integers N
will produce streams identical with (N mod 714025). "uniform_seed" default value
is 1.
For those interested in stochastical integration a switch is provided to change
between Ito and Stratonovich calculus. The parameter is called "ito_calculus"
and its default value is 0 (use Stratonovich calculus). Normally there is no
need to change this parameter. Its sole purpose is comparison of the calculi.
Also, from a physical point of view, Stratonovich calculus is the correct one
and all preliminary work has been done based on this definition.

Contact:

olemcke@physnet.uni-hamburg.de
