|
From: <bma...@us...> - 2013-10-21 14:17:06
|
Revision: 8527
http://sourceforge.net/p/fudaa/svn/8527
Author: bmarchan
Date: 2013-10-21 14:17:01 +0000 (Mon, 21 Oct 2013)
Log Message:
-----------
Mascaret : Formulation Smart & Jaggi
Modified Paths:
--------------
trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/MetierDescriptionVariable.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
Modified: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/MetierDescriptionVariable.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/MetierDescriptionVariable.java 2013-10-18 15:35:09 UTC (rev 8526)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/MetierDescriptionVariable.java 2013-10-21 14:17:01 UTC (rev 8527)
@@ -64,11 +64,11 @@
public static final MetierDescriptionVariable QS_MEYERPETER= new MetierDescriptionVariable("QSMEY", "D\xE9bit solide (Meyer-Peter)", EnumMetierUnite.M3_PAR_S, EnumMetierTypeNombre.REEL, 3);
public static final MetierDescriptionVariable QS_LEFORT91 = new MetierDescriptionVariable("QSL91", "D\xE9bit solide (Lefort 1991)", EnumMetierUnite.M3_PAR_S, EnumMetierTypeNombre.REEL, 3);
public static final MetierDescriptionVariable QS_LEFORT07 = new MetierDescriptionVariable("QSL07", "D\xE9bit solide (Lefort 2007)", EnumMetierUnite.M3_PAR_S, EnumMetierTypeNombre.REEL, 3);
- public static final MetierDescriptionVariable QS_ENGELUND = new MetierDescriptionVariable("QSENG", "D\xE9bit solide (Engelund & Hansen)", EnumMetierUnite.M3_PAR_S, EnumMetierTypeNombre.REEL, 3);
+ public static final MetierDescriptionVariable QS_ENGELUND = new MetierDescriptionVariable("QSENG", "D\xE9bit solide (Engelund/Hansen)", EnumMetierUnite.M3_PAR_S, EnumMetierTypeNombre.REEL, 3);
public static final MetierDescriptionVariable QS_RECKING10 = new MetierDescriptionVariable("QSR10", "D\xE9bit solide (Recking 2010)", EnumMetierUnite.M3_PAR_S, EnumMetierTypeNombre.REEL, 3);
public static final MetierDescriptionVariable QS_RECKING11 = new MetierDescriptionVariable("QSR11", "D\xE9bit solide (Recking 2011)", EnumMetierUnite.M3_PAR_S, EnumMetierTypeNombre.REEL, 3);
public static final MetierDescriptionVariable QS_VANRIJN = new MetierDescriptionVariable("QSVAN", "D\xE9bit solide (Van Rijn)", EnumMetierUnite.M3_PAR_S, EnumMetierTypeNombre.REEL, 3);
- public static final MetierDescriptionVariable QS_SMARTJAGGI= new MetierDescriptionVariable("QSSMA", "D\xE9bit solide (Smart & Jaggi)", EnumMetierUnite.M3_PAR_S, EnumMetierTypeNombre.REEL, 3);
+ public static final MetierDescriptionVariable QS_SMARTJAGGI= new MetierDescriptionVariable("QSSMA", "D\xE9bit solide (Smart/J\xE4ggi)", EnumMetierUnite.M3_PAR_S, EnumMetierTypeNombre.REEL, 3);
public static final MetierDescriptionVariable QS_RICKENMANN= new MetierDescriptionVariable("QSRIC", "D\xE9bit solide (Rickenmann)", EnumMetierUnite.M3_PAR_S, EnumMetierTypeNombre.REEL, 3);
/**
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-18 15:35:09 UTC (rev 8526)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleSediment.java 2013-10-21 14:17:01 UTC (rev 8527)
@@ -116,9 +116,11 @@
double kr = _params.getRugosite();
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);
- double D50 = _params.getD50();
- double Diam = _params.getDmoyen();
+ double larg = _adapter.getValue(MetierDescriptionVariable.B1, _ibief, _itps, _isect);
+ double h1 = _adapter.getValue(MetierDescriptionVariable.Y, _ibief, _itps, _isect);
+
+ double d50 = _params.getD50();
+ double diam = _params.getDmoyen();
double dens = _params.getDensiteMateriau();
// ' initialisation des colonnes et des lignes
@@ -132,32 +134,31 @@
// 'boucle sur les lignes'
// Do While Cells(ligne, Col_deb_cible) <> ""
// Calcul de tau
- double H1 = _adapter.getValue(MetierDescriptionVariable.Y, _ibief, _itps, _isect);
- double RH1 = (H1 * Larg) / (Larg + 2. * H1);
+ double rh1 = (h1 * larg) / (larg + 2. * h1);
- double Tau = 9.81 * 1000. * RH1 * pente;
- double Kpeau;
+ double tau = 9.81 * 1000. * rh1 * pente;
+ double kpeau;
if (kr > ks) {
- Kpeau = kr;
+ kpeau = kr;
}
else {
- Kpeau = ks;
+ kpeau = ks;
}
- double Taueff = Math.pow((ks / Kpeau), 1.5) * Tau;
+ double taueff = Math.pow((ks / kpeau), 1.5) * tau;
// ecriture de Tau
- ret.tau = Tau;
- ret.taueff = Taueff;
+ ret.tau = tau;
+ ret.taueff = taueff;
// teta = tau*
// if (Diam <> "" Then
- ret.teta = Tau / (9.81 * 1000. * (dens - 1) * Diam);
+ ret.teta = tau / (9.81 * 1000. * (dens - 1) * diam);
// Else
// teta = "-"
// End If
// If D50 <> "" Then
- ret.tetaD50 = Tau / (9.81 * 1000. * (dens - 1) * D50);
+ ret.tetaD50 = tau / (9.81 * 1000. * (dens - 1) * d50);
// Else
// teta_d50 = "-"
// End If
@@ -166,4 +167,29 @@
// Cells(ligne, Col_Tau + 3) = teta_d50 '=tau* f(D50)
return ret;
}
+
+ /**
+ * Calcul du d\xE9bit d'entrainement (pour certaines formules)
+ * @param _params
+ * @param _tauCible
+ * @param _adapter
+ * @param _ibief
+ * @param _isect
+ * @param _itps
+ * @return
+ */
+ public double debitCrit(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);
+
+ double dens = _params.getDensiteMateriau();
+ double dm = _params.getDmoyen();
+
+ double rhc = _tauCible * (dens - 1) * dm / pente;
+ double hc = rhc * Larg / (Larg - 2 * rhc);
+ double surf = hc * Larg;
+
+ return ks * surf / Math.pow(pente, (1. / 6)) * Math.pow((_tauCible * (dens - 1) * dm), (2. / 3));
+ }
}
\ No newline at end of file
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-18 15:35:09 UTC (rev 8526)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleSmartJaggi.java 2013-10-21 14:17:01 UTC (rev 8527)
@@ -4,44 +4,40 @@
import org.fudaa.dodico.hydraulique1d.metier.MetierResultatsTemporelSpacialI;
public class MetierFormuleSmartJaggi extends MetierFormuleSediment {
-
- @Override
+
+ @Override
public double calculer(MetierParametresSediment _params, MetierResultatsTemporelSpacialI _adapter, int _ibief, int _isect, int _itps) {
- double larg=_adapter.getValue(MetierDescriptionVariable.B1, _ibief,_itps,_isect);
- double pente=_adapter.getValue(MetierDescriptionVariable.PENE, _ibief,_itps,_isect);
-
- double densMat=_params.getDensiteMateriau();
- double d30=_params.getD30();
- double d90=_params.getD90();
-
- double rap=Math.pow(d90/d30,0.2);
- double tetac=0.05*Math.cos(Math.atan(pente))*(1.-pente/Math.tan(0.61));
-
- return 2;
- }
-
- public double debitCrit(MetierParametresSediment _params, double tau_cible) {
- // Issu des resultats hydrau pour ce profil.
- double coefStrickler=0; // (change suivant profil)
- double ks = coefStrickler;
- double pente=0;
- double Larg = 0; // change suivant profil
- double dens=_params.getDensiteMateriau();
- double dm = _params.getDmoyen();
+ double pente = _adapter.getValue(MetierDescriptionVariable.PENE, _ibief, _itps, _isect);
+ double qmin = _adapter.getValue(MetierDescriptionVariable.QMIN, _ibief, _itps, _isect);
- double Rhc = tau_cible * (dens - 1) * dm / pente;
- double hc = Rhc * Larg / (Larg - 2 * Rhc);
- double surf = hc * Larg;
+ double dens = _params.getDensiteMateriau();
+ double d30 = _params.getD30();
+ double d90 = _params.getD90();
- return ks * surf / Math.pow(pente,(1. / 6)) * Math.pow((tau_cible * (dens - 1) * dm),(2. / 3));
- }
+ 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);
+
+ double qs;
+ if (tetac > taumoy.teta) {
+ qs = 0;
+ }
+ else {
+ qs = qmin * 4 * rap * Math.pow(pente, 1.6) / (dens - 1) * (1 - tetac / taumoy.teta);
+ }
+
+ return qs;
+ }
+
@Override
public MetierDescriptionVariable[] getRequiredVariable() {
- return new MetierDescriptionVariable[] {
+ return new MetierDescriptionVariable[] {
+ MetierDescriptionVariable.CHAR,
+ MetierDescriptionVariable.QMIN ,
+ MetierDescriptionVariable.KMIN,
MetierDescriptionVariable.B1,
- MetierDescriptionVariable.CHAR
- // A completer
+ MetierDescriptionVariable.Y
};
}
@@ -52,6 +48,6 @@
@Override
public String getName() {
- return "Smart & Jaggi";
+ return "Smart & J\xE4ggi";
}
}
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-18 15:35:09 UTC (rev 8526)
+++ trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/hydraulique1d/metier/SedimentologieTest.java 2013-10-21 14:17:01 UTC (rev 8527)
@@ -8,6 +8,7 @@
import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierFormuleLefort2007;
import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierFormuleMeyerPeter;
import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierFormuleSediment;
+import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierFormuleSmartJaggi;
import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierParametresSediment;
import org.fudaa.dodico.mascaret.AbstractMascaretTestCase;
@@ -142,6 +143,15 @@
assertEquals(val, sedRes[4][itps],epsilon);
}
}
+
+ public void testFormuleSmartJaggi() throws IOException {
+ FuLog.debug("Formule SmartJaggi");
+ MetierFormuleSediment form=new MetierFormuleSmartJaggi();
+ for (int itps=0; itps<hydrauRes_.getNbTemps(); itps++) {
+ double val=form.calculer(params_, hydrauRes_, 0, 0, itps);
+ assertEquals(val, sedRes[1][itps],epsilon);
+ }
+ }
public void testTauMoy() throws IOException {
FuLog.debug("Tau moyen");
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|