Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- n = 50;
- x[i_] := (2 (i - n))/n;
- y[j_] := 2 j/n - 1;
- stadium[i_, j_] :=
- stadium[i, j] =
- Or[(x[i] - 1)^2 + y[j]^2 < 0.9^2, (x[i] + 1)^2 + y[j]^2 <
- 0.9^2, -0.9 < y[j] < 0.9 && -0.9 < x[i] < 0.9];
- \[Phi]0 = N[Table[
- If[stadium[i, j], Exp[-20 (x[i]^2 + y[j]^2)], 0],
- {j, n}, {i, 2 n}]];
- \[Phi]stad = N[Table[
- If[stadium[i, j], 0, 1],
- {j, n}, {i, 2 n}]];
- Even[i_, j_] := (
- EvenQ[i ] && EvenQ[j] || OddQ[i] && OddQ[j]
- );
- update1[\[Phi]_] := Table[
- If[Not[stadium[i, j]], 0,
- If[
- Even[i, j],
- 0.5 (
- If[Not[stadium[i - 1, j]], 2, 1] \[Phi][[j, i + 1]]
- + If[Not[stadium[i + 1, j]], 2, 1] \[Phi][[j, i - 1]]
- + If[Not[stadium[i, j - 1]], 2, 1] \[Phi][[j + 1, i]]
- + If[Not[stadium[i, j + 1]], 2, 1] \[Phi][[j - 1, i]]
- - 2 \[Phi][[j, i]]
- ),
- \[Phi][[j, i]]
- ]
- ], {j, n}, {i, 2 n}];
- update2[\[Phi]_] := Table[
- If[Not[stadium[i, j]], 0,
- If[
- Even[i, j],
- \[Phi][[j, i]],
- 0.5 (
- If[Not[stadium[i - 1, j]], 2, 1] \[Phi][[j, i + 1]]
- + If[Not[stadium[i + 1, j]], 2, 1] \[Phi][[j, i - 1]]
- + If[Not[stadium[i, j - 1]], 2, 1] \[Phi][[j + 1, i]]
- + If[Not[stadium[i, j + 1]], 2, 1] \[Phi][[j - 1, i]]
- - 2 \[Phi][[j, i]]
- )
- ]
- ], {j, n}, {i, 2 n}];
- update[\[Phi]_] := update1[update2[\[Phi]]];
- t = 100;
- \[Phi]s = NestList[update, \[Phi]0, t];
- frame[i_] := ArrayPlot[\[Phi]s[[i]] + \[Phi]stad];
- Manipulate[
- frame[i]
- , {i, 1, t, 1}]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement