module MACH1D_NOMES

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

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

! última alteração =  9 Nov 05

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

implicit none

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

character*(50) :: inicio = 'mach1d.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*4 :: ng ! índice da garganta
real*8    :: xg ! coordenada da garganta (m)
real*8    :: sg ! área da garganta (m2)
real*8    :: rc ! raio de curvatura na garganta da tubeira (m)

real*8,dimension(:),allocatable :: xp ! coordenada espacial no centro do volume de controle
real*8,dimension(:),allocatable :: xe ! coordenada espacial na face leste do volume de controle

real*8,dimension(:),allocatable :: rp ! raio no centro do volume de controle
real*8,dimension(:),allocatable :: re ! raio na face leste do volume de controle

real*8,dimension(:),allocatable :: sp ! área no centro do volume de controle
real*8,dimension(:),allocatable :: se ! área na face leste do volume de controle

real*8,dimension(:),allocatable :: sn ! área da parede da tubeira

! *** CAMPOS ***

real*8,dimension(:),allocatable :: M     ! número de Mach (adimensional)
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)

real*8,dimension(:),allocatable :: p_tot ! pressão de estagnação (Pa)
real*8,dimension(:),allocatable :: T_tot ! temperatura de estagnação (K)

real*8,dimension(:),allocatable :: Fd    ! empuxo dinâmico (N)

! *** OUTROS ***

real*8 :: gama     ! razão de calores específicos (adimensional)
real*8 :: Rg       ! constante do gás (J/kg.K)
real*8 :: p_cam    ! pressão na câmara de combustão (Pa)
real*8 :: T_cam    ! temperatura na câmara de combustão (K)

real*8 :: g        ! aceleração gravitacional (m/s2)
real*8 :: F_g      ! empuxo padrão (N)

real*8 :: fm_exato ! fluxo de massa exato (kg/s)
real*8 :: fm       ! fluxo de massa numérico (kg/s)

real*8 :: F_exato  ! empuxo na saída da tubeira exato (N)   
real*8 :: F_ex     ! empuxo na saída da tubeira numérico (N)

real*8 :: Cf_exato ! coeficiente de empuxo exato (adimensional)
real*8 :: Cf       ! coeficiente de empuxo numérico (adimensional)

real*8 :: Isp_exato ! impulso específico exato (s)
real*8 :: Isp       ! impulso específico numérico (s)

real*8 :: c_star_exato ! velocidade característica exato (m/s)
real*8 :: c_star       ! velocidade característica numérico (m/s)

real*8 :: q_sai ! taxa de transferência de calor advectivo na saída da tubeira (W)
real*8 :: r_qwh ! razão q_wall / q_sai (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_M       ! freqüência de escrita de M; 0=não escreve
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_Fd      ! freqüência de escrita do Fd; 0=não escreve
integer :: w_p_tot   ! freqüência de escrita de p_tot; 0=não escreve
integer :: w_T_tot   ! freqüência de escrita de T_tot; 0=não escreve

integer :: w_grafico ! 1 = mostra gráficos dos resultados; 0=não
integer :: g_M       ! gráfico de M;  0=não; 1=mostra; 2=mostra com tubeira
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 :: g_Fd      ! gráfico de Fd; 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_mach1d_ger    ! lê conteúdo do arquivo de dados do módulo MACH1D_GERAL
integer :: lista_mach1d_ger ! lista conteúdo do arquivo de dados do módulo MACH1D_GERAL
integer :: copia_mach1d_ger ! gera back up do arquivo de dados do módulo MACH1D_GERAL

character*100 :: titulo          ! título do caso a simular
character*50  :: nome_caso       ! nome do arquivo do caso a simular
character*50  :: nome_mach1d_ger ! nome do arquivo de dados do módulo MACH1D_GERAL
character*50  :: nome_tubeira    ! nome do arquivo de dados da tubeira

character*50 :: arquivo_nome_inicio_modulo    ! nome do arquivo de dados do módulo ARQUIVO
character*50 :: exato_mach_nome_inicio_modulo ! nome do arquivo de dados do módulo EXATO_MACH
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
character*50 :: num_cong_nome_inicio_modulo   ! nome do arquivo de dados do módulo NUMERICO_CONGELADO
character*50 :: num_eq_nome_inicio_modulo     ! nome do arquivo de dados do módulo NUMERICO_EQUILIBRIO
character*50 :: num_tf_nome_inicio_modulo     ! nome do arquivo de dados do módulo NUMERICO_TAXA_FINITA

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

end module MACH1D_NOMES