9. Reviewファイルを使ったExtrapolation

Extrapolation toolkitの機能は、Reviewファイルでも実行することができます。

ここでは、Reviewスクリプトの例をご紹介します。

 

サンプルモデル: PZT Disc

以下のPZTDiscサンプルモデルを使用して、スクリストの例をご紹介します。サンプルモデルでは、外挿境界(extrapolation boundary)があり、extrapolationの結果処理で使用可能な.*flxextが作成できます。

 

extrapolation_PZT.png

ダウンロード: PZT Disc with Extrapolation Boundary

以下は、サンプルモデルを実行した結果ファイルです。

ダウンロード: PZTDisc.flxext Extrapolation Result File

Note: 外挿境界は、PZT全体を囲む3本の線ではなく、単純な切断面として定義することもできます。切断面はPZTを通過できないため、圧電材料を囲む外側に設定する必要があります。

 

例1 - ビームプロット

次のスクリプトは、外挿されたビームプロットを生成します。

mp omp * * 

symb xmin = 0.
symb xmax = 0.575
symb ymin = 0.
symb ymax = 3.

symb nx = 80 
symb ny = 40
symb ntot = $nx * $ny

grph type stnd

extr
	slvr freq
	freq 10e3
	data PZTdisk.flxext
	file f1  
	type amp
	surf quad * $nx $ny $xmin $ymin 0. $xmax $ymin 0. $xmin $ymax 0. $xmax $ymax 0. 
	calc 1
	end

grph
	nvew 2 1
	mirr x
	mirr y
	plot f1/pf:m1
	plot f1/pf:p1
	end
term

ダウンロード: Beam Field Plot Extrapolation Script

実行結果:

beampattern.png

Note: nxとnyを増やして解像度を変更することができます。

例2 - 放射状ビームプロット

次のスクリプトは、放射状ビームプロットを作成します。

このスクリプトの最後にdata cddoコマンドを使用して、データをcsvファイルへ出力します。

/* Use multiple processes
mp omp * *

/* Set job name
text jname = 'PZTdisk'

c **************************************************************************************
c Inputs
c **************************************************************************************

/* Geometry
symb freq1 		= 10e3					/* Frequency of Radiation Pattern
symb radius 	= 10.                	/* radius of extrapolated line -  10m for farfield
symb strtang 	= -90.               	/* first angle 
symb endang 	= 90.                	/* final angle 
symb nang 		= 361              		/* number of angles to calc
symb astep 		= ( $endang - $strtang ) / ( $nang - 1 )

c ORIGIN point for directivity plot
symb x_origin = 0.0
symb y_origin = 0.0
symb z_origin = 0.0

axis
	/* Configured for Y Axis Propagation
	defn beam_horz cyl2  $x_origin $y_origin $z_origin 1. 0. 0.    0. 1. 0.
	defn beam_vert cyl2  $x_origin $y_origin $z_origin 0. 0. 1.    0. 1. 0.
	end

c **************************************************************************************
c Beam Horz
c **************************************************************************************

/* Perform beam extrapolation in frequnecy domain
extr
   slvr freq
   freq $freq1
   type amp                     /* Amplitude
   data $jname.flxext           /* Read in extrapolation data
   file e1 cler        			/* name output file
   surf cyln beam_vert $radius 0. 0. 1 $strtang $endang $nang
   calc 1 						/* calculate
   end

/* Create angle axis
data open angl 2 1 $nang 1 f
do loopI I 1 $nang 1
	symb ang = $strtang + ( $I - 1 ) * $astep
	symb #set $ang angl 1 $I
end$ loopI

/* Get log beams
symb #get  { bmax1 } datamax e1/pf:m1

data
	math dBbeam1 = 20 * alog10 ( { e1/pf:m1 }  / $bmax1  )
	end

/* Plot dB beams
grph
	plot dBbeam1 vs angl
	end
term

c Custom Code - Search for Threshold Cutoff
symb dB_cutoff = -3						/* Decible Cutoff for Beamwidth
symb #get { * * ij * } datamax dBbeam1 /* Find Peak amplitude Index

	do loopI I $ij $nang 1

		symb #get { value } array dBbeam1 1 $I
		
		if ( $value lt $dB_cutoff ) then
			symb beamwidth = ( ( $I - $ij - 1 ) * $astep * 2 )
			symb #msg 1
			Beamwidth: $beamwidth degrees
			goto outloop	
		endif
	end$ loopI

end$ outloop


c **************************************************************************************
c Outputs
c **************************************************************************************

/* Write all beams to data files
data
	/* Beam 1
	open dBbeam1f 2 2 $nang 1 f
	cpyg angl 1 1 1 1 1 1 dBbeam1f 1 1 1 $nang 1 1
	cpyg dBbeam1 1 1 1 1 1 1 dBbeam1f 2 2 1 $nang 1 1
	cddo dBbeam1f Beam_$freq1.csv

stop

ダウンロード: Radial Beam Plot Extrapolation Script 

実行結果:

radialbeamplot.png

例3 - 信号の外挿

以下は、時間領域信号を抽出し、抽出したデータをcsvファイルに保存するスクリプトの例です。

mp omp * * 

symb xmin = 0.
symb xmax = 0.575
symb ymin = 0.
symb ymax = 3.

symb nx = 3
symb ny = 3
symb ntot = $nx * $ny

grph type stnd

extr
	slvr time
	data PZTdisk.flxext
	file f1  
	type amp
	surf quad * $nx $ny $xmin $ymin 0. $xmax $ymin 0. $xmin $ymax 0. $xmax $ymax 0. 
	calc 1
	end

c Building Time Column
make
	file f2
	symb #get { ts } curvdelx f1
	symb #get { nval } curvnval f1	
	
	do loopi I 1 $ntot
		symb #get { tbeg } curvxmin f1 $I
		time $nval $tbeg $ts
		curv { f1 $I }
	end$ loopi
	end

grph
	do loopi I 1 $ntot
		plot f2 $I
		writ onex 'EXTR_$(I).csv'
term
	end$ loopi
	end

ダウンロード: Time Domain Extrapolation Script

実行結果:

time_domain_extrapolation.png

Note: 時間領域信号抽出では、時間列を再構築し、ループを使用してデータを1つずつファイルに書き込む必要があります。