Upgraded CosmoToolbox

This commit is contained in:
Guilhem Lavaux 2013-03-07 09:47:13 -06:00
parent 5ad0bed91c
commit aa9fe698b2
4 changed files with 30 additions and 11 deletions

View file

@ -268,10 +268,10 @@ SimuData *CosmoTool::loadGadgetMulti(const char *fname, int id,
void CosmoTool::writeGadget(const char *fname, SimuData *data, int GadgetFormat)
void CosmoTool::writeGadget(const std::string& fname, SimuData *data, int GadgetFormat)
{
UnformattedWrite *f;
int npart[6];
int npart[6], npartTotal[6];
float mass[6];
if (data->Pos[0] == 0 || data->Vel[0] == 0 || data->Id == 0)
@ -283,12 +283,12 @@ void CosmoTool::writeGadget(const char *fname, SimuData *data, int GadgetFormat)
for (int i = 0; i < 6; i++)
{
npart[i] = 0;
npart[i] = npartTotal[i] = 0;
mass[i] = 0;
}
mass[1] = 1.0;
npart[1] = data->NumPart;
npartTotal[1] = data->TotalNumPart;
f->beginCheckpoint();
for (int i = 0; i < 6; i++)
@ -302,7 +302,7 @@ void CosmoTool::writeGadget(const char *fname, SimuData *data, int GadgetFormat)
f->writeInt32(0);
for (int i = 0; i < 6; i++)
f->writeInt32(npart[i]);
f->writeInt32(npartTotal[i]);
f->writeInt32(0);
f->writeInt32(1);
f->writeReal64(data->BoxSize);

View file

@ -36,6 +36,8 @@ knowledge of the CeCILL license and that you accept its terms.
#ifndef __COSMO_LOAD_GADGET_HPP
#define __COSMO_LOAD_GADGET_HPP
#include <string>
#include "load_data.hpp"
#include "loadSimu.hpp"
@ -45,7 +47,7 @@ namespace CosmoTool {
int GadgetFormat = 1, SimuFilter filter = 0);
// Only single snapshot supported
void writeGadget(const char *fname, SimuData *data, int GadgetFormat = 1);
void writeGadget(const std::string& fname, SimuData *data, int GadgetFormat = 1);
};

View file

@ -136,7 +136,13 @@ namespace CosmoTool {
void setPeriodic(bool on, CoordType replicate)
{
periodic = on;
this->replicate = replicate;
std::fill(this->replicate, this->replicate+N, replicate);
}
void setPeriodic(bool on, const coords& replicate)
{
periodic = on;
std::copy(replicate, replicate+N, this->replicate);
}
uint32_t getIntersection(const coords& x, CoordType r,
@ -193,7 +199,7 @@ namespace CosmoTool {
Cell *base_cell;
bool periodic;
CoordType replicate;
coords replicate;
Node *buildTree(Cell **cell0,
uint32_t NumCells,

View file

@ -46,18 +46,29 @@ namespace CosmoTool
{
public:
typedef Coord Coords[N];
Coord replicate;
Coords replicate;
ReplicateGenerator(const Coords& x, Coord shift)
{
face = 0;
replicate = shift;
std::fill(replicate, replicate+N, shift);
numFaces = spower<N,long>(3);
std::copy(x, x+N, x_base);
if (!next())
abort();
}
ReplicateGenerator(const Coords& x, Coords& shift)
{
face = 0;
std::copy(shift, shift+N, replicate);
numFaces = spower<N,long>(3);
std::copy(x, x+N, x_base);
if (!next())
abort();
}
bool next()
{
if (face == numFaces)
@ -72,7 +83,7 @@ namespace CosmoTool
int c_face;
c_face = q_face % 3;
q_face /= 3;
x_shifted[i] = x_base[i] + (c_face-1)*replicate;
x_shifted[i] = x_base[i] + (c_face-1)*replicate[i];
no_move = no_move && (c_face == 1);
}
if (no_move)