APREPRO関数
CUBITには、メッシング処理を支援するためのAPREPRO関数が多数追加されています。各関数の説明を以下のカテゴリごとに示します。
表1:ジオメトリ関数
| 構文 | 説明 |
| BBox_XMin("type", id) | 指定したジオメトリエンティティのバウンディングボックスのxmin値を返します。「type」には「volume」「surface」「curve」「vertex」「group」を指定できます。「volume」「surface」「curve」「vertex」の場合は指定IDのエンティティのバウンディングボックスを計算します。「group」の場合はグループ全体をまとめたバウンディングボックスを計算します。グループには任意のジオメトリタイプ(vol、surf、curve、vert)を含めることができ、異なるタイプを混在させることもできます。 |
| BBox_XMax("type", id) | 指定したジオメトリエンティティのバウンディングボックスのxmax値を返します。「type」には「volume」「surface」「curve」「vertex」「group」を指定できます。「volume」「surface」「curve」「vertex」の場合は指定IDのエンティティのバウンディングボックスを計算します。「group」の場合はグループ全体をまとめたバウンディングボックスを計算します。グループには任意のジオメトリタイプ(vol、surf、curve、vert)を含めることができ、異なるタイプを混在させることもできます。 |
| BBox_YMin("type", id) | 指定したジオメトリエンティティのバウンディングボックスのymin値を返します。「type」には「volume」「surface」「curve」「vertex」「group」を指定できます。「volume」「surface」「curve」「vertex」の場合は指定IDのエンティティのバウンディングボックスを計算します。「group」の場合はグループ全体をまとめたバウンディングボックスを計算します。グループには任意のジオメトリタイプ(vol、surf、curve、vert)を含めることができ、異なるタイプを混在させることもできます。 |
| BBox_YMax("type", id) | 指定したジオメトリエンティティのバウンディングボックスのymax値を返します。「type」には「volume」「surface」「curve」「vertex」「group」を指定できます。「volume」「surface」「curve」「vertex」の場合は指定IDのエンティティのバウンディングボックスを計算します。「group」の場合はグループ全体をまとめたバウンディングボックスを計算します。グループには任意のジオメトリタイプ(vol、surf、curve、vert)を含めることができ、異なるタイプを混在させることもできます。 |
| BBox_ZMin("type", id) | 指定したジオメトリエンティティのバウンディングボックスのzmin値を返します。「type」には「volume」「surface」「curve」「vertex」「group」を指定できます。「volume」「surface」「curve」「vertex」の場合は指定IDのエンティティのバウンディングボックスを計算します。「group」の場合はグループ全体をまとめたバウンディングボックスを計算します。グループには任意のジオメトリタイプ(vol、surf、curve、vert)を含めることができ、異なるタイプを混在させることもできます。 |
| BBox_ZMax("type", id) | 指定したジオメトリエンティティのバウンディングボックスのzmax値を返します。「type」には「volume」「surface」「curve」「vertex」「group」を指定できます。「volume」「surface」「curve」「vertex」の場合は指定IDのエンティティのバウンディングボックスを計算します。「group」の場合はグループ全体をまとめたバウンディングボックスを計算します。グループには任意のジオメトリタイプ(vol、surf、curve、vert)を含めることができ、異なるタイプを混在させることもできます。 |
| GeomCentroid_X("type", id) | 指定したジオメトリエンティティの重心のx座標を返します。「type」には「volume」または「group」を指定できます。「volume」の場合は指定IDの単一Volumeの重心を計算します。「group」の場合はVolumeのグループである必要があり、指定IDのグループ全体の重心を計算します。 |
| GeomCentroid_Y("type", id) | 指定したジオメトリエンティティの重心のy座標を返します。「type」には「volume」または「group」を指定できます。「volume」の場合は指定IDの単一Volumeの重心を計算します。「group」の場合はVolumeのグループである必要があり、指定IDのグループ全体の重心を計算します。 |
| GeomCentroid_Z("type", id) | 指定したジオメトリエンティティの重心のz座標を返します。「type」には「volume」または「group」を指定できます。「volume」の場合は指定IDの単一Volumeの重心を計算します。「group」の場合はVolumeのグループである必要があり、指定IDのグループ全体の重心を計算します。 |
| Length(id) | 指定IDのCurveの長さを返します。 |
| Length(x, y, z, ord) | 指定した中心点座標とordinal値で識別されるCurveの長さを返します。 |
| NumCurves() | モデル内のCurve数を返します。 |
| NumSurfaces() | モデル内のSurface数を返します。 |
| NumVertices() | モデル内のVertex数を返します。 |
| NumVolumes() | モデル内のVolume数を返します。 |
| Radius(id) | Curveの中点における半径を返します。 |
| Radius(x, y, z, ord) | 指定した中心点座標とordinal値で識別されるCurveの半径を返します。 |
| SurfaceArea(id) | 指定IDのSurfaceの面積を返します。 |
| SurfaceArea(x, y, z, ord) | 指定した中心点座標とordinal値で識別されるSurfaceの面積を返します。 |
| Type("entity name") | 指定したエンティティ名のタイプを返します。 |
| Volume(id) | 指定IDのVolumeのジオメトリ体積を取得します。 |
| Volume(x, y, z, ord) | 指定した中心点座標とordinal値で識別されるVolumeのジオメトリ体積を取得します。 |
| Vx(id), Vy(id), Vz(id) | 指定IDのVertexのx、y、またはz座標を取得します。 |
| Vx(x, y, z, ord) Vy(x, y, z, ord) Vz(x, y, z, ord) | 指定した中心点座標とordinal値で識別されるVertexのx、y、またはz座標を取得します。 |
| VertexAt(x, y, z, ordinal) | IDレス参照 x,y,z,ordinal で指定したVertexのIDを返します。 |
| CurveAt(x, y, z, ordinal) | IDレス参照 x,y,z,ordinal で指定したCurveのIDを返します。 |
| SurfaceAt(x, y, z, ordinal) | IDレス参照 x,y,z,ordinal で指定したSurfaceのIDを返します。 |
| VolumeAt(x, y, z, ordinal) | IDレス参照 x,y,z,ordinal で指定したVolumeのIDを返します。 |
表2:メッシュ関数
| 構文 | 説明 |
| EdgeLength(id) | 指定IDのEdgeの長さを返します。 |
| EdgeLength(x, y, z, ord) | 指定した中心点座標とordinal値で識別されるEdgeの長さを返します。 |
| FaceArea(id) | 指定IDのFaceの面積を返します。 |
| FaceArea(x, y, z, ord) | 指定した中心点座標とordinal値で識別されるFaceの面積を返します。 |
| HexVolume(id) | 指定IDのHexの体積を返します。 |
| HexVolume(x, y, z, ord) | 指定した中心点座標とordinal値で識別されるHexの体積を返します。 |
| IntNum(id) | 指定IDのCurveのインターバル数を返します。 |
| IntNum(x, y, z, ord) | 指定した中心点座標とordinal値で識別されるCurveのインターバル数を返します。 |
| IntSize(id) | 指定IDのCurveのインターバルサイズを返します。 |
| IntSize(x, y, z, ord) | 指定した中心点座標とordinal値で識別されるCurveのインターバルサイズを返します。 |
| MeshCentroid_X("type", id) | 指定したメッシュエンティティの重心のx座標を返します。「type」には「volume」「block」「group」を指定できます。「volume」の場合は指定IDのVolume内の3D要素の重心を計算します。「block」の場合は指定IDのBlock内の要素の重心を計算します。「group」の場合はVolumeのグループである必要があり、指定IDのGroupの重心を計算します。 |
| MeshCentroid_Y("type", id) | 指定したメッシュエンティティの重心のy座標を返します。「type」には「volume」「block」「group」を指定できます。「volume」の場合は指定IDのVolume内の3D要素の重心を計算します。「block」の場合は指定IDのBlock内の要素の重心を計算します。「group」の場合はVolumeのグループである必要があり、指定IDのGroupの重心を計算します。 |
| MeshCentroid_Z("type", id) | 指定したメッシュエンティティの重心のz座標を返します。「type」には「volume」「block」「group」を指定できます。「volume」の場合は指定IDのVolume内の3D要素の重心を計算します。「block」の場合は指定IDのBlock内の要素の重心を計算します。「group」の場合はVolumeのグループである必要があり、指定IDのGroupの重心を計算します。 |
| MeshLength(id) | 指定IDのメッシュ済みCurveの長さを取得します。 |
| MeshLength(x, y, z, ord) | 指定した中心点座標とordinal値で識別されるメッシュ済みCurveの長さを取得します。 |
| MeshSurfaceArea(id) | 指定IDのSurface上にあるすべてのTri要素またはQuad要素の合計面積を返します。メッシュは線形メッシュEdgeで境界を近似するため、この値はジオメトリSurfaceの面積とは異なる場合があります。 |
| MeshSurfaceArea(x, y, z, ord) | 指定した中心点座標とordinal値で識別されるSurface上にあるすべてのTri要素またはQuad要素の合計面積を返します。メッシュは線形メッシュEdgeで境界を近似するため、この値はジオメトリSurfaceの面積とは異なる場合があります。 |
| MeshVolume(id) | 指定IDのVolume内にあるすべてのメッシュ要素の合計体積を返します。メッシュは曲面境界を線形メッシュEdgeで近似するため、この値は実際のジオメトリ体積とは異なる場合があります。 |
| MeshVolume(x, y, z, ord) | 指定した中心点座標とordinal値で識別されるVolume内にあるすべてのメッシュ要素の合計体積を返します。メッシュは曲面境界を線形メッシュEdgeで近似するため、この値は実際のジオメトリ体積とは異なる場合があります。 |
| MinSurfaceMeshQuality(id, "metric") |
指定したSurface上の全要素について、指定した要素品質メトリクスの最悪値を返します。
利用できるメトリクス: |
| MinSurfaceMeshQuality(x, y, z, ord, "metric") |
指定した中心点座標とordinal値で識別されるSurface上の全要素について、指定した要素品質メトリクスの最悪値を返します。
利用できるメトリクス: |
| MinVolumeMeshQuality(id, "metric") |
指定IDのVolume内の全要素について、指定した要素品質メトリクスの最悪値を返します。
利用できるメトリクス: |
| MinVolumeMeshQuality(x, y, z, ord, "metric") | 指定した中心点座標とordinal値で識別されるVolume内の全要素について、指定した要素品質メトリクスの最悪値を返します。 利用できるメトリクス: shape aspect ration bet aspect ratio gam aspect ratio condition no diagonal ratio dimension distortion element volume jacobian mass increase ratio mean ratio inradius node distance normalized inradius relative size scaled jacobian shape and size shear and size shear skew stretch taper timestep |
| NumEdgesOnCurve(id) | 指定IDのCurve上にあるEdge数を返します。 |
| NumEdgesOnCurve(x, y, z, ord) | 指定した中心点座標とordinal値で識別されるCurve上にあるEdge数を返します。 |
| NumElemsOnSurface(id) | 指定IDのSurface上にある要素数を返します。 |
| NumElemsOnSurface(x, y, z, ord) | 指定した中心点座標とordinal値で識別されるSurface上にある要素数を返します。 |
| NumElemsInVolume(id) | 指定IDのVolume内にある要素数を返します。 |
| NumElemsInVolume(x, y, z, ord) | 指定した中心点座標とordinal値で識別されるVolume内にある要素数を返します。 |
| Nx(id), Ny(id), Nz(id) | 指定IDのNodeのx、y、またはz座標を取得します。 |
| Nx(x, y, z, ord) Ny(x, y, z, ord) Nz(x, y, z, ord) | 指定した中心点座標とordinal値で識別されるNodeのx、y、またはz座標を取得します。 |
| TetVolume(id) | 指定IDのTetの体積を返します。 |
| TetVolume(x, y, z, ord) | 指定した中心点座標とordinal値で識別されるTetの体積を返します。 |
| TriArea(id) | 指定IDのTriの面積を返します。 |
| TriArea(x, y, z, ord) | 指定した中心点座標とordinal値で識別されるTriの面積を返します。 |
表3:Group、Block、Assemblyのメタデータ関数
| 構文 | 説明 |
| BlockAttributeName(id, index) |
指定IDのBlock内で、指定した属性インデックスに対応する名前を返します。 |
| BlockAttributeValue(id, index) |
指定IDのBlock内で、指定した属性インデックスに対応する値を返します。 |
| NumBlocks() |
モデル内のBlock数を返します。 |
| NumSidesets() |
モデル内のSideSet数を返します。 |
| NumNodesets() |
モデル内のNodeSet数を返します。 |
| NumInGrp("groupname") | 指定したGroup内のエンティティ数を返します。 |
| NumTypeInGroup("group_name", "entity_type") | Group「group_name」内にある「entity_type」の数を返します。 |
| NumVolsInPart("part_name") | 指定した名前のPartに割り当てられているVolume数を返します。 |
| PartInVol(id) | Volumeが割り当てられているPartの名前とインスタンス番号を返します。 |
表4:ID関数
| 構文 | 説明 |
| CurveAt(x, y, z, ordinal) | IDレス参照 x,y,z,ordinal で指定したCurveのIDを返します。 |
| EdgeAt(x, y, z, ordinal) | IDレス参照 x,y,z,ordinal で指定したEdgeのIDを返します。 |
| FaceAt(x, y, z, ordinal) | IDレス参照 x,y,z,ordinal で指定したQuad FaceのIDを返します。 |
| GroupMemberId("group_name", "entity_type", index) | Group「group_name」内の指定インデックスにある「entity_type」のIDを返します。Groupに複数のエンティティタイプが含まれる場合、インデックスは指定したエンティティタイプに対してのみ適用され、そのタイプだけがGroupに含まれている場合と同様に扱われます。 |
| HexAt(x, y, z, ordinal) | IDレス参照 x,y,z,ordinal で指定したHex要素のIDを返します。 |
| Id("type") | 指定したタイプで直近に作成されたエンティティのIDを返します。指定可能なタイプは「body」「volume」「surface」「curve」「vertex」「group」「node」「edge」「quad」「face」「tri」「hex」「tet」「pyramid」です。 |
| NodeAt(x, y, z) | xyz位置に最も近いNodeのIDを返します。 |
| NodeAt(x, y, z, ordinal) | IDレス参照 x,y,z,ordinal で指定したNodeのIDを返します。 |
| PyramidAt(x, y, z, ordinal) | IDレス参照 x,y,z,ordinal で指定したPyramid要素のIDを返します。 |
| SurfaceAt(x, y, z, ordinal) | IDレス参照 x,y,z,ordinal で指定したSurfaceのIDを返します。 |
| TetAt(x, y, z, ordinal) | IDレス参照 x,y,z,ordinal で指定したTet要素のIDを返します。 |
| TriAt(x, y, z, ordinal) | IDレス参照 x,y,z,ordinal で指定したTriのIDを返します。 |
| VertexAt(x, y, z, ordinal) | IDレス参照 x,y,z,ordinal で指定したVertexのIDを返します。 |
| VolumeAt(x, y, z, ordinal) | IDレス参照 x,y,z,ordinal で指定したVolumeのIDを返します。 |
| WedgeAt(x, y, z, ordinal) | IDレス参照 x,y,z,ordinal で指定したWedge要素のIDを返します。 |
表5:その他の関数
|
構文 |
説明 |
| FileExists("file name") | 指定したファイルが存在するか確認します。存在する場合は0以外を返します。 |
| GeometryEngineVersion("engine name") | 指定したジオメトリエンジンのバージョンを取得します。 |
| get_error_count() | CUBITの現在のエラー数を返します。 |
| get_warning_count() | CUBITの現在の警告数を返します。 |
| HasFeature("feature name") | 指定した機能が利用可能か確認します。機能が有効な場合は0以外を返します。 |
| Print(msg) | msgを出力します。 |
| PrintError(svar) | 文字列 svar を標準エラー出力(stderr)へ出力します。 |
| Quote(svar) | 文字列 svarをシングルクォートで囲んで返します。 |
| SessionId() | 現在のCUBITセッションの一意なIDを返します。 |
| GetMachineType() | Cubitを実行しているプラットフォーム名を文字列で返します(「Linux」「Darwin」「Microsoft Windows」など)。 |
| set_error_count(val) | CUBITのエラー数をvalに設定します。 |
| set_warning_count(val) | CUBITの警告数をvalに設定します。 |
| TimerStart() | CPUタイマーを開始します。 |
| TimerStop() | CPUタイマーを停止します。 |
表6:定義済み変数
CUBITでは次のAPREPRO変数があらかじめ定義されています。
|
変数 |
説明 |
| CUBIT | CUBITが定義されていることを示す変数 |
| CUBIT_VERSION | CUBITの現在のバージョン( VERSIONはAPREPROの現在のバージョンを保持するため、混同しないでください) |