public double BoundaryEdgeForm(ref CommonParamsBnd inp, double[] U_IN, double[,] _Grad_uIn, double _vIN, double[] _Grad_vIN) { double ret = 0.0; int GAMMA = m_EdgForm.ArgumentOrdering.Count; int D = inp.D; Debug.Assert(D == m_SpatialDimension, "spatial dimension mismatch"); CommonParamsBnd clonedParams = inp; Debug.Assert(object.ReferenceEquals(inp, clonedParams) == false); GetOrgParams(inp.Parameters_IN, out clonedParams.Parameters_IN); double delta = GetTmpTrialVals(inp.Parameters_IN, out var U_IN_temp, out var GradU_IN_temp); double f0 = m_EdgForm.BoundaryEdgeForm(ref clonedParams, U_IN_temp, GradU_IN_temp, _vIN, _Grad_vIN); ret += f0; // affine contribution - contains V and GradV contribution for (int iVar = 0; iVar < GAMMA; iVar++) // loop over trial variables { if (((m_EdgForm.InnerEdgeTerms & (TermActivationFlags.UxV | TermActivationFlags.UxGradV)) != 0)) { //if (U_IN[iVar] != 0.0) { { ret += DiffBnd(ref U_IN_temp[iVar], U_IN[iVar], ref clonedParams, U_IN_temp, GradU_IN_temp, _vIN, _Grad_vIN, delta, f0); } } if (((m_EdgForm.InnerEdgeTerms & (TermActivationFlags.GradUxV | TermActivationFlags.GradUxGradV)) != 0)) { for (int d = 0; d < D; d++) { //if (U_IN[iVar] != 0.0) { { ret += DiffBnd(ref GradU_IN_temp[iVar, d], _Grad_uIn[iVar, d], ref clonedParams, U_IN_temp, GradU_IN_temp, _vIN, _Grad_vIN, delta, f0); } } } } return(ret); }
public double BoundaryEdgeForm(ref CommonParamsBnd inp, double[] _uA, double[,] _Grad_uA, double _vA, double[] _Grad_vA) { return(edgeForm.BoundaryEdgeForm(ref inp, _uA, _Grad_uA, _vA, _Grad_vA)); }