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);
 }