Пример #1
0
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);
}
Пример #2
0
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;
}
Пример #3
0
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;

}