############################################################## gmsh のバージョン依存性について (エラー備忘録) ############################################################## ========================================================= gmsh がエラーを吐きまくる. ========================================================= * おそらく、主に、occで複雑な?図形を作りまくった場合. * シンプルに全部 occ で読み込みが安定するのかもしれない ( 2023/2/21時点の所感 ) * 主に電磁石設計ツールについて.(大量の面要素を手動設定する鬼畜ジオメトリのメッシング.) ========================================================= エラーの備忘録 ========================================================= --------------------------------------------------------- gmsh==4.11.1 --------------------------------------------------------- 当初(バグ捕りの発端になった)のエラーについて --------------------------------------------------------- * python pip インストール OpenCascade 7.6.0 (なぜかダウングレード、4.10.5は、7.6.1でコンパイルされてる.) * ジオメトリ設定はうまくいく.( Begin Meshing.... までたどり着く.エンティティもちゃんと生成されてる ) * メッシュ切った際に( 体積エンティティがないといって、エラーがでて終了.あるはずなのに. ).エラーは以下. :: ERROR : Edge 2 - 395 multiple times in surface mesh ERROR : No elements in volume 10 * 正直、対処不能? * ポートの穴をあけるだけで( 単にブーリアン切っただけで)、死ぬ. オプション設定による対処について --------------------------------------------------------- * もしかしたら、Geometry.OCCFixDegenrated とか、オプションででどうにかなったり? + Geometry.OCC 系列のオプションを軒並み追加したら、事態改善したかもしれない... ( gmsh==4.11.1 ) + 何がきいたのか? ( Geometry.OCCSafeUnbinding だった ) Geometry.OCCSafeUnbind とは何か? :: Geometry.OCCSafeUnbind: Revert to safe (i.e. with recursive checks on boundaries) unbinding of entities in boolean operations and geometrical transformations. ( Default value: 0 ) 4.10.2 (May 13, 2022): new Geometry.OCCSafeUnbind option to disable boolean optimization introduced in 4.10.0 (for backward compatibility); つまりは、 :: Geometry.OCCSafeUnbind: ブーリアン演算や幾何学変換において、安全な(つまり、境界の再帰的チェックを伴う)エンティティのバインド解除に戻す。( デフォルト値: 0 ) 4.10.0 で導入されたブーリアン最適化を無効にする新しい Geometry.OCCSafeUnbind オプション(下位互換性のため); 言いたいことは、"Revert to safe unbinding of entities" ということで、安全じゃない、ブーリアン最適化というのを入れているようです.これに2日ぐらい無駄にした.. 上記エラーがあったら、このオプションを疑うべき. --------------------------------------------------------- gmsh==4.10.5 --------------------------------------------------------- * 4.11.1と同様のバグがでる. --------------------------------------------------------- gmsh==4.9.5 --------------------------------------------------------- * 4.11.1 と同様のエラーはでない(メッシュは切れる). * 一方、モデルの複雑度(エンティティ数をあげて?)、複雑なブーリアンをきると、死ぬ. * ERROR : OpenCASCADE exception BRep_Tool:: TopoDS_vertex hasnt gp_Pnt. * 意味的には、TopoDS_vertex という構造体がgp_Pnt(Geometry Point_Pointerを持っていない的なエラーか?) * つまり、gmshはもっていると期待しているが、OpenCascadeは持っていないといわれているということか.( 使うべき、versionがあってないということかもしれない.この場合、どうしようもない.) * 対処できるとしたら、独立にコンパイルか? ( gmsh 4.9.5 で、openCACADE=7.5.0 etc. ) + pipでインストールの場合、pipインストール時にopenCascadeの使用バージョンが規定されているはず. + pipでインスタントに確認するのは、不可能. + コンパイルしかない.