program STOKES_1p5 ! Escoamento Bidimensional Isotérmico e ! Permanente de Fluido Incompressível ! Versão atual 1.5 (21 Out 07) ! Versão 1.3 ( 6 Out 05) ! Versão 1.2 (29 Jul 05) ! Versão 1.1 (30 Abr 99) ! Versão original 1.0 (25 Mar 99) ! última alteração = 3 Nov 07 ! Autor: Carlos Henrique Marchi ! DEMEC/UFPR, Curitiba, PR ! MODELO MATEMÁTICO (equações diferenciais): ! ----------------------------------------- ! massa: du/dx + dv/dy = 0 ! QMLx: d(u2)/dx + d(uv)/dy = -dp/dx + mi*laplaciano(u) ! QMLy: d(uv)/dx + d(v2)/dy = -dp/dy + mi*laplaciano(v) - S ! x, y = coordenadas espaciais (m) ! u, v = velocidades nas direções x e y (m/s) ! p = pressão estática (Pa) ! mi = viscosidade absoluta (Pa.s) ! S = termo fonte; nulo no problema de Ghia ! Re = Ut * L / mi (número de Reynolds) ! Ut = velocidade máxima da tampa da cavidade (1 m/s) ! Cavidade quadrada (L=1 por H=1 m) ! ro = massa específica (1 kg/m3) ! Condição de contorno de Dirichlet para u e v ! Tipos de problemas pré-definidos: ! 1 = Shih: u na tampa é uma função de x; u e v nulos nas outras paredes ! 2 = Ghia: u na tampa é constante = 1; u e v nulos nas outras paredes ! MODELO NUMÉRICO (resumo): ! ------------------------ ! Incógnitas: u, v, p ! Condições de contorno de Dirichlet para u e v aplicadas com volumes fictícios ! A p é extrapolado linearmente dos nós internos para os contornos ! Método numérico: volumes finitos ! Funções de interpolação para u e v: ! CDS para os termos difusivos e de pressão ! UDS ou CDS (com correção adiada) para os termos advectivos ! Malha uniforme em cada direção ! Método de acoplamento pressão-velocidade: SIMPLEC ! Solução segregada (seqüencial) das equações diferenciais ! Solvers: Jacobi, Gauss-Seidel, SOR, ADI e MSI-5 ! Precisão: dupla ! Tempo é usado para avanço do processo iterativo ! Arranjo co-localizado de variáveis (média NHT/1994) ! Linguagem FORTRAN 95 ! Aplicativo usado: Fortran Intel 9.1 ! Tipo de projeto: Console; versão Release ! Variáveis de interesse: ! Valor mínimo da função de corrente, e seu X e Y, baseado na velocidade média ! u na face leste de cada volume e com integral retângulo ! Valor mínimo da função de corrente, e seu X e Y, baseado na velocidade média ! u na face leste de cada volume e com integral trapézio ! Fluxo de massa que escoa em y=0.5 e x[0;0.5]: obtido com a integração ! pela regra do retângulo da velocidade média v na face norte de cada volume ! Idem com a regra do trapézio ! Força viscosa da placa sobre o fluido: obtida com integração retângulo ! da derivada du/dy em y=1 obtida com velocidade nodal u e com UDS ! Força viscosa da placa sobre o fluido: obtida com integração retângulo ! da derivada du/dy em y=1 obtida com velocidade nodal u e com UDS-2 ! Força viscosa da placa sobre o fluido: obtida com integração trapézio ! da derivada du/dy em y=1 obtida com velocidade na face ue e com UDS ! Força viscosa da placa sobre o fluido: obtida com integração retângulo ! da derivada du/dy em y=0 obtida com velocidade nodal u e com DDS ! Derivada du/dy em x=0.5 e y=1: obtida com velocidade média u ! e com UDS; válido só para número de volumes pares em x; ! Pressão no centro do domínio: obtido por média aritmética de p nos ! quatro nós vizinhos ! Perfil da velocidade u em x = 0.5: obtido por média aritmética das ! velocidades na face leste nos dois volumes vizinhos ! Perfil da velocidade v em y = 0.5: obtido por média aritmética das ! velocidades na face norte nos dois volumes vizinhos ! Valor mínimo de u, e seu Y, do perfil da velocidade u em x = 0.5 obtido por ! média aritmética das velocidades na face leste nos dois volumes vizinhos ! Valor mínimo de v, e seu X, do perfil da velocidade v em y = 0.5 obtido por ! média aritmética das velocidades na face norte nos dois volumes vizinhos ! Valor máximo de v, e seu X, do perfil da velocidade v em y = 0.5 obtido por ! média aritmética das velocidades na face norte nos dois volumes vizinhos ! Pressão no centro do domínio obtido por média aritmética de 4 p nodais ! Estimativa inicial da solução numérica é igual a: ! Solução analítica do problema de Shih ou Zero ! Expressão genérica dos sistemas de equações discretizados: ! a(NP,1)*T(NPS) + a(NP,2)*T(NPW) + a(NP,3)*T(NP) + a(NP,4)*T(NPE) ! + a(NP,5)*T(NPN) = b(NP) ! onde T representa u, v ou plinha ! ARQUIVOS envolvidos no programa: ! ------------------------------- ! Executável: ! Stokes_1p5.exe ! Dados: ! Stokes_1p5.ent = arquivo principal de dados (do usuário) do programa ! Stokes_1p5_u_Shih.gnu = dados para gerar gráfico dos perfis de u no problema de Shih ! Stokes_1p5_v_Shih.gnu = dados para gerar gráfico dos perfis de v no problema de Shih ! Stokes_1p5_u_Ghia.gnu = dados para gerar gráfico dos perfis de u no problema de Ghia ! Stokes_1p5_v_Ghia.gnu = dados para gerar gráfico dos perfis de v no problema de Ghia ! Stokes_1p5_R.gnu = dados para gerar gráfico dos resíduo das equações ao longo das iterações ! Ghia_Re_100_U.dat = perfil de u no problema de Ghia para Re = 100 ! Ghia_Re_1000_U.dat = perfil de u no problema de Ghia para Re = 1000 ! Ghia_Re_10000_U.dat = perfil de u no problema de Ghia para Re = 10000 ! Ghia_Re_100_V.dat = perfil de v no problema de Ghia para Re = 100 ! Ghia_Re_1000_V.dat = perfil de v no problema de Ghia para Re = 1000 ! Ghia_Re_10000_V.dat = perfil de v no problema de Ghia para Re = 10000 ! Saídas: ! "caso".txt = saída principal do programa ! "caso".itn = algumas variáveis de interesse ao longo das iterações ! "caso".Richrdson_3p0 = variáveis de interesse para o programa Richardson 3.0 ! r.dat = resíduo das equações ao longo das iterações ! ucex.dat = perfil de u em x=1/2 (exato) ! vcex.dat = perfil de v em y=1/2 (exato). ! u.dat = perfil de u em x=1/2 (numérico) ! v.dat = perfil de v em y=1/2 (numérico) ! Fontes: ! Stokes_1p5_main.f90 = programa principal ! Stokes_1p5_coeficientes.f90 = calcula coeficientes dos sistemas de equações ! Stokes_1p5_dados.f90 = lê e lista os dados do programa ! Stokes_1p5_resultados.f90 = resolve equações e gera listagem dos resultados ! Stokes_1p5_solvers.f90 = solvers disponíveis ! Stokes_1p5_variaveis.f90 = define todas as variáveis globais do programa ! ! Outros arquivos: ! Notepad.exe = editor de arquivos ! Wgnuplot.exe = programa gerador de gráfico (versão 3.5) ! ----------------------------------------------- Seqüência para compilação dos módulos pela primeira vez após criar o projeto (com prefixo Stokes_1p5_): 1) VARIAVEIS.f90 2) SOLVERS.f90 3) DADOS.f90 4) COEFICIENTES.f90 5) RESULTADOS.f90 6) MAIN.f90