/*u[4]={vaphar,vbetar,Tz,Vdc}*/
int A,B,C,N;
double X,Y,Z,Tx,Ty,T0,Tl,Tm,Th;
if (u[1]>0) A = 1;
else A=0;
if ((1.732051*u[0]-u[1])>0) B = 1;
else B=0;
if ((-1.732051*u[0]-u[1])>0) C = 1;
else C=0;
N=A+2*B+4*C;
X=1.732051*u[1]*u[2]/u[3];
Y=(0.8660*u[1]+1.5*u[0])*u[2]/u[3];
Z=(-0.8660*u[1]+1.5*u[0])*u[2]/u[3];
switch (N)
{
case 1: Tx= Y;Ty=-Z;break;
case 2: Tx=-X;Ty= Y;break;
case 3: Tx= Z;Ty= X;break;
case 4: Tx=-Z;Ty=-X;break;
case 5: Tx= X;Ty=-Y;break;
default: Tx=-Y;Ty= Z;
}
if ((Tx+Ty)>u[2])
{
Tx=Tx*u[2]/(Tx+Ty);
Ty=Ty*u[2]/(Tx+Ty);
}
T0=(u[2]-(Tx+Ty))/4;