Esempio n. 1
0
 protected override double CreateMatrixElement(BoundaryElement <T> elem1, BoundaryElement <T> elem2, ConditionType conditionType)
 {
     switch (conditionType)
     {
     case ConditionType.Dirichlet:
         if (elem1.Bound.IsOuter && elem2.Bound.IsOuter)
         {
             return(Integrator.Integrate(elem1, elem2.Center, FundamentalSolution));
         }
         if (elem1.Bound.IsOuter && !elem2.Bound.IsOuter)
         {
             return(Integrator.IntegratedQdnx(elem1, elem2, Derivates));
         }
         if (!elem1.Bound.IsOuter && elem2.Bound.IsOuter)
         {
             return(Integrator.IntegratedQdny(elem1, elem2, Derivates));
         }
         if (!elem1.Bound.IsOuter && !elem2.Bound.IsOuter)
         {
             return(lambda * Kroneker(elem1, elem2) + Integrator.IntegratedQdnxdny(elem1, elem2, Derivates));
         }
         break;
     }
     return(double.NaN);
 }
Esempio n. 2
0
 public override double U(T x)
 {
     return(CalculateSolutiuon(Solution,
                               (bound, element) =>
     {
         if (bound.IsOuter)
         {
             return -1 * Integrator.IntegratedQdny(element, x, Derivates);
         }
         return Integrator.Integrate(element, x, FundamentalSolution);
     }));
 }
Esempio n. 3
0
 public double Q(T x, Vector solution)
 {
     return(CalculateSolutiuon(
                solution,
                (bound, element) => Integrator.IntegratedQdny(element, x, Derivates)));
 }