|
From: <de...@us...> - 2012-10-29 13:50:09
|
Revision: 7821
http://fudaa.svn.sourceforge.net/fudaa/?rev=7821&view=rev
Author: deniger
Date: 2012-10-29 13:49:58 +0000 (Mon, 29 Oct 2012)
Log Message:
-----------
premier support XML
Added Paths:
-----------
trunk/soft/fudaa-mascaret/server/src/test/
trunk/soft/fudaa-mascaret/server/src/test/java/
trunk/soft/fudaa-mascaret/server/src/test/java/org/
trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/
trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/
trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/hydraulique1d/
trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/hydraulique1d/conv/
trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/hydraulique1d/conv/ConvH1D_MascTest.java
trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/hydraulique1d/metier/
trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/hydraulique1d/metier/MetierEtude1dTest.java
trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/mascaret/
trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/mascaret/AbstractMascaretTestCase.java
trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/mascaret/EdamoxXmlReaderWriterTest.java
Added: trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/hydraulique1d/conv/ConvH1D_MascTest.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/hydraulique1d/conv/ConvH1D_MascTest.java (rev 0)
+++ trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/hydraulique1d/conv/ConvH1D_MascTest.java 2012-10-29 13:49:58 UTC (rev 7821)
@@ -0,0 +1,30 @@
+/*
+ GPL 2
+ */
+package org.fudaa.dodico.hydraulique1d.conv;
+
+import java.io.File;
+import java.io.IOException;
+import org.fudaa.dodico.corba.mascaret.SParametresCAS;
+import org.fudaa.dodico.hydraulique1d.metier.MetierEtude1d;
+import org.fudaa.dodico.hydraulique1d.metier.MetierEtude1dTest;
+import org.fudaa.dodico.mascaret.AbstractMascaretTestCase;
+
+/**
+ * Debut de test pour la conversion h1d -> mascaret
+ *
+ * @author Frederic Deniger
+ */
+public class ConvH1D_MascTest extends AbstractMascaretTestCase {
+
+ /**
+ *
+ * @throws IOException
+ */
+ public void testConvert() throws IOException {
+ File mascFile = getMascFile(EX_MODMASC);
+ MetierEtude1d etude1d = MetierEtude1dTest.readZipFile(mascFile);
+ SParametresCAS convertirParametresCas = ConvH1D_Masc.convertirParametresCas(true, etude1d, 0);
+ assertEquals("mascaret0.cas", convertirParametresCas.parametresGen.fichMotsCles);
+ }
+}
Added: trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/hydraulique1d/metier/MetierEtude1dTest.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/hydraulique1d/metier/MetierEtude1dTest.java (rev 0)
+++ trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/hydraulique1d/metier/MetierEtude1dTest.java 2012-10-29 13:49:58 UTC (rev 7821)
@@ -0,0 +1,101 @@
+/*
+ GPL 2
+ */
+package org.fudaa.dodico.hydraulique1d.metier;
+
+import org.fudaa.dodico.mascaret.*;
+import java.io.File;
+import java.io.IOException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+
+/**
+ *
+ * @author Frederic Deniger
+ */
+public class MetierEtude1dTest extends AbstractMascaretTestCase {
+
+ public MetierEtude1dTest() {
+ }
+
+ public void testReadEtude1dPermanent1Bief1Apport() throws IOException {
+ File mascFile = getMascFile(PERMANENT1_BIEF1_APPORTMASC);
+ assertTrue(mascFile.exists());
+ MetierEtude1d metier1d = readZipFile(mascFile);
+ assertNotNull(metier1d);
+ }
+
+ public void testReadEtude1dExMod() throws IOException {
+ File mascFile = getMascFile(EX_MODMASC);
+ assertTrue(mascFile.exists());
+ MetierEtude1d metier1d = readZipFile(mascFile);
+ assertNotNull(metier1d);
+ }
+
+ public void testReadEtude1dNonPermanent3Biefs2CasierSings() throws IOException {
+ File mascFile = getMascFile(NON_PERMANENT3_BIEFS2_CASIER_SINGSMASC);
+ assertTrue(mascFile.exists());
+ MetierEtude1d metier1d = readZipFile(mascFile);
+ assertNotNull(metier1d);
+ }
+
+ public void testReadEtude1dNonPermanent3Biefs3Casier() throws IOException {
+ File mascFile = getMascFile(NON_PERMANENT3_BIEFS3_CASIERMASC);
+ assertTrue(mascFile.exists());
+ MetierEtude1d metier1d = readZipFile(mascFile);
+ assertNotNull(metier1d);
+ }
+
+ public void testReadEtude1dQualiteeEauAvecSeuil() throws IOException {
+ File mascFile = getMascFile(QUALITEE_EAU_AVEC_SEUILMASC);
+ assertTrue(mascFile.exists());
+ MetierEtude1d metier1d = readZipFile(mascFile);
+ assertNotNull(metier1d);
+ }
+
+ public void testReadEtude1dOndeSub7biefs3seuils() throws IOException {
+ File mascFile = getMascFile(ONDE_SUB7BIEFS3SEUILSMASC);
+ assertTrue(mascFile.exists());
+ MetierEtude1d metier1d = readZipFile(mascFile);
+ assertNotNull(metier1d);
+ }
+
+ /**
+ * Copied from org.fudaa.fudaa.hydraulique1d.Hydraulique1dProjet.
+ *
+ * @param fichier
+ * @return
+ */
+ public static MetierEtude1d readZipFile(File fichier) {
+ ZipFile zf = null;
+ MetierEtude1d res = null;
+ try {
+ zf = new ZipFile(fichier);
+ ZipEntry entry;
+ entry = zf.getEntry("etude1d.xml");
+
+ //On recupere la version de l'etude
+ byte[] b = new byte[1000];
+ zf.getInputStream(entry).read(b);
+ String DebutEtude = new String(b);
+ int indexVersion = DebutEtude.indexOf("<single type=\"String\">");
+ String versionEtude = DebutEtude.substring(indexVersion + 22, indexVersion + 25);
+
+ System.err.println("version de l'Etude lu " + versionEtude);
+ res = new MetierEtude1d().readFrom(zf.getInputStream(entry), false, versionEtude);
+ } catch (Exception ex) {
+ Logger.getLogger(MetierEtude1dTest.class.getName()).log(Level.SEVERE, "message {0}", ex);
+ } finally {
+ if (zf != null) {
+ try {
+ zf.close();
+ } catch (IOException ex) {
+ Logger.getLogger(MetierEtude1dTest.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ }
+ }
+ return res;
+ }
+}
Added: trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/mascaret/AbstractMascaretTestCase.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/mascaret/AbstractMascaretTestCase.java (rev 0)
+++ trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/mascaret/AbstractMascaretTestCase.java 2012-10-29 13:49:58 UTC (rev 7821)
@@ -0,0 +1,49 @@
+/*
+ GPL 2
+ */
+package org.fudaa.dodico.mascaret;
+
+import java.io.File;
+import java.io.IOException;
+import junit.framework.TestCase;
+import org.fudaa.ctulu.CtuluLibFile;
+
+/**
+ *
+ * @author Frederic Deniger
+ */
+public class AbstractMascaretTestCase extends TestCase {
+
+ private static File tempFile;
+ public static final String EX_MODMASC = "ExMod.masc";
+ public static final String NON_PERMANENT3_BIEFS2_CASIER_SINGSMASC = "NonPermanent3Biefs2CasierSings.masc";
+ public static final String NON_PERMANENT3_BIEFS3_CASIERMASC = "NonPermanent3Biefs3Casier.masc";
+ public static final String ONDE_SUB7BIEFS3SEUILSMASC = "ondeSub7biefs3seuils.masc";
+ public static final String PERMANENT1_BIEF1_APPORTMASC = "permanent1Bief1Apport.masc";
+ public static final String QUALITEE_EAU_AVEC_SEUILMASC = "QualiteeEauAvecSeuil.masc";
+
+ public AbstractMascaretTestCase() {
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ tempFile = CtuluLibFile.createTempDir();
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ CtuluLibFile.deleteDir(tempFile);
+ }
+
+ protected File getMascFile(String filename) throws IOException {
+ final String extension = ".masc";
+ File target = createTempFile(extension);
+ return CtuluLibFile.getFileFromJar("/masc/" + filename, target);
+ }
+
+ protected File createTempFile(final String extension) throws IOException {
+ return File.createTempFile("test", extension, tempFile);
+ }
+}
Added: trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/mascaret/EdamoxXmlReaderWriterTest.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/mascaret/EdamoxXmlReaderWriterTest.java (rev 0)
+++ trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/mascaret/EdamoxXmlReaderWriterTest.java 2012-10-29 13:49:58 UTC (rev 7821)
@@ -0,0 +1,75 @@
+/*
+ GPL 2
+ */
+package org.fudaa.dodico.mascaret;
+
+import com.thoughtworks.xstream.XStream;
+import java.io.File;
+import java.io.IOException;
+import org.fudaa.ctulu.CtuluIOResult;
+import org.fudaa.ctulu.CtuluLog;
+import org.fudaa.dodico.corba.mascaret.SParametresCAS;
+import org.fudaa.dodico.hydraulique1d.conv.ConvH1D_Masc;
+import org.fudaa.dodico.hydraulique1d.metier.MetierEtude1d;
+
+/**
+ *
+ * @author Frederic Deniger
+ */
+public class EdamoxXmlReaderWriterTest extends AbstractMascaretTestCase {
+
+ public void testWriteExMod() throws IOException {
+ testWrite(getMascFile(EX_MODMASC));
+ }
+
+ public void testWriteOndeSub7biefs3seuils() throws IOException {
+ testWrite(getMascFile(ONDE_SUB7BIEFS3SEUILSMASC));
+ }
+
+ public void testWriteNonPermanent3Biefs2CasierSings() throws IOException {
+ testWrite(getMascFile(NON_PERMANENT3_BIEFS2_CASIER_SINGSMASC));
+ }
+
+ public void testWriteNonPermanent3Biefs3Casier() throws IOException {
+ testWrite(getMascFile(NON_PERMANENT3_BIEFS3_CASIERMASC));
+ }
+
+ public void testWritePermanent1Bief1Apport() throws IOException {
+ testWrite(getMascFile(PERMANENT1_BIEF1_APPORTMASC));
+ }
+
+ public void testWriteQualiteeEauAvecSeuil() throws IOException {
+ testWrite(getMascFile(QUALITEE_EAU_AVEC_SEUILMASC));
+ }
+
+ /**
+ * It's not an optimal solution but it works for tests...
+ *
+ * @param cas1
+ * @param cas2
+ * @return
+ */
+ public boolean compare(SParametresCAS cas1, SParametresCAS cas2) {
+ XStream xstream = new XStream();
+// cas2.parametresGen.code=3;
+ String cas1ToXml = xstream.toXML(cas1);
+ String cas2ToXml = xstream.toXML(cas2);
+ return cas1ToXml.equals(cas2ToXml);
+
+ }
+
+ private void testWrite(File f) throws IOException {
+ MetierEtude1d etude1d = org.fudaa.dodico.hydraulique1d.metier.MetierEtude1dTest.readZipFile(f);
+ SParametresCAS initContent = ConvH1D_Masc.convertirParametresCas(true, etude1d, "essai");
+// File target = createTempFile(".xml");
+ File target = new File("C:\\data\\tmp\\toto.xmas");
+ EdamoxXmlReaderWriter xmlWriter = new EdamoxXmlReaderWriter("1.0", "masc");
+ EdamoxXMLContent content = new EdamoxXMLContent(initContent);
+ CtuluLog writeXML = xmlWriter.writeXML(content, target);
+ assertTrue(writeXML.isEmpty());
+ CtuluIOResult<EdamoxXMLContent> readXML = xmlWriter.readXML(target);
+ assertTrue(readXML.getAnalyze().isEmpty());
+ EdamoxXMLContent readContent = readXML.getSource();
+ assertTrue(compare(initContent, readContent.getParametresCas()));
+ }
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <bma...@us...> - 2013-10-18 08:01:50
|
Revision: 8524
http://sourceforge.net/p/fudaa/svn/8524
Author: bmarchan
Date: 2013-10-18 08:01:47 +0000 (Fri, 18 Oct 2013)
Log Message:
-----------
Mascaret : Formule Lefort 2007
Modified Paths:
--------------
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/MetierParametresSediment.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/MetierFormuleLefort2007.java
Modified: 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 2013-10-17 12:33:25 UTC (rev 8523)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleLefort1991.java 2013-10-18 08:01:47 UTC (rev 8524)
@@ -22,8 +22,9 @@
public double calculer(MetierParametresSediment _params, MetierResultatsTemporelSpacialI _adapter, int _ibief, int _isect, int _itps) {
double pente = _adapter.getValue(MetierDescriptionVariable.PENE, _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 diam = _params.getDmoyen();
@@ -37,9 +38,6 @@
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) {
Added: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleLefort2007.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleLefort2007.java (rev 0)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleLefort2007.java 2013-10-18 08:01:47 UTC (rev 8524)
@@ -0,0 +1,124 @@
+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: MetierFormuleLefort1991.java 8523 2013-10-17 12:33:25Z bmarchan$
+ */
+public class MetierFormuleLefort2007 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 larg = _adapter.getValue(MetierDescriptionVariable.B1, _ibief, _itps, _isect);
+ double ks = _adapter.getValue(MetierDescriptionVariable.KMIN, _ibief, _itps, _isect);
+ double qmin = _adapter.getValue(MetierDescriptionVariable.QMIN, _ibief, _itps, _isect);
+ double h = _adapter.getValue(MetierDescriptionVariable.HMOY, _ibief, _itps, _isect);
+
+ double nu = _params.getViscosite();
+ double diam = _params.getDmoyen();
+ double dens = _params.getDensiteMateriau();
+ double d90 = _params.getD90();
+ double d30 = _params.getD30();
+ double d50 = _params.getD50();
+
+ // ' initialisation des colonnes et des lignes
+ // Col_Lefort07 = Range("Lefort07").Column
+ // Col_deb_cible = Range("Qcible").Column
+ // Col_H = Range("Hauteur").Column
+ //
+ // Lgn_Qc = Range("Ligne_Qc").Row
+ // lgn_calcul = Range("ligne_debut").Row
+ // ligne = lgn_calcul
+
+ // calcul des coef
+ double rap = Math.pow((d90 / d30), 0.21);
+ double detoile = diam * Math.pow((9.81 * (dens - 1) / Math.pow(nu, 2)), (1. / 3));
+ double kr = 21.1 / Math.pow(diam, (1. / 6));
+ double n = 1.725 + 0.09 * Math.log10(pente);
+
+ double cdm;
+ if (diam < 0.008) {
+ cdm = 0.0269;
+ }
+ else {
+ cdm = 0.0269 + 0.532 / (1.1 + detoile) - 0.0589 * Math.exp(-detoile / 60);
+ }
+ double m = 1.887 + 0.09 * Math.log10(pente);
+
+ // calcul du debit de debut d'entrainement
+ double qc = Math.pow((9.81 * Math.pow(diam, 5)), 0.5) * cdm * Math.pow((dens - 1), (5. / 3)) * Math.pow((larg / diam), (2. / 3)) * Math.pow((ks / kr), -0.42) * Math.pow(pente, (-n));
+
+ // Cells(Lgn_Qc, Col_Lefort07) = Qc
+
+ // calcul du d\xE9bit solide
+ // Do While Cells(ligne, Col_deb_cible) <> ""
+ // Qmin = Cells(ligne, Col_deb_cible)
+ double cp;
+ if (qmin > qc) {
+
+ double qetoile = qmin / qc;
+ // calcul de getoile
+ double gQetoile;
+ if (qetoile > 2.5) {
+ gQetoile = 3.88 * Math.pow((1 - Math.pow((0.75 / qetoile), 0.25)), (5. / 3));
+ }
+ else {
+ gQetoile = 0.4 * Math.pow((qetoile / 2.5), (6.25 * (1 - 0.37 * qetoile)));
+ }
+
+ // Coef de correction de dune
+ double cor;
+ if (ks / kr < 0.6) {
+ cor = 1 - 0.9 * Math.exp(-0.08 * Math.pow((ks / kr), 2.4) * qetoile);
+ }
+ else {
+ cor = 1;
+ }
+
+ // Calcul du reynolds
+ double rh = (h * larg) / (larg + 2 * h);
+ double re = qmin * rh / ((larg * h) * nu);
+
+ double z = 0.78 + 1.53 * Math.pow(re, 0.14) / Math.pow(detoile, 0.78);
+
+ // concentration en !!!! T/m3
+ cp = 3.176 * cor * rap * dens / Math.pow((dens - 1), (1.38)) * Math.pow(pente, m) * Math.pow(gQetoile, z);
+ }
+ else {
+ cp = 0;
+ }
+
+ double qs = qmin * cp / dens;
+ return qs;
+ }
+
+ @Override
+ public MetierDescriptionVariable[] getRequiredVariable() {
+ return new MetierDescriptionVariable[] {
+ MetierDescriptionVariable.CHAR, MetierDescriptionVariable.QMIN, MetierDescriptionVariable.B1,
+ MetierDescriptionVariable.KMIN, MetierDescriptionVariable.HMOY
+ };
+ }
+
+ @Override
+ public MetierDescriptionVariable getVariable() {
+ return MetierDescriptionVariable.QS_LEFORT07;
+ }
+
+ @Override
+ public String getName() {
+ return "Lefort 2007";
+ }
+}
Property changes on: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleLefort2007.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-17 12:33:25 UTC (rev 8523)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierParametresSediment.java 2013-10-18 08:01:47 UTC (rev 8524)
@@ -88,6 +88,10 @@
public double getTEau() {
return tEau_;
}
+
+ public double getViscosite() {
+ return 0.001382/Math.pow((getTEau()+50),1.7);
+ }
public void setTEau(double tEau) {
if (tEau_==tEau) return;
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-17 12:33:25 UTC (rev 8523)
+++ trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/hydraulique1d/metier/SedimentologieTest.java 2013-10-18 08:01:47 UTC (rev 8524)
@@ -5,6 +5,7 @@
import junit.framework.AssertionFailedError;
import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierFormuleLefort1991;
+import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierFormuleLefort2007;
import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierFormuleSediment;
import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierParametresSediment;
import org.fudaa.dodico.mascaret.AbstractMascaretTestCase;
@@ -55,6 +56,8 @@
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 };
+ // Les hauteurs, issues de la feuille Excel
+ double[] hauteurs = new double[] { 3.149, 2.682, 2.224, 1.915, 1.641, 1.480, 1.110, 1.084, 0.904, 0.795, 0.706, 0.577, 0.438, 0.368, 0.288, 0.190, 0.125, 0.05 };
@Override
public double getValue(MetierDescriptionVariable _var, int _ibief, int _itps, int _isect) {
@@ -74,6 +77,10 @@
else if (_var.nom().equals(MetierDescriptionVariable.QMIN.nom())) {
return debits[_itps];
}
+ // Hauteurs
+ else if (_var.nom().equals(MetierDescriptionVariable.HMOY.nom())) {
+ return hauteurs[_itps];
+ }
throw new AssertionFailedError();
}
@@ -116,4 +123,13 @@
assertEquals(val, sedRes[2][itps],epsilon);
}
}
+
+ public void testFormuleLefort2007() throws IOException {
+ FuLog.debug("Formule Lefort2007");
+ MetierFormuleSediment form=new MetierFormuleLefort2007();
+ for (int itps=0; itps<hydrauRes_.getNbTemps(); itps++) {
+ double val=form.calculer(params_, hydrauRes_, 0, 0, itps);
+ assertEquals(val, sedRes[4][itps],epsilon);
+ }
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <bma...@us...> - 2013-10-18 08:19:35
|
Revision: 8525
http://sourceforge.net/p/fudaa/svn/8525
Author: bmarchan
Date: 2013-10-18 08:19:32 +0000 (Fri, 18 Oct 2013)
Log Message:
-----------
Mascaret : Formule Lefort 2007
Modified Paths:
--------------
trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleLefort2007.java
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
Modified: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleLefort2007.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleLefort2007.java 2013-10-18 08:01:47 UTC (rev 8524)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleLefort2007.java 2013-10-18 08:19:32 UTC (rev 8525)
@@ -24,7 +24,7 @@
double larg = _adapter.getValue(MetierDescriptionVariable.B1, _ibief, _itps, _isect);
double ks = _adapter.getValue(MetierDescriptionVariable.KMIN, _ibief, _itps, _isect);
double qmin = _adapter.getValue(MetierDescriptionVariable.QMIN, _ibief, _itps, _isect);
- double h = _adapter.getValue(MetierDescriptionVariable.HMOY, _ibief, _itps, _isect);
+ double h = _adapter.getValue(MetierDescriptionVariable.Y, _ibief, _itps, _isect);
double nu = _params.getViscosite();
double diam = _params.getDmoyen();
@@ -108,7 +108,7 @@
public MetierDescriptionVariable[] getRequiredVariable() {
return new MetierDescriptionVariable[] {
MetierDescriptionVariable.CHAR, MetierDescriptionVariable.QMIN, MetierDescriptionVariable.B1,
- MetierDescriptionVariable.KMIN, MetierDescriptionVariable.HMOY
+ MetierDescriptionVariable.KMIN, MetierDescriptionVariable.Y
};
}
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 08:01:47 UTC (rev 8524)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleSediment.java 2013-10-18 08:19:32 UTC (rev 8525)
@@ -19,8 +19,8 @@
private static List<MetierFormuleSediment> formules_=new ArrayList<MetierFormuleSediment>();
static {
// formules_.add(MetierDescriptionVariable.QS_ENGELUND);
-// formules_.add(MetierDescriptionVariable.QS_LEFORT07);
formules_.add(new MetierFormuleLefort1991());
+ formules_.add(new MetierFormuleLefort2007());
formules_.add(new MetierFormuleMeyerPeter());
// formules_.add(MetierDescriptionVariable.QS_RECKING10);
// formules_.add(MetierDescriptionVariable.QS_RECKING11);
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 08:01:47 UTC (rev 8524)
+++ trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/hydraulique1d/metier/SedimentologieTest.java 2013-10-18 08:19:32 UTC (rev 8525)
@@ -78,7 +78,7 @@
return debits[_itps];
}
// Hauteurs
- else if (_var.nom().equals(MetierDescriptionVariable.HMOY.nom())) {
+ else if (_var.nom().equals(MetierDescriptionVariable.Y.nom())) {
return hauteurs[_itps];
}
throw new AssertionFailedError();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <bma...@us...> - 2013-10-18 15:35:15
|
Revision: 8526
http://sourceforge.net/p/fudaa/svn/8526
Author: bmarchan
Date: 2013-10-18 15:35:09 +0000 (Fri, 18 Oct 2013)
Log Message:
-----------
Mascaret : Calcul de tau moyen
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
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 08:19:32 UTC (rev 8525)
+++ 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)
@@ -8,27 +8,39 @@
/**
* La classe abstraire pour toutes les formules de s\xE9diment
+ *
* @author Bertrand Marchand (mar...@de...)
- *
+ *
*/
public abstract class MetierFormuleSediment {
+ /**
+ * Valeurs de retour de la fonction de calcul de tau moyen
+ *
+ * @author Bertrand Marchand (mar...@de...)
+ */
+ public class RetTauMoy {
+ public double tau;
+ public double taueff;
+ public double teta;
+ public double tetaD50;
+ }
/**
* Contient les instances de chaque formule.
*/
- private static List<MetierFormuleSediment> formules_=new ArrayList<MetierFormuleSediment>();
+ private static List<MetierFormuleSediment> formules_ = new ArrayList<MetierFormuleSediment>();
static {
-// formules_.add(MetierDescriptionVariable.QS_ENGELUND);
+ // formules_.add(MetierDescriptionVariable.QS_ENGELUND);
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(MetierDescriptionVariable.QS_RECKING10);
+ // formules_.add(MetierDescriptionVariable.QS_RECKING11);
+ // formules_.add(MetierDescriptionVariable.QS_RICKENMANN);
formules_.add(new MetierFormuleSmartJaggi());
-// formules_.add(MetierDescriptionVariable.QS_VANRIJN);
+ // formules_.add(MetierDescriptionVariable.QS_VANRIJN);
}
-
+
public MetierFormuleSediment() {
super();
}
@@ -39,49 +51,119 @@
* @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());
+ 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()))
+ if (formule.getVariable().nom().equals(_var.nom()))
return formule;
}
return null;
}
+
+ /**
+ * Calcul de la contrainte hydrodynamique moyenne sur la section (utilis\xE9 par
+ * quelques formules).
+ * Utilise les r\xE9sultats KMIN, PENE, B1 et Y.
+ *
+ * @param _params Les parametres de sedimentologie.
+ * @param _adapter Les resultats
+ * @param _ibief L'indice de bief
+ * @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) {
+ RetTauMoy ret = new RetTauMoy();
+
+ 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 dens = _params.getDensiteMateriau();
+
+ // ' initialisation des colonnes et des lignes
+ // Col_Tau = Range("Tau").Column
+ // Col_deb_cible = Range("Qcible").Column
+ // Col_H = Range("Hauteur").Column
+ //
+ // lgn_calcul = Range("ligne_debut").Row
+ // ligne = lgn_calcul
+
+ // '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 Tau = 9.81 * 1000. * RH1 * pente;
+ double Kpeau;
+ if (kr > ks) {
+ Kpeau = kr;
+ }
+ else {
+ Kpeau = ks;
+ }
+
+ double Taueff = Math.pow((ks / Kpeau), 1.5) * Tau;
+
+ // ecriture de Tau
+ ret.tau = Tau;
+ ret.taueff = Taueff;
+
+ // teta = tau*
+ // if (Diam <> "" Then
+ 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);
+ // Else
+ // teta_d50 = "-"
+ // End If
+
+ // Cells(ligne, Col_Tau + 2) = teta '=tau* f(dm)
+ // Cells(ligne, Col_Tau + 3) = teta_d50 '=tau* f(D50)
+ return ret;
+ }
}
\ No newline at end of file
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 08:19:32 UTC (rev 8525)
+++ trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/hydraulique1d/metier/SedimentologieTest.java 2013-10-18 15:35:09 UTC (rev 8526)
@@ -6,6 +6,7 @@
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.MetierFormuleSediment;
import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierParametresSediment;
import org.fudaa.dodico.mascaret.AbstractMascaretTestCase;
@@ -48,6 +49,12 @@
//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}
};
+ double[][] tauRes=new double[][] {
+ {274.34, 237.62, 200.39, 174.54, 151.03, 137.08, 104.27, 101.95, 85.56, 75.63, 67.39, 55.32, 42.26, 35.62, 27.98, 18.50, 12.23, 4.66},
+ {196.30, 170.03, 143.39, 124.89, 108.07, 98.09, 74.61, 72.95, 61.22, 54.11, 48.22, 39.58, 30.24, 25.49, 20.02, 13.24, 8.75, 3.34},
+ {0.85, 0.73, 0.62, 0.54, 0.47, 0.42, 0.32, 0.31, 0.26, 0.23, 0.21, 0.17, 0.13, 0.11, 0.09, 0.06, 0.04, 0.01},
+ {0.28, 0.24, 0.21, 0.18, 0.16, 0.14, 0.11, 0.10, 0.09, 0.08, 0.07, 0.06, 0.04, 0.04, 0.03, 0.02, 0.01, 0.00}
+ };
/**
* 1 seul bief, une seule section, avec plusieurs temps pour simuler un changement de d\xE9bit.
@@ -57,7 +64,10 @@
// 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 };
// Les hauteurs, issues de la feuille Excel
- double[] hauteurs = new double[] { 3.149, 2.682, 2.224, 1.915, 1.641, 1.480, 1.110, 1.084, 0.904, 0.795, 0.706, 0.577, 0.438, 0.368, 0.288, 0.190, 0.125, 0.05 };
+ double[] hauteurs = new double[] {
+ 3.14873081460036, 2.68210790714307, 2.22448059466516, 1.9154924638265, 1.6406299286677, 1.48011332926777,
+ 1.11014253111858, 1.08431580617216, 0.903738918268046, 0.795428295616823, 0.706414986443789, 0.57689555253611,
+ 0.438313744098063, 0.368420603900746, 0.288496806954015, 0.190040156277613, 0.125250658298057, 0.0476277981477428 };
@Override
public double getValue(MetierDescriptionVariable _var, int _ibief, int _itps, int _isect) {
@@ -132,4 +142,17 @@
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();
+ 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);
+ }
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
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.
|
|
From: <bma...@us...> - 2013-10-21 15:33:16
|
Revision: 8528
http://sourceforge.net/p/fudaa/svn/8528
Author: bmarchan
Date: 2013-10-21 15:33:13 +0000 (Mon, 21 Oct 2013)
Log Message:
-----------
Mascaret : Formulation de Meyer-Peter
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/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/sediment/MetierFormuleMeyerPeter.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleMeyerPeter.java 2013-10-21 14:17:01 UTC (rev 8527)
+++ 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)
@@ -3,19 +3,57 @@
import org.fudaa.dodico.hydraulique1d.metier.MetierDescriptionVariable;
import org.fudaa.dodico.hydraulique1d.metier.MetierResultatsTemporelSpacialI;
+/**
+ * Calcul s\xE9dimentaire avec la formule de Meyer-Peter.
+ *
+ * @author Bertrand Marchand (mar...@de...)
+ * @version $Id: MetierFormuleLefort1991.java 8524 2013-10-18 08:01:47Z bmarchan$
+ */
public class MetierFormuleMeyerPeter extends MetierFormuleSediment {
-
- @Override
+
+ @Override
public double calculer(MetierParametresSediment _params, MetierResultatsTemporelSpacialI _adapter, int _ibief, int _isect, int _itps) {
- return 1;
- }
+ double kr = _params.getRugosite();
+ double ks = _adapter.getValue(MetierDescriptionVariable.KMIN, _ibief, _itps, _isect);
+ double larg = _adapter.getValue(MetierDescriptionVariable.B1, _ibief, _itps, _isect);
+ double dens = _params.getDensiteMateriau();
+ double diam = _params.getDmoyen();
+
+ // Contrainte critique adimentionnelle de d\xE9but d'entrainement
+ double taustarc = 0.047;
+ double kpeau;
+ if (kr > ks) {
+ kpeau = kr;
+ }
+ else {
+ kpeau = ks;
+ }
+
+ RetTauMoy taumoy = taumoy(_params, _adapter, _ibief, _isect, _itps);
+
+ // Call Debit_crit(Taustarc / (ks / Kpeau) ^ 1.5, Col_Meyer)
+
+ double teta = taumoy.teta;
+ double taustarEff = Math.pow((ks / kpeau), 1.5) * teta;
+ double qsmp;
+ if (taustarEff - taustarc < 0) {
+ qsmp = 0;
+ }
+ else {
+ qsmp = (larg * Math.pow((9.81 * (dens - 1) * Math.pow(diam, 3)), 0.5)) * 8 * Math.pow((taustarEff - taustarc), 1.5);
+ }
+ return qsmp;
+ }
+
@Override
public MetierDescriptionVariable[] getRequiredVariable() {
return new MetierDescriptionVariable[] {
MetierDescriptionVariable.B1,
- MetierDescriptionVariable.CHAR
- // A completer
+ MetierDescriptionVariable.CHAR,
+ MetierDescriptionVariable.QMIN,
+ MetierDescriptionVariable.KMIN,
+ MetierDescriptionVariable.Y
};
}
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 14:17:01 UTC (rev 8527)
+++ 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)
@@ -34,7 +34,7 @@
public MetierDescriptionVariable[] getRequiredVariable() {
return new MetierDescriptionVariable[] {
MetierDescriptionVariable.CHAR,
- MetierDescriptionVariable.QMIN ,
+ MetierDescriptionVariable.QMIN,
MetierDescriptionVariable.KMIN,
MetierDescriptionVariable.B1,
MetierDescriptionVariable.Y
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 14:17:01 UTC (rev 8527)
+++ trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/hydraulique1d/metier/SedimentologieTest.java 2013-10-21 15:33:13 UTC (rev 8528)
@@ -126,8 +126,26 @@
params_.setTEau(17);
}
+ public void testFormuleMeyerPeter() throws IOException {
+ FuLog.debug("Formule Meyer-Peter");
+ MetierFormuleSediment form=new MetierFormuleMeyerPeter();
+ for (int itps=0; itps<hydrauRes_.getNbTemps(); itps++) {
+ double val=form.calculer(params_, hydrauRes_, 0, 0, itps);
+ assertEquals(val, sedRes[0][itps],epsilon);
+ }
+ }
+
+ public void testFormuleSmartJaggi() throws IOException {
+ 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);
+ assertEquals(val, sedRes[1][itps],epsilon);
+ }
+ }
+
public void testFormuleLefort1991() throws IOException {
- FuLog.debug("Formule Lefort1991");
+ FuLog.debug("Formule Lefort 1991");
MetierFormuleSediment form=new MetierFormuleLefort1991();
for (int itps=0; itps<hydrauRes_.getNbTemps(); itps++) {
double val=form.calculer(params_, hydrauRes_, 0, 0, itps);
@@ -136,22 +154,13 @@
}
public void testFormuleLefort2007() throws IOException {
- FuLog.debug("Formule Lefort2007");
+ FuLog.debug("Formule Lefort 2007");
MetierFormuleSediment form=new MetierFormuleLefort2007();
for (int itps=0; itps<hydrauRes_.getNbTemps(); itps++) {
double val=form.calculer(params_, hydrauRes_, 0, 0, itps);
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.
|
|
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.
|
|
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.
|
|
From: <bma...@us...> - 2013-11-14 17:19:17
|
Revision: 8533
http://sourceforge.net/p/fudaa/svn/8533
Author: bmarchan
Date: 2013-11-14 17:19:14 +0000 (Thu, 14 Nov 2013)
Log Message:
-----------
Mascaret : Formule Recking 2010
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/MetierFormuleRecking2010.java
Added: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleRecking2010.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleRecking2010.java (rev 0)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleRecking2010.java 2013-11-14 17:19:14 UTC (rev 8533)
@@ -0,0 +1,136 @@
+package org.fudaa.dodico.hydraulique1d.metier.sediment;
+
+import org.fudaa.dodico.hydraulique1d.metier.MetierDescriptionVariable;
+import org.fudaa.dodico.hydraulique1d.metier.MetierResultatsTemporelSpacialI;
+
+import com.memoire.fu.FuLog;
+
+/**
+ * Calcul s\xE9dimentaire avec la formule de Recking 2010.
+ *
+ * @author Bertrand Marchand (mar...@de...)
+ * @version $Id: MetierFormuleLefort1991.java 8524 2013-10-18 08:01:47Z
+ * bmarchan$
+ */
+public class MetierFormuleRecking2010 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 h = _adapter.getValue(MetierDescriptionVariable.Y, _ibief, _itps, _isect);
+
+ double dens = _params.getDensiteMateriau();
+ double d84 = _params.getD84();
+ double d50 = _params.getD50();
+
+ // Diametre cible
+ double dcible;
+ if (d50 > 0.002) {
+ dcible = 3.5 * d84;
+ }
+ else {
+ dcible = d50;
+ }
+
+ // Calcul de RH
+// double rh = calculerRH(h, d84, qmin, pente, larg);
+ // Calcul de RH cible
+ double rhcible = calculerRHCible(qmin, larg, pente, dcible);
+
+ double tetac84;
+ if (d50 < 0.002) {
+ tetac84 = 0.045;
+ }
+ else {
+ tetac84 = (1.32 * pente + 0.037) * Math.pow(d84 / d50, -0.93);
+ }
+
+ // 'valeur de tetac prise pour la validation des valeurs labo
+ // 'tetac84 = 0.15 * pente ^ 0.275
+
+ double l = 12.53 * Math.pow((d84 / d50), (4.445 * Math.pow(pente, 0.5))) * Math.pow(tetac84, 1.605);
+
+ // calcul du d\xE9bit solide
+ double teta84 = rhcible * pente / (d84 * (dens - 1));
+ double cpl;
+ if (teta84 < l) {
+ cpl = 0.0005 * (dens * 1000) * Math.pow((9.81 * (dens - 1) * Math.pow(d84, 3)), 0.5) * Math.pow((d84 / d50), (-18 * Math.pow(pente, 0.5))) * Math.pow((teta84 / tetac84), 6.5);
+ }
+ else {
+ cpl = 14 * (dens * 1000) * Math.pow((9.81 * (dens - 1) * Math.pow(d84, 3)), 0.5) * Math.pow(teta84, 2.45);
+ }
+ double qs = cpl / (dens * 1000) * larg;
+
+ return qs;
+ }
+
+ protected double calculerRH(double _h, double _d84, double _qmin, double _pente, double _larg) {
+ double rh;
+ if (_h / _d84 < 5) {
+ rh = Math.pow((_qmin / _larg * Math.pow(_d84, 0.52)) / (3.2 * Math.pow((9.81 * _pente), 0.5)), 0.5);
+ }
+ else {
+ rh = Math.pow(((_qmin / _larg * Math.pow(_d84, 0.27)) / (4.7 * Math.pow((9.81 * _pente), 0.5))), 0.57);
+ }
+ return rh;
+ }
+
+ /**
+ * Calcul du RH cible par dicothomie.
+ *
+ * @param _qmin Le d\xE9bit en lit mineur
+ * @param _larg La largeur du profil
+ * @param _pente La pente
+ * @param _dcible Le diametre de grain cible
+ * @param _rescible Le r\xE9sultat cible \xE0 trouver
+ * @return La RH correspondant au r\xE9sultat cible demand\xE9.
+ */
+ private double calculerRHCible(double _qmin, double _larg, double _pente, double _dcible) {
+ double rhSup = 1.e20;
+ double rhInf = 1.e-20;
+ double rhCible = 0;
+ double rescible = 0;
+ double val = rescible + 1;
+
+ // It\xE9rations par dicothomie jusqu'\xE0 obtention du r\xE9sultat.
+ while (true) {
+ rhCible = (rhSup + rhInf) / 2;
+ val = _qmin * (_larg - 2 * rhCible) / (rhCible * _larg * _larg * Math.pow((9.81 * rhCible * (_pente)), 0.5)) - 6.25 - 5.75 * Math.log10(rhCible / (_dcible));
+
+ if (val - rescible > 0) {
+ rhInf = rhCible;
+ }
+ else if (val < rescible - 1.e-8) {
+ rhSup = rhCible;
+ }
+ // Sortie si convergence
+ else {
+ break;
+ }
+ }
+// FuLog.debug("rhCible=" + rhCible);
+ return rhCible;
+ }
+
+ @Override
+ public MetierDescriptionVariable[] getRequiredVariable() {
+ return new MetierDescriptionVariable[] {
+ MetierDescriptionVariable.B1,
+ MetierDescriptionVariable.CHAR,
+ MetierDescriptionVariable.QMIN
+ };
+ }
+
+ @Override
+ public MetierDescriptionVariable getVariable() {
+ return MetierDescriptionVariable.QS_RECKING10;
+ }
+
+ @Override
+ public String getName() {
+ return "Recking 2010";
+ }
+}
Property changes on: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleRecking2010.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-11-08 16:27:15 UTC (rev 8532)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleSediment.java 2013-11-14 17:19:14 UTC (rev 8533)
@@ -35,7 +35,7 @@
formules_.add(new MetierFormuleLefort1991());
formules_.add(new MetierFormuleLefort2007());
formules_.add(new MetierFormuleMeyerPeter());
- // formules_.add(MetierDescriptionVariable.QS_RECKING10);
+ formules_.add(new MetierFormuleRecking2010());
formules_.add(new MetierFormuleRecking2011());
formules_.add(new MetierFormuleRickenmann());
formules_.add(new MetierFormuleSmartJaggi());
@@ -124,16 +124,6 @@
double diam = _params.getDmoyen();
double dens = _params.getDensiteMateriau();
- // ' initialisation des colonnes et des lignes
- // Col_Tau = Range("Tau").Column
- // Col_deb_cible = Range("Qcible").Column
- // Col_H = Range("Hauteur").Column
- //
- // lgn_calcul = Range("ligne_debut").Row
- // ligne = lgn_calcul
-
- // 'boucle sur les lignes'
- // Do While Cells(ligne, Col_deb_cible) <> ""
// Calcul de tau
double rh1 = (h1 * larg) / (larg + 2. * h1);
@@ -151,21 +141,9 @@
// ecriture de Tau
ret.tau = tau;
ret.taueff = taueff;
-
- // teta = tau*
- // if (Diam <> "" Then
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);
- // Else
- // teta_d50 = "-"
- // End If
- // Cells(ligne, Col_Tau + 2) = teta '=tau* f(dm)
- // Cells(ligne, Col_Tau + 3) = teta_d50 '=tau* f(D50)
return ret;
}
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-11-08 16:27:15 UTC (rev 8532)
+++ trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/hydraulique1d/metier/SedimentologieTest.java 2013-11-14 17:19:14 UTC (rev 8533)
@@ -8,6 +8,7 @@
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.MetierFormuleRecking2010;
import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierFormuleRecking2011;
import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierFormuleRickenmann;
import org.fudaa.dodico.hydraulique1d.metier.sediment.MetierFormuleSediment;
@@ -197,6 +198,40 @@
}
}
+ public void testFormuleRecking2010() throws IOException {
+ FuLog.debug("Formule Recking 2010");
+ MetierFormuleSediment form=new MetierFormuleRecking2010();
+ for (int itps=0; itps<hydrauRes_.getNbTemps(); itps++) {
+ double val=form.calculer(params_, hydrauRes_, 0, 0, itps);
+ assertEquals(val, sedRes[9][itps],epsilon);
+ }
+// double G7=1000;
+// double lb=30;
+// double itrap=0.01;
+// double ABsup=1.e20;
+// double ABinf=1.e-20;
+// double AB=0;
+// double dopti=0.35;
+// double valcible=6.01;
+// double val=valcible+1;
+//
+// while (Math.abs(val) > 10.e-8) {
+// AB=(ABsup+ABinf)/2;
+// val = G7 * (lb - 2 * AB) / (AB * lb * lb * Math.pow((9.81 * AB * (itrap)), 0.5)) - 6.25 - 5.75 * Math.log10(AB / (dopti));
+// FuLog.debug("val=" + val);
+// if (val-valcible>0) {
+// ABinf=AB;
+// }
+// else if (val<valcible-1.e-8) {
+// ABsup=AB;
+// }
+// else {
+// break;
+// }
+// }
+// FuLog.debug("AB=" + AB);
+ }
+
public void testFormuleRecking2011() throws IOException {
FuLog.debug("Formule Recking 2011");
MetierFormuleSediment form=new MetierFormuleRecking2011();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <bma...@us...> - 2013-12-12 09:48:20
|
Revision: 8545
http://sourceforge.net/p/fudaa/svn/8545
Author: bmarchan
Date: 2013-12-12 09:48:17 +0000 (Thu, 12 Dec 2013)
Log Message:
-----------
Mascaret : correction formulation
Modified 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/MetierFormuleLefort2007.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/MetierFormuleRecking2010.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/MetierFormuleVanRijn.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/sediment/MetierFormuleEngelundHansen.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleEngelundHansen.java 2013-12-12 09:42:18 UTC (rev 8544)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleEngelundHansen.java 2013-12-12 09:48:17 UTC (rev 8545)
@@ -17,16 +17,15 @@
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 rh1 = _adapter.getValue(MetierDescriptionVariable.RH1, _ibief, _itps, _isect);
+ double vmin = _adapter.getValue(MetierDescriptionVariable.VMIN, _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 f = 2 * 9.81 * rh1 * pente / Math.pow(vmin, 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;
@@ -35,11 +34,11 @@
@Override
public MetierDescriptionVariable[] getRequiredVariable() {
return new MetierDescriptionVariable[] {
- MetierDescriptionVariable.B1,
- MetierDescriptionVariable.CHAR,
- MetierDescriptionVariable.QMIN,
- MetierDescriptionVariable.KMIN,
- MetierDescriptionVariable.Y
+ MetierDescriptionVariable.B1,
+ MetierDescriptionVariable.CHAR,
+ MetierDescriptionVariable.KMIN,
+ MetierDescriptionVariable.RH1,
+ MetierDescriptionVariable.VMIN
};
}
Modified: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleLefort2007.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleLefort2007.java 2013-12-12 09:42:18 UTC (rev 8544)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleLefort2007.java 2013-12-12 09:48:17 UTC (rev 8545)
@@ -31,7 +31,6 @@
double dens = _params.getDensiteMateriau();
double d90 = _params.getD90();
double d30 = _params.getD30();
- double d50 = _params.getD50();
// ' initialisation des colonnes et des lignes
// Col_Lefort07 = Range("Lefort07").Column
@@ -107,8 +106,11 @@
@Override
public MetierDescriptionVariable[] getRequiredVariable() {
return new MetierDescriptionVariable[] {
- MetierDescriptionVariable.CHAR, MetierDescriptionVariable.QMIN, MetierDescriptionVariable.B1,
- MetierDescriptionVariable.KMIN, MetierDescriptionVariable.Y
+ MetierDescriptionVariable.CHAR,
+ MetierDescriptionVariable.QMIN,
+ MetierDescriptionVariable.B1,
+ MetierDescriptionVariable.KMIN,
+ MetierDescriptionVariable.Y
};
}
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-12-12 09:42:18 UTC (rev 8544)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleMeyerPeter.java 2013-12-12 09:48:17 UTC (rev 8545)
@@ -51,9 +51,8 @@
return new MetierDescriptionVariable[] {
MetierDescriptionVariable.B1,
MetierDescriptionVariable.CHAR,
- MetierDescriptionVariable.QMIN,
MetierDescriptionVariable.KMIN,
- MetierDescriptionVariable.Y
+ MetierDescriptionVariable.RH1
};
}
Modified: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleRecking2010.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleRecking2010.java 2013-12-12 09:42:18 UTC (rev 8544)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleRecking2010.java 2013-12-12 09:48:17 UTC (rev 8545)
@@ -3,8 +3,6 @@
import org.fudaa.dodico.hydraulique1d.metier.MetierDescriptionVariable;
import org.fudaa.dodico.hydraulique1d.metier.MetierResultatsTemporelSpacialI;
-import com.memoire.fu.FuLog;
-
/**
* Calcul s\xE9dimentaire avec la formule de Recking 2010.
*
@@ -20,7 +18,6 @@
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 h = _adapter.getValue(MetierDescriptionVariable.Y, _ibief, _itps, _isect);
double dens = _params.getDensiteMateriau();
double d84 = _params.getD84();
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-12-12 09:42:18 UTC (rev 8544)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleSediment.java 2013-12-12 09:48:17 UTC (rev 8545)
@@ -117,15 +117,14 @@
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 h1 = _adapter.getValue(MetierDescriptionVariable.Y, _ibief, _itps, _isect);
+ double rh1 = _adapter.getValue(MetierDescriptionVariable.RH1, _ibief, _itps, _isect);
double d50 = _params.getD50();
double diam = _params.getDmoyen();
double dens = _params.getDensiteMateriau();
// Calcul de tau
- double rh1 = (h1 * larg) / (larg + 2. * h1);
+// double rh1 = (h1 * larg) / (larg + 2. * h1);
double tau = 9.81 * 1000. * rh1 * pente;
double kpeau;
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-12-12 09:42:18 UTC (rev 8544)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleSmartJaggi.java 2013-12-12 09:48:17 UTC (rev 8545)
@@ -36,8 +36,7 @@
MetierDescriptionVariable.CHAR,
MetierDescriptionVariable.QMIN,
MetierDescriptionVariable.KMIN,
- MetierDescriptionVariable.B1,
- MetierDescriptionVariable.Y
+ MetierDescriptionVariable.RH1
};
}
Modified: 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 2013-12-12 09:42:18 UTC (rev 8544)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierFormuleVanRijn.java 2013-12-12 09:48:17 UTC (rev 8545)
@@ -16,8 +16,8 @@
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 rh1 = _adapter.getValue(MetierDescriptionVariable.RH1, _ibief, _itps, _isect);
+ double vmin = _adapter.getValue(MetierDescriptionVariable.VMIN, _ibief, _itps, _isect);
double dens = _params.getDensiteMateriau();
double d50 = _params.getD50();
@@ -37,8 +37,8 @@
// Qmin = Cells(ligne, Col_deb_cible)
// H1 = Cells(ligne, Col_H)
- double rh1 = (h1 * larg) / (larg + 2 * h1);
- double u = qmin / (larg * h1);
+// 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
@@ -66,7 +66,7 @@
}
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 uet = Math.pow(9.81, 0.5) * vmin / (18 * Math.log10(4 * rh1 / d90));
double t;
if (Math.pow(uet, 2) > ucetCarre) {
@@ -83,9 +83,9 @@
@Override
public MetierDescriptionVariable[] getRequiredVariable() {
return new MetierDescriptionVariable[] {
- MetierDescriptionVariable.QMIN,
MetierDescriptionVariable.B1,
- MetierDescriptionVariable.Y
+ MetierDescriptionVariable.RH1,
+ MetierDescriptionVariable.VMIN
};
}
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-12-12 09:42:18 UTC (rev 8544)
+++ trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/hydraulique1d/metier/SedimentologieTest.java 2013-12-12 09:48:17 UTC (rev 8545)
@@ -97,6 +97,19 @@
else if (_var.nom().equals(MetierDescriptionVariable.Y.nom())) {
return hauteurs[_itps];
}
+ else if (_var.nom().equals(MetierDescriptionVariable.RH1.nom())) {
+ double larg=50;
+ double h1=hauteurs[_itps];
+ return (h1 * larg) / (larg + 2 * h1);
+ }
+ else if (_var.nom().equals(MetierDescriptionVariable.VMIN.nom())) {
+ double larg=50;
+ double h1=hauteurs[_itps];
+ double qmin=debits[_itps];
+ return qmin / (h1 * larg);
+ }
+
+ // Rayon hydraulique
throw new AssertionFailedError();
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <de...@us...> - 2014-10-09 21:42:25
|
Revision: 8870
http://sourceforge.net/p/fudaa/svn/8870
Author: deniger
Date: 2014-10-09 21:42:19 +0000 (Thu, 09 Oct 2014)
Log Message:
-----------
prise en compte d'une valeur null
Modified Paths:
--------------
trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/MetierEtude1d.java
trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/MetierReseau.java
trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/mascaret/DoubleConverter.java
trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/mascaret/EdamoxXmlReaderWriter.java
trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/mascaret/IntegerConverter.java
trunk/soft/fudaa-mascaret/server/src/main/resources/dtd/mascaret-1.0.dtd
trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/mascaret/EdamoxXmlReaderWriterTest.java
Modified: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/MetierEtude1d.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/MetierEtude1d.java 2014-10-09 21:08:28 UTC (rev 8869)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/MetierEtude1d.java 2014-10-09 21:42:19 UTC (rev 8870)
@@ -289,6 +289,7 @@
return calageAuto_;
}
+
public void calageAuto(MetierCalageAuto _calageAuto) {
if (calageAuto_ == _calageAuto) {
return;
Modified: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/MetierReseau.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/MetierReseau.java 2014-10-09 21:08:28 UTC (rev 8869)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/MetierReseau.java 2014-10-09 21:42:19 UTC (rev 8870)
@@ -908,6 +908,9 @@
}
public MetierNoeud[] noeudsConnectesBiefs() {
+ if (biefs_ == null) {
+ return new MetierNoeud[0];
+ }
Vector noeuds = new Vector();
MetierNoeud n = null;
for (int i = 0; i < biefs_.length; i++) {
Modified: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/mascaret/DoubleConverter.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/mascaret/DoubleConverter.java 2014-10-09 21:08:28 UTC (rev 8869)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/mascaret/DoubleConverter.java 2014-10-09 21:42:19 UTC (rev 8870)
@@ -23,7 +23,7 @@
public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) {
Double values = (Double) source;
if (values == null || values.isNaN() || ConvH1D_Masc.RIEN == values.doubleValue()) {
- writer.setValue(StringUtils.EMPTY);
+ writer.setValue(IntegerConverter.NOTHING_VALUE);
} else {
writer.setValue(basicDoubleConverter.toString(values));
}
@@ -32,7 +32,7 @@
@Override
public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
String value = reader.getValue();
- if (value == null || StringUtils.isBlank(value)) {
+ if (value == null || StringUtils.isBlank(value) || IntegerConverter.NOTHING_VALUE.equals(value)) {
return ConvH1D_Masc.RIEN;
}
return basicDoubleConverter.fromString(value);
Modified: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/mascaret/EdamoxXmlReaderWriter.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/mascaret/EdamoxXmlReaderWriter.java 2014-10-09 21:08:28 UTC (rev 8869)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/mascaret/EdamoxXmlReaderWriter.java 2014-10-09 21:42:19 UTC (rev 8870)
@@ -156,7 +156,7 @@
}
private XmlFriendlyNameCoder createReplacer() {
- return new XmlFriendlyNameCoder("#", "_") ;
+ return new XmlFriendlyNameCoder("#", "_");
}
public CtuluLog isValide(final File xml) {
@@ -406,21 +406,7 @@
private void configureXStream(XStream xstream) {
xstream.alias("fichierCas", EdamoxXMLContent.class);
- //ces converter traduisent des tableaux de double, boolean,... en chaine de caractere
- //avec chaque entr\xE9e s\xE9par\xE9s par un espace.
- //Si la lecture de ces lignes est trop compliqu\xE9 en fortran, il est possible
- //de supprimer ces converter. Ainsi chaque entr\xE9e sera dans des balises <double>,...
- xstream.registerConverter(new DoubleArrayConverter());
- xstream.registerConverter(new BooleanArrayConverter());
- xstream.registerConverter(new IntegerArrayConverter());
- xstream.registerConverter(new FloatArrayConverter());
- //pour enlever les caracteres speciaux
- xstream.registerConverter(new StringConverter());
- //pour les NAN
- xstream.registerConverter(new IntegerConverter());
- //pour les NAN
- xstream.registerConverter(new DoubleConverter());
-// xstream.registerConverter(new StringArrayConverter());
+ registerConverters(xstream);
xstream.alias("structureParametresCAS", SParametresCAS.class);
xstream.alias("noeud", SNoeud.class);
@@ -486,6 +472,24 @@
}
+ public static void registerConverters(XStream xstream) {
+ //ces converter traduisent des tableaux de double, boolean,... en chaine de caractere
+ //avec chaque entr\xE9e s\xE9par\xE9s par un espace.
+ //Si la lecture de ces lignes est trop compliqu\xE9 en fortran, il est possible
+ //de supprimer ces converter. Ainsi chaque entr\xE9e sera dans des balises <double>,...
+ xstream.registerConverter(new DoubleArrayConverter(IntegerConverter.NOTHING_VALUE));
+ xstream.registerConverter(new BooleanArrayConverter(IntegerConverter.NOTHING_VALUE));
+ xstream.registerConverter(new IntegerArrayConverter(IntegerConverter.NOTHING_VALUE));
+ xstream.registerConverter(new FloatArrayConverter(IntegerConverter.NOTHING_VALUE));
+ //pour enlever les caracteres speciaux
+ xstream.registerConverter(new StringConverter());
+ //pour les NAN
+ xstream.registerConverter(new IntegerConverter());
+ //pour les NAN
+ xstream.registerConverter(new DoubleConverter());
+// xstream.registerConverter(new StringArrayConverter());
+ }
+
protected static class CustomPrettyPrintWriter extends PrettyPrintWriter {
public CustomPrettyPrintWriter(Writer writer, char[] lineIndenter, NameCoder nameCoder) {
Modified: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/mascaret/IntegerConverter.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/mascaret/IntegerConverter.java 2014-10-09 21:08:28 UTC (rev 8869)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/mascaret/IntegerConverter.java 2014-10-09 21:42:19 UTC (rev 8870)
@@ -9,7 +9,6 @@
import com.thoughtworks.xstream.converters.basic.IntConverter;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
-import java.text.Normalizer;
import org.apache.commons.lang.StringUtils;
import org.fudaa.dodico.hydraulique1d.conv.ConvH1D_Masc;
@@ -19,13 +18,15 @@
*/
public class IntegerConverter implements Converter {
+ public static String NOTHING_VALUE = "-0";
+
IntConverter basicIntConverter = new IntConverter();
@Override
public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) {
Integer values = (Integer) source;
if (values == null || ConvH1D_Masc.IRIEN == values.intValue()) {
- writer.setValue(StringUtils.EMPTY);
+ writer.setValue(NOTHING_VALUE);
} else {
writer.setValue(basicIntConverter.toString(values));
}
@@ -34,7 +35,7 @@
@Override
public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
String value = reader.getValue();
- if (value == null || StringUtils.isBlank(value)) {
+ if (value == null || StringUtils.isBlank(value) || NOTHING_VALUE.equals(value)) {
return ConvH1D_Masc.IRIEN;
}
return basicIntConverter.fromString(value);
Modified: trunk/soft/fudaa-mascaret/server/src/main/resources/dtd/mascaret-1.0.dtd
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/resources/dtd/mascaret-1.0.dtd 2014-10-09 21:08:28 UTC (rev 8869)
+++ trunk/soft/fudaa-mascaret/server/src/main/resources/dtd/mascaret-1.0.dtd 2014-10-09 21:42:19 UTC (rev 8870)
@@ -57,8 +57,7 @@
perteChargeAutoElargissement?,
termesNonHydrostatiques?,
apportDebit?,
- attenuationConvection?,
- parametresNumeriqueCasier?)
+ attenuationConvection?)
>
<!ELEMENT parametresTemporels (
Modified: trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/mascaret/EdamoxXmlReaderWriterTest.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/mascaret/EdamoxXmlReaderWriterTest.java 2014-10-09 21:08:28 UTC (rev 8869)
+++ trunk/soft/fudaa-mascaret/server/src/test/java/org/fudaa/dodico/mascaret/EdamoxXmlReaderWriterTest.java 2014-10-09 21:42:19 UTC (rev 8870)
@@ -83,6 +83,7 @@
*/
public static void testCompare(SParametresCAS cas1, SParametresCAS cas2) {
XStream xstream = new XStream();
+ EdamoxXmlReaderWriter.registerConverters(xstream);
xstream.setMode(XStream.NO_REFERENCES);
// cas2.parametresGen.code=3;
String cas1ToXml = xstream.toXML(cas1);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|