|
From: <de...@us...> - 2012-12-18 23:01:22
|
Revision: 8153
http://fudaa.svn.sourceforge.net/fudaa/?rev=8153&view=rev
Author: deniger
Date: 2012-12-18 23:01:12 +0000 (Tue, 18 Dec 2012)
Log Message:
-----------
Modified Paths:
--------------
trunk/soft/fudaa-crue/crue-emh/src/test/java/org/fudaa/dodico/crue/metier/helper/ToStringTest.java
trunk/soft/fudaa-crue/crue-io/src/main/java/org/fudaa/dodico/crue/io/neuf/STRReader.java
trunk/soft/fudaa-crue/crue-io/src/main/java/org/fudaa/dodico/crue/io/neuf/STRSequentialReader.java
trunk/soft/fudaa-crue/crue-io/src/test/java/files/FilesForTest.java
trunk/soft/fudaa-crue/crue-io/src/test/java/org/fudaa/dodico/crue/io/neuf/CrueSTRTest.java
Added Paths:
-----------
trunk/soft/fudaa-crue/crue-io/src/test/resources/Etu30Branche6/M3-0_c9.STO_lin
trunk/soft/fudaa-crue/crue-io/src/test/resources/Etu30Branche6/M3-0_c9.STR_lin
trunk/soft/fudaa-crue/crue-io/src/test/resources/etu50/M5-0_c9c9.STO_lin
trunk/soft/fudaa-crue/crue-io/src/test/resources/etu50/M5-0_c9c9.STR_lin
Modified: trunk/soft/fudaa-crue/crue-emh/src/test/java/org/fudaa/dodico/crue/metier/helper/ToStringTest.java
===================================================================
--- trunk/soft/fudaa-crue/crue-emh/src/test/java/org/fudaa/dodico/crue/metier/helper/ToStringTest.java 2012-12-18 15:42:54 UTC (rev 8152)
+++ trunk/soft/fudaa-crue/crue-emh/src/test/java/org/fudaa/dodico/crue/metier/helper/ToStringTest.java 2012-12-18 23:01:12 UTC (rev 8153)
@@ -22,7 +22,7 @@
CrueConfigMetier def = CrueConfigMetierLoaderDefaultTest.DEFAULT;
ToStringTransformer create = ToStringTransfomerFactory.create(def,DecimalFormatEpsilonEnum.PRESENTATION);
ParamNumCalcPseudoPerm pseudo = new ParamNumCalcPseudoPerm(def);
- assertEquals("ParamNumCalcPseudoPerm [coefRelaxQ=1.00000, coefRelaxZ=1.00000, crMaxFlu=1.0E30, crMaxTor=1.0E30, nbrPdtDecoup=1, nbrPdtMax=40, pdt=Cst: 3600.000 s, tolMaxQ=0.01000, tolMaxZ=0.0010000]", create.transform(pseudo));
+ assertEquals("ParamNumCalcPseudoPerm [coefRelaxQ=1, coefRelaxZ=1, crMaxFlu=1.0E30, crMaxTor=1.0E30, nbrPdtDecoup=1, nbrPdtMax=40, pdt=Cst: 3600 s, tolMaxQ=0.01, tolMaxZ=0.001]", create.transform(pseudo));
}
}
Modified: trunk/soft/fudaa-crue/crue-io/src/main/java/org/fudaa/dodico/crue/io/neuf/STRReader.java
===================================================================
--- trunk/soft/fudaa-crue/crue-io/src/main/java/org/fudaa/dodico/crue/io/neuf/STRReader.java 2012-12-18 15:42:54 UTC (rev 8152)
+++ trunk/soft/fudaa-crue/crue-io/src/main/java/org/fudaa/dodico/crue/io/neuf/STRReader.java 2012-12-18 23:01:12 UTC (rev 8153)
@@ -44,12 +44,27 @@
// 49 + 2*Npo + (17 + 2*NbStr)*NbLitMax + 9*NbHaut
int longueurEnregistrement = 49 + 2 * data.npo + (17 + 2 * data.nbStr) * data.nbLitMax + 9 * data.nbHaut;
longueurEnregistrement = longueurEnregistrement * 4;
- final int longueurEnregistrementSTO = sto.getLReclProf() * 4;
+ // 37 + (7+TAILLE_STRI)*NBLITMAX + 2*NPO + 2*(2*NBLITMAX) + 12 + 9*NBHAUT + 4 + 12*NBHAUT)
+ int longueurEnregistrement2 = 37 + (7+ (8+2*(data.nbStr)) )*data.nbLitMax + 2*data.npo + 2*(2*data.nbLitMax) + 12 + 9*data.nbHaut + 4 + 12*data.nbHaut;
+ longueurEnregistrement2 = longueurEnregistrement2 * 4;
- if (longueurEnregistrement != longueurEnregistrementSTO) {
+ final int longueurEnregistrementSTO = sto.getLReclProf();
+
+ if (longueurEnregistrement == (longueurEnregistrementSTO)) {
+ //Format fortran non standard (intel) non windows
+ data.setFormatFortranStandard(false);
+ data.longueurEnregistrement = longueurEnregistrementSTO;
+ } else if (longueurEnregistrement == (longueurEnregistrementSTO*4)) {
+ //Format fortran non standard (intel) windows
+ data.setFormatFortranStandard(false);
+ data.longueurEnregistrement = longueurEnregistrementSTO * 4;
+ } else if (longueurEnregistrement2 == longueurEnregistrementSTO) {
+ //Format fortran standard (gcc)
+ data.setFormatFortranStandard(true);
+ data.longueurEnregistrement = longueurEnregistrementSTO;
+ } else {
analyze_.addWarn("io.str.lg.enreg.diff.error");
}
- data.longueurEnregistrement = longueurEnregistrementSTO;
final int nbProfil = (int) (helper.getChannel().size() / data.longueurEnregistrement);
final int nbProfilStoRes = sto.getNbRecProf();
Modified: trunk/soft/fudaa-crue/crue-io/src/main/java/org/fudaa/dodico/crue/io/neuf/STRSequentialReader.java
===================================================================
--- trunk/soft/fudaa-crue/crue-io/src/main/java/org/fudaa/dodico/crue/io/neuf/STRSequentialReader.java 2012-12-18 15:42:54 UTC (rev 8152)
+++ trunk/soft/fudaa-crue/crue-io/src/main/java/org/fudaa/dodico/crue/io/neuf/STRSequentialReader.java 2012-12-18 23:01:12 UTC (rev 8153)
@@ -37,6 +37,7 @@
private static final String TYPE_LIMITE_LIT_J = "LIMITEJ";
private static final String TYPE_LIMITE_LIT_X = "LIMITEX";
protected ByteOrder byteOrder;
+ protected boolean formatFortranStandard = false;
/**
* Permet d'avoir la correspondance entre le nom du profil et sa position dans le STR. Rempli par StrReader. Le nom est le nom dans le str et non le
* nom crue 10 avec les prefixes.
@@ -57,6 +58,10 @@
this.ccm = ccm;
}
+ public void setFormatFortranStandard(boolean formatFortranStandard) {
+ this.formatFortranStandard = formatFortranStandard;
+ }
+
/**
* @return le nombre de profil lu.
*/
@@ -156,7 +161,7 @@
cache.put(nomProfilCrue9, res);
}
Crue9ResPrtGeoSection resultat = res.getResultat();
- return new ResPrtGeo(resultat.getValues(), resultat.getNom(),true);
+ return new ResPrtGeo(resultat.getValues(), resultat.getNom(), true);
}
@@ -315,23 +320,58 @@
donneesSection.setTypeLimLit(typeLimLit);
DonneesLimites limites = null;
- if (TYPE_LIMITE_LIT_J.equals(typeLimLit)) {
- limites = getDonneesLimiteJ(bf, nbLit);
- } else if (TYPE_LIMITE_LIT_X.equals(typeLimLit)) {
- limites = getDonneesLimiteX(bf, nbLit);
+ if (this.formatFortranStandard) {
+ //En fortran standard : il faut lire les 2, mais ne garder que la bonne
+ if (TYPE_LIMITE_LIT_J.equals(typeLimLit)) {
+ limites = getDonneesLimiteJ(bf, nbLit);
+ /**
+ * DonneesLimites limitesBidon = *
+ */
+ getDonneesLimiteX(bf, nbLit);
+ } else if (TYPE_LIMITE_LIT_X.equals(typeLimLit)) {
+ /**
+ * DonneesLimites limitesBidon = *
+ */
+ getDonneesLimiteJ(bf, nbLit);
+ limites = getDonneesLimiteX(bf, nbLit);
+ } else {
+ // sinon, on saute la partie concernant les limites des lits
+ // soit 2 fois la lecture de nbLitMax float.
+ skip(bf, 4 * (4 * nbLitMax));
+ }
} else {
- // sinon, on saute la partie concernant les limites des lits
- // soit 2 fois la lecture de nbLitMax float.
- skip(bf, 2 * (4 * nbLitMax));
+ if (TYPE_LIMITE_LIT_J.equals(typeLimLit)) {
+ limites = getDonneesLimiteJ(bf, nbLit);
+ } else if (TYPE_LIMITE_LIT_X.equals(typeLimLit)) {
+ limites = getDonneesLimiteX(bf, nbLit);
+ } else {
+ // sinon, on saute la partie concernant les limites des lits
+ // soit 2 fois la lecture de nbLitMax float. X 2
+// skip(bf, 4 * (4 * nbLitMax));
+ //Fred bizarre dans le code c'est 2*
+ skip(bf, 2 * (4 * nbLitMax));
+ }
}
donneesSection.setDonneesLimites(limites);
DonneesSectionPourBranche donneesBranche = null;
- // cas particulier des branche 9.
- if (isTypeBrancheOld) {
- donneesBranche = getBranche0Ou9(bf);
+ if (this.formatFortranStandard) {
+ //En fortran standard : il faut lire les 2, mais ne garder que la bonne
+ // cas particulier des branche 9.
+ if (isTypeBrancheOld) {
+ donneesBranche = getBranche0Ou9(bf);
+ DonneesSectionPourBranche donneesBrancheBidon = getAutreBranche(bf, nbLit);
+ } else {
+ DonneesSectionPourBranche donneesBrancheBidon = getBranche0Ou9(bf);
+ donneesBranche = getAutreBranche(bf, nbLit);
+ }
} else {
- donneesBranche = getAutreBranche(bf, nbLit);
+ // cas particulier des branche 9.
+ if (isTypeBrancheOld) {
+ donneesBranche = getBranche0Ou9(bf);
+ } else {
+ donneesBranche = getAutreBranche(bf, nbLit);
+ }
}
donneesSection.setDonneesPourBranche(donneesBranche);
// On enregistre la valeur du nombre de pas de hauteur par section car cela permettra de calculer la liste des
Modified: trunk/soft/fudaa-crue/crue-io/src/test/java/files/FilesForTest.java
===================================================================
--- trunk/soft/fudaa-crue/crue-io/src/test/java/files/FilesForTest.java 2012-12-18 15:42:54 UTC (rev 8152)
+++ trunk/soft/fudaa-crue/crue-io/src/test/java/files/FilesForTest.java 2012-12-18 23:01:12 UTC (rev 8153)
@@ -127,8 +127,14 @@
public static final String STO_MODELE30 = "/Etu30/M3-0_C9.STO";
public static final String STO_MODELE50 = "/etu50/M5-0_C9C9.STO";
+ public static final String STO_MODELE50_LINUX = "/etu50/M5-0_c9c9.STO_lin";
+ public static final String STR_MODELE50_LINUX = "/etu50/M5-0_c9c9.STR_lin";
+
public static final String STO_MODELE30_BRANCHE6 = "/Etu30Branche6/M3-0_C9.STO";
public static final String STR_MODELE30_BRANCHE6 = "/Etu30Branche6/M3-0_C9.STR";
+ public static final String STO_MODELE30_BRANCHE6_LINUX = "/Etu30Branche6/M3-0_c9.STO_lin";
+ public static final String STR_MODELE30_BRANCHE6_LINUX = "/Etu30Branche6/M3-0_c9.STR_lin";
+
public static final String STR_MODELE50 = "/etu50/M5-0_C9C9.STR";
public static final String AVCT_LOG_V1_2_SC_M30_C10 = "/v1_2/Sc_M3-0_c10.avct.log";
public static final String ETUDE_XML_FUDAA_CRUE = "/FudaaCrue_Etude.xml";
Modified: trunk/soft/fudaa-crue/crue-io/src/test/java/org/fudaa/dodico/crue/io/neuf/CrueSTRTest.java
===================================================================
--- trunk/soft/fudaa-crue/crue-io/src/test/java/org/fudaa/dodico/crue/io/neuf/CrueSTRTest.java 2012-12-18 15:42:54 UTC (rev 8152)
+++ trunk/soft/fudaa-crue/crue-io/src/test/java/org/fudaa/dodico/crue/io/neuf/CrueSTRTest.java 2012-12-18 23:01:12 UTC (rev 8153)
@@ -5,6 +5,7 @@
import files.FilesForTest;
import gnu.trove.TObjectDoubleHashMap;
+import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.fudaa.ctulu.CtuluLog;
@@ -13,13 +14,9 @@
import org.fudaa.dodico.crue.io.AbstractIOBinaryTestCase;
import org.fudaa.dodico.crue.io.Crue9FileFormatFactory;
import org.fudaa.dodico.crue.io.ReadHelper;
-import org.fudaa.dodico.crue.io.neuf.ResPrtReseauCrue9Adapter;
-import org.fudaa.dodico.crue.io.neuf.STOReader;
-import org.fudaa.dodico.crue.io.neuf.STOSequentialReader;
-import org.fudaa.dodico.crue.io.neuf.STRFactory;
-import org.fudaa.dodico.crue.io.neuf.STRSequentialReader;
import org.fudaa.dodico.crue.metier.CrueData;
import org.fudaa.dodico.crue.metier.emh.LoiFF;
+import org.fudaa.dodico.crue.metier.emh.PtEvolutionFF;
import org.fudaa.dodico.crue.metier.emh.ResPrtGeo;
/**
@@ -57,12 +54,63 @@
Map<String, float[]> zDactForBranche6 = STRFactory.getLoiZDactForBranche6((STOSequentialReader) testRes.data.getSto(), testRes.data);
testZDactForSectionPROFSTR2(zDactForBranche6.get("ST_PROFSTR2"));
testZDactForSectionPROFSTR1(zDactForBranche6.get("ST_PROFSTR1"));
-
+
TObjectDoubleHashMap coefSinuoBySection = STRFactory.getCoefSinuoBySection((STOSequentialReader) testRes.data.getSto(), testRes.data);
assertEquals(1d, coefSinuoBySection.get("ST_PROFSTR1"), 1e-6);
assertEquals(1d, coefSinuoBySection.get("ST_PROFSTR2"), 1e-6);
+
+ ResPrtGeo resultatOnProfil = res.getResultatOnProfil("ST_B1_00050");
+ assertNotNull(resultatOnProfil);
+ LoiFF loi = resultatOnProfil.getLoi("loiZBeta");
+ final List<PtEvolutionFF> loiZBeta = loi.getEvolutionFF().getPtEvolutionFF();
+ assertEquals(51, loiZBeta.size());
+ assertDoubleEquals(1.05, loiZBeta.get(0).getAbscisse());
+ assertDoubleEquals(1, loiZBeta.get(0).getOrdonnee());
+ assertDoubleEquals(6.05, loiZBeta.get(50).getAbscisse());
+ assertDoubleEquals(1.2816799879074097, loiZBeta.get(50).getOrdonnee());
+
}
+ //Tests Fortran non standard
+ public void testLectureSTRModele30_LINUX() {
+ TestRes testRes = testLectureFichierSTR(FilesForTest.STR_MODELE30_BRANCHE6_LINUX, FilesForTest.STO_MODELE30_BRANCHE6_LINUX,
+ "/Etu30Branche6/M3-0_c9.dc", "/Etu30Branche6/M3-0_c9.dh");
+ ResPrtReseauCrue9Adapter res = testRes.res;
+ int nbProf = 25;
+ assertEquals(25, res.getNbResOnProfil());
+ for (int i = 0; i < nbProf; i++) {
+ String profilNom = res.getProfilNom(i);
+ assertFalse(StringUtils.isBlank(profilNom));
+ assertNotNull(res.getResultatOnProfil(profilNom));
+ if ("ST_PROF3AM".equals(profilNom)) {
+ testStProf3AM(res.getResultatOnProfil(profilNom));
+ }
+ if ("ST_PROFSTR1".equals(profilNom)) {
+ testStProfTableauxLength(res.getResultatOnProfil(profilNom), 1);
+ testStProfStr1(res.getResultatOnProfil(profilNom));
+ }
+ }
+ int nbCasier = 2;
+ assertEquals(nbCasier, res.getNbResOnCasier());
+ for (int i = 0; i < nbCasier; i++) {
+ assertFalse(StringUtils.isBlank(res.getCasierNom(i)));
+ }
+ // on remplit les données pour les sections appartenant a des branches de type 6:
+ Map<String, float[]> zDactForBranche6 = STRFactory.getLoiZDactForBranche6((STOSequentialReader) testRes.data.getSto(), testRes.data);
+ testZDactForSectionPROFSTR2_LINUX(zDactForBranche6.get("ST_PROFSTR2"));
+ testZDactForSectionPROFSTR1_LINUX(zDactForBranche6.get("ST_PROFSTR1"));
+
+ ResPrtGeo resultatOnProfil = res.getResultatOnProfil("ST_B1_00050");
+ assertNotNull(resultatOnProfil);
+ LoiFF loi = resultatOnProfil.getLoi("loiZBeta");
+ final List<PtEvolutionFF> loiZBeta = loi.getEvolutionFF().getPtEvolutionFF();
+ assertEquals(51, loiZBeta.size());
+ assertEquals(1.05, loiZBeta.get(0).getAbscisse(),1e-5);//bizarre on trouve 1.0499999
+ assertDoubleEquals(1, loiZBeta.get(0).getOrdonnee());
+ assertDoubleEquals(6.05, loiZBeta.get(50).getAbscisse());
+ assertDoubleEquals(1.2816799879074097, loiZBeta.get(50).getOrdonnee());
+ }
+
private void testStProfStr1(ResPrtGeo resultat) {
LoiFF loi = resultat.getLoi("lstLitTypeLit");
assertNotNull(loi);
@@ -80,6 +128,13 @@
testStProfTableauxLength(resultatOnProfil, 5);
}
+ public void testLectureSTRModele50_LINUX() {
+ TestRes testRes = testLectureFichierSTR(FilesForTest.STR_MODELE50_LINUX, FilesForTest.STO_MODELE50_LINUX, FilesForTest.DC_MODELE50, FilesForTest.DH_MODELE50);
+ ResPrtReseauCrue9Adapter res = testRes.res;
+ ResPrtGeo resultatOnProfil = res.getResultatOnProfil("ST_PROFAV");
+ testStProfTableauxLength(resultatOnProfil, 5);
+ }
+
private static class TestRes {
CrueData data;
@@ -145,9 +200,9 @@
// LstLitSsup
loi = resultat.getLoi("lstLitSsup");
assertDoubleEquals(0, loi.getOrdonnee(0));
- assertDoubleEquals(75.00001, loi.getOrdonnee(1));
+ assertEquals(75.00001, loi.getOrdonnee(1), 1e-4);
assertDoubleEquals(132.0, loi.getOrdonnee(2));
- assertDoubleEquals(75.00001, loi.getOrdonnee(3));
+ assertEquals(75.00001, loi.getOrdonnee(3), 1e-4);
assertDoubleEquals(0, loi.getOrdonnee(4));
// LstLitPsup
loi = resultat.getLoi("lstLitPsup");
@@ -198,12 +253,17 @@
}
protected void testZDactForSectionPROFSTR2(float[] values) {
- //
assertEquals(4.833968, values[0], 1e-4);
assertEquals(15.333833, values[1], 1e-4);
assertEquals(3048.2847, values[values.length - 2], 1e-4);
assertEquals(3150.1428, values[values.length - 1], 1e-4);
+ }
+ protected void testZDactForSectionPROFSTR2_LINUX(float[] values) {
+ assertEquals(4.833968, values[0], 1e-4);
+ assertEquals(15.333833, values[1], 1e-4);
+ assertEquals(3048.2847, values[values.length - 2], 1e-4);
+ assertEquals(3150.1421, values[values.length - 1], 1e-4);
}
protected void testZDactForSectionPROFSTR1(float[] values) {
@@ -211,6 +271,12 @@
assertEquals(9.497381, values[1], 1e-4);
assertEquals(1906.0226, values[values.length - 2], 1e-4);
assertEquals(1970.089, values[values.length - 1], 1e-4);
+ }
+ protected void testZDactForSectionPROFSTR1_LINUX(float[] values) {
+ assertEquals(2.9933994, values[0], 1e-4);
+ assertEquals(9.497381, values[1], 1e-4);
+ assertEquals(1906.0227, values[values.length - 2], 1e-4);
+ assertEquals(1970.0892, values[values.length - 1], 1e-4);
}
}
Added: trunk/soft/fudaa-crue/crue-io/src/test/resources/Etu30Branche6/M3-0_c9.STO_lin
===================================================================
(Binary files differ)
Property changes on: trunk/soft/fudaa-crue/crue-io/src/test/resources/Etu30Branche6/M3-0_c9.STO_lin
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/soft/fudaa-crue/crue-io/src/test/resources/Etu30Branche6/M3-0_c9.STR_lin
===================================================================
(Binary files differ)
Property changes on: trunk/soft/fudaa-crue/crue-io/src/test/resources/Etu30Branche6/M3-0_c9.STR_lin
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/soft/fudaa-crue/crue-io/src/test/resources/etu50/M5-0_c9c9.STO_lin
===================================================================
(Binary files differ)
Property changes on: trunk/soft/fudaa-crue/crue-io/src/test/resources/etu50/M5-0_c9c9.STO_lin
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/soft/fudaa-crue/crue-io/src/test/resources/etu50/M5-0_c9c9.STR_lin
===================================================================
(Binary files differ)
Property changes on: trunk/soft/fudaa-crue/crue-io/src/test/resources/etu50/M5-0_c9c9.STR_lin
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|