diff --git a/spec/base.spec.ts b/spec/base.spec.ts index 17f37c3f7852080e6a30b7de0ca487dd5792a37b..1c61ec68a92c1d931d2e99808a52641cf607d764 100644 --- a/spec/base.spec.ts +++ b/spec/base.spec.ts @@ -1,6 +1,5 @@ /// <reference path="../node_modules/@types/jasmine/index.d.ts" /> -import { Result } from "../src/base"; import { nub, precDigits } from "./nubtest"; import { Message, MessageCode, MessageSeverity } from "../src/util/message"; diff --git a/spec/cond_distri.spec.ts b/spec/cond_distri.spec.ts index 5b5c9f93ecbc0a86ed75b51af7b6273682ed03f8..fc6fe224613958965102662f411285cfe3546043 100644 --- a/spec/cond_distri.spec.ts +++ b/spec/cond_distri.spec.ts @@ -1,7 +1,7 @@ // tslint:disable-next-line:no-reference /// <reference path="../node_modules/@types/jasmine/index.d.ts" /> -import { Result } from "../src/base"; +import { Result } from "../src/util/result"; import { ConduiteDistrib, ConduiteDistribParams } from "../src/cond_distri"; import { equalEpsilon } from "./nubtest"; diff --git a/spec/lechaptcalmon.spec.ts b/spec/lechaptcalmon.spec.ts index 8c1d74705faaa7c33e4b437a5c1739276c0d7273..076c66e1ff0f5e0f5ac7600dcf1c85980aae3fd8 100644 --- a/spec/lechaptcalmon.spec.ts +++ b/spec/lechaptcalmon.spec.ts @@ -1,6 +1,6 @@ /// <reference path="../node_modules/@types/jasmine/index.d.ts" /> -import { Result } from "../src/base"; +import { Result } from "../src/util/result"; import { equalEpsilon } from "./nubtest"; import { LechaptCalmonParams, LechaptCalmon } from "../src/lechaptcalmon" diff --git a/spec/nubtest.ts b/spec/nubtest.ts index ce4b3e7c767d81ccb9b803ba1c76e85fe84c83b5..62f0e9c6f330781fa57c48fa02becb9601891f9c 100644 --- a/spec/nubtest.ts +++ b/spec/nubtest.ts @@ -1,4 +1,4 @@ -import { Result } from "../src/base"; +import { Result } from "../src/util/result"; import { Nub } from "../src/nub"; import { ComputeNodeType, ParamCalculability, ParamDefinition, ParamDomain, ParamDomainValue, ParamsEquation, @@ -57,7 +57,6 @@ export class NubTest extends Nub { } export let nub = new NubTest(new NubTestParams()); -// export let res = new Result(0); /** * précision de calcul (nombre de décimales) diff --git a/spec/regime_uniforme/regime_uniforme_circ.spec.ts b/spec/regime_uniforme/regime_uniforme_circ.spec.ts index 228ff02e7454e915dce83244b73d9d4eded3467e..720976c225d74be59be2364f7ffa35093fc83e19 100644 --- a/spec/regime_uniforme/regime_uniforme_circ.spec.ts +++ b/spec/regime_uniforme/regime_uniforme_circ.spec.ts @@ -1,7 +1,7 @@ // tslint:disable-next-line:no-reference /// <reference path="../../node_modules/@types/jasmine/index.d.ts" /> -import { Result } from "../../src/base"; +import { Result } from "../../src/util/result"; import { RegimeUniforme } from "../../src/regime_uniforme"; import { cSnCirc, ParamsSectionCirc } from "../../src/section/section_circulaire"; import { equalEpsilon, precDist } from "../nubtest"; diff --git a/spec/regime_uniforme/regime_uniforme_puissance.spec.ts b/spec/regime_uniforme/regime_uniforme_puissance.spec.ts index 092b21a561626cc4c4107b04a70a59c23797aef6..54c9221eaf4f138f26c098b1bc09b3d43dc60658 100644 --- a/spec/regime_uniforme/regime_uniforme_puissance.spec.ts +++ b/spec/regime_uniforme/regime_uniforme_puissance.spec.ts @@ -1,7 +1,7 @@ // tslint:disable-next-line:no-reference /// <reference path="../../node_modules/@types/jasmine/index.d.ts" /> -import { Result } from "../../src/base"; +import { Result } from "../../src/util/result"; import { RegimeUniforme } from "../../src/regime_uniforme"; import { cSnPuiss, ParamsSectionPuiss } from "../../src/section/section_puissance"; import { MessageCode } from "../../src/util/message"; diff --git a/spec/regime_uniforme/regime_uniforme_rect.spec.ts b/spec/regime_uniforme/regime_uniforme_rect.spec.ts index bae4b0784a44daafd6a05fa5af5b7e2316645336..bf8c7b37c5242498290a730162d50575580ddfab 100644 --- a/spec/regime_uniforme/regime_uniforme_rect.spec.ts +++ b/spec/regime_uniforme/regime_uniforme_rect.spec.ts @@ -1,7 +1,7 @@ // tslint:disable-next-line:no-reference /// <reference path="../../node_modules/@types/jasmine/index.d.ts" /> -import { Result } from "../../src/base"; +import { Result } from "../../src/util/result"; import { RegimeUniforme } from "../../src/regime_uniforme"; import { cSnRectang, ParamsSectionRectang } from "../../src/section/section_rectang"; import { equalEpsilon, precDist } from "../nubtest"; diff --git a/spec/regime_uniforme/regime_uniforme_trapeze.spec.ts b/spec/regime_uniforme/regime_uniforme_trapeze.spec.ts index 479d35671145fae267be49d3e32108518762a325..7bf9f87815e1bca8ad5141767845b9d2faa58fb9 100644 --- a/spec/regime_uniforme/regime_uniforme_trapeze.spec.ts +++ b/spec/regime_uniforme/regime_uniforme_trapeze.spec.ts @@ -1,7 +1,7 @@ // tslint:disable-next-line:no-reference /// <reference path="../../node_modules/@types/jasmine/index.d.ts" /> -import { Result } from "../../src/base"; +import { Result } from "../../src/util/result"; import { RegimeUniforme } from "../../src/regime_uniforme"; import { cSnTrapez, ParamsSectionTrapez } from "../../src/section/section_trapez"; import { equalEpsilon, precDist } from "../nubtest"; diff --git a/spec/section_param/section_param_circ_fluvial.spec.ts b/spec/section_param/section_param_circ_fluvial.spec.ts index e214367de014cce2ba41749db5c1eb423eee8af7..50c651bb557ab2c8928aeab3f6150d6c1b2d5019 100644 --- a/spec/section_param/section_param_circ_fluvial.spec.ts +++ b/spec/section_param/section_param_circ_fluvial.spec.ts @@ -1,4 +1,4 @@ -import { Result } from "../../src/base"; +import { Result } from "../../src/util/result"; import { cSnCirc, ParamsSectionCirc } from "../../src/section/section_circulaire"; import { equalEpsilon, precDist } from "../nubtest"; diff --git a/spec/section_param/section_param_circ_torrentiel.spec.ts b/spec/section_param/section_param_circ_torrentiel.spec.ts index a658912ff284afc2d1e89e5704d28a5a882fadf0..917eb5e3354a24977d7691dd5f22a11191368590 100644 --- a/spec/section_param/section_param_circ_torrentiel.spec.ts +++ b/spec/section_param/section_param_circ_torrentiel.spec.ts @@ -1,4 +1,4 @@ -import { Result } from "../../src/base"; +import { Result } from "../../src/util/result"; import { cSnCirc, ParamsSectionCirc } from "../../src/section/section_circulaire"; import { equalEpsilon, precDist } from "../nubtest"; diff --git a/spec/section_param/section_param_puiss_fluvial.spec.ts b/spec/section_param/section_param_puiss_fluvial.spec.ts index 96a4d9647af3529075c8bce1f3119ea493433f80..5b5df72221b9509e61c7508da5dee1a902348ea2 100644 --- a/spec/section_param/section_param_puiss_fluvial.spec.ts +++ b/spec/section_param/section_param_puiss_fluvial.spec.ts @@ -1,4 +1,4 @@ -import { Result } from "../../src/base"; +import { Result } from "../../src/util/result"; import { cSnPuiss, ParamsSectionPuiss } from "../../src/section/section_puissance"; import { equalEpsilon, precDist } from "../nubtest"; diff --git a/spec/section_param/section_param_puiss_torrentiel.spec.ts b/spec/section_param/section_param_puiss_torrentiel.spec.ts index 65d0e12a347bbb01316de0ad2f14c5fa87216cd5..6cc2be4a7041d2a29a7fe0c835b73838625a9a56 100644 --- a/spec/section_param/section_param_puiss_torrentiel.spec.ts +++ b/spec/section_param/section_param_puiss_torrentiel.spec.ts @@ -1,4 +1,4 @@ -import { Result } from "../../src/base"; +import { Result } from "../../src/util/result"; import { cSnPuiss, ParamsSectionPuiss } from "../../src/section/section_puissance"; import { equalEpsilon, precDist } from "../nubtest"; diff --git a/spec/section_param/section_param_rect_conv_newton.spec.ts b/spec/section_param/section_param_rect_conv_newton.spec.ts index fad04b0338b48b2079af52733afcf30c8e85ef38..1d0fc9c557a8c4731468491a1182a7dfee2bbed9 100644 --- a/spec/section_param/section_param_rect_conv_newton.spec.ts +++ b/spec/section_param/section_param_rect_conv_newton.spec.ts @@ -1,5 +1,5 @@ // tslint:disable:no-console -import { Result } from "../../src/base"; +import { Result } from "../../src/util/result"; import { cSnRectang, ParamsSectionRectang } from "../../src/section/section_rectang"; import { MessageCode } from "../../src/util/message"; import { equalEpsilon, precDist } from "../nubtest"; diff --git a/spec/section_param/section_param_rect_fluvial.spec.ts b/spec/section_param/section_param_rect_fluvial.spec.ts index 5ed1970149974facdef86a9f9da9843eb6f0212a..8ae7cca92cdc0cdddd1677f45e2f79a7e001b349 100644 --- a/spec/section_param/section_param_rect_fluvial.spec.ts +++ b/spec/section_param/section_param_rect_fluvial.spec.ts @@ -1,4 +1,4 @@ -import { Result } from "../../src/base"; +import { Result } from "../../src/util/result"; import { cSnRectang, ParamsSectionRectang } from "../../src/section/section_rectang"; import { equalEpsilon, precDist } from "../nubtest"; diff --git a/spec/section_param/section_param_rect_torrentiel.spec.ts b/spec/section_param/section_param_rect_torrentiel.spec.ts index b225406a03beae9da2d1139f8cc3a7ff27b45146..a5e7e374339f26e939bc788b1869d76dcbe974f1 100644 --- a/spec/section_param/section_param_rect_torrentiel.spec.ts +++ b/spec/section_param/section_param_rect_torrentiel.spec.ts @@ -1,4 +1,4 @@ -import { Result } from "../../src/base"; +import { Result } from "../../src/util/result"; import { cSnRectang, ParamsSectionRectang } from "../../src/section/section_rectang"; import { equalEpsilon, precDist } from "../nubtest"; diff --git a/spec/section_param/section_param_trapez_fluvial.spec.ts b/spec/section_param/section_param_trapez_fluvial.spec.ts index 086028bc0c6e84ffd1422359f1a519c8b75500ab..f2095057df8ce5a062b30602b27789004ce266a0 100644 --- a/spec/section_param/section_param_trapez_fluvial.spec.ts +++ b/spec/section_param/section_param_trapez_fluvial.spec.ts @@ -1,4 +1,4 @@ -import { Result } from "../../src/base"; +import { Result } from "../../src/util/result"; import { cSnTrapez, ParamsSectionTrapez } from "../../src/section/section_trapez"; import { equalEpsilon, precDist } from "../nubtest"; diff --git a/spec/section_param/section_param_trapez_torrentiel.spec.ts b/spec/section_param/section_param_trapez_torrentiel.spec.ts index 2b0cc47a7af62f36cba251d7b4d0f731f69eb926..2b03327234fb8c9ba651cca021b7a495d069494f 100644 --- a/spec/section_param/section_param_trapez_torrentiel.spec.ts +++ b/spec/section_param/section_param_trapez_torrentiel.spec.ts @@ -1,4 +1,4 @@ -import { Result } from "../../src/base"; +import { Result } from "../../src/util/result"; import { cSnTrapez, ParamsSectionTrapez } from "../../src/section/section_trapez"; import { equalEpsilon, precDist } from "../nubtest"; diff --git a/spec/structure/rectangular_structure.ts b/spec/structure/rectangular_structure.ts index 34b3b6ae4843767b257f7346875e0209a2ba316e..deee528562ccb15569b504fa57592847b9813da4 100644 --- a/spec/structure/rectangular_structure.ts +++ b/spec/structure/rectangular_structure.ts @@ -1,7 +1,7 @@ // tslint:disable-next-line:no-reference /// <reference path="../../node_modules/@types/jasmine/index.d.ts" /> -import { Result } from "../../src/base"; +import { Result } from "../../src/util/result"; import { RectangularStructure } from "../../src/structure/rectangular_structure"; import { StructureFlowMode, StructureFlowRegime } from "../../src/structure/structure"; import { precDigits } from "../nubtest"; diff --git a/spec/structure/structure.spec.ts b/spec/structure/structure.spec.ts index 4f0ba77c6ab37ed73656d6fcac695d423c659b85..575f95863f8dafa798a91e82e49b7463bf9a9c16 100644 --- a/spec/structure/structure.spec.ts +++ b/spec/structure/structure.spec.ts @@ -1,8 +1,8 @@ // tslint:disable-next-line:no-reference /// <reference path="../../node_modules/@types/jasmine/index.d.ts" /> -import { Result } from "../../src/base"; -import { Structure, StructureFlowMode, StructureFlowRegime, StructureParams} from "../../src/structure/structure"; +import { Result } from "../../src/util/result"; +import { Structure, StructureFlowMode, StructureFlowRegime, StructureParams } from "../../src/structure/structure"; import { equalEpsilon } from "../nubtest"; function check(val1: Result, val2: number) { @@ -35,7 +35,7 @@ class StructureTest extends Structure { case "Q": v = this.prms.h1.v - this.prms.h2.v; break; - default: + default: throw new Error("StructureTest.Equation() : invalid parameter name " + sVarCalc); } return new Result(v); diff --git a/spec/structure/structure_cem88d.spec.ts b/spec/structure/structure_cem88d.spec.ts index 1be7f28a43b0e65a3f1207b6986065c5924e2f4b..bae6c610ac9b8b9234bab8f31a0f8b22f61e1229 100644 --- a/spec/structure/structure_cem88d.spec.ts +++ b/spec/structure/structure_cem88d.spec.ts @@ -1,7 +1,7 @@ // tslint:disable-next-line:no-reference /// <reference path="../../node_modules/@types/jasmine/index.d.ts" /> -import { Result } from "../../src/base"; +import { Result } from "../../src/util/result"; import { RectangularStructureParams } from "../../src/structure/rectangular_structure_params"; import { StructureFlowMode, StructureFlowRegime } from "../../src/structure/structure"; import { StructureCem88d } from "../../src/structure/structure_cem88d"; diff --git a/spec/structure/structure_cem88v.spec.ts b/spec/structure/structure_cem88v.spec.ts index c2b3d1daccedac8d333f149c83284a1e54ffa2ca..0ab80754a6f4085eea91813080934d6b857665ee 100644 --- a/spec/structure/structure_cem88v.spec.ts +++ b/spec/structure/structure_cem88v.spec.ts @@ -1,7 +1,7 @@ // tslint:disable-next-line:no-reference /// <reference path="../../node_modules/@types/jasmine/index.d.ts" /> -import { Result } from "../../src/base"; +import { Result } from "../../src/util/result"; import { RectangularStructureParams } from "../../src/structure/rectangular_structure_params"; import { StructureFlowMode, StructureFlowRegime } from "../../src/structure/structure"; import { StructureCem88v } from "../../src/structure/structure_cem88v"; diff --git a/spec/structure/structure_cunge80.spec.ts b/spec/structure/structure_cunge80.spec.ts index 69cb47d92783e0771efe2d91c160573b60a6094a..8e4bc0324455f3819d7c5a2676b1d86e945705a2 100644 --- a/spec/structure/structure_cunge80.spec.ts +++ b/spec/structure/structure_cunge80.spec.ts @@ -1,7 +1,7 @@ // tslint:disable-next-line:no-reference /// <reference path="../../node_modules/@types/jasmine/index.d.ts" /> -import { Result } from "../../src/base"; +import { Result } from "../../src/util/result"; import { RectangularStructureParams } from "../../src/structure/rectangular_structure_params"; import { StructureFlowMode, StructureFlowRegime } from "../../src/structure/structure"; import { StructureCunge80 } from "../../src/structure/structure_cunge80"; diff --git a/spec/structure/structure_orifice_free.spec.ts b/spec/structure/structure_orifice_free.spec.ts index db51c1ec0ffa9ac9d4ca20837494efd5beae4518..44e1a7c3cefdb0aae57af592417e42a2d3e348a8 100644 --- a/spec/structure/structure_orifice_free.spec.ts +++ b/spec/structure/structure_orifice_free.spec.ts @@ -1,7 +1,7 @@ // tslint:disable-next-line:no-reference /// <reference path="../../node_modules/@types/jasmine/index.d.ts" /> -import { Result } from "../../src/base"; +import { Result } from "../../src/util/result"; import { RectangularStructureParams } from "../../src/structure/rectangular_structure_params"; import { StructureFlowMode, StructureFlowRegime } from "../../src/structure/structure"; import { StructureOrificeFree } from "../../src/structure/structure_orifice_free"; diff --git a/spec/structure/structure_orifice_submerged.spec.ts b/spec/structure/structure_orifice_submerged.spec.ts index 050bd6a7dc76407ed57d86d755b7cf5cb75e37a4..bf4cd9e8a5e710e013fc69cf1356701eac7b4107 100644 --- a/spec/structure/structure_orifice_submerged.spec.ts +++ b/spec/structure/structure_orifice_submerged.spec.ts @@ -1,7 +1,7 @@ // tslint:disable-next-line:no-reference /// <reference path="../../node_modules/@types/jasmine/index.d.ts" /> -import { Result } from "../../src/base"; +import { Result } from "../../src/util/result"; import { RectangularStructureParams } from "../../src/structure/rectangular_structure_params"; import { StructureFlowMode, StructureFlowRegime } from "../../src/structure/structure"; import { StructureOrificeSubmerged } from "../../src/structure/structure_orifice_submerged"; diff --git a/spec/structure/structure_weir_free.spec.ts b/spec/structure/structure_weir_free.spec.ts index 9a75c2d01c581992d620c12c5f41b9cbc612f0ce..1aa66d3a3dd4a6fc2efc17c93c2281d2474ae889 100644 --- a/spec/structure/structure_weir_free.spec.ts +++ b/spec/structure/structure_weir_free.spec.ts @@ -1,7 +1,7 @@ // tslint:disable-next-line:no-reference /// <reference path="../../node_modules/@types/jasmine/index.d.ts" /> -import { Result } from "../../src/base"; +import { Result } from "../../src/util/result"; import { RectangularStructureParams } from "../../src/structure/rectangular_structure_params"; import { StructureFlowMode, StructureFlowRegime } from "../../src/structure/structure"; import { StructureWeirFree } from "../../src/structure/structure_weir_free"; diff --git a/spec/structure/test_rectangular_structure.ts b/spec/structure/test_rectangular_structure.ts index 9b7b60bd9560aeda382722cfcfc2660129bff53b..118442634104b6ebc154721d692be1205d3b56fd 100644 --- a/spec/structure/test_rectangular_structure.ts +++ b/spec/structure/test_rectangular_structure.ts @@ -1,4 +1,4 @@ -import { Result } from "../../src/base"; +import { Result } from "../../src/util/result"; import { RectangularStructure } from "../../src/structure/rectangular_structure"; import { StructureFlowMode, StructureFlowRegime } from "../../src/structure/structure"; import { expect, it } from "../mock_jasmine"; diff --git a/spec/structure/test_structure_cem88d.ts b/spec/structure/test_structure_cem88d.ts index 92c674710f9ba2602dabc00d4d9023ccf6583a7e..0e00540709e76a6062e40cf4f27fdb8d2b78439c 100644 --- a/spec/structure/test_structure_cem88d.ts +++ b/spec/structure/test_structure_cem88d.ts @@ -1,4 +1,4 @@ -import { Result } from "../../src/base"; +import { Result } from "../../src/util/result"; import { RectangularStructureParams, StructureCem88d } from "../../src/structure/structure_cem88d"; import { describe, xdescribe } from "../mock_jasmine"; import { precDigits } from "../nubtest"; diff --git a/spec/structure/test_structure_cem88v.ts b/spec/structure/test_structure_cem88v.ts index 20acbfaeeee65dc51f05d1400e21d6ba34729936..c1be649b6d7927e23fca0d4cec6d1b0cfab11728 100644 --- a/spec/structure/test_structure_cem88v.ts +++ b/spec/structure/test_structure_cem88v.ts @@ -1,4 +1,4 @@ -import { Result } from "../../src/base"; +import { Result } from "../../src/util/result"; import { RectangularStructureParams, StructureCem88v } from "../../src/structure/structure_cem88v"; import { describe, xdescribe } from "../mock_jasmine"; import { precDigits } from "../nubtest"; diff --git a/spec/structure/test_structure_cunge80.ts b/spec/structure/test_structure_cunge80.ts index 7cc5df7cf6b296715fb54247ed5b4a4ebdcdc30f..60d794187f28671e8c6135946d09b535338a6584 100644 --- a/spec/structure/test_structure_cunge80.ts +++ b/spec/structure/test_structure_cunge80.ts @@ -1,4 +1,4 @@ -import { Result } from "../../src/base"; +import { Result } from "../../src/util/result"; import { RectangularStructureParams } from "../../src/structure/rectangular_structure_params"; import { StructureFlowMode, StructureFlowRegime } from "../../src/structure/structure"; import { StructureCunge80 } from "../../src/structure/structure_cunge80"; diff --git a/src/base.ts b/src/base.ts index ad55b28fade5bb9b6959e5e2245d49c8adbfe241..4365b942d68073c04d6fc6d7a26abd39a54cf317 100644 --- a/src/base.ts +++ b/src/base.ts @@ -1,39 +1,3 @@ -import { Message, MessageCode } from "./util/message"; - -/** - * Résultat de calcul comprenant la valeur du résultat et des calculs annexes (flag, calculs intermédiaires...) - */ -export class Result { - - /** Calculs intermédiaires ou supplémentaires, flags de calcul */ - public extraVar: { [key: string]: any }; - - /** Valeur calculée */ - public vCalc: number; - - private _message: Message; - - /** - * Résultat de calcul - * @param v Valeur numérique du résultat - * @param m Message d'erreur - * @param e Calculs intermédiaires ou supplémentaires, flags de calcul - */ - constructor(v: number, e?: { [key: string]: any }, m?: Message) { - this.vCalc = v; - this.extraVar = e; - this._message = m; - } - - get code() { - if (this._message == undefined) - return MessageCode.ERROR_OK; - return this._message.code; - } - - get Message() { return this._message; } -} - /** * Série de valeurs à calculer définie par le nom de la variable à sérier et le vecteur de valeur */ diff --git a/src/cond_distri.ts b/src/cond_distri.ts index d27d43bb32464c65e110f4328ce857fa8a0dee40..6ab4a1f2e70c35754daa5d98aff9f45f907ed0e6 100644 --- a/src/cond_distri.ts +++ b/src/cond_distri.ts @@ -1,4 +1,4 @@ -import { Result } from "./base"; +import { Result } from "./util/result"; import { ComputeNodeType, ParamDefinition, ParamDomain, ParamDomainValue, ParamCalculability, ParamsEquation } from "./param"; import { Nub } from "./nub"; diff --git a/src/dichotomie.ts b/src/dichotomie.ts index d02fd2a010f6de02503138bd719bb0bcfd725890..49e85018fc8767fe3eb61cfa78f479c7d4ad7ca9 100644 --- a/src/dichotomie.ts +++ b/src/dichotomie.ts @@ -1,5 +1,6 @@ // import { XOR, BoolIdentity, Debug, Result, ResultCode, UndefinedError } from "./base"; -import { XOR, BoolIdentity, Debug, Result } from "./base"; +import { XOR, BoolIdentity, Debug } from "./base"; +import { Result } from "./util/result"; import { Message, MessageCode } from "./util/message"; import { Nub } from "./nub"; import { ParamDefinition, ParamDomain, ParamDomainValue } from "./param" @@ -461,8 +462,7 @@ export class Dichotomie extends Debug { if (r.ok) var interv: SearchInterval = r.intSearch; else { - let result = new Result(undefined, undefined, r.res); - return result; + return new Result(r.res); } // Dichotomie diff --git a/src/lechaptcalmon.ts b/src/lechaptcalmon.ts index c7a8a635e1d1f5daa8c8a0669a8d9abc7d9127c7..39dd48c82b57b2845bfca23463863ab4775ce63e 100644 --- a/src/lechaptcalmon.ts +++ b/src/lechaptcalmon.ts @@ -1,4 +1,4 @@ -import { Result } from "./base"; +import { Result } from "./util/result"; import { ComputeNodeType, ParamDefinition, ParamDomain, ParamDomainValue, ParamCalculability, ParamsEquation } from "./param"; import { Nub } from "./nub"; diff --git a/src/nub.ts b/src/nub.ts index bb30a00a3b5f0cd1da238712624ff8fcd1e573e6..d3822c3ab8c3d24aabe033a8a341c5b483683da4 100644 --- a/src/nub.ts +++ b/src/nub.ts @@ -1,4 +1,5 @@ -import { Debug, Result, Serie } from "./base" +import { Debug, Serie } from "./base" +import { Result } from "./util/result"; import { Dichotomie } from "./dichotomie" import { ComputeNode, ParamDefinition, ParamsEquation } from "./param" diff --git a/src/regime_uniforme.ts b/src/regime_uniforme.ts index 1692c59f649adce1291a62b9661e245e3d248c90..5582c5e6366611fc27e0aee48c263695078593c9 100644 --- a/src/regime_uniforme.ts +++ b/src/regime_uniforme.ts @@ -1,4 +1,4 @@ -import { Result } from "./base"; +import { Result } from "./util/result"; import { Nub } from "./nub"; import { ParamsSection, acSection } from "./section/section_type"; import { ParamDefinition, ParamCalculability } from "./param" @@ -54,4 +54,4 @@ export class RegimeUniforme extends Nub { return new Result(v); } -} \ No newline at end of file +} diff --git a/src/remous.ts b/src/remous.ts index de53b50c3ae6f628318517db10e83a2ff18a359e..ff305273c1259a3c3a02145ae9c5161cb943e736 100644 --- a/src/remous.ts +++ b/src/remous.ts @@ -1,5 +1,6 @@ import { ParamsSection, acSection } from "./section/section_type"; -import { XOR, Result, round } from "./base"; +import { XOR, round } from "./base"; +import { Result } from "./util/result"; import { ParamsEquation, ParamDefinition, ParamCalculability, ComputeNodeType, ParamDomainValue } from "./param"; import { Dichotomie } from "./dichotomie"; import { Nub } from "./nub"; @@ -168,8 +169,9 @@ export class CourbeRemous extends Nub { private Calc_Y_EulerExplicite(Y: number): Result { // L'appel à Calc('J') avec Y en paramètre réinitialise toutes les données dépendantes de la ligne d'eau let Y2 = Y + this.Dx * this.Calc_dYdX(Y); - if (XOR(this.Dx > 0, !(Y2 < this.Sn.HautCritique))) - return new Result(undefined, new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE)); + if (XOR(this.Dx > 0, !(Y2 < this.Sn.HautCritique))) { + return new Result(new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE)); + } return new Result(Y2); } @@ -189,22 +191,25 @@ export class CourbeRemous extends Nub { let hc = this.Sn.HautCritique; //if ($this ->rDx > 0 xor !($Y + $rDx / 2 * $rk1 < $this ->oSect ->rHautCritique)) { return false; } - if (XOR(Dx > 0, !(Y + Dx / 2 * k1 < hc))) - return new Result(undefined, new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE)); + if (XOR(Dx > 0, !(Y + Dx / 2 * k1 < hc))) { + return new Result(new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE)); + } //$rk2 = $this ->Calc_dYdX($Y + $rDx / 2 * $rk1); let k2 = this.Calc_dYdX(Y + Dx / 2 * k1); //if ($this ->rDx > 0 xor !($Y + $rDx / 2 * $rk2 < $this ->oSect ->rHautCritique)) { return false; } - if (XOR(Dx > 0, !(Y + Dx / 2 * k2 < hc))) - return new Result(undefined, new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE)); + if (XOR(Dx > 0, !(Y + Dx / 2 * k2 < hc))) { + return new Result(new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE)); + } //$rk3 = $this ->Calc_dYdX($Y + $rDx / 2 * $rk2); let k3 = this.Calc_dYdX(Y + Dx / 2 * k2); //if ($this ->rDx > 0 xor !($Y + $rDx / 2 * $rk3 < $this ->oSect ->rHautCritique)) { return false; } - if (XOR(Dx > 0, !(Y + Dx / 2 * k3 < hc))) - return new Result(undefined, new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE)); + if (XOR(Dx > 0, !(Y + Dx / 2 * k3 < hc))) { + return new Result(new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE)); + } //$rk4 = $this ->Calc_dYdX($Y + $rDx * $rk3); let k4 = this.Calc_dYdX(Y + Dx * k3); @@ -213,8 +218,9 @@ export class CourbeRemous extends Nub { let Yout = Y + Dx / 6 * (k1 + 2 * (k2 + k3) + k4); //if ($this ->rDx > 0 xor !($Yout < $this ->oSect ->rHautCritique)) { return false; } - if (XOR(Dx > 0, !(Yout < hc))) - return new Result(undefined, new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE)); + if (XOR(Dx > 0, !(Yout < hc))) { + let res = new Result(new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE)); + } return new Result(Yout); } @@ -254,13 +260,14 @@ export class CourbeRemous extends Nub { let r: Result = Dicho.Dichotomie(Trapez_Fn, this.prmSect.Prec.v, Y); // if ($flag < 0) { - if (r.code != MessageCode.ERROR_OK) + if (!r.ok) return r; let Y2 = r.vCalc; // } elseif($this ->rDx > 0 xor !($Y2 < $this ->oSect ->rHautCritique)) { - if (XOR(this.Dx > 0, !(Y2 < this.Sn.HautCritique))) - return new Result(undefined, new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE)); + if (XOR(this.Dx > 0, !(Y2 < this.Sn.HautCritique))) { + return new Result(new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE)); + } return new Result(Y2); } @@ -337,7 +344,7 @@ export class CourbeRemous extends Nub { // this.debug("end trY " + this.last(trY)); // this.debug("Yn " + this.Sn.HautNormale); - if (rY.code == MessageCode.ERROR_OK) { + if (rY.ok) { // on vérifie qu'on ne traverse pas la hauteur normale (à la précision de calcul près) let prec: number = this.prms.map.Prec.v; let b1: boolean = lastY - this.Sn.HautNormale > prec; @@ -689,4 +696,4 @@ export class CourbeRemous extends Nub { return { "flu": crbFlu, "tor": crbTor, "trX": trX, "tRes": tRes }; } -} \ No newline at end of file +} diff --git a/src/structure/structure.ts b/src/structure/structure.ts index f1254a47f068523df82df5f3568d8ebc29d0b0a0..c9f43ae1a0e69ad7595bf9b4b3ab1dd7d93a07dc 100644 --- a/src/structure/structure.ts +++ b/src/structure/structure.ts @@ -1,4 +1,4 @@ -import { Result } from "../base"; +import { Result } from "../util/result"; import { Nub } from "../nub"; import { ParamCalculability } from "../param"; import { Message } from "../util/message"; @@ -55,12 +55,13 @@ export abstract class Structure extends Nub { /** * Calcul du mode et du régime d'écoulement */ - public Equation(sVarCalc: string): Result { - this.CheckEquation(sVarCalc); - const res: Result = new Result(undefined, { - Mode: this.getFlowMode(), - Regime: this.getFlowRegime()}); - return res; + public abstract Equation(sVarCalc: string): Result; + + protected defaultResultData() { + return { + Mode: this.getFlowMode(), + Regime: this.getFlowRegime() + }; } /** @@ -161,7 +162,7 @@ export abstract class Structure extends Nub { /** * Test générique si VarCalc="Q" pour l'utilisation de Equation */ - private CheckEquation(sVarCalc: string) { + protected CheckEquation(sVarCalc: string) { if (sVarCalc !== "Q") { throw new Error("Structure.Equation() : invalid parameter name " + sVarCalc); } } } diff --git a/src/structure/structure_cem88d.ts b/src/structure/structure_cem88d.ts index 8ddde8744cb93df31c65333fe725ae8583d6f80b..345e6825f5ca9008efc551a3324ce23c14839b37 100644 --- a/src/structure/structure_cem88d.ts +++ b/src/structure/structure_cem88d.ts @@ -1,4 +1,4 @@ -import { Result } from "../base"; +import { Result } from "../util/result"; import { RectangularStructure } from "./rectangular_structure"; import { RectangularStructureParams } from "./rectangular_structure_params"; import { Structure, StructureFlowMode, StructureFlowRegime } from "./structure"; @@ -15,16 +15,18 @@ export class StructureCem88d extends RectangularStructure { * @param sVarCalc Variable à calculer (doit être "Q") */ public Equation(sVarCalc: string): Result { - const res: Result = super.Equation(sVarCalc); + super.CheckEquation(sVarCalc); + const data = super.defaultResultData(); + let v: number; const cd: number = this.prms.Cd.v * this.prms.L.v * Structure.R2G; const b1: number = Math.sqrt(this.prms.h1.v); const b2: number = Math.sqrt(this.prms.h1.v - this.prms.h2.v); const cd1: number = cd * 2.5981; // cd * 3*sqrt(3)/2 this.debug("StructureCem88d.Equation b1=" + b1 + " b2=" + b2 + " cd1=" + cd1); - switch (res.extraVar.Mode) { + switch (data.Mode) { case StructureFlowMode.WEIR: - switch (res.extraVar.Regime) { + switch (data.Regime) { case StructureFlowRegime.FREE: v = cd * this.prms.h1.v * b1; break; @@ -36,7 +38,7 @@ export class StructureCem88d extends RectangularStructure { break; case StructureFlowMode.ORIFICE: const b3: number = Math.pow(this.prms.h1.v - this.prms.W.v, 1.5); - switch (res.extraVar.Regime) { + switch (data.Regime) { case StructureFlowRegime.FREE: v = cd * (this.prms.h1.v * b1 - b3); break; @@ -52,7 +54,7 @@ export class StructureCem88d extends RectangularStructure { this.debug( "StructureCem88d.Equation(h1=" + this.prms.h1.v + ",h2=" + this.prms.h2.v + ",W=" + this.prms.W.v + ") => Q=" + v); - res.vCalc = v; - return res; + + return new Result(v, data); } } diff --git a/src/structure/structure_cem88v.ts b/src/structure/structure_cem88v.ts index 457f430006452b553bedd14f5b744a29ed1bafff..cef783f7cb1adb6d65f57ca65d1bfce705b20c05 100644 --- a/src/structure/structure_cem88v.ts +++ b/src/structure/structure_cem88v.ts @@ -1,4 +1,4 @@ -import { Result } from "../base"; +import { Result } from "../util/result"; import { RectangularStructure } from "./rectangular_structure"; import { RectangularStructureParams } from "./rectangular_structure_params"; import { Structure, StructureFlowMode, StructureFlowRegime } from "./structure"; @@ -15,17 +15,19 @@ export class StructureCem88v extends RectangularStructure { * @param sVarCalc Variable à calculer (doit être "Q") */ public Equation(sVarCalc: string): Result { - const res: Result = super.Equation(sVarCalc); + super.CheckEquation(sVarCalc); + const data = super.defaultResultData(); + let v: number; const mu0: number = 2 / 3 * this.prms.Cd.v; let KF: number; - if (res.extraVar.Regime !== StructureFlowRegime.FREE) { - KF = this.getKF(Math.sqrt( 1 - this.prms.h2.v / this.prms.h1.v), this.getAlfa(this.prms.h2.v)); + if (data.Regime !== StructureFlowRegime.FREE) { + KF = this.getKF(Math.sqrt(1 - this.prms.h2.v / this.prms.h1.v), this.getAlfa(this.prms.h2.v)); } - switch (res.extraVar.Mode) { + switch (data.Mode) { case StructureFlowMode.WEIR: const muf: number = mu0 - 0.08; - switch (res.extraVar.Regime) { + switch (data.Regime) { case StructureFlowRegime.FREE: v = muf * this.prms.L.v * Structure.R2G * Math.pow(this.prms.h1.v, 1.5); break; @@ -36,21 +38,21 @@ export class StructureCem88v extends RectangularStructure { } break; case StructureFlowMode.ORIFICE: - const mu: number = mu0 - 0.08 / (this.prms.h1.v / this.prms.W.v); + const mu: number = mu0 - 0.08 / (this.prms.h1.v / this.prms.W.v); const mu1: number = mu0 - 0.08 / (this.prms.h1.v / this.prms.W.v - 1); - if (res.extraVar.Regime === StructureFlowRegime.FREE) { + if (data.Regime === StructureFlowRegime.FREE) { v = this.prms.L.v * Structure.R2G * (mu * Math.pow(this.prms.h1.v, 1.5) - - mu1 * Math.pow(this.prms.h1.v - this.prms.W.v, 1.5)); + - mu1 * Math.pow(this.prms.h1.v - this.prms.W.v, 1.5)); } else { - if (res.extraVar.Regime === StructureFlowRegime.PARTIAL) { + if (data.Regime === StructureFlowRegime.PARTIAL) { v = this.prms.L.v * Structure.R2G * ( KF * mu * Math.pow(this.prms.h1.v, 1.5) - mu1 * Math.pow(this.prms.h1.v - this.prms.W.v, 1.5) ); } else { const KF1 = this.getKF( - Math.sqrt( 1 - (this.prms.h2.v - this.prms.W.v) / (this.prms.h1.v - this.prms.W.v)), + Math.sqrt(1 - (this.prms.h2.v - this.prms.W.v) / (this.prms.h1.v - this.prms.W.v)), this.getAlfa(this.prms.h2.v - this.prms.W.v), ); v = this.prms.L.v * Structure.R2G * ( @@ -63,8 +65,8 @@ export class StructureCem88v extends RectangularStructure { this.debug( "StructureCem88v.Equation(h1=" + this.prms.h1.v + ",h2=" + this.prms.h2.v + ",W=" + this.prms.W.v + ") => Q=" + v); - res.vCalc = v; - return res; + + return new Result(v, data); } /** diff --git a/src/structure/structure_cunge80.ts b/src/structure/structure_cunge80.ts index d9cc8f448aad3ae941fb0198a1c8d4e375339889..bc8b05c40545d4128eb3351d70b42bc434eae8f0 100644 --- a/src/structure/structure_cunge80.ts +++ b/src/structure/structure_cunge80.ts @@ -1,4 +1,4 @@ -import { Result } from "../base"; +import { Result } from "../util/result"; import { RectangularStructure } from "./rectangular_structure"; import { RectangularStructureParams } from "./rectangular_structure_params"; import { Structure, StructureFlowMode, StructureFlowRegime } from "./structure"; @@ -14,31 +14,35 @@ export class StructureCunge80 extends RectangularStructure { * @param sVarCalc Variable à calculer (doit être égale à Q ici) */ public Equation(sVarCalc: string): Result { - const res: Result = super.Equation(sVarCalc); - switch (res.extraVar.Regime) { + super.CheckEquation(sVarCalc); + const data = super.defaultResultData(); + let v: number; + + switch (data.Regime) { case StructureFlowRegime.FREE: - if (res.extraVar.Mode === StructureFlowMode.WEIR) { + if (data.Mode === StructureFlowMode.WEIR) { const R32: number = 3 * Math.sqrt(3) / 2; - res.vCalc = this.prms.Cd.v * this.prms.L.v * Structure.R2G / R32 * Math.pow(this.prms.h1.v, 1.5); - this.debug("StructureCunge80.Equation WEIR FREE Q=" + res.vCalc); + v = this.prms.Cd.v * this.prms.L.v * Structure.R2G / R32 * Math.pow(this.prms.h1.v, 1.5); + this.debug("StructureCunge80.Equation WEIR FREE Q=" + v); } else { - res.vCalc = this.prms.Cd.v * this.prms.L.v * Structure.R2G + v = this.prms.Cd.v * this.prms.L.v * Structure.R2G * this.prms.W.v * Math.pow(this.prms.h1.v - this.prms.W.v, 0.5); - this.debug("StructureCunge80.Equation ORIFICE FREE Q=" + res.vCalc); + this.debug("StructureCunge80.Equation ORIFICE FREE Q=" + v); } break; case StructureFlowRegime.SUBMERGED: - if (res.extraVar.Mode === StructureFlowMode.WEIR) { - res.vCalc = this.prms.Cd.v * this.prms.L.v * Structure.R2G * this.prms.h2.v + if (data.Mode === StructureFlowMode.WEIR) { + v = this.prms.Cd.v * this.prms.L.v * Structure.R2G * this.prms.h2.v * Math.sqrt(this.prms.h1.v - this.prms.h2.v); - this.debug("StructureCunge80.Equation WEIR SUBMERGED Q=" + res.vCalc); + this.debug("StructureCunge80.Equation WEIR SUBMERGED Q=" + v); } else { - res.vCalc = this.prms.Cd.v * this.prms.L.v * Structure.R2G + v = this.prms.Cd.v * this.prms.L.v * Structure.R2G * this.prms.W.v * Math.sqrt(this.prms.h1.v - this.prms.h2.v); - this.debug("StructureCunge80.Equation ORIFICE SUBMERGED Q=" + res.vCalc); + this.debug("StructureCunge80.Equation ORIFICE SUBMERGED Q=" + v); } } - return res; + + return new Result(v, data); } protected getFlowRegime() { diff --git a/src/structure/structure_orifice_free.ts b/src/structure/structure_orifice_free.ts index fcb3477baaeaebf07645bc770024b371c9adc367..39272136e8abf5a59581bb2e84ed0a02bcb4a0a3 100644 --- a/src/structure/structure_orifice_free.ts +++ b/src/structure/structure_orifice_free.ts @@ -1,4 +1,4 @@ -import { Result } from "../base"; +import { Result } from "../util/result"; import { RectangularStructure } from "./rectangular_structure"; import { RectangularStructureParams } from "./rectangular_structure_params"; import { Structure, StructureFlowMode, StructureFlowRegime } from "./structure"; @@ -14,11 +14,14 @@ export class StructureOrificeFree extends RectangularStructure { * @param sVarCalc Variable à calculer (doit être égale à Q ici) */ public Equation(sVarCalc: string): Result { - const res: Result = super.Equation(sVarCalc); + super.CheckEquation(sVarCalc); + const data = super.defaultResultData(); + // TODO : Warning si les conditions hydrauliques ne correspondent pas à un écoulement dénoyé - res.extraVar.Regime = StructureFlowRegime.FREE; - res.vCalc = this.prms.Cd.v * Math.min(this.prms.W.v, this.prms.h1.v) * this.prms.L.v + data.Regime = StructureFlowRegime.FREE; + const v = this.prms.Cd.v * Math.min(this.prms.W.v, this.prms.h1.v) * this.prms.L.v * Structure.R2G * Math.sqrt(this.prms.h1.v); - return res; + + return new Result(v, data); } } diff --git a/src/structure/structure_orifice_submerged.ts b/src/structure/structure_orifice_submerged.ts index bfdc4e57c0e68558e28e70945ae42d3036aea2ef..c8a670153bdffe166825e33770b2427b1eecd966 100644 --- a/src/structure/structure_orifice_submerged.ts +++ b/src/structure/structure_orifice_submerged.ts @@ -1,4 +1,4 @@ -import { Result } from "../base"; +import { Result } from "../util/result"; import { RectangularStructure } from "./rectangular_structure"; import { RectangularStructureParams } from "./rectangular_structure_params"; import { Structure, StructureFlowMode, StructureFlowRegime } from "./structure"; @@ -14,11 +14,14 @@ export class StructureOrificeSubmerged extends RectangularStructure { * @param sVarCalc Variable à calculer (doit être égale à Q ici) */ public Equation(sVarCalc: string): Result { - const res: Result = super.Equation(sVarCalc); + super.CheckEquation(sVarCalc); + const data = super.defaultResultData(); + // TODO : Warning si les conditions hydrauliques ne correspondent pas à un écoulement dénoyé - res.extraVar.Regime = StructureFlowRegime.SUBMERGED; - res.vCalc = this.prms.Cd.v * Math.min(this.prms.W.v, this.prms.h1.v) * this.prms.L.v + data.Regime = StructureFlowRegime.SUBMERGED; + const v = this.prms.Cd.v * Math.min(this.prms.W.v, this.prms.h1.v) * this.prms.L.v * Structure.R2G * Math.sqrt(this.prms.h1.v - this.prms.h2.v); - return res; + + return new Result(v, data); } } diff --git a/src/structure/structure_params.ts b/src/structure/structure_params.ts index 52305ce790126500672211ec1c528b423d480516..539047181ae3b3e4971914c9a2f535b19f3bc33e 100644 --- a/src/structure/structure_params.ts +++ b/src/structure/structure_params.ts @@ -1,4 +1,4 @@ -import { Result } from "../base"; +import { Result } from "../util/result"; import { Nub } from "../nub"; import { ComputeNodeType, ParamDefinition, ParamDomain, ParamDomainValue, ParamsEquation } from "../param"; import { Message } from "../util/message"; diff --git a/src/structure/structure_weir_free.ts b/src/structure/structure_weir_free.ts index fd1246406f35b38b10429ab821e34edc7d8f3831..4f862723bb97b245245a9775db7402e63d8e88de 100644 --- a/src/structure/structure_weir_free.ts +++ b/src/structure/structure_weir_free.ts @@ -1,4 +1,4 @@ -import { Result } from "../base"; +import { Result } from "../util/result"; import { RectangularStructure } from "./rectangular_structure"; import { RectangularStructureParams } from "./rectangular_structure_params"; import { Structure, StructureFlowMode, StructureFlowRegime } from "./structure"; @@ -14,11 +14,14 @@ export class StructureWeirFree extends RectangularStructure { * @param sVarCalc Variable à calculer (doit être "Q") */ public Equation(sVarCalc: string): Result { - const res: Result = super.Equation(sVarCalc); + super.CheckEquation(sVarCalc); + const data = super.defaultResultData(); + // TODO : Warning si les conditions hydrauliques ne correspondent pas à un seuil dénoyé - res.extraVar.Regime = StructureFlowRegime.FREE; - res.extraVar.Mode = StructureFlowMode.WEIR; - res.vCalc = this.prms.Cd.v * this.prms.L.v * Structure.R2G * Math.pow(this.prms.h1.v, 1.5); - return res; + data.Regime = StructureFlowRegime.FREE; + data.Mode = StructureFlowMode.WEIR; + const v = this.prms.Cd.v * this.prms.L.v * Structure.R2G * Math.pow(this.prms.h1.v, 1.5); + + return new Result(v, data); } } diff --git a/src/util/result.ts b/src/util/result.ts new file mode 100644 index 0000000000000000000000000000000000000000..1456888a9f224f429b49f43c7489a2d55f90ac1c --- /dev/null +++ b/src/util/result.ts @@ -0,0 +1,62 @@ +import { cLog } from "./log"; +import { Message, MessageCode } from "./message"; + +/** + * Résultat de calcul comprenant la valeur du résultat et des calculs annexes (flag, calculs intermédiaires...) + */ +export class Result { + /** Valeur calculée */ + private _vCalc: number; + + private _log: cLog; + + constructor(v: number | Message, d: {} = undefined) { + this._log = new cLog(); + if (typeof v == "number") { + this._vCalc = v; + const m = new Message(MessageCode.ERROR_OK); + m.extraVar = d; + this._log.add(m); + } + else { + if (d != undefined) + throw new Error("appel à Result.constructor() invalide"); + this._log.add(v); + } + }; + + get vCalc() { return this._vCalc; } + + get code(): MessageCode { + if (this.messageCount != 1) + throw new Error("appel à Result.code invalide, il n'y pas exactement un message de log"); + return this._log.messages[0].code; + } + + get extraVar() { + if (this.messageCount != 1) + throw new Error("appel à Result.extraVar invalide, il n'y pas exactement un message de log"); + return this._log.messages[0].extraVar; + } + + public addMessage(m: Message) { + this._log.add(m); + } + + public get log(): cLog { + return this._log; + } + + private get messageCount(): number { + return this._log.messages.length; + } + + public get ok(): boolean { + if (this._vCalc == undefined) + return false; + for (let m of this._log.messages) + if (m.code != MessageCode.ERROR_OK) + return false; + return true; + } +}