/* From: "COMPUTATIONAL PHYSICS, 2nd Ed" by RH Landau, MJ Paez, and CC Bordeianu Copyright Wiley-VCH, 2007. Electronic Materials copyright: R Landau, Oregon State Univ, 2007; MJ Paez, Univ Antioquia, 2007; and CC Bordeianu, Univ Bucharest, 2007. Support by National Science Foundation */ // DLA.java: diffusion limited aggregations import java.io.*; // Location of PrintWriter import java.util.*; // Location of Random import java.lang.*; // Location of Math public class DLA { public static void main(String[] argv) throws IOException, FileNotFoundException { PrintWriter q = new PrintWriter( // Data file new FileOutputStream("DLA.DAT"),true); // Initialize 48 bit pseudo-random number generator Random randnum = new Random(); // system clock is seed int max = 40000, size = 401, step = 0, trav = 0, hit = 0; double PI = Math.PI; int mem_old[] = new int[2]; mem_old[0] = 0; mem_old[1] = 0; double angle = 0.0, rad = 180.0; int i = 0, j = 0, x = 0, y = 0, dist = 0, dir = 0 ; int grid[][] = new int[size][size]; // Initialize for (i = 0;i1) && (y<399) &&(y>1) && (trav= 1 ) { hit = 1; // one neighbor occupied grid[x][y] = 1; // particle sticks, walk over } // move horizontally else if (randnum.nextDouble() <0.5 ) x += step; //move vertically else y+=step; trav++; } } // print resulting grid for ( i = 0; i=1) || (rr==0) ); fac = Math.sqrt(-2.0*Math.log(rr)/rr); mem_old[0] = (int)(5000.0*r1*fac); // save for next call mem_old[1] = 1; // set flag return((int)(5000.0*r2*fac)); } else { // return second number from last call mem_old[1] = 0; // unset flag return mem_old[0]; // return number from last call } } } // End of class