gmsh
GMSHエージェントは、有限要素メッシュの生成と操作に特化したAIモジュールです。自動メッシュ生成、品質評価、最適化機能を提供し、エンジニアリングワークフローとシームレスに統合できます。複雑な幾何学的形状を効率的にメッシュ化し、有限要素法(FEM)解析の精度と計算効率を向上させます。メッシュパラメータの自動調整により、手作業での設定時間を削減でき、解析結果の信頼性も高まります。CADツールやシミュレーションソフトウェアとの連携により、設計から検証までのワークフローを加速できます。
description の原文を見る
The GMSH Agent is a specialized AI module for finite element mesh generation and manipulation. It provides automated mesh generation, quality assessment, optimization, and integration with engineer...
SKILL.md 本文
Gmsh
GMSHエージェント
概要
GMSHエージェントは、有限要素メッシュ生成と操作に特化したAIモジュールです。自動メッシュ生成、品質評価、最適化、および工学解析ツールとの統合を提供します。
機能
コア機能
- 1D/2D/3D メッシュ生成: はり、曲面、ボリュームのメッシュを作成
- ジオメトリ処理: CADジオメトリのインポートと修復(STEP、IGES、STL)
- 品質評価: 業界標準のメトリクスでメッシュ品質を評価
- メッシュ最適化: スムージングと精密化によってメッシュ品質を改善
- バッチ処理: 複数のジオメトリを並列で処理
- ツール統合: OrcaFlex、ANSYS、およびその他の解析ツールへのエクスポート
サポートされるフォーマット
- インポート: STEP、IGES、STL、BREP、GEO
- エクスポート: MSH、VTK、CGNS、MED、INP、CDB、STL
インストール
前提条件
# Python 3.10以上がインストールされていることを確認
python --version
# GMSH Pythonバインディングをインストール
uv pip install gmsh numpy scipy pyvista pyyaml click
セットアップ
# エージェントディレクトリに移動
cd agents/gmsh
# インストールを確認
python run_gmsh_agent.py --version
使用方法
コマンドラインインターフェース
基本的なメッシュ生成
# ジオメトリからメッシュを生成
python run_gmsh_agent.py generate \
--input geometry.step \
--output mesh.msh \
--element-size 0.5
バッチ処理
# 複数のファイルを処理
python run_gmsh_agent.py batch \
--input-directory ./geometries \
--output-directory ./meshes \
--config batch_config.yml \
--parallel 4
品質評価
# メッシュ品質を評価
python run_gmsh_agent.py assess \
--mesh mesh.msh \
--report quality_report.html
メッシュ最適化
# メッシュ品質を最適化
python run_gmsh_agent.py optimize \
--input mesh.msh \
--output optimized.msh \
--method laplacian \
--iterations 10
Python API
from agents.gmsh import GMSHAgent
# エージェントを初期化
agent = GMSHAgent(config="agent_config.json")
# メッシュを生成
mesh = agent.generate_mesh(
geometry="platform.step",
config={
"algorithm": "frontal-delaunay",
"element_size": 0.5,
"element_type": "tetrahedron"
}
)
# 品質を評価
quality = agent.assess_quality(mesh)
print(f"Minimum Jacobian: {quality['min_jacobian']}")
print(f"Average Aspect Ratio: {quality['avg_aspect_ratio']}")
# 必要に応じて最適化
if quality['min_jacobian'] < 0.3:
optimized = agent.optimize_mesh(
mesh,
method="laplacian_smoothing",
iterations=10
)
# ANSYSにエクスポート
agent.export_to_ansys(mesh, "model.cdb")
統合の例
OrcaFlex統合
# 水力学用のパネルメッシュを生成
panel_mesh = agent.generate_panel_mesh(
geometry="hull.step",
panel_size=2.0,
refinement_zones=["waterline", "appendages"]
)
# OrcaFlexにエクスポート
agent.export_to_orcaflex(panel_mesh, "hull_panels.dat")
ANSYS統合
# 構造メッシュを生成
struct_mesh = agent.generate_mesh(
geometry="structure.step",
element_type="hexahedron",
boundary_layers={
"walls": {"layers": 5, "growth_rate": 1.2}
}
)
# 境界条件付きでエクスポート
agent.export_to_ansys(
struct_mesh,
output="model.cdb",
named_selections=["inlet", "outlet", "walls"]
)
設定
エージェント設定 (agent_config.json)
{
"configuration": {
"default_algorithm": "frontal-delaunay",
"default_element_size": 1.0,
"quality_thresholds": {
"min_jacobian": 0.3,
"max_aspect_ratio": 5.0
},
"performance": {
"parallel_workers": 4,
"memory_limit_gb": 4
}
}
}
バッチ設定 (batch_config.yml)
mesh_generation:
algorithm: frontal-delaunay
element_size:
min: 0.1
max: 1.0
quality_targets:
min_jacobian: 0.4
max_aspect_ratio: 4.0
optimization:
enabled: true
method: laplacian_smoothing
iterations: 10
export:
formats: [msh, vtk]
directory: ./output
ワークフロー
標準的なメッシング作業フロー
- ジオメトリをインポート
- ジオメトリの欠陥を修復
- メッシュを生成
- 品質を評価
- 必要に応じて最適化
- 目的のフォーマットにエクスポート
バッチ処理ワークフロー
- バッチ設定を構成
- ファイルを並列処理
- 品質レポートを生成
- 不十分なメッシュを最適化
- すべての結果をエクスポート
品質メトリクス
| メトリクス | 説明 | 良い範囲 | 重大 |
|---|---|---|---|
| Jacobian | 要素の歪み | > 0.3 | < 0.1 |
| Aspect Ratio | 要素の形状 | < 5.0 | > 10.0 |
| Skewness | 要素の歪度 | < 0.7 | > 0.9 |
| Orthogonality | 角度品質 | > 0.3 | < 0.1 |
パフォーマンス
- メッシュ生成: 毎秒100K個以上の要素
- 品質評価: 100万要素で1秒未満
- 最適化: 100K要素あたり約10秒(反復ごと)
- バッチ処理: CPUコア数に応じた線形スケーリング
トラブルシューティング
一般的な問題
GMSHが見つからない
# GMSH Pythonバインディングをインストール
pip install gmsh
# インストールを確認
python -c "import gmsh; print(gmsh.version())"
大規模メッシュによるメモリ問題
# チャンク処理を使用
agent = GMSHAgent(config={
"performance": {
"chunk_size": 10000,
"memory_limit_gb": 2
}
})
メッシュ品質が低い
# 最適化の反復回数を増加
optimized = agent.optimize_mesh(
mesh,
method="remeshing",
iterations=20,
quality_targets={
"min_jacobian": 0.4,
"max_aspect_ratio": 3.0
}
)
開発
テストの実行
# ユニットテストを実行
pytest tests/unit/
# 統合テストを実行
pytest tests/integration/
# カバレッジ付きで実行
pytest --cov=agents.gmsh tests/
貢献
- リポジトリのコーディング基準に従う
- 新機能のテストを追加
- ドキュメントを更新
- 詳細な説明とともにPRを提出
サポート
ドキュメント
お問い合わせ
- GitHub Issues: Create Issue
- Email: support@digitalmodel.com
ライセンス
このエージェントはDigitalModelリポジトリの一部であり、同じライセンス条件に従います。
変更履歴
Version 1.0.0 (2024-12-24)
- 初期リリース
- メッシュ生成コア機能
- 品質評価と最適化
- OrcaFlexおよびANSYS統合
- バッチ処理サポート
GMSHエージェント - 自動有限要素メッシュ生成
ソース: templates/README.md
GMSHエージェント ジオメトリテンプレート
このディレクトリには、一般的なオフショアエンジニアリング構造と機能のためのパラメトリックジオメトリテンプレートが含まれています。
利用可能なテンプレート
1. オフショアプラットフォーム (offshore_platform.geo)
典型的なオフショアプラットフォーム構造のパラメトリックモデルで、以下を含みます:
- デッキサイズと標高の設定可能性
- 可変数のジャケット脚(4、6、8)
- X-ブレーシングを伴う自動ブレーシング生成
- 設定可能な半径のヘリデッキ
- 泥線貫入のある杭基礎
- 構造部材付近での適応的メッシュ精密化
主要パラメータ:
- プラットフォーム寸法(長さ、幅、高さ)
- 水深と泥線貫入
- 脚の数と間隔
- ヘリデッキの設定
- メッシュ密度制御
2. モーリングラインケーブル (mooring_line.geo)
以下の機能を備えたパラメトリックカテナリーモーリングラインモデル:
- チェーン・ワイヤー・チェーン構成
- カテナリー形状計算
- タッチダウンポイントのモデリング
- 海底相互作用ゾーン
- オプショナルな浮力モジュール
- 詳細なチェーンリンク形状(小さいモデル用)
主要パラメータ:
- 総ライン長とセグメント長
- フェアリード位置とアンカー位置
- ライン特性(直径、重量)
- プレテンションとカテナリーパラメータ
- 離散化セグメント数
3. 海底地形 (seabed_terrain.geo)
複数の機能を備えたパラメトリック海底地形:
- 設定可能な勾配を持つ一般的なスロープ
- 寸法調整可能な谷の機能
- マウンドと丘
- 構造物周辺のスコアピット
- 砂のリッジとしわ
- 複数の堆積層
主要パラメータ:
- ドメイン寸法
- 地形機能の切り替え(スロープ、谷、マウンド等)
- 機能の寸法と位置
- グリッド解像度
- 堆積層設定
使用方法
直接GMSH使用
# GMSHの GUI でテンプレートを開く
gmsh offshore_platform.geo
# コマンドラインからメッシュを生成
gmsh offshore_platform.geo -3 -o platform.msh
Python API使用
from agents.gmsh.utilities.template_manager import TemplateManager
# マネージャーを初期化
manager = TemplateManager()
# 利用可能なテンプレートを一覧表示
templates = manager.list_templates()
# カスタムパラメータでジオメトリを生成
params = {
'deck_length': 50.0,
'water_depth': 150.0,
'num_legs': 6
}
geo_file = manager.generate_geometry('offshore_platform', params)
# パラメータスタディを作成
param_ranges = {
'water_depth': [100, 150, 200],
'num_legs': [4, 6, 8]
}
files = manager.create_parameter_study('offshore_platform', param_ranges)
CLI使用
# テンプレートからジオメトリを生成
python -m agents.gmsh generate --template offshore_platform --param water_depth=150
# パラメータスタディを実行
python -m agents.gmsh parameter-study --template mooring_line \
--vary total_length=1000,1500,2000 --vary pretension=300,500,700
パラメータカスタマイズ
すべてのテンプレートはGMSHの DefineNumber 構文を使用し、以下が可能です:
- GMSH GUIでの対話的な変更
- コマンドラインパラメータのオーバーライド
- API経由のプログラマティック制御
- パラメータの制約(最小値/最大値)
パラメータ定義の例
water_depth = DefineNumber[100.0, Name "Environment/Water Depth (m)"];
これにより、以下を含むパラメータが作成されます:
- 100.0のデフォルト値
- GUI内の「Environment」カテゴリに表示
- メートル単位を表示
- 実行時に変更可能
テンプレート開発
新しいテンプレートの作成
- このディレクトリに .geo ファイルを開始
- すべての設定可能なパラメータに DefineNumber を使用
- ファイルの先頭に説明的なコメントを追加
- パラメータをカテゴリごとにグループ化(例: Platform/、Environment/)
- 物理グループを定義 境界条件用
- メッシュ精密化フィールドを含める 適切な場所に
テンプレート構造
// テンプレート名と説明
// 著者: Your Name
// バージョン: 1.0
// ============================================================================
// パラメータ
// ============================================================================
param1 = DefineNumber[default, Name "Category/Parameter Name (unit)"];
// ============================================================================
// ジオメトリ作成
// ============================================================================
// ジオメトリ構築コード
// ============================================================================
// 物理グループ
// ============================================================================
Physical Surface("Surface_Name") = {surface_ids[]};
// ============================================================================
// メッシュフィールド
// ============================================================================
// メッシュ精密化設定
ベストプラクティス
- パラメータ命名: 単位付きの説明的な名前を使用
- デフォルト値: 一般的なユースケースに対して合理的なデフォルトを選択
- 検証: 該当する場合はパラメータ制約を含める
- ドキュメント: 複雑なジオメトリ操作にコメントを追加
- モジュール性: 複雑なジオメトリを論理的なセクションに分割
- 物理グループ: すべての重要な機能のグループを定義
- メッシュ制御: 適切なメッシュ精密化制御を提供
ワークフローとの統合
テンプレートはバッチ処理ワークフローで使用できます:
# workflow.yml
input:
template: offshore_platform
parameter_file: platform_params.json
stages:
- name: geometry_generation
template_params:
water_depth: 150
num_legs: 6
- name: mesh_generation
mesh_size: adaptive
- name: quality_check
min_quality: 0.7
テンプレート検証
使用前にテンプレートを検証します:
# テンプレート構文とパラメータを検証
results = manager.validate_template('offshore_platform')
print(f"Valid: {results['valid']}")
print(f"Warnings: {results['warnings']}")
エクスポートとドキュメント
すべてのテンプレートのドキュメントを生成します:
# Markdownとしてエクスポート
manager.export_template_docs('templates.md', format='markdown')
# HTMLとしてエクスポート
manager.export_template_docs('templates.html', format='html')
# JSONとしてエクスポート
manager.export_template_docs('templates.json', format='json')
貢献
新しいテンプレートを貢献するには:
- 上記の構造に従って .geo ファイルを作成
- 様々なパラメータの組み合わせでテストします
- このREADMEにドキュメントを追加
- 使用例とともに提出
ライセンス
これらのテンプレートはGMSHエージェントモジュールの一部であり、リポジトリのライセンス条件に従います。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- vamseeachanta
- ライセンス
- MIT
- 最終更新
- 2026/5/12
Source: https://github.com/vamseeachanta/digitalmodel / ライセンス: MIT