From c33425f6215eb61e29f2a15d15e7a90efebe5782 Mon Sep 17 00:00:00 2001 From: David Dorchies <david.dorchies@irstea.fr> Date: Wed, 11 Sep 2019 16:10:31 +0200 Subject: [PATCH] #112 Add time and speed at impact --- spec/devalaison/jet.spec.ts | 8 ++++++-- src/devalaison/jet.ts | 19 ++++++++++++++++++- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/spec/devalaison/jet.spec.ts b/spec/devalaison/jet.spec.ts index 365dc965..6a7e5776 100644 --- a/spec/devalaison/jet.spec.ts +++ b/spec/devalaison/jet.spec.ts @@ -3,7 +3,7 @@ import { JetParams } from "../../src/devalaison/jet_params"; function newJet(): Jet { return new Jet( - new JetParams(5, 0.03, 77.87219452081568, 19.83704632206701), + new JetParams(5, 0.03, 77.8803, 19.991), false ); } @@ -20,7 +20,11 @@ fdescribe("Class Jet", () => { jet.calculatedParam = jet.getParameter(p.symbol); const ref: number = p.currentValue; jet.calculatedParam.singleValue = jet.calculatedParam.singleValue / 10; - expect(jet.CalcSerie().vCalc).toBeCloseTo(ref, 2); + expect(jet.CalcSerie().vCalc).toBeCloseTo(ref, 3); + expect(jet.result.values.t).toBeCloseTo(4, 3); + expect(jet.result.values.Vx).toBeCloseTo(4.9978, 3); + expect(jet.result.values.Vz).toBeCloseTo(-39.0901, 3); + expect(jet.result.values.Vt).toBeCloseTo(39.4083, 3); }); } } diff --git a/src/devalaison/jet.ts b/src/devalaison/jet.ts index b51ac420..c24a9cc1 100644 --- a/src/devalaison/jet.ts +++ b/src/devalaison/jet.ts @@ -12,12 +12,25 @@ export class Jet extends Nub { return this._prms as JetParams; } + public Calc(sVarCalc: string, rInit?: number): Result { + this.currentResult = super.Calc(sVarCalc, rInit); + this.result.resultElement.values.t = this.prms.D.V / Math.cos(this.alpha) / this.prms.V0.V; + this.result.resultElement.values.Vx = this.prms.V0.V * Math.cos(this.alpha); + this.result.resultElement.values.Vz = + this.prms.V0.V * Math.sin(this.alpha) - this.result.resultElement.values.t * 9.81; + this.result.resultElement.values.Vt = Math.sqrt( + Math.pow(this.result.resultElement.values.Vx, 2) + + Math.pow(this.result.resultElement.values.Vz, 2) + ); + return this.result; + } + public Equation(sVarCalc: string): Result { const g: number = 9.81; let alpha: number; if (sVarCalc !== "S") { // Positive slope for negative angle - alpha = Math.asin(-this.prms.S.v); + alpha = this.alpha; } let v: number; switch (sVarCalc) { @@ -43,4 +56,8 @@ export class Jet extends Nub { this.prms.H.calculability = ParamCalculability.EQUATION; this.prms.D.calculability = ParamCalculability.EQUATION; } + + private get alpha(): number { + return Math.asin(this.prms.S.v); + } } -- GitLab