simulação em MA usando Java
Transcrição
simulação em MA usando Java
Tanque.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 11/Jul/2010 import java.io.*; public class Tanque { public static void main(String[] args) throws IOException { // CONSTANTES // parametros do modelo do sistema final final final final final double double double double double g D d A a = 9.81; = 1.00; = 0.50; = (Math.PI*D*D/4); = (Math.PI*d*d/4); final double h0 = 1.25; // // // // // aceleracao da gravidade diametro do tanque diametro do ralo area da secao do tanque area da secao do ralo (m/s2) (m) (m) (m2) (m2) // nivel inicial do tanque (m) // parametros da simulacao final double dt final double tmax final int iplot = = = 0.001; 10.0; 10; // intervalo de integracao (s) // período de simulacao (s) // intervalos de integracao por ponto plotado = = 1.0; 2.0; // fluxo de entrada // instante inicial // sinal de entrada final double Q final double tstart // VARIAVEIS // variaveis da simulacao double double double double double double t; Qin; Qout; h; ha; v; // // // // // // tempo (s) fluxo de entrada (m3/s) fluxo de saida (m3/s) nivel do tanque (m) nivel do tanque no passo anterior (m) taxa de variacao do nivel do tanque (m/s) int k; // inicializacao ha = h0; h = ha; for (t=0,k=0; t<tmax; t+=dt,k++) { // obter o fluxo de entrada (vazão Qin) if (t >= tstart) Qin = Q; else Qin=0; // calcular o fluxo de saida no passo anterior Qout = a * Math.sqrt(2*g*h); // calcular a taxa de variacao do nivel do tanque dh/dt v = (Qin - Qout)/A; // integrar pelo metodo Euler explicito ha = h; h = ha + dt*v; // gravar resultado if ((k%iplot)==0) System.out.println(t+";"+h); } } } 1 of 1 (m3/s) (s)