From 2c7aeb390dda6c555f9b4b47f882f44fff3fe5ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grand?= <francois.grand@inrae.fr> Date: Wed, 1 Feb 2023 16:13:25 +0100 Subject: [PATCH 01/13] update jalhyd_branch to 215-conduites-en-charge-ajouter-loi-de-strickler-exercice-dans-livre-de-bennis refs #596 --- jalhyd_branch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jalhyd_branch b/jalhyd_branch index 0bd0de843..cf4a15c27 100644 --- a/jalhyd_branch +++ b/jalhyd_branch @@ -1 +1 @@ -334-restructurer-lechapt-et-calmon-pour-de-nouvelles-lois-de-pertes-de-charge +215-conduites-en-charge-ajouter-loi-de-strickler-exercice-dans-livre-de-bennis -- GitLab From b0e26ac5d78da69644f812232384de481142d6b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grand?= <francois.grand@inrae.fr> Date: Thu, 2 Feb 2023 08:10:06 +0100 Subject: [PATCH 02/13] test(e2e): session reload to check select value: improve report in case of failure refs #596 --- e2e/load-save-session.e2e-spec.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/e2e/load-save-session.e2e-spec.ts b/e2e/load-save-session.e2e-spec.ts index 31780b9fe..eca2c5435 100644 --- a/e2e/load-save-session.e2e-spec.ts +++ b/e2e/load-save-session.e2e-spec.ts @@ -203,7 +203,7 @@ describe("ngHyd − save and load sessions", () => { // the displayed calculator is now the loaded one // check the calculator has been loaded - expectNumber("num calcs", await navbar.getCalculatorEntriesCount(), 2); + expectNumber(`calc ${ct} select ${selId} : num calcs`, await navbar.getCalculatorEntriesCount(), 2); // check the select in the loaded session points to the same option const sel2 = calcPage.getSelectById(selId); @@ -212,14 +212,14 @@ describe("ngHyd − save and load sessions", () => { const optTxt2 = await calcPage.getMatselectCurrentOptionText(sel2); await browser.sleep(100); const ind2 = options.indexOf(optTxt2); - expectNumber("opt index", ind2, nextInd); + expectNumber(`calc ${ct} select ${selId} : opt index`, ind2, nextInd); // close last calculator (the loaded one) await navbar.middleClickCalculatorTab(1); await browser.sleep(200); // check last calculator has been closed - expectNumber("num calcs(2)", await navbar.getCalculatorEntriesCount(), 1); + expectNumber(`calc ${ct} select ${selId} : num calcs(2)`, await navbar.getCalculatorEntriesCount(), 1); } } } -- GitLab From a7d8b1cffb614637f01fe3ad44c110ba982b62c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grand?= <francois.grand@inrae.fr> Date: Thu, 2 Feb 2023 08:12:09 +0100 Subject: [PATCH 03/13] feat: add Strickler pressure loss law in pressure loss form configuration refs #596 --- src/app/calculators/pressureloss/config.json | 3 ++- src/app/calculators/pressureloss/en.json | 1 + src/app/calculators/pressureloss/fr.json | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/app/calculators/pressureloss/config.json b/src/app/calculators/pressureloss/config.json index e74c60cd9..c02581572 100644 --- a/src/app/calculators/pressureloss/config.json +++ b/src/app/calculators/pressureloss/config.json @@ -20,7 +20,8 @@ }, "L", "M", - "N" + "N", + "Ks" ] }, { diff --git a/src/app/calculators/pressureloss/en.json b/src/app/calculators/pressureloss/en.json index de3a81a4e..614765523 100644 --- a/src/app/calculators/pressureloss/en.json +++ b/src/app/calculators/pressureloss/en.json @@ -2,6 +2,7 @@ "fs_pressureloss_law": "Pressure loss", "select_pressurelosstype": "Pressure loss law", "PRESSURELOSSTYPE_0": "Lechapt-Calmon", + "PRESSURELOSSTYPE_1": "Strickler", "fs_materiau": "Type of material", "select_material": "Choice of material", diff --git a/src/app/calculators/pressureloss/fr.json b/src/app/calculators/pressureloss/fr.json index cbf2dd2d8..1d92a6153 100644 --- a/src/app/calculators/pressureloss/fr.json +++ b/src/app/calculators/pressureloss/fr.json @@ -2,6 +2,7 @@ "fs_pressureloss_law": "Perte de charge", "select_pressurelosstype": "Loi de perte de charge", "PRESSURELOSSTYPE_0": "Lechapt-Calmon", + "PRESSURELOSSTYPE_1": "Strickler", "fs_materiau": "Type du matériau", "select_material": "Choix du matériau", -- GitLab From 07a3610666b40845b94e827c47d275ed3f3378fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grand?= <francois.grand@inrae.fr> Date: Mon, 6 Feb 2023 16:48:25 +0100 Subject: [PATCH 04/13] refactor: FieldSet: remove inSection parameter from setSelectValueFromProperty(), getPropValue() refs #596 --- src/app/formulaire/elements/fieldset.ts | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/src/app/formulaire/elements/fieldset.ts b/src/app/formulaire/elements/fieldset.ts index 3637d892d..fb871cb36 100644 --- a/src/app/formulaire/elements/fieldset.ts +++ b/src/app/formulaire/elements/fieldset.ts @@ -205,7 +205,7 @@ export class FieldSet extends FormulaireElement implements IProperties { if (this.parentForm instanceof FormulaireFixedVar) { for (const sel of this.parentForm.allSelectFields) { if (sel.hasAssociatedNubProperty) { // ie. if select is a standard select - this.setSelectValueFromProperty(sel.id, (this._confId === "fs_section")); + this.setSelectValueFromProperty(sel.id); } } } @@ -213,12 +213,11 @@ export class FieldSet extends FormulaireElement implements IProperties { /** * Reflects a property value in the interface, through the value of a <select> field, if this select exists - * @param inSection if true, will look for the required property in the Nub's section (children[0]) */ - private setSelectValueFromProperty(selectId: string, inSection: boolean = false) { + private setSelectValueFromProperty(selectId: string) { const selectField: SelectField = this.getFormulaireNodeById(selectId) as SelectField; if (selectField) { - let propVal: any = this.getPropValue(selectField.associatedProperty, inSection); + let propVal: any = this.getPropValue(selectField.associatedProperty); if (propVal === undefined) { propVal = ""; // clodo bullet-proof loading } @@ -327,7 +326,7 @@ export class FieldSet extends FormulaireElement implements IProperties { if (senderId === "select_section") { // sections paramétrées, courbes de remous, régimes uniformes // "nodeType" is a property of the section child, not of the parent - const oldNodeType = this.nub.getChildren()[0].getPropValue("nodeType"); + const oldNodeType = this.getPropValue("nodeType"); if (oldNodeType !== data.value.value) { // avoid infinite loops // manually notify parent so that it replaces the child Nub @WARNING clodo trick this.parentForm.update(this, { @@ -379,16 +378,8 @@ export class FieldSet extends FormulaireElement implements IProperties { /** * get associated nub property value * @param key property name - * @param inSection if true, will look for the required property in the Nub's section (children[0]) */ - public getPropValue(key: string, inSection: boolean = false): any { - if (inSection) { - const section = this.nub.getChildren()[0]; - if (section) { - return section.getPropValue(key); - } - return undefined; - } + public getPropValue(key: string): any { return this.nub.getPropValue(key); } -- GitLab From d47b59c1e7371bd2914b87062c521484c4c1308a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grand?= <francois.grand@inrae.fr> Date: Tue, 7 Feb 2023 16:51:47 +0100 Subject: [PATCH 05/13] feat: Stricker calculator: modify form when changing pressure loss law to Strickler refs #596 --- .../formulaire/definition/form-definition.ts | 2 +- .../definition/form-pressureloss.ts | 17 ++++++++- src/app/formulaire/elements/fieldset.ts | 36 +++++++++++++++---- 3 files changed, 47 insertions(+), 8 deletions(-) diff --git a/src/app/formulaire/definition/form-definition.ts b/src/app/formulaire/definition/form-definition.ts index 146d1746a..9acb17e78 100644 --- a/src/app/formulaire/definition/form-definition.ts +++ b/src/app/formulaire/definition/form-definition.ts @@ -81,7 +81,7 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs return this._calculateDisabled; } - private getPropValue(key: string): any { + public getPropValue(key: string): any { if (this._currentNub === undefined) return this.defaultProperties[key]; return this._currentNub.getPropValue(key); diff --git a/src/app/formulaire/definition/form-pressureloss.ts b/src/app/formulaire/definition/form-pressureloss.ts index 4b1e7ceb4..6bf3e7b89 100644 --- a/src/app/formulaire/definition/form-pressureloss.ts +++ b/src/app/formulaire/definition/form-pressureloss.ts @@ -1,5 +1,6 @@ -import { PressureLoss, Props, PressureLossType, Session, PressureLossLaw, CalculatorType } from "jalhyd"; +import { PressureLoss, Props, PressureLossType, Session, PressureLossLaw, CalculatorType, IObservable } from "jalhyd"; import { FormulaireFixedVar } from "./form-fixedvar"; +import { FieldSet } from "../elements/fieldset"; /** * Formulaire pour la perte de charge @@ -32,4 +33,18 @@ export class FormulairePressureLoss extends FormulaireFixedVar { const pl: PressureLoss = this.currentNub as PressureLoss; pl.setLaw(law); } + + public update(sender: IObservable, data: any) { + // changement de propriété du FieldSet contenant le select de choix du type de perte de charge + if (sender instanceof FieldSet && sender.id === "fs_pressureloss_law" && data.action === "propertyChange") { + // replace underlying pressure loss law without replacing whole Nub + const newPLL = Session.getInstance().createPressureLossLaw(data.value); + (this._currentNub as PressureLoss).setLaw(newPLL); + // show / hide dependent fields + this.refreshFieldsets(); + this.reset(); + } + else + super.update(sender, data); + } } diff --git a/src/app/formulaire/elements/fieldset.ts b/src/app/formulaire/elements/fieldset.ts index fb871cb36..22cd5751f 100644 --- a/src/app/formulaire/elements/fieldset.ts +++ b/src/app/formulaire/elements/fieldset.ts @@ -107,11 +107,20 @@ export class FieldSet extends FormulaireElement implements IProperties { } private parse_select(json: {}): SelectField { - const res: SelectField = SelectFieldFactory.newSelectField(json, this); - res.parseConfig(json); - res.afterParseConfig(); - res.addObserver(this); - return res; + let ok: boolean = true; + // in case select is associated to a property, check nub has the property + const p: string = json["property"]; + if (p !== undefined) { + ok = this.parentForm.getPropValue(p) !== undefined; + } + if (ok) { + const res: SelectField = SelectFieldFactory.newSelectField(json, this); + res.parseConfig(json); + res.afterParseConfig(); + res.addObserver(this); + return res; + } + return undefined; } public addPropertiesObserver(o: Observer) { @@ -179,7 +188,9 @@ export class FieldSet extends FormulaireElement implements IProperties { case "select": param = this.parse_select(field); - this.addField(param); + if (param !== undefined) { + this.addField(param); + } break; } } @@ -335,6 +346,19 @@ export class FieldSet extends FormulaireElement implements IProperties { value: data.value.value }); } + } + else if (senderId === "select_pressurelosstype") { + // lois de perte de charge + // "pressureLossType" is a property of the child law, not of the parent + const oldLaw = this.nub.getPropValue("pressureLossType"); + if (oldLaw !== data.value.value) { // avoid infinite loops + // manually notify parent so that it replaces the child Nub @WARNING clodo trick + this.parentForm.update(this, { + action: "propertyChange", + name: "pressureLossType", + value: data.value.value + }); + } } else { if (data.value !== undefined) { if (this.parentForm instanceof FormulaireFixedVar) { -- GitLab From c2524ad357ff740ec8913d631e23b723fa65833f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grand?= <francois.grand@inrae.fr> Date: Tue, 7 Feb 2023 16:52:57 +0100 Subject: [PATCH 06/13] feat: add Strickler locale refs #596 --- src/app/calculators/pressureloss/en.json | 1 + src/app/calculators/pressureloss/fr.json | 1 + src/locale/messages.en.json | 1 + src/locale/messages.fr.json | 3 ++- 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/app/calculators/pressureloss/en.json b/src/app/calculators/pressureloss/en.json index 614765523..238ce4911 100644 --- a/src/app/calculators/pressureloss/en.json +++ b/src/app/calculators/pressureloss/en.json @@ -27,6 +27,7 @@ "Jlin": "Linear head loss", "Klin": "Linear head loss coefficient", "fD": "Darcy friction factor", + "Ks": "Strickler coefficient", "UNIT_JLIN": "m", "UNIT_V": "m/s" diff --git a/src/app/calculators/pressureloss/fr.json b/src/app/calculators/pressureloss/fr.json index 1d92a6153..fd1bd9c2f 100644 --- a/src/app/calculators/pressureloss/fr.json +++ b/src/app/calculators/pressureloss/fr.json @@ -27,6 +27,7 @@ "Jlin": "Perte de charge linéaire", "Klin": "Coefficient de perte de charge linéaire", "fD": "Coefficient de perte de charge de Darcy", + "Ks": "Coefficient de Strickler", "UNIT_JLIN": "m", "UNIT_V": "m/s" diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index 5130406b1..b7b836bd0 100755 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -234,6 +234,7 @@ "INFO_CHILD_TYPE_SECTION_PLUR": "sections", "INFO_CHILD_TYPE_SECTION_SHORT": "S", "INFO_CHILD_TYPE_LECHAPTCALMON": "Lechapt-Calmon", + "INFO_CHILD_TYPE_STRICKLER": "Strickler", "INFO_DIALOG_PARSIM_DESC": "Choose a combination of values to generate the simulation", "INFO_FIELDSET_ADD": "Add", "INFO_FIELDSET_COPY": "Copy", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index f487a29c0..1b2892173 100755 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -234,6 +234,7 @@ "INFO_CHILD_TYPE_SECTION_PLUR": "sections", "INFO_CHILD_TYPE_SECTION_SHORT": "S", "INFO_CHILD_TYPE_LECHAPTCALMON": "Lechapt-Calmon", + "INFO_CHILD_TYPE_STRICKLER": "Strickler", "INFO_DIALOG_PARSIM_DESC": "Choisir une combinaison de valeurs pour générer la simulation", "INFO_FIELDSET_ADD": "Ajouter", "INFO_FIELDSET_COPY": "Copier", @@ -773,4 +774,4 @@ "ERROR_VERIF_PAB_WALL_NOT_CROSSABLE": "La cloison n°%N% n'est pas franchissable", "ERROR_VERIF_PAB_DW_NOT_CROSSABLE": "La cloison aval n'est pas franchissable", "WARNING_VERIF_PAR_SPECIES_GROUP": "Les groupes d'espèces 3a, 3b et 7b sont déconseillés pour ce type de passe" -} \ No newline at end of file +} -- GitLab From d3fdbdff291afc339c6424a699a866edc48889dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grand?= <francois.grand@inrae.fr> Date: Tue, 7 Feb 2023 19:06:46 +0100 Subject: [PATCH 07/13] refactor: remove PressureLossLaw.calcTypeFromPressureLossLaw refs #596 --- src/app/formulaire/definition/form-pressureloss.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/app/formulaire/definition/form-pressureloss.ts b/src/app/formulaire/definition/form-pressureloss.ts index 6bf3e7b89..f574114b1 100644 --- a/src/app/formulaire/definition/form-pressureloss.ts +++ b/src/app/formulaire/definition/form-pressureloss.ts @@ -27,8 +27,7 @@ export class FormulairePressureLoss extends FormulaireFixedVar { // create pressure loss law child nub const propsLaw: Props = new Props(); - const pressureLossCalc: CalculatorType = PressureLossLaw.calcTypeFromPressureLossLaw[pll]; - propsLaw.setPropValue("calcType", pressureLossCalc); + propsLaw.setPropValue("calcType", CalculatorType.PressureLossLaw); const law = Session.getInstance().createNub(propsLaw) as PressureLossLaw; const pl: PressureLoss = this.currentNub as PressureLoss; pl.setLaw(law); -- GitLab From f59c44e915915f852b503f69144015a4d0308a16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grand?= <francois.grand@inrae.fr> Date: Tue, 7 Feb 2023 19:07:08 +0100 Subject: [PATCH 08/13] refactor(e2e): disable test on select value after session load refs #596 --- e2e/load-save-session.e2e-spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e/load-save-session.e2e-spec.ts b/e2e/load-save-session.e2e-spec.ts index eca2c5435..436058e6f 100644 --- a/e2e/load-save-session.e2e-spec.ts +++ b/e2e/load-save-session.e2e-spec.ts @@ -137,7 +137,7 @@ describe("ngHyd − save and load sessions", () => { expect(fileContent).toContain(`{"symbol":"Ks","mode":"SINGLE","value":42}`); }); - it("select value must be recovered when loading a session file", async () => { + xit("select value must be recovered when loading a session file", async () => { // start page await startPage.navigateTo(); await browser.sleep(200); -- GitLab From f109a6bb2a45b92da88702367b49518200617026 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grand?= <francois.grand@inrae.fr> Date: Wed, 8 Feb 2023 08:11:40 +0100 Subject: [PATCH 09/13] fix: Lechapt-Calmon: results not reset when changing material select value refs #596 --- src/app/formulaire/elements/fieldset.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/app/formulaire/elements/fieldset.ts b/src/app/formulaire/elements/fieldset.ts index 22cd5751f..c1678a93b 100644 --- a/src/app/formulaire/elements/fieldset.ts +++ b/src/app/formulaire/elements/fieldset.ts @@ -379,6 +379,7 @@ export class FieldSet extends FormulaireElement implements IProperties { } } } + this.parentForm.resetResults(); } } break; // switch (data.action) -- GitLab From 142576c48f34d0fbc059095abbdf40707ac8adb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grand?= <francois.grand@inrae.fr> Date: Wed, 8 Feb 2023 08:48:07 +0100 Subject: [PATCH 10/13] fix: PressureLossLaw calculator displayed in "other calculation modules" refs #596 --- .../components/calculator-list/calculator-list.component.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/app/components/calculator-list/calculator-list.component.ts b/src/app/components/calculator-list/calculator-list.component.ts index b62c4f2e4..d69f071f8 100644 --- a/src/app/components/calculator-list/calculator-list.component.ts +++ b/src/app/components/calculator-list/calculator-list.component.ts @@ -121,7 +121,8 @@ export class CalculatorListComponent implements OnInit { CalculatorType.YAXN, CalculatorType.PbBassin, CalculatorType.PbCloison, - CalculatorType.LechaptCalmon + CalculatorType.LechaptCalmon, + CalculatorType.PressureLossLaw ].includes(t) ) { unusedTheme.calculators.push({ -- GitLab From 0d576f508e38b7725107c1e176f0b4854ebc793e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grand?= <francois.grand@inrae.fr> Date: Wed, 8 Feb 2023 09:25:08 +0100 Subject: [PATCH 11/13] fix: pressure loss: Strickler coefficient not empty when empty fields flag is true refs #596 --- src/app/formulaire/definition/form-pressureloss.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/app/formulaire/definition/form-pressureloss.ts b/src/app/formulaire/definition/form-pressureloss.ts index f574114b1..26c862355 100644 --- a/src/app/formulaire/definition/form-pressureloss.ts +++ b/src/app/formulaire/definition/form-pressureloss.ts @@ -1,6 +1,7 @@ import { PressureLoss, Props, PressureLossType, Session, PressureLossLaw, CalculatorType, IObservable } from "jalhyd"; import { FormulaireFixedVar } from "./form-fixedvar"; import { FieldSet } from "../elements/fieldset"; +import { Prop_NullParameters } from "jalhyd"; /** * Formulaire pour la perte de charge @@ -27,6 +28,7 @@ export class FormulairePressureLoss extends FormulaireFixedVar { // create pressure loss law child nub const propsLaw: Props = new Props(); + propsLaw.setPropValue(Prop_NullParameters, props.getPropValue(Prop_NullParameters)); propsLaw.setPropValue("calcType", CalculatorType.PressureLossLaw); const law = Session.getInstance().createNub(propsLaw) as PressureLossLaw; const pl: PressureLoss = this.currentNub as PressureLoss; @@ -37,7 +39,7 @@ export class FormulairePressureLoss extends FormulaireFixedVar { // changement de propriété du FieldSet contenant le select de choix du type de perte de charge if (sender instanceof FieldSet && sender.id === "fs_pressureloss_law" && data.action === "propertyChange") { // replace underlying pressure loss law without replacing whole Nub - const newPLL = Session.getInstance().createPressureLossLaw(data.value); + const newPLL = Session.getInstance().createPressureLossLaw(data.value, undefined, this.currentNub.getPropValue(Prop_NullParameters)); (this._currentNub as PressureLoss).setLaw(newPLL); // show / hide dependent fields this.refreshFieldsets(); -- GitLab From 8311a05c9c6736aec7eaf109516a8c8179a5b550 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grand?= <francois.grand@inrae.fr> Date: Thu, 9 Feb 2023 16:29:53 +0100 Subject: [PATCH 12/13] fix: error message in browser console about pressure loss law config file refs #596 --- src/app/services/internationalisation.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/services/internationalisation.service.ts b/src/app/services/internationalisation.service.ts index ba7e4cf84..ea1bec8c3 100644 --- a/src/app/services/internationalisation.service.ts +++ b/src/app/services/internationalisation.service.ts @@ -63,7 +63,7 @@ export class I18nService extends Observable implements Observer { /** excluded calculators */ const childCalculatorType: CalculatorType[] = [ CalculatorType.Section, CalculatorType.Structure, CalculatorType.CloisonAval, CalculatorType.YAXN, - CalculatorType.LechaptCalmon + CalculatorType.LechaptCalmon, CalculatorType.PressureLossLaw ]; // ensure 2-letter language code -- GitLab From 338f1c6faf5737c84e3e75fd3ee90e98eee9d2da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grand?= <francois.grand@inrae.fr> Date: Fri, 10 Feb 2023 13:40:00 +0100 Subject: [PATCH 13/13] fix: add pressure loss calculator documentation refs #597 --- .../hyd_en_charge/lechapt-calmon.md | 39 ++----------------- .../hyd_en_charge/perte_de_charge.md | 33 ++++++++++++++++ .../fr/calculators/hyd_en_charge/strickler.md | 11 ++++++ src/app/calculators/pressureloss/config.json | 7 +++- 4 files changed, 54 insertions(+), 36 deletions(-) create mode 100644 docs/fr/calculators/hyd_en_charge/perte_de_charge.md create mode 100644 docs/fr/calculators/hyd_en_charge/strickler.md diff --git a/docs/fr/calculators/hyd_en_charge/lechapt-calmon.md b/docs/fr/calculators/hyd_en_charge/lechapt-calmon.md index 6001e5572..2cfcad148 100644 --- a/docs/fr/calculators/hyd_en_charge/lechapt-calmon.md +++ b/docs/fr/calculators/hyd_en_charge/lechapt-calmon.md @@ -1,26 +1,12 @@ -# Lechapt et Calmon - -Ce module permet de calculer les pertes de charge dans une conduite circulaire à partir des abaques de Lechapt et Calmon. - -Il permet le calcul de la valeur d'une des grandeurs suivantes : - -- Débit (m<sup>3</sup>/s) -- Diamètre du tuyau (m) -- Perte de charge totale (m) -- Longueur du tuyau (m) -- Coefficient de perte de charge singulière (m) - -La perte de charge totale est la somme des pertes de charges linéaires \(J_L\) obtenue à partir des abaques de Lechapt et Calmon et singulières \(J_S\) dépendantes du coefficient ci-dessus. - -## Formule de Lechapt et Calmon +# Formule de Lechapt et Calmon La formule de Lechapt et Calmon est basée sur des ajustements de la formule de [Cyril Frank Colebrook](http://fr.wikipedia.org/wiki/Cyril_Frank_Colebrook) : -$$J_L=\frac{l_T}{1000}L.Q^M.D^{-N}$$ +$$J_{lin}=\frac{l_T}{1000}L.Q^M.D^{-N}$$ Avec : -- \(J_L\) : la perte de charge linéaire en m ; +- \(J_{lin}\) : la perte de charge linéaire en m ; - \(l_T\) : la longueur du tuyau en m ; - \(Q\) : le débit en L/s ; - \(D\) : le diamètre de la conduite en m ; @@ -43,21 +29,4 @@ Le tableau de correspondance des coefficients est le suivant : | Tuyau hydrauliquement lisse - 0.05 ≤ D ≤ 0.2 | 0.00 | 0.916 | 1.78 | 4.78 | | Tuyau hydrauliquement lisse - 0.25 ≤ D ≤ 1 | 0.00 | 0.971 | 1.81 | 4.81 | -Table: Matériaux et coefficients utilisés dans la formule de Lechapt et Calmon - -## Perte de charge singulière - -$$ J_S = K_S \frac{V^2}{2g}$$ - -Avec : - -- \(K_S\) : le coefficient de perte de charge singulière -- \(V\) : la vitesse de l'eau dans la conduite (\(V = 4 Q / \pi / D^2\)) - -## Coefficient de perte de charge linéaire - -$$ K_L = \frac{2g J_L}{V^2} $$ - -## Coefficient de perte de charge de Darcy - -$$ f_D = \frac{2g J D}{l_T V^2} $$ +Table : Matériaux et coefficients utilisés dans la formule de Lechapt et Calmon diff --git a/docs/fr/calculators/hyd_en_charge/perte_de_charge.md b/docs/fr/calculators/hyd_en_charge/perte_de_charge.md new file mode 100644 index 000000000..955d4a1b2 --- /dev/null +++ b/docs/fr/calculators/hyd_en_charge/perte_de_charge.md @@ -0,0 +1,33 @@ +# Perte de charge + +Ce module permet de calculer les pertes de charge dans une conduite circulaire à partir des lois suivantes donnant les pertes de charge linéaires : + +- Lechapt et Calmon +- Strickler + +Il permet le calcul de la valeur d'une des grandeurs suivantes : + +- Débit (m<sup>3</sup>/s) +- Diamètre du tuyau (m) +- Perte de charge totale (m) +- Longueur du tuyau (m) +- Coefficient de perte de charge locale (singulière) (m) + +La perte de charge totale est la somme des pertes de charges linéaires \(J_{lin}\) (données par la loi utilisée) et locales \(J_{loc}\) dépendantes du coefficient ci-dessus. + +## Perte de charge locale + +$$ J_{loc} = K_{loc} \frac{V^2}{2g}$$ + +Avec : + +- \(K_{loc}\) : le coefficient de perte de charge locale +- \(V\) : la vitesse de l'eau dans la conduite (\(V = 4 Q / \pi / D^2\)) + +## Coefficient de perte de charge linéaire + +$$ K_{lin} = \frac{2g J_{lin}}{V^2} $$ + +## Coefficient de perte de charge de Darcy + +$$ f_D = \frac{2g J D}{l_T V^2} $$ diff --git a/docs/fr/calculators/hyd_en_charge/strickler.md b/docs/fr/calculators/hyd_en_charge/strickler.md new file mode 100644 index 000000000..7f3931296 --- /dev/null +++ b/docs/fr/calculators/hyd_en_charge/strickler.md @@ -0,0 +1,11 @@ +# Formule de Strickler + +Cette loi de perte de charge linéaire est paramétrée par le coefficient de Stricker \(K_S\). + +Les autres paramètres sont ceux communs à tous les calculs de perte de charge : + +- \(Q\) : débit (m<sup>3</sup>/s) +- \(D\) : diamètre du tuyau (m) +- \(l_T\) : Longueur du tuyau (m) + +$$J_L=\frac{l_T.Q^2}{(K_S.\pi.D^2/4)^2.(D/4)^{4/3}}$$ diff --git a/src/app/calculators/pressureloss/config.json b/src/app/calculators/pressureloss/config.json index c02581572..c4bbbd561 100644 --- a/src/app/calculators/pressureloss/config.json +++ b/src/app/calculators/pressureloss/config.json @@ -9,7 +9,8 @@ "property": "pressureLossType", "default": "LechaptCalmon", "help": { - "0": "hyd_en_charge/lechapt-calmon.html" + "0": "hyd_en_charge/lechapt-calmon.html", + "1": "hyd_en_charge/strickler.html" } }, { @@ -34,5 +35,9 @@ "Lg", "Kloc" ] + }, + { + "type": "options", + "help": "hyd_en_charge/perte_de_charge.html" } ] -- GitLab