adapter formules et calculs
Bonjour, je travaille actuellement sur la création d'un logiciel d'hydraulique se basant sur la formule de Caquot. Je veux justement appliquer cette formule dans le cas de deux canalisations en série. Dans une de mes formes, j'ai créé un DataGridView1 que je remplie (ValeurST, ValeurL, etc) je le fait pour plusieurs lignes de tableaux (chaque ligne correspond à une branche du réseau de canalisations). Dans une autre forme (Form4), j'ai créé 2 combobox (cbx_branches1 et 2), me permettant de choisir les deux branches que je veux mettre en série. Pour l'instant j'ai réussi à le faire pour 2 branches, les branches 1 et 2.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
| Public Class Form4
Private Sub Form4_Load1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
cbx_branches1.Items.Add("branche 1")
cbx_branches1.Items.Add("branche 2")
cbx_branches1.Items.Add("branche 3")
cbx_branches1.Items.Add("branche 4")
cbx_branches1.Items.Add("branche 5")
cbx_branches1.Items.Add("branche 6")
cbx_branches1.Items.Add("branche 7")
cbx_branches1.Items.Add("branche 8")
cbx_branches1.Items.Add("branche 9")
cbx_branches1.Items.Add("branche 10")
cbx_branches1.Items.Add("branche 11")
cbx_branches1.Items.Add("branche 12")
cbx_branches1.Items.Add("branche 13")
cbx_branches1.Items.Add("branche 14")
cbx_branches1.Items.Add("branche 15")
cbx_branches1.Items.Add("branche 16")
cbx_branches1.Items.Add("branche 17")
cbx_branches1.Items.Add("branche 18")
cbx_branches1.Items.Add("branche 19")
cbx_branches1.Items.Add("branche 20")
End Sub
Private Sub Form4_Load2(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
cbx_branches2.Items.Add("branche 1")
cbx_branches2.Items.Add("branche 2")
cbx_branches2.Items.Add("branche 3")
cbx_branches2.Items.Add("branche 4")
cbx_branches2.Items.Add("branche 5")
cbx_branches2.Items.Add("branche 6")
cbx_branches2.Items.Add("branche 7")
cbx_branches2.Items.Add("branche 8")
cbx_branches2.Items.Add("branche 9")
cbx_branches2.Items.Add("branche 10")
cbx_branches2.Items.Add("branche 11")
cbx_branches2.Items.Add("branche 12")
cbx_branches2.Items.Add("branche 13")
cbx_branches2.Items.Add("branche 14")
cbx_branches2.Items.Add("branche 15")
cbx_branches2.Items.Add("branche 16")
cbx_branches2.Items.Add("branche 17")
cbx_branches2.Items.Add("branche 18")
cbx_branches2.Items.Add("branche 19")
cbx_branches2.Items.Add("branche 20")
End Sub
Private Sub cbx_branches1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbx_branches1.SelectedIndexChanged
If cbx_branches1.Text = "branche 1" Then
Dim ValeurST1 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(0).Cells("Surfacetotale").Value)
Dim ValeurL1 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(0).Cells("longueur").Value)
Dim ValeurCI1 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(0).Cells("Coefficientimpermeabilisation").Value)
Dim ValeurP1 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(0).Cells("pente").Value)
End If
If cbx_branches1.Text = "branche 2" Then
Dim ValeurST2 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(1).Cells("Surfacetotale").Value)
Dim ValeurL2 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(1).Cells("longueur").Value)
Dim ValeurCI2 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(1).Cells("Coefficientimpermeabilisation").Value)
Dim ValeurP2 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(1).Cells("pente").Value)
End If
End Sub
Private Sub but_calcser_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles but_calcser.Click
Me.LabelQserie.Text = "Qserie = " & CalculCaquotSerie().ToString("0.0#") & " l/s"
End Sub
Function CalculCaquotSerie() As Double
Dim a2 As Double = Convert.ToDouble(Form3.Labela2.Text)
Dim b2 As Double = Convert.ToDouble(Form3.Labelb2.Text)
Dim ValeurST1 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(0).Cells("Surfacetotale").Value)
Dim ValeurST2 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(1).Cells("Surfacetotale").Value)
Dim ValeurL1 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(0).Cells("longueur").Value)
Dim ValeurL2 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(1).Cells("longueur").Value)
Dim ValeurCI1 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(0).Cells("Coefficientimpermeabilisation").Value)
Dim ValeurCI2 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(1).Cells("Coefficientimpermeabilisation").Value)
Dim ValeurP1 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(0).Cells("pente").Value)
Dim ValeurP2 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(1).Cells("pente").Value)
Dim ValeurSTserie As Double
Dim ValeurLserie As Double
Dim ValeurCIserie As Double
Dim ValeurPserie As Double
ValeurSTserie = ValeurST1 + ValeurST2
ValeurLserie = ValeurL1 + ValeurL2
ValeurCIserie = (ValeurCI1 * ValeurST1 + ValeurCI2 * ValeurST2) / (ValeurST1 + ValeurST2)
ValeurPserie = ((ValeurL1 + ValeurL2) / ((ValeurL1 / (ValeurP1) ^ (1 / 2)) + (ValeurL2 / (ValeurP2) ^ (1 / 2)))) ^ 2
Return ((((a2 / 60) / 6.6) * (0.28 * (ValeurLserie / 100) ^ 0.84 * (ValeurSTserie / 10000) ^ -0.42) ^ -b2) ^ (1 / (1 - 0.287 * b2))) * _
(ValeurCIserie ^ (1 / (1 - 0.287 * b2))) * _
((ValeurPserie / 100) ^ (0.41 * b2 / (1 - 0.287 * b2))) * _
((ValeurSTserie / 10000) ^ ((0.95 - 0.507 * b2) / (1 - 0.287 * b2))) * 1000
End Function
End Class |
Mais j'aimerais adapter ce calcul à l'ensemble du système et ainsi pouvoir le faire avec toutes les branches existantes (3, 4, 5, etc). Mais je ne vois pas comment faire sans que cela soit très long.
Pouvez-vous m'aider?
Merci.
PS: desolé pour le titre, c'est pas très évident à trouver :(