void EvalDiffusion() { VecR dr = new VecR(); int ni; for (int nb = 0; nb < nBuffDiffuse; nb++) { if (tBuf[nb].GetCount == 0) { foreach (Node node in nodes) { tBuf[nb].AddorigR(node.Getr); tBuf[nb].AddrTrue(node.Getr); } } if (tBuf[nb].GetCount >= 0) { ni = tBuf[nb].GetCount; tBuf[nb].InitrrDiffuse(0.0); for (int n = 0; n < nodes.Count; n++) { dr.VSub(tBuf[nb].GetrTrue[n].Get, nodes[n].Getr); dr.VDiv(dr.Get, region.Get); dr.Nint(); dr.VMul(dr.Get, region.Get); tBuf[nb].GetrTrue[n].Get.VAdd(nodes[n].Getr, dr.Get); dr.VSub(tBuf[nb].GetrTrue[n].Get, tBuf[nb].GetorgR[n].Get); tBuf[nb].AddrrDiffuse(ni, dr.VLenSq()); } } tBuf[nb].AddCount(); } AccumDiffusion(); }