An error occurred while loading the file. Please try again.
-
Mathias Chouet authoredc084953f
import { Debug, IDebug } from "./base";
import { JalhydObject } from "./jalhyd_object";
import { ParamCalculability, ParamDefinition } from "./param/param-definition";
import { IParamDefinitionIterator, ParamsEquation } from "./param/params-equation";
/**
* type de calculette
*/
export enum CalculatorType {
ConduiteDistributrice,
LechaptCalmon,
SectionParametree,
RegimeUniforme,
CourbeRemous,
PabDimensions, // passe à bassin rectangulaire
PabPuissance, // passe à bassin : puissance dissipée
Structure, // ouvrages hydrauliques simples
ParallelStructure, // ouvrages hydrauliques en parallèle
Dever, // Outil Cassiopée Dever
Cloisons, // Outil Cassiopée PAB Cloisons
MacroRugo, // Passe à enrochement simple (Cassan et al., 2016)
PabChute,
PabNombre,
Section,
Pab // Passe à bassins
}
/**
* type de noeud de calcul (sous type de calculette)
*/
export enum ComputeNodeType {
None,
// types de sections
SectionTrapeze, SectionRectangle, SectionCercle, SectionPuissance,
// types d'ouvrages hydrauliques
StructureRectangle
}
/**
* noeud de calcul
*/
export abstract class ComputeNode extends JalhydObject implements IDebug {
/**
* Set of ParamDefinition, used as input of this node
*/
protected _prms: ParamsEquation;
/**
* { symbol => ParamFamily } map for ExtraResults; defines a priori which
* future extra result can be linked to other Nub's parameters
*/
protected _extraResultsFamilies: any;
protected _calcType: CalculatorType;
private _debug: Debug;
constructor(prms: ParamsEquation, dbg: boolean = false) {
super();
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();
}
this._prms.Pr.calculability = ParamCalculability.FREE; // so that it can be set through Pr.v
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
this.setParametersCalculability();
this._prms.DefineCalculability();
this.setExtraResultsFamilies();
}
public get prms(): ParamsEquation {
return this._prms;
}
/**
* Retrieves a parameter from its symbol (unique in a given Nub)
* @WARNING also retrieves **extra results** and returns them as ParamDefinition !
*/
public getParameter(name: string): ParamDefinition {
for (const p of this.parameterIterator) {
if (p.symbol === name) {
return p;
}
}
return undefined;
}
public getFirstAnalyticalParameter(): ParamDefinition {
for (const p of this.parameterIterator) {
if (
p.isAnalytical()
&& p.symbol !== "Pr"
) {
return p;
}
}
return undefined;
}
/**
* Returns an iterator over own parameters (this._prms)
*/
public get parameterIterator(): IParamDefinitionIterator {
return this._prms.iterator;
}
// interface IDebug
public debug(...args: any[]) {
this._debug.debug(...args);
}
public get DBG(): boolean {
return this._debug.DBG;
}
/**
* Define ParamFamily (@see ParamDefinition) for extra results
*/
protected setExtraResultsFamilies() {
this._extraResultsFamilies = {};
}
public get extraResultsFamilies() {
return this._extraResultsFamilies;
}
protected abstract setParametersCalculability(): void;
}