mirror of
https://bitbucket.org/cosmicvoids/vide_public.git
synced 2025-07-04 23:31:12 +00:00
Enforce particles to be in the boxsize for the SDF loader
This commit is contained in:
parent
5b410a0008
commit
39d10fdd6b
1 changed files with 19 additions and 5 deletions
|
@ -69,7 +69,6 @@ public:
|
||||||
return num_splitting;
|
return num_splitting;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int64_t getStart(int id)
|
int64_t getStart(int id)
|
||||||
{
|
{
|
||||||
return sdf_header->TotalNumPart * int64_t(id) / num_splitting;
|
return sdf_header->TotalNumPart * int64_t(id) / num_splitting;
|
||||||
|
@ -87,7 +86,7 @@ public:
|
||||||
#define INFINITY std::numeric_limits<float>::max()
|
#define INFINITY std::numeric_limits<float>::max()
|
||||||
float shift = 0.5*d->BoxSize;
|
float shift = 0.5*d->BoxSize;
|
||||||
rescale_position /= d->time;
|
rescale_position /= d->time;
|
||||||
float min_pos[3] = {INFINITY,INFINITY, INFINITY}, max_pos[3] = {-INFINITY,-INFINITY,-INFINITY};
|
// float min_pos[3] = {INFINITY,INFINITY, INFINITY}, max_pos[3] = {-INFINITY,-INFINITY,-INFINITY};
|
||||||
|
|
||||||
if (d->Pos[0] != 0)
|
if (d->Pos[0] != 0)
|
||||||
{
|
{
|
||||||
|
@ -96,10 +95,10 @@ public:
|
||||||
for (int64_t i = 0; i < d->NumPart; i++)
|
for (int64_t i = 0; i < d->NumPart; i++)
|
||||||
{
|
{
|
||||||
d->Pos[k][i] = (d->Pos[k][i]*rescale_position + shift);
|
d->Pos[k][i] = (d->Pos[k][i]*rescale_position + shift);
|
||||||
min_pos[k] = std::min(min_pos[k], d->Pos[k][i]);
|
// min_pos[k] = std::min(min_pos[k], d->Pos[k][i]);
|
||||||
max_pos[k] = std::max(max_pos[k], d->Pos[k][i]);
|
// max_pos[k] = std::max(max_pos[k], d->Pos[k][i]);
|
||||||
}
|
}
|
||||||
cout << boost::format("min[%d] = %g, max[%d] = %g") % k % min_pos[k] % k %max_pos[k] << endl;
|
// cout << boost::format("min[%d] = %g, max[%d] = %g") % k % min_pos[k] % k %max_pos[k] << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (d->Vel[0] != 0)
|
if (d->Vel[0] != 0)
|
||||||
|
@ -115,6 +114,20 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void enforceBoxSize(SimuData *d)
|
||||||
|
{
|
||||||
|
for (int k = 0; k < 3; k++)
|
||||||
|
{
|
||||||
|
for (int64_t i = 0; i < d->NumPart; i++)
|
||||||
|
{
|
||||||
|
while (d->Pos[k][i]<0)
|
||||||
|
d->Pos[k][i] += d->BoxSize;
|
||||||
|
while (d->Pos[k][i]>=d->BoxSize)
|
||||||
|
d->Pos[k][i] -= d->BoxSize;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
SimuData *loadFile(int id) {
|
SimuData *loadFile(int id) {
|
||||||
SimuData *d;
|
SimuData *d;
|
||||||
int64_t starts[7];
|
int64_t starts[7];
|
||||||
|
@ -177,6 +190,7 @@ public:
|
||||||
if (load_flags & (NEED_POSITION | NEED_VELOCITY))
|
if (load_flags & (NEED_POSITION | NEED_VELOCITY))
|
||||||
rescaleParticles(d, d->Hubble*1e-5, one_kpc/one_Gyr);
|
rescaleParticles(d, d->Hubble*1e-5, one_kpc/one_Gyr);
|
||||||
|
|
||||||
|
enforceBoxSize(d);
|
||||||
applyTransformations(d);
|
applyTransformations(d);
|
||||||
basicPreprocessing(d, preproc);
|
basicPreprocessing(d, preproc);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue