Boris v3.4 Released

Boris v3.4 is now available for download.

List of changes:

  • Buffered disk write – tune with diskbufferlines command, but default of 100 should not need changing.
  • Can change number of significant figures for saving data to file and display – dataprecision command.
  • Monte Carlo algorithm for atomistic meshes: serial and parallel versions, CPU and GPU, standard and constrained. [JMMM 540, 168460 (2021)]
  • Allow modules update after every Monte Carlo step (mccomputefields).
  • Allow disabling of Monte Carlo iteration in given meshes.
  • Allow setting cone angle bounds for Monte Carlo algorithms.
  • Monte Carlo algorithm for micromagnetic meshes. [arXiv:2106.05593v2 (2021) – accepted, in press at JAP]
  • Each module can display its own effective field when selected (through Heff/Heff2/Heff12 display), and its energy density spatial dependence (through Ed/Ed2 new display fields).
  • Demag field evaluation speedup using polynomial extrapolation [arXiv:2107.06729v2 (2021)]
  • Biaxial anisotropy module (anibi)
  • Tensorial anisotropy module: can specify terms in anisotropy energy expansion up to any order and any combination of terms.
  • Can save average torques (mostly useful for atomistic simulations)
  • dp_getexactprofile can now also use a running average to build an averaged profile (e.g. for simulations with stochasticity), which can be read out later with dp_getaveragedprofile
  • dp_histogram now takes an optional macrocellsize value, which allows extracting histogram data after first averaging in macro cells. Useful for comparing atomistic to micromagnetic simulations.
  • dp_histogram made much faster, particularly when in CUDA mode, allowing building an average histogram efficiently (useful for atomistic to micromagnetic comparisons).
  • command buffer utility : can queue multiple commands in a buffer, which can be used in a data saving schedule to extract and save advanced processed data efficiently (e.g. speeds up spin wave simulations, averaged magnetization profiles, etc.)
  • new mxh_iter and dmdt_iter simulation stopping conditions: stop when either mxh (dmdt) or iter conditions reached
  • Demag kernel initialization can now be done entirely on the GPU (in double precision), resulting in several times faster initialization especially when many PBC images are used. Also important for multi-GPU workstations to avoid CPU bottleneck on initialization.
  • Significant speed optimization of averaging reductions for CUDA code (contention bottleneck found and removed).
  • Fixed “random” command so result is a magnetization direction distribution uniform on the unit sphere.
  • Simplified adaptive time step control to use a single tolerance value.
  • Enabled RK4 for stochastic equations.
  • Vector interfacial DMI module (can specify arbitrary DMI symmetry axis).
  • Homogeneous DMI contribution for 2-sublattice DMExchange module.
  • Get average value in simple or composite shape object : shape_get command (works for cuda 0 mode only, not yet for cuda 1 – to be finished and documented in next version)
  • Can now set applied field using ovf2 file (loadovf2field)
  • Standardized and simplified use of mesh names in commands with following principles:
    1. Should never have to change mesh focus in order to use a command to set or get a mesh-specific setting – this means several commands have been modified to take a mesh name as a parameter; meshfocus command is now purely display related and should not normally be needed in a Python script.
    2. If a mesh name is not specified for a command, then the currently focused mesh is used as default (but see below); however (see 1) now there’s always the option to specify the mesh name when needed.
    3. If a mesh name is not specified for a command, and the command is intuitively better suited to apply a setting to all meshes (e.g. setfield, addmodule etc.), then all meshes used. The intention is to simplify scripts for multi-mesh simulations.
    4. For single mesh simulations there should be no need to specify a mesh name if there is no ambiguity, thus mesh name now made optional for all commands where a default value can be used instead.
    5. Backwards compatibility maintained with no exceptions. Commands have been standardized so meshname should be given as first parameter, but will work the same irrespective of meshname parameter position now.
    Thus the general format is: command (meshname) …; meshname takes default value of focused mesh in most cases, else command applies to supermesh/all meshes.
  • File names now accept specifiers of the form %data%, where data is the name of any of the output data parameters, e.g. %iter%. Then %data% is replaced by the actual value at the time the command is executed, e.g. %iter% replaced by iteration number, etc. Useful for loading/saving sequences of files, especially when combined with command buffering facility.