さつまろぐ

CAEとかプログラムとか、出来たことの記録など、誰かのお役に立てれば幸い。

Gmshの使い方 Circle, Circle arc

何となく使える気になっているGmsh。細かい機能を確認する自分用メモ。

Circle, Circle arc

円や円弧を描く命令。使い方を見てみる。

f:id:satsuma4801:20201026015740p:plain
Circle, Circle arc

Circle

[Modules]-[Geometry]-[Elementary entities]-[Add]-[Circle]を選択する。下記の画面が出てくるので、数値を入力し円を描く。

f:id:satsuma4801:20201026015806p:plain
Circle 入力画面

  1. 円の中心座標
  2. 円の半径
  3. 円の始点
  4. 円の終点
  5. 「Add」ボタンで円の追加。キャンパス上でキーボード「e」でも追加できる。

snapとfreezeは別記事で書いているのでそちらを参照。

satsumalog.com

数値を入力後、⑤の「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平面上側) 。

円の場合はそれ自体でループとなり、表面を作ることができる。

f:id:satsuma4801:20201101030808p:plain
[Circle]で円を作る。Angle1とAngle2の値で、点ができる場所を調整できる。

円弧の場合

③と④で異なる位置を指定した場合、③を始点、④を終点とする円弧が作られる。2周以上する角度も指定できるが、作成される円弧は 0~ 2*Pi 間なのであまり意味はない。ただしプレビュー(赤線)が乱れる。

始点と終点に新しく点が追加される。円弧ではループとならないので、表面を作る際は[Line]などで別途ループを作る必要がある。

f:id:satsuma4801:20201105041222p:plain
Angle1とAngel2の位置が異なると円弧になり、Angle1が始点、Angle2が終点となる。

f:id:satsuma4801:20201104021113p:plain
Angleに極端な値を入れると、プレビュー(赤線)が乱れる。作成される円弧は正常。

Circle arc

[Modules]-[Geometry]-[Elementary entities]-[Add]-[Circle arc]を選択する。3つの点から円弧を作成する。オプション画面は無い。

下記の順番で点を選択する。

  1. 円弧の端点1
  2. 円弧の中心点
  3. 円弧の端点2

3点を選択すると、①と③を結ぶ短いほうの円弧が作成される。点の選択を逆にしても同じ円弧となる。

f:id:satsuma4801:20201104024308p:plain
3点を選択し円弧を作成する。①③の順番を変えても、短いほうの円弧が作成される。

ただし、①②③が直線上にある場合は、選択した順により半円弧の方向が異なる。

f:id:satsuma4801:20201104024556p:plain
①②③が直線上にある場合、①③の順番を入れ替えると、円弧の方向が逆になる。

次の場合はエラーとなる。

  • ①~②間の距離と、③~②間の距離が異なる。
  • ①と③の点が同一。

また、[Circle]と異なり、X-Y平面に平行でない円弧も描くことができる。

.geoファイル

[Circle], [Circle arc]を使って円弧を作成し、.geoファイルを覗いてみる。

f:id:satsuma4801:20201105042539p:plain
左:[Circle]で作成。 右:[Circle arc]で作成。

.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]の機能しか使えなかった。

以上


上記は、私がネットの情報やマニュアルを調べたり試行錯誤した上で、「こうやったらできた」というものであり、スマートな方法ではないかも知れません。内容に誤りや、「もっとこうしたほうがいい」という点がありましたら、コメントにて指摘いただければ幸いです。

広告