
//////////////////////////////////////////////////////////////
// 1. Rezonans LC
//////////////////////////////////////////////////////////////

EXPORT LC_res()
BEGIN
  LOCAL L,C,f,PI;
  PI := 3.14159265359;

  INPUT({L,C},
        "Rezonans LC",
        {"L [H]","C [F]"},
        {"Indukcyjność","Pojemność"});

  f := 1/(2*PI*SQRT(L*C))/1000000;

  MSGBOX("f = "+STRING(f)+" MHz");
END;

//////////////////////////////////////////////////////////////
// 2. MagLoop – parametry
//////////////////////////////////////////////////////////////

EXPORT MagLoop_parameters()
BEGIN
  LOCAL L,C,f,R,XL,XC,Q,PI;
  PI := 3.14159265359;

  INPUT({L,C,f,R},
        "MagLoop",
        {"L [H]","C [F]","f [Hz]","R_loss [ohm]"},
        {"Indukcyjność","Pojemność","Częstotliwość","Rezystancja strat"});

  XL := 2*PI*f*L;
  XC := 1/(2*PI*f*C);
  Q  := XL/R;

  MSGBOX("XL = "+STRING(XL)+" ohm"+
         "\nXC = "+STRING(XC)+" ohm"+
         "\nQ = "+STRING(Q));
END;

//////////////////////////////////////////////////////////////
// 3. Dobroc Q
//////////////////////////////////////////////////////////////

EXPORT Q_calc()
BEGIN
  LOCAL XL,R,Q;

  INPUT({XL,R},
        "Dobroć Q",
        {"XL [ohm]","R_loss [ohm]"},
        {"Reaktancja indukcyjna","Rezystancja strat"});

  Q := XL/R;

  MSGBOX("Q = "+STRING(Q));
END;

//////////////////////////////////////////////////////////////
// 4. Napiecie na kondensatorze
//////////////////////////////////////////////////////////////

EXPORT C_voltage()
BEGIN
  LOCAL P,R,f,C,XC,I,VC,PI;
  PI := 3.14159265359;

  INPUT({P,R,f,C},
        "Napięcie na C",
        {"P [W]","R_loss [ohm]","f [Hz]","C [F]"},
        {"Moc","Rezystancja strat","Częstotliwość","Pojemność"});

  XC := 1/(2*PI*f*C);
  I  := SQRT(P/R);
  VC := I*XC;

  MSGBOX("I = "+STRING(I)+" A"+
         "\nVC = "+STRING(VC)+" V");
END;

//////////////////////////////////////////////////////////////
// 5. Indukcyjnosc petli
//////////////////////////////////////////////////////////////

EXPORT Loop_L()
BEGIN
  LOCAL D,d,L,PI,mu0;
  PI  := 3.14159265359;
  mu0 := 4*PI*1E-7;

  INPUT({D,d},
        "Indukcyjność pętli",
        {"R [m]","r [m]"},
        {"Promień pętli","Promień przekroju rurki"});

  L := mu0*D*(LN(8*D/d) - 2)*10^6;

  MSGBOX("L = "+STRING(L)+" uH");
END;

EXPORT Loop_L_for_Cf()
BEGIN
  LOCAL L,f,C,PI;
  PI := 3.14159265359;

  INPUT({C,f},
        "Indukcyjność Pętli dla Cf",
        {"C [F]","f [Hz]"},
        {"Pojemność","Częstotliwość"});

  L := 1/(4*PI^2*f^2*C)*10^6;

  MSGBOX("L = "+STRING(L)+" uH");
END;

EXPORT Loop_C_for_Lf()
BEGIN
  LOCAL L,f,C,PI;
  PI := 3.14159265359;

  INPUT({L,f},
        "Pojemność kondensatora dla Lf",
        {"L [H]","f [Hz]"},
        {"Indukcyjność","Częstotliwość"});

  C := 1/(4*PI^2*f^2*L)*10^12;

  MSGBOX("C = "+STRING(C)+" pF");
END;

//////////////////////////////////////////////////////////////
// 6. Skin depth / Rs
//////////////////////////////////////////////////////////////

EXPORT SkinDepth_RS()
BEGIN
  LOCAL f,sigma,mu,delta,Rs,PI;
  PI := 3.14159265359;
  mu := 4*PI*1E-7;

  INPUT({f,sigma},
        "Skin depth",
        {"f [Hz]","sigma [S/m]"},
        {"Częstotliwość","Przewodność"});

  delta := SQRT(2/(2*PI*f*mu*sigma));
  Rs := 1/(sigma*delta);

  MSGBOX("delta = "+STRING(delta)+" m"+
         "\nRs = "+STRING(Rs)+" ohm/m");
END;

//////////////////////////////////////////////////////////////
// 7. ESR kondensatora
//////////////////////////////////////////////////////////////

EXPORT ESR_capacitor()
BEGIN
  LOCAL f,C,tanD,ESR,PI;
  PI := 3.14159265359;

  INPUT({f,C,tanD},
        "ESR kondensatora",
        {"f [Hz]","C [F]","tan_delta"},
        {"Częstotliwość","Pojemność","Tangens strat"});

  ESR := tanD/(2*PI*f*C);

  MSGBOX("ESR = "+STRING(ESR)+" ohm");
END;

//////////////////////////////////////////////////////////////
// 8. Pole magnetyczne w osi petli
//////////////////////////////////////////////////////////////

EXPORT Loop_MagneticField()
BEGIN
  LOCAL I,R,x,mu,B,PI;
  PI := 3.14159265359;
  mu := 4*PI*1E-7;

  INPUT({I,R,x},
        "Pole magnetyczne",
        {"I [A]","R [m]","x [m]"},
        {"Prąd","Promień pętli","Odleglość w osi"});

  B := mu*I*R^2 / (2*(R^2 + x^2)^(1.5));

  MSGBOX("B = "+STRING(B)+" T");
END;