Friday, December 25, 2009

a three-day snowing



12/24/2009, St. Paul, MN

a cloudy morning - see, gravity waves above Minneapolis




12/17/2009, Minneapolis, MN

a cold day



-20C, 12/15/2009 at Minneapolis, MN

Saturday, December 05, 2009

wind turbine in a stably stratified atmospheric boundary layer



Vortex structures (identified using |omega|-definition) during the beginning ~2min.

Saturday, October 24, 2009

recommend Toyota Yaris



Just bought a 2007 Toyato Yaris Hatchback. It is small, but ridiculously has large room even for my mountain bike. It is so efficient, 40MPG for me including local and highway (half and half).

Friday, October 23, 2009

resolve MPI deadlocking

Deadlock is a problem with blocked communication.

Example 1: always deadlocking

if (rank == 0) then
call MPI_Recv(..., 1, tag, MPI_COMM_WORLD, status, ierr)
call MPI_Send(..., 1, tag, MPI_COMM_WORLD, ierr)
elseif (rank == 1) then
call MPI_Recv(..., 0, tag, MPI_COMM_WORLD, status, ierr)
call MPI_Send(..., 0, tag, MPI_COMM_WORLD, ierr)
endif


Example 2: sometimes deadlocking: MPI is using internal buffers (the “message envelope”) to cache messages. A blocked comm pattern may work for some values of count, and then fail as count is increased.

if (rank == 0) then
call MPI_Send(..., 1, tag, MPI_COMM_WORLD, ierr)
call MPI_Recv(..., 1, tag, MPI_COMM_WORLD, status, ierr)
elseif (rank == 1) then
call MPI_Send(..., 0, tag, MPI_COMM_WORLD, ierr)
call MPI_Recv(..., 0, tag, MPI_COMM_WORLD, status, ierr)
endif


A couple of ways to fix this problem.
Method 1: reverse the order of one of the send/receive pairs

if (rank == 0) then
call MPI_Send(..., 1, tag, MPI_COMM_WORLD, ierr)
call MPI_Recv(..., 1, tag, MPI_COMM_WORLD, status, ierr)
elseif (rank == 1) then
call MPI_Recv(..., 0, tag, MPI_COMM_WORLD, status, ierr)
call MPI_Send(..., 0, tag, MPI_COMM_WORLD, ierr)
endif


Method 2: using unblocked communication

if (rank == 0) then
call MPI_Isend(..., 1, tag, MPI_COMM_WORLD, req, ierr)
call MPI_Recv(..., 1, tag, MPI_COMM_WORLD, status, ierr)
call MPI_Wait(req, status)
elseif (rank == 1) then
call MPI_Recv(..., 0, tag, MPI_COMM_WORLD, status, ierr)
call MPI_Send(..., 0, tag, MPI_COMM_WORLD, ierr)
endif

Sunday, October 18, 2009

Remodeling at SAFL




Recently, SAFL is remodeling the entrance.
Taken at 10/13/2009 11:16 by Fujifilm FinePix805; Shutter 1/204seconds; F2.83; ISO100; no flash.

front and backyard of my current house




time: 10/18/2009, 17:09
camera: Fujifilm FinePix805
shutter: 1/405 seconds
aperture: F2.83
iso200; no flash

Wednesday, October 14, 2009

10/10/2009 night MPLS downtown from SAFL



Looking at Minneapolis downtown from St. Anthony Falls Lab.


Time: 10/10/2009, 21:17. Fujifilm FinePix 805 landscape-night mode; Shutter 2seconds; Aperture F2.83; ISO 200, no Flash.

Wednesday, August 19, 2009

wind turbine in stable atmospheric boundary layer


Video is showing contours of kinetic energy at the cross section of turbine center over the beginning 2min (time is compressed)

Sunday, June 07, 2009

latex multi-plots using minipage and picture env



\begin{figure}[h!]
\begin{minipage}{0.5\textwidth} 
\includegraphics[width=\textwidth]{uz_low.eps}
\end{minipage}
\begin{minipage}{0.5\textwidth} 
\includegraphics[width=\textwidth]{uz_high.eps}
\end{minipage}
\setlength{\unitlength}{1in}
\begin{picture}(0,0)(0,0)
\put(0.2,0.1){\makebox(0,0){\textbf{(a)}}}
\put(3.22,0.1){\makebox(0,0){\textbf{(b)}}}
\end{picture} \vspace{-0.17cm}
\caption{Nondimensional mean streamwise velocity profile in a semi-logarithmic
scale: (a) results from lower resolutions; (b) results from higher resolutions and the right corner plot is a zoomed view of the far-wall region ($z/z_0 \apprge 1000$). The dashed line corresponds to the classical log-law with $\kappa=0.4$.}
\label{fig:uz_all}
\end{figure} 


Thursday, April 30, 2009

endian test using C

Code can be used to test a machine, and also includes big-endian/little-endian converters (for float and double), which can be modified and included into C++.

Just copy the code into a file, for example “endiantest.c,” then compile it using “gcc endiantest.c,” and execute “a.out.”

Good luck!

Hao


#include <stdio.h>

float floatSWAP(float f)
{
union
{
float f;
unsigned char b[4];
} dat1, dat2;

dat1.f = f;
dat2.b[0] = dat1.b[3];
dat2.b[1] = dat1.b[2];
dat2.b[2] = dat1.b[1];
dat2.b[3] = dat1.b[0];
return dat2.f;
}

double doubleSWAP(double df)
{
union
{
double df;
unsigned char b[8];
} dat1, dat2;

dat1.df = df;
dat2.b[0] = dat1.b[7];
dat2.b[1] = dat1.b[6];
dat2.b[2] = dat1.b[5];
dat2.b[3] = dat1.b[4];
dat2.b[4] = dat1.b[3];
dat2.b[5] = dat1.b[2];
dat2.b[6] = dat1.b[1];
dat2.b[7] = dat1.b[0];
return dat2.df;
}

int IsBigEndian()
{
short int word = 0x0001;
char *byte = (char *) &word;
return (byte[0] ? 0:1);
}

float BEfloat(float f)
{
if (IsBigEndian())
return f;
else
return floatSWAP(f);
}

float LEfloat(float f)
{
if (IsBigEndian())
return floatSWAP(f);
else
return f;
}

double BEdouble(double df)
{
if (IsBigEndian())
return df;
else
return doubleSWAP(df);
}

double LEdouble(double df)
{
if (IsBigEndian())
return doubleSWAP(df);
else
return df;
}

int main(void)
{
float f, sf;
double df, sdf;
unsigned char * ch;

f = 32.45;
sf = floatSWAP(f);
printf("%f:%f\n%f\n",f,sf,BEfloat(f));
ch = (unsigned char *) &f;
printf("%1x%1x%1x%1x:",*ch,*(ch+1),*(ch+2),*(ch+3));
ch = (unsigned char *) &sf;
printf("%1x%1x%1x%1x\n\n",*ch,*(ch+1),*(ch+2),*(ch+3));

df = 10.23456789;
sdf = doubleSWAP(df);
printf("%13.10g:%13.10g\n%13.10g\n",df,sdf,BEdouble(df));
ch = (unsigned char *) &df;
printf("%1x%1x%1x%1x%1x%1x%1x%1x:",*ch,*(ch+1),*(ch+2),*(ch+3),*(ch+4),*(ch+5),*(ch+6),*(ch+7));
ch = (unsigned char *) &sdf;
printf("%1x%1x%1x%1x%1x%1x%1x%1x\n\n",*ch,*(ch+1),*(ch+2),*(ch+3),*(ch+4),*(ch+5),*(ch+6),*(ch+7));

if (IsBigEndian())
printf("This is Big-Endian machine.\n");
else
printf("This is Little-Endian machine.\n");
}

latex multi-plots using minipage



\begin{figure}[h!]
\begin{minipage}{0.5\textwidth}
\begin{tabular}{c}
\includegraphics[width=\textwidth]{SPU64.eps} \\
(a)
\end{tabular}
\end{minipage}
%\hfill
\begin{minipage}{0.5\textwidth}
\begin{tabular}{c}
\includegraphics[width=\textwidth]{SPW64.eps} \\
(b)
\end{tabular}
\end{minipage}
\caption{Normalized streamwise velocity spectra (a) and vertical velocity spectra (b) at different heights obtained from $64^3$ LES. Numbers in plots denote normalized heights ($z/H$).}
\label{fig:SP64}
\end{figure}

Wednesday, April 08, 2009

some names of online information system

  1. Blog
  2. Wiki
  3. Internet Forum or Message Board
  4. CMS (Content management system)
  5. Moodle
  6. Ning

Monday, April 06, 2009