module calculos ! objetivo: calcular as soluções analítica e numérica use coeficientes use solver implicit none contains !------------------------------------------------------------------------------- subroutine solucao cpu = timef() call analitico call numerico cpu = timef() end subroutine solucao !------------------------------------------------------------------------------- subroutine analitico select case ( fonte ) case ( 0 ) T_exato = (dexp(x) - 1.0d0) / (dexp(1.0d0) - 1.0d0) T_exato(0) = 0.0d0 T_exato(N) = 1.0d0 T_media_exato = (dexp(1.0d0) - 2.0d0) / (dexp(1.0d0) - 1.0d0) inclinacao_exato = dexp(1.0d0) / (dexp(1.0d0) - 1.0d0) case ( 1 ) T_exato = x T_media_exato = 0.5d0 inclinacao_exato = 1.0d0 case ( 2 ) T_exato = x**2 T_media_exato = 1.0d0 / 3.0d0 inclinacao_exato = 2.0d0 case ( 3 ) T_exato = x**3 T_media_exato = 0.25d0 inclinacao_exato = 3.0d0 case ( 4 ) T_exato = x**4 T_media_exato = 0.2d0 inclinacao_exato = 4.0d0 end select end subroutine analitico !------------------------------------------------------------------------------- subroutine numerico call calcula_coeficientes_cds call tdma (N, aw, ap, ae, bp, T) call calcula_variaveis_interesse end subroutine numerico !------------------------------------------------------------------------------- subroutine calcula_variaveis_interesse inclinacao = (3.0d0*T(N) + T(N-2) - 4.0d0*T(N-1)) / (2.0d0*h) T_media = 0.0d0 do P = 1, N T_media = T_media + (T(P-1) + T(P)) end do T_media = h * T_media / 2.0d0 end subroutine calcula_variaveis_interesse !------------------------------------------------------------------------------- end module calculos