// StarDelta.c: Implementation of StarDelta module
#include <math.h>
#include <stdio.h>
#include "StarDelta.h"
// data (members)
PRIVATE double dR1, dR2, dR3;
PRIVATE double dRa, dRb, dRc;
// Set and Get functions
void SetStarValues(double dR1New, double dR2New, double dR3New)
{
dR1 = dR1New;
dR2 = dR2New;
dR3 = dR3New;
}
void SetDeltaValues(double dRaNew, double dRbNew, double dRcNew)
{
dRa = dRaNew;
dRb = dRbNew;
dRc = dRcNew;
}
// Star to Delta conversation
void StarToDelta()
{
dRa = (dR1*dR2 + dR2*dR3 + dR3*dR1) / dR3;
dRb = (dR2*dR3 + dR3*dR1 + dR1*dR2) / dR1;
dRc = (dR3*dR1 + dR1*dR2 + dR2*dR3) / dR2;
}
void DeltaToStar()
{
dR1 = dRa*dRc / ( dRa + dRb + dRc );
dR2 = dRb*dRa / ( dRa + dRb + dRc );
dR3 = dRc*dRb / ( dRa + dRb + dRc );
}
void ShowValues()
{
printf("Star - circuit Delta - circuit\n");
printf("--------------------------------------------------\n");
printf("R1 = %8.2g Ohm Ra = %8.2g Ohm\n", dR1, dRa);
printf("R2 = %8.2g Ohm Rb = %8.2g Ohm\n", dR2, dRb);
printf("R3 = %8.2g Ohm Rc = %8.2g Ohm\n", dR3, dRc);
printf("--------------------------------------------------\n");
printf("R12 = %8.2g Ohm R12 = %8.2g Ohm\n", RStar(1,2), RDelta(1,2));
printf("R23 = %8.2g Ohm R23 = %8.2g Ohm\n", RStar(2,3), RDelta(2,3));
printf("R31 = %8.2g Ohm R31 = %8.2g Ohm\n", RStar(3,1), RDelta(3,1));
printf("\n\n");
}
PRIVATE double RStar(int nT1, int nT2)
{
if ( (nT1 == 1 && nT2 == 2) || (nT1 == 2 && nT2 == 1) )
return dR1 + dR2;
if ( (nT1 == 2 && nT2 == 3) || (nT1 == 3 && nT2 == 2) )
return dR2 + dR3;
if ( (nT1 == 3 && nT2 == 1) || (nT1 == 1 && nT2 == 3) )
return dR3 + dR1;
printf("Error in function RStar: illegal terminal numbers!\n");
return 0.0;
}
PRIVATE double RDelta(int nT1, int nT2)
{
if ( (nT1 == 1 && nT2 == 2) || (nT1 == 2 && nT2 == 1) )
return dRa * (dRb + dRc) / (dRa + dRb + dRc);
if ( (nT1 == 2 && nT2 == 3) || (nT1 == 3 && nT2 == 2) )
return dRb * (dRc + dRa) / (dRa + dRb + dRc);
if ( (nT1 == 3 && nT2 == 1) || (nT1 == 1 && nT2 == 3) )
return dRc * (dRa + dRb) / (dRa + dRb + dRc);
printf("Error in function RDelta: illegal terminal numbers!\n");
return 0.0;
}