/// <summary> /// Returns name of nested form. /// </summary> public override string ToString() { return(edgeForm.GetType().FullName); }
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); }