// openaq.java // base on openaq.bas by H.T.Odum and E.C.Odum-U.Florida,1984 // Enrique Ortega DEA-FEA-Unicamp 12 abril 2002 import java.applet.Applet; import java.applet.*; import java.awt.*; import java.awt.event.*; /* */ public class openaq extends Applet implements ActionListener { Label titulo; Label rotulo1, rotulo2, rotulo3, rotulo4, rotulo5, rotulo6, rotulo7, rotulo8, rotulo9, rotulo10, rotulo11; TextField caixa1, caixa2, caixa3, caixa4, caixa5, caixa6, caixa7, caixa8, caixa9, caixa10, caixa11; Button botao; double Q,NT,F,Z,X,XS, K0,K1,K2,K3,K4,K5; public void init() { titulo = new Label("Simulação de um aquário aberto com troca de oxigênio"); add(titulo); rotulo1 = new Label("Q:"); caixa1 = new TextField("10",3); add(rotulo1); add(caixa1); rotulo2 = new Label("NT:"); caixa2 = new TextField("1.5",3); add(rotulo2); add(caixa2); rotulo3 = new Label("F:"); caixa3 = new TextField("1.0",3); add(rotulo3); add(caixa3); rotulo4 = new Label("Z:"); caixa4 = new TextField("1.0",3); add(rotulo4); add(caixa4); rotulo5 = new Label("Xs:"); caixa5 = new TextField("8",3); add(rotulo5); add(caixa5); rotulo6 = new Label("K0:"); caixa6 = new TextField("9",2); add(rotulo6); add(caixa6); rotulo7 = new Label("K1:"); caixa7 = new TextField("10",2); add(rotulo7); add(caixa7); rotulo8 = new Label("K2:"); caixa8 = new TextField("10",2); add(rotulo8); add(caixa8); rotulo9 = new Label("K3:"); caixa9 = new TextField("0.01",2); add(rotulo9); add(caixa9); rotulo10 = new Label("K4:"); caixa10 = new TextField("0.01",2);add(rotulo10);add(caixa10); rotulo11 = new Label("K5:"); caixa11 = new TextField("1.0",2); add(rotulo11);add(caixa11); botao = new Button("Graficar!"); add(botao); botao.addActionListener(this); } public void actionPerformed(ActionEvent e) { if (e.getSource() == botao) { Q= Double.valueOf(caixa1.getText()).doubleValue(); NT=Double.valueOf(caixa2.getText()).doubleValue(); F= Double.valueOf(caixa3.getText()).doubleValue(); Z= Double.valueOf(caixa4.getText()).doubleValue(); XS=Double.valueOf(caixa5.getText()).doubleValue(); K0=Double.valueOf(caixa6.getText()).doubleValue(); K1=Double.valueOf(caixa7.getText()).doubleValue(); K2=Double.valueOf(caixa8.getText()).doubleValue(); K3=Double.valueOf(caixa9.getText()).doubleValue(); K4=Double.valueOf(caixa10.getText()).doubleValue(); K5=Double.valueOf(caixa11.getText()).doubleValue(); repaint(); } } public void paint (Graphics g) { double T0, S0, N0, X0, Q0, P0, R0; double T, DT, DQ, S, N, R, DX, X, P; T=0; DT=0.01; S=0; DQ=0; N=0; R=0; DX=0; X=6; P=0; T0= 3; S0=30; Q0=15; N0=10; R0=30; X0=3; P0=30; g.drawRect(80,120,320,240); g.drawLine(80,160,400,160); g.drawLine(80,200,400,200); g.drawLine(80,240,400,240); g.drawLine(80,280,400,280); g.drawLine(80,320,400,320); g.setColor(Color.black); g.drawString("E. solar ", 5, 140); g.drawString("Nutrientes", 5, 180); g.drawString("Oxigênio ", 5, 220); g.drawString("P.líquida ", 5, 260); g.drawString("Produção ", 5, 300); g.drawString("Respiração", 5, 330); g.setColor(Color.black); g.drawString("R", 5, 320); g.setColor(Color.blue); g.drawString("S", 5, 150); g.setColor(Color.red); g.drawString("N", 5, 190); g.setColor(Color.green); g.drawString("X", 5, 230); g.setColor(Color.pink); g.drawString("DQ",5, 270); g.setColor(Color.orange);g.drawString("P", 5, 310); g.setColor(Color.black); g.drawString("R", 5, 320); do { g.setColor(Color.blue); g.drawOval((int)(80+T*T0),(int)(160-S*S0),1,1); g.setColor(Color.red); g.drawOval((int)(80+T*T0),(int)(200-N*N0),1,1); g.setColor(Color.green); g.drawOval((int)(80+T*T0),(int)(240-X*X0),1,1); g.setColor(Color.pink); g.drawOval((int)(80+T*T0),(int)(280-DQ*Q0),1,1); g.setColor(Color.orange);g.drawOval((int)(80+T*T0),(int)(320-P*P0),1,1); g.setColor(Color.black); g.drawOval((int)(80+T*T0),(int)(320-R*R0),1,1); S = Math.sin(T / 3.78); if (S < 0) S = 0; N = ((NT - F * Q) / Z); if (N < 0.000001) N = .000001; R = S / (1 + K0 * N); DQ = K2 * R * N - K4 * X * Q; DX = K1 * R * N - K3 * X * Q + K5 * ((XS - X) / XS); Q = Q + DQ * DT; X = X + DX * DT / Z; P = K1 * R * N; R = K3 * X * Q; T = T + DT; } while ((T*T0)<=320); } }