diff --git a/integrators/integrator.py b/integrators/integrator.py
index 45fd016b09b15063fea45c721009b2269fdc11e0..340635bc7824904afe0d567ad6dab5060cb25bcf 100644
--- a/integrators/integrator.py
+++ b/integrators/integrator.py
@@ -4,13 +4,42 @@
class Integrator:
+ '''
+ All other integrator classes, e.g., TPS1 and MPS derive from this class.
+ The methods of this class serve as an interface, mostly for changing
+ specific parameters, e.g., A, Ms, ...
+ or OutputOptions, most importantly the following methods:
+ .SetResultsFolder()
+ .SaveMagnetization()
+ .SaveMesh()
+ .RecordExternalFieldAt()
+ .RecordMagnetization()
+ --> see their individual help docs for further info
+ or for high-level control over the integration:
+ .Integrate()
+
+ '''
#------------------------------------------------------------------------------#
def __init__(self, scheme, geometry, parameters=None, output=None, numthreads = 1):
-
+ '''
+ Initializes the Integrator.
+ scheme = [TPS1, TPS2, TPS2AB, MPS, MPSAB]
+ geometry = [instance of the Geometry class]
+ parameters = [instance of the parameters class]
+ output = [optional, instance of the OutputOptions class]
+ numthreads = [int];
+ - only effective if neither ngsolve, bempp, mpi4py have been imported,
+ before the Integrator object is initialized.
+ - If importing one of the above cannot be avoided,
+ use the environment flags (for 4 threads):
+ - OMP_NUM_THREADS=4
+ - BEMPP_NUM_THREADS=4
+ - NGS_NUM_THREADS=4
+ '''
self._integrator = scheme(geometry, parameters, output, numthreads)
@@ -18,6 +47,15 @@ class Integrator:
def Integrate(self, duration=None, relax=False):
+ '''
+ starts integration.
+ - if duration [float] is specified --> for duration seconds
+ else from T_start to T_end
+ - if relax=True the following parameters are used:
+ - H_ext = None
+ - maxwellCoupling = "strayField"
+ - spintronicsCoupling = "none"
+ '''
self._integrator.Integrate(duration=duration, relax=relax)
@@ -25,6 +63,10 @@ class Integrator:
def SaveMagnetization(self, filename=None):
+ '''
+ filename ["string.vtk"]
+ - current magnetization state stored to filename as VTK-file
+ '''
self._integrator.SaveMagnetization(filename)
@@ -32,6 +74,11 @@ class Integrator:
def SaveMesh(self, filename=None):
+ '''
+ filename ["string.vol"]
+ - mesh will be stored as Netgen .vol-file
+ '''
+
self._integrator.SaveMesh(filename)
@@ -39,6 +86,10 @@ class Integrator:
def SetResultsFolder(self, foldername):
+ '''
+ foldername [string]
+ --> All results for this simulation will be stored in this folder
+ '''
self._integrator.SetResultsFolder(foldername)
@@ -241,6 +292,10 @@ class Integrator:
def RecordExternalFieldAt(self, value):
+ '''
+ value [(float, float, float)]
+ - external field will be recorded at given point in R^3
+ '''
self._integrator.RecordExternalFieldAt(value)
@@ -248,6 +303,12 @@ class Integrator:
def RecordMagnetization(self, record=True, maxwell=False, every=1.0e-09):
+ '''
+ record [True, False] ... whether VTK-files of magnetization are written.
+ maxwell [True, False] ... whether VTK-files of, e.g., the stray field
+ are written.
+ every [float] ... VTK-files written every, e.g., 1e-9 seconds
+ '''
self._integrator._RecordMagnetization(record, maxwell, every)