(57)【特許請求の範囲】
【請求項１】
コンピュータに、
解析対象物内に配置された複数の節点間を結ぶ線分によるメッシュを示すメッシュデータが記憶された記憶手段を参照し、該解析対象物を該メッシュによって分割して得られる複数の要素それぞれの品質を判断し、品質が所定値以下の要素を検出し、
検出された要素の形状を表す節点の位置に基づいて、該要素内の特定の一点の位置を計算し、
前記記憶手段の前記メッシュデータにおける、検出された要素の形状を表す節点のうちの複数の節点の位置を、前記特定の一点の位置に変更する、
処理を実行させることを特徴とするプログラム。
【請求項２】
前記複数の要素それぞれの品質の判断では、前記複数の要素それぞれの面の品質を判断し、品質が所定値以下の面を有する要素を検出し、
前記特定の一点の位置の計算では、検出された要素の品質が所定値以下の面の形状を表す節点の位置に基づいて、該面内の特定の一点の位置を計算し、
節点の位置の変更では、前記記憶手段の前記メッシュデータにおける、検出された要素の品質が所定値以下の面の形状を表す複数の節点の位置を、前記特定の一点の位置に変更する、
ことを特徴とする請求項１記載のプログラム。
【請求項３】
前記特定の一点は、検出された要素の品質が所定値以下の面の重心であることを特徴とする請求項２記載のプログラム。
【請求項４】
前記コンピュータに、さらに、
前記解析対象物の形状と、該解析対象物を該メッシュによって分割して得られる複数の要素で表される形状との誤差が、予め指定された許容誤差以下となるメッシュサイズを計算し、
生成される要素の辺の長さが前記メッシュサイズ以下となるメッシュデータを生成し、前記記憶手段に格納する、
処理を実行させることを特徴とする請求項１乃至３のいずれかに記載のプログラム。
【請求項５】
前記コンピュータに、
扇形の面積と、該扇形の２本の半径と該扇形の弦とで囲まれた３角形の面積との誤差が、前記許容誤差となる該扇形の中心角を求め、該中心角を有し、かつ前記解析対象物の最も曲率が大きい面と同じ曲率の弧を有する扇形の該弧の長さをメッシュサイズとする、
処理を実行させることを特徴とする請求項４記載のプログラム。
【請求項６】
前記コンピュータに、さらに、
前記解析対象物が穴のあいた面を有する場合、該穴の形状を示す頂点から該面の外周の辺へ垂線を下ろし、該垂線を境界として前記解析対象物を複数の領域に分割し、分割された領域ごとにメッシュデータを生成し、前記記憶手段に格納する、
処理を実行させることを特徴とする請求項１乃至５のいずれかに記載のプログラム。
【請求項７】
前記コンピュータに、さらに、
前記解析対象物が５角形以上の面を有する場合、該面の内角が最大の頂点から、該面を複数の４角形に分割する線を生成し、該線を境界として前記解析対象物を複数の領域に分割し、分割された領域ごとにメッシュデータを生成し、前記記憶手段に格納する、
処理を実行させることを特徴とする請求項１乃至６のいずれかに記載のプログラム。
【請求項８】
前記コンピュータに、
５角形以上の面の内角が最大の頂点から該面の辺に沿って所定方向に頂点を辿り、３つめの頂点を検出し、該頂点からさらに該所定方向に頂点を辿ったとき、該頂点と該内角が最大の頂点との間に挟まれる頂点が１つだけの場合、検出された３つめの頂点と、該頂点から該所定方向と逆方向に頂点を辿ったときの隣の頂点との間の辺上に新たな頂点を生成し、生成された該頂点と内角が最大の頂点とを結ぶ線分により、該面を複数の４角形に分割する、
処理を実行させることを特徴とする請求項７記載のプログラム。
【請求項９】
解析対象物内に配置された複数の節点間を結ぶ線分によるメッシュを示すメッシュデータが記憶された記憶手段を参照し、該解析対象物を該メッシュによって分割して得られる複数の要素それぞれの品質を判断し、品質が所定値以下の要素を検出する検出手段と、
検出された要素の形状を表す節点の位置に基づいて、該要素内の特定の一点の位置を計算する計算手段と、
前記記憶手段の前記メッシュデータにおける、検出された要素の形状を表す節点のうちの複数の節点の位置を、前記特定の一点の位置に変更する変更手段と、
を有する情報処理装置。
【請求項１０】
コンピュータが、
解析対象物内に配置された複数の節点間を結ぶ線分によるメッシュを示すメッシュデータが記憶された記憶手段を参照し、該解析対象物を該メッシュによって分割して得られる複数の要素それぞれの品質を判断し、品質が所定値以下の要素を検出し、
検出された要素の形状を表す節点の位置に基づいて、該要素内の特定の一点の位置を計算し、
前記記憶手段の前記メッシュデータにおける、検出された要素の形状を表す節点のうちの複数の節点の位置を、前記特定の一点の位置に変更する、
ことを特徴とするメッシュ修正方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メッシュを修正するプログラム、情報処理装置、およびメッシュ修正方法に関する。
【背景技術】
【０００２】
コンピュータシミュレーションにより、様々な物の構造解析を行うことができる。例えば、コンピュータを用いた構造解析によって、物体に外力が加えられたときのその物体の応力分布などの解析が可能である。
【０００３】
構造解析を行う場合、例えば解析対象物をメッシュによって複数の要素に離散化する。生成される要素の形状は、例えば４面体（テトラ）や６面体（ヘキサ）などである。
解析空間のメッシュは、例えば、ユーザによる手動操作による指示に応じて、コンピュータによって生成される。ユーザからはメッシュサイズなどの条件が与えられ、コンピュータが条件に従ってメッシュを自動生成する。自動生成されたままのメッシュでメッシュ分割を行うと、品質の悪い要素が生成されることが多い。品質の悪い要素があると、構造解析の精度が低下したり、計算時間が増大したりする。そこで、例えば、生成された要素の品質が悪い場合、メッシュの節点の位置の手動による修正が行われていた。
【０００４】
ところが、このような手動でのメッシュ修正作業には時間がかかる。しかも手動でメッシュ修正を行う場合、ユーザにメッシュ生成経験が十分にないと、解析対象物を品質の良い要素に適切に修正できない。近年、構造解析技術の適用分野は広がりつつあり、今後、要素数が１億を超えるような大規模な計算も想定される。現状の手法のままだと、大規模な計算を行う際のメッシュ作成の時間の増大と、要素の品質が悪いことによる解析時間の増大とが大きな問題となる。
【０００５】
そこで、メッシュを自動で修正する技術が考えられている。例えば、要素を繋げることで、内角が大きい歪んだ要素を修正する技術がある。この技術では、歪んだ要素と隣接する要素を参照して、共有する面、線を削除することで修正される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−１１０３９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、従来のメッシュの修正技術では、品質の悪い要素に隣接して、その要素と結合することで品質を十分に向上させることが可能な他の要素がある場合にしか適用できない。すなわち、結合によって品質を改善可能な隣接要素を見つけ出せない場合、品質の悪い要素を消去することができない。
【０００８】
本発明はこのような点に鑑みてなされたものであり、品質の悪い要素を確実に削除できるプログラム、情報処理装置、およびメッシュ修正方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの案では、コンピュータに、解析対象物内に配置された複数の節点間を結ぶ線分によるメッシュを示すメッシュデータが記憶された記憶手段を参照し、該解析対象物を該メッシュによって分割して得られる複数の要素それぞれの品質を判断し、品質が所定値以下の要素を検出し、検出された要素の形状を表す節点の位置に基づいて、該要素内の特定の一点の位置を計算し、記憶手段のメッシュデータにおける、検出された要素の形状を表す節点のうちの複数の節点の位置を、特定の一点の位置に変更する、処理を実行させることを特徴とするプログラムが提供される。
【００１０】
他の１つの案では、上記プログラムを実行するコンピュータと同様の機能を有する情報処理装置が提供される。
さらに他の１つの案では、上記プログラムに基づいてコンピュータが実行する処理と同様の処理を行うメッシュ修正方法が提供される。
【発明の効果】
【００１１】
品質の悪い要素を確実に削除できる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態に係る情報処理装置の機能構成例を示す図である。
【図２】第１の実施の形態に係る処理手順の一例を示す図である。
【図３】第１の実施の形態に係る処理例を示す図である。
【図４】第２の実施の形態のシステム構成例を示す図である。
【図５】第２の実施の形態に用いるサーバのハードウェアの一構成例を示す図である。
【図６】サーバの機能の一例を示すブロック図である。
【図７】解析対象物データ記憶部内の記憶領域の一例を示す図である。
【図８】頂点データ格納領域のデータ構造の一例を示す図である。
【図９】エッジデータ格納領域のデータ構造の一例を示す図である。
【図１０】サーフェースデータ格納領域のデータ構造の一例を示す図である。
【図１１】メッシュデータ記憶部内の記憶領域の一例を示す図である。
【図１２】節点データ格納領域のデータ構造の一例を示す図である。
【図１３】要素データ格納領域のデータ構造の一例を示す図である。
【図１４】メッシュ生成手順の一例を示すフローチャートである。
【図１５】第２の実施の形態で用いる誤差を示す図である。
【図１６】アスペクト比の計算例を示す図である。
【図１７】ヤコビアンの計算例を示す図である。
【図１８】内部メッシュのスムージングの一例を示す図である。
【図１９】領域分割処理の手順を示すフローチャートである。
【図２０】穴を有するサーフェースの領域分割の一例を示す図である。
【図２１】５角形以上のサーフェースの領域分割の一例を示す図である。
【図２２】内部領域分割処理の一例を示す第１の図である。
【図２３】内部領域分割処理の一例を示す第２の図である。
【図２４】品質が悪い要素の削除処理の手順の一例を示すフローチャートである。
【図２５】品質が悪い要素の削除処理の一例を示す図である。
【図２６】歪みの大きい面の結合処理の一例を示すフローチャートである。
【図２７】歪みの大きい面の第１の結合例を示す図である。
【図２８】歪みの大きい面の第２の結合例を示す図である。
【発明を実施するための形態】
【００１３】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施できる。
〔第１の実施の形態〕
図１は、第１の実施の形態に係る情報処理装置の機能構成例を示す図である。情報処理装置Ｍは、記憶手段１、検出手段２、計算手段３、および変更手段４を有する。
【００１４】
記憶手段１は、解析対象物内に配置された複数の節点間を結ぶ線分によるメッシュを示すメッシュデータ１ａを記憶する。
検出手段２は、記憶手段１を参照し、解析対象物をメッシュによって分割して得られる複数の要素それぞれの品質を判断し、品質が所定値以下の要素を検出する。例えば検出手段２は、複数の要素それぞれの面の品質を判断し、品質が所定値以下の面を有する要素を検出する。
【００１５】
計算手段３は、検出された要素の形状を表す節点の位置に基づいて、該要素内の特定の一点の位置を計算する。例えば計算手段３は、検出された要素の品質が所定値以下の面６ａの形状を表す節点５ａ，５ｂ，５ｃの位置に基づいて、該面内の特定の一点の位置を計算する。例えば特定の一点として、検出された要素の品質が所定値以下の面の重心が計算される。
【００１６】
変更手段４は、記憶手段１のメッシュデータ１ａにおける、検出された要素の形状を表す節点のうちの複数の節点の位置を、特定の一点の位置に変更する。例えば変更手段４は、検出された要素の品質が所定値以下の面６ａの形状を表す複数の節点５ａ，５ｂ，５ｃの位置を、特定の一点の位置に変更する。
【００１７】
なお、検出手段２、計算手段３、および変更手段４は、情報処理装置Ｍが有するＣＰＵ（Central Processing Unit）により実現する。また、記憶手段１は、情報処理装置が有するＲＡＭ（Random Access Memory）やハードディスクドライブ（ＨＤＤ:Hard Disk Drive）などにより実現する。
【００１８】
また、図１に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
このような機能を有する情報処理装置Ｍにより、以下のような処理が行われる。
【００１９】
図２は、第１の実施の形態に係る処理手順の一例を示す図である。以下、図２に示す処理をステップ番号に沿って説明する。
［ステップＳ１］検出手段２は、要素の面の品質を判断する。要素の面は、要素を構成する節点を結ぶ線分で表され、例えば要素の面の歪みを計算する。例えば、検出手段２は、多角形の面のアスペクト比やヤコビアンなどを計算する。
【００２０】
［ステップＳ２］検出手段２は、品質が所定値以下の要素があるか否かを判断する。品質が所定値以下の要素があれば、検出手段２は処理をステップＳ３に進める。また検出手段２は、品質が所定値以下の要素がなければ処理を終了する。
【００２１】
［ステップＳ３］計算手段３は、品質が所定値以下の要素の形状を表す節点の位置に基づいて、その要素内の特定の一点の位置を計算する。例えば計算手段３は、品質が所定値以下の面の重心を計算する。
【００２２】
［ステップＳ４］変更手段４は、品質が所定値以下の要素の形状を表す複数の節点の位置を、ステップＳ３で計算した特定の一点の位置に変更する。
図３は、第１の実施の形態に係る処理例を示す図である。図３の例では、節点５ａ，５ｂ，５ｃ，５ｄ，５ｅ，５ｆ，５ｇ，５ｈ，５ｉ間を線分で接続し、複数の面６ａ，６ｂ，６ｃ，６ｄ，６ｅ，６ｆ，６ｇ，６ｈ，６ｉ，６ｊが形成されている。各面６ａ，６ｂ，６ｃ，６ｄ，６ｅ，６ｆ，６ｇ，６ｈ，６ｉ，６ｊは、それぞれが、解析対象物をメッシュで分割して生成される要素の１つの面である。
【００２３】
図３の例では、面６ａについては、横に長すぎて品質が悪い。そこで面６ａの形状を示す節点５ａ，５ｂ，５ｃの位置に基づいて、面６ａ内の特定の一点７の位置が計算される。例えば面６ａの重心が計算される。そして、面６ａの形状を示す節点５ａ，５ｂ，５ｃが、面６ａ内の特定の一点７に移動される。
【００２４】
図３の例では、移動された３つの節点５ａ，５ｂ，５ｃが、１つの節点５ｊに置き換えられている。移動前の３つの節点５ａ，５ｂ，５ｃそれぞれに線分で接続されていた節点５ｄ，５ｅ，５ｆ，５ｇ，５ｈ，５ｉは、節点５ａ，５ｂ，５ｃの移動後には、節点５ｊに対して線分で接続される。これにより、面６ａと、その面６ａとの間で線分を共有して隣接していた面６ｂ，６ｃ，６ｄとが削除される。
【００２５】
例えば面６ａ，６ｂ，６ｃ，６ｄが４面体要素の１つの面の場合、面６ａ，６ｂ，６ｃ，６ｄが削除されることで、その面を有する４面体要素も縮退し、消滅する。
このようにして品質の悪い面を有する要素を確実に削除する。しかも、面６ａを削除した影響は、周囲の他の複数の面の形状を変更することで修正される。その結果、例えば品質が悪い面を、隣接する１つの面と結合しても品質が十分に向上しない場合であっても、品質の悪い面の削除が可能となる。すなわち、品質の悪い面の節点を、例えばその面の重心に移動させることで、その面を削除したことによる影響は、節点を共有する多数の面で吸収される。従って、隣接する１つの面と結合させる場合に比べ、品質を改善できる可能性が高くなる。
【００２６】
さらに、品質の悪い面の削除処理を自動で実行するため、ユーザによるメッシュの修正作業の手間が大幅に削減される。しかも、メッシュが自動で修正されるため、メッシュ生成の経験がないユーザであっても品質の良いメッシュを生成することができる。さらに、メッシュの修正がメッシュの再作成をせずに行われることで、条件を変えてメッシュを繰り返し生成する場合に比べて大幅に時間が短縮される。
【００２７】
〔第２の実施の形態〕
第２の実施の形態は、構造解析を行うサーバに対して、メッシュの自動生成機能を組み込んだものである。
【００２８】
図４は、第２の実施の形態のシステム構成例を示す図である。第２の実施の形態では、構造解析を行うサーバ１００にネットワーク１０を介して端末装置２１が接続されている。ユーザ２２は、端末装置２１を用いてサーバ１００に構造解析の条件入力や、構造解析の指示を行う。例えばユーザ２２は、端末装置２１を用い、構造解析の際のメッシュ生成の条件をサーバ１００に指示する。
【００２９】
図５は、第２の実施の形態に用いるサーバのハードウェアの一構成例を示す図である。サーバ１００は、ＣＰＵ１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０８を介してＲＡＭ１０２と複数の周辺機器が接続されている。
【００３０】
ＲＡＭ１０２は、サーバ１００の主記憶装置として使用される。ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。
【００３１】
バス１０８に接続されている周辺機器としては、ＨＤＤ１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、および通信インタフェース１０７がある。
【００３２】
ＨＤＤ１０３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、サーバ１００の二次記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用する場合もある。
【００３３】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。モニタ１１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００３４】
入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号をＣＰＵ１０１に送信する。なお、マウス１３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用する場合もある。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００３５】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク１４に記録されたデータの読み取りを行う。光ディスク１４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク１４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００３６】
通信インタフェース１０７は、ネットワーク１０に接続されている。通信インタフェース１０７は、ネットワーク１０を介して、端末装置２１などの他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００３７】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現する。なお、図１に示した第１の実施の形態の情報処理装置Ｍも、図５に示したサーバ１００と同様のハードウェアにより実現する。
【００３８】
図６は、サーバの機能の一例を示すブロック図である。サーバ１００は、解析対象物データ記憶部１１０、メッシュデータ記憶部１２０、メッシュサイズ決定部１３０、領域分割部１４０、メッシュ生成部１５０、メッシュ修正部１６０、および構造解析部１７０を有する。
【００３９】
解析対象物データ記憶部１１０は、構造解析対象となる物品の３次元ＣＡＤ（Computer Aided Design）データを記憶する。例えばＲＡＭ１０２またはＨＤＤ１０３の記憶領域の一部が、解析対象物データ記憶部１１０として使用される。
【００４０】
メッシュデータ記憶部１２０は、構造解析を行うときに解析対象物を離散化させるメッシュを示すメッシュデータを記憶する。例えばＲＡＭ１０２またはＨＤＤ１０３の記憶領域の一部が、メッシュデータ記憶部１２０として使用される。
【００４１】
メッシュサイズ決定部１３０は、メッシュを生成する際のメッシュサイズを決定する。メッシュサイズとは、メッシュの節点間を接続する線分の長さである。
領域分割部１４０は、メッシュ生成に先立ち、解析対象物の領域分割(Domain Decomposition)を行う。領域分割によって生成された複数の領域は、並列に解析処理を行うことができる。領域分割を行った場合、例えば分割によって生成された複数の領域それぞれに関して、異なる条件でメッシュを生成する。例えば、分割された領域ごとに、異なるメッシュサイズでメッシュを生成することである。
【００４２】
メッシュ生成部１５０は、解析対象物の分割された領域ごとにメッシュを生成する。メッシュ生成部１５０は、生成したメッシュを示すメッシュデータを、メッシュデータ記憶部１２０に格納する。
【００４３】
メッシュ修正部１６０は、メッシュ生成部１５０で生成されたメッシュを修正する。そしてメッシュ修正部１６０は、修正後のメッシュを示すメッシュデータにより、メッシュデータ記憶部１２０内のメッシュデータを更新する。
【００４４】
構造解析部１７０は、解析対象物が存在する空間をメッシュデータに基づいて複数のメッシュに分割し、解析対象物の応力分布などの構造解析を行う。構造解析部１７０は、解析結果を、例えば端末装置２１に送信する。
【００４５】
なお、図６に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また図６に示したメッシュデータ記憶部１２０は、図１に示した記憶手段１の一例である。また図６に示したメッシュ修正部１６０は、図１に示した検出手段２、計算手段３、および変更手段４の機能を含んでいる。
【００４６】
次に、解析対象物データ記憶部１１０のデータ構造について詳細に説明する。
図７は、解析対象物データ記憶部内の記憶領域の一例を示す図である。解析対象物データ記憶部１１０には、頂点データ格納領域１１１、エッジデータ格納領域１１２、およびサーフェースデータ格納領域１１３が設けられている。頂点データ格納領域１１１は、解析対象物の頂点の位置を示すデータ（頂点データ）を格納する記憶領域である。エッジデータ格納領域１１２は、解析対象物の稜線（エッジ）の形状を示すデータ（エッジデータ）を格納する記憶領域である。サーフェースデータ格納領域１１３は、解析対象物の面（サーフェース）の形状を示すデータ（サーフェースデータ）を格納する記憶領域である。
【００４７】
図８は、頂点データ格納領域のデータ構造の一例を示す図である。頂点データ格納領域１１１には、頂点番号、Ｘ座標、Ｙ座標、およびＺ座標を含む頂点データが格納されている。頂点番号は、頂点の識別番号である。Ｘ座標は、頂点のＸ軸の座標値である。Ｙ座標は、頂点のＹ軸の座標値である。Ｚ座標は、頂点のＺ軸の座標値である。
【００４８】
図９は、エッジデータ格納領域のデータ構造の一例を示す図である。エッジデータ格納領域１１２には、エッジ番号、２つの頂点番号、およびエッジ形状関数を含むエッジデータが格納されている。エッジ番号は、エッジの識別番号である。頂点番号は、エッジの両端の頂点の頂点番号である。エッジ形状関数は、２つの頂点間のエッジの形状を定義する関数である。
【００４９】
図１０は、サーフェースデータ格納領域のデータ構造の一例を示す図である。サーフェースデータ格納領域１１３には、サーフェース番号、分割前のサーフェース番号、および複数のエッジ番号を含むサーフェースデータが格納されている。サーフェース番号は、サーフェースの識別番号である。分割前のサーフェース番号は、領域分割処理によってサーフェースを分割した場合における、分割前のサーフェースの識別番号である。未分割のサーフェースの場合、分割前のサーフェース番号として例えば「０」が設定される。エッジ番号は、サーフェースに含まれるエッジのエッジ番号である。
【００５０】
図８〜図１０に示した解析対象物データによって、仮想的な３次元空間内での解析対象物の形状、位置、向きが定義されている。解析対象物データは、ＣＡＤソフトウェアなどによって予め作成され、解析対象物データ記憶部１１０に格納される。
【００５１】
次に、メッシュデータ記憶部１２０のデータ構造について詳細に説明する。
図１１は、メッシュデータ記憶部内の記憶領域の一例を示す図である。メッシュデータ記憶部１２０には、節点データ格納領域１２１と要素データ格納領域１２２とが設けられている。節点データ格納領域１２１は、メッシュの節点の位置を示すデータ（節点データ）を格納する記憶領域である。要素データ格納領域１２２は、個々の３次元メッシュを要素として、各要素の形状を定義するデータ（要素データ）が格納される。
【００５２】
図１２は、節点データ格納領域のデータ構造の一例を示す図である。節点データ格納領域１２１には、節点番号、Ｘ座標、Ｙ座標、およびＺ座標を含む節点データが格納されている。節点番号は、節点の識別番号である。Ｘ座標は、節点のＸ軸の座標値である。Ｙ座標は、節点のＹ軸の座標値である。Ｚ座標は、節点のＺ軸の座標値である。
【００５３】
図１３は、要素データ格納領域のデータ構造の一例を示す図である。要素データ格納領域１２２には、要素番号、要素タイプ、および複数の節点番号を含む要素データが格納されている。要素番号は、要素の識別番号である。要素タイプは、要素形状のタイプである。要素タイプには、例えば４面体（テトラ）、６面体（ヘキサ）などがある。節点番号は、要素の形状を示す節点の節点番号である。
【００５４】
なお要素タイプごとに、その要素の何番目の節点と何番目の節点との間がメッシュを示す線分で接続されるのかが予め定義されている。例えば要素タイプが４面体であれば、その要素のすべての節点間が、メッシュを示す線分で接続される。
【００５５】
図１２、図１３に示したメッシュデータに基づき、解析対象物をメッシュによって分割して得られる要素の形状、位置、向きが定義される。
次に、解析対象物データ記憶部１１０に格納された解析対象物データで示される解析対象物の構造解析を行う際の、メッシュ生成手順について説明する。
【００５６】
図１４は、メッシュ生成手順の一例を示すフローチャートである。以下、図１４に示す処理をステップ番号に沿って説明する。なお以下の処理は、例えばユーザ２２によるメッシュ作成を指示する入力に応じて実行される。
【００５７】
［ステップＳ１０１］メッシュサイズ決定部１３０は、解析対象物データ記憶部１１０を参照し、メッシュサイズを自動で設定する。例えばメッシュサイズ決定部１３０は、解析対象物のＣＡＤ形状と、メッシュ境界面との許容誤差に基づいて、メッシュサイズを決定する。許容誤差に基づくメッシュサイズは、例えば以下のような式で計算される。
Ｃ：＝解析対象物のＣＡＤ形状
ε：＝ＣＡＤ形状との許容誤差（εは０より大きく、１より小さい実数）
Ｌ：＝ＣＡＤ形状を覆う直方体の対角線の長さ
【００５８】
【数１】
0005831054.tif 000002
【００５９】
式（１）には、集合ＳにＣＡＤ形状Ｃに属する曲面ｓが含まれること、異なる曲面間では重なりがないこと、集合Ｓに含まれる全ての曲面ｓの領域の集合ＵがＣＡＤ形状Ｃとなることが定義されている。なお式（１）におけるオーバライン付きのｓは、集合Ｕで示される領域に、曲面ｓの境界部を含むことを示している。
【００６０】
ここで、メッシュサイズｈを以下のように定義する。
【００６１】
【数２】
0005831054.tif 000003
【００６２】
式（２）では、ＣＡＤ形状を構成する各曲面ｓに関して、曲面ｓに含まれる線分ｄのうちの、長さが最少の線分の長さが求められる。曲面ｓに含まれる線分ｄは、例えば曲面ｓの隣接する頂点間を結ぶ線分である。
【００６３】
式（３）では、「１−（ｎ／２π）ｓｉｎ（２π／ｎ）＜ε」を満たすｎ（３以上の整数）のうち、最も小さなｎが求められる。ここでπは円周率であり、「２π／ｎ」は、円の一周の角度（２π）をｎ等分して得られる扇形の中心角である。「１−（ｎ／２π）ｓｉｎ（２π／ｎ）」は、中心角「２π／ｎ」の扇形の面積に対する、その扇形の弧と弦で囲まれる領域の面積の割合である。これは換言すると、円に内接する正ｎ角形の多角形があるときの、円の面積に対する、円の面積と多角形の面積との差分の割合である。
【００６４】
図１５は、第２の実施の形態で用いる誤差を示す図である。半径ｒ（ｒは正の実数）の円３０の円周上に点Ａ、点Ｂがある。円３０の中心点を点Ｏとする。弧ＡＢ、線分ＯＡ、および線分ＯＢで囲まれた扇形の中心角を「２π／ｎ」とする。
【００６５】
ここで扇形の面積は「（πｒ2）／ｎ」である。また３角形ＯＡＢの面積は、「（１／２）ｒ2・ｓｉｎ（２π／ｎ）」である。すると、弧ＡＢと弦ＡＢとに囲まれた領域の面積は、「｛（πｒ2）／ｎ｝−｛（１／２）ｒ2・ｓｉｎ（２π／ｎ）｝」となる。弧ＡＢと弦ＡＢとに囲まれた領域の面積を、扇形の面積で除算すると、「１−（ｎ／２π）ｓｉｎ（２π／ｎ）」となる。
【００６６】
式（４）では、各曲面のガウス曲率の平方根、または各曲面の平均曲率が求められる。ガウス曲率は、曲面上の点における法線回りに算出できる曲率の最大値と最小値とを乗算した値である。平均曲率は、曲面上の点における法線回りに算出できる曲率の最大値と最小値との平均値である。
【００６７】
式（５）は、ガウス曲率の平方根または平均曲率と、式（３）で求めた値ｎεとを乗算した値で、２πが除算される。半径ｒの円の曲率は１／ｒである。そのため、式（５）の結果は、扇形の面積に対する、弧と弦に囲まれる面積の比率が、許容誤差より小さくなる扇型の中心角の最大値に、曲面ｓlのガウス曲率の平方根または平均曲率で示された曲率を得る円の半径を乗算した値である。これは、曲面ｓlから得られた曲率の弧であり、許容誤差の条件を満たし、中心角が最も大きくなる弧の長さとなる。曲面ｓlから得られた曲率が大きいほど、式（５）で算出される値は小さくなる。
【００６８】
式（６）では、式（２）で求めた値と式（５）で求めた値のうちの小さい方の値を、特定の曲面から算出したメッシュサイズの候補として選択される。
式（７）では、ＣＡＤ形状を構成するすべての曲面から算出されたメッシュサイズの候補の集合が生成される。
【００６９】
式（８）では、ＣＡＤ形状を覆う直方体の対角線の長さＬに許容誤差εを乗算した値と、メッシュサイズの候補とのうち、最も小さい値がメッシュサイズｈに決定される。Ｈεに属するいずれかのｈlの方がＬ×εよりも小さい場合、解析対象物の最も曲率が大きい面から算出されたｈlの値が、メッシュサイズｈとなる。すなわち、扇形の面積と、扇形の２本の半径と扇形の弦とで囲まれた３角形の面積との誤差が、許容誤差となる扇形の中心角を有し、かつ解析対象物の最も曲率が大きい面と同じ曲率の弧を有する扇形の弧の長さがメッシュサイズｈとなる。
【００７０】
このようにして、解析対象物の形状と、メッシュ分割して得られる要素の形状との誤差（どこまで解析対象物を正確に再現するか）に応じた適切なメッシュサイズが決定される。メッシュサイズ決定部１３０は、決定したメッシュサイズを、例えばＲＡＭ１０２内に一時的に格納する。
【００７１】
以下、図１４の説明に戻る。
［ステップＳ１０２］領域分割部１４０は、解析対象物の領域分割を行う。この処理の詳細は後述する（図２０〜図２３参照）。
【００７２】
［ステップＳ１０３］メッシュ生成部１５０は、解析対象物データ記憶部１１０を参照し、メッシュサイズ決定部１３０で決定されたメッシュサイズで、解析対象物が存在する空間にメッシュを生成する。なおメッシュ生成部１５０は、例えば生成したメッシュで解析対象物を分割して得られる要素の要素タイプが、ユーザ２２から予め指定されている。例えば４面体のメッシュを生成するように指定されている場合、メッシュ生成部１５０は、一辺の長さがメッシュサイズ以下となる範囲で、できるだけ大きめの４面体の要素に分割可能なメッシュを生成する。また様々な形状のメッシュを許容することが指定されていた場合、メッシュ生成部１５０は、一辺の長さがメッシュサイズ以下となる範囲で、できるだけ大きめの多面体の要素に分割可能なメッシュを生成する。メッシュ生成部１５０は、生成したメッシュを示すメッシュデータを、メッシュデータ記憶部１２０に格納する。
【００７３】
［ステップＳ１０４］メッシュ修正部１６０は、メッシュデータ記憶部１２０を参照し、生成された要素の要素タイプを判断する。メッシュ修正部１６０は、すべての要素の要素タイプが４面体の場合、処理をステップＳ１０５に進める。またメッシュ修正部１６０は、４面体以外の要素タイプの要素が混在している場合、処理をステップＳ１１１に進める。
【００７４】
［ステップＳ１０５］メッシュ修正部１６０は、すべての境界メッシュの合否判定を行う。境界メッシュとは、領域分割によって分割された各領域の境界面（解析対象物の表面も含む）に形成されたメッシュである。合否判定には、例えば境界面をメッシュで分割して得られる多角形の歪みが用いられる。多角形の歪みは、例えばアスペクト比またはヤコビアンで数値化される。
【００７５】
アスペクト比は、例えば多角形の最も長い辺と最も短い辺との長さの比（長辺÷短辺）である。境界メッシュが３角形の場合、正３角形であれば、アスペクト比が１となる。アスペクト比が低い３角形ほど、形状が正３角形に近くなる。
【００７６】
図１６は、アスペクト比の計算例を示す図である。例えば正３角形３１では、全ての辺の長さの比が１：１：１であり、アスペクト比は１となる。また例えば辺の長さの比が１：１．５：２の３角形３２では、アスペクト比は２（２÷１）となる。
【００７７】
なお、３角形の外接円の半径を内接円の半径で除算した値をアスペクト比とする場合もある。
ヤコビアンは、例えば境界メッシュで形成される多角形が４角形であれば、正方形に近いほど値が１に近くなる。
【００７８】
図１７は、ヤコビアンの計算例を示す図である。例えば正方形３３であれば、ヤコビアンは１となる。形状が歪んでいる４角形３４は、ヤコビアンが１より小さい値０．４となる。
【００７９】
メッシュ修正部１６０は、境界メッシュで境界面を分割して得られるすべての多角形のアスペクト比やヤコビアンが所定の範囲内にある場合、境界メッシュを合格と判定する。またメッシュ修正部１６０は、アスペクト比やヤコビアンが所定の範囲内にない多角形に分割される場合、境界メッシュを不合格と判定する。アスペクト比で判定する場合、メッシュ修正部１６０は、例えば、境界メッシュで分割して得られるすべての多角形のアスペクト比が所定の閾値以下の場合に、境界メッシュを合格とする。またヤコビアンで判定する場合、メッシュ修正部１６０は、例えば、境界メッシュで分割して得られるすべての多角形のヤコビアンの値が所定の閾値よりも大きな場合、境界メッシュを合格と判定する。
【００８０】
図１４の説明に戻る。ステップＳ１０５の処理において、不合格の境界メッシュがある場合、メッシュ修正部１６０は処理をステップＳ１０６に進める。またすべての境界メッシュが合格であれば、メッシュ修正部１６０は処理をステップＳ１０８に進める。なおメッシュ修正部１６０は、ステップＳ１０６，Ｓ１０７の処理の繰り返し回数が、予め設定された回数に達した際には、処理をステップＳ１０８に進める場合もある。
【００８１】
［ステップＳ１０６］メッシュ修正部１６０は、境界メッシュのスムージング処理を行う。例えば、メッシュ修正部１６０は、境界メッシュにより境界面を分割して得られる多角形が３角形であれば、その３角形の形状が正３角形に近づくように、不合格と判定された境界メッシュの節点の位置を修正する。またメッシュ修正部１６０は、例えば境界メッシュにより境界面を分割して得られる多角形が４角形であれば、その４角形の形状が正方形に近づくように、不合格と判定された境界メッシュの節点の位置を修正する。
【００８２】
［ステップＳ１０７］メッシュ修正部１６０は、節点の位置を修正しても、不合格と判定された境界メッシュを合格値の範囲内に修正できない場合、その境界メッシュを細分化する。例えばメッシュ修正部１６０は、境界メッシュで境界面を分割して得られる多角形の長辺上に節点を追加し、その節点に他の節点からの線分を設定することで、多角形を細分化する。その後、メッシュ修正部１６０は、処理をステップＳ１０５に進める。
【００８３】
［ステップＳ１０８］メッシュ修正部１６０は、境界メッシュが合格と判定された場合、内部メッシュの合否判定を行う。内部メッシュとは、領域分割で分割された領域の内部に生成されたメッシュである。例えばメッシュ修正部１６０は、内部メッシュの合否も、ステップＳ１０５と同様に、メッシュで分割して得られる多角形（要素の面）の形状の歪みで判定する。歪みは、例えばアスペクト比またはヤコビアンを用いて数値化できる。メッシュ修正部１６０は、内部メッシュで分割して得られるすべての面のアスペクト比またはヤコビアンの値が、所定の範囲内にあれば、内部メッシュを合格と判定する。
【００８４】
メッシュ修正部１６０は、内部メッシュが不合格である場合、処理をステップＳ１０９に進める。またメッシュ修正部１６０は、内部メッシュが合格である場合、処理を終了する。なおメッシュ修正部１６０は、ステップＳ１０９，Ｓ１１０の処理の繰り返し回数が、予め設定された回数に達した際に、処理を終了する場合もある。
【００８５】
［ステップＳ１０９］メッシュ修正部１６０は、内部メッシュのスムージング処理を行う。例えば、メッシュ修正部１６０は、内部メッシュで分割して得られる要素の面が３角形であれば、その面の形状が正３角形に近づくように、不合格と判定された内部メッシュの節点の位置を修正する。またメッシュ修正部１６０は、例えば内部メッシュで分割して得られる要素の面が４角形であれば、その面の形状が正方形に近づくように、不合格と判定された内部メッシュの節点の位置を修正する。
【００８６】
図１８は、内部メッシュのスムージングの一例を示す図である。図１８の例では、メッシュ修正部１６０は、すべての内部の節点を、その節点に対する隣接節点から求められる重心に移動している。図１８の例では、節点６１が、その節点６１に隣接する他の節点６２〜６６の重心６７に移動されている。なお節点６２〜６６の重心６７は、例えば各節点６２〜６６の位置座標を、座標軸ごとに平均して得られる位置である。
【００８７】
各節点の移動は、例えばすべての節点に対して同時に行われる。例えばメッシュ修正部１６０は、移動前のすべての節点に関し、移動前の隣接節点の位置に基づいて、移動先となる重心を計算する。そしてメッシュ修正部１６０は、すべての節点を、その節点に関して算出された重心の位置に同時に移動する。このような隣接節点の重心への節点の移動は、例えば所定回数繰り返し行ってもよい。
【００８８】
以下、図１４の説明に戻る。
［ステップＳ１１０］メッシュ修正部１６０は、品質の悪い要素の削除処理を行う。なお要素の品質は、例えば要素の面のアスペクト比やヤコビアンなどで判断する。その後、メッシュ修正部１６０は、処理をステップＳ１０８に進める。
【００８９】
［ステップＳ１１１］ステップＳ１０４において４面体以外の要素タイプの要素が含まれていると判断された場合、メッシュ修正部１６０は、要素の品質の悪い面の結合処理を行う。この処理の詳細は後述する（図２６参照）。その後、メッシュ修正部１６０は処理を終了する。
【００９０】
このようにして、適切なサイズの品質の良いメッシュが自動生成できる。
次に、領域分割処理について詳細に説明する。
図１９は、領域分割処理の手順を示すフローチャートである。以下、図１９に示す処理をステップ番号に沿って説明する。
【００９１】
［ステップＳ１２１］領域分割部１４０は、解析対象物データ記憶部１１０のサーフェースデータ格納領域１１３内のサーフェースデータを１つ読み込む。例えば領域分割部１４０は、サーフェースデータ格納領域１１３の上位のエントリから順に、サーフェースデータを読み込む。
【００９２】
［ステップＳ１２２］領域分割部１４０は、読み込んだサーフェースデータで示されるサーフェースが、穴あき形状か否かを判断する。例えば、エッジデータ（図９参照）における２つの頂点番号で示される頂点のうち、左側をエッジの始点、右側をエッジの終点とする。エッジの始点から終点に向かったときに、エッジの左側にサーフェースがあるものとする。この場合、サーフェースデータに示される各エッジの始点から終点の方向へエッジ上を辿ったときに、反時計回りに１周した場合、エッジで囲われた内側がサーフェースである。逆に、サーフェースデータに示される各エッジの始点から終点の方向へエッジ上を辿ったときに、時計回りに１周した場合、エッジで囲われた内側は穴であり、その穴の外側にサーフェースがある。
【００９３】
領域分割部１４０は、サーフェースが穴あき形状の場合、処理をステップＳ１２３に進める。また領域分割部１４０は、サーフェースが穴あき形状ではない場合、処理をステップＳ１２４に進める。
【００９４】
［ステップＳ１２３］領域分割部１４０は、穴あき形状のサーフェースを分割する。領域分割部１４０は、分割によって生じた、頂点、エッジ、およびサーフェースそれぞれの頂点データ、エッジデータ、およびサーフェースデータを、解析対象物データ記憶部１１０に格納する。
【００９５】
［ステップＳ１２４］領域分割部１４０は、読み込んだサーフェースデータに示されるサーフェース、またはそのサーフェースを分割して得られた面から、５角形以上の面を抽出する。
【００９６】
［ステップＳ１２５］領域分割部１４０は、５角形以上の面があったか否かを判断する。領域分割部１４０は、５角形以上の面があった場合、処理をステップＳ１２６に進める。また領域分割部１４０は、５角形以上の面がない場合、処理をステップＳ１３１に進める。
【００９７】
［ステップＳ１２６］領域分割部１４０は、５角形以上の面から、角度が最大となる頂点を抽出し、ｖ１とする。
［ステップＳ１２７］領域分割部１４０は、頂点ｖ１から所定方向に３つ隣の頂点をｖ２とする。例えば領域分割部１４０は、頂点ｖ１から反時計回りに３つ隣の頂点をｖ２とする。
【００９８】
［ステップＳ１２８］領域分割部１４０は、ステップＳ１２７と同じ方向に頂点を辿り、頂点ｖ２と頂点ｖ１との間に挟まれる頂点が１個か、または２個以上あるかを判断する。領域分割部１４０は、頂点ｖ２と頂点ｖ１との間に挟まれる頂点が１個であれば、処理をステップＳ１２９に進める。また領域分割部１４０は、頂点ｖ２と頂点ｖ１との間に挟まれる頂点が２個以上ある場合、処理をステップＳ１３０に進める。
【００９９】
［ステップＳ１２９］領域分割部１４０は、頂点ｖ２に対してステップＳ１２７における頂点探索方向と逆方向に隣接する頂点と、頂点ｖ２とを結ぶ外形エッジの中点を算出する。そして領域分割部１４０は、頂点ｖ１と、算出した中点とを結ぶエッジを生成し、生成したエッジにより面の領域を分割する。その後、領域分割部１４０は処理をステップＳ１２４に進める。
【０１００】
［ステップＳ１３０］領域分割部１４０は、頂点ｖ１と頂点ｖ２とを結ぶエッジを生成し、生成したエッジにより面の領域を分割する。その後、領域分割部１４０は処理をステップＳ１２４に進める。
【０１０１】
［ステップＳ１３１］領域分割部１４０は、領域分割部１４０は、未処理のサーフェースがあるか否かを判断する。例えば領域分割部１４０は、サーフェースデータ格納領域１１３内のエントリの上位から順にサーフェースデータを読み込んでいる場合、直前に読み込んだサーフェースデータが最後のエントリでなければ、未処理のサーフェースがあると判断する。また領域分割部１４０は、サーフェースデータ格納領域１１３内の最後にエントリされているサーフェースデータの処理が終了した場合、すべてのサーフェースの処理が完了したと判断する。
【０１０２】
領域分割部１４０は、未処理のサーフェースがある場合、処理をステップＳ１２１に進める。また領域分割部１４０は、すべてのサーフェースに対して処理が完了した場合、処理をステップＳ１３２に進める。
【０１０３】
［ステップＳ１３２］領域分割部１４０は、サーフェースの領域分割に合わせ、内部領域を分割する。その後、領域分割処理が終了する。
このようにして領域分割が行われる。なお領域分割は、大別すると、穴を有するサーフェースの分割、５角形以上のサーフェースの分割、および内部領域分割に分かれる。以下、それぞれの領域分割処理を詳細に説明する。
【０１０４】
まず、穴を有するサーフェースの領域分割処理について詳細に説明する。
図２０は、穴を有するサーフェースの領域分割の一例を示す図である。領域分割部１４０は、解析対象物データ記憶部１１０から、ユーザ２２が指定した解析対象物のサーフェースを抽出し、穴あきサーフェースかどうかを判断する。
【０１０５】
領域分割部１４０は、抽出したサーフェース４０に穴４１がある場合、穴形状を示す頂点それぞれから、最も近い外形のエッジへの垂線を生成する。そして領域分割部１４０は、生成した垂線を境界として、サーフェース４０を分割する。その結果、複数のサーフェース４２〜４５に分割される。
【０１０６】
このとき領域分割部１４０は、分割して生成されたサーフェース４２〜４５において、生成した垂線が穴形状を示す直線のエッジの延長上にあり、その垂線と穴形状の直線とを含んでいる場合、それらを１つの直線にまとめる。例えば、サーフェース４３では、穴形状の直線４６の延長上に垂線４７があるため、直線４６と垂線４７をまとめた１つの直線のエッジとする。
【０１０７】
次に、５角形以上のサーフェースの分割処理について説明する。例えば、図２０の例では、サーフェース４２が５角形である。そこで領域分割部１４０は、サーフェース４２を抽出する。
【０１０８】
図２１は、５角形以上のサーフェースの領域分割の一例を示す図である。領域分割部１４０は、５角形以上のサーフェースの頂点のうち、内角が最大の頂点を基準頂点ｖ１とする。次に領域分割部１４０は、基準頂点ｖ１から反時計回りに頂点を辿り、３つめの頂点ｖ２を抽出する。
【０１０９】
領域分割部１４０は、抽出した頂点ｖ２から、さらに反時計回りに頂点を辿り、頂点ｖ２と基準頂点ｖ１との間の頂点数を計数する。頂点ｖ２と基準頂点Ｖ１との間に頂点が２つ以上あれば、例えば領域分割部１４０は、基準頂点ｖ１と頂点ｖ２とを結ぶ直線を生成し、その直線でサーフェースを分割する。他方、頂点ｖ２と基準頂点ｖ１との間に頂点が１個だけの場合、例えば領域分割部１４０は、頂点ｖ２と、頂点ｖ２から時計回りに隣接する頂点との間のエッジの中点に対し、基準頂点ｖ１から直線を生成する。そして領域分割部１４０は、生成した直線でサーフェースを分割する。
【０１１０】
例えば図２１に示すサーフェース４２は、２つのサーフェース４８，４９に分割される。サーフェース４０は、最終的に、５つのサーフェース４３〜４５，４８，４９に分割されている。
【０１１１】
このようにして、サーフェースが分割される。その後、内部領域の分割処理が行われる。例えば、領域分割部１４０は、Voronoi-Delaunay分割と呼ばれる処理で内部分割を行う。
【０１１２】
図２２は、内部領域分割処理の一例を示す第１の図である。例えばＮ次元（Ｎは、２以上の整数）の空間に対して、領域Ωがある。
領域分割部１４０は、領域Ωの境界を分割する。この分割は、Ｎー１次元の分割である。例えば、領域Ωが２次元であれば、１次元（直線）を分割することとなる。図２２の例では、４つの頂点５１〜５４を有する領域Ωに対し、頂点５２と頂点５３との間が分割され、新たな頂点５５が生成されている。また頂点５１と頂点５４との間が分割され、新たな頂点５６が生成されている。
【０１１３】
次に領域分割部１４０は、領域Ωの内部に、適当な点を設定する。図２２の例では、２つの点５７，５８が設定されている。
図２３は、内部領域分割処理の一例を示す第２の図である。領域分割部１４０は、距離関数ｄを用いて領域Ｖ（Ｐi）を作成する。領域Ｖ（Ｐi）は、以下の式（９）で定義される。
【０１１４】
【数３】
0005831054.tif 000004
【０１１５】
ここでＰは、Ｎ次元の領域（ＲN）に含まれる点である。ｉ番目の頂点Ｐiを含む領域Ｖ（Ｐi）には、ｉ番目以外の頂点（ｊ番目の頂点Ｐj）との間の距離よりも、ｉ番目の頂点Ｐiに近い点Ｐが含まれる。このような分割は、ボロノイ（Voronoi）分割と呼ばれる。ボロノイ分割は、空間上に複数の点があるとき、ある位置がどの点に最も近いかで領域を分割する分割方式である。ボロノイ分割で生成された領域の境界は、隣接する２つの領域それぞれの頂点を結ぶ線の垂直２等分線上に生成される。
【０１１６】
次に領域分割部１４０は、境界を共有している複数の領域それぞれの頂点間を、線分で接続する。なお隣接していない領域間では、頂点は接続されない。例えば頂点５７であれば、頂点５１，５２，５５，５６，５８に対して、線分で接続される。そして、領域分割部１４０は、頂点間を接続した線分によって領域を分割する。このような分割をドロネイ（Delaunay）三角形分割と呼ぶ。
【０１１７】
このように、Voronoi-Delaunay分割によって、領域内部を分割することができる。なお、図２２、図２３では二次元空間の領域分割の例を示しているが、三次元以上の空間であっても同様の処理を再帰的に行うことで分割できる。
【０１１８】
以上のように、解析対象物を予め複数の領域に分割した後、解析対象物の空間にメッシュが生成される。この際、例えば分割された領域ごとに異なる条件でメッシュを生成する。例えば、分割された領域ごとにメッシュサイズを再計算し、分割された領域毎に適切なメッシュサイズでメッシュを作成する場合もある。
【０１１９】
次に、品質が悪い要素の削除処理について詳細に説明する。
図２４は、品質が悪い要素の削除処理の手順の一例を示すフローチャートである。以下、図２４に示す処理をステップ番号に沿って説明する。
【０１２０】
［ステップＳ１４１］メッシュ修正部１６０は、要素の品質が悪い面の重心を計算する。面の重心は、その面の節点の座標を座標系ごとに平均した位置である。
［ステップＳ１４２］メッシュ修正部１６０は、品質が悪い面のすべての節点を、重心に移動する。そしてメッシュ修正部１６０は、重心に移動した複数の節点を統合し、１つの節点とする。
【０１２１】
［ステップＳ１４３］メッシュ修正部１６０は、メッシュデータ記憶部１２０内のメッシュデータを修正する。例えばメッシュ修正部１６０は、節点データ格納領域１２１に、品質が悪い面の重心に設定した新たな節点に関する節点データを登録する。またメッシュ修正部１６０は、節点データ格納領域１２１から、品質が悪い面のすべての節点の節点データを削除する。またメッシュ修正部１６０は、要素データ格納領域１２２に登録されている品質が悪い面の節点の節点番号を、その面の重心に設定した節点の節点番号に置き換える。またメッシュ修正部１６０は、品質の悪い面を削除したことにより、消滅する要素の要素データを、要素データ格納領域１２２から削除する。例えば４面体の要素では、その要素の１つの面が削除され、その面の３つの節点が面の重心に移動されると、線分に縮退する。このような要素は、要素データ格納領域１２２から削除される。また、例えば４面体の要素の４つの節点のうち、２つの節点が削除された面の重心に移動すると、その要素の節点が３つになり、平面しか形成できない。このような要素も、要素データ格納領域１２２から削除される。
【０１２２】
図２５は、品質が悪い要素の削除処理の一例を示す図である。図２５の例では、節点７１〜７９によって形成されているメッシュのうち、３つの節点７１〜７３で形成されているメッシュのアスペクト比が、閾値以上であるものとする（第１の状態）。この場合、メッシュ修正部１６０は、節点７１〜７３の重心８０を算出する（第２の状態）。
【０１２３】
そしてメッシュ修正部１６０は、節点７１を重心８０に移動する。この際、節点７１と接続されていた線は、重心８０に接続される（第３の状態）。同様にメッシュ修正部１６０は、節点７２，７３を重心８０に移動する（第４の状態）。
【０１２４】
このようにして、品質が悪い面が削除される。また品質が悪い面と２つの点を共有していた隣接面も削除される。例えば、第１の状態に示されている節点７１，７５，７２で形成されている面も削除されている。品質が悪い面を削除することで、その面を有していた要素も削除される。品質の悪い要素が削除されることで、分割された領域の構造解析などの解析経線の収束性を向上できる。
【０１２５】
次に、歪みの大きい面の結合処理について説明する。
図２６は、歪みの大きい面の結合処理の一例を示すフローチャートである。以下、図２６に示す処理をステップ番号に沿って説明する。
【０１２６】
［ステップＳ１５１］メッシュ修正部１６０は、解析対象物をメッシュで分割して得られるすべての要素の各面の歪みを算出する。例えばメッシュ修正部１６０は、すべての面のヤコビアンを計算する。
【０１２７】
［ステップＳ１５２］メッシュ修正部１６０は、歪みの大きい未処理の面があるか否かを判断する。例えばメッシュ修正部１６０は、ヤコビアンが所定値の閾値以下の面があれば、その面は歪みの大きい面であると判断する。メッシュ修正部１６０は、歪みの大きい面であり、ステップＳ１５３〜Ｓ１５６の処理が未処理の面がある場合、処理をステップＳ１５３に進める。またメッシュ修正部１６０は、歪みの大きい未処理の面がなければ、処理を終了する。
【０１２８】
［ステップＳ１５３］メッシュ修正部１６０は、歪みの大きい面について、隣接する面と結合した場合の歪みを算出する。
［ステップＳ１５４］メッシュ修正部１６０は、歪みの大きい面を隣接する面と結合した場合の歪みが所定の閾値内か否かを判断する。例えばメッシュ修正部１６０は、歪みの大きい面に隣接する面のうち、結合した場合の歪みが最も小さくなる面を選択する。そしてメッシュ修正部１６０は、歪みが大きい面と選択した面とを結合した場合の歪みが、所定の閾値以内か否かを判断する。メッシュ修正部１６０は、歪みが所定の閾値内であれば、処理をステップＳ１５５に進める。またメッシュ修正部１６０は、歪みが所定の閾値内でなければ、処理をステップＳ１５２に進める。
【０１２９】
［ステップＳ１５５］メッシュ修正部１６０は、歪みの大きい面と、その面に隣接する面とを結合する。
［ステップＳ１５６］メッシュ修正部１６０は、面の結合結果に従って、メッシュデータを更新する。例えばメッシュ修正部１６０は、結合する２つの面で共有する節点の節点データを、メッシュデータ記憶部１２０内の節点データ格納領域１２１から削除する。またメッシュ修正部１６０は、要素データ格納領域１２２内の各要素データから、削除された節点データに対応する節点番号を削除する。その後、メッシュ修正部１６０は処理をステップＳ１５２に進める。
【０１３０】
図２７は、歪みの大きい面の第１の結合例を示す図である。図２７の例では、面９１の歪みが、所定の閾値より大きいものとする。この場合、例えば面９１と、面９１に隣接する面９２とが結合される。その結果、新たな面９３が生成される。
【０１３１】
図２８は、歪みの大きい面の第２の結合例を示す図である。図２８の例では、解析対象物の楕円形のサーフェース９４が、メッシュによって複数の面に分割されている。ここで、２つの面９４ａ，９４ｂについて、歪みが所定の閾値より大きいものとする。この場合、面９４ａ，９４ｂが、それぞれ隣接する面９４ｃ，９４ｄと結合され、新たな面９４ｅ，９４ｆが生成される。
【０１３２】
このとき、面が結合されたことにより、面９４ａと面９４ｃとの間の節点が削除される。その結果、削除された節点を含んでいた面９４ｇ，９４ｈの形状が変更される。面９４ｇについては、削除された節点に代えて、削除された節点の隣にあった節点が追加されている。面９４ｈについては、節点が削除されたことで、４角形から３角形に変更されている。同様に、面９４ｂと面９４ｄとが結合されたことにより、面９４ｉ，９４ｊの形状も変更されている。
【０１３３】
以上のようにして、品質の良いメッシュを自動的に生成する。これにより、メッシュ作成時間を短縮できる。また、メッシュサイズの決定やメッシュの修正が自動で行われることで、メッシュ作成が容易となる。しかも、適切なメッシュサイズによりメッシュが生成され、品質の悪い要素については削除される。そのため、歪みの少ないメッシュのみが残される。その結果、解析計算の収束性が向上する。そして、解析計算の収束性が向上することにより、解析時間が短縮される。
【０１３４】
〔その他の実施の形態〕
第２の実施の形態では、品質の悪い面を有する要素を削除する際に、品質が悪い面の節点をその面の重心に移動したが、節点を３角形の面の内心または外心に移動してもよい。
【０１３５】
また第２の実施の形態では、メッシュの合否判定（図１４のステップＳ１０５、Ｓ１０８）、品質が悪い要素の削除（図１４のステップＳ１１０）などの処理を、２次元の面（３角形）を基準に行っているが、３次元の４面体を基準にして行うこともできる。
【０１３６】
境界メッシュの合否判定（図１４のステップＳ１０５）を、要素（４面体）を基準にして行う場合、例えば領域の境界の面を有する要素の歪み（例えばアスペクト比またはヤコビアン）が所定の閾値以上か否かによって判定する。なお４面体の要素のアスペクト比は、その要素の最も長い辺と最も短い辺との比とする。
【０１３７】
境界の面を有する４面体の要素のうち、合否判定で不合格と判定された要素がある場合（図１４のステップＳ１０５で不合格）、例えば図１４のステップＳ１０６，Ｓ１０７の処理に替えて、以下の第１〜第３の処理を行う。
【０１３８】
［第１の処理］メッシュ修正部１６０は、境界線（１次元）に対するスムージングを行う。なお境界線とは、ＣＡＤ形状のエッジ、または領域分割により生成された領域のエッジ上に設定された、隣接する節点間を接続して得られる線である。
【０１３９】
［第２の処理］メッシュ修正部１６０は、境界面（３角形）に対するスムージングを行う。なお境界面とは、ＣＡＤ形状のサーフェース、または領域分割により生成された領域のサーフェース上に設定された、隣接する節点間を接続して得られる面である。
【０１４０】
なお境界線や境界面のスムージング方法としてはAveraging Methods、Optimization-Based Methods、Physically-Based Methods、Mid-node Placementなどの方法がある。
［第３の処理］メッシュ修正部１６０は、不合格と判定された、境界面が属する要素（４面体）を削除する。要素の削除は、その要素に含まれる境界面を構成する線のうちの、境界線の本数に応じて行われる。
・境界面（３角形）に境界線が１つ含まれる場合、該当する境界線の重心に、境界上にない節点を移動する。
・境界面（３角形）に境界線が２つ含まれる場合、削除処理を行わない。
・境界面（３角形）に境界線が含まれない場合、境界面の重心に、境界面の３つの節点を移動する。
【０１４１】
以上の第１〜第３の処理は、境界面を有する要素の歪み（例えばアスペクト比またはヤコビアン）の判定において、境界面を有するすべての要素が合格するまで繰り返される。
その後、内部メッシュの合否判定（図１４のステップＳ１０８）において内部メッシュの合否判定が行われる。内部メッシュの合否判定も、３次元の４面体を基準にして行う。例えば境界面を有していない要素の歪み（例えばアスペクト比またはヤコビアン）が所定の閾値以上か否かによって判定する。
【０１４２】
内部の要素のうち、合否判定で不合格と判定された要素がある場合（図１４のステップＳ１０８で不合格）、例えば図１４のステップＳ１０９，Ｓ１１０の処理に替えて、以下の第４、第５の処理を行う。
【０１４３】
［第４の処理］メッシュ修正部１６０は、境界面を有していない要素のスムージングを行う。例えば、メッシュ修正部１６０は、境界面を有していない要素の面の形状が正３角形に近づくように、不合格と判定された要素の節点の位置を修正する。
【０１４４】
［第５の処理］メッシュ修正部１６０は、要素（４面体）の重心に、その要素の節点を移動する。
以上の第４、第５の処理は、境界面を有していない要素の歪み（例えばアスペクト比またはヤコビアン）の判定において、境界面を有していない要素が合格するまで繰り返される。
【０１４５】
このようにして、３次元の形状を基準とした合否安定や、品質の悪い要素の削除が行われる。
なお、上記の各実施の形態に示した処理機能は、コンピュータによって実現できる。その場合、サーバ１００が有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておく。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disc）などがある。
【０１４６】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送する場合もある。
【０１４７】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行する場合もある。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行する。
【０１４８】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現する場合もある。
【０１４９】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【０１５０】
以上の実施の形態に開示された技術には、以下の付記に示す技術が含まれる。
（付記１）  コンピュータに、
解析対象物内に配置された複数の節点間を結ぶ線分によるメッシュを示すメッシュデータが記憶された記憶手段を参照し、該解析対象物を該メッシュによって分割して得られる複数の要素それぞれの品質を判断し、品質が所定値以下の要素を検出し、
検出された要素の形状を表す節点の位置に基づいて、該要素内の特定の一点の位置を計算し、
前記記憶手段の前記メッシュデータにおける、検出された要素の形状を表す節点のうちの複数の節点の位置を、前記特定の一点の位置に変更する、
処理を実行させることを特徴とするプログラム。
【０１５１】
（付記２）  前記複数の要素それぞれの品質の判断では、前記複数の要素それぞれの面の品質を判断し、品質が所定値以下の面を有する要素を検出し、
前記特定の一点の位置の計算では、検出された要素の品質が所定値以下の面の形状を表す節点の位置に基づいて、該面内の特定の一点の位置を計算し、
節点の位置の変更では、前記記憶手段の前記メッシュデータにおける、検出された要素の品質が所定値以下の面の形状を表す複数の節点の位置を、前記特定の一点の位置に変更する、
ことを特徴とする付記１記載のプログラム。
【０１５２】
（付記３）  前記特定の一点は、検出された要素の品質が所定値以下の面の重心であることを特徴とする付記２記載のプログラム。
（付記４）  前記メッシュによって生成されるすべての要素の形状が４面体であることを特徴とする付記１乃至３のいずれかに記載のプログラム。
【０１５３】
（付記５）  前記コンピュータに、さらに、
前記解析対象物の形状と、該解析対象物を該メッシュによって分割して得られる複数の要素で表される形状との誤差が、予め指定された許容誤差以下となるメッシュサイズを計算し、
生成される要素の辺の長さが前記メッシュサイズ以下となるメッシュデータを生成し、前記記憶手段に格納する、
処理を実行させることを特徴とする付記１乃至３のいずれかに記載のプログラム。
【０１５４】
（付記６）  前記コンピュータに、
扇形の面積と、該扇形の２本の半径と該扇形の弦とで囲まれた３角形の面積との誤差が、前記許容誤差となる該扇形の中心角を求め、該中心角を有し、かつ前記解析対象物の最も曲率が大きい面と同じ曲率の弧を有する扇形の該弧の長さをメッシュサイズとする、
処理を実行させることを特徴とする付記５記載のプログラム。
【０１５５】
（付記７）  前記コンピュータに、さらに、
前記解析対象物が穴のあいた面を有する場合、該穴の形状を示す頂点から該面の外周の辺へ垂線を下ろし、該垂線を境界として前記解析対象物を複数の領域に分割し、分割された領域ごとにメッシュデータを生成し、前記記憶手段に格納する、
処理を実行させることを特徴とする付記１乃至６のいずれかに記載のプログラム。
【０１５６】
（付記８）  前記コンピュータに、さらに、
前記解析対象物が５角形以上の面を有する場合、該面の内角が最大の頂点から、該面を複数の４角形に分割する線を生成し、該線を境界として前記解析対象物を複数の領域に分割し、分割された領域ごとにメッシュデータを生成し、前記記憶手段に格納する、
処理を実行させることを特徴とする付記１乃至７のいずれかに記載のプログラム。
【０１５７】
（付記９）  前記コンピュータに、
５角形以上の面の内角が最大の頂点から該面の辺に沿って所定方向に頂点を辿り、３つめの頂点を検出し、該頂点からさらに該所定方向に頂点を辿ったとき、該頂点と該内角が最大の頂点との間に挟まれる頂点が１つだけの場合、検出された３つめの頂点と、該頂点から該所定方向と逆方向に頂点を辿ったときの隣の頂点との間の辺上に新たな頂点を生成し、生成された該頂点と内角が最大の頂点とを結ぶ線分により、該面を複数の４角形に分割する、
処理を実行させることを特徴とする付記８記載のプログラム。
【０１５８】
（付記１０）  面の品質は、該面の歪み具合で判断することを特徴とする付記１乃至９のいずれかに記載のプログラム。
（付記１１）  解析対象物内に配置された複数の節点間を結ぶ線分によるメッシュを示すメッシュデータが記憶された記憶手段を参照し、該解析対象物を該メッシュによって分割して得られる複数の要素それぞれの品質を判断し、品質が所定値以下の要素を検出する検出手段と、
検出された要素の形状を表す節点の位置に基づいて、該要素内の特定の一点の位置を計算する計算手段と、
前記記憶手段の前記メッシュデータにおける、検出された要素の形状を表す節点のうちの複数の節点の位置を、前記特定の一点の位置に変更する変更手段と、
を有する情報処理装置。
【０１５９】
（付記１２）  コンピュータが、
解析対象物内に配置された複数の節点間を結ぶ線分によるメッシュを示すメッシュデータが記憶された記憶手段を参照し、該解析対象物を該メッシュによって分割して得られる複数の要素それぞれの品質を判断し、品質が所定値以下の要素を検出し、
検出された要素の形状を表す節点の位置に基づいて、該要素内の特定の一点の位置を計算し、
前記記憶手段の前記メッシュデータにおける、検出された要素の形状を表す節点のうちの複数の節点の位置を、前記特定の一点の位置に変更する、
ことを特徴とするメッシュ修正方法。
【符号の説明】
【０１６０】
１  記憶手段
１ａ  メッシュデータ
２  検出手段
３  計算手段
４  変更手段
Ｍ  情報処理装置
【図１】
0005831054.tif 000005
【図２】
0005831054.tif 000006
【図３】
0005831054.tif 000007
【図４】
0005831054.tif 000008
【図５】
0005831054.tif 000009
【図６】
0005831054.tif 000010
【図７】
0005831054.tif 000011
【図８】
0005831054.tif 000012
【図９】
0005831054.tif 000013
【図１０】
0005831054.tif 000014
【図１１】
0005831054.tif 000015
【図１２】
0005831054.tif 000016
【図１３】
0005831054.tif 000017
【図１４】
0005831054.tif 000018
【図１５】
0005831054.tif 000019
【図１６】
0005831054.tif 000020
【図１７】
0005831054.tif 000021
【図１８】
0005831054.tif 000022
【図１９】
0005831054.tif 000023
【図２０】
0005831054.tif 000024
【図２１】
0005831054.tif 000025
【図２２】
0005831054.tif 000026
【図２３】
0005831054.tif 000027
【図２４】
0005831054.tif 000028
【図２５】
0005831054.tif 000029
【図２６】
0005831054.tif 000030
【図２７】
0005831054.tif 000031
【図２８】
0005831054.tif 000032