説明

プログラム、情報処理装置、およびメッシュ修正方法

【課題】品質の悪い要素を確実に削除する。
【解決手段】記憶手段1には、解析対象物を複数の要素に分割するメッシュを、該解析対象物内に配置された複数の節点間を結ぶ線分によって示すメッシュデータ1aが記憶されている。検出手段2は、記憶手段1を参照し、節点間を結ぶ線分で囲まれた要素それぞれの品質を判断し、品質が所定値以下の要素を検出する。計算手段3は、検出された要素の形状を表す節点の位置に基づいて、該要素内の特定の一点の位置を計算する。そして変更手段4は、記憶手段1のメッシュデータ1aにおける、検出された要素の形状を表す節点のうちの複数の節点の位置を、特定の一点の位置に変更する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メッシュを修正するプログラム、情報処理装置、およびメッシュ修正方法に関する。
【背景技術】
【0002】
コンピュータシミュレーションにより、様々な物の構造解析を行うことができる。例えば、コンピュータを用いた構造解析によって、物体に外力が加えられたときのその物体の応力分布などの解析が可能である。
【0003】
構造解析を行う場合、例えば解析対象物をメッシュによって複数の要素に離散化する。生成される要素の形状は、例えば4面体(テトラ)や6面体(ヘキサ)などである。
解析空間のメッシュは、例えば、ユーザによる手動操作による指示に応じて、コンピュータによって生成される。ユーザからはメッシュサイズなどの条件が与えられ、コンピュータが条件に従ってメッシュを自動生成する。自動生成されたままのメッシュでメッシュ分割を行うと、品質の悪い要素が生成されることが多い。品質の悪い要素があると、構造解析の精度が低下したり、計算時間が増大したりする。そこで、例えば、生成された要素の品質が悪い場合、メッシュの節点の位置の手動による修正が行われていた。
【0004】
ところが、このような手動でのメッシュ修正作業には時間がかかる。しかも手動でメッシュ修正を行う場合、ユーザにメッシュ生成経験が十分にないと、解析対象物を品質の良い要素に適切に修正できない。近年、構造解析技術の適用分野は広がりつつあり、今後、要素数が1億を超えるような大規模な計算も想定される。現状の手法のままだと、大規模な計算を行う際のメッシュ作成の時間の増大と、要素の品質が悪いことによる解析時間の増大とが大きな問題となる。
【0005】
そこで、メッシュを自動で修正する技術が考えられている。例えば、要素を繋げることで、内角が大きい歪んだ要素を修正する技術がある。この技術では、歪んだ要素と隣接する要素を参照して、共有する面、線を削除することで修正される。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2009−110398号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかし、従来のメッシュの修正技術では、品質の悪い要素に隣接して、その要素と結合することで品質を十分に向上させることが可能な他の要素がある場合にしか適用できない。すなわち、結合によって品質を改善可能な隣接要素を見つけ出せない場合、品質の悪い要素を消去することができない。
【0008】
本発明はこのような点に鑑みてなされたものであり、品質の悪い要素を確実に削除できるプログラム、情報処理装置、およびメッシュ修正方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
1つの案では、コンピュータに、解析対象物内に配置された複数の節点間を結ぶ線分によるメッシュを示すメッシュデータが記憶された記憶手段を参照し、該解析対象物を該メッシュによって分割して得られる複数の要素それぞれの品質を判断し、品質が所定値以下の要素を検出し、検出された要素の形状を表す節点の位置に基づいて、該要素内の特定の一点の位置を計算し、記憶手段のメッシュデータにおける、検出された要素の形状を表す節点のうちの複数の節点の位置を、特定の一点の位置に変更する、処理を実行させることを特徴とするプログラムが提供される。
【0010】
他の1つの案では、上記プログラムを実行するコンピュータと同様の機能を有する情報処理装置が提供される。
さらに他の1つの案では、上記プログラムに基づいてコンピュータが実行する処理と同様の処理を行うメッシュ修正方法が提供される。
【発明の効果】
【0011】
品質の悪い要素を確実に削除できる。
【図面の簡単な説明】
【0012】
【図1】第1の実施の形態に係る情報処理装置の機能構成例を示す図である。
【図2】第1の実施の形態に係る処理手順の一例を示す図である。
【図3】第1の実施の形態に係る処理例を示す図である。
【図4】第2の実施の形態のシステム構成例を示す図である。
【図5】第2の実施の形態に用いるサーバのハードウェアの一構成例を示す図である。
【図6】サーバの機能の一例を示すブロック図である。
【図7】解析対象物データ記憶部内の記憶領域の一例を示す図である。
【図8】頂点データ格納領域のデータ構造の一例を示す図である。
【図9】エッジデータ格納領域のデータ構造の一例を示す図である。
【図10】サーフェースデータ格納領域のデータ構造の一例を示す図である。
【図11】メッシュデータ記憶部内の記憶領域の一例を示す図である。
【図12】節点データ格納領域のデータ構造の一例を示す図である。
【図13】要素データ格納領域のデータ構造の一例を示す図である。
【図14】メッシュ生成手順の一例を示すフローチャートである。
【図15】第2の実施の形態で用いる誤差を示す図である。
【図16】アスペクト比の計算例を示す図である。
【図17】ヤコビアンの計算例を示す図である。
【図18】内部メッシュのスムージングの一例を示す図である。
【図19】領域分割処理の手順を示すフローチャートである。
【図20】穴を有するサーフェースの領域分割の一例を示す図である。
【図21】5角形以上のサーフェースの領域分割の一例を示す図である。
【図22】内部領域分割処理の一例を示す第1の図である。
【図23】内部領域分割処理の一例を示す第2の図である。
【図24】品質が悪い要素の削除処理の手順の一例を示すフローチャートである。
【図25】品質が悪い要素の削除処理の一例を示す図である。
【図26】歪みの大きい面の結合処理の一例を示すフローチャートである。
【図27】歪みの大きい面の第1の結合例を示す図である。
【図28】歪みの大きい面の第2の結合例を示す図である。
【発明を実施するための形態】
【0013】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施できる。
〔第1の実施の形態〕
図1は、第1の実施の形態に係る情報処理装置の機能構成例を示す図である。情報処理装置Mは、記憶手段1、検出手段2、計算手段3、および変更手段4を有する。
【0014】
記憶手段1は、解析対象物内に配置された複数の節点間を結ぶ線分によるメッシュを示すメッシュデータ1aを記憶する。
検出手段2は、記憶手段1を参照し、解析対象物をメッシュによって分割して得られる複数の要素それぞれの品質を判断し、品質が所定値以下の要素を検出する。例えば検出手段2は、複数の要素それぞれの面の品質を判断し、品質が所定値以下の面を有する要素を検出する。
【0015】
計算手段3は、検出された要素の形状を表す節点の位置に基づいて、該要素内の特定の一点の位置を計算する。例えば計算手段3は、検出された要素の品質が所定値以下の面6aの形状を表す節点5a,5b,5cの位置に基づいて、該面内の特定の一点の位置を計算する。例えば特定の一点として、検出された要素の品質が所定値以下の面の重心が計算される。
【0016】
変更手段4は、記憶手段1のメッシュデータ1aにおける、検出された要素の形状を表す節点のうちの複数の節点の位置を、特定の一点の位置に変更する。例えば変更手段4は、検出された要素の品質が所定値以下の面6aの形状を表す複数の節点5a,5b,5cの位置を、特定の一点の位置に変更する。
【0017】
なお、検出手段2、計算手段3、および変更手段4は、情報処理装置Mが有するCPU(Central Processing Unit)により実現する。また、記憶手段1は、情報処理装置が有するRAM(Random Access Memory)やハードディスクドライブ(HDD:Hard Disk Drive)などにより実現する。
【0018】
また、図1に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
このような機能を有する情報処理装置Mにより、以下のような処理が行われる。
【0019】
図2は、第1の実施の形態に係る処理手順の一例を示す図である。以下、図2に示す処理をステップ番号に沿って説明する。
[ステップS1]検出手段2は、要素の面の品質を判断する。要素の面は、要素を構成する節点を結ぶ線分で表され、例えば要素の面の歪みを計算する。例えば、検出手段2は、多角形の面のアスペクト比やヤコビアンなどを計算する。
【0020】
[ステップS2]検出手段2は、品質が所定値以下の要素があるか否かを判断する。品質が所定値以下の要素があれば、検出手段2は処理をステップS3に進める。また検出手段2は、品質が所定値以下の要素がなければ処理を終了する。
【0021】
[ステップS3]計算手段3は、品質が所定値以下の要素の形状を表す節点の位置に基づいて、その要素内の特定の一点の位置を計算する。例えば計算手段3は、品質が所定値以下の面の重心を計算する。
【0022】
[ステップS4]変更手段4は、品質が所定値以下の要素の形状を表す複数の節点の位置を、ステップS3で計算した特定の一点の位置に変更する。
図3は、第1の実施の形態に係る処理例を示す図である。図3の例では、節点5a,5b,5c,5d,5e,5f,5g,5h,5i間を線分で接続し、複数の面6a,6b,6c,6d,6e,6f,6g,6h,6i,6jが形成されている。各面6a,6b,6c,6d,6e,6f,6g,6h,6i,6jは、それぞれが、解析対象物をメッシュで分割して生成される要素の1つの面である。
【0023】
図3の例では、面6aについては、横に長すぎて品質が悪い。そこで面6aの形状を示す節点5a,5b,5cの位置に基づいて、面6a内の特定の一点7の位置が計算される。例えば面6aの重心が計算される。そして、面6aの形状を示す節点5a,5b,5cが、面6a内の特定の一点7に移動される。
【0024】
図3の例では、移動された3つの節点5a,5b,5cが、1つの節点5jに置き換えられている。移動前の3つの節点5a,5b,5cそれぞれに線分で接続されていた節点5d,5e,5f,5g,5h,5iは、節点5a,5b,5cの移動後には、節点5jに対して線分で接続される。これにより、面6aと、その面6aとの間で線分を共有して隣接していた面6b,6c,6dとが削除される。
【0025】
例えば面6a,6b,6c,6dが4面体要素の1つの面の場合、面6a,6b,6c,6dが削除されることで、その面を有する4面体要素も縮退し、消滅する。
このようにして品質の悪い面を有する要素を確実に削除する。しかも、面6aを削除した影響は、周囲の他の複数の面の形状を変更することで修正される。その結果、例えば品質が悪い面を、隣接する1つの面と結合しても品質が十分に向上しない場合であっても、品質の悪い面の削除が可能となる。すなわち、品質の悪い面の節点を、例えばその面の重心に移動させることで、その面を削除したことによる影響は、節点を共有する多数の面で吸収される。従って、隣接する1つの面と結合させる場合に比べ、品質を改善できる可能性が高くなる。
【0026】
さらに、品質の悪い面の削除処理を自動で実行するため、ユーザによるメッシュの修正作業の手間が大幅に削減される。しかも、メッシュが自動で修正されるため、メッシュ生成の経験がないユーザであっても品質の良いメッシュを生成することができる。さらに、メッシュの修正がメッシュの再作成をせずに行われることで、条件を変えてメッシュを繰り返し生成する場合に比べて大幅に時間が短縮される。
【0027】
〔第2の実施の形態〕
第2の実施の形態は、構造解析を行うサーバに対して、メッシュの自動生成機能を組み込んだものである。
【0028】
図4は、第2の実施の形態のシステム構成例を示す図である。第2の実施の形態では、構造解析を行うサーバ100にネットワーク10を介して端末装置21が接続されている。ユーザ22は、端末装置21を用いてサーバ100に構造解析の条件入力や、構造解析の指示を行う。例えばユーザ22は、端末装置21を用い、構造解析の際のメッシュ生成の条件をサーバ100に指示する。
【0029】
図5は、第2の実施の形態に用いるサーバのハードウェアの一構成例を示す図である。サーバ100は、CPU101によって装置全体が制御されている。CPU101には、バス108を介してRAM102と複数の周辺機器が接続されている。
【0030】
RAM102は、サーバ100の主記憶装置として使用される。RAM102には、CPU101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に必要な各種データが格納される。
【0031】
バス108に接続されている周辺機器としては、HDD103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、および通信インタフェース107がある。
【0032】
HDD103は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103は、サーバ100の二次記憶装置として使用される。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用する場合もある。
【0033】
グラフィック処理装置104には、モニタ11が接続されている。グラフィック処理装置104は、CPU101からの命令に従って、画像をモニタ11の画面に表示させる。モニタ11としては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置などがある。
【0034】
入力インタフェース105には、キーボード12とマウス13とが接続されている。入力インタフェース105は、キーボード12やマウス13から送られてくる信号をCPU101に送信する。なお、マウス13は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用する場合もある。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【0035】
光学ドライブ装置106は、レーザ光などを利用して、光ディスク14に記録されたデータの読み取りを行う。光ディスク14は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク14には、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
【0036】
通信インタフェース107は、ネットワーク10に接続されている。通信インタフェース107は、ネットワーク10を介して、端末装置21などの他のコンピュータまたは通信機器との間でデータの送受信を行う。
【0037】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現する。なお、図1に示した第1の実施の形態の情報処理装置Mも、図5に示したサーバ100と同様のハードウェアにより実現する。
【0038】
図6は、サーバの機能の一例を示すブロック図である。サーバ100は、解析対象物データ記憶部110、メッシュデータ記憶部120、メッシュサイズ決定部130、領域分割部140、メッシュ生成部150、メッシュ修正部160、および構造解析部170を有する。
【0039】
解析対象物データ記憶部110は、構造解析対象となる物品の3次元CAD(Computer Aided Design)データを記憶する。例えばRAM102またはHDD103の記憶領域の一部が、解析対象物データ記憶部110として使用される。
【0040】
メッシュデータ記憶部120は、構造解析を行うときに解析対象物を離散化させるメッシュを示すメッシュデータを記憶する。例えばRAM102またはHDD103の記憶領域の一部が、メッシュデータ記憶部120として使用される。
【0041】
メッシュサイズ決定部130は、メッシュを生成する際のメッシュサイズを決定する。メッシュサイズとは、メッシュの節点間を接続する線分の長さである。
領域分割部140は、メッシュ生成に先立ち、解析対象物の領域分割(Domain Decomposition)を行う。領域分割によって生成された複数の領域は、並列に解析処理を行うことができる。領域分割を行った場合、例えば分割によって生成された複数の領域それぞれに関して、異なる条件でメッシュを生成する。例えば、分割された領域ごとに、異なるメッシュサイズでメッシュを生成することである。
【0042】
メッシュ生成部150は、解析対象物の分割された領域ごとにメッシュを生成する。メッシュ生成部150は、生成したメッシュを示すメッシュデータを、メッシュデータ記憶部120に格納する。
【0043】
メッシュ修正部160は、メッシュ生成部150で生成されたメッシュを修正する。そしてメッシュ修正部160は、修正後のメッシュを示すメッシュデータにより、メッシュデータ記憶部120内のメッシュデータを更新する。
【0044】
構造解析部170は、解析対象物が存在する空間をメッシュデータに基づいて複数のメッシュに分割し、解析対象物の応力分布などの構造解析を行う。構造解析部170は、解析結果を、例えば端末装置21に送信する。
【0045】
なお、図6に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また図6に示したメッシュデータ記憶部120は、図1に示した記憶手段1の一例である。また図6に示したメッシュ修正部160は、図1に示した検出手段2、計算手段3、および変更手段4の機能を含んでいる。
【0046】
次に、解析対象物データ記憶部110のデータ構造について詳細に説明する。
図7は、解析対象物データ記憶部内の記憶領域の一例を示す図である。解析対象物データ記憶部110には、頂点データ格納領域111、エッジデータ格納領域112、およびサーフェースデータ格納領域113が設けられている。頂点データ格納領域111は、解析対象物の頂点の位置を示すデータ(頂点データ)を格納する記憶領域である。エッジデータ格納領域112は、解析対象物の稜線(エッジ)の形状を示すデータ(エッジデータ)を格納する記憶領域である。サーフェースデータ格納領域113は、解析対象物の面(サーフェース)の形状を示すデータ(サーフェースデータ)を格納する記憶領域である。
【0047】
図8は、頂点データ格納領域のデータ構造の一例を示す図である。頂点データ格納領域111には、頂点番号、X座標、Y座標、およびZ座標を含む頂点データが格納されている。頂点番号は、頂点の識別番号である。X座標は、頂点のX軸の座標値である。Y座標は、頂点のY軸の座標値である。Z座標は、頂点のZ軸の座標値である。
【0048】
図9は、エッジデータ格納領域のデータ構造の一例を示す図である。エッジデータ格納領域112には、エッジ番号、2つの頂点番号、およびエッジ形状関数を含むエッジデータが格納されている。エッジ番号は、エッジの識別番号である。頂点番号は、エッジの両端の頂点の頂点番号である。エッジ形状関数は、2つの頂点間のエッジの形状を定義する関数である。
【0049】
図10は、サーフェースデータ格納領域のデータ構造の一例を示す図である。サーフェースデータ格納領域113には、サーフェース番号、分割前のサーフェース番号、および複数のエッジ番号を含むサーフェースデータが格納されている。サーフェース番号は、サーフェースの識別番号である。分割前のサーフェース番号は、領域分割処理によってサーフェースを分割した場合における、分割前のサーフェースの識別番号である。未分割のサーフェースの場合、分割前のサーフェース番号として例えば「0」が設定される。エッジ番号は、サーフェースに含まれるエッジのエッジ番号である。
【0050】
図8〜図10に示した解析対象物データによって、仮想的な3次元空間内での解析対象物の形状、位置、向きが定義されている。解析対象物データは、CADソフトウェアなどによって予め作成され、解析対象物データ記憶部110に格納される。
【0051】
次に、メッシュデータ記憶部120のデータ構造について詳細に説明する。
図11は、メッシュデータ記憶部内の記憶領域の一例を示す図である。メッシュデータ記憶部120には、節点データ格納領域121と要素データ格納領域122とが設けられている。節点データ格納領域121は、メッシュの節点の位置を示すデータ(節点データ)を格納する記憶領域である。要素データ格納領域122は、個々の3次元メッシュを要素として、各要素の形状を定義するデータ(要素データ)が格納される。
【0052】
図12は、節点データ格納領域のデータ構造の一例を示す図である。節点データ格納領域121には、節点番号、X座標、Y座標、およびZ座標を含む節点データが格納されている。節点番号は、節点の識別番号である。X座標は、節点のX軸の座標値である。Y座標は、節点のY軸の座標値である。Z座標は、節点のZ軸の座標値である。
【0053】
図13は、要素データ格納領域のデータ構造の一例を示す図である。要素データ格納領域122には、要素番号、要素タイプ、および複数の節点番号を含む要素データが格納されている。要素番号は、要素の識別番号である。要素タイプは、要素形状のタイプである。要素タイプには、例えば4面体(テトラ)、6面体(ヘキサ)などがある。節点番号は、要素の形状を示す節点の節点番号である。
【0054】
なお要素タイプごとに、その要素の何番目の節点と何番目の節点との間がメッシュを示す線分で接続されるのかが予め定義されている。例えば要素タイプが4面体であれば、その要素のすべての節点間が、メッシュを示す線分で接続される。
【0055】
図12、図13に示したメッシュデータに基づき、解析対象物をメッシュによって分割して得られる要素の形状、位置、向きが定義される。
次に、解析対象物データ記憶部110に格納された解析対象物データで示される解析対象物の構造解析を行う際の、メッシュ生成手順について説明する。
【0056】
図14は、メッシュ生成手順の一例を示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。なお以下の処理は、例えばユーザ22によるメッシュ作成を指示する入力に応じて実行される。
【0057】
[ステップS101]メッシュサイズ決定部130は、解析対象物データ記憶部110を参照し、メッシュサイズを自動で設定する。例えばメッシュサイズ決定部130は、解析対象物のCAD形状と、メッシュ境界面との許容誤差に基づいて、メッシュサイズを決定する。許容誤差に基づくメッシュサイズは、例えば以下のような式で計算される。
C:=解析対象物のCAD形状
ε:=CAD形状との許容誤差(εは0より大きく、1より小さい実数)
L:=CAD形状を覆う直方体の対角線の長さ
【0058】
【数1】

【0059】
式(1)には、集合SにCAD形状Cに属する曲面sが含まれること、異なる曲面間では重なりがないこと、集合Sに含まれる全ての曲面sの領域の集合UがCAD形状Cとなることが定義されている。なお式(1)におけるオーバライン付きのsは、集合Uで示される領域に、曲面sの境界部を含むことを示している。
【0060】
ここで、メッシュサイズhを以下のように定義する。
【0061】
【数2】

【0062】
式(2)では、CAD形状を構成する各曲面sに関して、曲面sに含まれる線分dのうちの、長さが最少の線分の長さが求められる。曲面sに含まれる線分dは、例えば曲面sの隣接する頂点間を結ぶ線分である。
【0063】
式(3)では、「1−(n/2π)sin(2π/n)<ε」を満たすn(3以上の整数)のうち、最も小さなnが求められる。ここでπは円周率であり、「2π/n」は、円の一周の角度(2π)をn等分して得られる扇形の中心角である。「1−(n/2π)sin(2π/n)」は、中心角「2π/n」の扇形の面積に対する、その扇形の弧と弦で囲まれる領域の面積の割合である。これは換言すると、円に内接する正n角形の多角形があるときの、円の面積に対する、円の面積と多角形の面積との差分の割合である。
【0064】
図15は、第2の実施の形態で用いる誤差を示す図である。半径r(rは正の実数)の円30の円周上に点A、点Bがある。円30の中心点を点Oとする。弧AB、線分OA、および線分OBで囲まれた扇形の中心角を「2π/n」とする。
【0065】
ここで扇形の面積は「(πr2)/n」である。また3角形OABの面積は、「(1/2)r2・sin(2π/n)」である。すると、弧ABと弦ABとに囲まれた領域の面積は、「{(πr2)/n}−{(1/2)r2・sin(2π/n)}」となる。弧ABと弦ABとに囲まれた領域の面積を、扇形の面積で除算すると、「1−(n/2π)sin(2π/n)」となる。
【0066】
式(4)では、各曲面のガウス曲率の平方根、または各曲面の平均曲率が求められる。ガウス曲率は、曲面上の点における法線回りに算出できる曲率の最大値と最小値とを乗算した値である。平均曲率は、曲面上の点における法線回りに算出できる曲率の最大値と最小値との平均値である。
【0067】
式(5)は、ガウス曲率の平方根または平均曲率と、式(3)で求めた値nεとを乗算した値で、2πが除算される。半径rの円の曲率は1/rである。そのため、式(5)の結果は、扇形の面積に対する、弧と弦に囲まれる面積の比率が、許容誤差より小さくなる扇型の中心角の最大値に、曲面slのガウス曲率の平方根または平均曲率で示された曲率を得る円の半径を乗算した値である。これは、曲面slから得られた曲率の弧であり、許容誤差の条件を満たし、中心角が最も大きくなる弧の長さとなる。曲面slから得られた曲率が大きいほど、式(5)で算出される値は小さくなる。
【0068】
式(6)では、式(2)で求めた値と式(5)で求めた値のうちの小さい方の値を、特定の曲面から算出したメッシュサイズの候補として選択される。
式(7)では、CAD形状を構成するすべての曲面から算出されたメッシュサイズの候補の集合が生成される。
【0069】
式(8)では、CAD形状を覆う直方体の対角線の長さLに許容誤差εを乗算した値と、メッシュサイズの候補とのうち、最も小さい値がメッシュサイズhに決定される。Hεに属するいずれかのhlの方がL×εよりも小さい場合、解析対象物の最も曲率が大きい面から算出されたhlの値が、メッシュサイズhとなる。すなわち、扇形の面積と、扇形の2本の半径と扇形の弦とで囲まれた3角形の面積との誤差が、許容誤差となる扇形の中心角を有し、かつ解析対象物の最も曲率が大きい面と同じ曲率の弧を有する扇形の弧の長さがメッシュサイズhとなる。
【0070】
このようにして、解析対象物の形状と、メッシュ分割して得られる要素の形状との誤差(どこまで解析対象物を正確に再現するか)に応じた適切なメッシュサイズが決定される。メッシュサイズ決定部130は、決定したメッシュサイズを、例えばRAM102内に一時的に格納する。
【0071】
以下、図14の説明に戻る。
[ステップS102]領域分割部140は、解析対象物の領域分割を行う。この処理の詳細は後述する(図20〜図23参照)。
【0072】
[ステップS103]メッシュ生成部150は、解析対象物データ記憶部110を参照し、メッシュサイズ決定部130で決定されたメッシュサイズで、解析対象物が存在する空間にメッシュを生成する。なおメッシュ生成部150は、例えば生成したメッシュで解析対象物を分割して得られる要素の要素タイプが、ユーザ22から予め指定されている。例えば4面体のメッシュを生成するように指定されている場合、メッシュ生成部150は、一辺の長さがメッシュサイズ以下となる範囲で、できるだけ大きめの4面体の要素に分割可能なメッシュを生成する。また様々な形状のメッシュを許容することが指定されていた場合、メッシュ生成部150は、一辺の長さがメッシュサイズ以下となる範囲で、できるだけ大きめの多面体の要素に分割可能なメッシュを生成する。メッシュ生成部150は、生成したメッシュを示すメッシュデータを、メッシュデータ記憶部120に格納する。
【0073】
[ステップS104]メッシュ修正部160は、メッシュデータ記憶部120を参照し、生成された要素の要素タイプを判断する。メッシュ修正部160は、すべての要素の要素タイプが4面体の場合、処理をステップS105に進める。またメッシュ修正部160は、4面体以外の要素タイプの要素が混在している場合、処理をステップS111に進める。
【0074】
[ステップS105]メッシュ修正部160は、すべての境界メッシュの合否判定を行う。境界メッシュとは、領域分割によって分割された各領域の境界面(解析対象物の表面も含む)に形成されたメッシュである。合否判定には、例えば境界面をメッシュで分割して得られる多角形の歪みが用いられる。多角形の歪みは、例えばアスペクト比またはヤコビアンで数値化される。
【0075】
アスペクト比は、例えば多角形の最も長い辺と最も短い辺との長さの比(長辺÷短辺)である。境界メッシュが3角形の場合、正3角形であれば、アスペクト比が1となる。アスペクト比が低い3角形ほど、形状が正3角形に近くなる。
【0076】
図16は、アスペクト比の計算例を示す図である。例えば正3角形31では、全ての辺の長さの比が1:1:1であり、アスペクト比は1となる。また例えば辺の長さの比が1:1.5:2の3角形32では、アスペクト比は2(2÷1)となる。
【0077】
なお、3角形の外接円の半径を内接円の半径で除算した値をアスペクト比とする場合もある。
ヤコビアンは、例えば境界メッシュで形成される多角形が4角形であれば、正方形に近いほど値が1に近くなる。
【0078】
図17は、ヤコビアンの計算例を示す図である。例えば正方形33であれば、ヤコビアンは1となる。形状が歪んでいる4角形34は、ヤコビアンが1より小さい値0.4となる。
【0079】
メッシュ修正部160は、境界メッシュで境界面を分割して得られるすべての多角形のアスペクト比やヤコビアンが所定の範囲内にある場合、境界メッシュを合格と判定する。またメッシュ修正部160は、アスペクト比やヤコビアンが所定の範囲内にない多角形に分割される場合、境界メッシュを不合格と判定する。アスペクト比で判定する場合、メッシュ修正部160は、例えば、境界メッシュで分割して得られるすべての多角形のアスペクト比が所定の閾値以下の場合に、境界メッシュを合格とする。またヤコビアンで判定する場合、メッシュ修正部160は、例えば、境界メッシュで分割して得られるすべての多角形のヤコビアンの値が所定の閾値よりも大きな場合、境界メッシュを合格と判定する。
【0080】
図14の説明に戻る。ステップS105の処理において、不合格の境界メッシュがある場合、メッシュ修正部160は処理をステップS106に進める。またすべての境界メッシュが合格であれば、メッシュ修正部160は処理をステップS108に進める。なおメッシュ修正部160は、ステップS106,S107の処理の繰り返し回数が、予め設定された回数に達した際には、処理をステップS108に進める場合もある。
【0081】
[ステップS106]メッシュ修正部160は、境界メッシュのスムージング処理を行う。例えば、メッシュ修正部160は、境界メッシュにより境界面を分割して得られる多角形が3角形であれば、その3角形の形状が正3角形に近づくように、不合格と判定された境界メッシュの節点の位置を修正する。またメッシュ修正部160は、例えば境界メッシュにより境界面を分割して得られる多角形が4角形であれば、その4角形の形状が正方形に近づくように、不合格と判定された境界メッシュの節点の位置を修正する。
【0082】
[ステップS107]メッシュ修正部160は、節点の位置を修正しても、不合格と判定された境界メッシュを合格値の範囲内に修正できない場合、その境界メッシュを細分化する。例えばメッシュ修正部160は、境界メッシュで境界面を分割して得られる多角形の長辺上に節点を追加し、その節点に他の節点からの線分を設定することで、多角形を細分化する。その後、メッシュ修正部160は、処理をステップS105に進める。
【0083】
[ステップS108]メッシュ修正部160は、境界メッシュが合格と判定された場合、内部メッシュの合否判定を行う。内部メッシュとは、領域分割で分割された領域の内部に生成されたメッシュである。例えばメッシュ修正部160は、内部メッシュの合否も、ステップS105と同様に、メッシュで分割して得られる多角形(要素の面)の形状の歪みで判定する。歪みは、例えばアスペクト比またはヤコビアンを用いて数値化できる。メッシュ修正部160は、内部メッシュで分割して得られるすべての面のアスペクト比またはヤコビアンの値が、所定の範囲内にあれば、内部メッシュを合格と判定する。
【0084】
メッシュ修正部160は、内部メッシュが不合格である場合、処理をステップS109に進める。またメッシュ修正部160は、内部メッシュが合格である場合、処理を終了する。なおメッシュ修正部160は、ステップS109,S110の処理の繰り返し回数が、予め設定された回数に達した際に、処理を終了する場合もある。
【0085】
[ステップS109]メッシュ修正部160は、内部メッシュのスムージング処理を行う。例えば、メッシュ修正部160は、内部メッシュで分割して得られる要素の面が3角形であれば、その面の形状が正3角形に近づくように、不合格と判定された内部メッシュの節点の位置を修正する。またメッシュ修正部160は、例えば内部メッシュで分割して得られる要素の面が4角形であれば、その面の形状が正方形に近づくように、不合格と判定された内部メッシュの節点の位置を修正する。
【0086】
図18は、内部メッシュのスムージングの一例を示す図である。図18の例では、メッシュ修正部160は、すべての内部の節点を、その節点に対する隣接節点から求められる重心に移動している。図18の例では、節点61が、その節点61に隣接する他の節点62〜66の重心67に移動されている。なお節点62〜66の重心67は、例えば各節点62〜66の位置座標を、座標軸ごとに平均して得られる位置である。
【0087】
各節点の移動は、例えばすべての節点に対して同時に行われる。例えばメッシュ修正部160は、移動前のすべての節点に関し、移動前の隣接節点の位置に基づいて、移動先となる重心を計算する。そしてメッシュ修正部160は、すべての節点を、その節点に関して算出された重心の位置に同時に移動する。このような隣接節点の重心への節点の移動は、例えば所定回数繰り返し行ってもよい。
【0088】
以下、図14の説明に戻る。
[ステップS110]メッシュ修正部160は、品質の悪い要素の削除処理を行う。なお要素の品質は、例えば要素の面のアスペクト比やヤコビアンなどで判断する。その後、メッシュ修正部160は、処理をステップS108に進める。
【0089】
[ステップS111]ステップS104において4面体以外の要素タイプの要素が含まれていると判断された場合、メッシュ修正部160は、要素の品質の悪い面の結合処理を行う。この処理の詳細は後述する(図26参照)。その後、メッシュ修正部160は処理を終了する。
【0090】
このようにして、適切なサイズの品質の良いメッシュが自動生成できる。
次に、領域分割処理について詳細に説明する。
図19は、領域分割処理の手順を示すフローチャートである。以下、図19に示す処理をステップ番号に沿って説明する。
【0091】
[ステップS121]領域分割部140は、解析対象物データ記憶部110のサーフェースデータ格納領域113内のサーフェースデータを1つ読み込む。例えば領域分割部140は、サーフェースデータ格納領域113の上位のエントリから順に、サーフェースデータを読み込む。
【0092】
[ステップS122]領域分割部140は、読み込んだサーフェースデータで示されるサーフェースが、穴あき形状か否かを判断する。例えば、エッジデータ(図9参照)における2つの頂点番号で示される頂点のうち、左側をエッジの始点、右側をエッジの終点とする。エッジの始点から終点に向かったときに、エッジの左側にサーフェースがあるものとする。この場合、サーフェースデータに示される各エッジの始点から終点の方向へエッジ上を辿ったときに、反時計回りに1周した場合、エッジで囲われた内側がサーフェースである。逆に、サーフェースデータに示される各エッジの始点から終点の方向へエッジ上を辿ったときに、時計回りに1周した場合、エッジで囲われた内側は穴であり、その穴の外側にサーフェースがある。
【0093】
領域分割部140は、サーフェースが穴あき形状の場合、処理をステップS123に進める。また領域分割部140は、サーフェースが穴あき形状ではない場合、処理をステップS124に進める。
【0094】
[ステップS123]領域分割部140は、穴あき形状のサーフェースを分割する。領域分割部140は、分割によって生じた、頂点、エッジ、およびサーフェースそれぞれの頂点データ、エッジデータ、およびサーフェースデータを、解析対象物データ記憶部110に格納する。
【0095】
[ステップS124]領域分割部140は、読み込んだサーフェースデータに示されるサーフェース、またはそのサーフェースを分割して得られた面から、5角形以上の面を抽出する。
【0096】
[ステップS125]領域分割部140は、5角形以上の面があったか否かを判断する。領域分割部140は、5角形以上の面があった場合、処理をステップS126に進める。また領域分割部140は、5角形以上の面がない場合、処理をステップS131に進める。
【0097】
[ステップS126]領域分割部140は、5角形以上の面から、角度が最大となる頂点を抽出し、v1とする。
[ステップS127]領域分割部140は、頂点v1から所定方向に3つ隣の頂点をv2とする。例えば領域分割部140は、頂点v1から反時計回りに3つ隣の頂点をv2とする。
【0098】
[ステップS128]領域分割部140は、ステップS127と同じ方向に頂点を辿り、頂点v2と頂点v1との間に挟まれる頂点が1個か、または2個以上あるかを判断する。領域分割部140は、頂点v2と頂点v1との間に挟まれる頂点が1個であれば、処理をステップS129に進める。また領域分割部140は、頂点v2と頂点v1との間に挟まれる頂点が2個以上ある場合、処理をステップS130に進める。
【0099】
[ステップS129]領域分割部140は、頂点v2に対してステップS127における頂点探索方向と逆方向に隣接する頂点と、頂点v2とを結ぶ外形エッジの中点を算出する。そして領域分割部140は、頂点v1と、算出した中点とを結ぶエッジを生成し、生成したエッジにより面の領域を分割する。その後、領域分割部140は処理をステップS124に進める。
【0100】
[ステップS130]領域分割部140は、頂点v1と頂点v2とを結ぶエッジを生成し、生成したエッジにより面の領域を分割する。その後、領域分割部140は処理をステップS124に進める。
【0101】
[ステップS131]領域分割部140は、領域分割部140は、未処理のサーフェースがあるか否かを判断する。例えば領域分割部140は、サーフェースデータ格納領域113内のエントリの上位から順にサーフェースデータを読み込んでいる場合、直前に読み込んだサーフェースデータが最後のエントリでなければ、未処理のサーフェースがあると判断する。また領域分割部140は、サーフェースデータ格納領域113内の最後にエントリされているサーフェースデータの処理が終了した場合、すべてのサーフェースの処理が完了したと判断する。
【0102】
領域分割部140は、未処理のサーフェースがある場合、処理をステップS121に進める。また領域分割部140は、すべてのサーフェースに対して処理が完了した場合、処理をステップS132に進める。
【0103】
[ステップS132]領域分割部140は、サーフェースの領域分割に合わせ、内部領域を分割する。その後、領域分割処理が終了する。
このようにして領域分割が行われる。なお領域分割は、大別すると、穴を有するサーフェースの分割、5角形以上のサーフェースの分割、および内部領域分割に分かれる。以下、それぞれの領域分割処理を詳細に説明する。
【0104】
まず、穴を有するサーフェースの領域分割処理について詳細に説明する。
図20は、穴を有するサーフェースの領域分割の一例を示す図である。領域分割部140は、解析対象物データ記憶部110から、ユーザ22が指定した解析対象物のサーフェースを抽出し、穴あきサーフェースかどうかを判断する。
【0105】
領域分割部140は、抽出したサーフェース40に穴41がある場合、穴形状を示す頂点それぞれから、最も近い外形のエッジへの垂線を生成する。そして領域分割部140は、生成した垂線を境界として、サーフェース40を分割する。その結果、複数のサーフェース42〜45に分割される。
【0106】
このとき領域分割部140は、分割して生成されたサーフェース42〜45において、生成した垂線が穴形状を示す直線のエッジの延長上にあり、その垂線と穴形状の直線とを含んでいる場合、それらを1つの直線にまとめる。例えば、サーフェース43では、穴形状の直線46の延長上に垂線47があるため、直線46と垂線47をまとめた1つの直線のエッジとする。
【0107】
次に、5角形以上のサーフェースの分割処理について説明する。例えば、図20の例では、サーフェース42が5角形である。そこで領域分割部140は、サーフェース42を抽出する。
【0108】
図21は、5角形以上のサーフェースの領域分割の一例を示す図である。領域分割部140は、5角形以上のサーフェースの頂点のうち、内角が最大の頂点を基準頂点v1とする。次に領域分割部140は、基準頂点v1から反時計回りに頂点を辿り、3つめの頂点v2を抽出する。
【0109】
領域分割部140は、抽出した頂点v2から、さらに反時計回りに頂点を辿り、頂点v2と基準頂点v1との間の頂点数を計数する。頂点v2と基準頂点V1との間に頂点が2つ以上あれば、例えば領域分割部140は、基準頂点v1と頂点v2とを結ぶ直線を生成し、その直線でサーフェースを分割する。他方、頂点v2と基準頂点v1との間に頂点が1個だけの場合、例えば領域分割部140は、頂点v2と、頂点v2から時計回りに隣接する頂点との間のエッジの中点に対し、基準頂点v1から直線を生成する。そして領域分割部140は、生成した直線でサーフェースを分割する。
【0110】
例えば図21に示すサーフェース42は、2つのサーフェース48,49に分割される。サーフェース40は、最終的に、5つのサーフェース43〜45,48,49に分割されている。
【0111】
このようにして、サーフェースが分割される。その後、内部領域の分割処理が行われる。例えば、領域分割部140は、Voronoi-Delaunay分割と呼ばれる処理で内部分割を行う。
【0112】
図22は、内部領域分割処理の一例を示す第1の図である。例えばN次元(Nは、2以上の整数)の空間に対して、領域Ωがある。
領域分割部140は、領域Ωの境界を分割する。この分割は、Nー1次元の分割である。例えば、領域Ωが2次元であれば、1次元(直線)を分割することとなる。図22の例では、4つの頂点51〜54を有する領域Ωに対し、頂点52と頂点53との間が分割され、新たな頂点55が生成されている。また頂点51と頂点54との間が分割され、新たな頂点56が生成されている。
【0113】
次に領域分割部140は、領域Ωの内部に、適当な点を設定する。図22の例では、2つの点57,58が設定されている。
図23は、内部領域分割処理の一例を示す第2の図である。領域分割部140は、距離関数dを用いて領域V(Pi)を作成する。領域V(Pi)は、以下の式(9)で定義される。
【0114】
【数3】

【0115】
ここでPは、N次元の領域(RN)に含まれる点である。i番目の頂点Piを含む領域V(Pi)には、i番目以外の頂点(j番目の頂点Pj)との間の距離よりも、i番目の頂点Piに近い点Pが含まれる。このような分割は、ボロノイ(Voronoi)分割と呼ばれる。ボロノイ分割は、空間上に複数の点があるとき、ある位置がどの点に最も近いかで領域を分割する分割方式である。ボロノイ分割で生成された領域の境界は、隣接する2つの領域それぞれの頂点を結ぶ線の垂直2等分線上に生成される。
【0116】
次に領域分割部140は、境界を共有している複数の領域それぞれの頂点間を、線分で接続する。なお隣接していない領域間では、頂点は接続されない。例えば頂点57であれば、頂点51,52,55,56,58に対して、線分で接続される。そして、領域分割部140は、頂点間を接続した線分によって領域を分割する。このような分割をドロネイ(Delaunay)三角形分割と呼ぶ。
【0117】
このように、Voronoi-Delaunay分割によって、領域内部を分割することができる。なお、図22、図23では二次元空間の領域分割の例を示しているが、三次元以上の空間であっても同様の処理を再帰的に行うことで分割できる。
【0118】
以上のように、解析対象物を予め複数の領域に分割した後、解析対象物の空間にメッシュが生成される。この際、例えば分割された領域ごとに異なる条件でメッシュを生成する。例えば、分割された領域ごとにメッシュサイズを再計算し、分割された領域毎に適切なメッシュサイズでメッシュを作成する場合もある。
【0119】
次に、品質が悪い要素の削除処理について詳細に説明する。
図24は、品質が悪い要素の削除処理の手順の一例を示すフローチャートである。以下、図24に示す処理をステップ番号に沿って説明する。
【0120】
[ステップS141]メッシュ修正部160は、要素の品質が悪い面の重心を計算する。面の重心は、その面の節点の座標を座標系ごとに平均した位置である。
[ステップS142]メッシュ修正部160は、品質が悪い面のすべての節点を、重心に移動する。そしてメッシュ修正部160は、重心に移動した複数の節点を統合し、1つの節点とする。
【0121】
[ステップS143]メッシュ修正部160は、メッシュデータ記憶部120内のメッシュデータを修正する。例えばメッシュ修正部160は、節点データ格納領域121に、品質が悪い面の重心に設定した新たな節点に関する節点データを登録する。またメッシュ修正部160は、節点データ格納領域121から、品質が悪い面のすべての節点の節点データを削除する。またメッシュ修正部160は、要素データ格納領域122に登録されている品質が悪い面の節点の節点番号を、その面の重心に設定した節点の節点番号に置き換える。またメッシュ修正部160は、品質の悪い面を削除したことにより、消滅する要素の要素データを、要素データ格納領域122から削除する。例えば4面体の要素では、その要素の1つの面が削除され、その面の3つの節点が面の重心に移動されると、線分に縮退する。このような要素は、要素データ格納領域122から削除される。また、例えば4面体の要素の4つの節点のうち、2つの節点が削除された面の重心に移動すると、その要素の節点が3つになり、平面しか形成できない。このような要素も、要素データ格納領域122から削除される。
【0122】
図25は、品質が悪い要素の削除処理の一例を示す図である。図25の例では、節点71〜79によって形成されているメッシュのうち、3つの節点71〜73で形成されているメッシュのアスペクト比が、閾値以上であるものとする(第1の状態)。この場合、メッシュ修正部160は、節点71〜73の重心80を算出する(第2の状態)。
【0123】
そしてメッシュ修正部160は、節点71を重心80に移動する。この際、節点71と接続されていた線は、重心80に接続される(第3の状態)。同様にメッシュ修正部160は、節点72,73を重心80に移動する(第4の状態)。
【0124】
このようにして、品質が悪い面が削除される。また品質が悪い面と2つの点を共有していた隣接面も削除される。例えば、第1の状態に示されている節点71,75,72で形成されている面も削除されている。品質が悪い面を削除することで、その面を有していた要素も削除される。品質の悪い要素が削除されることで、分割された領域の構造解析などの解析経線の収束性を向上できる。
【0125】
次に、歪みの大きい面の結合処理について説明する。
図26は、歪みの大きい面の結合処理の一例を示すフローチャートである。以下、図26に示す処理をステップ番号に沿って説明する。
【0126】
[ステップS151]メッシュ修正部160は、解析対象物をメッシュで分割して得られるすべての要素の各面の歪みを算出する。例えばメッシュ修正部160は、すべての面のヤコビアンを計算する。
【0127】
[ステップS152]メッシュ修正部160は、歪みの大きい未処理の面があるか否かを判断する。例えばメッシュ修正部160は、ヤコビアンが所定値の閾値以下の面があれば、その面は歪みの大きい面であると判断する。メッシュ修正部160は、歪みの大きい面であり、ステップS153〜S156の処理が未処理の面がある場合、処理をステップS153に進める。またメッシュ修正部160は、歪みの大きい未処理の面がなければ、処理を終了する。
【0128】
[ステップS153]メッシュ修正部160は、歪みの大きい面について、隣接する面と結合した場合の歪みを算出する。
[ステップS154]メッシュ修正部160は、歪みの大きい面を隣接する面と結合した場合の歪みが所定の閾値内か否かを判断する。例えばメッシュ修正部160は、歪みの大きい面に隣接する面のうち、結合した場合の歪みが最も小さくなる面を選択する。そしてメッシュ修正部160は、歪みが大きい面と選択した面とを結合した場合の歪みが、所定の閾値以内か否かを判断する。メッシュ修正部160は、歪みが所定の閾値内であれば、処理をステップS155に進める。またメッシュ修正部160は、歪みが所定の閾値内でなければ、処理をステップS152に進める。
【0129】
[ステップS155]メッシュ修正部160は、歪みの大きい面と、その面に隣接する面とを結合する。
[ステップS156]メッシュ修正部160は、面の結合結果に従って、メッシュデータを更新する。例えばメッシュ修正部160は、結合する2つの面で共有する節点の節点データを、メッシュデータ記憶部120内の節点データ格納領域121から削除する。またメッシュ修正部160は、要素データ格納領域122内の各要素データから、削除された節点データに対応する節点番号を削除する。その後、メッシュ修正部160は処理をステップS152に進める。
【0130】
図27は、歪みの大きい面の第1の結合例を示す図である。図27の例では、面91の歪みが、所定の閾値より大きいものとする。この場合、例えば面91と、面91に隣接する面92とが結合される。その結果、新たな面93が生成される。
【0131】
図28は、歪みの大きい面の第2の結合例を示す図である。図28の例では、解析対象物の楕円形のサーフェース94が、メッシュによって複数の面に分割されている。ここで、2つの面94a,94bについて、歪みが所定の閾値より大きいものとする。この場合、面94a,94bが、それぞれ隣接する面94c,94dと結合され、新たな面94e,94fが生成される。
【0132】
このとき、面が結合されたことにより、面94aと面94cとの間の節点が削除される。その結果、削除された節点を含んでいた面94g,94hの形状が変更される。面94gについては、削除された節点に代えて、削除された節点の隣にあった節点が追加されている。面94hについては、節点が削除されたことで、4角形から3角形に変更されている。同様に、面94bと面94dとが結合されたことにより、面94i,94jの形状も変更されている。
【0133】
以上のようにして、品質の良いメッシュを自動的に生成する。これにより、メッシュ作成時間を短縮できる。また、メッシュサイズの決定やメッシュの修正が自動で行われることで、メッシュ作成が容易となる。しかも、適切なメッシュサイズによりメッシュが生成され、品質の悪い要素については削除される。そのため、歪みの少ないメッシュのみが残される。その結果、解析計算の収束性が向上する。そして、解析計算の収束性が向上することにより、解析時間が短縮される。
【0134】
〔その他の実施の形態〕
第2の実施の形態では、品質の悪い面を有する要素を削除する際に、品質が悪い面の節点をその面の重心に移動したが、節点を3角形の面の内心または外心に移動してもよい。
【0135】
また第2の実施の形態では、メッシュの合否判定(図14のステップS105、S108)、品質が悪い要素の削除(図14のステップS110)などの処理を、2次元の面(3角形)を基準に行っているが、3次元の4面体を基準にして行うこともできる。
【0136】
境界メッシュの合否判定(図14のステップS105)を、要素(4面体)を基準にして行う場合、例えば領域の境界の面を有する要素の歪み(例えばアスペクト比またはヤコビアン)が所定の閾値以上か否かによって判定する。なお4面体の要素のアスペクト比は、その要素の最も長い辺と最も短い辺との比とする。
【0137】
境界の面を有する4面体の要素のうち、合否判定で不合格と判定された要素がある場合(図14のステップS105で不合格)、例えば図14のステップS106,S107の処理に替えて、以下の第1〜第3の処理を行う。
【0138】
[第1の処理]メッシュ修正部160は、境界線(1次元)に対するスムージングを行う。なお境界線とは、CAD形状のエッジ、または領域分割により生成された領域のエッジ上に設定された、隣接する節点間を接続して得られる線である。
【0139】
[第2の処理]メッシュ修正部160は、境界面(3角形)に対するスムージングを行う。なお境界面とは、CAD形状のサーフェース、または領域分割により生成された領域のサーフェース上に設定された、隣接する節点間を接続して得られる面である。
【0140】
なお境界線や境界面のスムージング方法としてはAveraging Methods、Optimization-Based Methods、Physically-Based Methods、Mid-node Placementなどの方法がある。
[第3の処理]メッシュ修正部160は、不合格と判定された、境界面が属する要素(4面体)を削除する。要素の削除は、その要素に含まれる境界面を構成する線のうちの、境界線の本数に応じて行われる。
・境界面(3角形)に境界線が1つ含まれる場合、該当する境界線の重心に、境界上にない節点を移動する。
・境界面(3角形)に境界線が2つ含まれる場合、削除処理を行わない。
・境界面(3角形)に境界線が含まれない場合、境界面の重心に、境界面の3つの節点を移動する。
【0141】
以上の第1〜第3の処理は、境界面を有する要素の歪み(例えばアスペクト比またはヤコビアン)の判定において、境界面を有するすべての要素が合格するまで繰り返される。
その後、内部メッシュの合否判定(図14のステップS108)において内部メッシュの合否判定が行われる。内部メッシュの合否判定も、3次元の4面体を基準にして行う。例えば境界面を有していない要素の歪み(例えばアスペクト比またはヤコビアン)が所定の閾値以上か否かによって判定する。
【0142】
内部の要素のうち、合否判定で不合格と判定された要素がある場合(図14のステップS108で不合格)、例えば図14のステップS109,S110の処理に替えて、以下の第4、第5の処理を行う。
【0143】
[第4の処理]メッシュ修正部160は、境界面を有していない要素のスムージングを行う。例えば、メッシュ修正部160は、境界面を有していない要素の面の形状が正3角形に近づくように、不合格と判定された要素の節点の位置を修正する。
【0144】
[第5の処理]メッシュ修正部160は、要素(4面体)の重心に、その要素の節点を移動する。
以上の第4、第5の処理は、境界面を有していない要素の歪み(例えばアスペクト比またはヤコビアン)の判定において、境界面を有していない要素が合格するまで繰り返される。
【0145】
このようにして、3次元の形状を基準とした合否安定や、品質の悪い要素の削除が行われる。
なお、上記の各実施の形態に示した処理機能は、コンピュータによって実現できる。その場合、サーバ100が有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておく。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD、DVD−RAM、CD−ROM/RWなどがある。光磁気記録媒体には、MO(Magneto-Optical disc)などがある。
【0146】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送する場合もある。
【0147】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行する場合もある。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行する。
【0148】
また、上記の処理機能の少なくとも一部を、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現する場合もある。
【0149】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
【0150】
以上の実施の形態に開示された技術には、以下の付記に示す技術が含まれる。
(付記1) コンピュータに、
解析対象物内に配置された複数の節点間を結ぶ線分によるメッシュを示すメッシュデータが記憶された記憶手段を参照し、該解析対象物を該メッシュによって分割して得られる複数の要素それぞれの品質を判断し、品質が所定値以下の要素を検出し、
検出された要素の形状を表す節点の位置に基づいて、該要素内の特定の一点の位置を計算し、
前記記憶手段の前記メッシュデータにおける、検出された要素の形状を表す節点のうちの複数の節点の位置を、前記特定の一点の位置に変更する、
処理を実行させることを特徴とするプログラム。
【0151】
(付記2) 前記複数の要素それぞれの品質の判断では、前記複数の要素それぞれの面の品質を判断し、品質が所定値以下の面を有する要素を検出し、
前記特定の一点の位置の計算では、検出された要素の品質が所定値以下の面の形状を表す節点の位置に基づいて、該面内の特定の一点の位置を計算し、
節点の位置の変更では、前記記憶手段の前記メッシュデータにおける、検出された要素の品質が所定値以下の面の形状を表す複数の節点の位置を、前記特定の一点の位置に変更する、
ことを特徴とする付記1記載のプログラム。
【0152】
(付記3) 前記特定の一点は、検出された要素の品質が所定値以下の面の重心であることを特徴とする付記2記載のプログラム。
(付記4) 前記メッシュによって生成されるすべての要素の形状が4面体であることを特徴とする付記1乃至3のいずれかに記載のプログラム。
【0153】
(付記5) 前記コンピュータに、さらに、
前記解析対象物の形状と、該解析対象物を該メッシュによって分割して得られる複数の要素で表される形状との誤差が、予め指定された許容誤差以下となるメッシュサイズを計算し、
生成される要素の辺の長さが前記メッシュサイズ以下となるメッシュデータを生成し、前記記憶手段に格納する、
処理を実行させることを特徴とする付記1乃至3のいずれかに記載のプログラム。
【0154】
(付記6) 前記コンピュータに、
扇形の面積と、該扇形の2本の半径と該扇形の弦とで囲まれた3角形の面積との誤差が、前記許容誤差となる該扇形の中心角を求め、該中心角を有し、かつ前記解析対象物の最も曲率が大きい面と同じ曲率の弧を有する扇形の該弧の長さをメッシュサイズとする、
処理を実行させることを特徴とする付記5記載のプログラム。
【0155】
(付記7) 前記コンピュータに、さらに、
前記解析対象物が穴のあいた面を有する場合、該穴の形状を示す頂点から該面の外周の辺へ垂線を下ろし、該垂線を境界として前記解析対象物を複数の領域に分割し、分割された領域ごとにメッシュデータを生成し、前記記憶手段に格納する、
処理を実行させることを特徴とする付記1乃至6のいずれかに記載のプログラム。
【0156】
(付記8) 前記コンピュータに、さらに、
前記解析対象物が5角形以上の面を有する場合、該面の内角が最大の頂点から、該面を複数の4角形に分割する線を生成し、該線を境界として前記解析対象物を複数の領域に分割し、分割された領域ごとにメッシュデータを生成し、前記記憶手段に格納する、
処理を実行させることを特徴とする付記1乃至7のいずれかに記載のプログラム。
【0157】
(付記9) 前記コンピュータに、
5角形以上の面の内角が最大の頂点から該面の辺に沿って所定方向に頂点を辿り、3つめの頂点を検出し、該頂点からさらに該所定方向に頂点を辿ったとき、該頂点と該内角が最大の頂点との間に挟まれる頂点が1つだけの場合、検出された3つめの頂点と、該頂点から該所定方向と逆方向に頂点を辿ったときの隣の頂点との間の辺上に新たな頂点を生成し、生成された該頂点と内角が最大の頂点とを結ぶ線分により、該面を複数の4角形に分割する、
処理を実行させることを特徴とする付記8記載のプログラム。
【0158】
(付記10) 面の品質は、該面の歪み具合で判断することを特徴とする付記1乃至9のいずれかに記載のプログラム。
(付記11) 解析対象物内に配置された複数の節点間を結ぶ線分によるメッシュを示すメッシュデータが記憶された記憶手段を参照し、該解析対象物を該メッシュによって分割して得られる複数の要素それぞれの品質を判断し、品質が所定値以下の要素を検出する検出手段と、
検出された要素の形状を表す節点の位置に基づいて、該要素内の特定の一点の位置を計算する計算手段と、
前記記憶手段の前記メッシュデータにおける、検出された要素の形状を表す節点のうちの複数の節点の位置を、前記特定の一点の位置に変更する変更手段と、
を有する情報処理装置。
【0159】
(付記12) コンピュータが、
解析対象物内に配置された複数の節点間を結ぶ線分によるメッシュを示すメッシュデータが記憶された記憶手段を参照し、該解析対象物を該メッシュによって分割して得られる複数の要素それぞれの品質を判断し、品質が所定値以下の要素を検出し、
検出された要素の形状を表す節点の位置に基づいて、該要素内の特定の一点の位置を計算し、
前記記憶手段の前記メッシュデータにおける、検出された要素の形状を表す節点のうちの複数の節点の位置を、前記特定の一点の位置に変更する、
ことを特徴とするメッシュ修正方法。
【符号の説明】
【0160】
1 記憶手段
1a メッシュデータ
2 検出手段
3 計算手段
4 変更手段
M 情報処理装置

【特許請求の範囲】
【請求項1】
コンピュータに、
解析対象物内に配置された複数の節点間を結ぶ線分によるメッシュを示すメッシュデータが記憶された記憶手段を参照し、該解析対象物を該メッシュによって分割して得られる複数の要素それぞれの品質を判断し、品質が所定値以下の要素を検出し、
検出された要素の形状を表す節点の位置に基づいて、該要素内の特定の一点の位置を計算し、
前記記憶手段の前記メッシュデータにおける、検出された要素の形状を表す節点のうちの複数の節点の位置を、前記特定の一点の位置に変更する、
処理を実行させることを特徴とするプログラム。
【請求項2】
前記複数の要素それぞれの品質の判断では、前記複数の要素それぞれの面の品質を判断し、品質が所定値以下の面を有する要素を検出し、
前記特定の一点の位置の計算では、検出された要素の品質が所定値以下の面の形状を表す節点の位置に基づいて、該面内の特定の一点の位置を計算し、
節点の位置の変更では、前記記憶手段の前記メッシュデータにおける、検出された要素の品質が所定値以下の面の形状を表す複数の節点の位置を、前記特定の一点の位置に変更する、
ことを特徴とする請求項1記載のプログラム。
【請求項3】
前記特定の一点は、検出された要素の品質が所定値以下の面の重心であることを特徴とする請求項2記載のプログラム。
【請求項4】
前記コンピュータに、さらに、
前記解析対象物の形状と、該解析対象物を該メッシュによって分割して得られる複数の要素で表される形状との誤差が、予め指定された許容誤差以下となるメッシュサイズを計算し、
生成される要素の辺の長さが前記メッシュサイズ以下となるメッシュデータを生成し、前記記憶手段に格納する、
処理を実行させることを特徴とする請求項1乃至3のいずれかに記載のプログラム。
【請求項5】
前記コンピュータに、
扇形の面積と、該扇形の2本の半径と該扇形の弦とで囲まれた3角形の面積との誤差が、前記許容誤差となる該扇形の中心角を求め、該中心角を有し、かつ前記解析対象物の最も曲率が大きい面と同じ曲率の弧を有する扇形の該弧の長さをメッシュサイズとする、
処理を実行させることを特徴とする請求項4記載のプログラム。
【請求項6】
前記コンピュータに、さらに、
前記解析対象物が穴のあいた面を有する場合、該穴の形状を示す頂点から該面の外周の辺へ垂線を下ろし、該垂線を境界として前記解析対象物を複数の領域に分割し、分割された領域ごとにメッシュデータを生成し、前記記憶手段に格納する、
処理を実行させることを特徴とする請求項1乃至5のいずれかに記載のプログラム。
【請求項7】
前記コンピュータに、さらに、
前記解析対象物が5角形以上の面を有する場合、該面の内角が最大の頂点から、該面を複数の4角形に分割する線を生成し、該線を境界として前記解析対象物を複数の領域に分割し、分割された領域ごとにメッシュデータを生成し、前記記憶手段に格納する、
処理を実行させることを特徴とする請求項1乃至6のいずれかに記載のプログラム。
【請求項8】
前記コンピュータに、
5角形以上の面の内角が最大の頂点から該面の辺に沿って所定方向に頂点を辿り、3つめの頂点を検出し、該頂点からさらに該所定方向に頂点を辿ったとき、該頂点と該内角が最大の頂点との間に挟まれる頂点が1つだけの場合、検出された3つめの頂点と、該頂点から該所定方向と逆方向に頂点を辿ったときの隣の頂点との間の辺上に新たな頂点を生成し、生成された該頂点と内角が最大の頂点とを結ぶ線分により、該面を複数の4角形に分割する、
処理を実行させることを特徴とする請求項7記載のプログラム。
【請求項9】
解析対象物内に配置された複数の節点間を結ぶ線分によるメッシュを示すメッシュデータが記憶された記憶手段を参照し、該解析対象物を該メッシュによって分割して得られる複数の要素それぞれの品質を判断し、品質が所定値以下の要素を検出する検出手段と、
検出された要素の形状を表す節点の位置に基づいて、該要素内の特定の一点の位置を計算する計算手段と、
前記記憶手段の前記メッシュデータにおける、検出された要素の形状を表す節点のうちの複数の節点の位置を、前記特定の一点の位置に変更する変更手段と、
を有する情報処理装置。
【請求項10】
コンピュータが、
解析対象物内に配置された複数の節点間を結ぶ線分によるメッシュを示すメッシュデータが記憶された記憶手段を参照し、該解析対象物を該メッシュによって分割して得られる複数の要素それぞれの品質を判断し、品質が所定値以下の要素を検出し、
検出された要素の形状を表す節点の位置に基づいて、該要素内の特定の一点の位置を計算し、
前記記憶手段の前記メッシュデータにおける、検出された要素の形状を表す節点のうちの複数の節点の位置を、前記特定の一点の位置に変更する、
ことを特徴とするメッシュ修正方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate


【公開番号】特開2013−50871(P2013−50871A)
【公開日】平成25年3月14日(2013.3.14)
【国際特許分類】
【出願番号】特願2011−188916(P2011−188916)
【出願日】平成23年8月31日(2011.8.31)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】