;+
; PROCEDURE:
;     mpause_2
;     
; PURPOSE:
;     This subroutine calculates the magnetopause (X,Y) locations based on
;     the Fairfield model (JGR, 1971). 
;     Aberation of 4 degrees is assumed
;     
; INPUT:
;     xmp:   spacecraft position, x component
;     ymp:   spacecraft position, y component
;            gse or gsm does not matter because mpause assumed 
;            rotationally symmetric
;
; OUTPUT: 
;    It outputs the location of the magnetopause down to a very large distance (xmp_max=-300 Re)
;
;sfrey copy mpause.pro but for given xmp
;03-19-09  corrected calculation of ymp_east[west](ilt15) using proper index for xmp~-15
;04-01-09  calculation of ymp_east[west](ilt15) to work for case in15 eq  n_ige15-1
;-
pro mpause_2,xmp,ymp,ymp_west=ymp_west,short=short,xmp_max=xmp_max

xp=-15.
if not keyword_set(xmp_max) then xmp_max=10.78 ; Should have been 10.8 according to Fairfield paper
xmp_min=-300
npoints=1000
aberangle=4.5
if n_elements(xmp) eq 0 then $
xmp=xmp_min+float(indgen(npoints))*(xmp_max-xmp_min)/(npoints-1)
if not keyword_set(short) then short=0
;
; Ellipse coefficients
;
a1=0.0278
b1=0.3531
c1=-0.586
d1=17.866
e1=-233.67
in15=0
ilt15=where((xmp lt xp),n_ilt15)
ige15=where((xmp ge xp),n_ige15)
;get xmp=-15
if n_ige15 ne 0 then tmp=min(xmp[ige15],in15)
if in15 eq  n_ige15-1 then ww=-1. else ww=1.
ymp_east=xmp
ymp_west=xmp
if (n_ige15 gt 1) then begin

  beta=a1*xmp(ige15)+c1
  gamma=b1*(xmp(ige15))^2+d1*xmp(ige15)+e1
  delta=beta^2-4*gamma
  ymp_east(ige15)=(-beta-sqrt(delta))/2.
  ymp_west(ige15)=(-beta+sqrt(delta))/2.

  s_east=(ymp_east[ige15[in15+1*ww]]-ymp_east[ige15[in15]])/(xmp[ige15[in15+1*ww]]-xmp[ige15[in15]])
  s_west=(ymp_west[ige15[in15+1*ww]]-ymp_west[ige15[in15]])/(xmp[ige15[in15+1*ww]]-xmp[ige15[in15]])
  if n_ilt15 ne 0 then begin   
   ymp_east(ilt15)=ymp_east[ige15[in15]]+s_east*(xmp[ilt15]-xmp[ige15[in15]])
   ymp_west(ilt15)=ymp_west[ige15[in15]]+s_west*(xmp[ilt15]-xmp[ige15[in15]])
  endif
endif

if not short then begin
 ymp=ymp_east
 ireverse=n_elements(xmp)-indgen(n_elements(xmp))-1
 xmp=[xmp,xmp(ireverse)]
 ymp=[ymp_east,ymp_west(ireverse)]
endif else ymp=ymp_east
return
end