/* * @(#)ArcTest.java 1.5 98/06/29 par PYL Dec 2007 -- oct 08 javac MurTesth.java mur_sol.java kolor.java; jar cf MurTesth.jar *.class; open index.html javac MurTesth.java mur_sol.java kolor.java; java MurTesth */ import java.awt.*; import java.awt.event.*; import java.applet.*; import java.io.*; // Import input-output Library public class MurTesth extends Applet { AilControls controls ; // The controls AilCanvas canvas; // The drawing area public void init() { setLayout(new BorderLayout()); canvas = new AilCanvas(); add("Center", canvas); add("South", controls = new AilControls(canvas)); } public void destroy() { remove(controls); remove(canvas); } public void start() { controls.setEnabled(true); } public void stop() { controls.setEnabled(false); } public void processEvent(AWTEvent e) { if (e.getID() == Event.WINDOW_DESTROY) { System.exit(0); } } public static void main(String args[]) { Frame f = new Frame("MurTest"); MurTesth murTest = new MurTesth(); murTest.init(); murTest.start(); f.add("Center", murTest); f.setSize(1024+256, 480); f.show(); } public String getAppletInfo() { return "Calcul de mur interactif test par PYL. Can be run \neither as a standalone application by typing 'java MurTest' \nor as an applet in the AppletViewer."; } } class AilCanvas extends Canvas { double hg,k1=1,e1=0.005,k2=.1,e2=0.005,k3=1,e3=0.005,hd=10,Tg=20,Td=-10; double x[],theta[],Bi; Font font; public void sauveparam() { String texte = "#OK a poursuivre!"; try{ FileOutputStream filename= new FileOutputStream("Mur.dat"); PrintStream ffile = new PrintStream(filename); for (int i = 0; i <= getBounds().width; i++) { ffile.println(x[i] + " " + theta[i]);} } catch (IOException Ex) { System.out.println(Ex.getMessage()); } } public void dro(Graphics g, double x1,double y1,double x2,double y2){ int i1,i2,j1,j2; int rr,gg,bb,wwidth,x0width; kolor kolorK; kolorK = new kolor(); Rectangle r = getBounds(); wwidth=6*r.width/10; x0width=2*r.width/10; i1 = x0width+(int)(r.width*x1)*6/10; i2 = x0width+(int)(r.width*x2)*6/10; j1 = (int)(r.height/2 - (r.height/2./2)*y1); j2 = (int)(r.height/2 - (r.height/2./2)*y2); g.drawLine(i1,j1,i2,j2); } public void paint(Graphics g) { Rectangle r = getBounds(); int wwidth,x0width; wwidth=6*r.width/10; x0width=2*r.width/10; int hlines = r.height / 10; int vlines = r.width / 10; x =new double[r.width+1]; theta=new double[r.width+1]; //trace grille g.setColor(Color.cyan); for (int i = 0; i <= hlines; i++) { g.drawLine(0, i * 10, r.width, i * 10); } for (int i = 0; i <= vlines-1; i++) { g.drawLine(i * 10, 0, i * 10, r.height); } x[0]=0;theta[0]=1; for (int i = 1; i <= wwidth; i++) { x[i]=i*1./wwidth; theta[i]=mur_sol.ture(x[i],Tg,hg,k1,e1,k2,e2,k3,e3,hd,Td); // courbe solution g.setColor(Color.black); g.setFont(font); dro(g, x[i-1],theta[i-1],x[i],theta[i]); //System.out.println("OK "+ (i+x0width)+ " " + x[i]); g.setColor(kolor.code(theta[i])); g.drawLine(x0width+i,r.height -64,x0width+i,32); } System.out.println("OK"); g.setColor(Color.black); g.drawLine(0, r.height/2 , r.width, r.height/2 ); //g.drawLine(0, r.height , r.width, r.height ); int ii1=(int)(wwidth*e1/(e1+e2+e3)); int ii2=(int)(wwidth*(e1+e2)/(e1+e2+e3)); g.drawLine(x0width+ii1,r.height -64,x0width+ii1,32); g.drawLine(x0width+ii2,r.height -64,x0width+ii2,32); int sx = 10; int sy = r.height - 32; g.drawString("Distribution de Temperature dans le Mur,", r.width/3, 16); g.drawString(" Temperature donnee /Diffusion / Diffusion / Diffusion / Coefficient d'echange", r.width/3, sy-14); g.drawString("T(x)",x0width,16); g.drawString("x",x0width+wwidth+16,r.height/2-16); g.drawString("epaisseur totale = " + (e1+e2+e3), r.width/3, sy); // g.drawString("Rtotale = " + hg, sx, sy + 14); // g.drawString("Q= " + k + " W", sx+80, sy + 14); // g.drawString("L = " + L, sx+160, sy + 14); // g.drawString("a = " + a, sx+240, sy + 14); // g.drawString("coeff Žchange gauche, mur num. 1, k1 et e1, mur num.2 k2 et e2, mur numŽro 3 k2 et e2 " // + a, sx, sy + 14+17); sauveparam(); } public void redraw(double pTg, double pk1, double pe1,double pk2, double pe2, double pk3, double pe3, double phd, double pTd) { this.Tg =pTg; this.Td = pTd; this.k1 =pk1; this.e1 = pe1; this.k2 =pk2; this.e2 = pe2; this.k3 =pk3; this.e3 = pe3; this.hd =phd; repaint(); } } ////////////////////////////////////////// ////////////////////////////////////////// class AilControls extends Panel implements ActionListener { TextField Tg,Td,hg,hd,k1,e1,k2,e2,k3,e3; TextField h,k; TextField L; TextField a; AilCanvas canvas; public AilControls(AilCanvas canvas) { Button b = null; this.canvas = canvas; add(new Label("Tg=")); add(Tg = new TextField(Double.toString(20), 5)); add(new Label(" k1=")); add(k1 = new TextField("1", 5)); add(new Label(" e1=")); add(e1 = new TextField(".005", 5)); add(new Label(" k2=")); add(k2 = new TextField("0.1", 5)); add(new Label(" e2=")); add(e2 = new TextField(".005", 5)); add(new Label(" k3=")); add(k3 = new TextField("1", 5)); add(new Label(" e3=")); add(e3 = new TextField(".005", 5)); add(new Label("h=")); add(hd = new TextField(Double.toString(10), 5)); add(new Label("Td=")); add(Td = new TextField(Double.toString(-10), 5)); b = new Button("Calcul"); b.addActionListener(this); add(b); } public void actionPerformed(ActionEvent ev) { String label = ev.getActionCommand(); canvas.redraw( Double.parseDouble(Tg.getText().trim()), Double.parseDouble(k1.getText().trim()), Double.parseDouble(e1.getText().trim()), Double.parseDouble(k2.getText().trim()), Double.parseDouble(e2.getText().trim()), Double.parseDouble(k3.getText().trim()), Double.parseDouble(e3.getText().trim()), Double.parseDouble(hd.getText().trim()), Double.parseDouble(Td.getText().trim()) ); } }