NURBS — CAE用語解説
NURBS
CADソフトで曲面を作るとき「NURBS」って表示されるんですけど、これって何ですか? ただの曲線とは違うんですか?
理論と物理
NURBSの定義と基本概念
NURBSって、教科書では「Non-Uniform Rational B-Spline」と書いてありますが、これが普通のB-Splineと具体的にどう違うんですか?「Rational」がつくことで何が変わるんでしょうか。
良い質問だ。決定的な違いは「重み」の存在だ。通常のB-Splineは、制御点の座標をそのままブレンドする。一方、NURBSでは各制御点に重み
「Non-Uniform」の部分は何を意味しているんですか?ノットベクトルが均等でないということですか?
その通り。ノットベクトル内のノット間隔が均一でないことを指す。例えば、ノットベクトルが [0, 0, 0, 1, 2, 2, 2] の場合、0から1、1から2の間隔が異なるのでNon-Uniformだ。これにより、曲面上の特定の領域(エッジ付近や曲率が急変する部分)に制御点を集中させ、モデリングの自由度を大幅に向上させることができる。逆にUniformなB-Splineは、均一な間隔で制御されるため、柔軟性に欠ける。
NURBS曲面の式を見ると複雑です。実際のCAEソフトでは、この数式をそのまま解いているわけではないですよね?
そうだ。CAEプリプロセッサは、NURBS曲面を有限要素メッシュに離散化する。その際、基底関数の評価はde Boorアルゴリズムなどの再帰的アルゴリズムで効率的に行われる。NURBS曲面
数値解法と実装
CADからCAEへの変換とメッシュ生成
CADで作ったNURBSモデルをCAEで解析する時、なぜ「ジオメトリの修復」が必要になることが多いんですか?
主な原因は「トポロジー的な不完全さ」と「数値的ギャップ」だ。例えば、2枚のNURBS曲面が理論的には接しているはずが、それぞれの曲面方程式から計算されるエッジの位置が10^-5 mm程度ずれていることがある。これはCADソフト(CATIA, NX, Creo)の内部計算精度や、データ変換(STEP, IGES)時の丸め誤差による。CAEプリプロセッサ(Ansys SpaceClaim, Altair HyperMesh)は、このような微小ギャップを「縫い合わせ」、水密なソリッドモデルを再構築する必要がある。
メッシュを切る時、NURBS曲面の「パラメータ空間」と「物理空間」の違いがメッシュ品質に影響しますか?
大きく影響する。パラメータ空間 (u,v空間) では均一な正方形メッシュでも、物理空間では極端に歪んだ要素が生成されることがある。例えば、自動車のボディパネルのように、パラメータ空間で細長い領域が物理空間では大きな曲面に対応する場合だ。高品質なメッシュを生成するには、Jacobian(ヤコビアン)マトリックス
「曲率に応じたメッシュサイズ制御」という機能がありますが、これはNURBSのどの情報を使っているんですか?
NURBS曲面の第一基本形式と第二基本形式から計算される「平均曲率」や「ガウス曲率」を使う。具体的には、曲率半径
実践ガイド
解析精度を上げるためのNURBSモデル取扱い
サプライヤーから受け取ったSTEPファイルのモデルが非常に複雑なNURBSで、メッシュが切れないことがあります。最初にすべきことは何ですか?
まず「ジオメトリの単純化」だ。具体的には、1)解析に不要な微小フィーチャー(0.5mm未満のフィレット、小さな穴)を削除する。2)連続した複数のNURBS面を、可能な限り1つの面に統合(フェース統合)する。Ansys SpaceClaimの「Pull」ツールや、Altair HyperMeshの「geometry cleanup」機能を使う。面の数が1000個から100個に減るだけで、メッシュ生成の成功率と速度が劇的に向上する。これは「 defeaturing 」と呼ばれる重要な前処理工程だ。
単純化の際、どの程度まで細かい形状を削除して良いのか判断に困ります。基準はありますか?
経験則だが、以下の2点を基準にすると良い。第一に、対象とする最大応力の影響範囲と比較する。例えば、板厚10mmのブラケットで最大主応力が発生する領域から遠く離れた位置にある半径1mmのフィレットは無視できる。第二に、使用する要素サイズに対する比率だ。要素サイズを2mmと設定するなら、それより小さい1mmの突起はメッシュで表現できないため、削除または形状修正の対象となる。常に「この形状が結果に与える影響は許容誤差(例えば応力で5%)以内か?」と自問することだ。
メッシュを切った後、NURBSの元の形状とメッシュの形状の誤差を確認する方法はありますか?
ほとんどのCAEプリプロセッサに「ジオメトリ偏差チェック」機能がある。例えば、Abaqus/CAEでは「Verify Mesh」オプションで、各ノードが元のNURBS曲面からどれだけ離れているか(偏差)を色分け表示できる。許容偏差は部品サイズや要求精度によるが、一般的な機械部品の構造解析では、最大偏差を要素サイズの10%以下(例:要素サイズ2mmなら0.2mm以下)に抑えることを目標とする。このチェックをパスしないと、特に接触解析で重大な誤差を生む可能性がある。
ソフトウェア比較
各CAEソフトにおけるNURBSの扱い
Ansys、Abaqus、COMSOLでは、NURBSのインポートや扱いに違いはありますか?
アプローチが大きく異なる。Ansys Workbenchは、SCDM(SpaceClaim Direct Modeler)を統合しており、NURBSモデルの修復と編集に強い。Parasolidカーネルを基盤にしている。一方、Abaqus/CAEは独自のカーネルを持ち、NURBSのインポートはできるが、高度な編集には「Abaqus/CAE」よりも「CATIA」や「NX」との連携を推奨している。COMSOL Multiphysicsは最も柔軟で、CADインポートモジュールでNURBSを直接「ライブ」リンクさせ、パラメータ変更をCAD側に反映させることも可能だ。ただし、非常に複雑なモデルではAnsys SCDMLの操作性が優れている印象だ。
「Isogeometric Analysis (IGA)」を実装しているソフトはありますか?NURBSをそのまま解析に使うという話を聞きました。
商用コードでは、まだ限定的だが確実に広がっている。Siemensの「Simcenter 3D」にはIGA for shells(板殻解析)の機能が組み込まれており、自動車のボディシェル解析などでメッシュ生成を省略できる。また、Altairは「RADIOSS」ソルバーと連携するIGA機能を開発中だ。完全な汎用IGAソルバーとしては、大学発の「GeoPDEs」や「IGA++」が研究で使われている。商用ソフトでは、COMSOLが「CAD Import Module」と「Shell」インターフェースを組み合わせることで、NURBS面を直接シェル要素として扱うことに近いことが可能だ。
無料・オープンソースのCAEソフト(CalculiX, Code_Aster)はNURBSをどう扱っていますか?
それらのソルバー自体はメッシュデータを処理するので、NURBSの処理は前処理ソフトに依存する。CalculiXのフロントエンドとしてよく使われる「PrePoMax」は、Open CASCADE幾何学カーネルを搭載しており、STEPファイルのNURBSを読み込んでメッシュを生成できる。Code_Asterの公式前処理「Salome-Meca」も同様にOpen CASCADEを採用している。ただし、有償ソフトのような高度なジオメトリ修復・編集機能は乏しく、複雑なモデルでは商用ソフトで前処理を行い、メッシュのみをエクスポートして使うことが現実的だ。
トラブルシューティング
NURBS関連のよくあるエラーと対策
メッシュ生成時に「ジオメトリに微小なエッジ/面が存在します」というエラーが出ます。具体的な探し方と修正方法は?
まず、プリプロセッサの「統計情報」機能で、面積やエッジ長さの最小値を確認する。Ansys SCDMLなら「Prepare」タブの「Measure」で最小面積を計測できる。面積が10^-4 mm^2以下の面や、長さが0.01mm以下のエッジが対象だ。修正方法は2つ。1) 「Merge」機能で隣接する大きな面に統合する。2) どうしても必要な形状なら、NURBSの「制御点」を直接編集して形状を単純化する(上級者向け)。多くの場合、これらの微小要素はCAD操作時の履歴の残骸なので、安全に削除できる。
インポートしたNURBSモデルが「ねじれた面」や「自己交差」と表示されます。これは何が原因で、どう直すんですか?
NURBSの制御点配列が不適切なために、曲面が自分自身と交差している状態だ。原因は、CAD操作での極端な形状変形や、データ変換時の制御点座標の破損にある。対策は根本的で、1) サプライヤーに正常なモデルを再送依頼する。2) 自分で修正する場合は、問題の面を削除し、周囲のエッジから新しい面を「パッチ」として作成し直す。Altair HyperMeshの「surface edit」や、Ansys SCDMLの「Fill」ツールが使える。このエラーはメッシュ生成を完全に阻害するので、必ず修正が必要だ。
曲率の大きいフィレット部分で、どうしてもメッシュが粗くなってしまいます。要素サイズを全体で極端に小さくする以外の方法は?
「ローカルメッシュ制御」を使う。具体的には、1) 「面サイズ制御」で、該当するフィレット面だけに細かいメッシュサイズ(例:0.3mm)を指定する。2) 「エッジサイズ制御」で、フィレットの両端のエッジに沿ってメッシュを細かくする。3) 「曲率適応メッシュ」の感度を高く設定する(多くのソフトで「高」「最大」などのオプションがある)。Ansys Meshingでは「Face Meshing」を適用して、フィレット面に規則的な四角形メッシュを貼るのも有効だ。これらを組み合わせれば、全体の要素数を10倍にすることなく、局部の解像度を上げられる。
STEPファイルを異なるソフト間でやり取りすると、なぜか形状が変わって見えることがあります。これはNURBSの精度の問題ですか?
その通りだ。STEP (AP203, AP214) ファイルはNURBSデータを「完全に」転送する規格だが、受け側のCAD/CAEカーネル(Parasolid, ACIS, CASCADE)が内部で使う数値精度(通常は倍精度)と、形状を表示するための「テッセレーション」の設定が異なる。表示ポリゴンの分解能が低いと、曲線が角ばって見える。実形状はNURBSデータとして正しく保持されていることが多いので、CAE作業上は問題ない。ただし、表示設定(表示精度)を最高(例えば、偏差0.01mm)に上げれば、ほぼ同じ形状に見えるはずだ。データ互換性を最大限にするには、中間フォーマットとして「Parasolid (.x_t)」を使う方法もある。
関連トピック
なった
詳しく
報告