配列データをテキストファイル・CSVファイルへ出力する方法

フォローする

データ配列(Array data)は、以下のコードによりテキストまたはcsv形式に出力できます。

read d1 snapshot.flxdato

data cddo d1/1/xdsp 'xdsp.csv'

注: 上記のコードは、x方向の変位に対応する配列データ「xdsp」がsnapshot.flxdatoファイルへ出力されていることを前提としています。

これにより、次のようなファイルへ出力されます。

csv-exported-data.png

CDDO コマンドは、Data Manager arrayのデータをカンマ区切りのファイルへ出力するためのものです。このコマンドは、2次元または3次元配列の2次元セクションを出力します。 また、配列が要求された場合、3次元領域を書き出します。

典型的なcddo構文は次のとおりです。

  data 
cddo dataname filename ibegin iend jbegin jend kbegin kend

配列が3次元データの場合、データをEXCELなどのプログラムにインポートする場合、指定されたインデックスは配列の2次元セクションを形成する必要があります。

書き込まれるデータが一定のI-indexを持つ場合、つまりJ-とK- indixのみが変化する場合、ファイルに書き込まれるデータの各行には一定のKインデックスがあり、J-indexはラインに沿って変化します。 定数J-indexセクションの場合、データの各行は定数K-index用です。 定数K-indexセクションの場合、データの各行は定数J-index用です。

3次元配列(または配列のサブ領域)がファイルに書き込まれる場合、データの各行には一定のJ-およびK-indexがあり、I-index は行に沿って変化します。 データの最初の行は、J = jbegin、K = kbegin用です。 2行目は、J = jbegin + 1、K = kbeginなどです。つまり、Jインデックスが最初に置換され、次にKインデックスが置換されます。

例:

read d1 snapshot.flxdato

data cddo d1/1/xdsp 'xdsp.csv' 1 5 1 5 1 1

このコードは、たとえば、レイヤーk = 1の1 <i <5および1 <j <5のメッシュのメッシュ中心の結果のみをエクスポートします

以下のような出力になります。

elements_exported.png

1つのレイヤーk = 1のすべてのメッシュをエクスポートするには、次のコードを使用できます。

read d1 snapshot.flxdato

data cddo d1/1/xdsp 'xdsp.csv' * * * * 1 1

特定の座標でデータを出力する方法は?

1. データ出力に「out modl」があることを確認します。 これは、結果のflxdatoファイル(座標、ノード...)にモデルデータも含んでいます。

data
	out modl
	out shap/all
	out pmax
	end

2. 以下ののreviewスクリプトを使用する

/* Read data file
read d1 pzt_2D.flxdato

/* Specify xy position to get pressure
symb px = 2.e-3
symb py = 5.e-3

/* Plot max pressure
grph
	plot d1/1/pmax
	end

/* Get closest node to location
symb #get { ii ij } clsnode d1 $px $py

/* Get pressure
symb #get { pval } array d1/1/pmax $ii $ij

/* Report to user and write to file
symb #msg 1 &> 'pres.txt'
The pressure at x=$px y=$py is $pval Pa

term

このスクリプトは、px、pyの位置に対応する最も近いノードを見つけ、その位置での圧力値を出力します

次に、これらの変数をテキストファイルに書き込みます。

 

注: より複雑な場合は, MATLABでデータを出力し and MATLABでスクリプトを使って結果処理する方が簡単な場合があります。(You can also MATLABファイルをPythonで開くもご参照下さい)

 

0人中0人がこの記事が役に立ったと言っています

0件のコメント

ログインしてコメントを残してください。