|
From: <bma...@us...> - 2013-10-15 10:09:56
|
Revision: 8521
http://sourceforge.net/p/fudaa/svn/8521
Author: bmarchan
Date: 2013-10-15 10:09:52 +0000 (Tue, 15 Oct 2013)
Log Message:
-----------
Mascaret : Mise en place du processus de calcul des r?\195?\169sultats s?\195?\169dimentologiques
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/MetierResultatsGeneraux.java
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/MetierParametresSediment.java
trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierSediment.java
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/ihmhelper/Hydraulique1dIHM_ParamsSediment.java
trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/mascaret/MascaretImplementation.java
Added Paths:
-----------
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/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/ResultatTemporelSpatialAdapter.java
Removed Paths:
-------------
trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/EnumFormuleSediment.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-11 16:11:52 UTC (rev 8520)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/MetierDescriptionVariable.java 2013-10-15 10:09:52 UTC (rev 8521)
@@ -56,22 +56,24 @@
public static final MetierDescriptionVariable QMAX = new MetierDescriptionVariable("QMAX", "Debit maximal", EnumMetierUnite.M3_PAR_S, EnumMetierTypeNombre.REEL, 2);
public static final MetierDescriptionVariable TQMA = new MetierDescriptionVariable("TQMA", "Instant de debit maximal", EnumMetierUnite.S, EnumMetierTypeNombre.REEL, 1);
public static final MetierDescriptionVariable EMAX = new MetierDescriptionVariable("EMAX", "Energie maximale", EnumMetierUnite.J, EnumMetierTypeNombre.REEL, 3);
+ public static final MetierDescriptionVariable PENE = new MetierDescriptionVariable("PENE", "Pente d'energie", EnumMetierUnite.RIEN, EnumMetierTypeNombre.REEL, 3);
/**
* Variables pour la s\xE9dimentologie
*/
- 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_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 SE_VANRIJN = new MetierDescriptionVariable("QSVAN", "D\xE9bit solide (Van Rijn)", EnumMetierUnite.M3_PAR_S, EnumMetierTypeNombre.REEL, 3);
- public static final MetierDescriptionVariable SE_SMARTJAGGI= new MetierDescriptionVariable("QSSMA", "D\xE9bit solide (Smart & Jaggi)", 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);
+ transient public static final MetierDescriptionVariable QS_MEYERPETER= new MetierDescriptionVariable("QSMEY", "D\xE9bit solide (Meyer-Peter)", EnumMetierUnite.M3_PAR_S, EnumMetierTypeNombre.REEL, 3);
+ transient public static final MetierDescriptionVariable QS_LEFORT91 = new MetierDescriptionVariable("QSL91", "D\xE9bit solide (Lefort 1991)", EnumMetierUnite.M3_PAR_S, EnumMetierTypeNombre.REEL, 3);
+ transient public static final MetierDescriptionVariable QS_LEFORT07 = new MetierDescriptionVariable("QSL07", "D\xE9bit solide (Lefort 2007)", EnumMetierUnite.M3_PAR_S, EnumMetierTypeNombre.REEL, 3);
+ transient public static final MetierDescriptionVariable QS_ENGELUND = new MetierDescriptionVariable("QSENG", "D\xE9bit solide (Engelund & Hansen)", EnumMetierUnite.M3_PAR_S, EnumMetierTypeNombre.REEL, 3);
+ transient public static final MetierDescriptionVariable QS_RECKING10 = new MetierDescriptionVariable("QSR10", "D\xE9bit solide (Recking 2010)", EnumMetierUnite.M3_PAR_S, EnumMetierTypeNombre.REEL, 3);
+ transient public static final MetierDescriptionVariable QS_RECKING11 = new MetierDescriptionVariable("QSR11", "D\xE9bit solide (Recking 2011)", EnumMetierUnite.M3_PAR_S, EnumMetierTypeNombre.REEL, 3);
+ transient public static final MetierDescriptionVariable QS_VANRIJN = new MetierDescriptionVariable("QSVAN", "D\xE9bit solide (Van Rijn)", EnumMetierUnite.M3_PAR_S, EnumMetierTypeNombre.REEL, 3);
+ transient public static final MetierDescriptionVariable QS_SMARTJAGGI= new MetierDescriptionVariable("QSSMA", "D\xE9bit solide (Smart & Jaggi)", EnumMetierUnite.M3_PAR_S, EnumMetierTypeNombre.REEL, 3);
+ transient public static final MetierDescriptionVariable QS_RICKENMANN= new MetierDescriptionVariable("QSRIC", "D\xE9bit solide (Rickenmann)", EnumMetierUnite.M3_PAR_S, EnumMetierTypeNombre.REEL, 3);
/**
- * Toutes les variables possibles, index\xE9s dans l'ordre d'apparition.
+ * Toutes les variables possibles, certaines issues de calculs, certaines
+ * calcul\xE9es \xE0 la vol\xE9e. Index\xE9s dans l'ordre d'apparition.
*/
public static final MetierDescriptionVariable[] VARIABLES= {
ZREF,
@@ -122,9 +124,10 @@
QS_ENGELUND,
QS_RECKING10,
QS_RECKING11,
- SE_VANRIJN,
- SE_SMARTJAGGI,
- QS_RICKENMANN
+ QS_VANRIJN,
+ QS_SMARTJAGGI,
+ QS_RICKENMANN,
+ PENE
};
Modified: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/MetierResultatsGeneraux.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/MetierResultatsGeneraux.java 2013-10-11 16:11:52 UTC (rev 8520)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/MetierResultatsGeneraux.java 2013-10-15 10:09:52 UTC (rev 8521)
@@ -43,7 +43,8 @@
resultatsRubens(q.resultatsRubens());
resultatsRubensCasier(q.resultatsRubensCasier());
resultatsRubensLiaison(q.resultatsRubensLiaison());
- resultatsTemporelSpatial(q.resultatsTemporelSpatial());
+ if (q.resultatsTemporelSpatial()!=null)
+ resultatsTemporelSpatial(q.resultatsTemporelSpatial());
resultatsTemporelCasier(q.resultatsTemporelCasier());
resultatsTemporelLiaison(q.resultatsTemporelLiaison());
resultatsTemporelTracer(q.resultatsTemporelTracer());
@@ -78,8 +79,8 @@
resultatsRubens_= null;
resultatsRubensCasier_= null;
resultatsRubensLiaison_= null;
- resultatsTemporelSpatial_=
- new MetierResultatsTemporelSpatial();
+ resultatsTemporelSpatial_= null;
+// new MetierResultatsTemporelSpatial();
resultatsTemporelCasier_=
new MetierResultatsTemporelSpatial();
resultatsTemporelLiaison_=
@@ -247,6 +248,10 @@
"resultatsRubensLiaison");
}
+ public boolean hasResultatsTemporelSpatial() {
+ return resultatsTemporelSpatial_!=null;
+ }
+
private MetierResultatsTemporelSpatial resultatsTemporelSpatial_;
public MetierResultatsTemporelSpatial resultatsTemporelSpatial() {
return resultatsTemporelSpatial_;
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-11 16:11:52 UTC (rev 8520)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/MetierResultatsTemporelSpatial.java 2013-10-15 10:09:52 UTC (rev 8521)
@@ -262,6 +262,16 @@
/**
* end l'indice de colonne correspondant \xE0 ce nom de variable.
*
+ * @param _var : La variable
+ * @return L'indice dans le tableau ou -1 si cette variable est introuvable.
+ */
+ public int getIndiceVariable(MetierDescriptionVariable _var) {
+ return getIndiceVariable(_var.nom());
+ }
+
+ /**
+ * end l'indice de colonne correspondant \xE0 ce nom de variable.
+ *
* @param _c : nom de la variable
* @return L'indice dans le tableau ou -1 si cette variable est introuvable.
*/
@@ -397,7 +407,7 @@
* Ajoute les r\xE9sultats pour une variable donn\xE9e.
*
* @param _var La variable pour laquelle on ajoute les valeurs.
- * @param _vals Un tableau \xE0 3 dimensions [ibief][itps][isect]. Le nombre de biefs, le nombre de sections par biefs,
+ * @param _vals Un tableau \xE0 3 dimensions [nbbief][nbtps][nbsect]. Le nombre de biefs, le nombre de sections par biefs,
* le nombre de temps doit \xEAtre identique \xE0 l'existant.
* @return True : Si l'ajout s'est correctement pass\xE9. False si la variable existe d\xE9j\xE0
* @exception IllegalArgumentException Si le tableau des valeurs pass\xE9es est incoh\xE9rent avec les r\xE9sultats existants.
Deleted: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/EnumFormuleSediment.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/EnumFormuleSediment.java 2013-10-11 16:11:52 UTC (rev 8520)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/EnumFormuleSediment.java 2013-10-15 10:09:52 UTC (rev 8521)
@@ -1,61 +0,0 @@
-package org.fudaa.dodico.hydraulique1d.metier.sediment;
-
-/**
- * Les formules pour la s\xE9dimentologie. Cette classe n'est volontairement pas une \xE9numeration
- * pour la serialisation Yapod.
- *
- * @author Bertrand Marchand (mar...@de...)
- * @version $Id$
- */
-public class EnumFormuleSediment {
- public static final EnumFormuleSediment MEYER_PETER=new EnumFormuleSediment("Meyer-Peter");
- public static final EnumFormuleSediment LEFORT_1991=new EnumFormuleSediment("Lefort 1991");
- public static final EnumFormuleSediment LEFORT_2007=new EnumFormuleSediment("Lefort 2007");
- public static final EnumFormuleSediment ENGELUND_HANSEN=new EnumFormuleSediment("Engelund & Hansen");
- public static final EnumFormuleSediment RECKING_2010=new EnumFormuleSediment("Recking 2010");
- public static final EnumFormuleSediment RECKING_2011=new EnumFormuleSediment("Recking 2011");
- public static final EnumFormuleSediment VAN_RIJN=new EnumFormuleSediment("Van Rijn");
- public static final EnumFormuleSediment SMART_JAGGI=new EnumFormuleSediment("Smart & J\xE4ggi");
- public static final EnumFormuleSediment RICKENMANN=new EnumFormuleSediment("Rickenmann");
-
- public String name_;
-
- public static EnumFormuleSediment[] values() {
- return new EnumFormuleSediment[]{
- MEYER_PETER,
- LEFORT_1991,
- LEFORT_2007,
- ENGELUND_HANSEN,
- RECKING_2010,
- RECKING_2011,
- VAN_RIJN,
- SMART_JAGGI,
- RICKENMANN
- };
- }
-
- /**
- * On ne devrait pas acceder \xE0 ce constructeur.
- */
- protected EnumFormuleSediment() {
- name_="";
- }
-
- private EnumFormuleSediment(String _name) {
- name_=_name;
- }
-
- /**
- * Necessaire pour comparer correctement 2 enums.
- */
- @Override
- public boolean equals(Object _obj) {
- if (_obj==null || !(_obj instanceof EnumFormuleSediment)) return false;
- return name_.equals(((EnumFormuleSediment)_obj).name_);
- }
-
- @Override
- public String toString() {
- return name_;
- }
-}
Added: 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 (rev 0)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierCalculSediment.java 2013-10-15 10:09:52 UTC (rev 8521)
@@ -0,0 +1,66 @@
+package org.fudaa.dodico.hydraulique1d.metier.sediment;
+
+import org.fudaa.dodico.hydraulique1d.metier.MetierDescriptionVariable;
+import org.fudaa.dodico.hydraulique1d.metier.MetierResultatsTemporelSpatial;
+
+/**
+ * Calcul des resultats sp\xE9cifiques s\xE9dimentaires. Les r\xE9sultats sont ajout\xE9s
+ * aux r\xE9sultats g\xE9n\xE9raux.
+ *
+ * @author Bertrand Marchand (mar...@de...)
+ * @version $Id$
+ */
+public class MetierCalculSediment {
+ private MetierResultatsTemporelSpatial res_;
+ private MetierParametresSediment params_;
+
+ public MetierCalculSediment(MetierResultatsTemporelSpatial _res, MetierParametresSediment _params) {
+ res_ = _res;
+ params_=_params;
+ }
+
+ /**
+ * Supprime tous les r\xE9sultats s\xE9dimentaires
+ */
+ public void clearResultatsSediment() {
+ for (MetierDescriptionVariable var : MetierSediment.VARIABLES) {
+ res_.removeResultsVariable(var);
+ }
+ }
+
+ /**
+ * Calcule et ajoute les r\xE9sultats pour une varaible s\xE9dimentaire.
+ * @param _var La variable s\xE9dimentaire.
+ */
+ public void computeResultsForVariable(MetierDescriptionVariable _var) {
+ boolean found=false;
+ for (MetierDescriptionVariable var : MetierSediment.VARIABLES) {
+ if (var.equals(_var)) {
+ found=true;
+ break;
+ }
+ }
+ if (!found)
+ throw new IllegalArgumentException("Variable non s\xE9dimentaire");
+
+ MetierFormuleSediment formule=MetierFormuleSediment.getFormule(_var);
+ ResultatTemporelSpatialAdapter resAdapter=new ResultatTemporelSpatialAdapter(res_);
+
+ // Suppression eventuelle de l'ancienne variable de m\xEAme nom
+ res_.removeResultsVariable(_var);
+
+ int nbBief=res_.resultatsBiefs().length;
+ int nbTps=res_.valPas().length;
+ double[][][] 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]=formule.calculer(params_, resAdapter, ibief, isect, itps);
+ }
+ }
+ }
+ res_.addResultsVariable(_var, vals);
+ }
+}
Property changes on: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierCalculSediment.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
Added: 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 (rev 0)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleMeyerPeter.java 2013-10-15 10:09:52 UTC (rev 8521)
@@ -0,0 +1,30 @@
+package org.fudaa.dodico.hydraulique1d.metier.sediment;
+
+import org.fudaa.dodico.hydraulique1d.metier.MetierDescriptionVariable;
+
+public class MetierFormuleMeyerPeter extends MetierFormuleSediment {
+
+ @Override
+ public double calculer(MetierParametresSediment _params, ResultatTemporelSpatialAdapter _adapter, int _ibief, int _isect, int _itps) {
+ return 1;
+ }
+
+ @Override
+ public MetierDescriptionVariable[] getRequiredVariable() {
+ return new MetierDescriptionVariable[] {
+ MetierDescriptionVariable.B1,
+ MetierDescriptionVariable.CHAR
+ // A completer
+ };
+ }
+
+ @Override
+ public MetierDescriptionVariable getVariable() {
+ return MetierDescriptionVariable.QS_MEYERPETER;
+ }
+
+ @Override
+ public String getName() {
+ return "Meyer-Peter";
+ }
+}
Property changes on: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleMeyerPeter.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
Copied: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleSediment.java (from rev 8519, trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/EnumFormuleSediment.java)
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleSediment.java (rev 0)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleSediment.java 2013-10-15 10:09:52 UTC (rev 8521)
@@ -0,0 +1,86 @@
+package org.fudaa.dodico.hydraulique1d.metier.sediment;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.fudaa.dodico.hydraulique1d.metier.MetierDescriptionVariable;
+
+/**
+ * La classe abstraire pour toutes les formules de s\xE9diment
+ * @author Bertrand Marchand (mar...@de...)
+ *
+ */
+public abstract class MetierFormuleSediment {
+
+ /**
+ * Contient les instances de chaque formule.
+ */
+ private static List<MetierFormuleSediment> formules_=new ArrayList<MetierFormuleSediment>();
+ static {
+// formules_.add(MetierDescriptionVariable.QS_ENGELUND);
+// formules_.add(MetierDescriptionVariable.QS_LEFORT07);
+// formules_.add(MetierDescriptionVariable.QS_LEFORT91);
+ formules_.add(new MetierFormuleMeyerPeter());
+// formules_.add(MetierDescriptionVariable.QS_RECKING10);
+// formules_.add(MetierDescriptionVariable.QS_RECKING11);
+// formules_.add(MetierDescriptionVariable.QS_RICKENMANN);
+ formules_.add(new MetierFormuleSmartJaggi());
+// formules_.add(MetierDescriptionVariable.QS_VANRIJN);
+ }
+
+ public MetierFormuleSediment() {
+ super();
+ }
+
+ public abstract double calculer(MetierParametresSediment _params, ResultatTemporelSpatialAdapter _adapter, int _ibief, int _isect, int _itps);
+
+ /**
+ * @return La variable associ\xE9e et calcul\xE9e par la formule.
+ */
+ public abstract MetierDescriptionVariable getVariable();
+
+ /**
+ * @return Le nom de la formule (pour affichage)
+ */
+ public abstract String getName();
+
+ /**
+ * @return Les variables necessaires au calcul par la formule. Sans ces
+ * variables, le calcul n'est pas possible.
+ */
+ public abstract MetierDescriptionVariable[] getRequiredVariable();
+
+ /**
+ * Necessaire pour comparer correctement 2 enums.
+ */
+ @Override
+ public boolean equals(Object _obj) {
+ if (_obj==null || !(_obj instanceof MetierFormuleSediment)) return false;
+ return getVariable().equals(((MetierFormuleSediment)_obj).getVariable());
+ }
+
+ @Override
+ public String toString() {
+ return getName();
+ }
+
+ /**
+ * @return Toutes les formules possibles.
+ */
+ public static MetierFormuleSediment[] values() {
+ return formules_.toArray(new MetierFormuleSediment[0]);
+ }
+
+ /**
+ * La formule utilis\xE9e pour le calcul de la variable en entr\xE9e
+ * @param _var La variable
+ * @return La formule, ou null si la variable n'est pas s\xE9dimentaire.
+ */
+ public static MetierFormuleSediment getFormule(MetierDescriptionVariable _var) {
+ for (MetierFormuleSediment formule : values()) {
+ if (formule.getVariable().nom().equals(_var.nom()))
+ return formule;
+ }
+ return null;
+ }
+}
\ No newline at end of file
Added: 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 (rev 0)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleSmartJaggi.java 2013-10-15 10:09:52 UTC (rev 8521)
@@ -0,0 +1,56 @@
+package org.fudaa.dodico.hydraulique1d.metier.sediment;
+
+import org.fudaa.dodico.hydraulique1d.metier.MetierDescriptionVariable;
+
+public class MetierFormuleSmartJaggi extends MetierFormuleSediment {
+
+ @Override
+ public double calculer(MetierParametresSediment _params, ResultatTemporelSpatialAdapter _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 Rhc = tau_cible * (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((tau_cible * (dens - 1) * dm),(2. / 3));
+ }
+
+ @Override
+ public MetierDescriptionVariable[] getRequiredVariable() {
+ return new MetierDescriptionVariable[] {
+ MetierDescriptionVariable.B1,
+ MetierDescriptionVariable.CHAR
+ // A completer
+ };
+ }
+
+ @Override
+ public MetierDescriptionVariable getVariable() {
+ return MetierDescriptionVariable.QS_SMARTJAGGI;
+ }
+
+ @Override
+ public String getName() {
+ return "Smart & Jaggi";
+ }
+}
Property changes on: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleSmartJaggi.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/MetierParametresSediment.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierParametresSediment.java 2013-10-11 16:11:52 UTC (rev 8520)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierParametresSediment.java 2013-10-15 10:09:52 UTC (rev 8521)
@@ -33,7 +33,7 @@
/** Contrainte critique adimensionnelle */
private double tauc_=0.047;
/** Formule de calcul */
- private EnumFormuleSediment formule_;
+ private MetierFormuleSediment formule_;
// Constructeur.
public MetierParametresSediment() {
@@ -69,6 +69,12 @@
return p;
}
+ @Override
+ final public String toString() {
+ String s = "parametresSediment";
+ return s;
+ }
+
public void setActif(boolean _b) {
if (isActif_==_b) return;
this.isActif_ = _b;
@@ -179,11 +185,11 @@
this.tauc_ = tauc;
}
- public EnumFormuleSediment getFormule() {
+ public MetierFormuleSediment getFormule() {
return formule_;
}
- public void setFormule(EnumFormuleSediment _formule) {
+ public void setFormule(MetierFormuleSediment _formule) {
if (formule_==_formule) return;
Notifieur.getNotifieur().fireObjetModifie(toString(), this, "Formule");
this.formule_ = _formule;
Modified: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierSediment.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierSediment.java 2013-10-11 16:11:52 UTC (rev 8520)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierSediment.java 2013-10-15 10:09:52 UTC (rev 8521)
@@ -8,6 +8,7 @@
*/
package org.fudaa.dodico.hydraulique1d.metier.sediment;
+import org.fudaa.dodico.hydraulique1d.metier.MetierDescriptionVariable;
import org.fudaa.dodico.hydraulique1d.metier.MetierHydraulique1d;
import org.fudaa.dodico.hydraulique1d.metier.evenement.Notifieur;
@@ -18,6 +19,22 @@
* @author Bertrand Marchand (mar...@de...)
*/
public class MetierSediment extends MetierHydraulique1d {
+
+ /**
+ * L'ensemble des variables s\xE9dimentaires
+ */
+ public final static MetierDescriptionVariable[] VARIABLES = {
+ MetierDescriptionVariable.QS_ENGELUND,
+ MetierDescriptionVariable.QS_LEFORT07,
+ MetierDescriptionVariable.QS_LEFORT91,
+ MetierDescriptionVariable.QS_MEYERPETER,
+ MetierDescriptionVariable.QS_RECKING10,
+ MetierDescriptionVariable.QS_RECKING11,
+ MetierDescriptionVariable.QS_RICKENMANN,
+ MetierDescriptionVariable.QS_SMARTJAGGI,
+ MetierDescriptionVariable.QS_VANRIJN
+ };
+
private MetierParametresSediment params_;
// Constructeur.
Added: 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 (rev 0)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/ResultatTemporelSpatialAdapter.java 2013-10-15 10:09:52 UTC (rev 8521)
@@ -0,0 +1,98 @@
+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;
+// }
+// }
+}
Property changes on: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/ResultatTemporelSpatialAdapter.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-11 16:11:52 UTC (rev 8520)
+++ trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/editor/Hydraulique1dParametresSedimentEditor.java 2013-10-15 10:09:52 UTC (rev 8521)
@@ -12,11 +12,17 @@
import javax.swing.border.Border;
import javax.swing.border.EtchedBorder;
+import org.fudaa.dodico.hydraulique1d.metier.MetierDescriptionVariable;
+import org.fudaa.dodico.hydraulique1d.metier.MetierEtude1d;
import org.fudaa.dodico.hydraulique1d.metier.MetierHydraulique1d;
-import org.fudaa.dodico.hydraulique1d.metier.sediment.EnumFormuleSediment;
+import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierCalculSediment;
+import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierFormuleSediment;
import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierParametresSediment;
+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;
@@ -36,6 +42,7 @@
implements ActionListener {
private MetierParametresSediment param_;
+ private MetierEtude1d etude_;
private JCheckBox cbActif_;
private BuGridLayout lyCenter_;
@@ -103,7 +110,7 @@
lbFormule_=new BuLabel(getS("Formule"));
coFormule_=new BuComboBox();
coFormule_.addItem("");
- for (EnumFormuleSediment item : EnumFormuleSediment.values()) {
+ for (MetierFormuleSediment item : MetierFormuleSediment.values()) {
coFormule_.addItem(item);
}
@@ -162,6 +169,7 @@
}
else {
if (getValeurs()) firePropertyChange("parametres", null, param_);
+ updateResults();
fermer();
}
}
@@ -264,8 +272,8 @@
param_.setTEau(tEau);
changed=true;
}
- EnumFormuleSediment formule;
- formule=(EnumFormuleSediment)coFormule_.getSelectedItem();
+ MetierFormuleSediment formule;
+ formule=(MetierFormuleSediment)coFormule_.getSelectedItem();
if (!formule.equals(param_.getFormule())) {
param_.setFormule(formule);
changed=true;
@@ -274,15 +282,57 @@
return changed;
}
+ /**
+ * Pas utilis\xE9. Trop g\xE9n\xE9raliste.
+ */
@Override
public void setObject(MetierHydraulique1d _param) {
- if (!(_param instanceof MetierParametresSediment)) return;
+ }
+
+ public void setParametres(MetierParametresSediment _param) {
if (_param==param_) return;
-
- param_= (MetierParametresSediment)_param;
+ param_=_param;
setValeurs();
}
+
+ public void setEtude(MetierEtude1d _etude) {
+ if (etude_==_etude) return;
+ etude_= _etude;
+ }
+ private void updateResults() {
+ if (etude_.resultatsGeneraux().hasResultatsTemporelSpatial()) {
+ // On ajoute le nouveau r\xE9sultat
+ if (etude_.sediment().parametres().isActif()) {
+ MetierFormuleSediment formule=etude_.sediment().parametres().getFormule();
+ StringBuilder sb=new StringBuilder();
+ for (MetierDescriptionVariable var : formule.getRequiredVariable()) {
+ if (etude_.resultatsGeneraux().resultatsTemporelSpatial().getIndiceVariable(var)==-1) {
+ sb.append("\n- ").append(var.description());
+ }
+ }
+ if (sb.length() != 0) {
+// sb.setLength(sb.length()-2);
+ JOptionPane.showMessageDialog(this,
+ getS("Les variables hydrauliques suivantes sont n\xE9cessaires pour le calcul s\xE9dimentologique:{0}\n\nAucun calcul ne sera effectu\xE9.", sb.toString()),
+ getS("Attention"),
+ JOptionPane.WARNING_MESSAGE);
+ return;
+ }
+
+ MetierCalculSediment calSed=new MetierCalculSediment(etude_.resultatsGeneraux().resultatsTemporelSpatial(), etude_.sediment().parametres());
+ calSed.computeResultsForVariable(formule.getVariable());
+ }
+ // On supprime les resultats de s\xE9dimentologie.
+ else {
+ for (MetierDescriptionVariable var : MetierSediment.VARIABLES) {
+ etude_.resultatsGeneraux().resultatsTemporelSpatial().removeResultsVariable(var);
+ }
+ }
+// if (etude_.sediment().parametres().getFormule());
+ }
+ }
+
private void changeCbActif() {
boolean b=cbActif_.isSelected();
lbDmoy_.setEnabled(b);
Modified: trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/ihmhelper/Hydraulique1dIHM_ParamsSediment.java
===================================================================
--- trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/ihmhelper/Hydraulique1dIHM_ParamsSediment.java 2013-10-11 16:11:52 UTC (rev 8520)
+++ trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/ihmhelper/Hydraulique1dIHM_ParamsSediment.java 2013-10-15 10:09:52 UTC (rev 8521)
@@ -10,8 +10,13 @@
import javax.swing.JComponent;
+import org.fudaa.dodico.hydraulique1d.metier.MetierDescriptionVariable;
import org.fudaa.dodico.hydraulique1d.metier.MetierEtude1d;
+import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierCalculSediment;
+import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierFormuleSediment;
+import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierSediment;
import org.fudaa.fudaa.hydraulique1d.Hydraulique1dBaseApplication;
+import org.fudaa.fudaa.hydraulique1d.Hydraulique1dBaseImplementation;
import org.fudaa.fudaa.hydraulique1d.Hydraulique1dResource;
import org.fudaa.fudaa.hydraulique1d.editor.Hydraulique1dParametresSedimentEditor;
@@ -34,7 +39,8 @@
public void editer() {
if (edit_ == null) {
edit_= new Hydraulique1dParametresSedimentEditor();
- edit_.setObject(etude_.sediment().parametres());
+ edit_.setParametres(etude_.sediment().parametres());
+ edit_.setEtude(etude_);
installContextHelp(edit_);
listenToEditor(edit_);
BuAssistant ass= Hydraulique1dResource.getAssistant();
Modified: trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/mascaret/MascaretImplementation.java
===================================================================
--- trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/mascaret/MascaretImplementation.java 2013-10-11 16:11:52 UTC (rev 8520)
+++ trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/mascaret/MascaretImplementation.java 2013-10-15 10:09:52 UTC (rev 8521)
@@ -476,7 +476,7 @@
zonesFrottementCalees();
} else if (action.equals("CALCUL_CALAGE")) {
calculer(true);
- } else if (action.equals("GRANULO_SEDIMENT")) {
+ } else if (action.equals("PARAM_SEDIMENT")) {
paramsSediment();
} else if (action.equals("MODELEQUALITEDEAU")) {
modeleQualiteDEau();
@@ -835,7 +835,7 @@
*/
private BuMenu buildSedimentMenu() {
BuMenu r=new BuMenu(_("S\xE9diment"), "SEDIMENT");
- r.addMenuItem(_("Param\xE8tres de granulom\xE9trie"),"GRANULO_SEDIMENT");
+ r.addMenuItem(_("Param\xE8tres de s\xE9dimentologie"),"PARAM_SEDIMENT");
return r;
}
@@ -2176,6 +2176,7 @@
setEnabledForAction("EXPORTMASCARET", false);
setEnabledForAction("EXPORTXML", false);
}
+ setEnabledForAction("SEDIMENT", etat>=AUTORISE_RESEAU);
if (etat >= AUTORISE_RESEAU) {
setEnabledForAction("RESEAU", true);
} else {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|