クラス 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ーー|
                  |   \  |
                  |    \ |
                  |     \|
                  ----------------p0
      private 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_1
      static 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 -> -1
      static 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 点情報の印刷
      • クラスから継承されたメソッド java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • コンストラクタの詳細

      • CTool

        public CTool()
    • メソッドの詳細

      • 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 - 点p
        q - 点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<=b
        A - [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 - 点0
        p1 - 点1
        p2 - 点2
        p3 - 点3
        xyz - 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 - 点0
        p1 - 点1
        p2 - 点2
        p3 - 点3
        xyz - 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 - BLK
        b - 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=z
        c - 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: z
        gamma1 - core_min_x ... core_max_z
        gamma2 - min_x.............max_z
        beta1 - 1
        beta2 - 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座標 γ1
        gamma2 - x座標 γ2
        beta1 - y座標 β1
        beta2 - y座標 β2
        x - 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 - γ1
        gamma2 - γ2
        beta1 - β1
        beta2 - β2
        x - 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 - γ1
        gamma2 - γ2
        beta1 - β1
        beta2 - β2
        offset - オフセット
        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 - γ1
        gamma2 - γ2
        beta1 - β1
        beta2 - β2
        alpha - >= 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 - != 0
        p2 - != 0
        p3 - != 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