Three-dimensional channel flow
|
Three-dimensional channel flow geometry.
|
The linearized evolution model governing the dynamics of three-dimensional velocity fluctuations in
channel flows is given by
where
, | — | wall-normal velocity and vorticity |
, , | — | streamwise, wall-normal, and spanwise forcing |
| — | Reynolds number |
, | — | streamwise and spanwise wavenumbers |
| — | for shear-driven flow |
| — | for pressure-driven flow |
| — | Laplacian |
|
. | | |
|
The boundary conditions are given by
The desired outputs are the streamwise, wall-normal, and spanwise velocity fluctuations,
The input-output differential equations representing the frequency response operator are given by
where
Matlab codes
R = 2000;
kxval = [1 1 -1 -1];
kzval = [1 -1 1 -1];
omval = 0.385*[-1 -1 1 1];
dom = domain(-1,1);
y = chebfun('y',dom);
fone = chebfun(1,dom);
fzero = chebfun(0,dom);
U = diag(1 - y.^2);
Uy = diag(-2*y);
Uyy = diag(-2*fone);
N = 100;
yd = chebpts(N);
Wa0{1} = [1, 0, 0, 0; 0, 1, 0, 0];
Wa0{2} = [1, 0];
Wb0{1} = [1, 0, 0, 0; 0, 1, 0, 0];
Wb0{2} = [1, 0];
uvec = zeros(N,length(kxval)); wxvec = zeros(N,length(kxval));
for n = 1:length(kxval),
kx = kxval(n); kz = kzval(n); om = omval(n);
kx2 = kx*kx; kz2 = kz*kz;
k2 = kx2 + kz2; k4 = k2*k2;
a112 = -(1/R)*2*k2*fone - 1i*kx*U*fone - 1i*om*fone;
a110 = (1/R)*k4*fone + 1i*kx*k2*U*fone + 1i*kx*Uyy*fone ...
+ 1i*om*k2*fone;
a220 = -(1/R)*k2*fone - 1i*kx*U*fone - 1i*om*fone;
a210 = -1i*kz*Uy*fone;
A0{1,1} = [a110, fzero, a112, fzero, (1/R)*fone];
A0{1,2} = [fzero, fzero, fzero];
A0{2,1} = [a210, fzero, fzero, fzero, fzero];
A0{2,2} = [a220, fzero, (1/R)*fone];
B11 = [fzero, 1i*kx*fone]; B12 = [k2*fone, fzero];
B13 = [fzero, 1i*kz*fone];
B21 = [-1i*kz*fone, fzero]; B22 = [fzero, fzero];
B23 = [1i*kx*fone, fzero];
B0 = {B11, B12, B13; B21, B22, B23};
C11 = [fzero,(1/k2)*1i*kx*fone]; C12 = [-(1/k2)*1i*kz*fone, fzero];
C21 = [fone, fzero]; C22 = [fzero, fzero];
C31 = [fzero,(1/k2)*1i*kz*fone]; C32 = [(1/k2)*1i*kx*fone, fzero];
C0 = {C11, C12; C21, C22; C31, C32};
[Sfun, Sval] = svdfr(A0,B0,C0,Wa0,Wb0,1,1);
ui = Sfun{1};
vi = Sfun{2};
wi = Sfun{3};
wx = diff(wi(:,1)) - 1i*kz*vi(:,1);
uvec(:,n) = ui(yd,1); wxvec(:,n) = wx(yd,1);
end
Determine the streamwise velocity and vorticity in the physical space.
kx = abs(kxval(1)); kz = abs(kzval(1));
zval = linspace(-7.8, 7.8, 100);
xval = linspace(0, 12.7, 100);
Up = zeros(length(zval),length(xval),N);
Wxp = zeros(length(zval),length(xval),N);
for indx = 1:length(xval)
x = xval(indx);
for indz = 1:length(zval)
z = zval(indz);
for n = 1:4
kx = kxval(n); kz = kzval(n);
Up(indz,indx,:) = squeeze(Up(indz,indx,:)) + ...
uvec(:,n)*exp(1i*kx*x + 1i*kz*z);
Wxp(indz,indx,:) = squeeze(Wxp(indz,indx,:)) + ...
wxvec(:,n)*exp(1i*kx*x + 1i*kz*z);
end
end
end
Up = real(Up); Wxp = real(Wxp);
Plot most amplified structures of streamwise velocity fluctuations (3D isosurface plots).
p = patch(isosurface(xval,zval,yd,Up,0.65));
isonormals(xval,zval,yd,Up,p)
set(p,'FaceColor','red','EdgeColor','none');
daspect('auto')
view(3);
axis([xval(1) xval(end) zval(1) zval(end) yd(1) yd(end)]);
camlight
lighting phong
hold on
p = patch(isosurface(xval,zval,yd,Up,-0.65));
isonormals(xval,zval,yd,Up,p)
set(p,'FaceColor','green','EdgeColor','none');
daspect('auto')
view(3);
axis([xval(1) xval(end) zval(1) zval(end) yd(1) yd(end)]);
camlight
lighting phong
xlab = xlabel('x', 'interpreter', 'tex');
ylab = ylabel('z', 'interpreter', 'tex');
zlab = zlabel('y', 'interpreter', 'tex');
set(xlab, 'FontName', 'cmmi10', 'FontSize', 25);
set(ylab, 'FontName', 'cmmi10', 'FontSize', 25);
set(zlab, 'FontName', 'cmmi10', 'FontSize', 25);
h = get(gcf,'CurrentAxes');
set(h,'FontName','cmr10','FontSize',15,'xscale','lin','yscale','lin');
hold off
Plot most amplified structures of streamwise velocity (2D color plots) and streamwise vorticity
(contour plots) fluctuations.
xslice = 1;
pcolor(zval,yd,squeeze(Up(:,xslice,:))');
shading interp;
Wxpn = Wxp/max(max(max(Wxp)));
hold on
contour(zval,yd,squeeze(Wxpn(:,xslice,:))',...
linspace(0.1*max(max(max(Wxpn))),0.9*max(max(max(Wxpn))),4),'k--','LineWidth',1.1)
contour(zval,yd,squeeze(Wxpn(:,xslice,:))',...
linspace(-0.9*max(max(max(Wxpn))),-0.1*max(max(max(Wxpn))),4),'k','LineWidth',1.1)
cb = colorbar('vert');
xlab = xlabel('z', 'interpreter', 'tex');
ylab = ylabel('y', 'interpreter', 'tex');
set(xlab, 'FontName', 'cmmi10', 'FontSize', 20);
set(ylab, 'FontName', 'cmmi10', 'FontSize', 20);
h = get(gcf,'CurrentAxes');
set(h,'FontName','cmr10','FontSize',15,'xscale','lin','yscale','lin');
set(cb, 'FontName', 'cmr10', 'FontSize', 15);
hold off
|