Compare commits

..

No commits in common. "fe93aac7e50b3ce9462627cb57cb23dd38cc804e" and "64848eecc7f2d3d87478ee80bda013c1ccf1d527" have entirely different histories.

9 changed files with 313 additions and 365 deletions

1
.gitignore vendored
View File

@ -7,4 +7,5 @@
/.project /.project
/shared-folder /shared-folder
/shared-folder/** /shared-folder/**
/src/main/c/lib/**
/chunks /chunks

3
.gitmodules vendored
View File

@ -1,3 +0,0 @@
[submodule "src/main/c/lib/stb"]
path = src/main/c/lib/stb
url = https://github.com/nothings/stb.git

View File

@ -58,12 +58,12 @@ rm -f ./*.dll
# OUTPUT_FILE="./chunkmask.o" # OUTPUT_FILE="./chunkmask.o"
# gcc $COMPILE_FLAGS -I"$BASE_INCLUDE_DIR" -I"$OS_INCLUDE_DIR" $INPUT_FILES -o $OUTPUT_FILE # gcc $COMPILE_FLAGS -I"$BASE_INCLUDE_DIR" -I"$OS_INCLUDE_DIR" $INPUT_FILES -o $OUTPUT_FILE
COMPILE_FLAGS="-c -fPIC -m64 -mavx -mavx2 -march=native -Ofast -DSAVE_STEPS=$SAVE_STEPS" COMPILE_FLAGS="-c -fPIC -m64 -mavx -mavx2 -march=native -Ofast -msse -msse2 -msse3 -mmmx -m3dnow"
INPUT_FILES="./src/javainterface.c" INPUT_FILES="./src/javainterface.c"
OUTPUT_FILE="./javainterface.o" OUTPUT_FILE="./javainterface.o"
gcc $COMPILE_FLAGS -I"$BASE_INCLUDE_DIR" -I"$OS_INCLUDE_DIR" $INPUT_FILES -o $OUTPUT_FILE gcc $COMPILE_FLAGS -I"$BASE_INCLUDE_DIR" -I"$OS_INCLUDE_DIR" $INPUT_FILES -o $OUTPUT_FILE
COMPILE_FLAGS="-c -fPIC -m64 -mavx -mavx2 -march=native -Ofast -DSAVE_STEPS=$SAVE_STEPS" COMPILE_FLAGS="-c -fPIC -m64 -mavx -mavx2 -march=native -Ofast -msse -msse2 -msse3 -mmmx -m3dnow -DSAVE_STEPS=$SAVE_STEPS"
INPUT_FILES="./src/fluidsim.c" INPUT_FILES="./src/fluidsim.c"
OUTPUT_FILE="./fluidsim.o" OUTPUT_FILE="./fluidsim.o"
gcc $COMPILE_FLAGS -I"$BASE_INCLUDE_DIR" -I"$OS_INCLUDE_DIR" $INPUT_FILES -o $OUTPUT_FILE gcc $COMPILE_FLAGS -I"$BASE_INCLUDE_DIR" -I"$OS_INCLUDE_DIR" $INPUT_FILES -o $OUTPUT_FILE

@ -1 +0,0 @@
Subproject commit ae721c50eaf761660b4f90cc590453cdb0c2acd0

View File

@ -24,17 +24,9 @@ import org.lwjgl.system.MemoryUtil;
*/ */
public class FluidSim { public class FluidSim {
/**
* Load fluid sim library
*/
static { static {
String osName = System.getProperty("os.name").toLowerCase(); System.out.println(System.getProperty("user.dir"));
System.out.println(osName); System.load(System.getProperty("user.dir") + "/shared-folder/libfluidsim.dll");
if(osName.contains("win")){
System.load(new File("./shared-folder/libfluidsim.dll").toPath().toAbsolutePath().toString());
} else {
System.load(new File("./shared-folder/libfluidsim.so").toPath().toAbsolutePath().toString());
}
} }
public static final int DIM = 18; public static final int DIM = 18;

View File

@ -4,7 +4,6 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
@ -29,8 +28,8 @@ public class Main {
public static void main(String args[]){ public static void main(String args[]){
int dim = 1; int dim = 5;
int vdim = 1; int vdim = 5;
int i = 0; int i = 0;
long time = 0; long time = 0;
long lastTime = 0; long lastTime = 0;
@ -53,7 +52,6 @@ public class Main {
meshArray = initMeshes(dim,vdim,dim,simArray); meshArray = initMeshes(dim,vdim,dim,simArray);
} }
//uncomment this to generate test data //uncomment this to generate test data
// generateTestData(); // generateTestData();

View File

@ -1,7 +1,6 @@
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import org.junit.Test; import org.junit.Test;
@ -10,51 +9,47 @@ import electrosphere.Main;
public class LongRunTests { public class LongRunTests {
// @Test @Test
// public void test5by5Chunk1Step(){ public void test5by5Chunk1Step(){
// int dim = 5; int dim = 5;
// int maxTimestep = 1; int maxTimestep = 1;
// System.out.println("TEST: " + dim + "x" + dim + "x" + dim + " for " + maxTimestep + " steps"); System.out.println("TEST: " + dim + "x" + dim + "x" + dim + " for " + maxTimestep + " steps");
// //init chunk array //init chunk array
// FluidSim[][][] simArray = FluidSim.initFluidSim(dim,dim,dim); FluidSim[][][] simArray = FluidSim.initFluidSim(dim,dim,dim);
// //simulate the chunk //simulate the chunk
// for(int i = 0; i < maxTimestep; i++){ for(int i = 0; i < maxTimestep; i++){
// FluidSim.simChunks(simArray, i, Main.TIMESTEP); FluidSim.simChunks(simArray, i, Main.TIMESTEP);
// } }
// for(int x = 0; x < dim; x++){ for(int x = 0; x < dim; x++){
// for(int y = 0; y < dim; y++){ for(int y = 0; y < dim; y++){
// for(int z = 0; z < dim; z++){ for(int z = 0; z < dim; z++){
// InputStream testFileIS = this.getClass().getResourceAsStream("./testdata/" + dim + "by" + dim + "/" + maxTimestep + "steps/chunk_" + x + "_" + y + "_" + z + "_" + dim + "by" + dim + "Chunk" + maxTimestep + "Step.data"); InputStream testFileIS = this.getClass().getResourceAsStream("./testdata/" + dim + "by" + dim + "/" + maxTimestep + "steps/chunk_" + x + "_" + y + "_" + z + "_" + dim + "by" + dim + "Chunk" + maxTimestep + "Step.data");
// byte[] bytes; byte[] bytes;
// try { try {
// bytes = testFileIS.readAllBytes(); bytes = testFileIS.readAllBytes();
// ByteBuffer fromDiskBuffer = ByteBuffer.allocate(FluidSim.DIM * FluidSim.DIM * FluidSim.DIM * 4); ByteBuffer densityBytes = simArray[x][y][z].getDensityBuffer();
// fromDiskBuffer.order(ByteOrder.LITTLE_ENDIAN); int i = 0;
// fromDiskBuffer.put(bytes); while(densityBytes.hasRemaining()){
// fromDiskBuffer.flip(); boolean pass = bytes[i] == densityBytes.get();
// ByteBuffer densityBytes = simArray[x][y][z].getDensityBuffer(); assert(pass);
// int i = 0; i++;
// while(densityBytes.hasRemaining()){ }
// boolean pass = fromDiskBuffer.get() == densityBytes.get(); } catch (IOException e) {
// assert(pass); e.printStackTrace();
// i++; assert(false);
// } }
// } catch (IOException e) { }
// e.printStackTrace(); }
// assert(false); }
// }
// }
// }
// }
// System.out.println("PASSED"); System.out.println("PASSED");
// } }
// @Test // @Test
// public void test5by5Chunk50Step(){ // public void test5by5Chunk50Step(){

View File

@ -1,7 +1,6 @@
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import org.junit.Test; import org.junit.Test;
@ -10,188 +9,172 @@ import electrosphere.Main;
public class MediumRunTests { public class MediumRunTests {
// @Test @Test
// public void test3by3Chunk1Step(){ public void test3by3Chunk1Step(){
// int dim = 3; int dim = 3;
// int maxTimestep = 1; int maxTimestep = 1;
// System.out.println("TEST: " + dim + "x" + dim + "x" + dim + " for " + maxTimestep + " steps"); System.out.println("TEST: " + dim + "x" + dim + "x" + dim + " for " + maxTimestep + " steps");
// //init chunk array //init chunk array
// FluidSim[][][] simArray = FluidSim.initFluidSim(dim,dim,dim); FluidSim[][][] simArray = FluidSim.initFluidSim(dim,dim,dim);
// //simulate the chunk //simulate the chunk
// for(int i = 0; i < maxTimestep; i++){ for(int i = 0; i < maxTimestep; i++){
// FluidSim.simChunks(simArray, i, Main.TIMESTEP); FluidSim.simChunks(simArray, i, Main.TIMESTEP);
// } }
// for(int x = 0; x < dim; x++){ for(int x = 0; x < dim; x++){
// for(int y = 0; y < dim; y++){ for(int y = 0; y < dim; y++){
// for(int z = 0; z < dim; z++){ for(int z = 0; z < dim; z++){
// InputStream testFileIS = this.getClass().getResourceAsStream("./testdata/" + dim + "by" + dim + "/" + maxTimestep + "steps/chunk_" + x + "_" + y + "_" + z + "_" + dim + "by" + dim + "Chunk" + maxTimestep + "Step.data"); InputStream testFileIS = this.getClass().getResourceAsStream("./testdata/" + dim + "by" + dim + "/" + maxTimestep + "steps/chunk_" + x + "_" + y + "_" + z + "_" + dim + "by" + dim + "Chunk" + maxTimestep + "Step.data");
// byte[] bytes; byte[] bytes;
// try { try {
// bytes = testFileIS.readAllBytes(); bytes = testFileIS.readAllBytes();
// ByteBuffer fromDiskBuffer = ByteBuffer.allocate(FluidSim.DIM * FluidSim.DIM * FluidSim.DIM * 4); ByteBuffer densityBytes = simArray[x][y][z].getDensityBuffer();
// fromDiskBuffer.order(ByteOrder.LITTLE_ENDIAN); int i = 0;
// fromDiskBuffer.put(bytes); while(densityBytes.hasRemaining()){
// fromDiskBuffer.flip(); boolean pass = bytes[i] == densityBytes.get();
// ByteBuffer densityBytes = simArray[x][y][z].getDensityBuffer(); assert(pass);
// int i = 0; i++;
// while(densityBytes.hasRemaining()){ }
// boolean pass = fromDiskBuffer.get() == densityBytes.get(); } catch (IOException e) {
// assert(pass); e.printStackTrace();
// i++; assert(false);
// } }
// } catch (IOException e) { }
// e.printStackTrace(); }
// assert(false); }
// }
// }
// }
// }
// System.out.println("PASSED"); System.out.println("PASSED");
// } }
// @Test @Test
// public void test3by3Chunk50Step(){ public void test3by3Chunk50Step(){
// int dim = 3; int dim = 3;
// int maxTimestep = 50; int maxTimestep = 50;
// System.out.println("TEST: " + dim + "x" + dim + "x" + dim + " for " + maxTimestep + " steps"); System.out.println("TEST: " + dim + "x" + dim + "x" + dim + " for " + maxTimestep + " steps");
// //init chunk array //init chunk array
// FluidSim[][][] simArray = FluidSim.initFluidSim(dim,dim,dim); FluidSim[][][] simArray = FluidSim.initFluidSim(dim,dim,dim);
// //simulate the chunk //simulate the chunk
// for(int i = 0; i < maxTimestep; i++){ for(int i = 0; i < maxTimestep; i++){
// FluidSim.simChunks(simArray, i, Main.TIMESTEP); FluidSim.simChunks(simArray, i, Main.TIMESTEP);
// } }
// for(int x = 0; x < dim; x++){ for(int x = 0; x < dim; x++){
// for(int y = 0; y < dim; y++){ for(int y = 0; y < dim; y++){
// for(int z = 0; z < dim; z++){ for(int z = 0; z < dim; z++){
// InputStream testFileIS = this.getClass().getResourceAsStream("./testdata/" + dim + "by" + dim + "/" + maxTimestep + "steps/chunk_" + x + "_" + y + "_" + z + "_" + dim + "by" + dim + "Chunk" + maxTimestep + "Step.data"); InputStream testFileIS = this.getClass().getResourceAsStream("./testdata/" + dim + "by" + dim + "/" + maxTimestep + "steps/chunk_" + x + "_" + y + "_" + z + "_" + dim + "by" + dim + "Chunk" + maxTimestep + "Step.data");
// byte[] bytes; byte[] bytes;
// try { try {
// bytes = testFileIS.readAllBytes(); bytes = testFileIS.readAllBytes();
// ByteBuffer fromDiskBuffer = ByteBuffer.allocate(FluidSim.DIM * FluidSim.DIM * FluidSim.DIM * 4); ByteBuffer densityBytes = simArray[x][y][z].getDensityBuffer();
// fromDiskBuffer.order(ByteOrder.LITTLE_ENDIAN); int i = 0;
// fromDiskBuffer.put(bytes); while(densityBytes.hasRemaining()){
// fromDiskBuffer.flip(); boolean pass = bytes[i] == densityBytes.get();
// ByteBuffer densityBytes = simArray[x][y][z].getDensityBuffer(); assert(pass);
// int i = 0; i++;
// while(densityBytes.hasRemaining()){ }
// boolean pass = fromDiskBuffer.get() == densityBytes.get(); } catch (IOException e) {
// assert(pass); e.printStackTrace();
// i++; assert(false);
// } }
// } catch (IOException e) { }
// e.printStackTrace(); }
// assert(false); }
// }
// }
// }
// }
// System.out.println("PASSED"); System.out.println("PASSED");
// } }
// @Test @Test
// public void test3by3Chunk100Step(){ public void test3by3Chunk100Step(){
// int dim = 3; int dim = 3;
// int maxTimestep = 100; int maxTimestep = 100;
// System.out.println("TEST: " + dim + "x" + dim + "x" + dim + " for " + maxTimestep + " steps"); System.out.println("TEST: " + dim + "x" + dim + "x" + dim + " for " + maxTimestep + " steps");
// //init chunk array //init chunk array
// FluidSim[][][] simArray = FluidSim.initFluidSim(dim,dim,dim); FluidSim[][][] simArray = FluidSim.initFluidSim(dim,dim,dim);
// //simulate the chunk //simulate the chunk
// for(int i = 0; i < maxTimestep; i++){ for(int i = 0; i < maxTimestep; i++){
// FluidSim.simChunks(simArray, i, Main.TIMESTEP); FluidSim.simChunks(simArray, i, Main.TIMESTEP);
// } }
// for(int x = 0; x < dim; x++){ for(int x = 0; x < dim; x++){
// for(int y = 0; y < dim; y++){ for(int y = 0; y < dim; y++){
// for(int z = 0; z < dim; z++){ for(int z = 0; z < dim; z++){
// InputStream testFileIS = this.getClass().getResourceAsStream("./testdata/" + dim + "by" + dim + "/" + maxTimestep + "steps/chunk_" + x + "_" + y + "_" + z + "_" + dim + "by" + dim + "Chunk" + maxTimestep + "Step.data"); InputStream testFileIS = this.getClass().getResourceAsStream("./testdata/" + dim + "by" + dim + "/" + maxTimestep + "steps/chunk_" + x + "_" + y + "_" + z + "_" + dim + "by" + dim + "Chunk" + maxTimestep + "Step.data");
// byte[] bytes; byte[] bytes;
// try { try {
// bytes = testFileIS.readAllBytes(); bytes = testFileIS.readAllBytes();
// ByteBuffer fromDiskBuffer = ByteBuffer.allocate(FluidSim.DIM * FluidSim.DIM * FluidSim.DIM * 4); ByteBuffer densityBytes = simArray[x][y][z].getDensityBuffer();
// fromDiskBuffer.order(ByteOrder.LITTLE_ENDIAN); int i = 0;
// fromDiskBuffer.put(bytes); while(densityBytes.hasRemaining()){
// fromDiskBuffer.flip(); boolean pass = bytes[i] == densityBytes.get();
// ByteBuffer densityBytes = simArray[x][y][z].getDensityBuffer(); assert(pass);
// int i = 0; i++;
// while(densityBytes.hasRemaining()){ }
// boolean pass = fromDiskBuffer.get() == densityBytes.get(); } catch (IOException e) {
// assert(pass); e.printStackTrace();
// i++; assert(false);
// } }
// } catch (IOException e) { }
// e.printStackTrace(); }
// assert(false); }
// }
// }
// }
// }
// System.out.println("PASSED"); System.out.println("PASSED");
// } }
// @Test @Test
// public void test3by3Chunk500Step(){ public void test3by3Chunk500Step(){
// int dim = 3; int dim = 3;
// int maxTimestep = 500; int maxTimestep = 500;
// System.out.println("TEST: " + dim + "x" + dim + "x" + dim + " for " + maxTimestep + " steps"); System.out.println("TEST: " + dim + "x" + dim + "x" + dim + " for " + maxTimestep + " steps");
// //init chunk array //init chunk array
// FluidSim[][][] simArray = FluidSim.initFluidSim(dim,dim,dim); FluidSim[][][] simArray = FluidSim.initFluidSim(dim,dim,dim);
// //simulate the chunk //simulate the chunk
// for(int i = 0; i < maxTimestep; i++){ for(int i = 0; i < maxTimestep; i++){
// FluidSim.simChunks(simArray, i, Main.TIMESTEP); FluidSim.simChunks(simArray, i, Main.TIMESTEP);
// } }
// for(int x = 0; x < dim; x++){ for(int x = 0; x < dim; x++){
// for(int y = 0; y < dim; y++){ for(int y = 0; y < dim; y++){
// for(int z = 0; z < dim; z++){ for(int z = 0; z < dim; z++){
// InputStream testFileIS = this.getClass().getResourceAsStream("./testdata/" + dim + "by" + dim + "/" + maxTimestep + "steps/chunk_" + x + "_" + y + "_" + z + "_" + dim + "by" + dim + "Chunk" + maxTimestep + "Step.data"); InputStream testFileIS = this.getClass().getResourceAsStream("./testdata/" + dim + "by" + dim + "/" + maxTimestep + "steps/chunk_" + x + "_" + y + "_" + z + "_" + dim + "by" + dim + "Chunk" + maxTimestep + "Step.data");
// byte[] bytes; byte[] bytes;
// try { try {
// bytes = testFileIS.readAllBytes(); bytes = testFileIS.readAllBytes();
// ByteBuffer fromDiskBuffer = ByteBuffer.allocate(FluidSim.DIM * FluidSim.DIM * FluidSim.DIM * 4); ByteBuffer densityBytes = simArray[x][y][z].getDensityBuffer();
// fromDiskBuffer.order(ByteOrder.LITTLE_ENDIAN); int i = 0;
// fromDiskBuffer.put(bytes); while(densityBytes.hasRemaining()){
// fromDiskBuffer.flip(); boolean pass = bytes[i] == densityBytes.get();
// ByteBuffer densityBytes = simArray[x][y][z].getDensityBuffer(); assert(pass);
// int i = 0; i++;
// while(densityBytes.hasRemaining()){ }
// boolean pass = fromDiskBuffer.get() == densityBytes.get(); } catch (IOException e) {
// assert(pass); e.printStackTrace();
// i++; assert(false);
// } }
// } catch (IOException e) { }
// e.printStackTrace(); }
// assert(false); }
// }
// }
// }
// }
// System.out.println("PASSED"); System.out.println("PASSED");
// } }
} }

View File

@ -3,7 +3,6 @@
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import org.junit.Test; import org.junit.Test;
@ -15,188 +14,172 @@ import electrosphere.Main;
*/ */
public class ShortRunTest { public class ShortRunTest {
// @Test @Test
// public void test1by1Chunk1Step(){ public void test1by1Chunk1Step(){
// int dim = 1; int dim = 1;
// int maxTimestep = 1; int maxTimestep = 1;
// System.out.println("TEST: " + dim + "x" + dim + "x" + dim + " for " + maxTimestep + " steps"); System.out.println("TEST: " + dim + "x" + dim + "x" + dim + " for " + maxTimestep + " steps");
// //init chunk array //init chunk array
// FluidSim[][][] simArray = FluidSim.initFluidSim(dim,dim,dim); FluidSim[][][] simArray = FluidSim.initFluidSim(dim,dim,dim);
// //simulate the chunk //simulate the chunk
// for(int i = 0; i < maxTimestep; i++){ for(int i = 0; i < maxTimestep; i++){
// FluidSim.simChunks(simArray, i, Main.TIMESTEP); FluidSim.simChunks(simArray, i, Main.TIMESTEP);
// } }
// for(int x = 0; x < dim; x++){ for(int x = 0; x < dim; x++){
// for(int y = 0; y < dim; y++){ for(int y = 0; y < dim; y++){
// for(int z = 0; z < dim; z++){ for(int z = 0; z < dim; z++){
// InputStream testFileIS = this.getClass().getResourceAsStream("./testdata/" + dim + "by" + dim + "/" + maxTimestep + "steps/chunk_" + x + "_" + y + "_" + z + "_" + dim + "by" + dim + "Chunk" + maxTimestep + "Step.data"); InputStream testFileIS = this.getClass().getResourceAsStream("./testdata/" + dim + "by" + dim + "/" + maxTimestep + "steps/chunk_" + x + "_" + y + "_" + z + "_" + dim + "by" + dim + "Chunk" + maxTimestep + "Step.data");
// byte[] bytes; byte[] bytes;
// try { try {
// bytes = testFileIS.readAllBytes(); bytes = testFileIS.readAllBytes();
// ByteBuffer fromDiskBuffer = ByteBuffer.allocate(FluidSim.DIM * FluidSim.DIM * FluidSim.DIM * 4); ByteBuffer densityBytes = simArray[x][y][z].getDensityBuffer();
// fromDiskBuffer.order(ByteOrder.LITTLE_ENDIAN); int i = 0;
// fromDiskBuffer.put(bytes); while(densityBytes.hasRemaining()){
// fromDiskBuffer.flip(); boolean pass = bytes[i] == densityBytes.get();
// ByteBuffer densityBytes = simArray[x][y][z].getDensityBuffer(); assert(pass);
// int i = 0; i++;
// while(densityBytes.hasRemaining()){ }
// boolean pass = fromDiskBuffer.get() == densityBytes.get(); } catch (IOException e) {
// assert(pass); e.printStackTrace();
// i++; assert(false);
// } }
// } catch (IOException e) { }
// e.printStackTrace(); }
// assert(false); }
// }
// }
// }
// }
// System.out.println("PASSED"); System.out.println("PASSED");
// } }
// @Test @Test
// public void test1by1Chunk50Step(){ public void test1by1Chunk50Step(){
// int dim = 1; int dim = 1;
// int maxTimestep = 50; int maxTimestep = 50;
// System.out.println("TEST: " + dim + "x" + dim + "x" + dim + " for " + maxTimestep + " steps"); System.out.println("TEST: " + dim + "x" + dim + "x" + dim + " for " + maxTimestep + " steps");
// //init chunk array //init chunk array
// FluidSim[][][] simArray = FluidSim.initFluidSim(dim,dim,dim); FluidSim[][][] simArray = FluidSim.initFluidSim(dim,dim,dim);
// //simulate the chunk //simulate the chunk
// for(int i = 0; i < maxTimestep; i++){ for(int i = 0; i < maxTimestep; i++){
// FluidSim.simChunks(simArray, i, Main.TIMESTEP); FluidSim.simChunks(simArray, i, Main.TIMESTEP);
// } }
// for(int x = 0; x < dim; x++){ for(int x = 0; x < dim; x++){
// for(int y = 0; y < dim; y++){ for(int y = 0; y < dim; y++){
// for(int z = 0; z < dim; z++){ for(int z = 0; z < dim; z++){
// InputStream testFileIS = this.getClass().getResourceAsStream("./testdata/" + dim + "by" + dim + "/" + maxTimestep + "steps/chunk_" + x + "_" + y + "_" + z + "_" + dim + "by" + dim + "Chunk" + maxTimestep + "Step.data"); InputStream testFileIS = this.getClass().getResourceAsStream("./testdata/" + dim + "by" + dim + "/" + maxTimestep + "steps/chunk_" + x + "_" + y + "_" + z + "_" + dim + "by" + dim + "Chunk" + maxTimestep + "Step.data");
// byte[] bytes; byte[] bytes;
// try { try {
// bytes = testFileIS.readAllBytes(); bytes = testFileIS.readAllBytes();
// ByteBuffer fromDiskBuffer = ByteBuffer.allocate(FluidSim.DIM * FluidSim.DIM * FluidSim.DIM * 4); ByteBuffer densityBytes = simArray[x][y][z].getDensityBuffer();
// fromDiskBuffer.order(ByteOrder.LITTLE_ENDIAN); int i = 0;
// fromDiskBuffer.put(bytes); while(densityBytes.hasRemaining()){
// fromDiskBuffer.flip(); boolean pass = bytes[i] == densityBytes.get();
// ByteBuffer densityBytes = simArray[x][y][z].getDensityBuffer(); assert(pass);
// int i = 0; i++;
// while(densityBytes.hasRemaining()){ }
// boolean pass = fromDiskBuffer.get() == densityBytes.get(); } catch (IOException e) {
// assert(pass); e.printStackTrace();
// i++; assert(false);
// } }
// } catch (IOException e) { }
// e.printStackTrace(); }
// assert(false); }
// }
// }
// }
// }
// System.out.println("PASSED"); System.out.println("PASSED");
// } }
// @Test @Test
// public void test1by1Chunk100Step(){ public void test1by1Chunk100Step(){
// int dim = 1; int dim = 1;
// int maxTimestep = 100; int maxTimestep = 100;
// System.out.println("TEST: " + dim + "x" + dim + "x" + dim + " for " + maxTimestep + " steps"); System.out.println("TEST: " + dim + "x" + dim + "x" + dim + " for " + maxTimestep + " steps");
// //init chunk array //init chunk array
// FluidSim[][][] simArray = FluidSim.initFluidSim(dim,dim,dim); FluidSim[][][] simArray = FluidSim.initFluidSim(dim,dim,dim);
// //simulate the chunk //simulate the chunk
// for(int i = 0; i < maxTimestep; i++){ for(int i = 0; i < maxTimestep; i++){
// FluidSim.simChunks(simArray, i, Main.TIMESTEP); FluidSim.simChunks(simArray, i, Main.TIMESTEP);
// } }
// for(int x = 0; x < dim; x++){ for(int x = 0; x < dim; x++){
// for(int y = 0; y < dim; y++){ for(int y = 0; y < dim; y++){
// for(int z = 0; z < dim; z++){ for(int z = 0; z < dim; z++){
// InputStream testFileIS = this.getClass().getResourceAsStream("./testdata/" + dim + "by" + dim + "/" + maxTimestep + "steps/chunk_" + x + "_" + y + "_" + z + "_" + dim + "by" + dim + "Chunk" + maxTimestep + "Step.data"); InputStream testFileIS = this.getClass().getResourceAsStream("./testdata/" + dim + "by" + dim + "/" + maxTimestep + "steps/chunk_" + x + "_" + y + "_" + z + "_" + dim + "by" + dim + "Chunk" + maxTimestep + "Step.data");
// byte[] bytes; byte[] bytes;
// try { try {
// bytes = testFileIS.readAllBytes(); bytes = testFileIS.readAllBytes();
// ByteBuffer fromDiskBuffer = ByteBuffer.allocate(FluidSim.DIM * FluidSim.DIM * FluidSim.DIM * 4); ByteBuffer densityBytes = simArray[x][y][z].getDensityBuffer();
// fromDiskBuffer.order(ByteOrder.LITTLE_ENDIAN); int i = 0;
// fromDiskBuffer.put(bytes); while(densityBytes.hasRemaining()){
// fromDiskBuffer.flip(); boolean pass = bytes[i] == densityBytes.get();
// ByteBuffer densityBytes = simArray[x][y][z].getDensityBuffer(); assert(pass);
// int i = 0; i++;
// while(densityBytes.hasRemaining()){ }
// boolean pass = fromDiskBuffer.get() == densityBytes.get(); } catch (IOException e) {
// assert(pass); e.printStackTrace();
// i++; assert(false);
// } }
// } catch (IOException e) { }
// e.printStackTrace(); }
// assert(false); }
// }
// }
// }
// }
// System.out.println("PASSED"); System.out.println("PASSED");
// } }
// @Test @Test
// public void test1by1Chunk500Step(){ public void test1by1Chunk500Step(){
// int dim = 1; int dim = 1;
// int maxTimestep = 500; int maxTimestep = 500;
// System.out.println("TEST: " + dim + "x" + dim + "x" + dim + " for " + maxTimestep + " steps"); System.out.println("TEST: " + dim + "x" + dim + "x" + dim + " for " + maxTimestep + " steps");
// //init chunk array //init chunk array
// FluidSim[][][] simArray = FluidSim.initFluidSim(dim,dim,dim); FluidSim[][][] simArray = FluidSim.initFluidSim(dim,dim,dim);
// //simulate the chunk //simulate the chunk
// for(int i = 0; i < maxTimestep; i++){ for(int i = 0; i < maxTimestep; i++){
// FluidSim.simChunks(simArray, i, Main.TIMESTEP); FluidSim.simChunks(simArray, i, Main.TIMESTEP);
// } }
// for(int x = 0; x < dim; x++){ for(int x = 0; x < dim; x++){
// for(int y = 0; y < dim; y++){ for(int y = 0; y < dim; y++){
// for(int z = 0; z < dim; z++){ for(int z = 0; z < dim; z++){
// InputStream testFileIS = this.getClass().getResourceAsStream("./testdata/" + dim + "by" + dim + "/" + maxTimestep + "steps/chunk_" + x + "_" + y + "_" + z + "_" + dim + "by" + dim + "Chunk" + maxTimestep + "Step.data"); InputStream testFileIS = this.getClass().getResourceAsStream("./testdata/" + dim + "by" + dim + "/" + maxTimestep + "steps/chunk_" + x + "_" + y + "_" + z + "_" + dim + "by" + dim + "Chunk" + maxTimestep + "Step.data");
// byte[] bytes; byte[] bytes;
// try { try {
// bytes = testFileIS.readAllBytes(); bytes = testFileIS.readAllBytes();
// ByteBuffer fromDiskBuffer = ByteBuffer.allocate(FluidSim.DIM * FluidSim.DIM * FluidSim.DIM * 4); ByteBuffer densityBytes = simArray[x][y][z].getDensityBuffer();
// fromDiskBuffer.order(ByteOrder.LITTLE_ENDIAN); int i = 0;
// fromDiskBuffer.put(bytes); while(densityBytes.hasRemaining()){
// fromDiskBuffer.flip(); boolean pass = bytes[i] == densityBytes.get();
// ByteBuffer densityBytes = simArray[x][y][z].getDensityBuffer(); assert(pass);
// int i = 0; i++;
// while(densityBytes.hasRemaining()){ }
// boolean pass = fromDiskBuffer.get() == densityBytes.get(); } catch (IOException e) {
// assert(pass); e.printStackTrace();
// i++; assert(false);
// } }
// } catch (IOException e) { }
// e.printStackTrace(); }
// assert(false); }
// }
// }
// }
// }
// System.out.println("PASSED"); System.out.println("PASSED");
// } }
} }