• LinkedIn
  • Join Us on Google Plus!
  • Subcribe to Our RSS Feed

Rabu, 13 Januari 2016

Simulasi Persamaan Maxwell 1D dan 2D menggunakan bahasa Java

07.08 // by Unknown // No comments

            Nhe kawan, bila anda punya masalah simulasi di Mata kuliah Fisika Komputasi mengenai Maxwell 1 Dimensi, berikut Score codenya..
Semoga Bermanfaat kawan..

Berikut Persamaannya Download :
1. Maxwell 1D
2. Maxwell 2D





/******************************************************
 *  Compilation:  javac Max1D.java
 *  Execution:    java Max1D
 *  Dependencies: StdDraw.java
 *  DedDy Santony
 *
 ****************************************************/

public class Max1D {
    public static void main(String[] args) {

        // set the scale of the coordinate system
        StdDraw.setXscale(0.0, 20.0);
        StdDraw.setYscale(-2.0, 2.0);

        int i, j, j2;
                        int nz = 400;
        long n;
        double dz = 0.05;
                        double c = 1.0;
        double dt = dz/c;// untuk stabil dt <= dz/c
        double dtdz = dt/dz;
                       
                        //allocate memory for array Ex and By
        double [] e = new double [nz+1]; // medan Ex
        double [] b = new double [nz+1]; // medan By
                       
                        // position for plotting Ex and By
                        double z1, y1, z2, y2;
                       
        // initialize to zeros
                for(i=0; i<=nz; i++){
                    e[i] = 0; b[i] = 0;
                        }

        // main loop
                n=0;
                        while(true){
                           n++;
                          
                           // Calculate By
           for(i=0; i<nz; i++){
                     b[i] = b[i] - dtdz*(e[i+1] - e[i]);
                           }
                           // Calculate Ex
                   for(i=1; i<nz; i++){
                     e[i] = e[i] - dtdz*(b[i] - b[i-1]);
                           }

                           // Boundary Conditions at edges
                           // Ex(0) = Ex(L) = 0
                   e[0] = 0;
                           e[nz] = 0;
                          
                  // input EM pulse
                  if(n<60){
             e[nz/2] += Math.exp(-0.005*((double)n-30.0)*((double)n-30.0));
          }

                          // input Sine wave
                          // e[nz/2] += Math.sin((double)n/10.0);
                         
                          // Draw Ex fields
                          StdDraw.clear();
                  for(i=0; i<nz; i++){
                                    z1 = i*dz;
            y1 = e[i];                                  
                    z2 = z1+dz;
            y2 = e[i+1];                              

            // draw ball on the screen
            StdDraw.setPenColor(StdDraw.RED);
            StdDraw.line(z1, y1, z2,y2);

                          }                   
          // display and pause for 20 ms
          StdDraw.show(20);
                        }
    }                 

}

0 komentar:

Posting Komentar