• 検索結果がありません。

垂直配向液晶セルに流れる過渡電流の実験結果と解析解との最小二乗

第 7 章 結論 105

C.2 垂直配向液晶セルに流れる過渡電流の実験結果と解析解との最小二乗

Print #5, iz * Δz, vy ’y方向の流速分布の計算結果書き込み Next iz

End If

’////////////////////////////////////////////////////////////////////////////////////

Next it

’////////////////////////////////////////////////////////////////////////////////////////

Close #1 Close #2 Close #3 Close #4 Close #5 Close #6 Close #7

Command1.Caption = "END"

End Sub

C.2 垂直配向液晶セルに流れる過渡電流の実験結果と解析

.Value = 1 End With With Check2

.Caption = "Excel"

.Value = 0 End With

π = 3.14159265358979 ’円周率

ε0 = 1 / (4 * π* (2.99792458) ^ 2 * 1000000000#) ’真空中の誘電率(F/m) End Sub

Private Sub Command1_Click() On Error GoTo Cancel

続けて計算する場合のための処理 Close #1

Close #2 Unload Form2 Unload Form3

Δε = Text1.Text ’誘電率異方性

S = Text2.Text * 0.0001 ’電極面積(m^2) L = Text3.Text * 0.000001 ’セル厚(m)

V = Text4.Text ’印加電圧(V)

ε0Δε = ε0 * Δε

E = V / L ’電場

データの読込み///////////////////////////////////////////////////////////////////////////

With CommonDialog1

.Filter = "テキスト|*.xy" ’表示するファイルの種類を限定

.CancelError = True ’[キャンセル]ボタンをクリックするとエラーが発生

.ShowOpen ’[ファイルを開く]ダイアログを表示

End With

選択したファイル名を格納し,シーケンシャルアクセスの読み込み用として開く Open CommonDialog1.FileName For Input As #1

data = 0 Ip = 0

Do Until EOF(1) If data = 1 Then

Input #1, Δt, iI(data) ’ファイルのある行の値をそれぞれの値として読み込み

Else

Input #1, t_else, iI(data) End If

If iI(data) > Ip Then ’itp,tp,およびIpの値の取得 itp = data

tp = t_else Ip = iI(data) End If

data = data + 1 LoopClose #1

’/////////////////////////////////////////////////////////////////////////////////////////

実験データの時間単位がmsのとき If Option1.Value = True Then

Δt = Δt * 0.001 tp = tp * 0.001 End If

左端のデータの値の取得 For it = 0 To itp

If iI(it) <= Ip / 2 Then it_l = it

t_l = it * Δt End If

Next it

右端のデータの値の取得 For it = itp To data - 1

If iI(it) >= Ip / 20 Then it_r = it

t_r = it * Δt End If

Next it

ピーク時間以降の電流波形の面積の計算

I_tp_sum = integration(itp, data - 1, iI) ’Functionプロシジャintegrationの呼び出し tanθp = Sqr(-(S * ε0Δε * E / I_tp_sum + 1))

θp = Atn(tanθp) ’ピーク時間のチルト角

各時間以降の電流波形の面積の計算 For it = it_l To it_r

I_sum = integration(it, data - 1, iI) ’Functionプロシジャintegrationの呼び出し cos2θb(it) = -(2 * I_sum / (S * ε0Δε * E) + 1)

Next it

α1,α2,α3,γ3,およびθ0の測定結果書き込み用ファイルのオープン

Open "D:\vb_NLC\V" + Text4.Text + "α1α2α3γ3θ0.xy " For Output As #1

解析解によるフィティング波形の書き込み用ファイルのオープン Open "D:\vb_NLC\V" + Text4.Text + "t_I.xy " For Output As #2

Print #2, "Time (s)", "Current (A)"

Print #2, ""

Print #2, ""

α1,α2,α3,およびγ3の決定(テイラーの微分補正法)/////////////////////////////////////

初期値(MBBA) α1 = -0.0215 α2 = -0.1534 α3 = -0.000773 γ3 = 0.2166 maxΔ= 1 oscillation = 0

A = S * ε0Δε ^ 2 * E ^ 3 Do While maxΔ > 0.00001

sum_α1r = 0 sum_α2r = 0 sum_α3r = 0 sum_γ3r = 0 sum_α1α1 = 0 sum_α1α2 = 0 sum_α1α3 = 0 sum_α1γ3 = 0 sum_α2α2 = 0 sum_α2α3 = 0 sum_α2γ3 = 0 sum_α3α3 = 0 sum_α3γ3 = 0 sum_γ3γ3 = 0 For it = it_l To it_r

B = (α1 * (α3 - α2) + (α2 + α3) ^ 2) * (1 - cos2θb(it) ^ 2) _ - 2 * (α2 ^ 2 + α3 ^ 2) + 2 * (α3 - α2) * (α3 + γ3)

C = α1 * (1 - cos2θb(it) ^ 2) / 2 - (α2 + α3) * cos2θb(it) + α3 + γ3 f = A * C * (1 - cos2θb(it) ^ 2) / B

r = f - iI(it)

df_dα1 = A * (1 - cos2θb(it) ^ 2) ^ 2 * (B / 2 - (α3 - α2) * C) / B ^ 2 df_dα2_1 = (1 - cos2θb(it) ^ 2) * (-α1 + 2 * (α2 + α3)) - 4 * α2 _

- 2 * (α3 + γ3)

df_dα2 = -A * (1 - cos2θb(it) ^ 2) * (cos2θb(it) * B + C * df_dα2_1) / B ^ 2 df_dα3 = A * (1 - cos2θb(it) ^ 2) * ((1 - cos2θb(it)) * B _

- C * ((1 - cos2θb(it) ^ 2) * (α1 + 2 * (α2 + α3)) _ + 2 * (γ3 - α2))) / B ^ 2

df_dγ3 = A * (1 - cos2θb(it) ^ 2) * (B - 2 * C * (α3 - α2)) / B ^ 2 sum_α1r = sum_α1r + df_dα1 * r

sum_α2r = sum_α2r + df_dα2 * r sum_α3r = sum_α3r + df_dα3 * r sum_γ3r = sum_γ3r + df_dγ3 * r

sum_α1α1 = sum_α1α1 + df_dα1 * df_dα1 sum_α1α2 = sum_α1α2 + df_dα1 * df_dα2 sum_α1α3 = sum_α1α3 + df_dα1 * df_dα3 sum_α1γ3 = sum_α1γ3 + df_dα1 * df_dγ3 sum_α2α2 = sum_α2α2 + df_dα2 * df_dα2 sum_α2α3 = sum_α2α3 + df_dα2 * df_dα3 sum_α2γ3 = sum_α2γ3 + df_dα2 * df_dγ3 sum_α3α3 = sum_α3α3 + df_dα3 * df_dα3 sum_α3γ3 = sum_α3γ3 + df_dα3 * df_dγ3 sum_γ3γ3 = sum_γ3γ3 + df_dγ3 * df_dγ3 Next it

sum_11 = sum_α1α1 sum_12 = sum_α1α2 sum_13 = sum_α1α3 sum_14 = sum_α1γ3

sum_22 = sum_α2α2 - sum_12 ^ 2 / sum_11 sum_23 = sum_α2α3 - sum_12 * sum_13 / sum_11 sum_24 = sum_α2γ3 - sum_12 * sum_14 / sum_11

sum_33 = sum_α3α3 - sum_13 ^ 2 / sum_11 - sum_23 ^ 2 / sum_22

sum_34 = sum_α3γ3 - sum_13 * sum_14 / sum_11 - sum_23 * sum_24 / sum_22

sum_44 = sum_γ3γ3 - sum_14 ^ 2 / sum_11 - sum_24 ^ 2 / sum_22 - sum_34 ^ 2 / sum_33 sum_r1 = -sum_α1r

sum_r2 = -sum_α2r - sum_12 * sum_r1 / sum_11

sum_r3 = -sum_α3r - sum_13 * sum_r1 / sum_11 - sum_23 * sum_r2 / sum_22 sum_r4 = -sum_γ3r - sum_14 * sum_r1 / sum_11 - sum_24 * sum_r2 / sum_22 _

- sum_34 * sum_r3 / sum_33 Δγ3 = sum_r4 / sum_44

Δα3 = (sum_r3 - sum_34 * Δγ3) / sum_33

Δα2 = (sum_r2 - sum_23 * Δα3 - sum_24 * Δγ3) / sum_22

Δα1 = (sum_r1 - sum_12 * Δα2 - sum_13 * Δα3 - sum_14 * Δγ3) / sum_11 α1 = α1 + Δα1

α2 = α2 + Δα2 α3 = α3 + Δα3 γ3 = γ3 + Δγ3 maxΔ = Abs(Δα1) If Abs(Δα2) > maxΔ Then

maxΔ = Abs(Δα2) End If

If Abs(Δα3) > maxΔ Then maxΔ = Abs(Δα3) End If

If Abs(Δγ3) > maxΔ Then maxΔ = Abs(Δγ3) End If

oscillation = oscillation + 1 If oscillation > 100 Then Exit Do Command1.Caption = α2

Loop

’/////////////////////////////////////////////////////////////////////////////////////////

γ1 = α3 - α2 γ2 = α2 + α3 γ4 = α3 + γ3

理論的に成立しなければならない関係を満たさなければエラーを表示して終了 If γ1 < 0 Then GoTo Error

If γ2 + 2 * γ3 < 0 Then GoTo Error

If γ1 * (γ2 + 2 * γ3) < γ2 Then GoTo Error If α2 + 2 * α3 + γ3 < 0 Then GoTo Error If -α2 + γ3 < 0 Then GoTo Error

β1 = α1 ^ 2 + γ2 ^ 2 + 2 * α1 * γ4 β2 = γ1 ^ 2 + γ2 ^ 2 - 2 * γ1 * γ4 β3 = γ2 - γ4

β4 = γ2 + γ4

β5 = γ2 ^ 2 + α1 * γ4 β6 = α1 * γ1 + γ2 ^ 2 β7 = α1 + γ4

θ0の決定(ニュートン法)//////////////////////////////////////////////////////////////////

θ0 = π * 0.0000000001 / 180 ’初期値 Δθ0 = π * 0.000000000001 / 180

D = ε0Δε * E ^ 2

Do While Abs(Δθ0) > π * 0.000000000000001 / 180 dS_dθ0 = 0

ddS_dθ0θ0 = 0

If α1 <> 0 And β1 > 0 Then

H = (-β5 + γ2 * Sqr(β1)) / Sqr(β1) J = (β5 + γ2 * Sqr(β1)) / Sqr(β1) θ01 = β4 * Tan(θ0) ^ 2 + β7 + Sqr(β1) θ02 = β4 * Tan(θ0) ^ 2 + β7 - Sqr(β1) θ03 = α1 * Cos(2 * θ0) + γ2 + Sqr(β1) θ04 = α1 * Cos(2 * θ0) + γ2 - Sqr(β1)

dg_dθ0_1 = β2 * (2 / Sin(2 * θ0) - H * Tan(θ0) / (Cos(θ0) ^ 2 * θ01) _ - J * Tan(θ0) / (Cos(θ0) ^ 2 * θ02)) / (2 * β3)

dg_dθ0_2 = α1 * β6 * Sin(2 * θ0) * (1 / θ03 - 1 / θ04) / Sqr(β1) dg_dθ0 = (dg_dθ0_1 + dg_dθ0_2) / D

ddg_dθ0θ0_1 = -4 * Cos(2 * θ0) / Sin(2 * θ0) ^ 2

ddg_dθ0θ0_2 = -H * (θ01 - Tan(θ0) * (-Sin(2 * θ0) * θ01 _ + 2 * β4 * Tan(θ0))) / (Cos(θ0) ^ 4 * θ01 ^ 2) ddg_dθ0θ0_3 = -J * (θ02 - Tan(θ0) * (-Sin(2 * θ0) * θ02 _ + 2 * β4 * Tan(θ0))) / (Cos(θ0) ^ 4 * θ02 ^ 2)

ddg_dθ0θ0_4 = β2 * (ddg_dθ0θ0_1 + ddg_dθ0θ0_2 + ddg_dθ0θ0_3) / (2 * β3) ddg_dθ0θ0_5 = Cos(2 * θ0) * (1 / θ03 - 1 / θ04)

ddg_dθ0θ0_6 = α1 * Sin(2 * θ0) ^ 2 * (1 / θ03 ^ 2 - 1 / θ04 ^ 2) ddg_dθ0θ0_7 = 2 * α1 * β6 * (ddg_dθ0θ0_5 + ddg_dθ0θ0_6) / Sqr(β1) ddg_dθ0θ0 = (ddg_dθ0θ0_4 + ddg_dθ0θ0_7) / D

For it = it_l To it_r

θb1 = β4 * (1 - cos2θb(it)) / (1 + cos2θb(it)) + β7 + Sqr(β1) θb2 = β4 * (1 - cos2θb(it)) / (1 + cos2θb(it)) + β7 - Sqr(β1) θb3 = α1 * cos2θb(it) + γ2 + Sqr(β1)

θb4 = α1 * cos2θb(it) + γ2 - Sqr(β1)

g1 = β2 * (-Log(Sqr((1 - cos2θb(it)) / (1 + cos2θb(it))) / Tan(θ0)) _ + H * Log(θb1 / θ01) / (2 * β4) _

+ J * Log(θb2 / θ02) / (2 * β4)) / β3

g2 = β6 * Log(θb3 * θ04 / (θb4 * θ03)) / Sqr(β1) g = (g1 + g2) / (2 * D)

dS_dθ0 = dS_dθ0 + g - Δt * it

ddS_dθ0θ0 = ddS_dθ0θ0 + dg_dθ0 ^ 2 + (g - Δt * it) * ddg_dθ0θ0 Next it

ElseIf α1 <> 0 And β1 < 0 Then θ01 = β4 * Tan(θ0) ^ 2 + β7 θ02 = α1 * Cos(2 * θ0) + γ2

dg_dθ0_1 = β2 * (1 / Sin(2 * θ0) - β5 * Tan(θ0) _ / (Cos(θ0) ^ 2 * (θ01 ^ 2 - β1)) _

- γ2 * Tan(θ0) * θ01 / (Cos(θ0) ^ 2 * (θ01 ^ 2 - β1))) / β3 dg_dθ0_2 = -2 * α1 * β6 * Sin(2 * θ0) / (θ02 ^ 2 - β1)

dg_dθ0 = (dg_dθ0_1 + dg_dθ0_2) / D

ddg_dθ0θ0_1 = -2 * Cos(2 * θ0) / Sin(2 * θ0) ^ 2

ddg_dθ0θ0_2 = β5 * (4 * β4 * Tan(θ0) ^ 2 * θ01 - (1 + 2 * Sin(θ0) ^ 2) _

* (θ01 ^ 2 - β1)) / (Cos(θ0) ^ 4 * (θ01 ^ 2 - β1) ^ 2) ddg_dθ0θ0_3 = -γ2 * ((3 * β4 * Tan(θ0) ^ 2 + β7) * (θ01 ^ 2 - β1) _

- Tan(θ0) * θ01 * (-Sin(2 * θ0) * (θ01 ^ 2 - β1) + 4 * β4 _

* Tan(θ0) * θ01)) / (Cos(θ0) ^ 4 * (θ01 ^ 2 - β1) ^ 2) ddg_dθ0θ0_4 = β2 * (ddg_dθ0θ0_1 + ddg_dθ0θ0_2 + ddg_dθ0θ0_3) / β3 ddg_dθ0θ0_5 = -4 * α1 * β6 * (Cos(2 * θ0) * (θ02 ^ 2 - β1) _

+ 2 * α1 * Sin(2 * θ0) ^ 2 * θ02) / (θ02 ^ 2 - β1) ^ 2 ddg_dθ0θ0 = (ddg_dθ0θ0_4 + ddg_dθ0θ0_5) / D

For it = it_l To it_r

θb1 = β4 * (1 - cos2θb(it)) / (1 + cos2θb(it)) + β7 θb2 = α1 * cos2θb(it) + γ2

g1 = β2 * (-Log(Sqr((1 - cos2θb(it)) / (1 + cos2θb(it))) / Tan(θ0)) _ + β5 * (Atn(θb1 / Sqr(-β1)) - Atn(θ01 / Sqr(-β1))) _

/ (Sqr(-β1) * β4) + γ2 * Log((θb1 ^ 2 - β1) _ / (θ01 ^ 2 - β1)) / (2 * β4)) / (2 * β3)

g2 = -β6 * (Atn(θb2 / Sqr(-β1)) - Atn(θ02 / Sqr(-β1))) / Sqr(-β1) g = (g1 + g2) / D

dS_dθ0 = dS_dθ0 + g - Δt * it

ddS_dθ0θ0 = ddS_dθ0θ0 + dg_dθ0 ^ 2 + (g - Δt * it) * ddg_dθ0θ0 Next it

End If

dS_dθ0 = 2 * dg_dθ0 * dS_dθ0 ddS_dθ0θ0 = 2 * ddS_dθ0θ0 Δθ0 = -dS_dθ0 / ddS_dθ0θ0 θ0 = θ0 + Δθ0

Loop

’/////////////////////////////////////////////////////////////////////////////////////////

α1,α2,α3,γ3,およびθ0の測定結果書き込み Print #1, "α1", α1

Print #1, "α2", α2 Print #1, "α3", α3 Print #1, "γ3", γ3

Print #1, "θ0", θ0 * 180 / π

フィッティング結果をPictureBoxへ表示/////////////////////////////////////////////////////

θ = π * (1 / 2 - 1 / 180) If Check1.Value = 1 Then

’Functionプロシジャtimeの呼び出し

t_inf = time(ε0Δε, E, θ, θ0, α1, γ2, γ4, β1, β2, β3, β4, β5, β6, β7) t_pixel = t_inf / 4000 ’ピクチャボックス内の1ピクセルあたりの時間

I_pixel = Ip / 4000 ’ピクチャボックス内の1ピクセルあたりの過渡電流

With Form2

.Show ’Form2を参照

α1,α2,γ3,およびθ0の決定値をForm2に四捨五入して表示 .Label6.Caption = Format(α1 * 1000, "##0")

.Label7.Caption = Format(α2 * 1000, "##0") .Label8.Caption = Format(α3 * 1000, "##0") .Label9.Caption = Format(γ3 * 1000, "##0") .Label10.Caption = Format(θ0 * 180 / π, "##0.00") With .Picture1

.AutoRedraw = True

.BackColor = RGB(255, 255, 255) ’Picture1の背景を白にする

.ScaleTop = -4255 ’Picture1の上辺を-4255に設定

.ScaleLeft = -800 ’Picture1の左辺を-800に設定

.DrawWidth = 1 ’Picture1内の線幅を1に設定

.FontSize = 12 ’Picture1内の文字サイズを12に設定(基本)

.FontBold = True ’Picture1内の文字を太字に設定

Form2.Picture1.Line (0, 0)-(4255, 0), RGB(0, 0, 0) ’x軸の描画 Form2.Picture1.Line (0, -4255)-(0, 0), RGB(0, 0, 0) ’y軸の描画 Form2.Picture1.Line (0, -4255)-(4255, -4255), RGB(0, 0, 0) ’上辺横線の描画 Form2.Picture1.Line (4255, -4255)-(4255, 0), RGB(0, 0, 0) ’右辺横線の描画

’(tp,0)-(tp,Ip)間を点線で結ぶ .DrawStyle = 2

Form2.Picture1.Line (Fix(tp / t_pixel), 0)-(Fix(tp / t_pixel), _ -Fix(Ip / I_pixel)), RGB(0, 204, 255)

’(0,Ip)-(tp,Ip)間を点線で結ぶ

Form2.Picture1.Line (0, -Fix(Ip / I_pixel))-(Fix(tp / t_pixel), _ -Fix(Ip / I_pixel)), RGB(0, 204, 255) .DrawStyle = 0

’x 軸のメモリおよびラベルをPicture1に描画////////////////////////////////////

t_label = Fix(0.0001 / t_pixel) t_labels = 0

Do While t_labels <= 4255

If t_labels Mod 5 * t_label = 0 Then

Form2.Picture1.Line (t_labels, 0)-(t_labels, -150), RGB(0, 0, 0) Form2.Picture1.Line (t_labels, -4105)-(t_labels, -4255), RGB(0, 0, 0)

ラベルがメモリの中心になるように調整 If t_labels / t_label Mod 2 = 0 Then

.CurrentX = t_labels - 150 .CurrentY = 100

Form2.Picture1.Print 0.1 * t_labels / t_label Else

.CurrentX = t_labels - 220 .CurrentY = 100

Form2.Picture1.Print 0.1 * t_labels / t_label End If

Else

Form2.Picture1.Line (t_labels, 0)-(t_labels, -100), RGB(0, 0, 0) Form2.Picture1.Line (t_labels, -4155)-(t_labels, -4255), RGB(0, 0, 0) End If

t_labels = t_labels + t_label Loop

’/////////////////////////////////////////////////////////////////////////////

’y 軸のメモリおよびラベルをPicture1に描画/////////////////////////////////////

I_label = Fix(0.000005 / I_pixel) I_labels = 0

Do While I_labels >= -4255

If I_labels Mod 2 * I_label = 0 Then

Form2.Picture1.Line (0, I_labels)-(150, I_labels), RGB(0, 0, 0) Form2.Picture1.Line (4105, I_labels)-(4255, I_labels), RGB(0, 0, 0)

ラベルがメモリの中心になるように調整 If I_labels = 0 Then

.CurrentX = -320

.CurrentY = I_labels - 120 Form2.Picture1.Print 0

Else

.CurrentX = -450

.CurrentY = I_labels - 120

Form2.Picture1.Print -5 * I_labels / I_label End If

Else

Form2.Picture1.Line (0, I_labels)-(100, I_labels), RGB(0, 0, 0) Form2.Picture1.Line (4155, I_labels)-(4255, I_labels), RGB(0, 0, 0) End If

I_labels = I_labels - I_label Loop

’/////////////////////////////////////////////////////////////////////////////

End With ’Picture1With終了

End With ’Form2With終了

実験結果をPicture1に描画 For it = 1 To data - 1

Form2.Picture1.Line ((it - 1) * Δt / t_pixel, _

-iI((it - 1)) / I_pixel)-(it * Δt / t_pixel, -iI(it) _ / I_pixel), RGB(0, 0, 0)

Next it

導出したα1,α2,α3,γ3,およびθ0における過渡電流波形のPicture1への描画//////////

θ = θ0 E = V / L

Do While θ < π / 2

’Functionプロシジャtimeの呼び出し

t = time(ε0Δε, E, θ, θ0, α1, γ2, γ4, β1, β2, β3, β4, β5, β6, β7)

過渡電流

I1 = S * (ε0Δε * Sin(2 * θ)) ^ 2 * E ^ 3

I2 = (α1 * Sin(2 * θ) ^ 2 / 2 - γ2 * Cos(2 * θ) + γ4)

I3 = (α1 * γ1 + γ2 ^ 2) * Sin(2 * θ) ^ 2 - γ1 ^ 2 - γ2 ^ 2 + 2 * γ1 * γ4 I = I1 * I2 / I3

Print #2, t, I ’解析解によるフィティング波形の書き込み

過渡電流の計算結果をPicture1に描画

Form2.Picture1.PSet (t / t_pixel, -I / I_pixel), RGB(0, 0, 255) θ = θ + π / 1800

Loop

’/////////////////////////////////////////////////////////////////////////////////////

グラフのキャプションをPicture1に描画/////////////////////////////////////////////////

With Form2

With .Picture1

.FontSize = 14 ’文字サイズを14に設定

描画開始位置 .CurrentX = 2500 .CurrentY = -4000

Form2.Picture1.Print "experiment"

Form2.Picture1.Line (2000, -3850)-(2400, -3850), RGB(0, 0, 0)

描画開始位置 .CurrentX = 2500 .CurrentY = -3600

Form2.Picture1.Print "theory"

Form2.Picture1.Line (2000, -3450)-(2400, -3450), RGB(0, 0, 255) .FontSize = 12 ’文字サイズを12に設定

描画開始位置 .CurrentX = 2000 .CurrentY = -3200

Form2.Picture1.Print Text4.Text + "V"

描画開始位置 .CurrentX = 2000 .CurrentY = -2900

Form2.Picture1.Print "tp"

描画開始位置 .CurrentX = 2400 .CurrentY = -2900

Form2.Picture1.Print Format(tp * 1000, "##0.00")

描画開始位置 .CurrentX = 2900 .CurrentY = -2900

Form2.Picture1.Print "ms"

描画開始位置

.CurrentX = 2000 .CurrentY = -2600

Form2.Picture1.Print "Ip"

描画開始位置 .CurrentX = 2400 .CurrentY = -2600

Form2.Picture1.Print Format(Ip * 1000000#, "##0.0")

描画開始位置 .CurrentX = 2900 .CurrentY = -2600

Form2.Picture1.Print "μA"

.ScaleMode = vbPixels ’ ピクセル単位に設定

描画開始位置

.CurrentX = .ScaleWidth * 7 / 16 .CurrentY = .ScaleHeight * 15 / 16 .FontSize = 16 ’文字サイズを16に設定

Form2.Picture1.Print "Time (ms)" ’x軸のキャプション

フォントを90°回転させて表示 lngHeight = 20 ’フォントの高さ

lngWidth = 0 ’フォントの幅(高さにあった幅で描画する場合は0)

intAngle = 90

フォントの作成 With .Font

lnghNewFont = CreateFont(lngHeight, lngWidth, intAngle * 10, _

intAngle * 10, .Weight, .Italic, .Underline, _ .Strikethrough, .Charset, 0, 0, 0, 0, .Name) End With ’FontWith終了

作成したフォントを選択

lnghOriginalFont = SelectObject(.hdc, lnghNewFont)

描画開始位置

.CurrentX = .ScaleWidth / 100 .CurrentY = .ScaleHeight * 5 / 8

Form2.Picture1.Print "Current (μA)" ’y軸のキャプション

lnghNewFont = SelectObject(.hdc, lnghOriginalFont) ’ 元のフォントに戻す End With ’Picture1With終了

DeleteObject lnghNewFont ’ オブジェクトを破棄 End With ’Form2With終了

End If

結果をExcellへ表示///////////////////////////////////////////////////////////////////////

If Check2.Value = 1 Then

’Excelの起動

Set ExObj = CreateObject("Excel.Application") ExObj.Application.Visible = True

’WorkBookの生成 ExObj.WorkBooks.Add

ExObj.Application.Cells(1, 6).Value = "α1(mPa s)"

ExObj.Application.Cells(2, 6).Value = "α2(mPa s)"

ExObj.Application.Cells(3, 6).Value = "γ3(mPa s)"

ExObj.Application.Cells(4, 6).Value = "θ0(degree)"

ExObj.Application.Cells(1, 7).Value = α1 * 1000 ExObj.Application.Cells(2, 7).Value = α2 * 1000 ExObj.Application.Cells(3, 7).Value = γ3 * 1000 ExObj.Application.Cells(4, 7).Value = θ0 * 180 / π

’Excelに計算結果を出力////////////////////////////////////////////////////////////////

For it = 1 To data - 1

ExObj.Application.Cells(it, 1).Value = it * Δt ExObj.Application.Cells(it, 2).Value = iI(it) Next it

導出したα1,α2,α3,γ3,およびθ0における過渡電流波形のPicture1への描画//////////

iy = 1 θ = θ0 E = iv * 10 / L Do While θ < π / 2

’Functionプロシジャtimeの呼び出し

t = time(ε0Δε, E, θ, θ0, α1, γ2, γ4, β1, β2, β3, β4, β5, β6, β7)

過渡電流

I1 = S * (ε0Δε * Sin(2 * θ)) ^ 2 * E ^ 3

I2 = (α1 * Sin(2 * θ) ^ 2 / 2 - γ2 * Cos(2 * θ) + γ4)

I3 = (α1 * γ1 + γ2 ^ 2) * Sin(2 * θ) ^ 2 - γ1 ^ 2 - γ2 ^ 2 + 2 * γ1 * γ4 I = I1 * I2 / I3

Print #2, t, I

過渡電流の計算結果をExcelに描画

ExObj.Application.Cells(iy, 3).Value = t ExObj.Application.Cells(iy, 4).Value = I iy = iy + 1

θ = θ + π / 1800 Loop

’/////////////////////////////////////////////////////////////////////////////////////

End If

’/////////////////////////////////////////////////////////////////////////////////////////

Close #1 Close #2 Exit Sub Cancel:

With Form3 .Show

.Label1.Caption = Error(Err.Number) .Command1.Caption = "OK"

End With Close #1 Close #2 Exit Sub Error:

With Form3 .Show

.Label1.Caption = "値が条件を満たしません。"

.Command1.Caption = "OK"

End With Close #1 Close #2 Exit Sub End Sub

Private Sub Text1_Change() Unload Form2

Unload Form3

Command1.Caption = "START"

End Sub

Private Sub Text2_Change() Unload Form2

Unload Form3

Command1.Caption = "START"

End Sub

Private Sub Text3_Change() Unload Form2

Unload Form3

Command1.Caption = "START"

End Sub

Private Sub Text4_Change() Unload Form2

Unload Form3

Command1.Caption = "START"

End Sub

Private Sub Option1_Click() Unload Form2

Unload Form3

Command1.Caption = "START"

End Sub

Private Sub Option2_Click() Unload Form2

Unload Form3

Command1.Caption = "START"

End Sub

Private Sub Check1_Click() Unload Form2

Unload Form3

Command1.Caption = "START"

End Sub

Private Sub Check2_Click() Unload Form2

Unload Form3

Command1.Caption = "START"

End Sub

”Form2”

Private Sub Form_Load()

Label1.Caption = "α_1[mPa s]" ’Leslie粘性係数 Label2.Caption = "α_2[mPa s]"

Label3.Caption = "α_3[mPa s]"

Label4.Caption = "γ_3[mPa s]"

Label5.Caption = "θ_0[degree]" ’プレチルト角 Command1.Caption = "CONTINUE"

Command2.Caption = "FINISH"

End Sub

Private Sub Command1_Click() Form1.Command1.Caption = "START"

Unload Form2 End Sub

Private Sub Command2_Click() Unload Form1

Unload Form2 End Sub

”Form3”

Private Sub Command1_Click() Close #1

Close #2 Unload Form3 End Sub

”Module1”

’I_sumについてのFunctionプロシジャintegration/////////////////////////////////////////////////

Public Function integration(it_start, it_end, iI() As Double) As Double

電流波形の面積の計算(シンプソンの数値積分) If (it_end - it_start) Mod 2 = 0 Then

I_even = 0 I_odd = 0

For it_sum = it_start + 1 To it_end - 1 If it_sum Mod 2 = 0 Then

I_even = I_even + iI(it_sum) Else

I_odd = I_odd + iI(it_sum) End If

Next it_sum

I_sum = Δt * (iI(it_start) + 4 * I_odd + 2 * I_even + iI(it_end)) / 3 Else

I_even = 0 I_odd = 0

For it_sum = it_start + 1 To it_end - 2 If it_sum Mod 2 = 0 Then

I_even = I_even + iI(it_sum) ElseI_odd = I_odd + iI(it_sum) End If

Next it_sum

I_sum = Δt * ((iI(it_start) + 4 * I_odd + 2 * I_even + iI(it_end - 1)) / 3 _ + (iI(it_end - 1) + iI(it_end)) / 2)

End If

integration = I_sum ’I_sumintegrationの値を返す End Function

’/////////////////////////////////////////////////////////////////////////////////////////////

’tについてのFunctionプロシジャtime////////////////////////////////////////////////////////////

Public Function time(ε0Δε, E, θ, θ0, α1, γ2, γ4, β1, β2, β3, β4, β5, β6, β7) _ As Double

If α1 <> 0 And β1 > 0 Then