Foam::scalar Foam::lduMatrix::solver::normFactor ( const scalarField& x, const scalarField& b, const direction cmpt ) const { scalarField wA(x.size()); scalarField tmpField(x.size()); matrix_.Amul(wA, x, interfaceBouCoeffs_, interfaces_, cmpt); return normFactor(x, b, wA, tmpField); }
inline float existing_error(MappingData& mapping, int rho, int theta) { Point map1 = polarToAbsolute(mapping.mapX, mapping.mapY, rho, theta); Point map2 = polarToAbsolute(mapping.mapX, mapping.mapY, rho+1, theta); int map1Y = (int)round(map1.y); int map1X = (int)round(map1.x); int map2Y = (int)round(map2.y); int map2X = (int)round(map2.x); int xShift = map2X - map1X; int yShift = map2Y - map1Y; int dst1Offset = imgGetRef(mapping.map, mapping.mapWidth, map1Y, map1X); int dst2Offset = imgGetRef(mapping.map, mapping.mapWidth, map2Y, map2X); int src1X = refIndexCol(mapping.srcWidth, dst1Offset); int src1Y = refIndexRow(mapping.srcWidth, dst1Offset); Color dstColor1 = imgGetColor(mapping.src, dst1Offset); Color dstColor2 = imgGetColor(mapping.src, dst2Offset); Color srcColor1 = dstColor1; Color srcColor2 = imgGetColor(mapping.src, mapping.srcWidth, src1Y + yShift, src1X + xShift); // note that the square diff between srcColor1 and dstColor1 is 0 so we omit it float error1 = colorSqDiff(srcColor2, dstColor2) / (colorSqDiff(srcColor1, srcColor2) + colorSqDiff(dstColor1, dstColor2) + ETA); return normFactor(rho) * error1 * error1; }
inline float horiz_error(MappingData& mapping, int rho, int theta) { Point src1 = polarToAbsolute(mapping.srcX, mapping.srcY, rho, theta); Point src2 = polarToAbsolute(mapping.srcX, mapping.srcY, rho+1, theta); Point map1 = polarToAbsolute(mapping.mapX, mapping.mapY, rho, theta); Point map2 = polarToAbsolute(mapping.mapX, mapping.mapY, rho+1, theta); Color srcColor1 = imgGetColor(mapping.src, mapping.srcWidth, (int)round(src1.y), (int)round(src1.x)); Color srcColor2 = imgGetColor(mapping.src, mapping.srcWidth, (int)round(src2.y), (int)round(src2.x)); int dst1Offset = imgGetRef(mapping.map, mapping.mapWidth, (int)round(map1.y), (int)round(map1.x)); int dst2Offset = imgGetRef(mapping.map, mapping.mapWidth, (int)round(map2.y), (int)round(map2.x)); Color dstColor1 = imgGetColor(mapping.src, dst1Offset); Color dstColor2 = imgGetColor(mapping.src, dst2Offset); float error1 = (colorSqDiff(srcColor1, dstColor1) + colorSqDiff(srcColor2, dstColor2)) / (colorSqDiff(srcColor1, srcColor2) + colorSqDiff(dstColor1, dstColor2) + ETA); return normFactor(rho) * error1 * error1; }