Model dyfuzji-reakcji
PMiKNoM seminaria - zajęcia 10
Wstęp
- Dyfuzja chlorków w betonach a porowatość i wiązanie.
Model wykonany na zajęciach 8 zakładał że transport jonów chlorkowych odbywa się w jednorodnym ośrodku ciągłym. W rzeczywistości, płyta betonowa jest ośrodkiem porowatym, a dyfuzja jonów zachodzi głównie w cieczy porowej, w porach betonu. W celu uwzględnienia porowatości lewą stronę prawa Fick'a należy pomnożyć przez porowatość `\phi`:
Dodatkowo zachodzi reakcja adsorpcji i część jonów zostaje związana w fazie stałej:
Adsorpcja (człon reakcyjny) może być opisana przy pomocy izoterm: liniowej, Langmuira lub Freunlicha. My użyjemy tej ostatniej. Szczegóły modelu w tym równania, rozwiązanie numeryczne oraz algorytm programu znajdują się poniżej.
Czasozależny model dyfuzji-reakcji - podstawowe wzory
Dyfuzja i wiązanie
Po uwzględnieniu informacji na temat porowatości betonu oraz wiązania chlorków w fazie stałej, prawo zachowania masy przybiera postać:
Człon reakcyjny, `r` wyznaczany jest przy użyciu izotermy Freundlicha:
Gęstość fazy stałej w betonie, `\rho_s` wyliczana jest z sumy ważonej:
Warunki początkowe i brzegowe
Zakładamy stałe stężenia na brzegach (warunki brzegowe Dirichleta):
Na początku procesu, próbka nie zawiera chlorków:
Całkowite stężenie chlorków
Całkowite stężenie chlorków (podana w `kg`/`kg` betonu) jest sumą chlorków wolnych i związanych:
Model dyfuzji-reakcji - rozwiązanie numeryczne
Rozwiązanie numeryczne powyższych równań bazuje na Metodzie Linii (MoL) oraz na metodzie jawnej Eulera.
Metoda Linii
Dzielimy rozpatrywany odcinek, na `n + 1` przedziałów, otrzymując punkty `x_0` do `x_{n+1}`. Odległość między kolejnymi punktami wynosi `h`. Definiujemy `c_i \equiv c(x_i)` oraz `C_{b,i} \equiv C_b(x_i)`. Drugą pochodną stężenia po położeniu zastępujemy ilorazem różnicowym, otrzymując następujący układ równań:
Metoda Eulera
Jeżeli `c_{i}` i `C_{b,i}` oznaczają stężenia w czasie `t_j`, a `\overline c_{i}` i `\overline C_{b,i}` oznaczają stężenia w czasie `t_{j+1}`, to wtedy:
Po wstawieniu wzoru na pochodną po czasie otrzymujemy:
Model dyfuzji-reakcji - algorytm programu
- Zadeklaruj stałe globalne `c_L`, `c_R`, `l`, `D`, `t_{end}`, `n`, `m`, a także `row`, `roc`, `fi`, `k`, `Kb` oraz `eta`.
- Procedurę główną rozpocznij od deklaracji zmiennych `h`, `dt`, `ros`, `\alpha`, `\beta`, `\gamma`, `i`, `j` oraz tablic `c(0 \text{ to } n+1)`, `c_\text{new}(1 \text{ to } n)` oraz `C_b(0 \text{ to } n+1)`.
- Wylicz wartość kroku `h` i kroku `dt`, gęstość `ros` oraz zmienne `\alpha`, `\beta`, `\gamma`.
- Zapisz warunek początkowy dla wszystkich punktów: `c(i)=0` i `C_b(i)=0` .
- Zapisz warunek brzegowy: `c(0)=c_L` i `c(n+1)=c_R`.
- Wykonaj pętlę zagnieżdżoną, w której dla każdego kroku czasowego (`j=1` do `m`) wykonane będą trzy pętle wewnętrzne:
- Program wyliczy nowe wartości stężeń chlorków wolnych, zapisując je w tablicy `c_\text{new}`, t.j.
dla `i = 1` do `n` `c_{\text{new},i} = c_{i} + \alpha ( c_{i+1}-2c_i+c_{i-1} ) - \beta ( c_i - (C_{b,i} \text{/} K_b)^{1\text{/}\eta} )`. - Program wyliczy nowe wartości stężeń chlorków związanych, zapisując w tablicy `C_b`, t.j.:
dla `i = 0` do `n+1` `C_{b,i} = C_{b,i} + \gamma ( c_i - (C_{b,i} \text{/} K_b)^{1\text{/}\eta} )`. - Program podmieni tablicę stężeń chlorków wolnych, tj.
dla `i = 1` do `n` `c_i=c_{\text{new},i}`.
- Program wyliczy nowe wartości stężeń chlorków wolnych, zapisując je w tablicy `c_\text{new}`, t.j.
- Wyświetl wyniki, w kolejnych kolumnach: `i \cdot h`, `C_{f r e e}(i)`, `C_{b o u n d}(i)`, `C_\{t o t}(i)`. (Patrz równanie 2.3.)
Model Dyfuzji-Reakcji - program
- Model Dyfuzji-Reakcji - implementacja w VBA.
- Porównanie wyników z aplikacją napisaną w JavaScript.