2013년 2월 7일 목요일

베르누이식


유체역학은 기본적으로 뉴턴 역학에 기초를 두고 있다. 따라서 베르누이 방정식을 유도하기 위해서, 흐름관 단면 내의 유체에 일-에너지 정리를 이용하여 유도 가능하다.
<베르누이 방정식 유도>
어떤 시간에 두 단면 a와 c 사이에 놓여 있는 유체를 고려한다. 낮은 쪽 끝에서 유체의 속력이 이고 압력은 이다. 그리고 임의의 짧은 시간 간격 dt 동안 초기에 a에 이던 유체는 b 까지, 거리 를 움직인다. 이때 같은 시간 간격 동안 c에 있던 유체는 d 까지 거리 를 움직인다.
양 끝에서 단면적은 보는 바와 같이 와 이며, 연속적인 관계 때문에 dt 동안 두 단면을 통과하는 유체의 부피는 이다.
이제 dt 동안 이 유체에 한 일을 계산해 보자. a에서 단명에 작용하는 힘은 이고, c에서 힘은이다. 여기서 과 는 양 끝에서의 압력이다. 따라서 이 변위 동안에 한 일의 양 dW는
이다. 여기서 음의 부호는 c에서 힘은 변위가 반대 방향이기 때문이다.
이 일을 이제, 유체소에 대한 역학적 에너지 즉, 운동에너지와 위치에너지에 관해 서술해 보자.
단면 b와 c사이의 유체에 대한 역학적 에너지는 변하지 않는다. dt시간 초기에 a와 b 사이의 유체는 부피가 , 질량이  그리고 운동에너지는 이다. 마찬가지로 c와 d 사이에서 유체의 운동에너지는 이다. 따라서 이 시간동안 운동에너지의 총 변화 dK는
이다. 동일한 방법을 적용하여 위치에너지의 변화 dU를 구하면
이다. 운동량의 변화량과 위치에너지의 변화량의 합은 총 한 일의 변화량과 같음으로dW=dK+dU에 각각 대입하면 다음을 얻을 수 있다.
이것이 베르누이 방정식이다.

연속방정식 $$
A_{1}v_{1}=A_{2}v_{2}

$$
역학적 에너지 보존
$$
\\P_{2}V_{2}-P_{1}V_{1}=\frac{1}{2}\rho V_{2}v_{2}^{2}-\frac{1}{2}\rho V_{1}v_{1}^{2}
$$
연속방정식을 대입하여 정리
$$
\\P_{2}-P_{1}\frac{V_{2}}{V_{1}}=\frac{1}{2}\rho v_{2}^{2}-\frac{1}{2}\rho \frac{V_{2}}{V_{1}v_{1}^{2}}
$$

2013년 2월 6일 수요일

perl socket another

use Socket;
use FileHandle;

$iaddr = inet_aton($ARGV[0]);
$paddr = sockaddr_in($ARGV[1],$iaddr);

$proto = getprotobyname("tcp");

socket (FHOST, PF_INET, SOCK_STREAM, $proto) or
                 die ("no free sockets\n");
connect (FHOST, $paddr)  or
                 die ("$ARGV[0] is not responding\n");

# turn buffering off

autoflush FHOST 1;

# dialogue

print FHOST "GET / HTTP/1.1 
Host:www.naver.com\n\n";

@response = ;

$rpage = join("",@response);
$rpage =~ s/\r\n/\n/g;
$rpage =~ s/\r/\n/g;
($header,$page) = split(/\n\n/,$rpage,2);
print $header;
@tags = ($page =~ /<(.*?)>/gs);

foreach (@tags) {
        s/\s*=\s*/=/g;
        @params = split(/\s+/);
        $type = lc(shift @params);
        next if ($type ne "a");
        foreach $f(@params) {
                ($name,$val)=split(/=/,$f,2);
                next if (lc($name) ne "href");
                $val =~ s/^"(.*)"$/$1/;
                push @linx,$val;
                }
        }

perl socket

#!/usr/bin/perl -w
use strict;

use IO::Socket;

my $host = "www.naver.com";
my $header = "GET / HTTP/1.1 
Host:www.naver.com\n\n";

my $remote = IO::Socket::INET->new( Proto     => "tcp",
                                 PeerAddr  => $host,
                                 PeerPort  => "http(80)",
                                );
unless ($remote) { die "cannot connect to http daemon on $host" }
$remote->autoflush(1);
print "--------- HTTP REQUEST to $host --------\n";
print $header;
print "--------- HTTP RESPONSE from $host --------\n";
print $remote $header;

while ( <$remote> ) { print }
close $remote;

2013년 2월 5일 화요일