// // WaterDroplets.java // import java.applet.Applet; import java.awt.*; public class WaterDroplets extends Applet { private gVar p1 = null;private gVar p2 = null;private gVar p3 = null; private gVar p4 = null;private gVar p5 = null;private gVar p6 = null; static final long serialVersionUID = 989743789; public void init() { String[] args = {""}; main(args); } public void stop() { } public void paint(Graphics g) { String udir = System.getProperty("user.dir"); g.drawString(udir, 20,50); g.drawString("Hello, world!", 20,10); } static public void setCmdLine(int argc, String[] argv, int customArgc, String[] customArgv) { int i=0; for (;i= gridSizeX) ? -alpha[0] : 0; offset += i; // setup data main diagonal-1 for (i = 0; i < vectorSize; i++) bandValues[offset + i] = (i % gridSizeY > 0) ? -alpha[0] : 0; offset += i; // setup data main diagonal for (i = 0; i < vectorSize; i++) bandValues[offset + i] = mainDiag; offset += i; for (i = 0; i < vectorSize; i++) bandValues[offset + i] = (i >= gridSizeX) ? -alpha[0] : 0; offset += i; // setup data main diagonal-1 for (i = 0; i < vectorSize; i++) bandValues[offset + i] = (i % gridSizeY > 0) ? -alpha[0] : 0; offset += i; int[] bandOffsetDatas = {-gridSizeX, -1, 0, 1, gridSizeX}; // create the sparse matrix with input on band form A.assign(libra.sparseBanded(matrixSizeX, matrixSizeY, bandValues, bandOffsetDatas, bandCount)); gVar u = libra.floor(libra.mod(libra.step(0.0f, vectorSize - 1.0f, 1.0f), (float)gridSizeX)); gVar v = libra.floor(libra.div(libra.step(0.0f, vectorSize - 1.0f, 1.0f), (float)gridSizeX)); g1.assign(libra.add(libra.max(libra.sub(u, 1.0f), 0.0f), libra.mul(v, (float)gridSizeX))); g2.assign(libra.add(libra.min(libra.add(u, 1.0f), gridSizeX - 1.0f), libra.mul(v, (float)gridSizeX))); g3.assign(libra.add(u, libra.mul(libra.max(libra.sub(v, 1.0f), 0.0f), (float)gridSizeX))); g4.assign(libra.add(u, libra.mul(libra.min(libra.add(v, 1.0f), gridSizeX - 1.0f), (float)gridSizeX))); // setup initial solution, x = 0 x.assign(libra.zeros(vectorSize, 1)); // create drops by scattering a few random values into x int dropCount = (int)(gridSizeX / 20.0f); libra.scatter(libra.mul(libra.rand(dropCount, 1), (float)(x.rowCount() - 1)), libra.mul(libra.rand(dropCount, 1), 0.5f), x); } }