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. |