private double[] computeCenterOfMass(ArrayList<IParticle> relevantParticles) { double[] com = new double[3]; for (IParticle p : relevantParticles) { com = DoubleArrays.add(com, p.get_coords()); } if (!relevantParticles.isEmpty()) { return DoubleArrays.multiply(1 / relevantParticles.size(), com); } else { System.out.println("no relevant particles present for computation"); return com; } }
/** Test of propagateSingle method, of class DiffusionEngine. */ @Test public void testPropagateSingle() { BufferedWriter out = null; try { String path = "./test/testInputFiles/test_diffusionEngine/"; String singleOutFileName = path + "DiffusionEngineTest_single.txt"; out = new BufferedWriter(new FileWriter(singleOutFileName)); IParticleAllAccess p = new Particle(0, 0, new double[] {15, 5, 5}); AdvancedSystemOut.println("p1 new coords a", p.get_coords(), ""); double[] newCoords = new double[p.get_coords().length]; newCoords = p.get_coords(); int nSteps = nIntegrationSteps; out.write("{"); for (int i = 0; i < nSteps; i++) { newCoords = DoubleArrays.add(newCoords, diffusionEngine.propagateSingle(p)); AdvancedSystemOut.println("p1 new coords aa", newCoords, ""); out.write("{"); for (int j = 0; j < newCoords.length; j++) { if (j == newCoords.length - 1) { out.write(Double.toString(newCoords[j])); } else { out.write(Double.toString(newCoords[j]) + ","); } } p.set_coords(newCoords); if (i == nSteps - 1) { out.write("}\n"); } else { out.write("},\n"); } } out.write("}\n"); } catch (IOException ex) { Logger.getLogger(DiffusionEngineTest.class.getName()).log(Level.SEVERE, null, ex); } finally { try { out.close(); } catch (IOException ex) { Logger.getLogger(DiffusionEngineTest.class.getName()).log(Level.SEVERE, null, ex); } } }
/** Test of propagatePair method, of class DiffusionEngine. */ @Test public void testPropagatePair() { BufferedWriter out = null; try { String path = "./test/testInputFiles/test_diffusionEngine/"; String singleOutFileName = path + "DiffusionEngineTest_pair.txt"; out = new BufferedWriter(new FileWriter(singleOutFileName)); System.out.println("propagatePair"); IParticleAllAccess p1 = new Particle(10, 0, new double[] {5, 5, 5}); IParticleAllAccess p2 = new Particle(11, 0, new double[] {5.1, 5.1, 5.1}); double dist; double[][] newCoords = new double[2][3]; newCoords[0] = p1.get_coords(); newCoords[1] = p2.get_coords(); int nSteps = nIntegrationSteps; out.write("{\n"); for (int i = 0; i < nSteps; i++) { dist = DoubleArrays.distance(p1.get_coords(), p2.get_coords()); System.out.println("dist: " + dist); double[][] cumulatedDisplacement = diffusionEngine.propagatePair(p1, p2, dist); newCoords[0] = DoubleArrays.add(newCoords[0], cumulatedDisplacement[0]); newCoords[1] = DoubleArrays.add(newCoords[1], cumulatedDisplacement[1]); // add a little noise: out.write("{"); for (int j = 0; j < newCoords.length; j++) { out.write("{"); for (int k = 0; k < newCoords[j].length; k++) { if (k == newCoords[j].length - 1) { out.write(Double.toString(newCoords[j][k])); } else { out.write(Double.toString(newCoords[j][k]) + ","); } } if (j == newCoords.length - 1) { out.write("}"); } else { out.write("},\n"); } } if (i == nSteps - 1) { out.write("}\n"); } else { out.write("},\n"); } // add a little noise newCoords[0] = DoubleArrays.add(newCoords[0], diffusionEngine.propagateSingle(p1)); newCoords[1] = DoubleArrays.add(newCoords[1], diffusionEngine.propagateSingle(p2)); p1.set_coords(newCoords[0]); p2.set_coords(newCoords[1]); } out.write("}"); } catch (IOException ex) { Logger.getLogger(DiffusionEngineTest.class.getName()).log(Level.SEVERE, null, ex); } finally { try { out.close(); } catch (IOException ex) { Logger.getLogger(DiffusionEngineTest.class.getName()).log(Level.SEVERE, null, ex); } } }