// netprod.java // Net Production // adapted from a program in basic by H.T. Odum & E. Odum, 1994 import java.applet.*; import java.awt.*; public class netprod extends Applet { Label prompt1, prompt2, prompt3; TextField input1, input2, input3; Button drawbutton; double q, k1, k2, t, t0, t1, d0, q0, q1, dq1, p, c, s, dq, s1, p1; int n; public void init() { prompt1 = new Label("Start value for Q : "); input1 = new TextField("1", 5); add(prompt1); add(input1); prompt2 = new Label("K1 Rate of production : "); input2 = new TextField("1", 5); add(prompt2); add(input2); prompt3 = new Label("K2 Rate of consumption : "); input3 = new TextField("20", 5); add(prompt3); add(input3); drawbutton = new Button("Draw"); add(drawbutton); } public boolean action(Event e, Object o) { q = 0.1f*(float)Integer.parseInt(input1.getText()); k1 = 0.01f*(float)Integer.parseInt(input2.getText()); k2 = 0.01f*(float)Integer.parseInt(input3.getText()); repaint(); return true; } public void paint(Graphics g) { g.drawRect(0,90,320,250); g.drawLine(0,150,320,150); g.drawLine(0,200,320,200); g.drawString("Source S", 30,140); g.drawString("Gross Production P", 30,180); g.drawString("Net Production P-C", 30,215); g.drawString("Storage Q", 30,320); t=0; t1=0.001f; n=1; d0=300; q0=300; dq1=0.001f; while (t<320) { switch(n) { case 1: s=200000; break; case 2: s=350000; break; case 3: s=450000; break; case 4: s=350000; break; default: n=1; s=200000; break; } n+=1; p=k1*s; c=k2*q; dq=p-c; q+=dq; if (t>0) { g.setColor(Color.red); g.drawLine((int)t1*10, (int)(150-s1/10000), (int)t*10, (int)(150-s/10000)); g.setColor(Color.green); g.drawLine((int)t1*10, (int)(340-q1/q0), (int)t*10, (int)(340-q/q0)); g.setColor(Color.blue); g.drawLine((int)t1*10, (int)(200-dq1/d0), (int)t*10, (int)(200-dq/d0)); g.setColor(Color.blue); g.drawLine((int)t1*10, (int)(200-p1/d0), (int)t*10, (int)(200-p/d0)); } q1=q; dq1=dq; s1=s; p1=p; t1=t; t+=1; } } } // Manuel Basler & e. Ortega, November 11th 2000