Example #1
0
 /// <summary>
 /// Returns name of nested form.
 /// </summary>
 public override string ToString()
 {
     return(edgeForm.GetType().FullName);
 }
Example #2
0
        private double Diff(
            ref double PertubVar, double Var,
            ref CommonParams clonedParams,
            double[] U_IN_temp, double[] U_OT_temp, double[,] GradU_IN_temp, double[,] GradU_OT_temp,
            double _vIN, double _vOUT, double[] _Grad_vIN, double[] _Grad_vOUT, double delta, double f0)
        {
            // add perturbation
            double bkup = PertubVar;

            PertubVar += delta;

            // flux eval
            double f1 = m_EdgForm.InnerEdgeForm(ref clonedParams, U_IN_temp, U_OT_temp, GradU_IN_temp, GradU_OT_temp, _vIN, _vOUT, _Grad_vIN, _Grad_vOUT);

#if DEBUG
            if (double.IsInfinity(f1))
            {
                throw new ArithmeticException();
            }
            if (double.IsNaN(f1))
            {
                throw new ArithmeticException();
            }
#endif

            // compute finite difference
            double dU_iVar = (f1 - f0) / delta;
            if (double.IsInfinity(dU_iVar))
            {
                throw new ArithmeticException("Got INF while differentiation of inner edge part of " + m_EdgForm.GetType().Name);
            }
            if (double.IsNaN(dU_iVar))
            {
                throw new ArithmeticException("Got NAN while differentiation of inner edge part of " + m_EdgForm.GetType().Name);
            }

            // restore un-perturbed state
            PertubVar = bkup;

            // inner product
            double ret = 0;
            ret += dU_iVar * Var;
            ret -= dU_iVar * PertubVar; // subtract affine contribution
            return(ret);
        }