using System;
namespace Science.Physics.GeneralPhysics
{
///
/// ElectricPotentialDifference
///
public class ElectricPotentialDifference : Scalar
{
private void SetDim()
{
this.DimensionMass = 1;
this.DimensionLength = 2;
this.DimensionTime = -2;
this.DimensionCharge = -1;
}
public ElectricPotentialDifference()
{
SetDim();
}
public ElectricPotentialDifference(ElectricCharge Q, Capacitance C)
{
SetDim();
this.V = Q.C / C.F;
}
public double V
{
get{return this.Magnitude;}
set{this.Magnitude=value;}
}
public ElectricPotentialDifference(Resistance R, ElectricCurrent I)
{
SetDim();
this.Magnitude = R.Ohm*I.A;
}
private Scalar.FunctionOfTime ft;
public ElectricPotentialDifference(MagneticFlux Phi, Time t)
{
SetDim();
ft = Phi.ScalarFunctionOfTime;
Calculus.Function func
= new Calculus.Function(ff);
this.Magnitude = - Calculus.Differentiation(func, t.s);
}
private double ff(double t)
{
Time tt = new Time();
tt.s = t;
return ft(tt).Magnitude;
}
public ElectricPotentialDifference(Inductance L, ElectricCurrent I, Time t)
{
SetDim();
ii = I;
this.Magnitude = -L.H * Calculus.Differentiation(
new Calculus.Function(dIdt), t.s);
}
private ElectricCurrent ii;
private double dIdt(double t)
{
Time tt = new Time();
tt.s = t;
ii.Set(tt);
return ii.A;
}
public override string ToString()
{
return base.ToString() + "(V)";
}
}
}