Sei sulla pagina 1di 3

function [U_x_n1, U_y_n1, P_n1] = avanzamento_NS2d(U_x_n, U_y_n, P_n)

% avanzamento equazioni dei NS caso incompressibile bidimensionale

Dichiarazione/caricamento variabili iniziali e boundary condition

% Caricamento variabili globali

global rk_ord nx dt mu global err_flag Filter i_filter iBC ndt_filter global filter_type alpha_filter

Avanzamento temporale schema RK

for i = rk_ord:-1:1

% Calcolo di tutte le derivate dxU_x_n = der1_x_BC(U_x_n); dyU_y_n = der1_y_BC(U_y_n); dxU_y_n = der1_x_BC(U_y_n); dyU_x_n = der1_y_BC(U_x_n); d2xU_x_n = der2_x_BC(U_x_n); d2yU_x_n = der2_y_BC(U_x_n); d2xU_y_n = der2_x_BC(U_y_n); d2yU_y_n = der2_y_BC(U_y_n);

% Calcolo pressione tramite eq Poisson con la velocità a step intermedio

% preparazione termine sorgente

b = (dxU_x_n).^2 + 2*(der1_x_BC(U_y_n)*der1_y_BC(U_x_n))+(dyU_y_n).^2

- 1/dt*(dxU_x_n + dyU_y_n); b = -b; % ok segno giusto

%

%P_n = zeros(nx); P_n1 = Poisson_BC(b,P_n);

% L. Barba mette nell'equazione del momento già questa pressione per il

% calcolo di U_n1, perchè ne garantisce l'incompressibilità

% Avanzamento equazione del momento

% Componente x equazione del moto

% Termine da derivare rispetto a x direzione periodica Aij = (U_x_n .* U_x_n) + P_n1 - mu*der1_x_BC(U_x_n); RHS = der1_x_BC(Aij);

% Axx

% Termine da derivare rispetto a y direzione periodica Aij = (U_y_n .* U_x_n) - mu*der1_y_BC(U_x_n); % Ayx

RHS = RHS + der1_y_BC(Aij); della divergenza

% aggiungo la derivata-calcolo

% schema alternativo non in forma (pseudo) conservativa

% RHS = U_x_n.*dxU_x_n + U_y_n.*dyU_x_n + der1_x_BC(P_n1) -

mu*(d2xU_x_n+d2yU_x_n);

% avanzamento eq. per la componente x della velocità U_x_n1 = U_x_n - RHS*dt/i;

% Componente y equazione del moto

% Termine da derivare rispetto a y direzione periodica Aij = (U_y_n .* U_y_n) + P_n1 - mu*der1_y_BC(U_y_n); RHS = der1_y_BC(Aij);

% Ayy

% Termine da derivare rispetto a x direzione periodica Aij = (U_y_n .* U_x_n) - mu*der1_x_BC(U_y_n); % Ayx

RHS = RHS + der1_x_BC(Aij); della divergenza

% aggiungo la derivata-calcolo

% schema alternativo non in forma (pseudo) conservativa

% RHS = U_x_n.*dxU_y_n + U_y_n.*dyU_y_n + der1_y_BC(P_n1) -

mu*(d2xU_y_n+d2yU_y_n);

% avanzamento eq. per la componente y della velocità U_y_n1 = U_y_n - RHS*dt/i;

% Filtraggio di tutte le quantità calcolate al nuovo tempo intermedio

%

U_x_n1 = filter_per(U_x_n1);

%

U_y_n1 = filter_per(U_y_n1);

%

P_n1 = filter_per(P_n1);

% imposizone BCs su velocità U_x_n1(:,1) = 0; U_x_n1(:,end) = 0; U_x_n1(1,:) = 0; U_x_n1(end,:) = 1;

U_y_n1(:,1) = 0; % cavity lid velocity U_y_n1(:,end) = 0; U_y_n1(1,:) = 0; U_y_n1(end,:) = 0;

% aggiornamento output per il ciclo successivo

U_x_n = U_x_n1; U_y_n = U_y_n1; P_n = P_n1;

end

Not enough input arguments.

Error in avanzamento_NS2d (line 15) dxU_x_n = der1_x_BC(U_x_n);

Published with MATLAB® R2017a