85                              "Wraparound does not support " << 
m_numRings << 
" rings");
 
   97    std::vector<Vector3D> sitePositions = {
 
  126        wraparoundModel->SetSiteDistance(1000);
 
  127        wraparoundModel->SetNumSites(numSites);
 
  128        auto sitePositionsSlice =
 
  129            std::vector<Vector3D>(sitePositions.begin(), sitePositions.begin() + numSites);
 
  130        wraparoundModel->SetSitePositions(sitePositionsSlice);
 
  134    mobilityHelper.
Install(userNodes);
 
  135    mobilityHelper.
Install(siteNodes);
 
  138    for (
auto i = 0; i < numSites; i++)
 
  144            wraparoundModel->AddSitePosition(sitePositions.at(i));
 
  153    std::vector<std::tuple<size_t, size_t, Vector3D, Vector3D>> testPoint;
 
  172        testPoint.emplace_back( 9,  1, 
Vector3D( 1000,     0, 0), 
Vector3D( 1000,     0, 0));
 
  173        testPoint.emplace_back(10,  2, 
Vector3D( 1000,  1000, 0), 
Vector3D( 1000,  1000, 0));
 
  174        testPoint.emplace_back(11,  0, 
Vector3D( -500,     0, 0), 
Vector3D( -500,     0, 0));
 
  175        testPoint.emplace_back(12,  0, 
Vector3D(    0,  -500, 0), 
Vector3D(    0,  -500, 0));
 
  176        testPoint.emplace_back(13,  5, 
Vector3D(-1000, -1000, 0), 
Vector3D(-1000, -1000, 0));
 
  177        testPoint.emplace_back(14, 13, 
Vector3D( 2000, -1000, 0), 
Vector3D(-2330, -1500, 0));
 
  178        testPoint.emplace_back(15, 16, 
Vector3D(-1000,  2000, 0), 
Vector3D( 1598, -1500, 0));
 
  179        testPoint.emplace_back(16, 15, 
Vector3D( 2000,  2000, 0), 
Vector3D(  267, -2000, 0));
 
  180        testPoint.emplace_back(17, 10, 
Vector3D(-2000, -2000, 0), 
Vector3D( -268,  2000, 0));
 
  181        testPoint.emplace_back(18, 11, 
Vector3D(-2000,  1500, 0), 
Vector3D(-2000,  1500, 0));
 
  191        testPoint.emplace_back(2, 3, 
Vector3D( 1000, -500, 0), 
Vector3D( -732,  1500, 0));
 
  192        testPoint.emplace_back(3, 4, 
Vector3D( 1000,  500, 0), 
Vector3D(-1598,     0, 0));
 
  194        testPoint.emplace_back(5, 6, 
Vector3D(-1000,  500, 0), 
Vector3D(  732, -1500, 0));
 
  195        testPoint.emplace_back(6, 1, 
Vector3D(-1000, -500, 0), 
Vector3D( 1598,     0, 0));
 
  199        testPoint.emplace_back(0, 0, 
Vector3D( 1000,  1000, 0), 
Vector3D( 1000,  1000, 0));
 
  200        testPoint.emplace_back(0, 0, 
Vector3D( 1000, -1000, 0), 
Vector3D( 1000, -1000, 0));
 
  201        testPoint.emplace_back(0, 0, 
Vector3D(-1000,  1000, 0), 
Vector3D(-1000,  1000, 0));
 
  202        testPoint.emplace_back(0, 0, 
Vector3D(-1000, -1000, 0), 
Vector3D(-1000, -1000, 0));
 
  203        testPoint.emplace_back(0, 0, 
Vector3D( 2000,  2000, 0), 
Vector3D( 2000,  2000, 0));
 
  204        testPoint.emplace_back(0, 0, 
Vector3D( 2000, -2000, 0), 
Vector3D( 2000, -2000, 0));
 
  205        testPoint.emplace_back(0, 0, 
Vector3D(-2000,  2000, 0), 
Vector3D(-2000,  2000, 0));
 
  206        testPoint.emplace_back(0, 0, 
Vector3D(-2000, -2000, 0), 
Vector3D(-2000, -2000, 0));
 
  212    for (
auto [siteNumber, expectedVirtualUserSite, realUserPos, expectedVirtualPos] : testPoint)
 
  214        userMm->SetPosition(realUserPos);
 
  217            wraparoundModel->GetVirtualPosition(userMm->GetPosition(), siteMm->GetPosition());
 
  218        auto nearestSiteToVirtualUser = 
GetNearestSite(sitePositions, numSites, virtualPos);
 
  220                              expectedVirtualUserSite,
 
  221                              "Virtual position leads to from real site " 
  223                                  << 
" to incorrect site " << nearestSiteToVirtualUser);
 
  226                                    "Expected " << expectedVirtualPos << 
" and obtained " 
  227                                                << virtualPos << 
" virtual positions differ");