Private Sub Command4_Click() Dim i As Integer Dim dd As Double Dim dd2 As Double Dim dd3 As Double Dim appoB As Double Dim appo7 As Double Dim appo4 As Double Dim appo2 As Double Dim appo6 As Double Dim appo8 As Double Dim appo9 As Double Dim StrLog As String ABORT = False INIT_TIMER = GetTickCount CStop.Visible = True Command4.Enabled = False Command2.Enabled = False INDICE_MATRICE1 = TINDICE_MATRICE1 INDICE_MATRICE2 = TINDICE_MATRICE2 ReDim AAA(INDICE_MATRICE2) As Double ReDim BBB(INDICE_MATRICE2) As Double ReDim CCC(INDICE_MATRICE2) As Double ReDim psi(INDICE_MATRICE1, INDICE_MATRICE2) As Double On Error GoTo yy: Rho = GiveMeDouble(TRho.Text) Vfase = GiveMeDouble(TVFase.Text) V0 = GiveMeDouble(TV0.Text) deltat = GiveMeDouble(TDeltaT.Text) nitertemp = GiveMeDouble(Tnitertemp.Text) N = GiveMeDouble(TN.Text) A = PIGRECO * GiveMeDouble(TD.Text) * GiveMeDouble(TD.Text) / 4# TA.Text = Format(A, "0.0000") p = GiveMeDouble(TP.Text) * 10000 F = p * A TF.Text = Format(F, "0.0000") tot = GiveMeDouble(TDeltaT.Text) * GiveMeDouble(Tnitertemp.Text) * GiveMeDouble(TN.Text) Ttot.Text = tot B = Vfase * Vfase * Rho TB.Text = Format(B, "0.0000") L0 = GiveMeDouble(Tltot.Text) / 10000# TL0.Text = Format(L0, "0.0000") LStatus.Caption = "Working..." Form1.Refresh For i = 1 To INDICE_MATRICE2 psi(0, i) = L0 + psi(0, i - 1) 'prima colonna nel foglio "A" AAA(i) = psi(0, i) Next i For i = 0 To INDICE_MATRICE2 BBB(i) = AAA(i) - V0 * deltat Next i 'girotondo 0 If CLogFile.Value Then Open "LogFile.txt" For Output As #1 CCC(0) = 2 * BBB(0) - AAA(0) + 1 / Rho * (deltat / L0) ^ 2 * (p * L0 + B * (BBB(1) - BBB(0) - L0)) For i = 1 To INDICE_MATRICE2 - 1 CCC(i) = 2 * BBB(i) - AAA(i) + B / Rho * (deltat / L0) ^ 2 * (BBB(i + 1) - 2 * BBB(i) + BBB(i - 1)) Next i CCC(INDICE_MATRICE2) = 2 * BBB(INDICE_MATRICE2) - AAA(INDICE_MATRICE2) + B / Rho * (deltat / L0) ^ 2 * (BBB(INDICE_MATRICE2) - BBB(INDICE_MATRICE2 - 1) - L0) For J = 1 To nitertemp 'girotondo 1 For K = 0 To N - 2 AAA(0) = 2 * CCC(0) - BBB(0) + 1 / Rho * (deltat / L0) ^ 2 * (p * L0 + B * (CCC(1) - CCC(0) - L0)) For i = 1 To 9998 AAA(i) = 2 * CCC(i) - BBB(i) + B / Rho * (deltat / L0) ^ 2 * (CCC(i + 1) - 2 * CCC(i) + CCC(i - 1)) Next i AAA(INDICE_MATRICE2) = 2 * CCC(INDICE_MATRICE2) - BBB(INDICE_MATRICE2) + B / Rho * (deltat / L0) ^ 2 * (CCC(INDICE_MATRICE2) - CCC(INDICE_MATRICE2 - 1) - L0) 'girotondo 2 BBB(0) = 2 * AAA(0) - CCC(0) + 1 / Rho * (deltat / L0) ^ 2 * (p * L0 + B * (AAA(1) - AAA(0) - L0)) For i = 1 To INDICE_MATRICE2 - 1 BBB(i) = 2 * AAA(i) - CCC(i) + B / Rho * (deltat / L0) ^ 2 * (AAA(i + 1) - 2 * AAA(i) + AAA(i - 1)) Next i BBB(INDICE_MATRICE2) = 2 * AAA(INDICE_MATRICE2) - CCC(INDICE_MATRICE2) + B / Rho * (deltat / L0) ^ 2 * (AAA(INDICE_MATRICE2) - AAA(INDICE_MATRICE2 - 1) - L0) 'girotondo extra CCC(0) = 2 * BBB(0) - AAA(0) + 1 / Rho * (deltat / L0) ^ 2 * (p * L0 + B * (BBB(1) - BBB(0) - L0)) For i = 1 To INDICE_MATRICE2 - 1 CCC(i) = 2 * BBB(i) - AAA(i) + B / Rho * (deltat / L0) ^ 2 * (BBB(i + 1) - 2 * BBB(i) + BBB(i - 1)) Next i CCC(INDICE_MATRICE2) = 2 * BBB(INDICE_MATRICE2) - AAA(INDICE_MATRICE2) + B / Rho * (deltat / L0) ^ 2 * (BBB(INDICE_MATRICE2) - BBB(INDICE_MATRICE2 - 1) - L0) Next K For i = 0 To INDICE_MATRICE2 psi(J, i) = CCC(i) Next i If J = 1 Then N = N + 1 TJ.Text = J strfile = J & ") " & psi(J, 0) & " " & Chr(9) & psi(J, INDICE_MATRICE2) & vbCrLf If CLogFile.Value Then Print #1, strfile If J Mod 10 = 0 Then Shape2.Width = J / Tnitertemp * 10335 Shape2.Refresh TJ.Refresh End If If J Mod 10 = 0 Then Form1.Refresh DoEvents If ABORT Then CStop.Visible = False Command4.Enabled = True Command2.Enabled = True LStatus.Caption = "Stopped!" If CLogFile.Value Then Close #1 Exit Sub End If End If Next J ok = True yy: If Not ok Then MsgBox "Error", vbCritical, "Error" End If If CLogFile.Value Then Close #1 DammiValoreTimer = (GetTickCount - INIT_TIMER) / 1000# LStatus.Caption = "Elaboration : " & Format(DammiValoreTimer, "0.000") & " s" ' If CFast.Value = 1 Then TLog.Text = StrLog Command4.Enabled = True Command2.Enabled = True CStop.Visible = False If CLogFileExc.Value Then save_file_excel End Sub