!************************************** !subroutine to calculate the distance of closest approach of two ellipses !*************************************** Subroutine ellipses(a1,b1,a2,b2,k1k2,k1d,k2d,dist) Implicit None complex*32,parameter::in=(1.q0,0.q0) !k1k2, k1d,k2d are dot product between the vectors, k1, k2 and d real*16,Intent(in)::a1,b1,a2,b2,k1k2,k1d,k2d real*16,Intent(out)::dist real*16::e1,e2,eta,a11,a12,a22 real*16::lambda1,lambda2,a2p,b2p real*16::kpmp,t,deltap,A,B,C,D,E,alpha,beta,gamma,P,Q,Rp Complex*32::U,y,qq,z,mysqrt Complex*32, External::ccbrt !eccentricity of ellipses e1=1.q0-b1**2/a1**2 e2=1.q0-b2**2/a2**2 !component of A' eta=a1/b1-1.q0 a11=b1**2/b2**2*(1.q0+0.5q0*(1.q0+k1k2)*(eta*(2.q0+eta)-e2*(1.q0+eta*k1k2)**2)) a12=b1**2/b2**2*0.5q0*qsqrt(1.q0-k1k2**2)*(eta*(2.q0+eta)+e2*(1.q0-eta**2*k1k2**2)) a22=b1**2/b2**2*(1.q0+0.5q0*(1.q0-k1k2)*(eta*(2.q0+eta)-e2*(1.q0-eta*k1k2)**2)) !eigenvalues of A' lambda1=0.5q0*(a11+a22)+0.5q0*qsqrt((a11-a22)**2+4.q0*a12**2) lambda2=0.5q0*(a11+a22)-0.5q0*qsqrt((a11-a22)**2+4.q0*a12**2) !major and minor axes of transformed ellipse b2p=1.q0/qsqrt(lambda1) a2p=1.q0/qsqrt(lambda2) deltap=a2p**2/b2p**2-1.q0 If(qabs(k1k2)==1.q0) then if(a11>a22)then kpmp=1.q0/qsqrt(1.q0-e1*k1d**2)*b1/a1*k1d elseif(a11