next up previous contents
Next: Definice bazovych funkci Up: Numericka kvadratura a hodnoty Previous: Numericka kvadratura a hodnoty   Contents

Konstrukce numericke kvadratury

Jeste je nutne preformulovat Kvadraturni vzorec sestrojime takto: uvazujeme referncni trojuhelnik ($\hat{K}$) s vrcholy $C=[-1,0]$, $A=[1,0]$ a $B=[0,1]$ (dale oznacme $D=[0,0]$.

=1.000000pt
\begin{picture}(320.00,60.00)(0.00,0.00)\thicklines
\put(60.00,0.00){\makebox...
...0,55){\makebox(0.00,0.00){{\bf C1}}}
\put(225,50){\line(0,-1){50}}
\end{picture}

Dale ctverec ($K$) s vrcholy $A_1=[1,0]$, $B_1=[1,1]$, $C_1=[0,1]$, $D_1=[0,0]$. Bilinearni zobrazeni $F^{-1}$ transformujici obdelnik/ctverec $K$ na trojuhelnik $T$ pak lze definovat tak, aby mapovalo body A1 na A, B1 na B, C1 na C a D1 na D. Tedy

$\displaystyle F^{-1}(x,y) = (\xi,\eta), \qquad (\xi,\eta)=(x-y,x y),\qquad [x,y]\in K.
$

Jacobian tohoto zobrazeni je $\vert(F^{-1})^\prime(x,y)\vert=x+y$. Tedy dle vety o substituci:

$\displaystyle \int\int_T f(\xi,\eta) \, d\xi d\eta = {\int\int}_C f(x-y,xy) (x+y)
dx dy.
$

Definujme funkci $g$ nasledovne

$\displaystyle g(x,y)=f(x-y,xy) (x+y).$

Je-li $f$ navic polynom st.$\le k$, lze $g(x,y)$ je funkce typu $P_{k+1}\times
P_{k+1}$. Tedy lze pouzit Gaussovskou kvadraturu. Necht $k=2l$. Uvazujme Gaussovskou kvadraturu s $l+1$ uzly na intervalu $\langle0,1\rangle$ (t.j. presnou pro $P_{k+1}$). Oznacime $\hat{x}_i,\hat{w}_i$ uzly a vahy teto kvadratury. Pak lze napsat:

$\displaystyle {\int\int}_C g(x,y) dx dy \approx \sum_{i,j=0,\dots,l} \hat{w}_i
\hat{w}_j g(\hat{x}_i,\hat{x}_j).
$

Rovnost zde nastava pro funkce $g\in P_{k+1}\times P_{k+1}$. S vyuzitim predchoziho mame

$\displaystyle {\int\int}_T f(\xi,\eta) d\xi d\eta \approx \sum_{i,j=0,\dots,l} ...
...}_i
\hat{w}_j (\hat{x}_i+\hat{x}_j) f(\hat{x}_i-\hat{x}_j,\hat{x}_j\hat{x}_i).
$

Rovnost nastava pro $f\in P_k$, kde $k=2l$. Pozn. Pro polynomy st. 8 budeme potrebovat 25 uzlu. Dimenze prostoru polynomu je 36.

V nasem pripade pouzivame jako referencni element trojuhelnik $\hat{T}$ s body oznacenymi jakozto $(\hat{\xi},\hat{\eta})$. Trojuhelnik $\hat{T}$ lze zobrazit na $T$ pomoci linearniho zobrazeni

$\displaystyle G(\hat{\xi},\hat{\eta}) =
(2 \cdot \hat{\xi}-1,\hat{\eta})
$

a tedy $\vert(G^{-1})^\prime\vert$

$\displaystyle {\int\int}_{\hat{T}} f(\hat{\xi},\hat{\eta}) d\hat{\xi} d\hat{\eta} =
\frac12 {\int\int}_T f(\hat{\xi}(\xi),\hat{\eta}(\eta)) d\xi d{\eta}
$



Hodnoty na referencnim trojuhelniku $\hat{T}$ jsou definovany v uzlech kvadratury. Hodnoty jsou definovany pomoci barycentrickych souradnic $\lambda_i$ a $i=0,1,2$. Razeni bazovych funkci je nasledovne pro trojuhelnik o vrcholech ABC: node(A), node(B), node(C), side(AB), side(BC), side(CA), bubble(ABC).

Bazova funkce definovana na referencnim trojuhelniku

$\displaystyle N\Bigl(\lambda_0(x),\lambda_1(x),\lambda_2(x)\Bigr)=\hat{N}\Bigl(\lambda_0(\hat{x}),\lambda_1(\hat{x}),\lambda_2(\hat{x})\Bigr)$

lze zderivovat, ovsem jeji derivace zavisi na deformaci trojuhelniku. Hodnoty na trojuhelniku (v integracnich bodech) jsou uschovany v promenne basefn_values. Na strane v promenne side_basefn_values. Derivace (prvni a druhe) podle barycentrickych souradnic jsou uschovany v promennych grad_basefn_values[0..2] a hes_basefn_values[0..2][0..2].

double **basefn_values=NULL;
double **sidebasefn_values=NULL;
double **grad_basefn_values[3];
double **hes_basefn_values[3][3];

int *base_pressure_idx=NULL;

Indexovani promennych je uvedeno zde:

I ... INDEX BAZOVE FUNKCE
M ... INDEX BODU NUMERICKE KVADRATURY
basefn_values     [I][M]
grad_basefn_values[DERIVACE][I][M]
hes_basefn_values [DERIVACE][DERIVACE][I][M]


next up previous contents
Next: Definice bazovych funkci Up: Numericka kvadratura a hodnoty Previous: Numericka kvadratura a hodnoty   Contents
Petr Svacek 2007-06-02