protected override double CreateVectorElement(BoundaryElement <Point3D> elem1, Func <Point3D, double> function, ConditionType conditionType) { switch (elem1.Bound.Name) { case BoundNumber.Bound12: return(-parameters.BPotential * functionsForSemiSpace.U1(elem1.Center, parameters.B) - parameters.APotential * functionsForSemiSpace.U1(elem1.Center, parameters.A)); case BoundNumber.Bound2: var fbBound2 = elem1.Normal.ScalarMultiply(FunctionsForSemiSpace.FSemiSpace(elem1.Normal, parameters.B)); var faBound2 = elem1.Normal.ScalarMultiply(FunctionsForSemiSpace.FSemiSpace(elem1.Normal, parameters.A)); return(-parameters.APotential * faBound2 - parameters.BPotential * fbBound2); case BoundNumber.Bound13: return(-parameters.BPotential * functionsForSemiSpace.U1(elem1.Center, parameters.B) - parameters.APotential * functionsForSemiSpace.U1(elem1.Center, parameters.A)); case BoundNumber.Bound3: var fbBound3 = elem1.Normal.ScalarMultiply(FunctionsForSemiSpace.FSemiSpace(elem1.Normal, parameters.B)); var faBound3 = elem1.Normal.ScalarMultiply(FunctionsForSemiSpace.FSemiSpace(elem1.Normal, parameters.A)); return(-parameters.APotential * faBound3 - parameters.BPotential * fbBound3); } return(base.CreateVectorElement(elem1, function, conditionType)); }
private double Tr(Point3D m, Point3D n) { return(FunctionsForSemiSpace.K(parameters.A, parameters.B, m, n) * (Solution(m) - Solution(n))); }
public TwoSphereMethod(List <BoundWithCondition <Point3D> > bound, List <InnerSourceWithFunction <Point3D> > sources, Integrator <Point3D> integrator, SemiSpaceParameters parameters) : base(bound, sources, null, null, integrator) { this.parameters = parameters; functionsForSemiSpace = new FunctionsForSemiSpace(parameters); }