ざっぱ〜んの処理を並列化する

とりあえず並列化について。
マルチコアなら並列化しないと、CPUがもったいないです。
こんな感じで、内側のループが独立しているところについて、Executorで並列処理するといいかも。

        int procs = ManagementFactory.getOperatingSystemMXBean().getAvailableProcessors();
        ExecutorService exec = Executors.newFixedThreadPool(procs);
        //粒子密度を計算しておく
        for(int idx = 0; idx < elementCount; ++idx){
            final int i = idx;
            exec.execute(new Runnable() {
                public void run() {
                    for(int j = 0; j < i; ++j){
                        double d = Math.sqrt(
                                (elements[i].x - elements[j].x) * (elements[i].x - elements[j].x) +
                                (elements[i].y - elements[j].y) * (elements[i].y - elements[j].y));
                        double wd = (d < relap * parcSize) ? parcSize * relap / d - 1 : 0;
                        w[i][j] = wd;
                        w[j][i] = wd;
                    }
                }
            });
        }
        try{
            exec.shutdown();
            exec.awaitTermination(3, TimeUnit.MINUTES);
        }catch(InterruptedException e){
        }