Passa al tema normale
Discussioni su Analisi Numerica e Ricerca Operativa

Regole del forum

Consulta il nostro regolamento e la guida per scrivere le formule
Rispondi al messaggio

Metodo upwind a due dimensioni

21/03/2017, 23:31

Ho un problema nello scrivere il codice che risolve l'equazione differenziale
$$ \partial_t{u} + c1(x,y)\partial_x{u} + c2(x,y)\partial_y{u}=0 $$ con dato iniziale $u_0(x,y)$ e con condizione al bordo di Dirichlet $g(x,y)$ su un dominio $\Omega=:$ $[a,b]$ x $ [c,d]$

Poiché il campo di velocità $c=(c_1(x,y),c_2 (x,y))$ il metodo upwind consisterà nell'utilizzare le differenze finite all'indietro per la variabile $x$ nel caso di $c_1 >0$, e le differenze finite in avanti nel caso di $c_1<=0$. E lo stesso vale per la seconda componente (ovviamente tutto rispetto alla variabile $y$). E fin qui tutto ok.
Il problema mio è il dato al bordo e principalmente nei vertici del quadrato.

Cioè prendiamo il lato sinistro del quadrato che saranno i punti del tipo $[a,z_i]$ con $z_i \in [c,d]$.
Ora prendo un nodo qualsiasi $(x_i,y_j)$ che non sia un vertice. Per capire se è un nodo inflow o meno (quindi se ci devo calcolare o meno la condizione al bordo) moltiplico la velocità per il versore normale esterno (in questo caso $n=(-1,0)$) e verifico il segno. Quindi
se $c_1(x_i,y_j) \cdot (-1) > 0$ potrò dire che il nodo non è inflow e si potrà utilizzare lo schema upwind tranquillamente. Altrimenti bisognerà utilizzare il dato iniziale. Ora arriva il problema dei vertici.
Ecco quale è il mio problema:
Se prendo il nodo $(x_1,y_1)$ che corrisponde al primo vertice in basso a sinistra del quadrato, non capisco come devo procedere. A parte il fatto che la normale esterna sui vertici non è definita, ma credo che questo si possa bypassare dicendo che senza perdita di generalità la normale esterna è sempre $(-1,0)$.
Quando devo capire se il nodo è inflow o meno, e faccio lo stesso ragionamento, quindi se
$$c_1(x_1,y_1)*(-1)>0$$ allora si potrà usare upwind. Ma qui arriva il problema. Infatti upwind in avanti nella prima variabile lo posso calcolare. Nel caso in cui $c_2(x_1,y_1)>0$ come faccio ad utilizzare UPWIND all'indietro se ho solo nodi in avanti??... O sbaglio ragionamento per i vertici? Per favore datemi una mano, che è tutto oggi che ci combatto

Re: Metodo upwind a due dimensioni

27/03/2017, 21:29

Non sono sicuro di aver capito bene la domanda, ma provo comunque a rispondere: un nodo vertice è di inflow solo se è di inflow "in entrambe le variabili spaziali" nel senso, per il caso del vertice \((a,c)\), se l'avvezione va "verso destra" e "verso l'alto". Gli altri tre casi sono tutti di outflow. Puoi verificare la cosa facendo il test che descrivi con entrambe le normali dei lati che condividono il vertice.
Rispondi al messaggio


Skuola.net News è una testata giornalistica iscritta al Registro degli Operatori della Comunicazione.
Registrazione: n° 20792 del 23/12/2010.
©2000— Skuola Network s.r.l. Tutti i diritti riservati. — P.I. 10404470014.