param.ts 12.46 KiB
import { Debug } from "./base";
import { DefinedNumber } from "./util/definedvalue";
import { Interval } from "./util/interval";
import { Message, MessageCode } from "./util/message";
import { MapIterator } from "./util/iterator";
import { JalhydObject } from "./jalhyd_object";
/**
 * domaine de définition du paramètre
export enum ParamDomainValue {
    /**
     * >0, =0, <0 (-inf -> +inf)
    ANY,
    /**
     * >=0
    POS_NULL,
    /**
     * > 0
    POS,
    /**
     * <>0
    NOT_NULL,
    /**
     * intervalle
    INTERVAL
export class ParamDomain {
    public static getDefaultBounds(d: ParamDomainValue): { min: number, max: number } {
        switch (d) {
            case ParamDomainValue.INTERVAL:
                const e: Message = new Message(MessageCode.ERROR_PARAMDOMAIN_INVALID);
                throw e;
            case ParamDomainValue.ANY:
            case ParamDomainValue.NOT_NULL:
                return { min: -Infinity, max: Infinity };
            case ParamDomainValue.POS:
                return { min: 1e-9, max: Infinity };
            case ParamDomainValue.POS_NULL:
                return { min: 0, max: Infinity };
            // default:
            //     throw "valeur de ParamDomainValue" + ParamDomainValue[d] + " non prise en charge";
    private _domain: ParamDomainValue;
    private _minValue: number;
    private _maxValue: number;
    constructor(d: ParamDomainValue, min?: number, max?: number) {
        this.checkValue(d, min, max);
        this._domain = d;