SPLINE_READ

ModelingReference_Spline要素で使用するxデータ、yデータ、およびオプションでzデータをファイルから読み取るために使用します。

使用

Reference_Spline要素を定義するxベクトル、yベクトル、およびオプションでzベクトルを取得するためにSPLINE_READを呼び出すユーザー定義の要求。
<Reference_Spline
     id              = "301001"
     usrsub_dll_name = "c:\work\test.dll"
     file_name       = "c:\data\spring1.dat"
     block_name      = "spring_force">
</ Reference_Spline>

フォーマット

Fortranの呼出し構文
SUBROUTINE SPLINE_READ (ID, FILE_NAME, BLOCK_NAME, ERRFLG)
C/C++の呼出し構文
void STDCALL SPLINE_READ (int *id, char *file_name, int file_name_len, char *block_name, int block_name_len, int *errflg)
Pythonの呼出し構文
def SPLINE_READ(id, file_name, block_name):
    return errflag
MATLABの呼出し構文
function errflg = SPLINE_READ(id, file_name, block_name)

属性

ID
[整数]
ユーザー定義のReference_Spline要素識別子。
FILE_NAME
[CHARACTER*(*)]
FILE_NAME引数値を含む次元132の配列。
BLOCK_NAME
[CHARACTER*(*)]
BLOCK_NAME引数値を含む次元132の配列。

出力

ERRFLG
[論理]
データを読み取るSPLINE_READのステータスを示すための変数。PUT_SPLINEを使用して、エラーがある場合はTRUEに、エラーがない場合はFALSEに設定します。戻り値がTRUEの場合、MotionSolveは関連する計算を停止します。

  1. 下の例は、Pythonスクリプト言語を使用したSPLINE_READユーザーサブルーチンを示しています:
    def SPLINE_READ(id, file_name, block_name):
    
      x =6*[0.0]
      y =6*[0.0]
    
      x[0] =0.0
      x[1] =0.3
      x[2] =0.5
      x[3] =1.0
      x[4] =1.5
      x[5] =2.0
    
      y[0] =0.0
      y[1] =0.0
      y[2] =0.0
      y[3] = -0.05
      y[4] = -0.15
      y[5] = -0.3
     
      z =0.0
    
      errflg = py_put_spline(id, x, y, z)
    
      return errflg
  2. 下の例では、SPLINE_READサブルーチンを使用して、外部ファイルdata.txtから読み取った値をReference_Splineモデル要素に入力します。
    1. モデル要素:
      <Reference_Spline
           id                  = "301001"
           label               = "Excite"
           interpreter         = "Python"
           script_name         = "read_curve.py"
           usrsub_fnc_name     = "SPLINE_READ"
           file_name           = "data.txt"
           block_name          = "dummy"
           linear_extrap       = "TRUE"
      />
    2. 外部ファイルdata.txtには、次のようなx値とy値のコンマ区切りリストが含まれています:
        0,     0
        0.1,   4.045084972
        0.2,   4.755282581
        0.3,   1.545084972
        0.4,   -2.938926261
        0.5,   -5
        0.6,   -2.938926261
        0.7,   1.545084972
        0.8,   4.755282581
        0.9,   4.045084972
        1,     1.07195E-14
        1.1,   -4.045084972
        1.2,   -4.755282581
        1.3,   -1.545084972
        1.4,   2.938926261
      …
    3. ユーザーサブルーチンSPLINE_READは、次のように、Pythonスクリプト言語で記述されます:
      #
      # This is an example for a spline read
      #
      def SPLINE_READ(id, file_name,block_name):
          x_ = []
          y_ = []
      
      # Open the external file for reading
          f = open(file_name, 'r')
      
      # Loop throught the file contents to get x,y values
        while 1:
         line = f.readline()
         if not line:
            break
         cols = line.split(',')
         x_.append(float(cols[0]))
         temp = cols[1].split('\n')
         y_.append(float(temp[0]))
         z_ = 0.0
      
      # Use py_put_spline to put the x, y, z values into reference_spline
        errflg = py_put_spline(id, x_, y_, z_)
        return errflg