// tank.java // tank with inflow and outflow // adapted from a program in basic by H.T. Odum & E. Odum, 1994 import java.applet.*; import java.awt.*; public class tank extends Applet { Label prompt1, prompt2, prompt3; TextField input1, input2, input3; Choice chooseEvent; Button drawButton; GridBagLayout gbLayout; GridBagConstraints gbConstraints; double q, k0, k, t1, qi, dq, j0, j; int a, t, ti; public void init() { prompt1 = new Label("Start value for Q : "); input1 = new TextField("10", 5); prompt2 = new Label("K Outflow coefficient : "); input2 = new TextField("5", 5); prompt3 = new Label(" t_1 : "); input3 = new TextField("96", 4); chooseEvent = new Choice(); chooseEvent.addItem("No change of inflow/outflow"); chooseEvent.addItem("Stop inflow at t_1"); chooseEvent.addItem("Stop outflow at t_1"); chooseEvent.addItem("Double inflow at t_1"); chooseEvent.addItem("Double outflow at t_1"); drawButton = new Button("Draw"); add(prompt1); add(input1); add(drawButton); add(prompt2); add(input2); add(prompt3); add(input3); add(chooseEvent); } public boolean action(Event e, Object o) { q = (float)Integer.parseInt(input1.getText()); k0 = 0.01f*(float)Integer.parseInt(input2.getText()); t1 = Integer.parseInt(input3.getText()); if (e.target instanceof Choice) a = chooseEvent.getSelectedIndex(); repaint(); return true; } public void paint(Graphics g) { g.drawRect(0,90,320,250); t=0; j0=4; j=j0; k=k0; while (t<320) { ti=t+1; if (ti >= t1) { switch(a) { case 0: break; case 1: j=0; break; case 2: k=0; break; case 3: j=j0*2; break; case 4: k=k0*2; break; default: break; } } dq=j-k*q; qi=q+dq; g.setColor(Color.blue); g.drawLine((int)t, (int)(340-q), (int)ti, (int)(340-qi)); t=ti; q=qi; } } } // Manuel Basler & E. Ortega, October 25th 2000/