砂時計の七不思議 〜CD-ROMバージョン〜

今回の インタラクティブ・サイエンス・コラムは1995年10月25日に中公新書から発売予定(田口善弘著)の 「砂時計の七不思議」 (データ)とのタイアップ企画。自分の本を解説するなんてちょっと恥ずかしいが、まあ、紙のメディアでは得られないインタラクティブな世界をお楽しみ下さい。
目次
はじめに
第一章  流される
第二章  吹き飛ばされる
第三章  かきまぜられる
第四章  ふきあげられる
第五章  ゆすられる
第六章  粉粒体とは何か
おわりに


はじめに
「砂時計の七不思議」とは奇妙な題名だと思われるかも知れない。ミステリの題名みたいだ。七つの謎を秘めた砂時計があり、謎が一つ解けるごとに新たな犠牲者が....。そして、妙齢の美女が七番目の標的、みたいなタイプの。勿論、インタラクティブ・サイエンス・コラムで取り上げる以上、そんなものであるわけはない。(自分でこんな変な題名をつけておいて何だけど、担当編集の方がこういう題名の方がいいと勧めて下さったのでこうなりました。)「砂時計の七不思議」の主人公はタフガイでも絶世の美女でもなくて、僕らの身の回りに溢れている「粉」だ。つまり、小麦粉、米びつの中の米、塩入れの中の食塩の粒、そして勿論、砂時計の中の砂粒。こんなものを研究してどういう意味があるのかと思われるかも知れない。物質を構成する最も基本的な単位=素粒子の解明に今一歩で手が届くという科学の時代、火星に人を送ることが夢物語で無くなりつつあり、地球の裏側の人が書いた自己紹介が計算機を通じて自宅で居ながらにして読める技術の世紀。そんな時に砂時計の研究などしてどうするのか?その疑問はもっともだ。だが、「砂時計の七不思議」の中では、月に人を送ることよりも、砂時計の力学を「理解」することの方がずっと難しいこと、そして、それは僕らがたどってきた科学技術文明の発展の仕方の当然の帰結であること、また、現在の環境破壊的な文明のあり方のコインの裏側であることをお伝えしたい(ちょっと大げさではあるが)。



流される
今回取り上げるのは具体的には粉の運動法則だ。専門的には粉のことを「粉粒体」と呼ぶのでここでもそう呼ぶことにしよう。運動している状態の粉=粉粒体というとまず思い浮かぶのは雪崩ではないだろうか。勿論、雪崩を実際に目にしたことがある人は少ないのではないか。なにしろ、雪崩を間近に見られるほど、あるいは、カメラに納められるほどそばに行くということはひょっとすると当の雪崩に巻き込まれて死ぬことになりかねない。それほど、雪崩というのは恐ろしい代物だ。だが、冷静に考えてみると、どうして雪崩に巻き込まれると死んでしまうのか良く解らないことに気付く。雪崩というのは要するに降り積もった雪が水の様に流れている状態だ。なるほど、雪崩に比することができるほどの流れの速い川に落ちれば人間は確かに溺れ死ぬだろう。だが、それはあくまで川の流れがずっと長く続いているからで一瞬で終ってしまう雪崩に巻き込まれただけで溺れてしまうというのも考えにくい。実際、雪崩状態の雪の運動を研究している専門家に言わせれば、雪崩状態の雪の状態は流れている時の水の状態に非常に近いと言う。もし、雪崩が非常に細かく砕けた雪の固まりで構成されているなら、その中で泳げても何の不思議も無いと言う(実際には、砕け切れなかった雪の大きな固まりが雪崩の中には多く含まれているので、岩の固まりを含んだ洪水の中で泳ぐのと同じような事態になっており泳ぐことは難しい)。
溺死は呼吸不能による死亡だが、その意味では雪崩による死亡もやっぱり溺死なのだ。ただ、水の中で溺れるのとはちょっと違う。雪崩に巻き込まれた人間は泳ぐこともできずに、雪崩と共に流されていく。しかし、雪崩と言うのは大概はすぐに傾斜の無い、あるいは緩いところにたどり着いてしまう。そうなると流れが止まる。流れが止まった途端、雪の状態は激変する。ついさっきまで水の様に流れていたのに、一瞬にして固い雪の固まりに戻ってしまう。ちょうど、水が凍って氷になるように。さて、雪崩に巻き込まれた人が雪崩が止まって固体と化した時にたまたま雪崩の底の方にいたらどうなるか?その人は自分の上に何メーターもの雪の層が積み重なっていることに気付く。勿論、自力で出ることはできない。生き埋めになる。そして、結局、窒息死する。この様な事態は粉粒体がある特別な性質を持っているから起きることだ。それは
粉粒体の特徴:その1/流れている時は水のようだが、止まった途端に固まってしまう。
粉粒体は小さな粒々の集合に過ぎないが、たくさん集まると思いもかけない性質を見せてくれる。その意味では液体・固体・気体という今までの区別の中には当てはまらない、あたらしい「物質」と言うことができる。以下では、この不思議な物質「粉粒体」の動力学を見ていこう。 そうそう、忘れるところだった。最近、粉粒体で渋滞の実験をすると言うのがはやっている。渋滞については前回のインタラクティブ・サイエンス・コラムで触れたように、車の流量の揺らぎが1/f揺らぎになっていたのであった。粉粒体はこの渋滞のモデルになっていることが最近、解った。細い管をまっすぐに立てて、その中を砂を流し落す。この時の砂の流れが車の渋滞と同じ1/f揺らぎを持っているのだ。そう言っても解らないかも知れないから、管を水の中に沈めて粉粒体を流した時の粒の運動の様子のビデオを
見て頂こう。いかにも、車の渋滞の様に見えないだろうか?インターネットのデータの流れと、車のながれと、パイプの中の粉粒体の流れが同じ性質を持っているなんて、誰が予測しただろうか?人間が英知を集結して作ったインターネットや高速道路の中の車の運動が、砂粒の運動と同じだなんて、人間がいくら頭がいいつもりでも大したことはない。
QT ムービー3.7M (中央大学理工学部物理学科松下貢、中原明生、堀川新氏提供。)



吹き飛ばされる
砂と言うのは所詮は小さな石の固まりに過ぎないから風が吹いてくれば飛ばされてしまう。いい例が黄砂というやつだ。遠く中国大陸から砂が偏西風に乗ってやってくる。これほど長い距離を旅すること自体、砂の運動の面白さだが(砂は空気より重いのだ。それがどうしてこんなにも長い距離を飛ぶことができるのか?)、ここでは触れない。その代わりに、砂地に風が吹き付けた時にできる奇妙な模様=風紋について見てみよう。
風紋は肉眼で見た人は少ないかも知れないが、絵や写真やビデオで少なからず目にしたことがあるのではなかろうか。一面、砂だけが広がる砂漠の単調さを破る唯一の存在が風紋。その名の通り、風紋は砂の表面に吹き付ける風が砂の上に残す指紋のようなものだが、良く考えてみると、どうして同じ間隔の縞ができるのか良く解らない。一様な風が吹き付けたら、むしろ、凸凹があったとしても砂の面はならされて平らになりそうなものだ。それが、何もないところから縞模様が現れるなどちょっと考えにくいのではないか?
この疑問に答えるのはなかなか難しい。砂の運動方程式なんてないから、どういう理由で風紋ができるのか解りようがないからだ。こういう時は数値計算をするといい。一番真面目な数値計算は砂粒が風に飛ばされる、という運動を砂粒一つ一つについて真面目に解く、というものだが、これはちょっと大変過ぎる。砂粒は直径が1ミリ位だから、一メートルの距離の中に1000個並ぶ。そうすると、一メートル四方の正方形の中には100万個の砂粒があることになる。深さ方向も考えないといけないから、数百万個の砂粒を考えないといけない。これは最高速の計算機を使えばできない計算ではないがたかが風紋の研究にそこまでやらずに済ましたい。で、簡単なモデルを提案する。
モデル:
砂粒を考えずに、ある領域(例えば、1センチ四方)の中の砂をひと塊と考える。そして、風によってこの領域内の砂が一度に全部飛ばされるとする。飛ばされたところは表面の高さが低くなり、飛ばされた砂が落ちたところは表面の高さが高くなる。風で飛ばされる距離は飛び立った位置が高いほど、また、風が強いほど長くなるとする。 また、これとは別に凸凹がならされる効果も入れておく。

なんと、たったこれだけで縞ができるのだ。何も難しいことはしていないがこれできれいな縞模様ができる。風を吹き付けたら、きれいにならされて平らになるだろうという予想は砂の表面の場合は成り立たない。むしろ逆だ。「北風と太陽」の童話の様に。
粉粒体の特徴:その2/平らな砂の表面に風を吹き付けるとかえって凸凹になる。
きれいな縞模様

ここで説明したモデルよりちょっと高級なモデル(本質的には同じモデル)で作られた砂の模様の数々。風紋の他に砂丘も作ることができる。(東京大学教養学部大内則幸氏提供) ソースコード出力例をつけておきます(一般的なC言語で書かれている。マック用にはなっていない)。



かきまぜられる
2種類の異なった粉粒体を混ぜるというのは結構良くあるシチュエーションだ。今は薬というと皆錠剤とカプセルばかりだけれど、僕が子供のころは薬というと粉薬が多かった。医師の診断の後、薬の処法が決まる。小さい町医者では医師自ら処方してくれることも多かった。大体、瓶ごとに様々な種類の薬が入っていて、それを必要な分量だけ天秤ばかりでとり分ける。次にそれを混ぜてから一回分づつ分けて紙に包んでくれるのだがこの「混ぜる」という作業がいかにも大げさだ。乳鉢と乳棒というギザギサのついていないすりこぎとすり鉢のミニチュアのようなもの(石製)を持ち出してその中で混ぜる。鉢に数種類の粉薬を一緒に入れて棒でかき混ぜるのだが、これはかき混ぜる、というより摺り潰す、という感じで満身の力を込めてゴリゴリやるわけだ。子供心に「どうしてああまでしないといけないのか?」と疑問に思ったものだ。というより、あれが「混ぜる」ための作業だということに気付いたのはかなり後の話しで、あの時は何かの「おまじない」か何かだと思っていた。最近になって理由がやっと解った。それは、
粉粒体の特徴:その3/粉粒体はかき混ぜても混ざらない。


からだ。今では、近代的になってこういう作業を目にすることはなくなったが、実際はこの作業を製薬会社がやっているだけのこと。基本的な原理は何も進歩がなくて相変わらず原始的なやり方で かき混ぜている。大体、粉粒体の科学はちっとも進歩しない。粉粒体が関わると工学技術は途端に原始的になる。マクドナルドをご存知だろうか?低価格で高品質を極限まで追求したシステムのはずだが、「コーンポタージュスープ」というメニューは往々にして「機械の調子が悪くてお出しできません」と言われる(少なくとも、僕は何度も言われた)。あれは思うに、粉粒体の技術が未熟だからではなかろうか。コーンポタージュスープと言うのは基本的に粉をお湯に溶かしたものだから放っておくと粉がまた沈澱してしまう。あるいは、一様に解けないのだろうか?カウンターの奥のことだから良く解らないが、どうも、スープのタンクの下の蛇口が詰まってしまうようだ。どうするのかな、と思っていると、かき混ぜ棒のようなものでガシガシかき混ぜるばかりなのだ。もう少し、賢いやり方がありそうなもんだが駄目なのだろうか?多分、駄目なんだろう。計算機やロケットは作れても、「目詰まりしないコーンポタージュスープ供給器」はうまく作れない。これがどうも、我々人類の科学文明のありかたらしい。
かき混ぜている
QTムービー1.8M または 混合機(オリジナル映像)
典型的な撹拌の実験の再現シミュレーション。2種類の粉粒体がなかなか混ざらないのが良く解る(大阪大学工学部辻裕・田中敏嗣両氏提供)。


ふきあげられる
まずは この映像を見て頂こう。これは何に見えるだろうか?泥水の沸騰?まあそういうことにしておこう。実はこれは粉粒体である。したがって、
粉粒体の特徴:その4/粉粒体は沸騰する。
と言っても、鍋に砂を入れて熱したからと言って、ブクブク泡が出てくるわけではない。粉粒体の沸騰のさせ方は次の通り。

1. 底が網になっている容器に粉粒体を詰める。但し、網目は粉粒体の粒がすり抜けない程度の粗さにする。

2. 容器の下から空気を勢い良く吹き込む。

これだけである。どうしてたったこれだけで、粉が沸騰するのか良く解っていないがこれを数値シミュレーションで再現するのは意外と簡単である。映像を2つ見て頂こう。一つは粒子数は多くできないが 厳密に近い計算、もう一つは粒子数を多くして厳密性をやや 犠牲にした計算。見ためが違うのは単に実験に比べて粒子の数が十分でないせいである。ここまで再現できながら、沸騰の発生機構をちゃんと述べることは誰にもできない。この「計算できるが理解できない」という問題は、粉粒体の科学にいつもついて回るのである。

その次は、
粉粒体の特徴:その4’/粉粒体は雲になる。
吹き込む風の速度をどんどん速くしていくと、どうなるか?当然、粉粒体は吹き飛ばされて容器から出て行ってしまうだろう。その出て行った粉粒体をまた集めて容器の下から供給してやる。そうすると、装置の中を粉粒体がぐるぐる回っているような状態を作ることができる。この時、粉粒体の密度はずっと薄いのだが、 雲のようなきれいな模様を作る。これもまた計算機で 再現可能である
こうしてみてくると、一見、直観に反した非常に奇妙な現象も計算機で再現するのは難しくない、という事実が解ってくる。粉粒体のひと粒ひと粒は、衝突して跳ね返る、とか空気に流される、とかいう性質を持っている。こういう基本的な性質を持った粒の多数の運動を計算すると「どうして沸騰するのか」とか「どうして雲ができるか」とか解らなくても、実験が再現できてしまう。現象を再現できれば理解できた、というのは粉粒体には当てはまらないという困った事態が起きてくるのだ。
この映像
QT ムービー10M 神戸大学工学部竹中信幸氏提供。
厳密に近い計算
QT ムービー1.0Mまたは Movie of bubbling flow(オリジナル映像) 東北大学理学部市來健吾氏提供。
犠牲にした計算
QTムービー 540Kまたは2次元流動層内単一気泡(オリジナル映像) 大阪大学工学部辻裕・田中敏嗣両氏提供。
雲のようなきれいな模様
QTムービー 2.3M 東京農工大学工学部堀尾正靱氏提供。
再現可能である QTムービー 1.4Mまたは分散系固気二相流中のクラスター形成(オリジナル映像) 大阪大学工学部辻裕・田中敏嗣両氏提供。


ゆすられる
さて、ここでクイズ。

「砂を容器に入れて、上下に細かく、しかし、強く振動させるとどうなるか?当てはまらないものを一つ選べ。」
1. 固まって石の様になる。
2. 真中に山ができる。
3. 融けて水の様になる。

あてはまらないもの、を一つ選べ、というクイズである。何と、このうち、2つは本当のことである。 答えは。
実験の ビデオを見て頂こう。融けてながれる様子が良く解るように、ガラス製の容器に色ガラスを層状に並べてある。まるで、液体のように流れていることが解るだろうか。また、融けているにもかかわらず、表面が盛り上がって小山ができている。
粉粒体の特徴:その5/粉粒体はゆすると融ける。
更に奇妙な現象がある。こうやって融けている粉粒体にチューブを突っ込むと、どうなるか。何と、チューブの中を粉粒体のが 這い上がるのだ!。こんなわけの解らない現象はやっぱりわけが解らないのであって、原因は良く解っていない。ところが、数値計算で再現するのは極めて簡単。粒子の衝突のシミュレーションをすれば速いパソコンくらいの性能で十分、こういう現象が再現できる。またも、「計算できても理解できない」状態。
こういうのはどうやって理解すればいいのだろうか?
答え
1.があてはまらない。後の2つは正解。
ビデオ
QTムービー 18M 静岡大学工学部秋山鐡夫・青木圭子両氏提供。
這い上がるのだ
QTムービー 9.4M静岡大学工学部秋山鐡夫・青木圭子両氏提供。


粉粒体とは何か
さて、ついに、今回の話しも佳境に入ってきた。粉粒体の動力学はどうしてこうもわけが解らないのか?火星に人を送ろうという時代に、砂の運動がどうして理解できないのか?その説明をしよう。


今の物理学というのはもともと、ニュートンに始まる。ニュートン以前にも科学はあったが、近代科学の成立はやっぱりニュートンの力学だと思う。彼の業績の素晴らしいところはいろいろあるが、「りんごから星の運動まで」文字通り、この世の仕組みを解明し、それまでは全く別のものと思われていた地上界と天界が同じ法則に支配されていることを示したことだろう。それまでは、天界は神の領域、地上界は汚れた人間の領域、と思われていたらしいから、その2つが同じ法則に従っているという主張はかなり衝撃的だったと思う。だが、一方で、天界に地上界の法則を当てはめていいということは、神様なんかいないことにしても世界を理解できるかも知れない、という大胆な考えにつながるわけだ。そのおかげで、この科学技術文明の隆盛があり、我々は繁栄をおう歌しているわけだが、一方で、科学のやり方、みたいなものがしっかりと固定してしまったきらいがある。つまり、なるべく短い、なるべく少ない数の式で原理を書き下す。実際の現象はそれらを解いて理解する。まず、原理的な式を導出するのが大切で、実際に解くのはあとでいい。だから、仮定になる原理が少ないほど「高級」な科学で、覚えなくてはいけないことが多いほど、(つまり、博物学に近くなるほど)科学として低級に成っていく、みたいな階級制度が出来てしまった。
しかし、冷静に考えてみれば、科学というのは現実の自然現象を理解したい、というのが目的なのだから、何も数少ない簡単な式で書けるものばかりが大事なわけではなかった。この世には、そういうやり方では理解できない現象だっていっぱいあった。例えば、生物とは何か、とか、知性とは何か、とか。こういうテーマは大事なことは火を見るより明らかだったから、物理学はこういうテーマを避けるために「複雑過ぎてまだ物理の対象にならない。いずれ物理が進歩すればそこまで議論できる」というスタンスをとってきた。だが、そんな悠長なことを言っているうちに物理をベースにした「技術」の方はずっと先まで行ってしまった。これは結構、アブナイ。なにしろ、物理学は自然現象のごく一部しか理解していないから、それを応用した技術の方も自然現象をきちっと考慮できていない。その結果、公害とか環境破壊が問題になってしまったわけだ。
では、物理学が主張してきた「複雑なものはそのうち物理が進歩すれば理解できる」というは正しかったのだろうか?この見方の限界をはっきりと示したのが粉粒体の科学、というわけだ。粉粒体がいろいろ変な挙動を示すのは 昔から知られていたが、複雑過ぎて物理の範疇の外と思われていた。だが、実際には最近の数値計算で解ったように粒子同士の相互作用はぶつかったら跳ね返る、という単純なものでいいことが解ってきた。それだけを考慮すれば、粉粒体の奇妙な挙動がいろいろ再現できるからだ。だから、「複雑だから」理解できないわけではないことが解ってきた。最終的な挙動が複雑だからといって基礎方程式が複雑とは限らない。逆にいうと物理が求めるような「少ない数の単純な方程式」が求まっても、粒子の数が多くなってくれば、結果として複雑な挙動が出てくる。基礎方程式が解っても理解できるとは限らないわけだ。
このように、2重の意味で「複雑なものは後回し」という物理学のドグマは立ちゆかなくなっている。粉粒体の動力学が理解できなくても人類は困らないかも知れないが、粉粒体の挙動も理解できないようでは、生物や地球の気象、みたいなものを理解できるとは思えない。科学のあり方が根底から問われている時代だと私は思う。
昔から知られていた
振動を加えると融ける、という現象は150年以上前から知られており、また、論文を書いた物理学者もファラデイのような大御所だった。だから、決して、注目されなかったわけではないのだ。



おわりに
で、結局、「砂時計の七不思議」が何であるか、説明せずじまいだった。ちょっと、スペースが足りない。何せ、元の本は10万字くらいあるから。とはいえ、一応、エッセンスは伝えたつもりだし、本では見られないビデオなども収録したので、御勘弁願いたい。
なお、学術目的(従って英語)ではあるが、粉のページというものを運営している。あちこちリンクをクリックしまくれば、おもしろい静止画や動画像が見られる。ここに収録した画像のうちの幾つかは粉のページからリンクされている。
ソースコード
マック用に書かれたものではないので修正が必要かも知れない。
(東京大学教養学部大学院修士1年遠藤斉氏提供)


#include    
#include    

#define delta   0.5       /* はじめに与える凸凹の幅 */
#define x_size  60        /* 系の大きさ */
#define y_size  20        /* 系の大きさ */
#define q       0.6       /* saltation 移動する砂の量 */
#define b       2.0       /* saltation 高さに掛ける倍率 */
#define L_init  7.3       /* saltation L0 */
#define D_init  0.8       /* creep D */
#define s_init  3571      /* randomize seed No. */
#define d_step  0.9       /* 表示用しきい値 */
 
void copy(float h[y_size+2][x_size+2])
{
    int i,j;
    for(i=1 ; i= d_step )
		ripple[i][j]=maru[0];
	    else if(h[i+1][j+1] >= 0.0 )
		ripple[i][j]=maru[1];
	    else if(h[i+1][j+1] >= -d_step )
		ripple[i][j]=maru[2];
	    else
		ripple[i][j]=maru[3];
	}
	ripple[i][x_size]='\0';
    }
    for(i=0 ; ix_size) + x_size*(k<1);
            /* ↑系からはみ出した時の処理(周期境界) */
	    s[i][k] += q ;
	}
    copy(s);
}
 
void creep(float h[y_size+2][x_size+2], float s[y_size+2][x_size+2], 
	   float D)
{
    int i,j;
    float nn,nnn;
    for(i=1 ; i < y_size+1 ; i++){
	for(j=1 ; j < x_size+1 ; j++){
	    nn =1.0/6.0*( s[i-1][j] + s[i+1][j] + s[i][j-1] + s[i][j+1] );
	    nnn=1.0/12.0*( s[i-1][j-1] + s[i-1][j+1]
			  + s[i+1][j-1] + s[i+1][j+1] );
	    h[i][j] = s[i][j] + D*( nn + nnn - s[i][j] );
	}
    }
    copy(h);
}
 
main()
{
    float h[y_size+2][x_size+2];      /* 高さを与える配列 */
    float s[y_size+2][x_size+2];      /* saltation の結果を与え、creep へ */
    int i,j;
    j = 0 ;          /* step数 / 20 */
    init(h);         /* 初期の凸凹を与える */
    printf("step = %d \n",j);
    disp_char(h);
    for(j=0 ; j<5 ; j++){
	for(i=0 ; i<20 ; i++){
	    saltation(h,s,L_init);
	    creep(h,s,D_init);
	}
	printf("step = %d x 20 \n",j+1);
	disp_char(h);
    }
}


出力例
-----------------出力例(使用する乱数ルーチンで異なる)----------------------


step = 0 
...oo..o.o.oo....ooo...oo...oo.oo....o.o.o.ooo.o..o.oo.oo..o
...o.o.o.o...o.ooooooo..o.oooo.o.....oo.o.ooo.oooooooo....oo
.....o.oo.........o....o...oo.oo..oo......o...oo.oooo.o..o.o
ooooo.o.oo.o.o..o.o.oooo..o..o..oo.o.ooo..o.o.oo.ooooo.o....
...o..ooooo.o.o.o.oo.o.o.o..o.ooooo...o.o..oo.......o..o...o
ooooo.ooo.ooo..o..oo.o....o.o..ooo...o.o..o..ooo.oooooo..o..
ooooooooo.o....o.ooo.....o...oo...oo.oo.oo....o..o.oo.oo.o.o
o.oo..ooooo..oo...o.oooo..o...oo.oooo....oo.ooooo..ooooo....
..ooo...o.oo.o...oo.oo.ooooo..oo.o.o...o..ooooo.ooo.oo..ooo.
ooo..oo.o....oo.o...o.o..ooooooo..oo...oo.oo..o.o..o.o.ooo..
..ooo.o.ooo..o.o..oo..oo.o.ooo....o..o...ooooo.o..o.....oooo
..oo.ooo.oo.oo..oo.ooo.oo.oooo..ooo..oo.ooo...ooo.o.oooooo.o
oooooooo...oo...o.o..ooo..o..oo.ooo.oo.o..o.oo..o.ooo.oooo.o
o....o.oo..oooo.ooo.o..oo.o.oo..o..o.oooo..ooo.ooooo...ooo..
o.ooo..oo..o.o.oo.o..oo.o....ooooo..oo.oo..o.oooo..oo..o.o..
.o..o.o..ooo..o.oo.oo.oo...oooo...ooo..o..o.oooo...o..oo....
o.o....oo..oo.o.oo.oo.o.o.oooo...oo.ooo....oo...ooooooo..o.o
o..ooooooo.o..oo..o.ooooo..o..oooo.oo.o.oo...ooo.oooo...o.o.
o.oo.o..o..o..o...o..ooo..o.oo.ooo...o..oooo....o.oooo.oo..o
o..oooo...o.....o.oo.....oo...oo....o.o.o..oo...oo.o.oo..ooo

step = 1 x 20 
ooooo.   oOOO.   oooo..   oOOOo   .oOOo  ..OOOo   .OOOOo    
.oooo..  .OOO.   .oooo.   oOOOo    oOOo.  .oOOO.   oOOOO    
.oooo..  .OOO.   .oooo.   .OOOo    oOOo.   .oOOo   .OOOO.   
.oooo.   .OOO.   ..oOo.   .OOOo    oOOO..   oOOO.   oOOOo   
.oooo.  .oOOOo   ..oOo..  .OOOO.   .OOOo..  .OOOo   .OOOO   
 oooo.   .OOOo   ..oOo..  .oOOOo   .oOOOo.  .OOOo.  .OOOO.  
 oooo.   .OOOo   ..oOOo.   oOOOo   .oOOOo.  .oOOo.   oOOO.  
 oooo.   .OOOO    .oOOo.   oOOOo    oOOOO.   oOOoo.  oOOOo  
 .oOOo   .OOOO.   .OOOO.   .OOOO.   oOOOO.   oOOoo.  .OOOo  
  oOOo.  .oOOO.   .OOOO.   .OOOO.   oOOOO    oOOoo.   oOOO  
  .OOOo.  oOOOo   .OOOO.   .OOOo.   oOOOO    ooOOo.   oOOO. 
  .oOOO.  .oOOo   .OOOO.   oOOOo.   oOOOo   .oOOOo.   oOOOo 
   .OOOo  .ooOo.  .oOOO.   oOOoo   .OOOOo   .oOOOO.   oOOOo.
   .OOOo   .oOo....OOOo   .OOOo.   .OOOO.   .OOOOo   .oOOOo.
  .oOOO.  ..ooo...oOOO.   oOOOo.   oOOOo.   oOOOo.   .OOOoo.
 .oOOO.  .ooOo.  .OOOo   .oOOOo.  .oOOOo   .OOOO.   .oOOoo. 
.oOOO.   .OOOo   oOOOo   .oOOOo.  .oOOO.   oOOO.   .oOOo.   
.oOOo.   oOOO.   oOOOo   .oOOOo.  .oOOo   .OOOO    oOOOo.   
ooOoo.   oOOO.   oOOOo   .oOOOo   .oOOo   .OOOo   .OOOOo   .
ooooo.   oOOO.   oOOo.    oOOOo   .oOOo   .OOOo   .OOOOo   .

step = 2 x 20 
OOoo    oOOOo.    OOOOO     .oOOOOOo     .OOOOO.    ....ooOO
OOo.    oOOOo.    oOOOO.     oOOOOOo     .OOOOO.    ....oOOO
OOo.    oOOOO.    oOOOO.     oOOOOO.     .oOOOO.    ....oOOO
OOoo    .OOOO.    oOOOO.     oOOOOO.     .oOOOO.    ....ooOO
OOOo.   .OOOOo    oOOOOo     oOOOOo..    .OOOOO.    .....oOO
OOOOo    oOOOO.   .OOOOo    .oOOOOo..    .OOOOO.     ....ooO
ooOOO.   .oOOO.   .OOOO.    oOOOo....... .oOOOOo     .....oo
ooOOOo.   .OOOo.  .OOOO.   .OOOOo.  .oo....oOOOO.   ........
..oOOO.   .oOOo.  .OOOO    oOOOo.   .oOo.. .oOOOo    .ooo...
 .oOOOo.   .oOO.  .OOOO    oOOOo.   .oOoo.  .OOOO    oooo.  
 .oOOOo.  ..oOO.  .OOOO    .OOOo.   .oOOo.   oOOO    oOOoo  
 .ooOOo.  .oOOO.  .OOOO.   .OOOOo   .oOOo.   oOOO.  .oOOO.  
 .oOOo.   .OOOO    oOOo.   .OOOOo   .oOOo    oOOOo...oOOo.  
.oOOOo.   oOOOo    oooo.   .oOOOo   .oOO.   .ooOoo.ooOOo.   
.oOOo.    oOOOo   .oooo.   .oOOO.   .oOOo   .oooooooOOOo    
.oOOo.   .OOOO.   .oooo..   oOOO.   .oOOo.  .oooo..oOOOo    
.oOOo.   .OOOO.   .oOOo..   oOOOo  ..oooo...ooOo.  .OOOo    
.OOOo    .OOOO.   .OOOo.    oOOOo.....oo...oOOO.   .OOOO.   
oOOOo   .oOOOo.   oOOOO.    ooOOOoo....  .OOOOo.   .oOOoo. .
oOOO.   .OOOOo    oOOOO     .oOOOOO..    .OOOOo.   .oooooooo

step = 3 x 20 
OOOo    .oooOOOo...oo....oOOOoo     oOOOOo.    oOOOOo    .oO
OOOo     .oOOOOo....   oOOOOOo.    .oOOOOo.    oOOOOo    .oO
OOOo.    .oOOOOo..     oOOOOOo.    .oOOOOo.    .OOOOo    .oO
OOOo     .oOOOOo.      oOOOOOo.     oOOOOo.    oOOOOo    .oO
OOOo     oOOOOO.    ...oOOOOOO.     .OOOOo.    oOOOO.    .oO
OOO.    .OOOOO.   ..oooo..oOOOO.    .oOOOo.   .oOOOO.    oOO
OOo     oOOOOo    .oOOo.  .oOOO.    .oOOOo.   .OOOOo    .oOO
Oo.    .OOOOO.    oOOOo.   oOOOo    oOOOOo    oOOOO.    oOOO
..    .OOOOOO.   .oOOOo.   .OOOo    oOOOO.    oOOOo.   .OOOO
     .oOOOOOo.   .oOOOo.   .OOOO.   .OOOO.   .oOooo.   oOOOo
     .oOOOOOo.   .ooOOO.   .OOOO.   .OOOOo   .OOOo.   .OOOO.
.   ..oooOOOOo   .ooOOO.   .OOOO.   .OOOOo   .OOOo.   .OOOOo
.  ...ooooOOOo   ..oOOO.   .OOOO.   .oOOOo   .oOOO.   .OOOOo
......oooOOOOo   ..oOOO.   .OOOO.   .oOOOo.  ..OOOo   .oOOOo
o...  .oOOOOO.   .oOOOO.   oOOOO.   .oOOOO.   .oOOO.   .oOOO
Oo.    .OOOOo.   .oOOOo.   oOOOO.   .oOOOO.    .OOOo    .OOO
OOo.   .OOOOo.   .OOOOo   .oOOOO.   .oOOOo.    oOOOO.   .oOO
OOO.   .oOOOO.   .OOOO.   .oOOoo.   .OOOOo.    oOOOO.    oOO
OOO.    ooOOOo.  .OOOO.   .oOooo.   .OOOOo.    oOOOO.    .oO
OOOo    .oooooo. .oOOO.  .oOOOo.    oOOOOo.    oOOOO.    .oO

step = 4 x 20 
   .oOOOOo     .OOOOO.    ..ooOOOo.   .oOOOo..     oOOOOOo  
   .oOOOOo     oOOOOO.     .ooOOOo.    OOOOO..     oOOOOO.  
   .OOOOO.     oOOOOO.    ..ooOOOo    .OOOOO.     .OOOOOo.  
   oOOOOO.     oOOOOO.    ..oOOOO.    oOOOOo.     .OOOOOo.  
   .OOOOo.    .oOOOOO.    .ooOOOo    .OOOOo..     .OOOOOoo. 
   .OOOOo.    .oOOOOo    .ooOOOo.   .oOOOo.   .oooo..ooOOoo.
    oOOOO.    .ooOOOo    .oOOOOo    oOOOO.   .oOOO.   .oOOOo
.   oOOOO     ..oOOOo.   ooOOOO.   .oOOOO.   oOOOO.   .ooOOo
o.  .OOOO     ..oOOOo.   oOOOOo    .oOOOo.   oOOOO    ...oOO
o.  oOOOO      .oOOOo.   oOOOOo    .oOOOo.   oOOOO    . .oOO
o...oOOOO       oOOOO.   oOOOOo    .ooOOo.   oOOOO    . .ooo
o...oOOOO       .OOOO.   oOOOOo    oooOOo.   oOOOO    ...ooo
o. .OOOOO       .OOOO.   oOOOOo    ooOOOo.   oOOOO    ...ooo
o  .OOOOO      .oOOOO.   .OOOOo    ooOOO.   .oOOOO.   .ooooo
.   OOOOO.     .oOOOO.   .OOOOo.   oOOOO.   .oOOOO.   .oOOOo
    oOOOO.    ..oOOOO.   .oOOOo.   oOOOO.   .oOooOo   oOOOOo
    .OOOOo    ..oOOOO.   .ooooOo   .OOOO.   .oooooo   oOOOO.
    .oOOOO.    .oOOOO.   ..oooOo.  .oOOOo   .ooooo.   oOOOo 
    .oOOOO.    .OOOOO.    .oooOOo. ..oOOOo  ..oooo.  .OOOOo 
    oOOOOo.    .OOOOO.    ..ooOOo..  ..OOOo......  .oOOOOo. 

step = 5 x 20 
OOO.    ..oOOOOo    .ooOOOO.    .OOOOOo      ..oOOOo.    .OO
OOo     .ooOOOOo    .oOOOOo.    oOOOOOo      ..oOOOo.    oOO
OO.    ..oOOOOo.    oOOOOo.     oOOOOOo      .ooOOOo.    OOO
Oo    .oooOOOo.    .OOOOOo.     oOOOOOo     ..oOOOo.    oOOO
o.    ooOOOoo..   ..oOOOOO.     oOOOOOo     .oOOOo.    .OOOO
.    oOOOOo.  ...oooooOOOOo.    .oOOOOo.    oOOOO.    .oOOOO
.    OOOOo.   ...ooo..oOOOOo     .oOOOo.    oOOOO.    .oOOOO
.   .OOOOo    .....oo.ooOOOOo    ..ooOOo.   oOOOO.    .oooOo
o.  .OOOO.    .....ooo.ooOOOO.    ..ooooo.  .OOOO.    .ooooo
o.  .OOOO.    .....ooo..oOOOO.    ....oooo...oOOOo    ...ooo
o.  .OOOO.    ....oooo...OOOOo    .....oooo..oOOOo    ...ooo
o.  oOOOO     ...oooo...oOOOO.    ....ooooo..OOOOo    ..oooo
.   oOOOo    ...oooo.. .oOOOO     ...ooooo..oOOOO.    ..oooo
.  .OOOO.    .ooooo..  .OOOOo     ..oooo.. .oOOOO    ..oOOoo
   .OOOO.   .oOooo.    oOOOO.    ..ooooo.  .oOOOo    .oOOOo.
   oOOOO.   oOOOo.    .OOOOO.    .oOOOo.   .oOOOo.   .oOOOo 
  ..OOOo   .OOOOo     .oOOOO.   .oOOOOO.   .ooOOOo.   .oOOO.
oo...o..  .OOOOo.    ..oOOOO.   .oOOOOO     ..oOOOo.   .oOOO
OOo.     .oOOOOo     ..oOOOo.   .oOOOOo     ...oOOOo.    .OO
OOO.     .oOOOOo     .ooOOOo    .OOOOOo     ...oOOOo.    .OO