/* pfield.c --- Implementation of the Potter head field equations.
* (C) 2000, C. Bond. All rights reserved.
*
* "Analytic Expression for the Fringe Field of Finite
* Pole-Tip Length Recording Heads", Robert I. Potter,
* IEEE Trans. on Mag., Vol. MAG-11, pp. 80-81,
* January 1975.
*
* The above cited paper presented an expression for
* calculating the Hx field value for a thin film
* head. Potter's results were used by Szczech in
* a comparison with his own method (1979).
*
* Some limitations on the method are:
*
* 1) Use of Karlquist field for central pulse,
* 2) Assumption of equal pole thicknesses,
* 3) No equation for Hy field.
*
* Because of limitation 2), the calling conventions for
* this routine do not require a head geometry structure.
* All relevant quantities are passed directly as function
* parameters, and the (normalized) Hx field value is the
* returned result.
*/
#include
#include "model.h"
double pfield(double g,double p,double x,double y)
{
double g2,x2,y2,a1,a2,inv_r2,t1,t2,t3,xpg1,xpg2;
/* Compute auxiliary variables. */
g2 = g / 2.0;
x2 = x * x;
y2 = y * y;
inv_r2 = 1.0 / (x2 + y2);
xpg1 = x + p + g2;
xpg2 = x - p - g2;
/* Compute Hx field value using Eq.(7). */
t1 = (atan((x + g2) / y) - atan((x - g2) / y)) / g;
t2 = inv_r2 * 0.5 * y;
a1 = atan(xpg1 / y) - atan(xpg2 / y) - pi;
a1 *= ((x2 - y2) * inv_r2);
a2 = log((xpg1 * xpg1 + y2) / (xpg2 * xpg2 +y2));
a2 *= (x * y * inv_r2);
t3 = (0.25 * (p + g2) * inv_r2) * (a1 + a2) ;
return inv_pi*(t1 - t2 + t3);
}