クラス CBlock
- java.lang.Object
-
- CBlock
-
public class CBlock extends java.lang.Object
spider3アルゴリズムの中心クラス
2021.06.18 multi grading block 対応
2021.06.06 CBlock2 をCBlockに変更した。
BlockMeshDictからBlockMeshDictWithHornからBlockMeshDictHornExtended
-->
BlockMeshDict からBlockMeshDictHornExtended
へ変更 マージをしたくないのが理由。
p7(0,20) z= 20
+-------------+
| |p6(80,20)
| |
| |
| |
| |
|p4(0,-20) |p5(80,-20)
+-------------+
p3(0,20) z= -20
+-------------+
| |p2(80,20)
| |
| |
| |
| |
|p0(0,-20) |p1(80,-20)
+-------------+- 作成者:
- ohno
-
-
フィールドの概要
フィールド 修飾子とタイプ フィールド 説明 (package private) CBlockMeshDict
blockMeshDictIn
blockMeshDictInへのポインタprivate int
divED
新ブロックを生成するのに必要な、共通(すべての方向のブロックを生成するのに必要な)パラメータ
拡大方向の分割数private int
divX
分割数 boundaryを出力するときに使う、 divXprivate int
divY
分割数 boundaryを出力するときに使う、 divYprivate int
divZ
分割数 boundaryを出力するときに使う、 divZ(package private) static java.util.ArrayList<CFace>
F
static マージするface pairを見つけるためのフェースリスト(package private) static java.util.ArrayList<org.apache.commons.math3.linear.RealVector>
P
static ブロックの点(vertices )情報private int[]
pidx
points index vertices上での配列順序が入る。private double
spreadLengthBottomX
BottomX方向の伸びしろprivate double
spreadLengthBottomY
BottomY方向の伸びしろprivate double
spreadLengthBottomZ
BottomZ方向の伸びしろprivate double
spreadLengthTopX
TopX方向の伸びしろprivate double
spreadLengthTopY
TopY方向の伸びしろprivate double
spreadLengthTopZ
TopZ方向の伸びしろ(package private) BLK
type
BlockType CENTER XBTM YBTM ZBTM XTOP YTOP ZTOPprivate CBlock
xBottomBlock
xBottom方向へのブロックprivate CBlock
xTopBlock
xTop方向へのブロックprivate CBlock
yBottomBlock
yBottom方向へのブロックprivate CBlock
yTopBlock
yTop方向へのブロックprivate CBlock
zBottomBlock
zBottom方向へのブロックprivate CBlock
zTopBlock
zTop方向へのブロック
-
コンストラクタの概要
コンストラクタ コンストラクタ 説明 CBlock(BLK type, org.apache.commons.math3.linear.RealVector[] p, int[] pidx, double spreadLengthTopX, double spreadLengthTopY, double spreadLengthTopZ, double spreadLengthBottomX, double spreadLengthBottomY, double spreadLengthBottomZ, int divX, int divY, int divZ, int divED, CBlockMeshDict blockMeshDictIn)
p7-- p6
/ /
p4--p5
| p3--p2
| / /
p0--p1
-
メソッドの概要
すべてのメソッド インスタンス・メソッド concreteメソッド 修飾子とタイプ メソッド 説明 (package private) void
allHortsBlockInfoWrite(CBlockMeshDict blockMeshDict, java.lang.String multiSG, java.lang.String multiSGReverse, boolean isEmpty)
AllHorts BlockInfo copy to BlockMeshDictOut(package private) void
allHortsBlockInfoWrite(java.io.PrintWriter writefile, java.lang.String multiSG, java.lang.String multiSGReverse)
AllHorts BlockInfo Write(package private) void
allHortsVerticesWrite(java.io.PrintWriter writefile)
AllHorts Vertices Write(package private) void
blockInfoWrite(CBlockMeshDict blockMeshDict, java.lang.String multiSG, java.lang.String multiSGReverse, boolean isEmpty)
ブロック情報のblockMeshDictOutへの引き渡し 2021.09.20
CBlockMeshDict.isEmpty=falseの場合は、Centerのブロック情報は引き渡さない。(package private) void
blockInfoWrite(java.io.PrintWriter writefile, java.lang.String multiSG, java.lang.String multiSGReverse)
ブロック情報の書き込み 2021.06.18 変更 multigrading対応
hex (0 1 2 3 4 5 6 7) (80 40 15) simpleGrading (1 1 1) // CENTER or XBTM or
YBTM or ZBTM or XTOP or YTOP or ZTOPprivate boolean
ckOnXYRect(org.apache.commons.math3.linear.RealVector p0, org.apache.commons.math3.linear.RealVector p1, org.apache.commons.math3.linear.RealVector p2, org.apache.commons.math3.linear.RealVector p3)
データチェック
p0 ->p1 ->p2 ->p3 ->p0 が x-y 平面上にあるか?private org.apache.commons.math3.linear.RealVector
copyPoint(org.apache.commons.math3.linear.RealVector p, int i0, int sig)
private void
dataCheck(java.util.ArrayList<org.apache.commons.math3.linear.RealVector> P)
使用しない。private int
expansionAndAddP(org.apache.commons.math3.linear.RealVector p)
点の拡張、CBlock.pへの追加private CBlock
generateBlock(int xyz, int updown, java.lang.String blockPidx)
Block の生成
spider3全体でのコア処理private CBlock
generateXBottomBlock()
x-bottom block generate this.spreadLengthBottomX== 0のときは作成しない。private CBlock
generateXTopBlock()
x-top block generate this.spreadLengthTopX== 0のときは作成しない。private CBlock
generateYBottomBlock()
y-bottom block generate this.spreadLengthBottomY== 0のときは作成しない。private CBlock
generateYTopBlock()
y-top block generate this.spreadLengthTopY== 0のときは作成しない。private CBlock
generateZBottomBlock()
z-bottom block generate this.spreadLengthBottomZ== 0のときは作成しない。private CBlock
generateZTopBlock()
z-up block generate this.spreadLengthTopZ== 0のときは作成しない。(package private) java.util.ArrayList<CFace>
getBoundary()
F 内 のboundary を抽出
1.CFace のfrom == to をかえす。private boolean
isCheckOnZ(org.apache.commons.math3.linear.RealVector p, org.apache.commons.math3.linear.RealVector q)
データチェック on Z-Line
p.x = q.x , p.y = q.y(package private) void
mkAllHornBlocksFace()
All Horn Blocks Make Faces Centerブロックのみ。private void
mkFace()
Faceの作成
点インデックスのみ格納、 法線は内部から外部へ、右ねじで格納
z
^ y
| p7 /---p6|
/ /
p4- -/--p5 |
/
| p3----p2 |
/ /
p0---p1---->x(package private) void
mkHornBlock()
mkHornBlock 角ブロックの生成private void
mkXBTMFace()
BTMFaceのCBlock.Fへの登録private void
mkXTopFace()
private void
mkYBTMFace()
private void
mkYTopFace()
private void
mkZBTMFace()
private void
mkZTopFace()
private org.apache.commons.math3.linear.RealVector
nonlinearExpansionAndAddP(org.apache.commons.math3.linear.RealVector p, int i0, int sig)
(package private) void
print()
ブロックのデータ印字(package private) void
printBoundary(java.io.PrintWriter writefile)
print boundary F 内 fromType == toType をboundary として、印刷
-
-
-
フィールドの詳細
-
type
BLK type
BlockType CENTER XBTM YBTM ZBTM XTOP YTOP ZTOP
-
blockMeshDictIn
CBlockMeshDict blockMeshDictIn
blockMeshDictInへのポインタ
-
P
static java.util.ArrayList<org.apache.commons.math3.linear.RealVector> P
static ブロックの点(vertices )情報
-
F
static java.util.ArrayList<CFace> F
static マージするface pairを見つけるためのフェースリスト
-
pidx
private int[] pidx
points index vertices上での配列順序が入る。
-
divX
private int divX
分割数 boundaryを出力するときに使う、 divX
-
divY
private int divY
分割数 boundaryを出力するときに使う、 divY
-
divZ
private int divZ
分割数 boundaryを出力するときに使う、 divZ
-
divED
private int divED
新ブロックを生成するのに必要な、共通(すべての方向のブロックを生成するのに必要な)パラメータ
拡大方向の分割数
-
spreadLengthTopX
private double spreadLengthTopX
TopX方向の伸びしろ
-
spreadLengthTopY
private double spreadLengthTopY
TopY方向の伸びしろ
-
spreadLengthTopZ
private double spreadLengthTopZ
TopZ方向の伸びしろ
-
spreadLengthBottomX
private double spreadLengthBottomX
BottomX方向の伸びしろ
-
spreadLengthBottomY
private double spreadLengthBottomY
BottomY方向の伸びしろ
-
spreadLengthBottomZ
private double spreadLengthBottomZ
BottomZ方向の伸びしろ
-
xBottomBlock
private CBlock xBottomBlock
xBottom方向へのブロック
-
yBottomBlock
private CBlock yBottomBlock
yBottom方向へのブロック
-
zBottomBlock
private CBlock zBottomBlock
zBottom方向へのブロック
-
xTopBlock
private CBlock xTopBlock
xTop方向へのブロック
-
yTopBlock
private CBlock yTopBlock
yTop方向へのブロック
-
zTopBlock
private CBlock zTopBlock
zTop方向へのブロック
-
-
コンストラクタの詳細
-
CBlock
public CBlock(BLK type, org.apache.commons.math3.linear.RealVector[] p, int[] pidx, double spreadLengthTopX, double spreadLengthTopY, double spreadLengthTopZ, double spreadLengthBottomX, double spreadLengthBottomY, double spreadLengthBottomZ, int divX, int divY, int divZ, int divED, CBlockMeshDict blockMeshDictIn)
p7-- p6
/ /
p4--p5
| p3--p2
| / /
p0--p1- パラメータ:
type
- ブロクタイプ BLK = CENTER XBTM XTOP ...p
- type==CENTERのときにのみ CBlock.Pの初期設定に必要 その後は、Pで点の管理をする。pidx
- 使用するverticesのindexspreadLengthTopX
- TopX方向の伸びしろspreadLengthTopY
- TopYspreadLengthTopZ
- TopZspreadLengthBottomX
- BottomXspreadLengthBottomY
- BottomYspreadLengthBottomZ
- BottomZdivX
- X方向の分割数divY
- Y方向divZ
- Z方向divED
- 拡張方向への分割数blockMeshDictIn
- blockMeshDictInへのポインタ
-
-
メソッドの詳細
-
mkHornBlock
void mkHornBlock()
mkHornBlock 角ブロックの生成
-
dataCheck
private void dataCheck(java.util.ArrayList<org.apache.commons.math3.linear.RealVector> P)
使用しない。- パラメータ:
P
- RealVector 配列
-
ckOnXYRect
private boolean ckOnXYRect(org.apache.commons.math3.linear.RealVector p0, org.apache.commons.math3.linear.RealVector p1, org.apache.commons.math3.linear.RealVector p2, org.apache.commons.math3.linear.RealVector p3)
データチェック
p0 ->p1 ->p2 ->p3 ->p0 が x-y 平面上にあるか?- パラメータ:
p0
- 点0p1
- 点1p2
- 点2p3
- 点3- 戻り値:
- X-Y平面上にある場合はtrue
-
isCheckOnZ
private boolean isCheckOnZ(org.apache.commons.math3.linear.RealVector p, org.apache.commons.math3.linear.RealVector q)
データチェック on Z-Line
p.x = q.x , p.y = q.y- パラメータ:
p
- 点pq
- 点q- 戻り値:
- Z-line上にある場合はtrue
-
generateBlock
private CBlock generateBlock(int xyz, int updown, java.lang.String blockPidx)
Block の生成
spider3全体でのコア処理- パラメータ:
xyz
- = 0 :x 1 :y 2 :zupdown
- = -1 down 1 upblockPidx
- (q0 p0 p3 q3 q4 p4 p7 q7) etc.- 戻り値:
- xyz updown方向へのブロック生成
-
generateXBottomBlock
private CBlock generateXBottomBlock()
x-bottom block generate this.spreadLengthBottomX== 0のときは作成しない。
step1 generate points (q0 q3 q4 q5) すでに点が作成されていれば、それを用いる。
step2 generate block (q0 p0 p3 q3 q4 p4 p7 q7)
q7------p7 p6
q4-----p4 p5
q3------p3 p2
q0-----p0 p1
--------------------------------------->X- 戻り値:
- XBottomBlock
-
generateYBottomBlock
private CBlock generateYBottomBlock()
y-bottom block generate this.spreadLengthBottomY== 0のときは作成しない。 step1 generate
points (q0 q1 q4 q5) step2 generate block (q0 q1 p1 p0 q4 q5 p5 p4)
p7 p6
p4 y p5
/ / /
/ /p3 / p2
q4 /p0 q5 p1
-------------/------------>x
/ /
q0 q1- 戻り値:
- YBottomBlock
-
generateZBottomBlock
private CBlock generateZBottomBlock()
z-bottom block generate this.spreadLengthBottomZ== 0のときは作成しない。 step1 generate
points (q0 q1 q2 q3) step2 generate block (q0 q1 q2 q3 p0 p1 p2 p3)
p7 p6
p4 p5
p3 p2 |
p0 | p1| |
| | | | |
| q3 | q2 v
q0 q1 z- 戻り値:
- ZBottomBlock
-
generateXTopBlock
private CBlock generateXTopBlock()
x-top block generate this.spreadLengthTopX== 0のときは作成しない。 step1 generate
points (q1 q2 q5 q6) step2 generate block (p1 q1 q2 p2 p5 q5 q6 p6)
p7 p6------q6
p4 p5----q5
p3 p2-------q2
p0 p1-----q1
--------------------------------------->X- 戻り値:
- XTopBlock
-
generateYTopBlock
private CBlock generateYTopBlock()
y-top block generate this.spreadLengthTopY== 0のときは作成しない。 step1 generate
points (q3 q2 q6 q7) step2 generate block (p3 p2 q2 q3 p7 p6 q6 q7)
q7 q6
/ /
p7 p6
p4 p5
q3 q2
/ /
p3 p2
p0 p1
-------------------------> x- 戻り値:
- YTopBlock
-
generateZTopBlock
private CBlock generateZTopBlock()
z-up block generate this.spreadLengthTopZ== 0のときは作成しない。 step1 generate points
(q4 q5 q6 q7) step2 generate block (p4 p5 p6 p7 q4 q5 q6 q7)
q7 q6
q4 | q5 |
| | | |
| p7 | p6|
p4 p5
p3 p2
p0 p1- 戻り値:
- ZTopBlock
-
expansionAndAddP
private int expansionAndAddP(org.apache.commons.math3.linear.RealVector p)
点の拡張、CBlock.pへの追加- パラメータ:
p
- 拡張前の点- 戻り値:
- CBlock.Pに拡張点がすでにある場合はそのインデックスを戻す。ない場合は登録をして、そのインデックスを返す。
-
copyPoint
private org.apache.commons.math3.linear.RealVector copyPoint(org.apache.commons.math3.linear.RealVector p, int i0, int sig)
- パラメータ:
p
- コピー元 コア領域の頂点i0
- 0 x-方向にコピー 1:y-方向にコピー 2:z-方向にコピーsig
- -1 マイナス方向 +1 プラス方向- 戻り値:
- コピーした点 指定方向へ指定した座標のみ伸びしろを追加
-
nonlinearExpansionAndAddP
private org.apache.commons.math3.linear.RealVector nonlinearExpansionAndAddP(org.apache.commons.math3.linear.RealVector p, int i0, int sig)
- パラメータ:
p
- コピー元 コア領域の頂点i0
- 0 x-Top/Bottom 1:y-Top/Bottom 2:z-Top/Bottomsig
- -1 Bottom +1 Top- 戻り値:
- コピーした点 対応する拡張点
-
allHortsVerticesWrite
void allHortsVerticesWrite(java.io.PrintWriter writefile)
AllHorts Vertices Write- パラメータ:
writefile
- PrintWriter
-
blockInfoWrite
void blockInfoWrite(java.io.PrintWriter writefile, java.lang.String multiSG, java.lang.String multiSGReverse)
ブロック情報の書き込み 2021.06.18 変更 multigrading対応
hex (0 1 2 3 4 5 6 7) (80 40 15) simpleGrading (1 1 1) // CENTER or XBTM or
YBTM or ZBTM or XTOP or YTOP or ZTOP- パラメータ:
writefile
- PrintWritermultiSG
- multisimpleGradingが設定されている場合 paramaterfileの値multiSGReverse
- multisimpleGradingが設定されている場合 そのリバース値
-
blockInfoWrite
void blockInfoWrite(CBlockMeshDict blockMeshDict, java.lang.String multiSG, java.lang.String multiSGReverse, boolean isEmpty)
ブロック情報のblockMeshDictOutへの引き渡し 2021.09.20
CBlockMeshDict.isEmpty=falseの場合は、Centerのブロック情報は引き渡さない。- パラメータ:
blockMeshDict
- blockMeshDictmultiSG
- multisimpleGradingが設定されている場合 paramaterfileの値multiSGReverse
- multisimpleGradingが設定されている場合 そのリバース値isEmpty
- blockMeshDict.in.isEmpty
-
allHortsBlockInfoWrite
void allHortsBlockInfoWrite(java.io.PrintWriter writefile, java.lang.String multiSG, java.lang.String multiSGReverse)
AllHorts BlockInfo Write- パラメータ:
writefile
- PrintWritermultiSG
- multi grading blockmultiSGReverse
- multi grading block revere
-
allHortsBlockInfoWrite
void allHortsBlockInfoWrite(CBlockMeshDict blockMeshDict, java.lang.String multiSG, java.lang.String multiSGReverse, boolean isEmpty)
AllHorts BlockInfo copy to BlockMeshDictOut- パラメータ:
blockMeshDict
- CBlockMeshDictmultiSG
- multi grading blockmultiSGReverse
- multi grading block revereisEmpty
- blockMeshDict.in.isEmptyフラグ
-
mkFace
private void mkFace()
Faceの作成
点インデックスのみ格納、 法線は内部から外部へ、右ねじで格納
z
^ y
| p7 /---p6|
/ /
p4- -/--p5 |
/
| p3----p2 |
/ /
p0---p1---->x
-
mkXBTMFace
private void mkXBTMFace()
BTMFaceのCBlock.Fへの登録
-
mkYBTMFace
private void mkYBTMFace()
-
mkZBTMFace
private void mkZBTMFace()
-
mkXTopFace
private void mkXTopFace()
-
mkYTopFace
private void mkYTopFace()
-
mkZTopFace
private void mkZTopFace()
-
mkAllHornBlocksFace
void mkAllHornBlocksFace()
All Horn Blocks Make Faces Centerブロックのみ。
Horn Blockがない面はそれ自体をboundary登録(CBlock.Fへの追加)する。 それ以外は、Centerブロックのface登録はしない。
HornBLockは全ての面を登録している。
-
getBoundary
java.util.ArrayList<CFace> getBoundary()
F 内 のboundary を抽出
1.CFace のfrom == to をかえす。
2.Block.Fに登録されているfrom=Centerである面すべて。
3.xBottomBlock==null ->to=XBTM from=Y|Z-Bottom|Top etc.- 戻り値:
- boundary
-
printBoundary
void printBoundary(java.io.PrintWriter writefile)
print boundary F 内 fromType == toType をboundary として、印刷- パラメータ:
writefile
- PrintWriter
-
print
void print()
ブロックのデータ印字
-
-