⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jingliut.java

📁 基于applet 的化工精馏单元操作实验模拟小程序
💻 JAVA
字号:
import java.io.*;
import java.awt.*;
import java.net.*;
import java.applet.*;
import java.util.Random;
import java.awt.event.*;
import java.awt.image.*;

public class JingLiuT extends Applet implements MouseListener,Runnable
{ 
   /*Image myImage;
   public void init(){
   	 myImage =getImge(getDocumentBase(),"exp_room.gif");
   }
   public void paint(Graphics g){
   	g.drawImage(myImage,0,0,this);
   }*/
    Image exppic=null; Graphics g=null; int graph_w=1000,graph_h=70;
   String exp_pic="exp_room.gif";  Thread rundemo=null;
   MediaTracker tracker;    Font font20=new Font("Serif",Font.PLAIN,14);
   public void init()
   {  g=getGraphics();  g.setColor(new Color(255,123,123));
   g.setFont(font20);  tracker=new MediaTracker(this);
   exppic=getImage(getDocumentBase(),"exp_room.gif"); tracker.addImage(exppic,0);
   //public void paint(Graphics g){g.drawImage(exppic,0,0,this);}
   try{tracker.waitForID(0);}  catch(InterruptedException e){ }
   addMouseListener(this);
   }
   public void mouseReleased(MouseEvent e){             }
   public void mouseEntered(MouseEvent e){      }
   public void mouseExited(MouseEvent e){       }
   public void mouseClicked(MouseEvent e){         }
   public void paint(Graphics g)  {  g.drawImage(exppic,0,0,null);}
   public void start()
   {
      if(rundemo==null){  rundemo=new Thread(this,"demo");rundemo.start();}}
    public void stop()
    {
      if(rundemo!=null){ rundemo.stop();    rundemo=null;}}
    public void run()
    {
     TowerData();
     while(rundemo!=null)
     {   try{Tower();Thread.sleep(50);}
     catch(InterruptedException e){stop();}
     }
     }
     //----------------------------------------------------------------------------
     //----------------------------------------------------------------------------
     int i,j,k;  int N=25,NS=N+1,NT=N+2,NM=6,NUM=NM+1,p=1699810;
     double QW,Mo,HLo,dM,Tb,sumx,sumy;  double dtime=1000.0/3600,alf=0.1,eps=0.0001;
     double TFL[]=new double[NT],  TFV[]=new double[NT];
     double HLs[]=new double[NUM], HVs[]=new double[NUM];
     double HFLS[]=new double[NUM],HFVS[]=new double[NUM], K[]=new double[NUM];
     double HFL[]=new double[NT],  HFV[]=new double[NT],   Q[]=new double[NT];
     double HL[]=new double[NT],HV[]=new double[NT];
     double M[]=new double[NT],T[]=new double[NT];
     double FL[]=new double[NT],FV[]=new double[NT];
     double L[]=new double[NT],V[]=new double[NT];
     double SL[]=new double[NT],SV[]=new double[NT];
     double x[][]=new double[NT][NUM],y[][]=new double[NT][NUM];
     double xf[][]=new double[NT][NUM],yf[][]=new double[NT][NUM];
     
     double AK[]={0,-234.728,57.152,38.65,45.69,-13.43,-13.43};
     double BK[]={0,1.48426,-0.442,-0.305,-0.34860,0.10073,0.10073};
     double CK[]={0,-0.2025e-2,0.10536e-2,0.7856e-3,0.8259e-3,-0.276e-3,-0.276e-3};
     double DK[]={0,0,-0.495e-6,0.493e-6,0.493e-6,0.317e-6,0.177e-6,0.177e-6};
     
     double AL[]={0,-4085.14,-41367.8,80430.6,10730.-12868.4,-12868.4};
     double BL[]={0,46.053,220.36,-50.12,-74.31,64.2,64.2};
     double CL[]={0,0,-0.09947,0.1802,0.3504,0.19,0.19};
     
     double AV[]={0,1542.0,8174.0,2.2677e4,25451,47437,47437};
     double BV[]={0,37.68,32.093,-21.356,-33.356,-107.76,-107.76};
     double CV[]={0,0,0.04537,0.1121,0.1666,0.28488,0.28488};
     
     boolean K1=false,K2=true; double W,D,QF=0,Vt,xt,yt;		

public void mousePressed(MouseEvent e)
{
  int x=e.getX(),y=e.getY();
  if      (x>622 && y>468 && x<637 && y<483) K1=!K1;
  else if (x>622 && y>505 && x<640 && y<520) K2=!K2;
  else if (K1=false)              QF=0;
  else if (x>306 && y>522 && x<312 && y<528 && K1==true) QF=QF+0.1;
  else if (x>306 && y>514 && x<312 && y<520 && K1==true) QF=QF-0.1;
  if (QF>1) QF=1;if (QF<0) QF=0;
  if (K1=true) {g.setColor(new Color(255,0,0));g.fillRect(623,470,14,13);}
  else         {g.setColor(new Color(0,0,0));  g.fillRect(623,470,14,13);}
  if (K2=true) {g.setColor(new Color(255,0,0));g.fillRect(624,507,14,13);}
  else         {g.setColor(new Color(0,0,0));  g.fillRect(624,507,14,13);}
  if(QF>0)     {g.setColor(new Color(255,0,0));g.fillRect(306,514,6,6);}
  else         {g.setColor(new Color(0,0,0));  g.fillRect(306,514,6,6);}
}

public			 void TowerData()
{for (j=1;j<=N;j++)  T[j]=20;}

public void TowerInit()
{
	 QF=0.8;FL[11]=0.8*10;
  //FL[11]=QF*10;
  TFL[11]=101.14;
  if(V[1]>0)      D=0.3*FL[11];    if(D>V[1])   D=0;
  if(L[N]>0)      W=0.7*FL[11];    if(W>L[N])   W=0;

      L[0]=V[1]-D;HV[NS]=HV[N];     HL[0]=HL[1];
  if (M[N]>0.3) QW=30000;        
  //else QW=0;     //if(K2=true) QW=30000;
      // HL[N]=0;     HV[N]=0;
  for (i=1;i<NM;i++)
  {
   HLs[i]=BL[i]*T[N]+CL[i]*T[N]*T[N];  
   HVs[i]=AV[i]+BV[i]*T[N]+CV[i]*T[N]*T[N];
   HL[N]=HL[N]+y[N][i]*HLs[i];
   HV[N]=HV[N]+y[N][i]*HVs[i];
  }
  if(HV[N]-HL[N]>0)    V[NS]=V[NS]+dtime*(QW/(HV[N]-HL[N])-V[NS])/10;
  xf[11][1]=0.05; xf[11][2]=0.35;  xf[11][3]=0.15;  xf[11][4]=0.20; xf[11][5]=0.10;xf[11][5]=0.15;

  for(j=1;j<=N;j++) Q[j]=-QW/N*0.05;
  x[NS][1]=0.000002;  x[NS][2]=0.026579; x[NS][3]=0.244007; x[NS][4]=0.322723; x[NS][5]=0.162666; x[NS][6]=0.244023;
  for (Tb=T[N],sumy=1,k=0;V[NS]>eps && k<100;k++) 
  {
   for(sumy=0,i=1;i<=NM;i++)
      {
       K[i]=AK[i]+BK[i]*Tb+CK[i]*Tb*Tb+DK[i]*Tb*Tb*Tb;
       y[NS][i]=K[i]*x[NS][i];  sumy=sumy+y[NS][i];
      }
   Tb=Tb*(1+alf*(1-sumy));
   if(Math.abs(1-sumy)<eps)   break;   
  }
  if(Tb<20)    Tb=20;   T[N]=Tb;
  for(i=1;i<=NM;i++)   y[NS][i]=y[NS][i]/(sumy+1e-6);
  for(i=i;i<=NM;i++)   x[0][i]=y[1][i];

}

public void Tower()
{
  TowerInit();
  for(j=1;j<=N;j++)
  {
   Mo=M[j];   HLo=HL[j];
   dM=((FL[j]+L[j-1]+V[j+1]+FV[j])-(SL[j]+L[j]+V[j]+SV[j]))*dtime;
   M[j]=M[j]+dM;
   if(M[j]<0)   M[j]=0;
   L[j]=L[j]+Math.abs(M[j]-1)*dM;
   if(L[j]<0)    L[j]=0;
   for(sumx=0,i=1;i<=NM;i++)
   {
    if(M[j]<eps)    x[j][i]=0;
    else
        {
         xt=((FL[j]*xf[j][i]+L[j-1]*x[j-1][i]+V[j+1]*y[j+1][i]+FV[j]*yf[j][i]-            
              (V[j]+SV[j])*y[j][i])*dtime)/(M[j]-Mo+(SL[j]+L[j])*dtime);
         x[j][i]=x[j][i]+alf*(xt-x[j][i]);
        }
    if(x[j][i]<eps)  x[j][i]=0; sumx=sumx+x[j][i];
   }
   for(i=1;i<=NM;i++)   x[j][i]=x[j][i]/(sumx+1e-6);

   for(Tb=T[j],sumy=1,k=0;sumx>0.5 && k<1000;k++)
   {
    for(sumy=0,i=1;i<=NM;i++)
        {
          K[i]=AK[i]+BK[i]*Tb+CK[i]*Tb*Tb+DK[i]*Tb*Tb*Tb;
          y[j][i]=K[i]*x[j][i];
          sumy=sumy+y[j][i];
          Tb=Tb*(1+alf*(1-sumy));
        }
        if (Math.abs(1-sumy)<eps) break;
   }
   if(Tb<20)   Tb=20;T[j]=Tb;
   for(i=1;i<=NM;i++)   y[j][i]=y[j][i]/(sumy+1e-6);

   HL[j]=0;HV[j]=0;HFL[j]=0;    HFV[j]=0;
   for(i=1;i<=NM;i++)
       {
         HLs[i]=BL[i]*T[j]+CL[i]*T[j]*T[j];
         HVs[i]=AV[i]+BV[i]*T[j]+CV[i]*T[j]*T[j];
         HFLS[i]=BL[i]*TFL[j]+CL[i]*TFL[j]*TFL[j];
         HFVS[i]=BL[i]*TFV[j]+CL[i]*TFV[j]*TFV[j];
         HL[j] =HL[j]+x[j][i]*HLs[i];       HV[j]=HV[j]+y[j][i]*HVs[i];
         HFL[j]=HFL[j]+xf[j][i]*HFLS[i];    HFV[j]=HFV[j]+yf[j][i]*HFVS[i];   
       }
    Vt=((FL[j]*HFL[j]+L[j-1]*HL[j-1]+V[j+1]*HV[j+1]+FV[j]*HFV[j]+Q[j]-
        (SL[j]*HL[j]+L[j]*HL[j]+SV[j]*HV[j])-(M[j]*HL[j]-Mo*HL[j])/dtime))/(HV[j]+eps);
    V[j]=V[j]+alf*(Vt-V[j]);
    if(V[j]<0 || V[j+1]<eps) V[j]=0;
  }
  output();
}

public void output()
{
   int i,j,k;String str;
   k=40;
 g.setColor(new Color(212,226,220)); g.fillRect(0,0,1024,768);
 g.setColor(new Color(255,0,0));     g.drawString("F:"+FL[11],20,20);
 
 for(j=1;j<=10;j++){

 
 	 
 	 g.drawString("x("+j+","+"1)"+x[j][1]+"   "+"x("+j+","+"2)"+x[j][2]+"  "+"x("+j+","+"3)"+x[j][3]+"  "+"x("+j+","+"4)"
 	                 +x[j][4]+"  "+"x("+j+","+"5)"+x[j][5]+"x("+j+","+"6)"+x[j][6]+"  "+"T("+j+")"+T[j],20,(40+(j-1)*20));
 	 
 
 }
 
 g.drawString("M(11):"+M[11]+"     V(11):"+V[11]+"V(12):"+V[12]+"M(19):"+M[19]+"V(18):"+V[18]+"     V(19):"+V[19],20,(40+((j++)-1)*20));
 g.drawString("L(11):"+L[11]+"  "+"V(11)"+V[11]+"  "+"T(11)"+T[11]+"  "+"T(11)"+T[1],20,(40+((j++)-1)*20));
 g.drawString("L(19):"+L[19]+"  "+"V(19)"+V[19]+"  "+"T(19)"+T[19]+"  "+"T(1)"+T[1],20,(40+((j++)-1)*20));
 g.drawString("x(11):"+x[11][1]+"  "+x[11][2]+"  "+x[11][3]+"  "+x[11][4]+"  "+x[11][5]+"  "+x[11][6],20,(40+((j++)-1)*20));
 g.drawString("x(1):"+x[1][1]+"  "+x[1][2]+"  "+x[1][3]+"  "+x[1][4]+"  "+x[1][5]+"  "+x[1][6],20,(40+((j++)-1)*20));
 for (j=12;j<=26;j++){

 
 	  
 	 g.drawString("x("+j+","+"1)"+x[j][1]+"   "+"x("+j+","+"2)"+x[j][2]+"  "+"x("+j+","+"3)"+x[j][3]+"  "+"x("+j+","+"4)"
 	                 +x[j][4]+"  "+"x("+j+","+"5)"+x[j][5]+"x("+j+","+"6)"+x[j][6]+"  "+"T("+j+")"+T[j],20,(40+(j+4)*20));;
 
 }
 //g.drawString("x(19):"+x[19][1]+"  "+x[19][2]+"  "+x[19][3]+"  "+x[19][4]+"  "+x[19][5],90,780);
} 

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -