imperrorcommand. The estimator has the task to decide which elements have to be refined. Currently five estimators are available.
The user can choose one of them by setting the variable
estimator to the
appropriate name. The tolerance has a different meaning for each estimator.
Its default value 0.5 can be changed using the variable
estimate is invoked without any arguments the value stored in the
tolerance will be handed over to the estimator. Else the value
given as an argument will override the variable
estimate invokes the estimator specified by
estimator, which will
mark all elements necessary.
If an irregular element would be selected, its father is
marked for regular refinement, because Bey's refinement algorithm
prohibits an irregular element being refined.
All leaf (i.e. unrefined) elements will be marked for regular refinement.
mark all provides a more convenient way to refine the whole
All elements whose error is greater than the given tolerance will be marked.
If the error of an element of the finest triangulation complies with , it is marked for regular refinement.
Those elements for which , where is the error of the current element and N the total number of finite elements, is true, are marked for regular refinement.
First the difference between the two magnetization vectors at the ends of each
edge of the current element is calculated.
The length of each of these six difference vectors is computed and finally
If the result is greater than the allowed
tolerance the element is marked
After execution of
estimate the desired elements are marked for
If too few or too many elements are marked or another estimator
estimate can be called again, which will first clear all marks
and evaluate the elements' errors again.
The refinement itself can be effected by the command
It will insert all necessary elements and vertices.
However, these newly inserted vertices contain no valid magnetization
It can be computed with
interpolate (implemented in
This command interpolates linearly between the magnetization vectors at the
ends of the edge which is bisected by the inserted vertex and stores
the result in the new vertex.
Finally, the length of the magnetization vector is changed to 1 if it is greater
than 10-20. Otherwise it remains unchanged, which leaves it in a rather
The magnetization vector can be very short under two circumstances.
Either the magnetization vectors that are used for the interpolation are
of almost equal
length and point in opposite directions or they are very short themselves.
In the first case the new vertex lies between two different domains in a domain
This could either be a Bloch wall (magnetization vector rotates in the plane of
the wall) or a Néel wall.
Since the interpolated vector is very short there is no ``domain wall'', rather
a non-magnetized area.
The second case should not occur since the length of all magnetization vectors
vecu have length 1.