module CANAL_NOMES

! objetivo: definir as variáveis principais do programa CANAL

! programador: Carlos Henrique Marchi
! local:       SINMEC/UFSC - Florianópolis - SC

! última alteração = 14 Fev 00

!-------------------------------------------------

implicit none

integer :: unit_main = 10 ! identificador do arquivo de listagem do caso
integer :: unit_aux  = 90 ! identificador de arquivos auxiliares

character*(50) :: inicio = 'canal.inicio.ent' ! nome do arquivo de dados de inicialização do programa

integer :: modelo  ! 1=exato; 2=numérico c/props.constantes; 3=numérico c/props.variáveis 

! *** GEOMETRIA ***

integer :: n ! número total de volumes de controle que definem o perfil da tubeira;
             ! inclui as duas extremidades do domínio

integer :: m ! número de canais em torno da tubeira

! propriedades geométricas no centro dos volumes de controle
real*8,dimension(:),allocatable :: xp  ! coordenada espacial (m)
real*8,dimension(:),allocatable :: bp  ! altura do canal (m)
real*8,dimension(:),allocatable :: ep  ! espessura entre tubeira e canal (m)
real*8,dimension(:),allocatable :: tp  ! espessura das aletas do canal (m)
real*8,dimension(:),allocatable :: dp  ! diâmetro hidráulico da seção transversal do canal (m)
real*8,dimension(:),allocatable :: sbp ! área da base do canal (m2)
real*8,dimension(:),allocatable :: sap ! área molhada das aletas do canal (m2)
real*8,dimension(:),allocatable :: sp  ! área da seção transversal do canal (m2)

! propriedades geométricas na face leste dos volumes de controle
real*8,dimension(:),allocatable :: xe ! coordenada espacial (m)
real*8,dimension(:),allocatable :: re ! raio da tubeira (m)
real*8,dimension(:),allocatable :: ee ! espessura entre tubeira e canal (m)
real*8,dimension(:),allocatable :: le ! comprimento médio do escoamento no canal (m)
real*8,dimension(:),allocatable :: se ! área da seção transversal do canal (m2)

! *** CAMPOS ***

real*8,dimension(:),allocatable :: p     ! pressão (Pa)
real*8,dimension(:),allocatable :: T     ! temperatura (K)
real*8,dimension(:),allocatable :: u     ! velocidade (m/s)
real*8,dimension(:),allocatable :: ro    ! massa específica (kg/m3)

! *** OUTROS ***

real*8 :: p_in ! pressão na entrada do canal (Pa)

real*8 :: T_in ! temperatura na entrada do canal (K)

real*8 :: fm_t ! fluxo de massa em todos os canais (kg/s)
real*8 :: fm   ! fluxo de massa num único canal (kg/s)

real*8 :: q_sai ! taxa de transferência de calor advectivo na saída dos canais (W)
real*8 :: r_qwc ! razão q_wall / q_sai (adimensional)

real*8 :: Cd     ! coeficiente de descarga da tubeira (adimensional)
real*8 :: F_star ! empuxo dinâmico da tubeira (adimensional)

integer :: itg    = 1 ! número da iteração global corrente entre MACH1D e CANAL
integer :: itgmax = 1 ! número da iteração global máxima entre MACH1D e CANAL a realizar

integer :: w_p       ! freqüência de escrita de p; 0=não escreve
integer :: w_T       ! freqüência de escrita de T; 0=não escreve
integer :: w_u       ! freqüência de escrita de u; 0=não escreve
integer :: w_ro      ! freqüência de escrita de ro; 0=não escreve

integer :: w_grafico ! 1 = mostra gráficos dos resultados; 0=não
integer :: g_p       ! gráfico de p;  0=não; 1=mostra; 2=mostra com tubeira
integer :: g_T       ! gráfico de T;  0=não; 1=mostra; 2=mostra com tubeira
integer :: g_u       ! gráfico de u;  0=não; 1=mostra; 2=mostra com tubeira
integer :: g_ro      ! gráfico de ro; 0=não; 1=mostra; 2=mostra com tubeira

integer :: w_lista          ! 1 = cria listagem do caso; 0=não
integer :: lista_caso       ! lista conteúdo do arquivo do caso
integer :: lista_rex        ! lista conteúdo do arquivo de saída para o programa REX

integer :: le_canal_ger    ! lê conteúdo do arquivo de dados do módulo CANAL_GERAL
integer :: lista_canal_ger ! lista conteúdo do arquivo de dados do módulo CANAL_GERAL
integer :: copia_canal_ger ! gera back up do arquivo de dados do módulo CANAL_GERAL

character*100 :: titulo         ! título do caso a simular
character*50  :: nome_caso      ! nome do arquivo do caso a simular
character*50  :: nome_canal_ger ! nome do arquivo de dados do módulo CANAL_GERAL
character*50  :: nome_parede    ! nome do arquivo de dados do programa PAREDE

character*50 :: arquivo_nome_inicio_modulo    ! nome do arquivo de dados do módulo ARQUIVO
character*50 :: exato_canal_nome_inicio_modulo ! nome do arquivo de dados do módulo EXATO_CANAL
character*50 :: plota_nome_inicio_modulo      ! nome do arquivo de dados do módulo PLOTA
character*50 :: num_ger_nome_inicio_modulo    ! nome do arquivo de dados do módulo NUMERICO_GERAL
character*50 :: num_cte_nome_inicio_modulo    ! nome do arquivo de dados do módulo NUMERICO_CONSTANTE
character*50 :: num_var_nome_inicio_modulo    ! nome do arquivo de dados do módulo NUMERICO_VARIAVEL

!-------------------------------------------------

end module CANAL_NOMES