diff --git a/src/param.ts b/src/param.ts
index 670a6ff4961536edb13d274befa75a17644d9a45..491cccbbcb67450b65ddf92999d87c0ce14eedc8 100644
--- a/src/param.ts
+++ b/src/param.ts
@@ -364,9 +364,11 @@ export interface IParamsEquation {
  * type de noeud de calcul
  */
 export enum ComputeNodeType {
-    CondDistri, RegimeUniforme, LechaptCalmon,
+    CondDistri, LechaptCalmon,
     SectionParametree, // paramètres communs à toutes les sections paramétrées
     SectionTrapeze, SectionRectangle, SectionCercle, SectionPuissance,
+    RegimeUniforme, // paramètres communs à toutes les sections paramétrées
+    RegimeUniformeTrapeze, RegimeUniformeRectangle, RegimeUniformeCercle, RegimeUniformePuissance,
     Test
 }
 
diff --git a/src/parameters.ts b/src/parameters.ts
index 37a196a25696b57d47c125e418d72b55bb25e94a..8eddc2f079f363628166f146ae9bc07aa54ed33a 100644
--- a/src/parameters.ts
+++ b/src/parameters.ts
@@ -6,6 +6,7 @@ import { ParamsSectionTrapez, cSnTrapez } from "./section/section_trapez";
 import { ParamsSectionRectang, cSnRectang } from "./section/section_rectang";
 import { ParamsSectionCirc, cSnCirc } from "./section/section_circulaire";
 import { ParamsSectionPuiss, cSnPuiss } from "./section/section_puissance";
+import { RegimeUniforme } from "./regime_uniforme";
 
 export class ComputeNodeParameters {
     private static _instance: ComputeNodeParameters;
@@ -62,6 +63,49 @@ export class ComputeNodeParameters {
                     return cn;
                 }
 
+            case ComputeNodeType.RegimeUniformeTrapeze:
+                {
+                    let cn = new ParamsSectionTrapez(undefined, undefined, undefined, undefined, undefined,
+                        undefined, undefined, undefined, undefined, undefined, undefined,
+                        ComputeNodeType.RegimeUniformeTrapeze,
+                        ComputeNodeType.RegimeUniforme);
+                    let n = new cSnTrapez(undefined, cn);
+                    let ru = new RegimeUniforme(n); // pour initialiser la calculabilité des paramètres
+                    return cn;
+                }
+
+            case ComputeNodeType.RegimeUniformeRectangle:
+                {
+                    let cn = new ParamsSectionRectang(undefined, undefined, undefined, undefined, undefined,
+                        undefined, undefined, undefined, undefined, undefined,
+                        ComputeNodeType.RegimeUniforme);
+                    let n = new cSnRectang(undefined, cn);
+                    let ru = new RegimeUniforme(n); // pour initialiser la calculabilité des paramètres
+                    return cn;
+                }
+
+            case ComputeNodeType.RegimeUniformeCercle:
+                {
+                    let cn = new ParamsSectionCirc(undefined, undefined, undefined, undefined, undefined,
+                        undefined, undefined, undefined, undefined, undefined,
+                        ComputeNodeType.RegimeUniformeCercle,
+                        ComputeNodeType.RegimeUniforme);
+                    let n = new cSnCirc(undefined, cn);
+                    let ru = new RegimeUniforme(n); // pour initialiser la calculabilité des paramètres
+                    return cn;
+                }
+
+            case ComputeNodeType.RegimeUniformePuissance:
+                {
+                    let cn = new ParamsSectionPuiss(undefined, undefined, undefined, undefined, undefined,
+                        undefined, undefined, undefined, undefined, undefined, undefined,
+                        ComputeNodeType.RegimeUniformePuissance,
+                        ComputeNodeType.RegimeUniforme);
+                    let n = new cSnPuiss(undefined, cn);
+                    let ru = new RegimeUniforme(n); // pour initialiser la calculabilité des paramètres
+                    return cn;
+                }
+
             default:
                 throw "ComputeNodeParameters.getComputeNodeParameters() : noeud de calcul '" + ComputeNodeType[type] + "' non pris en charge";
         }
diff --git a/src/section/section_circulaire.ts b/src/section/section_circulaire.ts
index 7fd29262f1c7efdbf9673e9a84be2f0fd27ec959..f3ca8dba3603d5c4bd163c04d51233ec439ef3c9 100644
--- a/src/section/section_circulaire.ts
+++ b/src/section/section_circulaire.ts
@@ -6,9 +6,12 @@ import { ErrorMessage, ErrorCode } from '../util/error';
 export class ParamsSectionCirc extends ParamsSection {
         private _D: ParamDefinition;          // Diamètre du cercle
 
-        constructor(rD: number, rY: number, rKs: number, rQ: number, rIf: number, rPrec: number, rYB: number, rYCL: number = undefined, rDx: number = undefined, rLong: number = undefined) {
-                super(rY, undefined, rKs, rQ, rIf, rPrec, rYB, rYCL);
-                this._D = new ParamDefinition(ComputeNodeType.SectionCercle, 'D', ParamDomainValue.POS, rD);
+        constructor(rD: number, rY: number, rKs: number, rQ: number, rIf: number, rPrec: number, rYB: number,
+                rYCL: number = undefined, rDx: number = undefined, rLong: number = undefined,
+                nodeType: ComputeNodeType = ComputeNodeType.SectionCercle,
+                defaultNodeType: ComputeNodeType = ComputeNodeType.SectionParametree) {
+                super(rY, undefined, rKs, rQ, rIf, rPrec, rYB, rYCL, rDx, rLong, defaultNodeType);
+                this._D = new ParamDefinition(nodeType, 'D', ParamDomainValue.POS, rD);
         }
 
         /**
diff --git a/src/section/section_puissance.ts b/src/section/section_puissance.ts
index c11e7fd06dce193bd72039921af106011ef82e79..5c8cf3dc52cad8f2bea0bcdb3dec591dab56ea1a 100644
--- a/src/section/section_puissance.ts
+++ b/src/section/section_puissance.ts
@@ -8,9 +8,12 @@ import { cLog } from "./log";
 export class ParamsSectionPuiss extends ParamsSection {
         private _k: ParamDefinition; // Coefficient de forme compris entre 0 et 1
 
-        constructor(rk: number, rY: number, rLargeurBerge: number, rKs: number, rQ: number, rIf: number, rPrec: number, rYB: number, rYCL: number = 0, rDx: number = 0, rLong: number = 0) {
-                super(rY, rLargeurBerge, rKs, rQ, rIf, rPrec, rYB, rYCL);
-                this._k = new ParamDefinition(ComputeNodeType.SectionPuissance, 'k', new ParamDomain(ParamDomainValue.INTERVAL, 0, 1), rk);
+        constructor(rk: number, rY: number, rLargeurBerge: number, rKs: number, rQ: number, rIf: number, rPrec: number, rYB: number,
+                rYCL: number = undefined, rDx: number = undefined, rLong: number = undefined,
+                nodeType: ComputeNodeType = ComputeNodeType.SectionPuissance,
+                defaultNodeType: ComputeNodeType = ComputeNodeType.SectionParametree) {
+                super(rY, rLargeurBerge, rKs, rQ, rIf, rPrec, rYB, rYCL, rDx, rLong, defaultNodeType);
+                this._k = new ParamDefinition(nodeType, 'k', new ParamDomain(ParamDomainValue.INTERVAL, 0, 1), rk);
         }
 
         /**
diff --git a/src/section/section_rectang.ts b/src/section/section_rectang.ts
index 5d93e1ce132fa063eaf9fb04e68f5e82d3bbc103..e77aa31e2aedf7e7f5aaf586396aec51c101ebb1 100644
--- a/src/section/section_rectang.ts
+++ b/src/section/section_rectang.ts
@@ -1,11 +1,14 @@
 import { acSection, ParamsSection } from "./section_type";
+import { ComputeNodeType } from "../param";
 import { cLog } from "./log";
 
 export class ParamsSectionRectang extends ParamsSection {
-        constructor(rY: number, rLargeurFond: number, rKs: number, rQ: number, rIf: number, rPrec: number, rYB: number, rYCL: number = 0, rDx: number = 0, rLong: number = 0) {
+        constructor(rY: number, rLargeurFond: number, rKs: number, rQ: number, rIf: number, rPrec: number, rYB: number,
+                rYCL: number = undefined, rDx: number = undefined, rLong: number = undefined,
+                defaultNodeType: ComputeNodeType = ComputeNodeType.SectionParametree) {
                 super(rY,
                         rLargeurFond, // LargeurBerge=LargeurFond
-                        rKs, rQ, rIf, rPrec, rYB, rYCL);
+                        rKs, rQ, rIf, rPrec, rYB, rYCL, rDx, rLong, defaultNodeType);
                 //    this.LargeurBerge.symbolAlias = 'LargeurFond';
         }
 }
diff --git a/src/section/section_trapez.ts b/src/section/section_trapez.ts
index bc9d8f0c67fe01590904f386c80519079d1df765..04a4b6d176189185fd669a9f16bfb3a7ab29d086 100644
--- a/src/section/section_trapez.ts
+++ b/src/section/section_trapez.ts
@@ -7,10 +7,13 @@ export class ParamsSectionTrapez extends ParamsSection {
         private _LargeurFond: ParamDefinition; // Largeur au fond
         private _Fruit: ParamDefinition; // Fruit des berges
 
-        constructor(rLargeurFond: number, rFruit: number, rY: number, rKs: number, rQ: number, rIf: number, rPrec: number, rYB: number, rYCL: number = 0, rDx: number = 0, rLong: number = 0) {
-                super(rY, undefined, rKs, rQ, rIf, rPrec, rYB, rYCL);
-                this._LargeurFond = new ParamDefinition(ComputeNodeType.SectionTrapeze, 'LargeurFond', ParamDomainValue.POS_NULL, rLargeurFond);
-                this._Fruit = new ParamDefinition(ComputeNodeType.SectionTrapeze, 'Fruit', ParamDomainValue.POS_NULL, rFruit);
+        constructor(rLargeurFond: number, rFruit: number, rY: number, rKs: number, rQ: number, rIf: number, rPrec: number, rYB: number,
+                rYCL: number = undefined, rDx: number = undefined, rLong: number = undefined,
+                nodeType: ComputeNodeType = ComputeNodeType.SectionTrapeze,
+                defaultNodeType: ComputeNodeType = ComputeNodeType.SectionParametree) {
+                super(rY, undefined, rKs, rQ, rIf, rPrec, rYB, rYCL, rDx, rLong, defaultNodeType);
+                this._LargeurFond = new ParamDefinition(nodeType, 'LargeurFond', ParamDomainValue.POS_NULL, rLargeurFond);
+                this._Fruit = new ParamDefinition(nodeType, 'Fruit', ParamDomainValue.POS_NULL, rFruit);
         }
 
         /**
diff --git a/src/section/section_type.ts b/src/section/section_type.ts
index bb0595d067258d357371e455be35c150b8c3c2fc..e037d6a68051ee1cae446050afe23f0db469e06a 100644
--- a/src/section/section_type.ts
+++ b/src/section/section_type.ts
@@ -103,10 +103,12 @@ export abstract class ParamsSection extends cParamsCanal {
         private _Y: ParamDefinition;          // Tirant d'eau
         private _LargeurBerge: ParamDefinition; // largeur au débordement
 
-        constructor(rY: number, rLargeurBerge: number, rKs: number, rQ: number, rIf: number, rPrec: number, rYB: number, rYCL: number = undefined, rDx: number = undefined, rLong: number = undefined) {
-                super(ComputeNodeType.SectionParametree, rKs, rQ, rIf, rPrec, rYB, rYCL, rDx, rLong);
-                this._Y = new ParamDefinition(ComputeNodeType.SectionParametree, 'Y', ParamDomainValue.POS_NULL, rY);
-                this._LargeurBerge = new ParamDefinition(ComputeNodeType.SectionParametree, 'LargeurBerge', ParamDomainValue.POS_NULL, rLargeurBerge);
+        constructor(rY: number, rLargeurBerge: number, rKs: number, rQ: number, rIf: number, rPrec: number, rYB: number,
+                rYCL: number = undefined, rDx: number = undefined, rLong: number = undefined,
+                nodeType: ComputeNodeType = ComputeNodeType.SectionParametree) {
+                super(nodeType, rKs, rQ, rIf, rPrec, rYB, rYCL, rDx, rLong);
+                this._Y = new ParamDefinition(nodeType, 'Y', ParamDomainValue.POS_NULL, rY);
+                this._LargeurBerge = new ParamDefinition(nodeType, 'LargeurBerge', ParamDomainValue.POS_NULL, rLargeurBerge);
         }
 
         /**