diff --git a/spec/base.spec.ts b/spec/base.spec.ts
index fe3bd67909d9ad672306541832204f633fd0407d..0bb55fbd6efcc8a0aed291e0ee594ae7cd1420a3 100644
--- a/spec/base.spec.ts
+++ b/spec/base.spec.ts
@@ -1,7 +1,7 @@
 /// <reference path="../node_modules/@types/jasmine/index.d.ts" />
 
-import { nub, precDigits } from "./nubtest";
 import { Result } from "../src/base";
+import { nub, precDigits } from "./nubtest";
 
 
 describe('Class Nub: ', () => {
diff --git a/spec/nubtest.ts b/spec/nubtest.ts
index cc19b41a8b04c2c76de6a2768808c08c37d734a5..64a2f4f87438dc9ccaecc8aa39099e0fdbbb434f 100644
--- a/spec/nubtest.ts
+++ b/spec/nubtest.ts
@@ -1,4 +1,5 @@
-import { Nub, Result, IParamsEquation } from "../src/base";
+import { Result, IParamsEquation } from "../src/base";
+import { Nub } from "../src/nub";
 
 export class NubTest extends Nub {
     constructor(v: IParamsEquation) {
diff --git a/spec/regime_uniforme_rect.spec.ts b/spec/regime_uniforme_rect.spec.ts
index 46ea5e328ddcdc43ee60b1f4cc02770101dea526..6cec1391b9ea04d073e3735618ba7d973fcec006 100644
--- a/spec/regime_uniforme_rect.spec.ts
+++ b/spec/regime_uniforme_rect.spec.ts
@@ -11,8 +11,40 @@ describe('Class RegimeUniforme / section rectangulaire : ', () => {
     // });
 
     describe('Calc(): ', () => {
-        it('fail', () => {
-            expect(false);
+        it('Q should be 1.568', () => {
+            let sect: cSnRectang;
+            let prmsCanal: cParamsCanal;
+
+            //  Ks=Strickler, Q=Débit, If=pente du font, précision, YB=hauteur de berge, YCL=Condition limite en cote à l'amont ou à l'aval
+            prmsCanal = new cParamsCanal(40, 0, 0.001, precDist, 1)
+
+            // largeur de fond
+            sect = new cSnRectang(false, prmsCanal, 2.5);
+            // tirant d'eau
+            sect.Y = 0.8;
+
+            var ru = new RegimeUniforme(sect);
+
+            // nom variable à calculer, valeur de Q
+            expect(ru.Calc("Q").vCalc).toBeCloseTo(1.568, precDigits);
+        });
+
+        it('Q should be 0.731', () => {
+            let sect: cSnRectang;
+            let prmsCanal: cParamsCanal;
+
+            //  Ks=Strickler, Q=Débit, If=pente du font, précision, YB=hauteur de berge, YCL=Condition limite en cote à l'amont ou à l'aval
+            prmsCanal = new cParamsCanal(30, 0, 0.0001, precDist, 1.2)
+
+            // largeur de fond
+            sect = new cSnRectang(false, prmsCanal, 3);
+            // tirant d'eau
+            sect.Y = 1.1;
+
+            var ru = new RegimeUniforme(sect);
+
+            // nom variable à calculer, valeur de Q
+            expect(ru.Calc("Q").vCalc).toBeCloseTo(0.731, precDigits);
         });
 
         it('Strickler should be 30.619', () => {
@@ -24,14 +56,12 @@ describe('Class RegimeUniforme / section rectangulaire : ', () => {
 
             // largeur de fond
             sect = new cSnRectang(false, prmsCanal, 2.5);
+            // tirant d'eau
             sect.Y = 0.8;
 
             var ru = new RegimeUniforme(sect);
 
-            //let res = new Result(30.619);
-
-            // nom variable à calculer, caleur de Y            
-            // expect(ru.Calc("Ks").vCalc).toEqual(res.vCalc);
+            // nom variable à calculer, valeur de Ks
             expect(ru.Calc("Ks").vCalc).toBeCloseTo(30.619, precDigits);
         });
     });
diff --git a/spec/regime_uniforme_trapeze.spec.ts b/spec/regime_uniforme_trapeze.spec.ts
index 23c483460e991aba0c00a878bb26adc6b3acdc0e..688e231298a0b58de35b81c1b6c65cf957d9c028 100644
--- a/spec/regime_uniforme_trapeze.spec.ts
+++ b/spec/regime_uniforme_trapeze.spec.ts
@@ -4,13 +4,30 @@ import { Result } from "../src/base";
 import { RegimeUniforme } from "../src/regime_uniforme";
 import { cSnTrapez } from "../src/section/section_trapez";
 import { cParamsCanal } from "../src/section/section_type";
-import { precDigits } from "./nubtest";
+import { precDigits, precDist } from "./nubtest";
 
 describe('Class RegimeUniforme / section trapèze: ', () => {
     beforeAll(() => {
     });
 
     describe('Calc(): ', () => {
+        it('Q should be 9.393', () => {
+            let sect: cSnTrapez;
+            let paramCnl: cParamsCanal;
+            //  Ks=Strickler, Q=Débit, If=pente du font, précision, YB=hauteur de berge, YCL=Condition limite en cote à l'amont ou à l'aval
+            paramCnl = new cParamsCanal(40, 0, 0.001, precDist, 1)
+            // largeur de fond, fruit
+            sect = new cSnTrapez(false, paramCnl, 2.5, 0.56);
+            // tirant d'eau
+            sect.Y = 0.8;
+
+            var ru: RegimeUniforme;
+            ru = new RegimeUniforme(sect);
+
+            expect(ru.Calc("Q").vCalc).toBeCloseTo(1.988, precDigits);
+        });
+
+
         it('LargeurAuFond should be 9.393', () => {
             let sect: cSnTrapez;
             let paramCnl: cParamsCanal;
diff --git a/src/base.ts b/src/base.ts
index f0e658b99ad210c45e819bc39b5a36bdd4735e01..be69087500c424fbe703aaeb7cd5ff36c3d8b2ff 100644
--- a/src/base.ts
+++ b/src/base.ts
@@ -1,5 +1,3 @@
-import { Dichotomie } from "./dichotomie"
-
 /**
  * Résultat de calcul comprenant la valeur du résultat et des calculs annexes (flag, calculs intermédiaires...)
  */
@@ -60,76 +58,3 @@ export abstract class Debug {
         if (this.DBG) console.log(s);
     }
 }
-
-
-/**
- * Classe abstraite de Noeud de calcul : classe de base pour tous les calculs
- */
-export abstract class Nub extends Debug {
-    /// Nom des variables calculées par la méthode Equation
-    private _varsEq: string[] = [];
-
-    public v: IParamsEquation;
-
-    constructor(paramsEq: IParamsEquation) {
-        super(false);
-        this.v = paramsEq;
-    }
-
-
-    /** 
-     * Formule utilisée pour le calcul analytique (solution directe ou méthode de résolution spécifique)
-     */
-    abstract Equation(sVarCalc: string): Result;
-
-
-    /** 
-     * Calcul d'une équation quelque soit l'inconnue à calculer
-     * @param sVarCalc nom de la variable à calculer
-     * @param rInit valeur initiale de la variable à calculer dans le cas de la dichotomie
-     * @param rPrec précision de calcul
-     */
-    Calc(sVarCalc: string, rInit: number = 0, rPrec: number = 0.001): Result {
-        for (let sVarEq of this._varsEq) {
-            if (sVarCalc == sVarEq) {
-                return this.Equation(sVarCalc);
-            }
-        }
-        return this.Solve(sVarCalc, rInit, rPrec);
-    }
-
-
-    CalcSerie(svarCalc: string, serie: Serie): Result[] {
-        /** @todo faire une boucle pour appeler this.Calc avec chaque valeur de serie.values
-         * 
-         */
-        // let results = [new (Result)];
-        let results = [new Result(0)];
-        return results;
-    }
-
-    get sVarsEq(): string[] {
-        return this._varsEq;
-    }
-
-    set sVarsEq(sVarsEq: string[]) {
-        this._varsEq = sVarsEq;
-    }
-
-    AddVarEq(sVarEq: string) {
-        this._varsEq.push(sVarEq);
-    }
-
-
-    /** 
-     * Résoud l'équation par une méthode numérique
-     * @param sVarCalc nom de la variable à calculer
-     * @param rInit valeur initiale de la variable à calculer dans le cas de la dichotomie
-     * @param rPrec précision de calcul
-     */
-    Solve(sVarCalc: string, rInit: number, rPrec: number): Result {
-        let dicho: Dichotomie = new Dichotomie(this, sVarCalc);
-        var target = this.v[this._varsEq[0]];
-        return dicho.Dichotomie(target, rPrec, rInit);
-    }
-}
diff --git a/src/dichotomie.ts b/src/dichotomie.ts
index 76c14528519e1fecff78e2c93f84ed10221f5a39..a9a554d3a427531ca5d1f0eca424408681136bcd 100644
--- a/src/dichotomie.ts
+++ b/src/dichotomie.ts
@@ -1,7 +1,7 @@
-import { Debug, Nub, Result } from "./base";
+import { Debug, Result } from "./base";
+import { Nub } from "./nub";
 
-//export class Dichotomie extends Debug {
-export class Dichotomie {
+export class Dichotomie extends Debug {
     /**  Pas de parcours de l'intervalle pour initialisation dichotomie */
     readonly IDEFINT = 100;
     /** Nombre d'itérations maximum de la dichotomie */
@@ -14,7 +14,7 @@ export class Dichotomie {
     * @param sVarCalc Nom de la variable à calculer
     */
     constructor(private nub: Nub, private sVarCalc: string) {
-        //        super(false);
+        super(false);
     }
 
     /** Valeur inconnue à rechercher */
@@ -35,7 +35,6 @@ export class Dichotomie {
         return (a || b) && !(a && b);
     }
 
-
     /**
      * Calcul de l'équation analytique.
      * @note Wrapper vers this.nub.Equation pour simplifier le code.
@@ -49,8 +48,6 @@ export class Dichotomie {
         return this.nub.Equation(this.nub.sVarsEq[0]);
     }
 
-    private debug(s) { }
-
     /**
     * Calcul à l'ouvrage
     * @param sVarCalc Nom de la variable à calculer
diff --git a/src/lechaptcalmon.ts b/src/lechaptcalmon.ts
index d6a40bc12f026b9c40026bf53eca922db22e4b2a..0a349a7a46a2ad13ab145d252ff66c475902514c 100644
--- a/src/lechaptcalmon.ts
+++ b/src/lechaptcalmon.ts
@@ -1,4 +1,5 @@
-import { Nub, Result, IParamsEquation } from "./base";
+import { Result, IParamsEquation } from "./base";
+import { Nub } from "./nub";
 
 interface IParamLechaptCalmon extends IParamsEquation {
     /** Débit */
diff --git a/src/regime_uniforme.ts b/src/regime_uniforme.ts
index 971314ee0f1f026b256280b9c295eb1128cf63d8..70c8c2c870780e78febe9680031b26918e0a284d 100644
--- a/src/regime_uniforme.ts
+++ b/src/regime_uniforme.ts
@@ -1,4 +1,5 @@
-import { Nub, Result, IParamsEquation } from "./base";
+import { Result, IParamsEquation } from "./base";
+import { Nub } from "./nub";
 import { acSection, cParamsCanal } from "./section/section_type";