|
From: <bma...@us...> - 2013-11-08 16:27:19
|
Revision: 8532
http://sourceforge.net/p/fudaa/svn/8532
Author: bmarchan
Date: 2013-11-08 16:27:15 +0000 (Fri, 08 Nov 2013)
Log Message:
-----------
Mascaret : Formules Recking 2011 + Van Rijn
Modified Paths:
--------------
trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleSediment.java
trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/hydraulique1d/metier/SedimentologieTest.java
Added Paths:
-----------
trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleRecking2011.java
trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleVanRijn.java
Added: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleRecking2011.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleRecking2011.java (rev 0)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleRecking2011.java 2013-11-08 16:27:15 UTC (rev 8532)
@@ -0,0 +1,83 @@
+package org.fudaa.dodico.hydraulique1d.metier.sediment;
+
+import org.fudaa.dodico.hydraulique1d.metier.MetierDescriptionVariable;
+import org.fudaa.dodico.hydraulique1d.metier.MetierResultatsTemporelSpacialI;
+
+/**
+ * Calcul s\xE9dimentaire avec la formule de Recking 2011.
+ *
+ * @author Bertrand Marchand (mar...@de...)
+ * @version $Id: MetierFormuleLefort1991.java 8524 2013-10-18 08:01:47Z
+ * bmarchan$
+ */
+public class MetierFormuleRecking2011 extends MetierFormuleSediment {
+
+ @Override
+ public double calculer(MetierParametresSediment _params, MetierResultatsTemporelSpacialI _adapter, int _ibief, int _isect, int _itps) {
+
+ double pente = _adapter.getValue(MetierDescriptionVariable.PENE, _ibief, _itps, _isect);
+ double larg = _adapter.getValue(MetierDescriptionVariable.B1, _ibief, _itps, _isect);
+ double qmin = _adapter.getValue(MetierDescriptionVariable.QMIN, _ibief, _itps, _isect);
+
+ double dens = _params.getDensiteMateriau();
+ double d50 = _params.getD50();
+ double d84 = _params.getD84();
+
+ double tetaMEt;
+
+ // calcul des coef
+ if (d50 < 0.002) {
+ tetaMEt = 0.045;
+ }
+ else {
+ tetaMEt = (5 * pente + 0.06) * Math.pow((d84 / d50), (4.4 * Math.pow(pente, 0.5) - 1.5));
+ // teta_m_et = (5 * pente + 0.06) * (D84 / D50) ^ (-1.5)
+ }
+
+ double test = qmin / larg / Math.pow((9.81 * pente * Math.pow(d84, 3)), 0.5);
+
+ double alfa;
+ double beta;
+ double ceta;
+ double delta;
+ if (test > 100) {
+ alfa = 3.2;
+ beta = 0.3;
+ ceta = -0.61;
+ delta = -0.09;
+ }
+ else {
+ alfa = 1.6;
+ beta = 0.23;
+ ceta = -0.46;
+ delta = -0.32;
+ }
+
+ double tetaEt = pente / ((dens - 1) * d84 * (2 / larg + alfa * Math.pow((9.81 * pente), beta) * Math.pow((qmin / larg), ceta) * Math.pow(d84, delta)));
+
+ double phi = 14 * Math.pow(tetaEt, 2.5) / (1 + Math.pow((tetaMEt / tetaEt), 4));
+// double qs_unit = dens * 1000 * Phi * Math.pow((9.81 * (dens - 1) * Math.pow(D84, 3)), 0.5);
+ double qs = larg * phi * Math.pow((9.81 * (dens - 1) * Math.pow(d84, 3)), 0.5);
+
+ return qs;
+ }
+
+ @Override
+ public MetierDescriptionVariable[] getRequiredVariable() {
+ return new MetierDescriptionVariable[] {
+ MetierDescriptionVariable.QMIN,
+ MetierDescriptionVariable.B1,
+ MetierDescriptionVariable.CHAR
+ };
+ }
+
+ @Override
+ public MetierDescriptionVariable getVariable() {
+ return MetierDescriptionVariable.QS_RECKING11;
+ }
+
+ @Override
+ public String getName() {
+ return "Recking 2011";
+ }
+}
Property changes on: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleRecking2011.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleSediment.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleSediment.java 2013-10-23 14:02:26 UTC (rev 8531)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleSediment.java 2013-11-08 16:27:15 UTC (rev 8532)
@@ -36,10 +36,10 @@
formules_.add(new MetierFormuleLefort2007());
formules_.add(new MetierFormuleMeyerPeter());
// formules_.add(MetierDescriptionVariable.QS_RECKING10);
- // formules_.add(MetierDescriptionVariable.QS_RECKING11);
+ formules_.add(new MetierFormuleRecking2011());
formules_.add(new MetierFormuleRickenmann());
formules_.add(new MetierFormuleSmartJaggi());
- // formules_.add(MetierDescriptionVariable.QS_VANRIJN);
+ formules_.add(new MetierFormuleVanRijn());
}
public MetierFormuleSediment() {
Added: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleVanRijn.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleVanRijn.java (rev 0)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleVanRijn.java 2013-11-08 16:27:15 UTC (rev 8532)
@@ -0,0 +1,101 @@
+package org.fudaa.dodico.hydraulique1d.metier.sediment;
+
+import org.fudaa.dodico.hydraulique1d.metier.MetierDescriptionVariable;
+import org.fudaa.dodico.hydraulique1d.metier.MetierResultatsTemporelSpacialI;
+
+/**
+ * Calcul s\xE9dimentaire avec la formule de Van Rijn.
+ *
+ * @author Bertrand Marchand (mar...@de...)
+ * @version $Id: MetierFormuleLefort1991.java 8524 2013-10-18 08:01:47Z
+ * bmarchan$
+ */
+public class MetierFormuleVanRijn extends MetierFormuleSediment {
+
+ @Override
+ public double calculer(MetierParametresSediment _params, MetierResultatsTemporelSpacialI _adapter, int _ibief, int _isect, int _itps) {
+
+ double larg = _adapter.getValue(MetierDescriptionVariable.B1, _ibief, _itps, _isect);
+ double qmin = _adapter.getValue(MetierDescriptionVariable.QMIN, _ibief, _itps, _isect);
+ double h1 = _adapter.getValue(MetierDescriptionVariable.Y, _ibief, _itps, _isect);
+
+ double dens = _params.getDensiteMateriau();
+ double d50 = _params.getD50();
+ double d90 = _params.getD90();
+ double nu = _params.getViscosite();
+
+ // ' initialisation des colonnes et des lignes
+ // Col_Rijn = Range("Rijn").Column
+ // Col_deb_cible = Range("Qcible").Column
+ // Col_H = Range("hauteur").Column
+ //
+ // lgn_calcul = Range("ligne_debut").Row
+ // ligne = lgn_calcul
+ //
+ // Do While Cells(ligne, Col_deb_cible) <> ""
+ //
+ // Qmin = Cells(ligne, Col_deb_cible)
+ // H1 = Cells(ligne, Col_H)
+
+ double rh1 = (h1 * larg) / (larg + 2 * h1);
+ double u = qmin / (larg * h1);
+ double det = d50 * Math.pow(((9.81 * (dens - 1)) / Math.pow(nu, 2)), (1. / 3));
+
+ // 'calcul de uc*^2 via la courbe de schield
+ double alfa;
+ double beta;
+ if (det < 4) {
+ alfa = 0.24;
+ beta = -1;
+ }
+ else if (det < 10) {
+ alfa = 0.14;
+ beta = -0.64;
+ }
+ else if (det < 20) {
+ alfa = 0.04;
+ beta = -0.1;
+ }
+ else if (det < 150) {
+ alfa = 0.013;
+ beta = 0.29;
+ }
+ else {
+ alfa = 0.055;
+ beta = 0;
+ }
+
+ double ucetCarre = 9.81 * (dens - 1) * d50 * (alfa * Math.pow(det, beta));
+ double uet = Math.pow(9.81, 0.5) * u / (18 * Math.log10(4 * rh1 / d90));
+ double t;
+
+ if (Math.pow(uet, 2) > ucetCarre) {
+ t = (Math.pow(uet, 2) - ucetCarre) / ucetCarre;
+ }
+ else {
+ t = 0;
+ }
+
+ double qs = larg * 0.053 * Math.pow((9.81 * (dens - 1) * Math.pow(d50, 3)), 0.5) * Math.pow(t, 2.1) / Math.pow(det, 0.3);
+ return qs;
+ }
+
+ @Override
+ public MetierDescriptionVariable[] getRequiredVariable() {
+ return new MetierDescriptionVariable[] {
+ MetierDescriptionVariable.QMIN,
+ MetierDescriptionVariable.B1,
+ MetierDescriptionVariable.Y
+ };
+ }
+
+ @Override
+ public MetierDescriptionVariable getVariable() {
+ return MetierDescriptionVariable.QS_VANRIJN;
+ }
+
+ @Override
+ public String getName() {
+ return "Van Rijn";
+ }
+}
Property changes on: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleVanRijn.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/hydraulique1d/metier/SedimentologieTest.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/hydraulique1d/metier/SedimentologieTest.java 2013-10-23 14:02:26 UTC (rev 8531)
+++ trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/hydraulique1d/metier/SedimentologieTest.java 2013-11-08 16:27:15 UTC (rev 8532)
@@ -8,9 +8,11 @@
import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierFormuleLefort1991;
import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierFormuleLefort2007;
import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierFormuleMeyerPeter;
+import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierFormuleRecking2011;
import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierFormuleRickenmann;
import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierFormuleSediment;
import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierFormuleSmartJaggi;
+import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierFormuleVanRijn;
import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierParametresSediment;
import org.fudaa.dodico.mascaret.AbstractMascaretTestCase;
@@ -194,4 +196,22 @@
assertEquals(val, sedRes[7][itps],epsilon);
}
}
+
+ public void testFormuleRecking2011() throws IOException {
+ FuLog.debug("Formule Recking 2011");
+ MetierFormuleSediment form=new MetierFormuleRecking2011();
+ for (int itps=0; itps<hydrauRes_.getNbTemps(); itps++) {
+ double val=form.calculer(params_, hydrauRes_, 0, 0, itps);
+ assertEquals(val, sedRes[10][itps],epsilon);
+ }
+ }
+
+ public void testFormuleVanRijn() throws IOException {
+ FuLog.debug("Formule Van Rijn");
+ MetierFormuleSediment form=new MetierFormuleVanRijn();
+ for (int itps=0; itps<hydrauRes_.getNbTemps(); itps++) {
+ double val=form.calculer(params_, hydrauRes_, 0, 0, itps);
+ assertEquals(val, sedRes[11][itps],epsilon);
+ }
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|