 Equilibrium condition in the StonerWohlfarth model
The magnetocrystalline free energy densityis, for a singledomain uniaxial crystal, given by:
(1)
where is the angle between the easy axis (OZ axis) of the particle and the saturation polarisation moment of the particle (see Figure 1).
Fig. 1
The magnetostatic free energy density maybe written as:
(2)
where the vectors (saturation polarisation of the particle) and (applied field vector) were expressed in spherical coordinates: and , respectively. Introducing the anisotropy field, defined as:
(3)
the total free energy density for a single domain particle may be written as:
(4)
From the minimum condition for the φ coordinate, that is;
(5)
Fig. 2
one obtains:
(6)
with the solution: . So, at the equilibrium, the polarisation vector, , will be in the same plane as the applied field. Without restricting the generality of the discussion we shall take as the plan where all the vectors are. Taking that into account, the total freeenergy becomes:
(7)
and making the following notations:
, (8)
one may transform the expression of W, as:
(9)
The stable equilibrium conditions are given by:
(e) (10)
(s) (11)
and after simple calculations one obtains the system in the form:
(e) (12)
(s) (13)
The system of equations which results by replacing in (s) the sign “>” with “=” has as solution the parametric equation and of the geometrical locus of the critical fields which separates in the plane the region where the free energy function has two minima as a function of from the region where this function has only one minimum.
Fig. 3 Critical curve
They may be written as:
(14)
and if one eliminates the parameter one obtains:
(15)
which is an astroid in the plane (see Figure 3). Inside the astroid W has two minima as a function of ; outside there is only one.
To prove that, we may write the (e) and (s)equations
(16)
which represents in the plane two lines.These lines have properties which shall be used in the calculus of the equilibrium state:
1. The line (e) is tangent to the astroid in the point determined by the angle
(17)
which is the slope of the (e) line.
Fig. 4
2. The line (s) is perpendicular on the line (e) due to the fact that their slope product is –1. The line (s) divides the plane into two halfplanes. In one the equilibrium is stable and in theother is unstable. We noted the line region within the stable halfplane is noted with (es).
3. Analysing the (es) lines we obtain the configuration presented in the Figure 5. If the point of the vector is within the hashed region there will be with certainty an equilibrium solutionbetween 0° and 90°. The region for is presented in the Figure 6.
Fig. 5
Fig. 6
In conclusion, when the field is applied and its point is inside the astroid, there are two equilibrium solutions (inside the astroid we have two hashed regions corresponding to different equilibrium orientations, see Figure 7); outside the astroid it is possible only one equilibrium solution.
Fig. 7
Fig. 8
In many real cases, one may consider more then one anisotropy source. Let’s see if we can still use the geometrical method we developed previously in the calculus of the equilibrium state. For example, let’s consider that there is another anisotropy source of magnetoelastic type. The magnetoelastic free energy density is given by:
(18)
where is the saturation magnetostriction coefficient and is the mechanical stress vector which makes the angle with the magnetocrystalline anisotropy axis.
The total free energy density is in this case:
(19)
If we are making the notations:
(20)
the expression for W becomes:
(21)
or
(22)
Where
(23)
and may be transformed as:
(24)
If one chooses so
(25)
one obtains:
(26)
and with
(27)
after simple algebra,
(28)
where is an equivalent total anisotropy field and is the angle between the easy axis of the particle and its magnetocrystalline easy axis.
The total free energy density may bewritten in the terms of equivalent anisotropy, as:
(29)
and the stable equilibrium condition is given by:
(30)
(31)
which may be written as:
(32)
(33)
Replacing the sign “>” with “=” in (s) we are obtaining a system of equations whose solution is the critical curve with the same physical signification the astroid in the absence of themagnetoelastic term. The parametric equations of this critical curve are:
(34)
To provide an easier explanation we transform these equations in a system rotated with respect to the system with the angle :
(35)
which may be transformed in the simple form:
(36)
which represents in the system the equationsof an astroid.

Activity: 
Run the following Maple program in order to get familiar with the calculus of the critical curves. The program contains animated representation of the (e) and (s) curves as a function of the angle.

########################
# MAPLE program – StonerWohlfarth model ########################> restart: with(plots): > w:=(h, theta, theta0)>cos(theta)^22*h*cos(thetatheta0): > w_d1:=(h, theta, theta0)>diff(w(h, theta, theta0), theta): > w_zx:=(hz, hx, theta)>cos(theta)^22*hx*sin(theta)2*hz*cos(theta): > w_zx_d1:=(hz, hx, theta)>diff(w_zx(hz, hx, theta), theta): > w_zx_d2:=(hz, hx, theta)> diff(w_zx_d1(hz, hx, theta), theta): > hx_c:=sin(theta)^3: hz_c := cos(theta)^3: > astro_plot:=plot([hz_c, hx_c, theta=0..2*Pi], color=black, thickness=3): > hx_e := (hz, theta)> hz*tan(theta) + sin(theta): > hx_s := (hz, theta)>hz/tan(theta) cos(2*theta)/sin(theta): > ech_anim:=animate(hx_e(hz, theta), hz=10..10, theta=0..2*Pi, > view=[1..1, 1..1], color=blue, numpoints=200, frames=100): > stb_anim:=animate(hx_s(hz, theta), hz=10..10, theta=0..2*Pi, > view=[1..1, 1..1], color=red, numpoints=200, frames=100): > display([astro_plot, ech_anim, stb_anim]);
> theta_s := (1/2)*arctan(hs*sin(2*psi)/(1+hs*cos(2*psi))): > hk_s := sqrt(1+hs^2+2*hs*cos(2*psi)): > hz_c := hk_s*((1/2)*sin(2*(thetatheta_s))*sin(theta) > +cos(2*(thetatheta_s))*cos(theta)): > hx_c := hk_s*((1/2)*sin(2*(thetatheta_s))*cos(theta) cos(2*(thetatheta_s))*sin(theta)): > psi:=Pi/8; > animate([hz_c, hx_c, theta=0..2*Pi], hs=0..2, color=black): psi := 1/8 Pi; > hs:=2: astro_plot_s := plot([hz_c, hx_c, theta=0..2*Pi], color=black, thickness=3 ): > hx_e_s := (hz, theta) > hz*tan(theta) + hk_s*sin(2*(thetatheta_s))/2/cos(theta): > hx_s_s := (hz, theta) > hz/tan(theta)  hk_s*cos(2*(thetatheta_s))/sin(theta): > ech_anim_s := animate(hx_e_s(hz, theta), hz=10..10, theta=0..2*Pi, view=[hk_s..hk_s, hk_s..hk_s], color=black, numpoints=200, frames=100): > stb_anim_s := animate(hx_s_s(hz, theta), hz=10..10, theta=0..2*Pi, view=[hk_s..hk_s, hk_s..hk_s], color=blue, numpoints=200, frames=100): > display([astro_plot_s, ech_anim_s, stb_anim_s]);
