// ireland.java resource based potato famine in Ireland // adapted from a program in basic by H.T. Odum & E. Odum, 1994 import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class ireland extends Applet implements ActionListener { Label lb01, lb02, lb03, lb04, lb05, lb06, lb07, lb08, lb09, lb10; TextField tf01, tf02, tf03, tf04, tf05, tf06, tf07, tf08, tf09, tf10; Button bt; double q, n, s2, c,t0; //variaveis globais public void init() { lb01 = new Label("Alim. Q:"); tf01 = new TextField("0.15",2); add(lb01);add(tf01); lb02 = new Label("Pop. N:"); tf02 = new TextField("0.95",3); add(lb02);add(tf02); lb03 = new Label("E.solar:"); tf03 = new TextField("2500",4); add(lb03);add(tf03); lb04 = new Label("Fator C:"); tf04 = new TextField("0.30",3); add(lb04);add(tf04); lb05 = new Label("Fator T0:"); tf05 = new TextField("0.100",3);add(lb05);add(tf05); bt = new Button("Plotar"); add(bt); bt.addActionListener(this); } public void actionPerformed(ActionEvent e) { if (e.getSource()==bt) { q = Double.valueOf(tf01.getText()).doubleValue(); n = Double.valueOf(tf02.getText()).doubleValue(); s2 = Double.valueOf(tf03.getText()).doubleValue(); c = Double.valueOf(tf04.getText()).doubleValue(); t0 = Double.valueOf(tf05.getText()).doubleValue(); repaint(); } } public void paint(Graphics g) { double c, t,dt,dq,dn, s0,q0,n0; double f,d,p, r,s,s1,w,x,y,z; double k0,k1,k2,k3,k4,k5,k6,k7,k8,k9; g.drawRect(0, 90,320,300); g.drawLine(0,190,320,190); g.drawLine(0,290,320,290); dt=1; // dt=1 t=0; s0 = 0.0067; q0 = 2.5; n0 = 33; w = 1; k0 = 18.8; k1 = 0.0022; k2 = 0.002; k3 = 0.007; k4 = 2; k5 = 0.0000081; k6 = 1.6E-07; k7 = 0.00006; k8 = 0.0025; k9 = 0.000002; d=0; s=0; y=0; z=0; // zerar variaveis do { g.setColor(Color.blue); g.drawOval((int)(t*t0),(int)(390-q*q0),1,1);//alimento g.setColor(Color.green); g.drawOval((int)(t*t0),(int)(290-n*n0),1,1);//populaçãp g.setColor(Color.red); g.drawOval((int)(t*t0),(int)(190-s*s0),1,1);//e.solar c = 0.3; //perda de energia solar if (t<1180) c=1; // pleno sol if (t>2010) c=1; // pleno sol s1 = c * (800 + 2000*Math.sin(t/60)); if (s1<0) s1=0; s = s1 + 200; r = s / (1 + k0*n); if (d>110) { if (s2 < 1500) y=1; // nuvens causam doença na batata if (s2 > 2000) y=0; // sem causam doença na batata } else if (d>100) { s2 = s; if (s2 < 1500) y=1; // nuvens causam doença na batata if (s2 > 2000) y=0; // sem causam doença na batata } f=q/n; if (f<5) x=1;// com fome else x=0; // sem fome if (x==1) w=0;//crescimento populacional alto if (x==1) z=1;//crescimento populacional moderado com emigração p = (k1*r*n)/(1+y*k4); dq = p - k2*q - k3*(q/n)*n; dn = w*k5*(q/n)*n - k6*r*n - k7*n - x*k8*n*n + z*k9*(q/n)*n; q = q + dq*dt; n = n + dn*dt; d = d + dt; if (d>365) d=0; t = t + dt; //dt }while ((t)<3200); //t*t0 320 } } // Camila Duarte & E. Ortega. January 24th, 2001