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 : Sélectionner tout - Visualiser dans une fenêtre à part
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![]()
Partager