C. Del Turco Posted April 10, 2024 Report Posted April 10, 2024 (edited) Per eventuali sviluppi compresi nel post: link al calcolatore SONARMATH (per la determinazione dei parametri acustci del sonar) fig. 1 Il dimensionamento delle basi idrofoniche rettilinee, fig 1, in banda di frequenze è fondamentale nel progetto del sonar e nella valutazione delle portate di scoperta. Detta operazione, sviluppata in Visual Basic, consente la determinazione dei parametri della direttività di una specifica base idrofonica in una banda di frequenze di lavoro F1- F2, in particolare il guadagno DI , la larghezza Δ delta del lobo principale a due livelli diversi d’ampiezza e annesso grafico. Pannello di controllo Il pannello di controllo che governa la routine di calcolo è formato da: fig. 2 Nel software la rispondenza tra numero distintivo e oggetti è indicata dai numeri rossi riportati in figura 3: fig. 3 Il computo di R(alfa) ed altre caratteristiche salienti della base idrofonica, quale ad esempio il tracciamento della curva di direttività sono affidate ad una routine di calcolo in Visual Basic della quale il listato: Listato del programma Private Sub Form_Paint() For xi = 0 To 6440 Step 322 For yi = 0 To 4480 Step 28 PSet (550 + xi, 500 + yi) Next yi Next xi For yi = 0 To 4480 Step 224 For xi = 0 To 6440 Step 42 PSet (550 + xi, 500 + yi) Next xi Next yi Line (550 + 3220, 500)-(550 + 3220, 500 + 4480) Line (550, 4480 + 500)-(6440 + 550, 500 + 4480) End Sub Private Sub text1_KeyPress(KeyAscii As Integer) If InStr("-+.0123456789" + Chr(&H8), Chr(KeyAscii)) = 0 Then _ KeyAscii = 0 End Sub Private Sub text2_KeyPress(KeyAscii As Integer) If InStr("-+.0123456789" + Chr(&H8), Chr(KeyAscii)) = 0 Then _ KeyAscii = 0 End Sub Private Sub text3_KeyPress(KeyAscii As Integer) If InStr("-+.0123456789" + Chr(&H8), Chr(KeyAscii)) = 0 Then _ KeyAscii = 0 End Sub Private Sub text4_KeyPress(KeyAscii As Integer) If InStr("-+.0123456789" + Chr(&H8), Chr(KeyAscii)) = 0 Then _ KeyAscii = 0 End Sub Private Sub Command1_Click() Cls For xi = 0 To 6440 Step 322 For yi = 0 To 4480 Step 28 PSet (550 + xi, 500 + yi) Next yi Next xi For yi = 0 To 4480 Step 224 For xi = 0 To 6440 Step 42 PSet (550 + xi, 500 + yi) Next xi Next yi Line (550, 500)-(550, 500 + 4480) Line (550, 4480 + 500)-(6440 + 550, 500 + 4480) Line (550 + 3220, 500)-(550 + 3220, 500 + 4480) For alfa = 0 To 180 Step 0.01 f1 = Val(Text1.Text) If Val(Text1.Text) = 0 Then GoTo salto f2 = Val(Text2.Text) If Val(Text2.Text) = 0 Then GoTo salto L = Val(Text3.Text) If Val(Text3.Text) = 0 Then GoTo salto n = Val(Text4.Text) If Val(Text4.Text) = 0 Then GoTo salto d1 = L / (n - 1) p = (f2 - f1) / f1 j3 = 90 x = 3.14 * d1 * (f1 / 1530) * Sin(((alfa - j3) + 0.000001) * (3.14 / 180)) For M = 1 To (n - 1) b = (Sin(M * p * x)) / (M * p * x) c = Cos((p + 2) * M * x) d = (n - M) e = (b * c * d) k = k + e Next M s = ((2 / (n ^ 2)) * k) + (1 / n) t = Sqr(s) k = 0 Circle ((550 + 2 * alfa * 6440 / 360), 500 + (2 * 2240 - 2 * 2240 * t)), _ 10, vbRed Next salto: End Sub Esempio d’impiego: Digitazione variabili nel pannello di controllo in figura 5 il risultato del calcolo: fig. 4 Edited June 25, 2024 by C. Del Turco Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.