Para começar a utilizar

Neste capítulo esclareceremos os passos necessários para começar a utilizar o pacote.

Instalando o pacote

O pacote pode ser instalado em seu ambiente de duas formas distintas: através dos gerenciador de pacotes de Julia ou através do projeto clonado. As apresentaremos a seguir.

Através do gerenciador de pacotes de Julia

Ainda não subimos no gerenciador de pacotes.

Através do projeto clonado

Ao iniciar o REPL da Julia, você verá escrito julia>. Para utilizar o MyProject.jl é preciso adicioná-lo ao seu ambiente. Para isso, digite ] na linha de comando para entrar no modo package. Deverá aparecer algo como (nome_do_ambiente) pkg> no lugar. Em seguida, adicione-o como um pacote de desenvolvimento digitando

(nome_do_ambiente) pkg> dev C:\caminho\para\o\MyProject
  Resolving package versions...

Para verificar se o pacote está funcionando corretamente execute o comando test como apresentado abaixo.

(nome_do_ambiente) pkg> test MyProject
  Testing MyProject
  Status ...

Ao final deverá aparecer algo como

    Testing Running tests...
Test Summary: | Pass  Total  Time
caso1D.jl     |    2      2  0.6s
Test Summary: | Pass  Total  Time
caso2D.jl     |    2      2  0.1s
    Testing MyProject tests passed

Utilizando o pacote

A partir disso, é possível utilizar o MyProject incluindo o trecho abaixo no topo de seu código

using MyProject

O fluxo de implementação inicia definindo o conjunto de funções base. Primeiro declaramos a quantidade de elementos finitos. Em seguida, o tipo das funções base. Enfim, chamamos o método monta_base para a obtermos nossa base.

ne = 2^3

baseType = BaseTypes.linearLagrange
base = monta_base(baseType, ne)

Com a base definida, construímos a malha utilizando algumas funções já implementadas, como monta_malha_1D_uniforme. Para esta, precisamos declarar os pontos inicial e final do intervalo $[a, b]$.

a = 0
b = 1
malha = monta_malha_1D_uniforme(ne, base, a, b)

O próximo passo é definir os valores do problema. Para este tutorial, podemos utilizar valores de problemas exemplo do Caso 1D

example = 1
run_values = examples_1D(example)

(; α, β, f) = run_values

Em seguida, montamos uma função que referencia o operador bilinear $a(u,v)$ com parâmetros obtidos de run_values.

function ref_op_a(termos_equacao::TermosEquacao)
  (; ∇u, ∇v, u, v) = termos_equacao

  return β * dot(u, v) + α * dot(∇u, ∇v)
end

Enfim, com a f e a malha definidas e o operador $a(u, v)$ referenciado, basta resolver o sistema, digitando

C = solve_sys(f, malha, ref_op_a)

Obtendo o resultado

7-element Vector{Float64}:
 0.11108398583873315
 0.21339432867780742
 0.29760326069653276
 0.3532397670750393
 0.36802825874249573
 0.32711327201474155
 0.2121212287826553