|
|
Re: analytical solution laminar flow in rectangular microchannel
Posted:
Nov 19, 2012 4:03 AM
|
|
> > This code is written by a senior. The velocity / > flow > > rate is set as 0.15u l/min^-1. The value is then > > convert to form of (m/s). > > > > Regards, > > Anne > > I don't know whether the formula you used to > calculate > the axial velocity in your code is correct since > I could not find it in the literature. > The formula I used can be found in > > http://www.amazon.de/Str%C3%B6mungslehre-Einf%C3%BChru > ng-Theorie-Str%C3%B6mungen-Springer-Lehrbuch/dp/364213 > 1425 > > Chapter 6.1.6: Strömung durch nichtkreisförmige > Rohre > (Flow through non-circular tubes) > > I enclose my attempt to translate the FORTRAN-code > to MATLAB. > > Best wishes > Torsten. > > %Length(Lx) and height(Ly) of the microchannel [m] > > %The channel is considered to be centered at (0,0) so > that > %velocity output is for -Lx/2 <= x <= Lx/2 and -Ly/2 > <= y <= Ly/2 > Lx = 500e-6; > Ly = 500e-6; > %Volume flow through the microchannel [m^3/s] > Vpunkt = 3.0009375e-8; > %Number of points in x- and y-direction for which > velocity is > %calculated (npoints_x, npoints_y <= 100) > npoints_x = 40; > npoints_y = 40; > %Minimum number of series terms to be considered > > nmin = 10; > %USUALLY NO CHANGES ARE REQUIRED BELOW THIS LINE > %OUTPUT (x-coordinate, y-coordinate, velocity in > (x,y)) > %is written to a file named 'Velocity') > x_vector = zeros(npoints_x); > y_vector = zeros(npoints_y); > velocity = zeros(npoints_y,npoints_x); > sum = 0; > n = 0; > reihenglied = 1.0; > while (abs(reihenglied) > 1e-18) || (n <= nmin) > n = n + 1; > m = pi/Ly*(2*n-1); > reihenglied = tanh(0.5*Lx*m)/m^5; > sum = sum + reihenglied; > end > konstante = > 4.0D0*Vpunkt/(Lx*Ly^3)/(1.0/3.0-64.0/(Lx*Ly^4)*sum) > deltax = Lx/npoints_x; > deltay = Ly/npoints_y; > x = -Lx/2.0 - deltax/2.0; > i = 0; > While (i < npoints_x) > i = i + 1; > x = x + deltax; > x_vector(i) = x; > y = -Ly/2.0 - deltay/2.0; > j = 0; > While (j < npoints_y) > j = j + 1; > y = y + deltay; > y_vector(j) = y; > sum = 0.0; > n = 0 ; > reihenglied = 1.0; > While (abs(reihenglied) > 1e-18) || (n <= > (n <= nmin) > n = n + 1; > m = pi/Ly*(2*n-1); > reihenglied = > englied = > cos(m*y)/m^3*(cosh(m*x)/cosh(0.5*m*Lx)-1.0); > if (mod(n,2) == 1) > reihenglied = -reihenglied; > end > sum = sum + reihenglied; > end > velocity(j,i) = konstante*4.0/Ly*sum; > end > end > surf(x_vector,y_vector,velocity); > % > %Check whether velocity profile satisfies volume flow > constraint > % > Vpunkt_check = 0.0; > For i = 1:npoints_x > For j = 1:npoints_y > Vpunkt_check = Vpunkt_check + velocity(i,j);
Should read: Vpunkt_check = Vpunkt_check + velocity(j,i);
> end > end > Vpunkt_check = deltax*deltay*Vpunkt_check; > > Vpunkt; > Vpunkt_check;
Best wishes Torsten.
|
|