|
From: <bma...@us...> - 2013-10-17 12:33:29
|
Revision: 8523
http://sourceforge.net/p/fudaa/svn/8523
Author: bmarchan
Date: 2013-10-17 12:33:25 +0000 (Thu, 17 Oct 2013)
Log Message:
-----------
Mascaret : Formulation Lefort 1991
Modified Paths:
--------------
trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/MetierResultatsTemporelSpatial.java
trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierCalculSediment.java
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/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/editor/Hydraulique1dParametresSedimentEditor.java
Added Paths:
-----------
trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/MetierResultatsTemporelSpacialI.java
trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleLefort1991.java
trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierResultatTemporelSpatialAdapter.java
trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/hydraulique1d/metier/SedimentologieTest.java
Removed Paths:
-------------
trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/ResultatTemporelSpatialAdapter.java
Added: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/MetierResultatsTemporelSpacialI.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/MetierResultatsTemporelSpacialI.java (rev 0)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/MetierResultatsTemporelSpacialI.java 2013-10-17 12:33:25 UTC (rev 8523)
@@ -0,0 +1,37 @@
+package org.fudaa.dodico.hydraulique1d.metier;
+
+/**
+ * Une interface permettrant de retourner pour un bief, un temps et une section
+ * la valeur d'une variable.
+ *
+ * @author Bertrand Marchand (mar...@de...)
+ */
+public interface MetierResultatsTemporelSpacialI {
+
+ /**
+ * @param _var La variable
+ * @param _ibief L'indice de bief
+ * @param _itps L'indice du temps
+ * @param _isect L'indice de la section
+ * @return La valeur pour la variable. Double.NaN si la varaible n'est pas
+ * dans les r\xE9sultats.
+ */
+ public abstract double getValue(MetierDescriptionVariable _var, int _ibief, int _itps, int _isect);
+
+ /**
+ * @return Le nombre de biefs pour le r\xE9sultat
+ */
+ public abstract int getNbBiefs();
+
+ /**
+ * @return Le nombre pas de temps
+ */
+ public abstract int getNbTemps();
+
+ /**
+ * @param _ibief L'indice du bief
+ * @return Le nombre de sections du bief consid\xE9r\xE9
+ */
+ public abstract int getNbSections(int _ibief);
+
+}
\ No newline at end of file
Property changes on: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/MetierResultatsTemporelSpacialI.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/MetierResultatsTemporelSpatial.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/MetierResultatsTemporelSpatial.java 2013-10-15 13:31:12 UTC (rev 8522)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/MetierResultatsTemporelSpatial.java 2013-10-17 12:33:25 UTC (rev 8523)
@@ -21,7 +21,7 @@
* @version $Revision: 1.2 $ $Date: 2007-11-20 11:42:34 $ by $Author: bmarchan $
* @author Jean-Marc Lacombe
*/
-public class MetierResultatsTemporelSpatial extends MetierHydraulique1d {
+public class MetierResultatsTemporelSpatial extends MetierHydraulique1d implements MetierResultatsTemporelSpacialI {
@Override
public void initialise(MetierHydraulique1d _o) {
@@ -478,4 +478,31 @@
return true;
}
+
+ @Override
+ public int getNbBiefs() {
+ return resultatsBiefs_.length;
+ }
+
+ @Override
+ public int getNbTemps() {
+ return pasTemps_.length;
+ }
+
+ @Override
+ public int getNbSections(int _ibief) {
+ return resultatsBiefs_[_ibief].abscissesSections().length;
+ }
+
+ @Override
+ public double getValue(MetierDescriptionVariable _var, int _ibief, int _itps, int _isect) {
+
+ double[][][] vals = resultatsBiefs_[_ibief].valeursVariables();
+ int indvar = getIndiceVariable(_var);
+ if (indvar == -1) {
+ return Double.NaN;
+ }
+
+ return vals[indvar][_itps][_isect];
+ }
}
Modified: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierCalculSediment.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierCalculSediment.java 2013-10-15 13:31:12 UTC (rev 8522)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierCalculSediment.java 2013-10-17 12:33:25 UTC (rev 8523)
@@ -44,7 +44,7 @@
throw new IllegalArgumentException("Variable non s\xE9dimentaire");
MetierFormuleSediment formule=MetierFormuleSediment.getFormule(_var);
- ResultatTemporelSpatialAdapter resAdapter=new ResultatTemporelSpatialAdapter(res_);
+ MetierResultatTemporelSpatialAdapter resAdapter=new MetierResultatTemporelSpatialAdapter(res_);
// Suppression eventuelle de l'ancienne variable de m\xEAme nom
res_.removeResultsVariable(_var);
@@ -62,5 +62,19 @@
}
}
res_.addResultsVariable(_var, vals);
+
+ // FIXME : Pour tests, ne pas conserver
+ res_.removeResultsVariable(MetierDescriptionVariable.PENE);
+ vals=new double[nbBief][nbTps][];
+ for (int ibief=0; ibief<nbBief; ibief++) {
+ int nbSect=res_.resultatsBiefs()[ibief].abscissesSections().length;
+ for (int itps=0; itps<nbTps; itps++) {
+ vals[ibief][itps]=new double[nbSect];
+ for (int isect=0; isect<nbSect; isect++) {
+ vals[ibief][itps][isect]=resAdapter.getValue(MetierDescriptionVariable.PENE, ibief, itps, isect);
+ }
+ }
+ }
+ res_.addResultsVariable(MetierDescriptionVariable.PENE, vals);
}
}
Added: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleLefort1991.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleLefort1991.java (rev 0)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleLefort1991.java 2013-10-17 12:33:25 UTC (rev 8523)
@@ -0,0 +1,72 @@
+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 Lefort 1991.
+ *
+ * @author Bertrand Marchand (mar...@de...)
+ * @version $Id$
+ */
+public class MetierFormuleLefort1991 extends MetierFormuleSediment {
+
+ /**
+ * Calcul de la capacit\xE9 de transport dans chaque section selon la formule de
+ * Lefort. La formule calcule la capacit\xE9 de transport apparante avec une
+ * densit\xE9 apparente de 2. Un coefficient de 0.755 est ajout\xE9 pour revenir au
+ * volume r\xE9el et non au calcul du volume en place (voir \xE9tablissement formule
+ * de lefort).
+ */
+ @Override
+ public double calculer(MetierParametresSediment _params, MetierResultatsTemporelSpacialI _adapter, int _ibief, int _isect, int _itps) {
+
+ double pente = _adapter.getValue(MetierDescriptionVariable.PENE, _ibief, _itps, _isect);
+ double dens = _params.getDensiteMateriau();
+
+ double d90 = _params.getD90();
+ double d30 = _params.getD30();
+ double diam = _params.getDmoyen();
+
+ // Calcul du d\xE9bit liquide de d\xE9but d'entrainement
+ double qc;
+ if (pente <= 0) {
+ qc = 999999;
+ }
+ else {
+ qc = 0.0776 * Math.pow((9.81 * Math.pow(diam, 5)), 0.5) * Math.pow((dens - 1), (8. / 3)) * Math.pow((1 - 1.2 * pente), (8. / 3)) / Math.pow(pente, (13. / 6));
+ }
+
+ // D\xE9bit liquide
+ double qmin = _adapter.getValue(MetierDescriptionVariable.QMIN, _ibief, _itps, _isect);
+
+ // Calcul du d\xE9bit solide
+ double qs;
+ if (qc > qmin) {
+ qs = 0;
+ }
+ else {
+ qs = (qmin * 4.45 * 0.755) / (dens - 1) * Math.pow((d90 / d30), 0.2) * Math.pow(pente, 1.5) * (1 - Math.pow((qc / qmin), 0.375));
+ }
+
+ return qs;
+ }
+
+ @Override
+ public MetierDescriptionVariable[] getRequiredVariable() {
+ return new MetierDescriptionVariable[] {
+ MetierDescriptionVariable.CHAR,
+ MetierDescriptionVariable.QMIN
+ };
+ }
+
+ @Override
+ public MetierDescriptionVariable getVariable() {
+ return MetierDescriptionVariable.QS_LEFORT91;
+ }
+
+ @Override
+ public String getName() {
+ return "Lefort 1991";
+ }
+}
Property changes on: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleLefort1991.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-15 13:31:12 UTC (rev 8522)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleMeyerPeter.java 2013-10-17 12:33:25 UTC (rev 8523)
@@ -1,11 +1,12 @@
package org.fudaa.dodico.hydraulique1d.metier.sediment;
import org.fudaa.dodico.hydraulique1d.metier.MetierDescriptionVariable;
+import org.fudaa.dodico.hydraulique1d.metier.MetierResultatsTemporelSpacialI;
public class MetierFormuleMeyerPeter extends MetierFormuleSediment {
@Override
- public double calculer(MetierParametresSediment _params, ResultatTemporelSpatialAdapter _adapter, int _ibief, int _isect, int _itps) {
+ public double calculer(MetierParametresSediment _params, MetierResultatsTemporelSpacialI _adapter, int _ibief, int _isect, int _itps) {
return 1;
}
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-15 13:31:12 UTC (rev 8522)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleSediment.java 2013-10-17 12:33:25 UTC (rev 8523)
@@ -4,6 +4,7 @@
import java.util.List;
import org.fudaa.dodico.hydraulique1d.metier.MetierDescriptionVariable;
+import org.fudaa.dodico.hydraulique1d.metier.MetierResultatsTemporelSpacialI;
/**
* La classe abstraire pour toutes les formules de s\xE9diment
@@ -19,7 +20,7 @@
static {
// formules_.add(MetierDescriptionVariable.QS_ENGELUND);
// formules_.add(MetierDescriptionVariable.QS_LEFORT07);
-// formules_.add(MetierDescriptionVariable.QS_LEFORT91);
+ formules_.add(new MetierFormuleLefort1991());
formules_.add(new MetierFormuleMeyerPeter());
// formules_.add(MetierDescriptionVariable.QS_RECKING10);
// formules_.add(MetierDescriptionVariable.QS_RECKING11);
@@ -32,7 +33,7 @@
super();
}
- public abstract double calculer(MetierParametresSediment _params, ResultatTemporelSpatialAdapter _adapter, int _ibief, int _isect, int _itps);
+ public abstract double calculer(MetierParametresSediment _params, MetierResultatsTemporelSpacialI _adapter, int _ibief, int _isect, int _itps);
/**
* @return La variable associ\xE9e et calcul\xE9e par la formule.
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-15 13:31:12 UTC (rev 8522)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleSmartJaggi.java 2013-10-17 12:33:25 UTC (rev 8523)
@@ -1,11 +1,12 @@
package org.fudaa.dodico.hydraulique1d.metier.sediment;
import org.fudaa.dodico.hydraulique1d.metier.MetierDescriptionVariable;
+import org.fudaa.dodico.hydraulique1d.metier.MetierResultatsTemporelSpacialI;
public class MetierFormuleSmartJaggi extends MetierFormuleSediment {
@Override
- public double calculer(MetierParametresSediment _params, ResultatTemporelSpatialAdapter _adapter, int _ibief, int _isect, int _itps) {
+ 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);
Copied: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierResultatTemporelSpatialAdapter.java (from rev 8521, trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/ResultatTemporelSpatialAdapter.java)
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierResultatTemporelSpatialAdapter.java (rev 0)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierResultatTemporelSpatialAdapter.java 2013-10-17 12:33:25 UTC (rev 8523)
@@ -0,0 +1,62 @@
+package org.fudaa.dodico.hydraulique1d.metier.sediment;
+
+import org.fudaa.dodico.hydraulique1d.metier.MetierDescriptionVariable;
+import org.fudaa.dodico.hydraulique1d.metier.MetierResultatsTemporelSpacialI;
+import org.fudaa.dodico.hydraulique1d.metier.MetierResultatsTemporelSpatial;
+
+/**
+ * Un adapter pour les r\xE9sultats temporels. Retourne la valeur d'un r\xE9sultat pour un bief donn\xE9,
+ * un profil et un temps donn\xE9e.
+ *
+ * @author Bertrand Marchand (mar...@de...)
+ * @version $Id$
+ */
+public class MetierResultatTemporelSpatialAdapter implements MetierResultatsTemporelSpacialI {
+ private MetierResultatsTemporelSpatial res_;
+
+ public MetierResultatTemporelSpatialAdapter(MetierResultatsTemporelSpatial _res) {
+ res_=_res;
+ }
+
+ @Override
+ public double getValue(MetierDescriptionVariable _var, int _ibief, int _itps, int _isect) {
+
+ double[][][] vals=res_.resultatsBiefs()[_ibief].valeursVariables();
+ double[] absSect=res_.resultatsBiefs()[_ibief].abscissesSections();
+
+ // Calcul a la vol\xE9e de la pente d'energie
+ if (MetierDescriptionVariable.PENE.equals(_var)) {
+ int indChargeVar=res_.getIndiceVariable(MetierDescriptionVariable.CHAR);
+ if (indChargeVar==-1) {
+ return Double.NaN;
+ }
+ if (vals[indChargeVar][_itps].length==1) {
+ return vals[indChargeVar][_itps][_isect];
+ }
+ else {
+ int isectInf = Math.max(_isect - 1, 0);
+ int isectSup = Math.min(_isect + 1, vals[indChargeVar][_itps].length - 1);
+ return Math.abs((vals[indChargeVar][_itps][isectSup] - vals[indChargeVar][_itps][isectInf]) / (absSect[isectSup] - absSect[isectInf]));
+ }
+ }
+ // Pour les autres variables, acc\xE8s direct
+ else {
+ return res_.getValue(_var, _ibief, _itps, _isect);
+ }
+ }
+
+ @Override
+ public int getNbBiefs() {
+ return res_.getNbBiefs();
+ }
+
+ @Override
+ public int getNbTemps() {
+ return res_.getNbTemps();
+ }
+
+ @Override
+ public int getNbSections(int _ibief) {
+ return res_.getNbSections(_ibief);
+ }
+}
Deleted: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/ResultatTemporelSpatialAdapter.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/ResultatTemporelSpatialAdapter.java 2013-10-15 13:31:12 UTC (rev 8522)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/ResultatTemporelSpatialAdapter.java 2013-10-17 12:33:25 UTC (rev 8523)
@@ -1,98 +0,0 @@
-package org.fudaa.dodico.hydraulique1d.metier.sediment;
-
-import org.fudaa.dodico.hydraulique1d.metier.MetierDescriptionVariable;
-import org.fudaa.dodico.hydraulique1d.metier.MetierResultatsTemporelSpatial;
-
-import sun.nio.cs.ext.ISCII91;
-
-/**
- * Un adapter pour les r\xE9sultats temporels. Retourne la valeur d'un r\xE9sultat pour un bief donn\xE9,
- * un profil et un temps donn\xE9e.
- *
- * @author Bertrand Marchand (mar...@de...)
- * @version $Id$
- */
-public class ResultatTemporelSpatialAdapter {
- private MetierResultatsTemporelSpatial res_;
-
- public ResultatTemporelSpatialAdapter(MetierResultatsTemporelSpatial _res) {
- res_=_res;
- }
-
- public double getValue(MetierDescriptionVariable _var, int _ibief, int _itps, int _isect) {
-
- double[][][] vals=res_.resultatsBiefs()[_ibief].valeursVariables();
- double[] absSect=res_.resultatsBiefs()[_ibief].abscissesSections();
-
- // Calcul a la vol\xE9e de la pente d'energie
- if (MetierDescriptionVariable.PENE.equals(_var)) {
- int indChargeVar=res_.getIndiceVariable(MetierDescriptionVariable.CHAR);
- if (indChargeVar==-1) {
- return Double.NaN;
- }
- if (vals[indChargeVar][_itps].length==1) {
- return vals[indChargeVar][_itps][_isect];
- }
- else {
- int isectInf = Math.max(_isect - 1, 0);
- int isectSup = Math.min(_isect + 1, vals[indChargeVar][_itps].length - 1);
- return Math.abs((vals[indChargeVar][_itps][isectSup] - vals[indChargeVar][_itps][isectInf]) / (absSect[isectSup] - absSect[isectInf]));
- }
- }
- // Pour les autres variables, acc\xE8s direct
- else {
- int indvar=res_.getIndiceVariable(_var);
- if (indvar==-1) {
- return Double.NaN;
- }
-
- return vals[indvar][_itps][_isect];
- }
- }
-
-// public double getValue(MetierDescriptionVariable _var, int _ibief, int _iprofil, int _itps) {
-// MetierBief bief=etude_.reseau().biefs()[_ibief];
-// int indvar=etude_.resultatsGeneraux().resultatsTemporelSpatial().getIndiceVariable(_var.nom());
-// MetierResultatsTemporelSpatialBief resBief=etude_.resultatsGeneraux().resultatsTemporelSpatial().resultatsBiefs()[_ibief];
-//
-// // extraction de l'abscisse de d\xE9but du r\xE9sultat du bief
-// double[] sectionRes = resBief.abscissesSections();
-//
-// double xDebutRes = sectionRes[0];
-// // calcul du d\xE9calage \xE9ventuelle des abscisses entre r\xE9sultat et
-// // g\xE9om\xE9trie.
-// double diffAbscisse = xDebutRes - bief.extrAmont().profilRattache().abscisse();
-// double abscProfilCorrige = bief.profils()[_iprofil].abscisse() + diffAbscisse;
-// int ifound = Arrays.binarySearch(sectionRes, abscProfilCorrige);
-// if (ifound >= 0) {
-// double[] vals = resBief.valeursVariables()[indvar][_itps];
-// return vals[ifound];
-// }
-// else {
-// // Le nombre de sections de calcul peut parfois etre inferieur a 2.
-// if (sectionRes.length<2)
-// return Double.NaN;
-//
-// int iResSup = -ifound - 1;
-// if (iResSup >= sectionRes.length) {
-// iResSup = sectionRes.length - 1;
-// }
-// int iResInf = iResSup - 1;
-// double x2 = sectionRes[iResSup];
-// double x1 = sectionRes[iResInf];
-//
-// double[] cotes = resBief.valeursVariables()[indvar][_itps];
-// double y1 = cotes[iResInf];
-// double y2 = cotes[iResSup];
-//
-// if (x1==abscProfilCorrige)
-// return y1;
-// else if (x2==abscProfilCorrige)
-// return y2;
-// else if (x1==x2)
-// throw new IllegalArgumentException("interpolation impossible");
-// else
-// return ((y1-y2)*(abscProfilCorrige-x2)/(x1-x2))+y2;
-// }
-// }
-}
Added: 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 (rev 0)
+++ trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/hydraulique1d/metier/SedimentologieTest.java 2013-10-17 12:33:25 UTC (rev 8523)
@@ -0,0 +1,119 @@
+package org.fudaa.dodico.hydraulique1d.metier;
+
+import java.io.IOException;
+
+import junit.framework.AssertionFailedError;
+
+import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierFormuleLefort1991;
+import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierFormuleSediment;
+import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierParametresSediment;
+import org.fudaa.dodico.mascaret.AbstractMascaretTestCase;
+
+import com.memoire.fu.FuLog;
+
+/**
+ * Un test case pour les formule de calcul par s\xE9dimentologie.
+ * @author Bertrand Marchand (mar...@de...)
+ */
+public class SedimentologieTest extends AbstractMascaretTestCase {
+ HydrauResults hydrauRes_;
+ MetierParametresSediment params_;
+ double epsilon=1.e-2;
+
+ // Issu de la feuille de calcul Excel
+ double[][] sedRes=new double[][] {
+ //Meyer-Peter
+ {1.90, 1.51, 1.13, 0.90, 0.70, 0.59, 0.36, 0.34, 0.24, 0.19, 0.15, 0.09, 0.05, 0.03, 0.01, 0.00, 0.00, 0.00},
+ //Smart et Jaeggi
+ {1.76, 1.35, 0.99, 0.77, 0.59, 0.49, 0.29, 0.28, 0.20, 0.16, 0.13, 0.08, 0.05, 0.03, 0.02, 0.00, 0.00, 0.00},
+ //Lefort 1991
+ {2.30, 1.76, 1.29, 1.00, 0.77, 0.65, 0.39, 0.38, 0.27, 0.22, 0.18, 0.12, 0.07, 0.05, 0.03, 0.01, 0.01, 0.00},
+ //Lefort 2005
+ {1.87, 1.40, 0.99, 0.75, 0.56, 0.46, 0.26, 0.25, 0.17, 0.13, 0.11, 0.07, 0.04, 0.03, 0.02, 0.01, 0.00, 0.00},
+ //lefort 2007
+ {1.80, 1.35, 0.96, 0.73, 0.55, 0.45, 0.26, 0.25, 0.17, 0.13, 0.10, 0.07, 0.04, 0.03, 0.01, 0.00, 0.00, 0.00},
+ //Engelund Hansen
+ {0.92, 0.61, 0.38, 0.26, 0.17, 0.13, 0.06, 0.06, 0.03, 0.02, 0.02, 0.01, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00},
+ //Einstein Brown
+ {2.18, 1.41, 0.85, 0.59, 0.42, 0.33, 0.14, 0.13, 0.06, 0.03, 0.02, 0.01, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00},
+ //Rickenmann
+ {1.41, 1.07, 0.77, 0.59, 0.44, 0.35, 0.19, 0.18, 0.11, 0.07, 0.04, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00},
+ //Recking 2008
+ {2.02, 1.44, 0.96, 0.69, 0.49, 0.39, 0.21, 0.20, 0.13, 0.09, 0.06, 0.02, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00},
+ //Recking 2010
+ {1.24, 0.88, 0.59, 0.43, 0.30, 0.24, 0.13, 0.12, 0.07, 0.03, 0.02, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00},
+ //Recking 2011
+ {1.05, 0.73, 0.46, 0.32, 0.20, 0.15, 0.05, 0.05, 0.02, 0.01, 0.01, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00},
+ //Van Rijn
+ {0.45, 0.32, 0.22, 0.16, 0.11, 0.09, 0.04, 0.04, 0.02, 0.02, 0.01, 0.01, 0.00, 0.00, 0.00, 0.00, 0.00, 0.01}
+ };
+
+ /**
+ * 1 seul bief, une seule section, avec plusieurs temps pour simuler un changement de d\xE9bit.
+ * @author Bertrand Marchand (mar...@de...)
+ */
+ class HydrauResults implements MetierResultatsTemporelSpacialI {
+ // Les debits, issus de la feuille Excel
+ double[] debits = new double[] { 1000, 774, 573, 450, 350, 296, 185, 178, 132, 107, 88, 63, 40, 30, 20, 10, 5, 1 };
+
+ @Override
+ public double getValue(MetierDescriptionVariable _var, int _ibief, int _itps, int _isect) {
+ // Pente d'energie
+ if (_var.nom().equals(MetierDescriptionVariable.PENE.nom())) {
+ return 0.01;
+ }
+ // Largeur du bief
+ else if (_var.nom().equals(MetierDescriptionVariable.B1.nom())) {
+ return 50;
+ }
+ // Strickler du bief
+ else if (_var.nom().equals(MetierDescriptionVariable.KMIN.nom())) {
+ return 32;
+ }
+ // Debit
+ else if (_var.nom().equals(MetierDescriptionVariable.QMIN.nom())) {
+ return debits[_itps];
+ }
+ throw new AssertionFailedError();
+ }
+
+ @Override
+ public int getNbBiefs() {
+ return 1;
+ }
+
+ @Override
+ public int getNbTemps() {
+ return debits.length;
+ }
+
+ @Override
+ public int getNbSections(int _ibief) {
+ return 1;
+ }
+ }
+
+ public SedimentologieTest() {
+ hydrauRes_=new HydrauResults();
+ params_=new MetierParametresSediment();
+ params_.setDmoyen(0.02);
+ params_.setD30(0.04);
+ params_.setD50(0.06);
+ params_.setD84(0.1);
+ params_.setD90(0.11);
+ params_.setRugosite(40);
+ params_.setDensiteMateriau(2.65);
+ params_.setDensiteApparente(2);
+ params_.setTauc(0.055);
+ params_.setTEau(17);
+ }
+
+ public void testFormuleLefort1991() throws IOException {
+ FuLog.debug("Formule Lefort1991");
+ MetierFormuleSediment form=new MetierFormuleLefort1991();
+ for (int itps=0; itps<hydrauRes_.getNbTemps(); itps++) {
+ double val=form.calculer(params_, hydrauRes_, 0, 0, itps);
+ assertEquals(val, sedRes[2][itps],epsilon);
+ }
+ }
+}
Property changes on: trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/hydraulique1d/metier/SedimentologieTest.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/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/editor/Hydraulique1dParametresSedimentEditor.java
===================================================================
--- trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/editor/Hydraulique1dParametresSedimentEditor.java 2013-10-15 13:31:12 UTC (rev 8522)
+++ trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/editor/Hydraulique1dParametresSedimentEditor.java 2013-10-17 12:33:25 UTC (rev 8523)
@@ -21,8 +21,6 @@
import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierSediment;
import org.fudaa.ebli.commun.EbliPreferences;
import org.fudaa.ebli.dialog.BDialogContent;
-import org.fudaa.fudaa.hydraulique1d.Hydraulique1dBaseApplication;
-import org.fudaa.fudaa.hydraulique1d.Hydraulique1dBaseImplementation;
import org.fudaa.fudaa.hydraulique1d.Hydraulique1dResource;
import com.memoire.bu.BuComboBox;
@@ -373,7 +371,6 @@
tfD50_.setValue(param_.getD50());
tfD84_.setValue(param_.getD84());
tfD90_.setValue(param_.getD90());
- tfD90_.setValue(param_.getD90());
tfRugo_.setValue(param_.getRugosite());
tfDensMat_.setValue(param_.getDensiteMateriau());
tfDensApparente_.setValue(param_.getDensiteApparente());
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|