|
From: <bma...@us...> - 2013-10-22 08:58:52
|
Revision: 8529
http://sourceforge.net/p/fudaa/svn/8529
Author: bmarchan
Date: 2013-10-22 08:58:48 +0000 (Tue, 22 Oct 2013)
Log Message:
-----------
Mascaret : Formules Rickenmann + Hangelung Hansen
Modified Paths:
--------------
trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleMeyerPeter.java
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/MetierFormuleSmartJaggi.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/MetierFormuleEngelundHansen.java
trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleRickenmann.java
Added: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleEngelundHansen.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleEngelundHansen.java (rev 0)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleEngelundHansen.java 2013-10-22 08:58:48 UTC (rev 8529)
@@ -0,0 +1,55 @@
+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 Hangelung & Hansen.
+ *
+ * @author Bertrand Marchand (mar...@de...)
+ * @version $Id: MetierFormuleLefort1991.java 8524 2013-10-18 08:01:47Z
+ * bmarchan$
+ */
+public class MetierFormuleEngelundHansen 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 h1 = _adapter.getValue(MetierDescriptionVariable.Y, _ibief, _itps, _isect);
+
+ double dens = _params.getDensiteMateriau();
+ double d50 = _params.getD50();
+ RetTauMoy taumoy = calculerTaumoy(_params, _adapter, _ibief, _isect, _itps);
+ double teta = taumoy.tetaD50;
+
+ double rh1 = (h1 * larg) / (larg + 2 * h1);
+ double f = 2 * 9.81 * rh1 * pente / Math.pow((qmin / (h1 * larg)), 2);
+ double qs = larg * 0.1 / f * Math.pow((9.81 * (dens - 1) * Math.pow(d50, 3)), 0.5) * Math.pow(teta, (5. / 2));
+
+ return qs;
+ }
+
+ @Override
+ public MetierDescriptionVariable[] getRequiredVariable() {
+ return new MetierDescriptionVariable[] {
+ MetierDescriptionVariable.B1,
+ MetierDescriptionVariable.CHAR,
+ MetierDescriptionVariable.QMIN,
+ MetierDescriptionVariable.KMIN,
+ MetierDescriptionVariable.Y
+ };
+ }
+
+ @Override
+ public MetierDescriptionVariable getVariable() {
+ return MetierDescriptionVariable.QS_ENGELUND;
+ }
+
+ @Override
+ public String getName() {
+ return "Engelund & Hansen";
+ }
+}
Property changes on: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleEngelundHansen.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/MetierFormuleMeyerPeter.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleMeyerPeter.java 2013-10-21 15:33:13 UTC (rev 8528)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleMeyerPeter.java 2013-10-22 08:58:48 UTC (rev 8529)
@@ -30,7 +30,7 @@
kpeau = ks;
}
- RetTauMoy taumoy = taumoy(_params, _adapter, _ibief, _isect, _itps);
+ RetTauMoy taumoy = calculerTaumoy(_params, _adapter, _ibief, _isect, _itps);
// Call Debit_crit(Taustarc / (ks / Kpeau) ^ 1.5, Col_Meyer)
Added: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleRickenmann.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleRickenmann.java (rev 0)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleRickenmann.java 2013-10-22 08:58:48 UTC (rev 8529)
@@ -0,0 +1,67 @@
+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 Rickenmann.
+ *
+ * @author Bertrand Marchand (mar...@de...)
+ * @version $Id: MetierFormuleLefort1991.java 8524 2013-10-18 08:01:47Z
+ * bmarchan$
+ */
+public class MetierFormuleRickenmann 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 d90 = _params.getD90();
+ double d30 = _params.getD30();
+ double d50 = _params.getD50();
+
+ double rap = Math.pow((d90 / d30), 0.2);
+
+ // Calcul du d\xE9bit de d\xE9but d'entrainement
+ double qc = 0.065 * Math.pow((dens - 1), (5. / 3)) * Math.pow(9.81, 0.5) * Math.pow(d50, 1.5) * Math.pow(pente, (-1.12));
+
+ double qs;
+ if (qc > qmin / larg) {
+ qs = 0;
+ }
+ else {
+ if (pente < 0.03) {
+ qs = larg * 1.5 * (qmin / larg - qc) * Math.pow(pente, 1.5);
+ }
+ else {
+ qs = larg * 12.6 / Math.pow((dens - 1), 1.6) * rap * (qmin / larg - qc) * Math.pow(pente, 2);
+ }
+ }
+
+ return qs;
+
+ }
+
+ @Override
+ public MetierDescriptionVariable[] getRequiredVariable() {
+ return new MetierDescriptionVariable[] {
+ MetierDescriptionVariable.B1,
+ MetierDescriptionVariable.CHAR,
+ MetierDescriptionVariable.QMIN
+ };
+ }
+
+ @Override
+ public MetierDescriptionVariable getVariable() {
+ return MetierDescriptionVariable.QS_RICKENMANN;
+ }
+
+ @Override
+ public String getName() {
+ return "Rickenmann";
+ }
+}
Property changes on: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleRickenmann.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-21 15:33:13 UTC (rev 8528)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleSediment.java 2013-10-22 08:58:48 UTC (rev 8529)
@@ -13,6 +13,7 @@
*
*/
public abstract class MetierFormuleSediment {
+
/**
* Valeurs de retour de la fonction de calcul de tau moyen
*
@@ -30,13 +31,13 @@
*/
private static List<MetierFormuleSediment> formules_ = new ArrayList<MetierFormuleSediment>();
static {
- // formules_.add(MetierDescriptionVariable.QS_ENGELUND);
+ formules_.add(new MetierFormuleEngelundHansen());
formules_.add(new MetierFormuleLefort1991());
formules_.add(new MetierFormuleLefort2007());
formules_.add(new MetierFormuleMeyerPeter());
// formules_.add(MetierDescriptionVariable.QS_RECKING10);
// formules_.add(MetierDescriptionVariable.QS_RECKING11);
- // formules_.add(MetierDescriptionVariable.QS_RICKENMANN);
+ formules_.add(new MetierFormuleRickenmann());
formules_.add(new MetierFormuleSmartJaggi());
// formules_.add(MetierDescriptionVariable.QS_VANRIJN);
}
@@ -110,7 +111,7 @@
* @param _isect L'indice de section
* @param _itps L'indice de temps.
*/
- public RetTauMoy taumoy(MetierParametresSediment _params, MetierResultatsTemporelSpacialI _adapter, int _ibief, int _isect, int _itps) {
+ public RetTauMoy calculerTaumoy(MetierParametresSediment _params, MetierResultatsTemporelSpacialI _adapter, int _ibief, int _isect, int _itps) {
RetTauMoy ret = new RetTauMoy();
double kr = _params.getRugosite();
@@ -178,7 +179,7 @@
* @param _itps
* @return
*/
- public double debitCrit(MetierParametresSediment _params, double _tauCible, MetierResultatsTemporelSpacialI _adapter, int _ibief, int _isect, int _itps) {
+ public double calculerDebitCrit(MetierParametresSediment _params, double _tauCible, MetierResultatsTemporelSpacialI _adapter, int _ibief, int _isect, int _itps) {
double ks = _adapter.getValue(MetierDescriptionVariable.KMIN, _ibief, _itps, _isect);
double pente = _adapter.getValue(MetierDescriptionVariable.PENE, _ibief, _itps, _isect);
double Larg = _adapter.getValue(MetierDescriptionVariable.B1, _ibief, _itps, _isect);
Modified: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleSmartJaggi.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleSmartJaggi.java 2013-10-21 15:33:13 UTC (rev 8528)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleSmartJaggi.java 2013-10-22 08:58:48 UTC (rev 8529)
@@ -17,7 +17,7 @@
double rap = Math.pow(d90 / d30, 0.2);
double tetac = 0.05 * Math.cos(Math.atan(pente)) * (1. - pente / Math.tan(0.61));
- RetTauMoy taumoy = taumoy(_params, _adapter, _ibief, _isect, _itps);
+ RetTauMoy taumoy = calculerTaumoy(_params, _adapter, _ibief, _isect, _itps);
double qs;
if (tetac > taumoy.teta) {
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-21 15:33:13 UTC (rev 8528)
+++ trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/hydraulique1d/metier/SedimentologieTest.java 2013-10-22 08:58:48 UTC (rev 8529)
@@ -4,9 +4,11 @@
import junit.framework.AssertionFailedError;
+import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierFormuleEngelundHansen;
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.MetierFormuleRickenmann;
import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierFormuleSediment;
import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierFormuleSmartJaggi;
import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierParametresSediment;
@@ -125,6 +127,19 @@
params_.setTauc(0.055);
params_.setTEau(17);
}
+
+ public void testTauMoy() throws IOException {
+ FuLog.debug("Tau moyen");
+ // N'importe quelle formule convient pour ce test.
+ MetierFormuleSediment form=new MetierFormuleMeyerPeter();
+ for (int itps=0; itps<hydrauRes_.getNbTemps(); itps++) {
+ MetierFormuleSediment.RetTauMoy ret=form.calculerTaumoy(params_, hydrauRes_, 0, 0, itps);
+ assertEquals(ret.tau, tauRes[0][itps],epsilon);
+ assertEquals(ret.taueff, tauRes[1][itps],epsilon);
+ assertEquals(ret.teta, tauRes[2][itps],epsilon);
+ assertEquals(ret.tetaD50, tauRes[3][itps],epsilon);
+ }
+ }
public void testFormuleMeyerPeter() throws IOException {
FuLog.debug("Formule Meyer-Peter");
@@ -136,7 +151,7 @@
}
public void testFormuleSmartJaggi() throws IOException {
- FuLog.debug("Formule Smart&Jaggi");
+ FuLog.debug("Formule Smart & Jaggi");
MetierFormuleSediment form=new MetierFormuleSmartJaggi();
for (int itps=0; itps<hydrauRes_.getNbTemps(); itps++) {
double val=form.calculer(params_, hydrauRes_, 0, 0, itps);
@@ -161,17 +176,22 @@
assertEquals(val, sedRes[4][itps],epsilon);
}
}
-
- public void testTauMoy() throws IOException {
- FuLog.debug("Tau moyen");
- // N'importe quelle formule convient pour ce test.
- MetierFormuleSediment form=new MetierFormuleMeyerPeter();
+
+ public void testFormuleEngelungHansen() throws IOException {
+ FuLog.debug("Formule Hangelung & Hansen");
+ MetierFormuleSediment form=new MetierFormuleEngelundHansen();
for (int itps=0; itps<hydrauRes_.getNbTemps(); itps++) {
- MetierFormuleSediment.RetTauMoy ret=form.taumoy(params_, hydrauRes_, 0, 0, itps);
- assertEquals(ret.tau, tauRes[0][itps],epsilon);
- assertEquals(ret.taueff, tauRes[1][itps],epsilon);
- assertEquals(ret.teta, tauRes[2][itps],epsilon);
- assertEquals(ret.tetaD50, tauRes[3][itps],epsilon);
+ double val=form.calculer(params_, hydrauRes_, 0, 0, itps);
+ assertEquals(val, sedRes[5][itps],epsilon);
}
}
+
+ public void testFormuleRickenmann() throws IOException {
+ FuLog.debug("Formule Rickenmann");
+ MetierFormuleSediment form=new MetierFormuleRickenmann();
+ for (int itps=0; itps<hydrauRes_.getNbTemps(); itps++) {
+ double val=form.calculer(params_, hydrauRes_, 0, 0, itps);
+ assertEquals(val, sedRes[7][itps],epsilon);
+ }
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|