クラス CTool
- java.lang.Object
-
- CTool
-
public class CTool extends java.lang.Object
必要な計算ツールを一括管理- 作成者:
- ohno
-
-
コンストラクタの概要
コンストラクタ コンストラクタ 説明 CTool()
-
メソッドの概要
すべてのメソッド staticメソッド インスタンス・メソッド concreteメソッド 修飾子とタイプ メソッド 説明 (package private) static java.lang.String
convertBlockPidx(java.lang.String blockPidx, int[] pidx)
(package private) static java.lang.String
cutOffComment(java.lang.String oneline)
oneline でコメント"//"を見つけると、それ以降を取り除くstatic org.apache.commons.math3.linear.RealVector
getBoxAndP_P0CrossPoint(double x, double y, double z, double xm, double ym, double zm, double xM, double yM, double zM)
point (x,y,z)が Box [xm xM][ym yM][zm zM] と交差する点を返す。static org.apache.commons.math3.linear.RealVector
getBoxAndP_P0CrossPoint(org.apache.commons.math3.linear.RealVector p, double xm, double ym, double zm, double xM, double yM, double zM)
コアボックス外の点pに対して、線分p_p0とボックスとの交点をもとめるstatic org.apache.commons.math3.linear.RealVector
getBoxCrossPointParallel(org.apache.commons.math3.linear.RealVector p, double xm, double ym, double zm, double xM, double yM, double zM, int[] instruction)
pとボックス との平行交差点を求めるstatic org.apache.commons.math3.linear.RealVector
getExpansionPoint(org.apache.commons.math3.linear.RealVector p)
点の拡大 処理
コア内部であれば、入力値pをかえす。(package private) static org.apache.commons.math3.linear.RealVector
getExpansionPoint(org.apache.commons.math3.linear.RealVector p0, org.apache.commons.math3.linear.RealVector p, int id, double gamma1, double gamma2, double beta1, double beta2)
拡張ポイントの変換 p^
\
getExpansionPoint \
| \p |
| \| |
coreーーー> |ーーーvーー|
| \ |
| \ |
| \|
----------------p0private double
getExpansionRate_linea(double gamma1, double gamma2, double beta1, double beta2, double x)
拡張係数の計算 linea (β_2 - β_1)/(γ_2 - γ_1)( x - γ_1) + β_1(package private) static double
getExpansionRate2(double gamma1, double gamma2, double beta1, double beta2, double x)
拡張係数の計算
β2---------------------- +
+
y --------------+
--------------β1------------------+----x---+-
γ1 γ2
2次式
y= (beta_2 - beta_1)/(gamma_2 -gamma_1)^2 ( x- gamma_1)^2 + beta_1static double
getExpansionRate2WithAlpha(double gamma1, double gamma2, double beta1, double beta2, double alpha, double x)
拡張係数の計算(γ_1で勾配αを追加した、2次曲線)1VS2 破壊版に対応させるために作成した。static double
getExpansionRateWithOffset(double gamma1, double gamma2, double beta1, double beta2, double offset, double x)
拡張係数の計算(offset付き)
y= (beta_2 - beta_1)/(gamma_2 -gamma_1)^2 ( x+offset - gamma_1)^2 + beta_1(package private) static int
getIdFromP123(java.lang.String tst)
p123-> 123
q123 -> -1(package private) static int
getIdFromQ123(java.lang.String tst)
q123-> 123
p123 -> -1static double
getMinPositive(double tym, double tyM, double tzm, double tzM)
4つの値の正の最小値をかえす。static double
getMinPositive(double txm, double txM, double tym, double tyM, double tzm, double tzM)
6つの値の正の最小値を返す。static org.apache.commons.math3.linear.RealVector
getModifyPoint(org.apache.commons.math3.linear.RealVector p)
修正ポイントへの変換 pはコアドメイン外(package private) static int[]
getPidFromBracket(java.lang.String blockpoints)
"(q0 p01 p3 q113 q4 p14 p7 q7)"-> 1 3 14 7(package private) static int[]
getQidFromBracket(java.lang.String blockpoints)
"(q0 p01 p3 q113 q4 p14 p7 q7)"->0 113 4 7(package private) static boolean
isEndBrackets(java.lang.String oneline)
);<------end symbolを認識するとtrue
上の形でないときにはfalseを返す。(package private) static boolean
isEqual(org.apache.commons.math3.linear.RealVector p, org.apache.commons.math3.linear.RealVector q)
2つの点が等しいかどうか(package private) static boolean
isInCore(CFace f)
面(face)データがコア内部かどうかをチェックする。(package private) static boolean
isInCore(org.apache.commons.math3.linear.RealVector p)
点データがコア内部かどうかをチェックする。(package private) static boolean
isIntersectPositiveLength(double a, double b, double A, double B)
2つの区間に共通区間があるかどうか(package private) static boolean
isMiddleEndBrackets(java.lang.String oneline)
}<------ middleEndBracket を認識するとtrue
上の形でないときにはfalseを返す。(package private) static boolean
isMiddleStartBrackets(java.lang.String oneline)
{<------start symbolを認識するとtrue
上の形でないときにはfalseを返す。(package private) static boolean
isOnCore(CFace f)
面(face)データがコア面上かどうかをチェックする。(package private) static boolean
isOnCore(org.apache.commons.math3.linear.RealVector[] v, int xyz, double c)
内部関数static boolean
isOnLine(org.apache.commons.math3.linear.RealVector p1, org.apache.commons.math3.linear.RealVector p2, org.apache.commons.math3.linear.RealVector p3)
3点が直線上にあるがどうかのチェック(package private) static boolean
isRealInCore(CFace f)
面(face)データが真コア内部(境界上にもない)かどうかをチェックする。(package private) static boolean
isRealInCore(org.apache.commons.math3.linear.RealVector p)
点データが真の(境界上にもない)コア内部かどうかをチェックする。(package private) static boolean
isStartBrackets(java.lang.String oneline)
(<------start symbolを認識するとtrue
上の形でないときにはfalseを返す。(package private) static boolean
isTopBottom(BLK a, BLK b)
enum BLK が *TOP <-> *Bottom の関係のときにtrueを返す。(package private) static boolean
isZero(org.apache.commons.math3.linear.RealVector p)
pointが0ベクトルがどうかstatic void
main(java.lang.String[] arg)
main(package private) static double
max(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, int xyz)
pointのx-座標の最大値(package private) static double
min(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, int xyz)
pointのx-座標の最小値(package private) static org.apache.commons.math3.linear.RealVector
parse3(java.lang.String oneline)
blockMeshDict ファイル対応 vertices ( の区間のみ数値データとして、入力し、その行の3次元数値データを返す。(package private) static boolean
parseValue(java.lang.String oneline)
oneline = xx:実数の読み込み
oneline = xx:整数の読み込み
xx or beta or minX or maxX or minY or maxY or minZ or maxZ or core_minX or
core_maxX or core_minY or core_maxY or core_minZ or core_maxZ or divX or divY
or divZ or divED
or ext_maxZ
上の形でないときにはfalseを返す。(package private) static void
print(java.lang.String name, java.util.ArrayList<CFace> fl)
print face(package private) static void
print(java.lang.String name, org.apache.commons.math3.linear.RealVector p)
print Point 点情報の印刷
-
-
-
メソッドの詳細
-
cutOffComment
static java.lang.String cutOffComment(java.lang.String oneline)
oneline でコメント"//"を見つけると、それ以降を取り除く- パラメータ:
oneline
- 対象- 戻り値:
- onelineから"//"以降を除いた文字列
-
isEndBrackets
static boolean isEndBrackets(java.lang.String oneline)
);<------end symbolを認識するとtrue
上の形でないときにはfalseを返す。- パラメータ:
oneline
- 一行情報- 戻り値:
- true or false
-
isStartBrackets
static boolean isStartBrackets(java.lang.String oneline)
(<------start symbolを認識するとtrue
上の形でないときにはfalseを返す。- パラメータ:
oneline
- 一行情報- 戻り値:
- true or false
-
isMiddleEndBrackets
static boolean isMiddleEndBrackets(java.lang.String oneline)
}<------ middleEndBracket を認識するとtrue
上の形でないときにはfalseを返す。- パラメータ:
oneline
- 一行情報- 戻り値:
- true or false
-
isMiddleStartBrackets
static boolean isMiddleStartBrackets(java.lang.String oneline)
{<------start symbolを認識するとtrue
上の形でないときにはfalseを返す。- パラメータ:
oneline
- 一行情報- 戻り値:
- true or false
-
parseValue
static boolean parseValue(java.lang.String oneline)
oneline = xx:実数の読み込み
oneline = xx:整数の読み込み
xx or beta or minX or maxX or minY or maxY or minZ or maxZ or core_minX or
core_maxX or core_minY or core_maxY or core_minZ or core_maxZ or divX or divY
or divZ or divED
or ext_maxZ
上の形でないときにはfalseを返す。- パラメータ:
oneline
- 入力行- 戻り値:
- true or false
-
parse3
static org.apache.commons.math3.linear.RealVector parse3(java.lang.String oneline)
blockMeshDict ファイル対応 vertices ( の区間のみ数値データとして、入力し、その行の3次元数値データを返す。
それ以外はnullを返す。 )
oneline = (px,py,pz)の読み込み
上の形でないときにはnullを返す。- パラメータ:
oneline
- (px,py,pz)- 戻り値:
- 点情報(3次元)またはnullをかえす。
-
print
static void print(java.lang.String name, java.util.ArrayList<CFace> fl)
print face- パラメータ:
name
- コメントfl
- faceのリスト
-
print
static void print(java.lang.String name, org.apache.commons.math3.linear.RealVector p)
print Point 点情報の印刷- パラメータ:
name
- 名前p
- 点
-
isEqual
static boolean isEqual(org.apache.commons.math3.linear.RealVector p, org.apache.commons.math3.linear.RealVector q)
2つの点が等しいかどうか- パラメータ:
p
- 点pq
- 点q- 戻り値:
- true or false
-
isZero
static boolean isZero(org.apache.commons.math3.linear.RealVector p)
pointが0ベクトルがどうか- パラメータ:
p
- 点p- 戻り値:
- true or false
-
isIntersectPositiveLength
static boolean isIntersectPositiveLength(double a, double b, double A, double B)
2つの区間に共通区間があるかどうか- パラメータ:
a
- [a,b]b
- a<=bA
- [A,B]B
- A<=B- 戻り値:
- 長さを持つ共通区間があれば true
-
max
static double max(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, int xyz)
pointのx-座標の最大値- パラメータ:
p0
- 点0p1
- 点1p2
- 点2p3
- 点3xyz
- x=0 y=1 z=2- 戻り値:
- max(p0.x,p1.x,p2.x,p3.x)
-
min
static double min(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, int xyz)
pointのx-座標の最小値- パラメータ:
p0
- 点0p1
- 点1p2
- 点2p3
- 点3xyz
- x=0 y=1 z=2- 戻り値:
- min(p0.x,p1.x,p2.x,p3.x)
-
isTopBottom
static boolean isTopBottom(BLK a, BLK b)
enum BLK が *TOP <-> *Bottom の関係のときにtrueを返す。- パラメータ:
a
- BLKb
- BLK- 戻り値:
- true or false
-
isInCore
static boolean isInCore(org.apache.commons.math3.linear.RealVector p)
点データがコア内部かどうかをチェックする。- パラメータ:
p
- 点データ- 戻り値:
- 内部であればtrue
-
isRealInCore
static boolean isRealInCore(org.apache.commons.math3.linear.RealVector p)
点データが真の(境界上にもない)コア内部かどうかをチェックする。- パラメータ:
p
- 点データ- 戻り値:
- 内部であればtrue
-
isRealInCore
static boolean isRealInCore(CFace f)
面(face)データが真コア内部(境界上にもない)かどうかをチェックする。- パラメータ:
f
- face データ- 戻り値:
- 内部であればtrue
-
isInCore
static boolean isInCore(CFace f)
面(face)データがコア内部かどうかをチェックする。- パラメータ:
f
- face データ- 戻り値:
- 内部であればtrue
-
isOnCore
static boolean isOnCore(CFace f)
面(face)データがコア面上かどうかをチェックする。- パラメータ:
f
- face データ- 戻り値:
- 内部であればtrue
-
isOnCore
static boolean isOnCore(org.apache.commons.math3.linear.RealVector[] v, int xyz, double c)
内部関数- パラメータ:
v
- faceの4点xyz
- 0=x 1=y 2=zc
- core_minX etc..- 戻り値:
- 4点のxyz-値がcに等しいときはtrue
-
getExpansionPoint
public static org.apache.commons.math3.linear.RealVector getExpansionPoint(org.apache.commons.math3.linear.RealVector p)
点の拡大 処理
コア内部であれば、入力値pをかえす。
p.x <core_min_x --> gamma1 = core_min_x gamma2 = min_x
getExpansionPoint(p0,p,id=x , gamma1,gamma2,beta1=1.,beta2)
- パラメータ:
p
- 拡大の対象- 戻り値:
- 拡大点
-
getExpansionPoint
static org.apache.commons.math3.linear.RealVector getExpansionPoint(org.apache.commons.math3.linear.RealVector p0, org.apache.commons.math3.linear.RealVector p, int id, double gamma1, double gamma2, double beta1, double beta2)
拡張ポイントの変換 p^
\
getExpansionPoint \
| \p |
| \| |
coreーーー> |ーーーvーー|
| \ |
| \ |
| \|
----------------p0- パラメータ:
p0
- 拡張の原点p
- 拡張する点id
- = 0 :x 1: y 2: zgamma1
- core_min_x ... core_max_zgamma2
- min_x.............max_zbeta1
- 1beta2
- beta- 戻り値:
- 拡張された点 p^
-
getExpansionRate2
static double getExpansionRate2(double gamma1, double gamma2, double beta1, double beta2, double x)
拡張係数の計算
β2---------------------- +
+
y --------------+
--------------β1------------------+----x---+-
γ1 γ2
2次式
y= (beta_2 - beta_1)/(gamma_2 -gamma_1)^2 ( x- gamma_1)^2 + beta_1- パラメータ:
gamma1
- x座標 γ1gamma2
- x座標 γ2beta1
- y座標 β1beta2
- y座標 β2x
- x-値- 戻り値:
- y y-値
-
getModifyPoint
public static org.apache.commons.math3.linear.RealVector getModifyPoint(org.apache.commons.math3.linear.RealVector p)
修正ポイントへの変換 pはコアドメイン外- パラメータ:
p
- コア以外のポイント- 戻り値:
- 修正ポイント α(p-p0)+p0
-
getBoxAndP_P0CrossPoint
public static org.apache.commons.math3.linear.RealVector getBoxAndP_P0CrossPoint(org.apache.commons.math3.linear.RealVector p, double xm, double ym, double zm, double xM, double yM, double zM)
コアボックス外の点pに対して、線分p_p0とボックスとの交点をもとめる- パラメータ:
p
- コアボックス外(表面上でもない。) p0はコアの表面を含めて内部。xm
- = this.core_min_x - this.p0.getEntry(0); or this.min_x - this.p0.getEntry(0)xM
- = this.core_max_x - this.p0.getEntry(0);ym
- = this.core_min_y - this.p0.getEntry(1);yM
- = this.core_max_y - this.p0.getEntry(1);zm
- = this.core_min_z - this.p0.getEntry(2);zM
- = this.core_max_z - this.p0.getEntry(2);- 戻り値:
- 交差点
-
getBoxCrossPointParallel
public static org.apache.commons.math3.linear.RealVector getBoxCrossPointParallel(org.apache.commons.math3.linear.RealVector p, double xm, double ym, double zm, double xM, double yM, double zM, int[] instruction)
pとボックス との平行交差点を求める- パラメータ:
p
- 点xm
- Boxのxm値ym
- Boxのym値zm
- Boxのzm値xM
- BoxのxM値yM
- BoxのyM値zM
- BoxのzM値instruction
- [0] = -1 or 0 or 1 -1:xm-方向に伸ばした点 0: +1:xM方向に伸ばした点を返す。- 戻り値:
- 交差点
-
getExpansionRate_linea
private double getExpansionRate_linea(double gamma1, double gamma2, double beta1, double beta2, double x)
拡張係数の計算 linea (β_2 - β_1)/(γ_2 - γ_1)( x - γ_1) + β_1- パラメータ:
gamma1
- γ1gamma2
- γ2beta1
- β1beta2
- β2x
- x−値- 戻り値:
- 拡張係数
-
getExpansionRateWithOffset
public static double getExpansionRateWithOffset(double gamma1, double gamma2, double beta1, double beta2, double offset, double x)
拡張係数の計算(offset付き)
y= (beta_2 - beta_1)/(gamma_2 -gamma_1)^2 ( x+offset - gamma_1)^2 + beta_1- パラメータ:
gamma1
- γ1gamma2
- γ2beta1
- β1beta2
- β2offset
- オフセットx
- x−値- 戻り値:
- y 関数値
-
getExpansionRate2WithAlpha
public static double getExpansionRate2WithAlpha(double gamma1, double gamma2, double beta1, double beta2, double alpha, double x)
拡張係数の計算(γ_1で勾配αを追加した、2次曲線)1VS2 破壊版に対応させるために作成した。
y= a x^2 + b x +c
y' at γ_1 = α y(γ_1)=β_1 y(γ_2) = β_2
b= (2γ_1(β_1 - β_2)-α(γ_1^2 -γ_2^2))/(γ_1 - γ_2)^2
a= (α-b)/(2γ_1)
c= β_1 - aγ_1^2 - bγ_1- パラメータ:
gamma1
- γ1gamma2
- γ2beta1
- β1beta2
- β2alpha
- >= 0. alpha = 0. では getExpansionRate2と等しいx
- x−値- 戻り値:
- y 関数値
-
getBoxAndP_P0CrossPoint
public static org.apache.commons.math3.linear.RealVector getBoxAndP_P0CrossPoint(double x, double y, double z, double xm, double ym, double zm, double xM, double yM, double zM)
point (x,y,z)が Box [xm xM][ym yM][zm zM] と交差する点を返す。- パラメータ:
x
- 点のx座標y
- 点のy座標z
- 点のz座標xm
- Boxのxm値ym
- Boxのym値zm
- Boxのzm値xM
- BoxのxM値yM
- BoxのyM値zM
- BoxのzM値- 戻り値:
- 交差点
-
getMinPositive
public static double getMinPositive(double tym, double tyM, double tzm, double tzM)
4つの値の正の最小値をかえす。- パラメータ:
tym
-tyM
-tzm
-tzM
-- 戻り値:
- 正の最小値 なければNaN
-
getMinPositive
public static double getMinPositive(double txm, double txM, double tym, double tyM, double tzm, double tzM)
6つの値の正の最小値を返す。- パラメータ:
txm
-txM
-tym
-tyM
-tzm
-tzM
-- 戻り値:
- 正の最小値 なければNaN
-
isOnLine
public static boolean isOnLine(org.apache.commons.math3.linear.RealVector p1, org.apache.commons.math3.linear.RealVector p2, org.apache.commons.math3.linear.RealVector p3)
3点が直線上にあるがどうかのチェック- パラメータ:
p1
- != 0p2
- != 0p3
- != 0- 戻り値:
- true or false
-
convertBlockPidx
static java.lang.String convertBlockPidx(java.lang.String blockPidx, int[] pidx)
- パラメータ:
blockPidx
- = "(q0 p0 p3 q3 q4 p4 p7 q7)"pidx
- = i0 i1 i2 i3 i4 i5 i6 i7 i8- 戻り値:
- "(qi0 pi0 pi3 qi3 qi4 pi4 pi7 qi7)"
-
getIdFromQ123
static int getIdFromQ123(java.lang.String tst)
q123-> 123
p123 -> -1- パラメータ:
tst
- 解析対象ストリング- 戻り値:
- 123 if tst = q123 else -1
-
getIdFromP123
static int getIdFromP123(java.lang.String tst)
p123-> 123
q123 -> -1- パラメータ:
tst
- 解析対象ストリング- 戻り値:
- 123 if tst = p123 else -1
-
getPidFromBracket
static int[] getPidFromBracket(java.lang.String blockpoints)
"(q0 p01 p3 q113 q4 p14 p7 q7)"-> 1 3 14 7- パラメータ:
blockpoints
- 解析対象ストリング- 戻り値:
- int[]
-
getQidFromBracket
static int[] getQidFromBracket(java.lang.String blockpoints)
"(q0 p01 p3 q113 q4 p14 p7 q7)"->0 113 4 7- パラメータ:
blockpoints
- 解析対象ストリング- 戻り値:
- int[]
-
main
public static void main(java.lang.String[] arg)
main- パラメータ:
arg
- No parameter
-
-