Example #1
0
void Solver::initialize()
{
  for (int id = 0; id < blockManager.getNumBlock(); ++id) {
    BlockBase* block = blockManager.getBlock(id);

    Scalar3D<double>* s
        = dynamic_cast<Scalar3D<double>*>(block->getDataClass(id_s));
    double* sData = s->getData();
    Index3DS sIndex = s->getIndex();

    Vector3D<double>* v
        = dynamic_cast<Vector3D<double>*>(block->getDataClass(id_v));
    double* vData = v->getData();
    Index3DV vIndex = v->getIndex();

    const Vec3d& orig = block->getOrigin();
    const Vec3d& pitch = block->getCellSize();

    for (int k = -vc; k < nz+vc; k++) {
      for (int j = -vc; j < ny+vc; j++) {
        for (int i = -vc; i < nx+vc; i++) {
          double x = orig.x + (i + 0.5) * pitch.x;
          double y = orig.y + (j + 0.5) * pitch.y;
          double z = orig.z + (k + 0.5) * pitch.z;
          sData[sIndex(i,j,k)] = sqrt(x*x + y*y + z*z);
          vData[vIndex(i,j,k)+0] = x;
          vData[vIndex(i,j,k)+1] = y;
          vData[vIndex(i,j,k)+2] = z;
        }
      }
    }

  }
}