hirax.net::Keywords::「コード」のブログ



2000-08-16[n年前へ]

エアコンの風は心地よく吹くか? 

真夏の夜の夢 流体力学入門編

 私は長野県の野辺山という高原で幼い時期を過ごしたせいか、暑さにとても弱い体である。なので、真夏の夜はエアコンが欠かせない体と根性になってしまった。エアコン無しではろくな夢が見られ無いどころか、眠れなかったりするのである。気持ちの良い「真夏の夜の夢」を見るためには、エアコンがとっても重要なのである。

 つい先日、そんなエアコンの話題が「今日の必ずトクする一言」に載っていた。それが、

である。エアコンの冷気に流体素子によってエアコンの送風の具合に1/f揺らぎを導入し、なおかつメーカー製のエアコンの送風では実現されていない急激な送風の変化も加えて、「快適な部屋の空調」を実現しようとするものである。面白い話である。しかも、「エアコンの送風の具合に揺らぎがあると循環の効率が高くなるかもしれず、(その様子を)数式とグラフィックで示すと良いかもしれない」と言った上で、
(おそらくhiraxさんあたりがやってくれるのではなかろうか)
と話題のパスまでされている。いきなり、ボーとしているところを授業で当てられた気分である。

 とはいえ、「エアコンの流体力学」というのもちょっと興味のある話題でもあるし、パスされたからにはやってみなければなるまい。そういうわけで、真夏の眠れない夜のパズル代わりに挑戦してみることにした。
 

 さて、部屋の中の「エアコンから送られる風の様子」を計算するということは、流体力学の計算をするということになる。流体力学の運動方程式(ナビエ・ストークス式)に代表されるような方程式群を解かなければならないのである。そこで、以前

の時にいじりかけたMichael Griebel氏らによる非圧縮性流体のNast2Dのコードをもう一度引っ張り出して使ってみることにした。このNast2Dは非圧縮性二次元流れを計算する教育用のソースコードである。詳しくはあるいは
  • Numerical Simulation in Fluid Dynamics   A Practical IntroductionISBN 0-89871-398-6
を参考にしてもらいたい。
 

 計算するモデルは次の図に示すような部屋である。四畳半一間であるかもしれないし、100畳以上の大きな広間かもしれないが、とにかく正方形の部屋だ。向かって左の青い丸部分にはエアコンがあり、そこから冷たい空気が送られてくるのである。そして、この部屋には何故かタンスがおいてある。「やっぱり、この部屋は四畳半一間じゃないの」というツッコミは言ってはいけない約束である。とりあえず、このタンスが向かって下側にある紫の部分である。このタンスが、エアコンから送られてくる冷た〜い空気流の障害物となるのである。
 

部屋の配置
青い丸部分にエアコンがあり、
紫の部分が空気流への障害物としてのタンスである。

 暑い真夏の夜に、こんな部屋をエアコンで涼しくする時のことを考えてみよう。気持ちよく眠るために、何はともあれエアコンのスイッチを入れるわけだ。そうしないと、暑くて眠れないから当然である。

 そして、そのエアコンには送風モードが何故か三つあるのだ。次のような三種類の送風、

  1. 真っ直ぐ送風するモード
  2. 単純な首振り送風をするモード
  3. 山本式エアコン用流体素子を用いた送風をするモード
を切り替えることができるのである。試しに、そんな三つの送風モードでエアコンを動かした時の「ある瞬間」における
空気流の速度分布の計算結果を次に示してみよう。
 
三種類の送風をした場合における「ある瞬間」の空気流の速度分布の計算結果
真っ直ぐ送風している場合

単純な首振り送風の場合

山本式エアコン用流体素子
を用いた送風の場合

 また、これらの場合の計算結果を動画で示したものをMPEG4形式のAVIファイルとReal形式のファイルにしたものを以下に置いておく。エアコンから空気が送られる様子を知るには、何はともあれこの動画を見て頂きたい。なお、手元のRealProducerの制限のために、このReal形式のファイルは古いバージョンのRealPlayerだとアップデートが必要になってしまった。また、MPEG4のCodecが導入されていない場合には、DivXなどをインストールする必要がある。

 とりあえず

  1. 真っ直ぐ送風している場合 MPEG4 AVI ( 289KB ) Real形式( 73KB )
  2. 単純な首振り送風の場合 MPEG4 AVI ( 577KB ) Real形式( 89KB )
  3. 山本式エアコン用流体素子を用いた送風の場合 MPEG4 AVI( 693KB ) Real形式 ( 92KB )
この動画を見れば、それぞれの場合において部屋の中を流れる空気の速度分布がどのようになっているかがよく判ると思う。エアコンから空気が吹き出している様子とか、「単純な首振り送風の場合」の送風方向がゆっくり動いていく様子とか、山本式エアコン用流体素子を用いた場合のカオス的な送風方向の振る舞いがよくわかると思う(ちなみに、今回は山本式エアコン用流体素子は送風方向をFM変調をかけた値を用いることにより、「らしい」動きを再現してみた)。また、部屋の中にタンスがあるせいで、空気がよどんでなかなか入れ替わらない(つまりなかなか冷えない)部分があることが判ると思う。

 また、それぞれのMPEG4形式の動画のファイルサイズを見れば、それぞれの場合の送風による空気流の速度分布の複雑さは一目瞭然である、と思う。真っ直ぐ送風している場合はとにかく単純な速度分布であって動画ファイルサイズも結果的に小さくなっているのに対して、山本式エアコン用流体素子を用いた送風の場合はかなり複雑な速度分布になっていて動画ファイルも結果的に大きくなっているのである。

 動画を見ることができない人のために、それぞれの場合の連続した3つの瞬間における部屋内の空気流の速度分布の静止画も示しておく。
 

連続した3つの瞬間における部屋内の空気流の速度分布
真っ直ぐ送風している場合

1

単純な首振り送風の場合

1

山本式エアコン用流体素子
を用いた送風の場合
1
2
2
2
3
3
3

 これを見ると、「真っ直ぐ送風している場合」にはエアコンの正面は強烈に風が当たっている(つまり冷えまくっている)ことがわかるが、タンスの陰になっている部屋の隅などはほとんど空気が動いていないことがわかる。また、「単純な首振り送風の場合」は送風方向を動かしているとはいえ、その送風方向の変化はかなりゆっくりであって部屋の中の空気流の速度分布はそれほど急激には変化していないことも判ると思う(そういう風に計算しただけではあるが...)。いずれにせよ、もしもこの部屋の中にあなたがいたとしたら、体の決まった部分にのみ冷た〜い風があたることになるわけだ。それは体にはちょっとよろしくなさそうである。

 一方、「山本式エアコン用流体素子を用いた送風の場合」は時々刻々と送風方向が変化しており、まるで部屋を舐め回すかのように、冷た〜い空気が送られていることがわかると思う。この部屋の中にもしあなたがいたとしても、体のごく一部分だけに冷たい風が当たるようなことはなく、それほど体に悪くないことが予想されるわけである。
 

 さて、このページもかなり重いページになってきた。本来はこのタンスの裏側の空気が澱みやすい場所の「空気の入れ替わり」を、送風の具合を変えた上で調べてみたいわけであるが、それは次回のお楽しみ、ということにしておきたい。とりあえず、「真夏の夜の夢 流体力学入門編」はここら辺で終わりにしたい。

 さて、夏休というわけでこんな景色のところで気持ちの良い風に吹かれてみたりするわけである。この写真の先の方の海の向こうに見えているのは左が伊豆半島で、右が三保の松原の辺である。

 暑い夏の夜はエアコンが欠かせない体ではあるけれど、気持ちの上で言えばエアコンよりはおんぼろの扇風機の方が好きだし、扇風機よりも山の上の風の方がずっと好きだ。いつか、山の上を吹き抜ける風の音を録音して、その1/f揺らぎでも調べてみようかなと思うのである...  それとも、そんなことをしてもツマラナイだけかな?

2001-03-04[n年前へ]

田舎生活の不便さ 

 ふらっと中古のレコードを探しに行こうなんて思ったり、ふらっと楽器を買いに行ったりするのが無理だったりするところ。「古井戸の世界」を買いたいな、と。
  大学ノートの裏表紙に さなえちゃんを描いたの
  一日中かかって いっしょうけんめい描いたの
  鉛筆で描いたから いつのまにか消えたの
リンク)(リンク

2001-04-22[n年前へ]

今日のメモ カノン・コード 

 こんなCanon Codeは良いのだけれどね。(リンク

2001-04-29[n年前へ]

ファイト!縦文字文化 

縦と横の解像度を考えよう


 今年も去年に引き続き英語研修を受けている。といっても、去年は毎日十五分の英語研修だったが、今年は週二日のものを二種類受けている。何事も、「一番弱いところを強くするのが一番」というわけで、それが私の場合は英語であるわけだ。いや、もちろん弱いところは数え切れないほどあるのだが、英語はもうどうしようもないくらいダメなのである。

 その英語研修を受ける中で、本当に実感するのが「頭の中でも英語で考えないとキツイ」ということである。頭の中で日本語で考えてから英語で喋ろうとすると、その「日本語→英語変換」のオーバーヘッドはすさまじくて、とても会話にならないのである。もちろん、当然その逆もしかりで「英語→日本語変換」なんかもやっていたら、あっというまに相手の喋るスピードについていけず、「ここはどこ?私はだれ?」状態になってしまう。
 

 もちろん、「頭の中で英語で考えられる位なら、そもそも苦労はせんのじゃぁ!」と叫びたくなることもしばしばあるわけで、実際のところ私にはどうしたら良いのか全然わからないのである。「頭の中に言いたいことは沢山あるけど、それを伝えられない状態」と「頭の中でたいしてものを考えることができない、それを伝えられる状態」とどっちかを選べと言われても困ってしまう。残念ながら、「英語で頭の中でビュンビュンと考えて、それが口からペラペラとでてくる」状態は私には遠い夢物語のようなのである。
 

 こんな苦労は、日本語人生一本やりだった私が英語を使う場合にはどうしても避けられない話なのであるが、そんな「私の苦労」と似たような話はコンピュータの世界にも実はある。例えば、「今日の必ずトクする一言」でもよく登場する「Windowsの日本語化のオーバーヘッドに関する一連の話」などがそうである。超漢字あたりであれば話は別なのかもしれないが、Windowsに限らずどんなOSであっても英語だけを使うときと、日本語のような言語を使うときではスピードが全くと言って良いほど違ってしまう。

 例えば、英語版のWindowsであれば最新型のPCでなくてもサクサク動くのであるが、これが日本語版のWindowsともなると、最新型のPCでなければカタツムリのようなスピードに変わってしまうのである。最新型のWindowsやMacOS***の推奨マシンスペックは○×○×です、とOSメーカーが言ったところで、それは英語圏での話で日本語人生の私のようなものにはそれは当てはまらないのだ。わずか100文字ほどのアルファベットですむ英語の場合と、約七千字ほどもある日本語を使う場合とでは文字・フォント処理のスピードが違ってしまうのは当たり前の話である。

 ところで、英語と日本語をコンピューターなどで扱う時の大変さというものは文字数だけの話なのだろうか?数が多いから大変なのは当たり前なのだが、それだけではないのではないだろうか。単に文字数が多いというだけではなくて、一つの文字当たりの情報量も日本語の方が遙かに多いと思うのである。例えば、アルファベットの中でも複雑な形をしている"M"と、日本語というか漢字の中でも結構複雑な形をしている「廳」を比べてみれば一目瞭然だろう。"M"よりも、「廳」の方がずっと複雑な形状をしている。

 漢字の文字数が多いということは、そのたくさんある文字を区別するためにも漢字という文字の形状自体が複雑にならざるをえないわけで、それはすなわち漢字一文字の情報量はアルファベット一文字の情報量よりも遥かに多いということだ。ということは、

  • 一文字辺りの情報量が多くて
  • しかも文字数が多い
という日本語(あるいは漢字などを用いる言語)の処理速度が低下するのはしょうがないのである。
 

 しかし、「PC内部での処理も大変ではあるが、それを外部に出すときも大変だろう」というのが今回の話のテーマである。モニタやプリンタに出力する時の大変さも英語と日本語では大違いで、しかも英語文化で考えると見えない落とし穴があるのではないだろうか、という話である。

 まず、文字を表示するスペースというのは大体決まっている。そんな限られた同じスペースの中に、一文字辺りの情報量が少ないアルファベットと多い漢字を同じように詰め込めるだろうか?先ほどの"M"「廳」を縮小して10pt程度にしてみると、その答えはすぐにわかる。アルファベットの"M"の方はちゃんと読めるとは思うが、漢字の「廳」の方がちゃんと識別できる環境の人がいるだろうか?PCの画面に表示されている「廳」はずいぶんと省略されたてしまっていたり、あるいは潰れてしまっていたりするはずである。

 つまりは、PCの内部でも漢字のような文字を扱うのは大変であるが、それを外部へ表示したりするのも実際問題大変なのである。英語圏のアルファベット文化から考えれば、10ptなんて大きくて読みやすいと思うのかもしれないが、漢字などを考えると今のモニタの解像度では10ptでも小さすぎるのである。逆にいえば、アルファベットなどを表示する時に比べて漢字などの文字を表示する時には、遥かに高い解像度のモニタが必要とされるのである。PC自体の能力だけではなくて、モニタなどの出力機器も遥かに高い能力が必要とされるわけだ。
 

 もちろん、それは漢字だけの話ではない。世界中の文字で当てはまるハズの話である。試しに、

から、六つの文字種を適当に選び、それぞれの文字種の中でも一番複雑な形状をしていた文字を選んでみたのが下の一覧である。
 
世界の文字
アラビア文字
ヒエログラフ
漢字
ラテン文字
マヤ文字
ロンゴロンゴ文字

 アラビア文字あたりはラテン文字であるアルファベットと同じ程度の複雑さであるが、その他の文字はやはり遥かにアルファベットよりも複雑な形状をしている。「この中の半分くらいは使われていない文字じゃねぇーか!」という声も聞こえてきそうな気もするが、そんな小さいことを気にしてはいけない、とにかくアルファベットは色々ある文字の中でも単純な形状をしていて、漢字は複雑な形状をしているのである。

 次に、それぞれの文字画像の複雑さの特徴を眺めるために、それぞれ二次元フーリエ変換をかけて、周波数空間に変換してみたものを示してみることにしよう。まずは、漢字の例を示して図の見方を説明してみたい。
 

漢字の文字画像を二次元フーリエ変換をかけて、周波数空間に変換したもの

 図の横・縦方向が実際の文字の横・縦方向に対応し、図の中で中央から外周方向に向かって低周波から高周波の成分の量を示している。強さは
小 ← 赤 黄 黄緑 青 紫 → 大の順番になっている。

 たとえば、この漢字の例だと
ちょうど縦・横方向の周波数成分が多くて、しかも高周波まで含んでおり、縦と横とで比べると、縦方向の方が多くて、高周波の量も多いことがわかる。
 
 

 上の説明に書いたように、こんな風に文字画像を周波数空間に変換すると、「漢字は縦と横の線が多い」ということがよくわかる。しかも、

の時に調べたように、漢字は「縦方向に周波数成分が多い」、すなわち言い換えれば「横方向の線が多い」こともわかるのである。
 

 さて、世界の文字六種に戻って、それぞれを周波数空間に変換して並べてみると、こんな感じになる。
 

世界の文字六種を周波数空間に変換してみると…
アラビア文字
ヒエログラフ
漢字
ラテン文字
マヤ文字
ロンゴロンゴ文字

 こうして六種の文字種を周波数空間に変換して眺めてみると、色々なことが判る。例えば、

  • アラビア文字はほとんど高周波を含まない
  • ヒエログラフは比較的高周波が少なく、方向性も持たない
  • 漢字に含まれる高周波成分はほとんどが縦・横方向のみであり、その中でも「縦方向に周波数成分が多い」、すなわち言い換えれば「横方向の線が多い」
  • アルファベットは低周波がメインであり、縦横では横方向の方が高周波を含んでいる、すなわち縦の線が多い
  • マヤ文字は一番高周波まで含んでおり、比較的方向性も少ない
  • ロンゴロンゴ文字はアラビア文字よりも高周波が多いが、それでも比較的低周波メインであり、方向性もない
などだ。やはり、漢字やマヤ文字をきれいに表示するためには、ラテン文字のアルファベットやアラビア文字を表示するよりも、ずっと高解像度の表示装置が必要となるのである。
 

 もちろん、ラテン文字が比較的高周波が少ないからといって今の表示装置で十分だというわけではなくて、ラテン文字でもより高解像度のディスプレイが必要とされている。例えば、液晶画面などで文字を多量に読むことを想定している電子ブックなどの用途のためには、

で調べたMicrosoftの「ClearType」などの技術がある。これは液晶のRGBの画素の配列が横方向に並んでいることを利用して、横方向の解像度を高める技術である。

 ということは、こういう技術は横方向の高周波成分が多いラテン文字などでは効果が大きく、またラテン文字自体が比較的高周波成分が少ないために、こういう技術を使えば必要十分ということになるのかもしれない。しかし、日本語(漢字)のようなもともと高周波成分が多くしかもそれが縦方向に多い、というようなものでは効果は比較的少ないことが考えられる。もちろん、それは液晶というデバイスの特徴によるもので仕方のない部分もあるのだが、もしかしたらもしかしたら日本語のような縦方向の高周波を再現しなければならない言語のことを意識していないせいかもしれない。

 こんなことは液晶などのモニタだけではなくて、一般的なプリンタもそうだ。例えば、インクジェットプリンタではエプソンのPM-900Cの仕様などを眺めてみても、標準で720×720dpiで、高画質モードでは1440×720dpiとなっている。それはレーザービームプリンタなどでも同じで、リコーのプリンター大百科からウルトラスムージングテクノロジーを見てみても、やはり横方向の解像度のみを高めて2400dpi×600dpiとなっている。やはり、プリンタなどの印字装置でも横方向の解像度を高めようとはするが、縦方向の解像度は低いままにしているのである。もちろん、縦方向の解像度を高くすると印字速度が遅くなってしまうという、プリンタの特性があるにしても、やはり日本語を印字するためには不利な設定となっているのである。日本人としては、解像度表示は縦方向を重視するべきで、横方向の解像度表示にダマされるべきではないのである。高解像度2400dpiなんて言われても、「ヘヘン、オレは縦文字文化の日本人だから関係ないんだもんね」くらいは言って欲しいわけである。
 

 実際のところ、せっかく日本語(漢字)を使うのだから、日本語の特性に応じたPCやモニタやプリンタがあっても良いのになぁ、と思う。いや、というより日本語の特性をもっと理解するところから始めなければならないのかもしれない。そうだ、私はまずは日本語の勉強から始めるべきなのだ。英語の勉強をしている場合ではないし、頭の中で英語で考えていたりすると、縦文字文化に合った発想ができなくなってしまうに違いないのである。って、英語学習から逃げてるだけだったりして…

 あぁ、しまったぁ。今回はホントに真面目な話になってしまったぞ、と。しかも、まるで国粋主義者みたいだし。
 

2001-08-02[n年前へ]

今更ながらのFun Loveウィルス 

 Fun LoveウィルスでNさんのPCがダウン。三ヶ月分のソースコードがパ〜。おそろしや〜。感染経路だけは知りたいところ。
 それにしても、NTサーバー版非対応のソフト・ドライバーが多いのが結構困る。Macサービスとか4CPU使いたいからサーバー版使ってるだけで、ほとんど使い方はワークステーションなのに…。いきなり、どこでも売ってるソフトウェア・パッケージじゃなくて、「ソリューション」になっちゃうんだもんなぁ。スキャナもろくに使えないし…。



■Powered by yagm.net