Merge branch 'master' of github.com:JamesEMcClure/LBPM-WIA
This commit is contained in:
@@ -28,6 +28,7 @@ Domain {
|
||||
n_spheres = 1 // Number of spheres
|
||||
L = 1, 1, 1 // Length of domain (x,y,z)
|
||||
BC = 4 // Boundary condition type
|
||||
ReadType = "8bit"
|
||||
ReadValues = 0, 1, 2
|
||||
WriteValues = 0, 1, 2
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ Domain {
|
||||
n_spheres = 1 // Number of spheres
|
||||
L = 1, 1, 1 // Length of domain (x,y,z)
|
||||
BC = 0 // Boundary condition type
|
||||
ReadType = "8bit"
|
||||
ReadValues = -2, -1, 1, 2
|
||||
WriteValues = -2, -1, 1, 2
|
||||
}
|
||||
|
||||
@@ -33,9 +33,9 @@ Domain {
|
||||
BC = 0 // Boundary condition type
|
||||
// BC = 0 for periodic BC
|
||||
// BC = 1 for pressure BC (applied in z direction)
|
||||
// BC = 4 for flux BC (applied in z direction)
|
||||
|
||||
// BC = 4 for flux BC (applied in z direction
|
||||
Filename = "mineralmodel.raw" // name of raw binary file to read digital image from
|
||||
ReadType = "8bit"
|
||||
ReadValues = 0, 1, 2, 3, 4, 5, 6, 7, 8 // list of labels within the binary file (read)
|
||||
WriteValues = 1, -1, -2, -2, -3, -3, -4, -4, -4 // list of labels within the output files (write)
|
||||
|
||||
|
||||
@@ -336,24 +336,21 @@ void ScaLBL_ColorModel::Initialize(){
|
||||
int *TmpMap;
|
||||
TmpMap = new int[Np];
|
||||
|
||||
double *cPhi, *cDist;
|
||||
double *cPhi, *cDist, *cDen;
|
||||
cPhi = new double[N];
|
||||
cDen = new double[2*Np];
|
||||
cDist = new double[19*Np];
|
||||
|
||||
ScaLBL_CopyToHost(TmpMap, dvcMap, Np*sizeof(int));
|
||||
ScaLBL_CopyToHost(cPhi, Phi, N*sizeof(double));
|
||||
|
||||
ifstream File(LocalRestartFile,ios::binary);
|
||||
int idx;
|
||||
double value,va,vb;
|
||||
|
||||
ScaLBL_CopyToHost(TmpMap, dvcMap, Np*sizeof(int));
|
||||
ScaLBL_CopyToHost(cPhi, Phi, N*sizeof(double));
|
||||
|
||||
for (int n=0; n<Np; n++){
|
||||
File.read((char*) &va, sizeof(va));
|
||||
File.read((char*) &vb, sizeof(vb));
|
||||
value = (va-vb)/(va+vb);
|
||||
idx = TmpMap[n];
|
||||
if (!(idx < 0) && idx<N)
|
||||
cPhi[idx] = value;
|
||||
cDen[n] = va;
|
||||
cDen[Np+n] = vb;
|
||||
}
|
||||
for (int n=0; n<Np; n++){
|
||||
// Read the distributions
|
||||
@@ -363,7 +360,26 @@ void ScaLBL_ColorModel::Initialize(){
|
||||
}
|
||||
}
|
||||
File.close();
|
||||
|
||||
for (int n=0; n<ScaLBL_Comm->LastExterior(); n++){
|
||||
va = cDen[n];
|
||||
vb = cDen[Np + n];
|
||||
value = (va-vb)/(va+vb);
|
||||
idx = TmpMap[n];
|
||||
if (!(idx < 0) && idx<N)
|
||||
cPhi[idx] = value;
|
||||
}
|
||||
for (int n=ScaLBL_Comm->FirstInterior(); n<ScaLBL_Comm->LastInterior(); n++){
|
||||
va = cDen[n];
|
||||
vb = cDen[Np + n];
|
||||
value = (va-vb)/(va+vb);
|
||||
idx = TmpMap[n];
|
||||
if (!(idx < 0) && idx<N)
|
||||
cPhi[idx] = value;
|
||||
}
|
||||
|
||||
// Copy the restart data to the GPU
|
||||
ScaLBL_CopyToDevice(Den,cDen,2*Np*sizeof(double));
|
||||
ScaLBL_CopyToDevice(fq,cDist,19*Np*sizeof(double));
|
||||
ScaLBL_CopyToDevice(Phi,cPhi,N*sizeof(double));
|
||||
ScaLBL_DeviceBarrier();
|
||||
|
||||
@@ -68,6 +68,15 @@ int main(int argc, char **argv)
|
||||
auto nproc = domain_db->getVector<int>( "nproc" );
|
||||
auto ReadValues = domain_db->getVector<char>( "ReadValues" );
|
||||
auto WriteValues = domain_db->getVector<char>( "WriteValues" );
|
||||
auto ReadType = domain_db->getScalar<std::string>( "ReadType" );
|
||||
if (ReadType == "8bit"){
|
||||
}
|
||||
else if (ReadType == "16bit"){
|
||||
}
|
||||
else{
|
||||
printf("INPUT ERROR: Valid ReadType are 8bit, 16bit \n");
|
||||
ReadType = "8bit";
|
||||
}
|
||||
|
||||
nx = size[0];
|
||||
ny = size[1];
|
||||
@@ -78,9 +87,6 @@ int main(int argc, char **argv)
|
||||
Nx = SIZE[0];
|
||||
Ny = SIZE[1];
|
||||
Nz = SIZE[2];
|
||||
//Nx = nprocx*nx;
|
||||
//Ny = nprocx*ny;
|
||||
//Nz = nprocx*nz;
|
||||
|
||||
printf("Input media: %s\n",Filename.c_str());
|
||||
printf("Relabeling %lu values\n",ReadValues.size());
|
||||
@@ -90,32 +96,6 @@ int main(int argc, char **argv)
|
||||
printf("oldvalue=%d, newvalue =%d \n",oldvalue,newvalue);
|
||||
}
|
||||
|
||||
/* if (rank==0){
|
||||
ifstream domain("Domain.in");
|
||||
domain >> nprocx;
|
||||
domain >> nprocy;
|
||||
domain >> nprocz;
|
||||
domain >> nx;
|
||||
domain >> ny;
|
||||
domain >> nz;
|
||||
domain >> nspheres;
|
||||
domain >> Lx; printf("Domain decomposition completed successfully \n");
|
||||
return 0;
|
||||
|
||||
domain >> Ly;
|
||||
domain >> Lz;
|
||||
|
||||
ifstream image("Segmented.in");
|
||||
image >> Filename; // Name of data file containing segmented data
|
||||
image >> Nx; // size of the binary file
|
||||
image >> Ny;
|
||||
image >> Nz;
|
||||
image >> xStart; // offset for the starting voxel
|
||||
image >> yStart;
|
||||
image >> zStart;
|
||||
|
||||
}
|
||||
*/
|
||||
nprocs=nprocx*nprocy*nprocz;
|
||||
|
||||
char *SegData = NULL;
|
||||
@@ -124,12 +104,29 @@ int main(int argc, char **argv)
|
||||
printf("Dimensions of segmented image: %ld x %ld x %ld \n",Nx,Ny,Nz);
|
||||
int64_t SIZE = Nx*Ny*Nz;
|
||||
SegData = new char[SIZE];
|
||||
FILE *SEGDAT = fopen(Filename.c_str(),"rb");
|
||||
if (SEGDAT==NULL) ERROR("Error reading segmented data");
|
||||
size_t ReadSeg;
|
||||
ReadSeg=fread(SegData,1,SIZE,SEGDAT);
|
||||
if (ReadSeg != size_t(SIZE)) printf("lbpm_segmented_decomp: Error reading segmented data (rank=%i)\n",rank);
|
||||
fclose(SEGDAT);
|
||||
if (ReadType == "8bit"){
|
||||
printf("Reading 8-bit input data \n");
|
||||
FILE *SEGDAT = fopen(Filename.c_str(),"rb");
|
||||
if (SEGDAT==NULL) ERROR("Error reading segmented data");
|
||||
size_t ReadSeg;
|
||||
ReadSeg=fread(SegData,1,SIZE,SEGDAT);
|
||||
if (ReadSeg != size_t(SIZE)) printf("lbpm_segmented_decomp: Error reading segmented data (rank=%i)\n",rank);
|
||||
fclose(SEGDAT);
|
||||
}
|
||||
else if (ReadType == "16bit"){
|
||||
printf("Reading 16-bit input data \n");
|
||||
short int *InputData;
|
||||
InputData = new short int[SIZE];
|
||||
FILE *SEGDAT = fopen(Filename.c_str(),"rb");
|
||||
if (SEGDAT==NULL) ERROR("Error reading segmented data");
|
||||
size_t ReadSeg;
|
||||
ReadSeg=fread(InputData,2,SIZE,SEGDAT);
|
||||
if (ReadSeg != size_t(SIZE)) printf("lbpm_segmented_decomp: Error reading segmented data (rank=%i)\n",rank);
|
||||
fclose(SEGDAT);
|
||||
for (int n=0; n<SIZE; n++){
|
||||
SegData[n] = char(InputData[n]);
|
||||
}
|
||||
}
|
||||
printf("Read segmented data from %s \n",Filename.c_str());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user