diff --git a/spec/iterator/named_iterable_value.spec.ts b/spec/iterator/named_iterable_value.spec.ts index 42926eb2d7d5ac0cf1122c61a0c724cce037dd16..8770e8d0788f0138ee554e2eb243932100b1165d 100644 --- a/spec/iterator/named_iterable_value.spec.ts +++ b/spec/iterator/named_iterable_value.spec.ts @@ -9,7 +9,7 @@ import { ExtraResults, ParamDefinition, ParamDomainValue, Result, ResultElement // import { describe, expect, it, xdescribe, xit } from "../mock_jasmine"; function testParamDefinitionValues(vals: number[]): ParamDefinition { - const p: ParamDefinition = new ParamDefinition("aa", ParamDomainValue.ANY); + const p: ParamDefinition = new ParamDefinition(null, "aa", ParamDomainValue.ANY); p.paramValues.setValues(vals); @@ -61,7 +61,7 @@ describe("INamedIterableValues : ", () => { describe("ParamDefinition : ", () => { it("test 1", () => { const name = "aa"; - const p: ParamDefinition = new ParamDefinition(name, ParamDomainValue.ANY); + const p: ParamDefinition = new ParamDefinition(null, name, ParamDomainValue.ANY); expect(p.name).toEqual(name); }); diff --git a/spec/nubtest.ts b/spec/nubtest.ts index 710e3526b5b170efe7c10bc27bbe3c7ebe54f61f..8f48e5001cfe59081ebaafdf76c0b3de69d39bdc 100644 --- a/spec/nubtest.ts +++ b/spec/nubtest.ts @@ -10,9 +10,9 @@ export class NubTestParams extends ParamsEquation { constructor() { super(); - this._A = new ParamDefinition("A", ParamDomainValue.POS_NULL, 1); - this._B = new ParamDefinition("B", ParamDomainValue.POS_NULL, 2); - this._C = new ParamDefinition("C", ParamDomainValue.POS_NULL, 3); + this._A = new ParamDefinition(this, "A", ParamDomainValue.POS_NULL, 1); + this._B = new ParamDefinition(this, "B", ParamDomainValue.POS_NULL, 2); + this._C = new ParamDefinition(this, "C", ParamDomainValue.POS_NULL, 3); this.addParamDefinition(this._A); this.addParamDefinition(this._B); diff --git a/spec/param.spec.ts b/spec/param.spec.ts index d91f39200020f1a9d6b5e5a374b96481ab8c95b2..1dabaea3a0d2530556554a4ea7f985f9ce11d63a 100644 --- a/spec/param.spec.ts +++ b/spec/param.spec.ts @@ -63,76 +63,76 @@ describe("Class ParamDefinition : ", () => { describe("Domaine de définition : POS : ", () => { it("test 1", () => { - let p = new ParamDefinition("a", ParamDomainValue.POS, 1e-8); - p = new ParamDefinition("a", ParamDomainValue.POS, 10); + let p = new ParamDefinition(null, "a", ParamDomainValue.POS, 1e-8); + p = new ParamDefinition(null, "a", ParamDomainValue.POS, 10); }); it("test 2", () => { shouldFail(() => { - const p = new ParamDefinition("a", ParamDomainValue.POS, 0); + const p = new ParamDefinition(null, "a", ParamDomainValue.POS, 0); }, MessageCode.ERROR_PARAMDEF_VALUE_POS); }); it("test 3", () => { shouldFail(() => { - const p = new ParamDefinition("a", ParamDomainValue.POS, -1); + const p = new ParamDefinition(null, "a", ParamDomainValue.POS, -1); }, MessageCode.ERROR_PARAMDEF_VALUE_POS); }); }); describe("Domaine de définition : POS_NULL : ", () => { it("test 1", () => { - let p = new ParamDefinition("a", ParamDomainValue.POS_NULL, 0); - p = new ParamDefinition("a", ParamDomainValue.POS_NULL, 10); + let p = new ParamDefinition(null, "a", ParamDomainValue.POS_NULL, 0); + p = new ParamDefinition(null, "a", ParamDomainValue.POS_NULL, 10); }); it("test 2", () => { shouldFail(() => { - const p = new ParamDefinition("a", ParamDomainValue.POS_NULL, -1); + const p = new ParamDefinition(null, "a", ParamDomainValue.POS_NULL, -1); }, MessageCode.ERROR_PARAMDEF_VALUE_POSNULL); }); }); describe("Domaine de définition : NOT_NULL : ", () => { it("test 1", () => { - let p = new ParamDefinition("a", ParamDomainValue.NOT_NULL, -1); - p = new ParamDefinition("a", ParamDomainValue.NOT_NULL, 1); + let p = new ParamDefinition(null, "a", ParamDomainValue.NOT_NULL, -1); + p = new ParamDefinition(null, "a", ParamDomainValue.NOT_NULL, 1); }); it("test 2", () => { shouldFail(() => { - const p = new ParamDefinition("a", ParamDomainValue.NOT_NULL, 0); + const p = new ParamDefinition(null, "a", ParamDomainValue.NOT_NULL, 0); }, MessageCode.ERROR_PARAMDEF_VALUE_NULL); }); }); describe("Domaine de définition : ANY : ", () => { it("test 1", () => { - let p = new ParamDefinition("a", ParamDomainValue.ANY, -1); - p = new ParamDefinition("a", ParamDomainValue.ANY, 0); - p = new ParamDefinition("a", ParamDomainValue.ANY, 1); + let p = new ParamDefinition(null, "a", ParamDomainValue.ANY, -1); + p = new ParamDefinition(null, "a", ParamDomainValue.ANY, 0); + p = new ParamDefinition(null, "a", ParamDomainValue.ANY, 1); }); }); describe("Domaine de définition : INTERVAL : ", () => { it("test 1", () => { const d = new ParamDomain(ParamDomainValue.INTERVAL, 0, 10); - let p = new ParamDefinition("a", d, 0); - p = new ParamDefinition("a", d, 1); - p = new ParamDefinition("a", d, 10); + let p = new ParamDefinition(null, "a", d, 0); + p = new ParamDefinition(null, "a", d, 1); + p = new ParamDefinition(null, "a", d, 10); }); it("test 2", () => { shouldFail(() => { const d = new ParamDomain(ParamDomainValue.INTERVAL, 0, 10); - const p = new ParamDefinition("a", d, -1e-8); + const p = new ParamDefinition(null, "a", d, -1e-8); }, MessageCode.ERROR_PARAMDEF_VALUE_INTERVAL); }); it("test 3", () => { shouldFail(() => { const d = new ParamDomain(ParamDomainValue.INTERVAL, 0, 10); - const p = new ParamDefinition("a", d, 10 + 1e-8); + const p = new ParamDefinition(null, "a", d, 10 + 1e-8); }, MessageCode.ERROR_PARAMDEF_VALUE_INTERVAL); }); }); diff --git a/src/compute-node.ts b/src/compute-node.ts index 51515e93658a63dee25afb39877c7bfed2676c4d..0d9b8a8a682e66b300a0ca4a0db635b83b0f275a 100644 --- a/src/compute-node.ts +++ b/src/compute-node.ts @@ -44,6 +44,10 @@ export abstract class ComputeNode extends JalhydObject implements IDebug { this._debug = new Debug(dbg); this._prms = prms; this.debug("PARAMS", prms); + + // important for Param uid + this._prms.parent = this; + if (!this._prms.calculabilityDefined) { this._prms.resetParametersCalculability(); } diff --git a/src/cond_distri.ts b/src/cond_distri.ts index f1ab56df89c5e2ceb141be483d761821514c7878..6ad742b7fd67e9680f2b87baca753fa39e131dc2 100644 --- a/src/cond_distri.ts +++ b/src/cond_distri.ts @@ -27,11 +27,11 @@ export class ConduiteDistribParams extends ParamsEquation { constructor(rQ: number, rD: number, rJ: number, rLg: number, rNu: number) { super(); - this.Q = new ParamDefinition("Q", ParamDomainValue.POS, rQ); - this.D = new ParamDefinition("D", ParamDomainValue.POS, rD); - this.J = new ParamDefinition("J", ParamDomainValue.POS, rJ); - this.Lg = new ParamDefinition("Lg", ParamDomainValue.POS, rLg); - this.Nu = new ParamDefinition("Nu", ParamDomainValue.POS, rNu); + this.Q = new ParamDefinition(this, "Q", ParamDomainValue.POS, rQ); + this.D = new ParamDefinition(this, "D", ParamDomainValue.POS, rD); + this.J = new ParamDefinition(this, "J", ParamDomainValue.POS, rJ); + this.Lg = new ParamDefinition(this, "Lg", ParamDomainValue.POS, rLg); + this.Nu = new ParamDefinition(this, "Nu", ParamDomainValue.POS, rNu); this.addParamDefinition(this.Q); this.addParamDefinition(this.D); diff --git a/src/jalhyd_object.ts b/src/jalhyd_object.ts index 5c9fe62a53779af0d4e61fbc61b99f82eb4d77d3..90dbd86995fcdc5c709f737de867b06ea93d0fec 100644 --- a/src/jalhyd_object.ts +++ b/src/jalhyd_object.ts @@ -1,5 +1,5 @@ export interface IJalhydObject { - readonly uid: number; + readonly uid: string; } export interface INamedObject extends IJalhydObject { @@ -8,8 +8,8 @@ export interface INamedObject extends IJalhydObject { export abstract class JalhydObject implements IJalhydObject { - public get uid(): number { - return this._uid; + public get uid(): string { + return String(this._uid); } public static get nextUID(): number { diff --git a/src/lechaptcalmon.ts b/src/lechaptcalmon.ts index 6e2c1122f40ed50da3941a919ae91b82927a109c..e003c54b6c2484ffde65134146e05234b73a24ad 100644 --- a/src/lechaptcalmon.ts +++ b/src/lechaptcalmon.ts @@ -31,13 +31,13 @@ export class LechaptCalmonParams extends ParamsEquation { constructor(rQ: number, rD: number, rJ: number, rLg: number, rL: number, rM: number, rN: number) { super(); - this._Q = new ParamDefinition("Q", ParamDomainValue.POS, rQ); - this._D = new ParamDefinition("D", ParamDomainValue.POS, rD); - this._J = new ParamDefinition("J", ParamDomainValue.POS, rJ); - this._Lg = new ParamDefinition("Lg", ParamDomainValue.POS, rLg); - this._L = new ParamDefinition("L", ParamDomainValue.POS, rL); - this._M = new ParamDefinition("M", ParamDomainValue.POS, rM); - this._N = new ParamDefinition("N", ParamDomainValue.POS, rN); + this._Q = new ParamDefinition(this, "Q", ParamDomainValue.POS, rQ); + this._D = new ParamDefinition(this, "D", ParamDomainValue.POS, rD); + this._J = new ParamDefinition(this, "J", ParamDomainValue.POS, rJ); + this._Lg = new ParamDefinition(this, "Lg", ParamDomainValue.POS, rLg); + this._L = new ParamDefinition(this, "L", ParamDomainValue.POS, rL); + this._M = new ParamDefinition(this, "M", ParamDomainValue.POS, rM); + this._N = new ParamDefinition(this, "N", ParamDomainValue.POS, rN); this.addParamDefinition(this._Q); this.addParamDefinition(this._D); diff --git a/src/nub.ts b/src/nub.ts index 11f98edc119bba4af403930e02625fe4c7b3253c..957f4271ea58c83801b6739bccf0647ce8cf3579 100644 --- a/src/nub.ts +++ b/src/nub.ts @@ -1,4 +1,4 @@ -import { ParamDefinition, ParamsEquation } from "."; +import { ParamDefinition } from "."; import { ComputeNode } from "./compute-node"; import { Dichotomie } from "./dichotomie"; import { INamedIterableValues, INumberIterator, IterableValues } from "./param/param-value-iterator"; @@ -30,7 +30,6 @@ export abstract class Nub extends ComputeNode implements IReferencedNub { return this._props; } - // originally in SessionNub public set properties(props: Props | {}) { const params = props instanceof Props ? props : new Props(props); this._props = params.clone(); diff --git a/src/pab/pab_dimension.ts b/src/pab/pab_dimension.ts index fe7594a48811d920992f6c6a256850f2ef2c59b2..40631cceebeb70cd92899d58d055d556b6eb9862 100644 --- a/src/pab/pab_dimension.ts +++ b/src/pab/pab_dimension.ts @@ -21,10 +21,10 @@ export class PabDimensionParams extends ParamsEquation { constructor(rL: number, rW: number, rY: number, rV?: number) { super(); - this._L = new ParamDefinition("L", ParamDomainValue.POS, rL); - this._W = new ParamDefinition("W", ParamDomainValue.POS, rW); - this._Y = new ParamDefinition("Y", ParamDomainValue.POS, rY); - this._V = new ParamDefinition("V", ParamDomainValue.POS, rV); + this._L = new ParamDefinition(this, "L", ParamDomainValue.POS, rL); + this._W = new ParamDefinition(this, "W", ParamDomainValue.POS, rW); + this._Y = new ParamDefinition(this, "Y", ParamDomainValue.POS, rY); + this._V = new ParamDefinition(this, "V", ParamDomainValue.POS, rV); this.addParamDefinition(this._L); this.addParamDefinition(this._W); diff --git a/src/pab/pab_puissance.ts b/src/pab/pab_puissance.ts index 9f4fd19c058870c545c5978934ed2dbd4ab3e52c..5a397b63625f88c3085f3ab69fe5c03fafd914bc 100644 --- a/src/pab/pab_puissance.ts +++ b/src/pab/pab_puissance.ts @@ -21,10 +21,10 @@ export class PabPuissanceParams extends ParamsEquation { constructor(rDH: number, rQ: number, rV: number, rPV?: number) { super(); - this._DH = new ParamDefinition("DH", ParamDomainValue.POS, rDH); - this._Q = new ParamDefinition("Q", ParamDomainValue.POS, rQ); - this._V = new ParamDefinition("V", ParamDomainValue.POS, rV); - this._PV = new ParamDefinition("PV", ParamDomainValue.POS, rPV); + this._DH = new ParamDefinition(this, "DH", ParamDomainValue.POS, rDH); + this._Q = new ParamDefinition(this, "Q", ParamDomainValue.POS, rQ); + this._V = new ParamDefinition(this, "V", ParamDomainValue.POS, rV); + this._PV = new ParamDefinition(this, "PV", ParamDomainValue.POS, rPV); this.addParamDefinition(this._DH); this.addParamDefinition(this._Q); diff --git a/src/param/param-definition.ts b/src/param/param-definition.ts index d38c0be764ae7780508980140596116da8b9d852..3db288f443e4e0561afae8d85761a6a1b7e99558 100644 --- a/src/param/param-definition.ts +++ b/src/param/param-definition.ts @@ -9,6 +9,7 @@ import { ParamDomain, ParamDomainValue } from "./param-domain"; import { INamedIterableValues, INumberIterator } from "./param-value-iterator"; import { ParamValueMode } from "./param-value-mode"; import { ParamValues } from "./param-values"; +import { ParamsEquation } from "./params-equation"; /** * Calculabilité du paramètre @@ -27,11 +28,13 @@ export enum ParamCalculability { /** * Paramètre avec symbole, domaine de définition, calculabilité */ -export class ParamDefinition extends JalhydObject implements INubReference, INamedIterableValues, IObservable { +export class ParamDefinition implements INubReference, INamedIterableValues, IObservable { /** symbole */ private _symbol: string; + private _parent: any; + /** domaine de définition */ private _domain: ParamDomain; @@ -44,8 +47,8 @@ export class ParamDefinition extends JalhydObject implements INubReference, INam /** implémentation par délégation de IObservable */ private _observable: Observable; - constructor(symb: string, d: ParamDomain | ParamDomainValue, val?: number) { - super(); + constructor(parent: ParamsEquation | JalhydObject, symb: string, d: ParamDomain | ParamDomainValue, val?: number) { + this._parent = parent; this._symbol = symb; this._observable = new Observable(); this._paramValues = new ParamValues(); @@ -61,6 +64,27 @@ export class ParamDefinition extends JalhydObject implements INubReference, INam this.checkValue(val); } + /** + * identifiant unique de la forme + * (uid du JalhydObject (en général un Nub) + "_" + symbole du paramètre) + * ex: 123_Q + */ + get uid(): string { + let parentUid: string = null; + if (this._parent instanceof JalhydObject) { + parentUid = String(this._parent.uid); + } else if (this._parent instanceof ParamsEquation) { + // uid du ComputeNode utilisant le ParamsEquation + parentUid = String(this._parent.nubUid); + } else { + // @TODO generate ? + // parentUid = "ORPHAN"; + console.log("DIE", this._parent, this); + throw new Error("ParamDefinition.uid : parameter has no parent !"); + } + return parentUid + "::" + this._symbol; + } + get symbol(): string { return this._symbol; } @@ -412,7 +436,7 @@ export class ParamDefinition extends JalhydObject implements INubReference, INam } public clone(): ParamDefinition { - const res = new ParamDefinition(this.symbol, this.getDomain().clone(), this.uncheckedValue); + const res = new ParamDefinition(this._parent, this._symbol, this.getDomain().clone(), this.uncheckedValue); res._calc = this._calc; return res; } @@ -469,9 +493,8 @@ export class ParamDefinition extends JalhydObject implements INubReference, INam * @param seenUids liste des uids déjà vérifiés * @param o objet à tester (son uid est il déjà dans la liste ?) */ - private checkReferenceCircularity(o: any, seenUids: number[]) { + private checkReferenceCircularity(o: any, seenUids: string[]) { if ("uid" in o) { - // if (o.uid in seenUids) if (seenUids.indexOf(o.uid) !== -1) { throw new Error(`références circulaires détectées (uids : ${seenUids})`); } diff --git a/src/param/param-value-iterator.ts b/src/param/param-value-iterator.ts index 827da34765b500cee76282f84b71f2b03d426e9d..8d59ecd5b551534e7da32df28101f885db4dfe22 100644 --- a/src/param/param-value-iterator.ts +++ b/src/param/param-value-iterator.ts @@ -174,7 +174,6 @@ export class ParamValueIterator implements INumberIterator { // liste case 2: - const i = this._index; if (this.hasNext) { this._current = this._param.valueList[this._index++]; return { diff --git a/src/param/params-equation.ts b/src/param/params-equation.ts index ff7d1e6d98cb526c7aba7e9cbe4ff8639b1f4b9f..9d348acf8bb598e96ef73f00588a4d62493e0536 100644 --- a/src/param/params-equation.ts +++ b/src/param/params-equation.ts @@ -1,5 +1,6 @@ import { MapIterator } from "../util/iterator"; +import { ComputeNode } from "../compute-node"; import { ParamDefinition } from "./param-definition"; export interface IParamDefinitionIterator extends IterableIterator<ParamDefinition> { @@ -83,14 +84,26 @@ export class ParamsEquationArrayIterator implements IParamDefinitionIterator { */ // tslint:disable-next-line:max-classes-per-file export abstract class ParamsEquation implements Iterable<ParamDefinition> { + + /** pointeur vers la calculette qui utilise ces paramètres */ + public parent: ComputeNode; + protected _paramMap: { [key: string]: ParamDefinition } = {}; private _calculabilityDefined: boolean; - public constructor() { + public constructor(parent?: ComputeNode) { + this.parent = parent; this._calculabilityDefined = false; } + get nubUid() { + if (! this.parent) { + throw new Error("ParamsEquation.nubUid : equation has no parent Nub !"); + } + return this.parent.uid; + } + get calculabilityDefined(): boolean { return this._calculabilityDefined; } diff --git a/src/remous.ts b/src/remous.ts index b0b3e52dd6b2f23d139f91e3f6d6b86c288daf69..a054238016a820d5159a78197f20138e7497429d 100644 --- a/src/remous.ts +++ b/src/remous.ts @@ -56,10 +56,10 @@ export class CourbeRemousParams extends ParamsEquation { constructor(s: acSection, rYamont: number, rYAval: number, rLong: number, rDx: number, meth: MethodeResolution) { super(); this._section = s; - this._Yamont = new ParamDefinition("Yamont", ParamDomainValue.POS, rYamont); - this._Yaval = new ParamDefinition("Yaval", ParamDomainValue.POS, rYAval); - this._Long = new ParamDefinition("Long", ParamDomainValue.POS, rLong); - this._Dx = new ParamDefinition("Dx", ParamDomainValue.POS, rDx); + this._Yamont = new ParamDefinition(this, "Yamont", ParamDomainValue.POS, rYamont); + this._Yaval = new ParamDefinition(this, "Yaval", ParamDomainValue.POS, rYAval); + this._Long = new ParamDefinition(this, "Long", ParamDomainValue.POS, rLong); + this._Dx = new ParamDefinition(this, "Dx", ParamDomainValue.POS, rDx); this._methodeResolution = meth; this.addParamDefinition(this._Yamont); diff --git a/src/section/section_circulaire.ts b/src/section/section_circulaire.ts index f165d3d535c14948c827048a8a7c40f2f8a53cfb..9547a52e06e261e6d504511fe601a8afa5398e6d 100644 --- a/src/section/section_circulaire.ts +++ b/src/section/section_circulaire.ts @@ -9,7 +9,7 @@ export class ParamsSectionCirc extends ParamsSection { constructor(rD: number, rY: number, rKs: number, rQ: number, rIf: number, rPrec: number, rYB: number) { super(rY, undefined, rKs, rQ, rIf, rPrec, rYB); - this._D = new ParamDefinition("D", ParamDomainValue.POS, rD); + this._D = new ParamDefinition(this, "D", ParamDomainValue.POS, rD); this.addParamDefinition(this._D); } diff --git a/src/section/section_nub.ts b/src/section/section_nub.ts index 478b00495ee18edd4c70803eb6b3152e43f10d0e..660b5a1b800d493f01b32dfa28caa355a405f89e 100644 --- a/src/section/section_nub.ts +++ b/src/section/section_nub.ts @@ -208,7 +208,7 @@ export class SectionParametree extends Nub { throw new Error(`SectionParametree.createSectionVar() : symbole ${symbol} non pris en charge`); } - const res = new ParamDefinition(symbol, dom); + const res = new ParamDefinition(this, symbol, dom); res.calculability = ParamCalculability.EQUATION; return res; } diff --git a/src/section/section_puissance.ts b/src/section/section_puissance.ts index 1e1a285b7f0c2eb1269b4216fb0dafebe61e56ec..1ee1d152d25f081155bff2cc7f03d8395d77e0f8 100644 --- a/src/section/section_puissance.ts +++ b/src/section/section_puissance.ts @@ -13,7 +13,7 @@ export class ParamsSectionPuiss extends ParamsSection { rIf: number, rPrec: number, rYB: number) { super(rY, rLargeurBerge, rKs, rQ, rIf, rPrec, rYB); - this._k = new ParamDefinition("k", new ParamDomain(ParamDomainValue.INTERVAL, 0, 1), rk); + this._k = new ParamDefinition(this, "k", new ParamDomain(ParamDomainValue.INTERVAL, 0, 1), rk); this.addParamDefinition(this._k); } diff --git a/src/section/section_trapez.ts b/src/section/section_trapez.ts index 8da343f23d4b57cd897f43c3688ddec3137e2c7a..9def6096ee3d2dbb45a1dd245c4df5606983e665 100644 --- a/src/section/section_trapez.ts +++ b/src/section/section_trapez.ts @@ -11,8 +11,8 @@ export class ParamsSectionTrapez extends ParamsSection { rQ: number, rIf: number, rPrec: number, rYB: number) { super(rY, undefined, rKs, rQ, rIf, rPrec, rYB); - this._LargeurFond = new ParamDefinition("LargeurFond", ParamDomainValue.POS_NULL, rLargeurFond); - this._Fruit = new ParamDefinition("Fruit", ParamDomainValue.POS_NULL, rFruit); + this._LargeurFond = new ParamDefinition(this, "LargeurFond", ParamDomainValue.POS_NULL, rLargeurFond); + this._Fruit = new ParamDefinition(this, "Fruit", ParamDomainValue.POS_NULL, rFruit); this.addParamDefinition(this._LargeurFond); this.addParamDefinition(this._Fruit); diff --git a/src/section/section_type.ts b/src/section/section_type.ts index e954ad9fffbc55356d92dc2151a1ca7afb290c33..a1f4dff69488a52fe326f858e7cc3fcc627e1485 100644 --- a/src/section/section_type.ts +++ b/src/section/section_type.ts @@ -22,16 +22,15 @@ export abstract class cParamsCanal extends ParamsEquation { constructor(rKs: number, rQ: number, rIf: number, rPrec: number, rYB: number) { super(); - this._Ks = new ParamDefinition("Ks", ParamDomainValue.POS, rKs); - this._Q = new ParamDefinition("Q", ParamDomainValue.POS_NULL, rQ); - this._If = new ParamDefinition("If", ParamDomainValue.ANY, rIf); - this._Prec = new ParamDefinition("Prec", ParamDomainValue.POS, rPrec); + this._Ks = new ParamDefinition(this, "Ks", ParamDomainValue.POS, rKs); + this._Q = new ParamDefinition(this, "Q", ParamDomainValue.POS_NULL, rQ); + this._If = new ParamDefinition(this, "If", ParamDomainValue.ANY, rIf); + this._Prec = new ParamDefinition(this, "Prec", ParamDomainValue.POS, rPrec); this._iPrec = new ParamDefinition( - "iPrec", - ParamDomainValue.ANY, + this, "iPrec", ParamDomainValue.ANY, Math.round(-Math.log(rPrec) / Math.log(10)) ); - this._YB = new ParamDefinition("YB", ParamDomainValue.POS, rYB); + this._YB = new ParamDefinition(this, "YB", ParamDomainValue.POS, rYB); this.addParamDefinition(this._Ks); this.addParamDefinition(this._Q); @@ -97,8 +96,10 @@ export abstract class ParamsSection extends cParamsCanal { rPrec: number, rYB: number) { super(rKs, rQ, rIf, rPrec, rYB); - this._Y = new ParamDefinition("Y", ParamDomainValue.POS_NULL, rY); - this._LargeurBerge = new ParamDefinition("LargeurBerge", ParamDomainValue.POS_NULL, rLargeurBerge); + this._Y = new ParamDefinition(this, "Y", ParamDomainValue.POS_NULL, rY); + this._LargeurBerge = new ParamDefinition( + this, "LargeurBerge", ParamDomainValue.POS_NULL, rLargeurBerge + ); this.addParamDefinition(this._Y); this.addParamDefinition(this._LargeurBerge); diff --git a/src/structure/cloisons_params.ts b/src/structure/cloisons_params.ts index ca7d27323ee4e530d0aef1e4816c191a541c063c..da09e5c2cfae578ce6ce72f7febc435e9b9292ba 100644 --- a/src/structure/cloisons_params.ts +++ b/src/structure/cloisons_params.ts @@ -29,13 +29,13 @@ export class CloisonsParams extends ParallelStructureParams { */ constructor(rQ: number, rZ1: number, rLB: number, rBB: number, rPB: number, rDH: number) { super(rQ, rZ1, rZ1 - rDH); - this.LB = new ParamDefinition("LB", ParamDomainValue.POS, rLB); + this.LB = new ParamDefinition(this, "LB", ParamDomainValue.POS, rLB); this.addParamDefinition(this.LB); - this.BB = new ParamDefinition("BB", ParamDomainValue.POS, rBB); + this.BB = new ParamDefinition(this, "BB", ParamDomainValue.POS, rBB); this.addParamDefinition(this.BB); - this.PB = new ParamDefinition("PB", ParamDomainValue.POS, rPB); + this.PB = new ParamDefinition(this, "PB", ParamDomainValue.POS, rPB); this.addParamDefinition(this.PB); - this.DH = new ParamDefinition("DH", ParamDomainValue.POS, rDH); + this.DH = new ParamDefinition(this, "DH", ParamDomainValue.POS, rDH); this.addParamDefinition(this.DH); } } diff --git a/src/structure/dever_params.ts b/src/structure/dever_params.ts index 02bad78a7edb5257425ce8807e2ae0a83db797ea..05d6a07f38748933284667a3b97dc03a131dd0f5 100644 --- a/src/structure/dever_params.ts +++ b/src/structure/dever_params.ts @@ -21,9 +21,9 @@ export class DeverParams extends ParallelStructureParams { */ constructor(rQ: number, rZ1: number, rBR: number, rZR: number) { super(rQ, rZ1, - Infinity); - this.BR = new ParamDefinition("BR", ParamDomainValue.ANY, rBR); + this.BR = new ParamDefinition(this, "BR", ParamDomainValue.ANY, rBR); this.addParamDefinition(this.BR); - this.ZR = new ParamDefinition("ZR", ParamDomainValue.ANY, rZR); + this.ZR = new ParamDefinition(this, "ZR", ParamDomainValue.ANY, rZR); this.addParamDefinition(this.ZR); } } diff --git a/src/structure/parallel_structure_params.ts b/src/structure/parallel_structure_params.ts index 40426c827c01707f1bd35ada4052c4eb130ef2fb..6bcfd33e7e65936a92a0089eb9b6ea461690e0d5 100644 --- a/src/structure/parallel_structure_params.ts +++ b/src/structure/parallel_structure_params.ts @@ -23,11 +23,11 @@ export class ParallelStructureParams extends ParamsEquation { */ constructor(rQ: number, rZ1: number, rZ2: number) { super(); - this.Q = new ParamDefinition("Q", ParamDomainValue.ANY, rQ); + this.Q = new ParamDefinition(this, "Q", ParamDomainValue.ANY, rQ); this.addParamDefinition(this.Q); - this.Z1 = new ParamDefinition("Z1", ParamDomainValue.ANY, rZ1); + this.Z1 = new ParamDefinition(this, "Z1", ParamDomainValue.ANY, rZ1); this.addParamDefinition(this.Z1); - this.Z2 = new ParamDefinition("Z2", ParamDomainValue.ANY, rZ2); + this.Z2 = new ParamDefinition(this, "Z2", ParamDomainValue.ANY, rZ2); this.addParamDefinition(this.Z2); } } diff --git a/src/structure/rectangular_structure_params.ts b/src/structure/rectangular_structure_params.ts index 0f157d445e65601c36c4a716f011eeaa273dc272..1ffab8094b4975e9faaeb271ba4a98fcbebb5390 100644 --- a/src/structure/rectangular_structure_params.ts +++ b/src/structure/rectangular_structure_params.ts @@ -25,9 +25,9 @@ export class RectangularStructureParams extends StructureParams { */ constructor(rQ: number, rZDV: number, rZ1: number, rZ2: number, rL: number, rCd: number, rW: number = Infinity) { super(rQ, rZDV, rZ1, rZ2, rW); - this.L = new ParamDefinition("L", ParamDomainValue.POS, rL); + this.L = new ParamDefinition(this, "L", ParamDomainValue.POS, rL); this.addParamDefinition(this.L); - this.Cd = new ParamDefinition("Cd", ParamDomainValue.POS, rCd); + this.Cd = new ParamDefinition(this, "Cd", ParamDomainValue.POS, rCd); this.addParamDefinition(this.Cd); } } diff --git a/src/structure/structure_kivi_params.ts b/src/structure/structure_kivi_params.ts index 4e8a4869dc176745e4d3745b9bf7b5c22f001c03..a690bd61ab73d6c8cc405d000d1f3daa59edabf9 100644 --- a/src/structure/structure_kivi_params.ts +++ b/src/structure/structure_kivi_params.ts @@ -30,13 +30,13 @@ export class StructureKiviParams extends StructureParams { rZRAM: number ) { super(rQ, rZDV, rZ1, rZ2, Infinity); - this.L = new ParamDefinition("L", ParamDomainValue.POS_NULL, rL); + this.L = new ParamDefinition(this, "L", ParamDomainValue.POS_NULL, rL); this.addParamDefinition(this.L); - this.alpha = new ParamDefinition("alpha", ParamDomainValue.POS, rAlpha); + this.alpha = new ParamDefinition(this, "alpha", ParamDomainValue.POS, rAlpha); this.addParamDefinition(this.alpha); - this.beta = new ParamDefinition("beta", ParamDomainValue.POS_NULL, rBeta); + this.beta = new ParamDefinition(this, "beta", ParamDomainValue.POS_NULL, rBeta); this.addParamDefinition(this.beta); - this.ZRAM = new ParamDefinition("ZRAM", ParamDomainValue.ANY, rZRAM); + this.ZRAM = new ParamDefinition(this, "ZRAM", ParamDomainValue.ANY, rZRAM); this.addParamDefinition(this.ZRAM); } } diff --git a/src/structure/structure_orifice_submerged_params.ts b/src/structure/structure_orifice_submerged_params.ts index a8f861726f24904096264fcd4d27d97d8b87279d..5db236bfd59b3a4f822bc93ec032adc443e0b853 100644 --- a/src/structure/structure_orifice_submerged_params.ts +++ b/src/structure/structure_orifice_submerged_params.ts @@ -24,9 +24,9 @@ export class StructureOrificeSubmergedParams extends StructureParams { */ constructor(rQ: number, rZ1: number, rZ2: number, rCd: number, rS: number) { super(rQ, -Infinity, rZ1, rZ2); - this.S = new ParamDefinition("S", ParamDomainValue.POS_NULL, rS); + this.S = new ParamDefinition(this, "S", ParamDomainValue.POS_NULL, rS); this.addParamDefinition(this.S); - this.Cd = new ParamDefinition("Cd", ParamDomainValue.POS_NULL, rCd); + this.Cd = new ParamDefinition(this, "Cd", ParamDomainValue.POS_NULL, rCd); this.addParamDefinition(this.Cd); } diff --git a/src/structure/structure_params.ts b/src/structure/structure_params.ts index 8740525ea3d4334f39b65c0c2c7f3f0ca25f8edf..cadac28a0fef579f55cac4bb1cd3e29a4dac2bb1 100644 --- a/src/structure/structure_params.ts +++ b/src/structure/structure_params.ts @@ -40,21 +40,21 @@ export class StructureParams extends ParamsEquation { */ constructor(rQ: number, rZDV: number, rZ1: number, rZ2: number, rW: number = Infinity) { super(); - this.Q = new ParamDefinition("Q", ParamDomainValue.ANY, rQ); + this.Q = new ParamDefinition(this, "Q", ParamDomainValue.ANY, rQ); this.addParamDefinition(this.Q); - this.ZDV = new ParamDefinition("ZDV", ParamDomainValue.ANY, rZDV); + this.ZDV = new ParamDefinition(this, "ZDV", ParamDomainValue.ANY, rZDV); this.addParamDefinition(this.ZDV); - this.Z1 = new ParamDefinition("Z1", ParamDomainValue.ANY, rZ1); + this.Z1 = new ParamDefinition(this, "Z1", ParamDomainValue.ANY, rZ1); this.addParamDefinition(this.Z1); - this.Z2 = new ParamDefinition("Z2", ParamDomainValue.ANY, rZ2); + this.Z2 = new ParamDefinition(this, "Z2", ParamDomainValue.ANY, rZ2); this.addParamDefinition(this.Z2); - this.h1 = new ParamDefinition("h1", ParamDomainValue.POS_NULL, + this.h1 = new ParamDefinition(this, "h1", ParamDomainValue.POS_NULL, Math.max(0, this.Z1.v - this.ZDV.v)); this.addParamDefinition(this.h1); - this.h2 = new ParamDefinition("h2", ParamDomainValue.POS_NULL, + this.h2 = new ParamDefinition(this, "h2", ParamDomainValue.POS_NULL, Math.max(0, this.Z2.v - this.ZDV.v)); this.addParamDefinition(this.h2); - this.W = new ParamDefinition("W", ParamDomainValue.POS_NULL, rW); + this.W = new ParamDefinition(this, "W", ParamDomainValue.POS_NULL, rW); this.addParamDefinition(this.W); } diff --git a/src/structure/structure_triangular_trunc_weir_free_params.ts b/src/structure/structure_triangular_trunc_weir_free_params.ts index 7b3687b97e08529329e649b02d5ccf0b36c80193..6226c35e0601a77c434efa529b8286df76ff1b9a 100644 --- a/src/structure/structure_triangular_trunc_weir_free_params.ts +++ b/src/structure/structure_triangular_trunc_weir_free_params.ts @@ -31,11 +31,11 @@ export class TriangularTruncStructureParams extends StructureParams { rBT: number, rZT: number, rCd: number, rW: number = Infinity ) { super(rQ, rZDV, rZ1, - Infinity, rW); - this.BT = new ParamDefinition("BT", ParamDomainValue.POS, rBT); + this.BT = new ParamDefinition(this, "BT", ParamDomainValue.POS, rBT); this.addParamDefinition(this.BT); - this.ZT = new ParamDefinition("ZT", ParamDomainValue.POS, rZT); + this.ZT = new ParamDefinition(this, "ZT", ParamDomainValue.POS, rZT); this.addParamDefinition(this.ZT); - this.Cd = new ParamDefinition("Cd", ParamDomainValue.POS, rCd); + this.Cd = new ParamDefinition(this, "Cd", ParamDomainValue.POS, rCd); this.addParamDefinition(this.Cd); } } diff --git a/src/structure/structure_triangular_weir_free_params.ts b/src/structure/structure_triangular_weir_free_params.ts index 7cfe3544665cc5baf041d100f783d13cf3563dfe..7c4253ec2624e3d5a9ca3cc17a29a5b39af04ec3 100644 --- a/src/structure/structure_triangular_weir_free_params.ts +++ b/src/structure/structure_triangular_weir_free_params.ts @@ -27,9 +27,9 @@ export class TriangularStructureParams extends StructureParams { rAlpha2: number, rCd: number, rW: number = Infinity ) { super(rQ, rZDV, rZ1, - Infinity, rW); - this.alpha2 = new ParamDefinition("alpha2", ParamDomainValue.POS, rAlpha2); + this.alpha2 = new ParamDefinition(this, "alpha2", ParamDomainValue.POS, rAlpha2); this.addParamDefinition(this.alpha2); - this.Cd = new ParamDefinition("Cd", ParamDomainValue.POS, rCd); + this.Cd = new ParamDefinition(this, "Cd", ParamDomainValue.POS, rCd); this.addParamDefinition(this.Cd); } }