Nhe kawan, bila anda punya masalah
simulasi di Mata kuliah Fisika Komputasi mengenai Maxwell 1 Dimensi, berikut
Score codenya..
/******************************************************
*
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