bool SiteIsEdge(const Site& site) { const Index& ind = site.GetIndex(); if (_CheckMin(ind)) return true; if (_CheckMax(ind, site.GetBlock().GetDomain().GetSiteCounts() - 1)) return true; return false; }
void GeometryGenerator::WriteFluidSite(BlockWriter& blockWriter, Site& site) { blockWriter << static_cast<unsigned int>(geometry::FLUID); // Iterate over the displacements of the neighbourhood for (unsigned int i = 0; i < Neighbours::n; ++i) { unsigned int cutType = site.Links[i].Type; if (cutType == geometry::CUT_NONE) { blockWriter << static_cast<unsigned int>(geometry::CUT_NONE); } else if (cutType == geometry::CUT_WALL || cutType == geometry::CUT_INLET || cutType == geometry::CUT_OUTLET) { blockWriter << static_cast<unsigned int>(cutType); if (cutType == geometry::CUT_INLET || cutType == geometry::CUT_OUTLET) { blockWriter << static_cast<unsigned int>(site.Links[i].IoletId); } blockWriter << static_cast<float>(site.Links[i].Distance); } else { // TODO: throw some exception std::cout << "Unknown cut type " << static_cast<unsigned int>(cutType) << " for site " << site.GetIndex() << std::endl; } } // Indicate whether the current fluid site has a wall normal available and // if so write it. if (site.WallNormalAvailable) { blockWriter << static_cast<unsigned int>(geometry::WALL_NORMAL_AVAILABLE); blockWriter << static_cast<float>(site.WallNormal[0]); blockWriter << static_cast<float>(site.WallNormal[1]); blockWriter << static_cast<float>(site.WallNormal[2]); } else { blockWriter << static_cast<unsigned int>(geometry::WALL_NORMAL_NOT_AVAILABLE); } }