何となく使える気になっているGmsh。細かい機能を確認する自分用メモ。
Circle, Circle arc
円や円弧を描く命令。使い方を見てみる。
Circle
[Modules]-[Geometry]-[Elementary entities]-[Add]-[Circle]を選択する。下記の画面が出てくるので、数値を入力し円を描く。
- 円の中心座標
- 円の半径
- 円の始点
- 円の終点
- 「Add」ボタンで円の追加。キャンパス上でキーボード「e」でも追加できる。
snapとfreezeは別記事で書いているのでそちらを参照。
数値を入力後、⑤の「Add」ボタンを押すと、X-Y平面に平行な円(円弧)が追加される。Y-Z平面やX-Z平面に平行な円を直接作ることはできないもよう。どうしても必要な場合は、一旦 X-Y平面に平行な円を作成し、[Transform]-[Rotate]で回転させることで得ることができる。[Rotate]の使い方は別途確認する。
①中心座標、②半径はそのままの意味。③始点、④終点はラジアンで指定。円周率として変数Piを使うことができる。Pが大文字であることに注意。 ③④の値により円、又は円弧になるので、それぞれの場合を見てみる。
円の場合
③と④で同じ位置を指定した場合、円が作られる。ただし③=0, ④=0 のような指定ではエラーとなる。③=0, ④=2*Pi のように円を1周するように指定する必要がある。なお、2周するような指定(③=0, ④=4*Pi)でも1周する場合と同じ結果となる。
③=0, ④=2*Pi の場合、X=cos 0, Y=sin 0 の位置に新しい点が作られる(X-Y平面で言えば右側、座標と半径により実際の位置は変わる)。モデルの都合により、点の位置を調整したい場合は、③=Pi/2, ④=Pi*5/2 といった指定をすることで点の位置を調整できる(この場合はX-Y平面上側) 。
円の場合はそれ自体でループとなり、表面を作ることができる。
円弧の場合
③と④で異なる位置を指定した場合、③を始点、④を終点とする円弧が作られる。2周以上する角度も指定できるが、作成される円弧は 0~ 2*Pi 間なのであまり意味はない。ただしプレビュー(赤線)が乱れる。
始点と終点に新しく点が追加される。円弧ではループとならないので、表面を作る際は[Line]などで別途ループを作る必要がある。
Circle arc
[Modules]-[Geometry]-[Elementary entities]-[Add]-[Circle arc]を選択する。3つの点から円弧を作成する。オプション画面は無い。
下記の順番で点を選択する。
- 円弧の端点1
- 円弧の中心点
- 円弧の端点2
3点を選択すると、①と③を結ぶ短いほうの円弧が作成される。点の選択を逆にしても同じ円弧となる。
ただし、①②③が直線上にある場合は、選択した順により半円弧の方向が異なる。
次の場合はエラーとなる。
- ①~②間の距離と、③~②間の距離が異なる。
- ①と③の点が同一。
また、[Circle]と異なり、X-Y平面に平行でない円弧も描くことができる。
.geoファイル
[Circle], [Circle arc]を使って円弧を作成し、.geoファイルを覗いてみる。
.geoファイルは次のようになる。
SetFactory("OpenCASCADE");
// 左図
Circle(1) = {1, 0, 0, 1, Pi*1/2, Pi};
// 右図
Point(3) = {2.5, 1, 0, 1.0};
Point(4) = {2.5, 0, 0, 1.0};
Point(5) = {1.5, 0, 0, 1.0};
Circle(2) = {3, 4, 5};
Circle(1)を作成した時点で、始点終点に点が2つ作成されるので、右図のPointは3から始まる。
GUIで[Circle]や[Circle arc]を選択しても、.geoファイル上の命令はどちらも 「Circle」となっている。右側 { } の引数の数で、[Circle]か[Circle arc]かが判別されていると思われる。
マニュアル
マニュアルでの記述は以下の通り*1。
Circle ( expression ) = { expression, expression, expression <, ...> };
Creates a circle arc. The three expressions on the right-hand-side define the start point, the center and the end point of the arc. With the built-in geometry kernel the arc should be strictly smaller than Pi. With the OpenCASCADE kernel additional expressions can be provided to define a full circle (4th expression is the radius) or a circle arc between two angles (next 2 expressions).
元々は [Circle arc]の機能(始点、中心、終点を選択し弧を描く)しかなく、OpenCASCADEの追加機能として [Circle]の機能があるようだ。実際に、上記の.geoファイルから SetFactory("OpenCASCADE"); を消すと、[Circle arc]の機能しか使えなかった。
以上
上記は、私がネットの情報やマニュアルを調べたり試行錯誤した上で、「こうやったらできた」というものであり、スマートな方法ではないかも知れません。内容に誤りや、「もっとこうしたほうがいい」という点がありましたら、コメントにて指摘いただければ幸いです。