|
From: <de...@us...> - 2012-12-18 11:28:03
|
Revision: 8149
http://fudaa.svn.sourceforge.net/fudaa/?rev=8149&view=rev
Author: deniger
Date: 2012-12-18 11:27:56 +0000 (Tue, 18 Dec 2012)
Log Message:
-----------
Modified Paths:
--------------
trunk/business/fudaa-ef/core/src/main/resources/org/fudaa/dodico/ef/resource/ef_en.fr_txt
trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/common/AbstractTriangulationPolyData.java
trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/common/TriangulationPolyDataDefault.java
trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/common/TriangulationUniqueDataContentBuilder.java
trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/mesh/MeshFormatHelper.java
trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/supertab/SuperTabReader.java
trunk/business/fudaa-ef/io/src/test/java/org/fudaa/dodico/ef/io/mesh/TestMeshReader.java
trunk/business/fudaa-ef/io/src/test/java/org/fudaa/dodico/ef/io/triangle/TriangleEleReaderTest.java
Added Paths:
-----------
trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/common/TriangulationPolyDataConvexHullAdapter.java
trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/gmsh/
trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/gmsh/GmshGeoWriter.java
trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/triangle/TriangulationPolyDataNodeDefault.java
Removed Paths:
-------------
trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/triangle/TrianglePolyDataNodeDefault.java
Modified: trunk/business/fudaa-ef/core/src/main/resources/org/fudaa/dodico/ef/resource/ef_en.fr_txt
===================================================================
--- trunk/business/fudaa-ef/core/src/main/resources/org/fudaa/dodico/ef/resource/ef_en.fr_txt 2012-12-18 10:56:37 UTC (rev 8148)
+++ trunk/business/fudaa-ef/core/src/main/resources/org/fudaa/dodico/ef/resource/ef_en.fr_txt 2012-12-18 11:27:56 UTC (rev 8149)
@@ -50,4 +50,5 @@
Cr\xE9ation des noeuds=Creating nodes
Cr\xE9ation des \xE9l\xE9ments=Creating meshes
L'\xE9l\xE9ment {0} contient des indices de noeuds erron\xE9s=The mesh {0} contains bad nodes indexes
-Le noeud {0} n'est pas utilis\xE9=The node {0} is not used
\ No newline at end of file
+Le noeud {0} n'est pas utilis\xE9=The node {0} is not used
+Une seule enveloppe externe doit \xEAtre d\xE9finie=Only one convex hull must be defined
\ No newline at end of file
Modified: trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/common/AbstractTriangulationPolyData.java
===================================================================
--- trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/common/AbstractTriangulationPolyData.java 2012-12-18 10:56:37 UTC (rev 8148)
+++ trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/common/AbstractTriangulationPolyData.java 2012-12-18 11:27:56 UTC (rev 8149)
@@ -31,7 +31,6 @@
this.rings = rings;
}
- @Override
public int getNbAttributes() {
return useZAsAttribute ? 1 : 0;
}
@@ -51,7 +50,6 @@
return holes[idxPoly];
}
- @Override
public double getPolyAttributes(int idxPoly, int idxPtInPoly, int idxAtt) {
return getPoly(idxPoly).getCoordinateSequence().getCoordinate(idxPtInPoly).z;
}
Copied: trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/common/TriangulationPolyDataConvexHullAdapter.java (from rev 8141, trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/common/TriangulationPolyDataDefault.java)
===================================================================
--- trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/common/TriangulationPolyDataConvexHullAdapter.java (rev 0)
+++ trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/common/TriangulationPolyDataConvexHullAdapter.java 2012-12-18 11:27:56 UTC (rev 8149)
@@ -0,0 +1,58 @@
+/*
+ GPL 2
+ */
+package org.fudaa.dodico.ef.io.common;
+
+import com.vividsolutions.jts.geom.LinearRing;
+
+/**
+ * une impl\xE9ementation par defaut avec les z comme attributs.
+ *
+ * @author Frederic Deniger
+ */
+public class TriangulationPolyDataConvexHullAdapter extends AbstractTriangulationPolyData {
+
+ private final TriangulationPolyDataInterface init;
+ private final LinearRing convexHull;
+
+ public TriangulationPolyDataConvexHullAdapter(TriangulationPolyDataInterface init, LinearRing convexHull) {
+ this.init = init;
+ this.convexHull = convexHull;
+ }
+
+ @Override
+ public int getNbPoints() {
+ return init.getNbPoints();
+ }
+
+ @Override
+ public double getPtX(int idxPt) {
+ return init.getPtX(idxPt);
+ }
+
+ @Override
+ public double getPtY(int idxPt) {
+ return init.getPtY(idxPt);
+ }
+
+ @Override
+ public int getNbPoly() {
+ return init.getNbPoly() + 1;
+ }
+
+ @Override
+ public LinearRing getPoly(int idxPoly) {
+ if (idxPoly == 0) {
+ return convexHull;
+ }
+ return init.getPoly(idxPoly - 1);
+ }
+
+ @Override
+ public boolean isHole(int idxPoly) {
+ if (idxPoly == 0) {
+ return false;
+ }
+ return init.isHole(idxPoly - 1);
+ }
+}
Modified: trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/common/TriangulationPolyDataDefault.java
===================================================================
--- trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/common/TriangulationPolyDataDefault.java 2012-12-18 10:56:37 UTC (rev 8148)
+++ trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/common/TriangulationPolyDataDefault.java 2012-12-18 11:27:56 UTC (rev 8149)
@@ -36,7 +36,6 @@
return coordinates[idxPt].y;
}
- @Override
public double getPtAttributes(int idxPt, int idxAtt) {
return coordinates[idxPt].z;
}
Modified: trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/common/TriangulationUniqueDataContentBuilder.java
===================================================================
--- trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/common/TriangulationUniqueDataContentBuilder.java 2012-12-18 10:56:37 UTC (rev 8148)
+++ trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/common/TriangulationUniqueDataContentBuilder.java 2012-12-18 11:27:56 UTC (rev 8149)
@@ -18,20 +18,20 @@
* @author Frederic Deniger
*/
public class TriangulationUniqueDataContentBuilder {
-
+
TriangulationPolyDataInterface in;
CoordinateComparator coordinateComparator;
-
+
public TriangulationUniqueDataContentBuilder(TriangulationPolyDataInterface in) {
this.in = in;
coordinateComparator = new CoordinateComparator();
}
-
+
public TriangulationUniqueDataContentBuilder(TriangulationPolyDataInterface in, double eps) {
this.in = in;
coordinateComparator = new CoordinateComparator(eps);
}
-
+
public TriangulationUniqueDataContent build(ProgressionInterface prog) {
List<Coordinate> ptCoordinate = new ArrayList<Coordinate>();
TIntArrayList linearRingContainingPoint = new TIntArrayList();
@@ -40,12 +40,17 @@
final int nbPoly = in.getNbPoly();
ProgressionUpdater updater = new ProgressionUpdater();
updater.setValue(10, nb + nbPoly);
+ int idxPtAdded = 0;
for (int i = 0; i < nb; i++) {
final Coordinate coordinate = new Coordinate(in.getPtX(i), in.getPtY(i));
- //point interne:
- linearRingContainingPoint.add(-1);
- ptCoordinate.add(coordinate);
- idxByCoordinate.put(coordinate, i);
+ if (!idxByCoordinate.containsKey(coordinate)) {
+ ptCoordinate.add(coordinate);
+ //point interne:
+ linearRingContainingPoint.add(-1);
+ idxByCoordinate.put(coordinate, idxPtAdded++);
+ } else {
+ System.err.println("yes evite");
+ }
updater.majAvancement();
}
int[][] idx = new int[nbPoly][];
@@ -68,6 +73,6 @@
}
updater.majAvancement();
}
- return new TriangulationUniqueDataContent(ptCoordinate,linearRingContainingPoint.toNativeArray(), idx);
+ return new TriangulationUniqueDataContent(ptCoordinate, linearRingContainingPoint.toNativeArray(), idx);
}
}
Copied: trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/gmsh/GmshGeoWriter.java (from rev 8141, trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/triangle/TrianglePolyWriter.java)
===================================================================
--- trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/gmsh/GmshGeoWriter.java (rev 0)
+++ trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/gmsh/GmshGeoWriter.java 2012-12-18 11:27:56 UTC (rev 8149)
@@ -0,0 +1,233 @@
+/*
+ GPL 2
+ */
+package org.fudaa.dodico.ef.io.gmsh;
+
+import com.vividsolutions.jts.algorithm.ConvexHull;
+import com.vividsolutions.jts.geom.Coordinate;
+import org.fudaa.dodico.ef.io.triangle.*;
+import org.fudaa.dodico.ef.io.common.TriangulationPolyDataInterface;
+import com.vividsolutions.jts.geom.LinearRing;
+import com.vividsolutions.jts.geom.Polygon;
+import gnu.trove.TIntArrayList;
+import gnu.trove.TIntHashSet;
+import java.io.IOException;
+import java.text.DecimalFormat;
+import java.util.TreeSet;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.fudaa.ctulu.CtuluLib;
+import org.fudaa.ctulu.ProgressionUpdater;
+import org.fudaa.ctulu.gis.GISGeometryFactory;
+import org.fudaa.ctulu.gis.comparator.CoordinateComparator;
+import org.fudaa.dodico.commun.DodicoLib;
+import org.fudaa.dodico.ef.io.EfIOResource;
+import org.fudaa.dodico.ef.io.common.TriangulationPolyDataConvexHullAdapter;
+import org.fudaa.dodico.ef.io.common.TriangulationUniqueDataContent;
+import org.fudaa.dodico.ef.io.common.TriangulationUniqueDataContentBuilder;
+import org.fudaa.dodico.fortran.FileOpWriterCharSimpleAbstract;
+
+/**
+ * Permet d'\xE9crire un fichier d'entr\xE9e pour GMSH. Par contre, le mailleur ne semble pas extr\xEAmenent robuste.
+ * Lors de l'\xE9criture du fichier geo, on teste qu'il y ait au plus un polygone externe. Si plus erreur. si 0, on cr\xE9e l'enveloppe convexe.
+ * http://geuz.org/gmsh/doc/texinfo/gmsh.html La pr\xE9cision par d\xE9faut est tres grande. Pour la modifier, il faut appeler setPrec(): setPrec(1) par
+ * exemple. Voir la doc de gmsh pour plus d'information.
+ *
+ * @author Frederic Deniger
+ */
+public class GmshGeoWriter extends FileOpWriterCharSimpleAbstract {
+
+ @Override
+ protected void internalWrite(final Object _o) {
+ if (_o instanceof TriangulationPolyDataInterface) {
+ try {
+ writePoly((TriangulationPolyDataInterface) _o);
+ } catch (IOException ex) {
+ Logger.getLogger(TrianglePolyWriter.class.getName()).log(Level.SEVERE, null, ex);
+ analyze_.manageException(ex);
+ }
+ } else {
+ analyze_.addFatalError(DodicoLib.getS("Donn\xE9es invalides"));
+ }
+ }
+ /**
+ * Voir http://geuz.org/gmsh/doc/texinfo/gmsh.html.
+ */
+ private String prec = "4";//pr\xE9cision trop grande pour les maillages...
+// private String prec = "1";
+
+ public void setPrec(String prec) {
+ this.prec = prec;
+ }
+
+ private void writePoly(TriangulationPolyDataInterface initData) throws IOException {
+ TriangulationPolyDataInterface data = initData;
+ if (data == null) {
+ analyze_.addFatalError(EfIOResource.getS("Les donn\xE9es sont nulles"));
+ return;
+ }
+ if (out_ == null) {
+ analyze_.addFatalError(DodicoLib.getS("Le flux de sortie est nul"));
+ return;
+ }
+ int nbExtern = 0;
+ int nbPoly = data.getNbPoly();
+ for (int i = 0; i < nbPoly; i++) {
+ if (!data.isHole(i)) {
+ nbExtern++;
+ }
+ }
+ if (nbExtern > 1) {
+ analyze_.addFatalError(EfIOResource.getS("Une seule enveloppe externe doit \xEAtre d\xE9finie"));
+ }
+ if (nbExtern == 0) {
+ TreeSet<Coordinate> cs = new TreeSet<Coordinate>(new CoordinateComparator());
+ for (int idxPoint = 0; idxPoint < data.getNbPoints(); idxPoint++) {
+ cs.add(new Coordinate(data.getPtX(idxPoint), data.getPtY(idxPoint)));
+ }
+ for (int idxPoly = 0; idxPoly < data.getNbPoly(); idxPoly++) {
+ LinearRing poly = data.getPoly(idxPoly);
+ for (int idxPt = 0; idxPt < poly.getNumPoints(); idxPt++) {
+ cs.add(new Coordinate(poly.getCoordinateN(idxPt)));
+ }
+ }
+ Coordinate[] coordinates = (Coordinate[]) cs.toArray(new Coordinate[cs.size()]);
+ ConvexHull convexHull = new ConvexHull(coordinates, GISGeometryFactory.INSTANCE);
+ Object o = convexHull.getConvexHull();
+ if (o instanceof Polygon) {
+ o = ((Polygon) o).getExteriorRing();
+ }
+ data = new TriangulationPolyDataConvexHullAdapter(data, (LinearRing) o);
+
+ }
+ nbPoly = data.getNbPoly();
+ TriangulationUniqueDataContentBuilder builder = new TriangulationUniqueDataContentBuilder(data);
+ TriangulationUniqueDataContent content = builder.build(progress_);
+
+ int nbPointsTotal = content.getNbPoints();
+ ProgressionUpdater updater = new ProgressionUpdater(progress_);
+ updater.setValue(10, nbPointsTotal);
+ updater.majProgessionStateOnly(EfIOResource.getS("Ecriture des points"));
+
+ //ensuite
+ //Point(1) = {0.75, -0.36, 0, 1.0};
+ //contient les points non inclus dans les lignes
+ TIntHashSet pointInSurface = new TIntHashSet();
+ DecimalFormat fmt = CtuluLib.getDecimalFormat(3);
+ for (int i = 0; i < nbPointsTotal; i++) {
+ writeString("Point(");
+ writeInt(i + 1);
+ pointInSurface.add(i + 1);
+ writeString(") = {");
+ writeString(fmt.format(content.getX(i)));
+ writeString(",");
+ writeString(fmt.format(content.getY(i)));
+ writeString(", 0, ");
+ writeString(prec);
+ writeString("};");
+ writelnToOut();
+ updater.majAvancement();
+ }
+ int nbSegment = 0;
+ for (int idxPoly = 0; idxPoly < nbPoly; idxPoly++) {
+ LinearRing poly = data.getPoly(idxPoly);
+ //premier point = dernier point donc -1
+ int numPoints = poly.getNumPoints() - 1;
+ nbSegment = nbSegment + numPoints;
+ }
+ //One line: <# of segments> <# of boundary markers (0 or 1)>
+ //calcul du nombre de segment.
+ updater.setValue(10, nbSegment);
+ updater.majProgessionStateOnly(EfIOResource.getS("Ecriture des segments"));
+ //Line(1) = {22, 21};
+ int globalIdxSeg = 1;
+ //contient les indices des lignes par surfaces
+ TIntArrayList[] segmentBySurface = new TIntArrayList[nbPoly];
+ for (int idxPoly = 0; idxPoly < nbPoly; idxPoly++) {
+ segmentBySurface[idxPoly] = new TIntArrayList();
+ LinearRing poly = data.getPoly(idxPoly);
+ int numPoints = poly.getNumPoints() - 2;//le dernier segment est \xE9crit apr\xE8s
+ for (int idxPt = 0; idxPt < numPoints; idxPt++) {
+ writeString("Line(");
+ segmentBySurface[idxPoly].add(globalIdxSeg);
+ writeInt(globalIdxSeg++);
+ writeString(") = {");
+ final int idxVertex = content.getPtIdxFor(idxPoly, idxPt) + 1;
+ writeInt(idxVertex);
+ writeString(",");
+ final int idxVertexNext = content.getPtIdxFor(idxPoly, idxPt + 1) + 1;
+ pointInSurface.remove(idxVertex);
+ pointInSurface.remove(idxVertexNext);
+ writeInt(idxVertexNext);
+ writeString("};");
+ writelnToOut();
+ updater.majAvancement();
+ }
+ //le segment fermant
+ writeString("Line(");
+ segmentBySurface[idxPoly].add(globalIdxSeg);
+ writeInt(globalIdxSeg++);
+ writeString(") = {");
+ final int idxVertex = content.getPtIdxFor(idxPoly, numPoints) + 1;
+ writeInt(idxVertex);
+ writeString(",");
+ final int idxVertexNext = content.getPtIdxFor(idxPoly, 0) + 1;
+ writeInt(idxVertexNext);
+ pointInSurface.remove(idxVertex);
+ pointInSurface.remove(idxVertexNext);
+ writeString("};");
+ writelnToOut();
+ updater.majAvancement();
+ }
+ int idxLineExterne = -1;
+// Line Loop(19) = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 1};
+ int firstLineLoopIdx = globalIdxSeg;
+ for (int idxPoly = 0; idxPoly < nbPoly; idxPoly++) {
+ if (!data.isHole(idxPoly)) {
+ idxLineExterne = globalIdxSeg;
+ }
+ final TIntArrayList lineLoop = segmentBySurface[idxPoly];
+ writeString("Line Loop(");
+ writeInt(globalIdxSeg++);
+ writeString(") = {");
+ for (int segIdx = 0; segIdx < lineLoop.size(); segIdx++) {
+ if (segIdx > 0) {
+ writeString(", ");
+ }
+ writeInt(lineLoop.get(segIdx));
+ }
+ writeString("};");
+ writelnToOut();
+ }
+ //Plane Surface(21) = {19, 20};
+ writeString("Plane Surface(");
+ writeInt(globalIdxSeg++);
+ writeString(") = {");
+ //la surface externe
+ writeInt(idxLineExterne);
+ //les trous
+ if (nbPoly > 1) {
+ for (int idxLoop = firstLineLoopIdx; idxLoop < globalIdxSeg; idxLoop++) {
+ if (idxLoop != idxLineExterne) {
+ writeString(", ");
+ writeInt(idxLoop);
+ }
+ }
+ }
+ writeString("};");
+ writelnToOut();
+//Point{2, 3...., 18} In Surface{21};
+ writeString("Point{");
+ int[] toArray = pointInSurface.toArray();
+ int size = toArray.length;
+ for (int idxPt = 0; idxPt < size; idxPt++) {
+ if (idxPt > 0) {
+ writeString(", ");
+ }
+ writeInt(toArray[idxPt]);
+ }
+ writeString("} In Surface{");
+ writeInt(globalIdxSeg - 1);
+ writeString("};");
+ }
+}
Modified: trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/mesh/MeshFormatHelper.java
===================================================================
--- trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/mesh/MeshFormatHelper.java 2012-12-18 10:56:37 UTC (rev 8148)
+++ trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/mesh/MeshFormatHelper.java 2012-12-18 11:27:56 UTC (rev 8149)
@@ -1,8 +1,6 @@
package org.fudaa.dodico.ef.io.mesh;
-import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collection;
import java.util.Collections;
import java.util.List;
Modified: trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/supertab/SuperTabReader.java
===================================================================
--- trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/supertab/SuperTabReader.java 2012-12-18 10:56:37 UTC (rev 8148)
+++ trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/supertab/SuperTabReader.java 2012-12-18 11:27:56 UTC (rev 8149)
@@ -20,6 +20,7 @@
* public enum SuperTabFormat { SUPERTAB_V4, SUPERTAB_V6, }
*/
// private final static int TITLE_SEC = 151;
+
private final static int NODES_SIMPLE_PREC_SEC = 15;
private final static int NODES_DOUBLE_PREC_SEC_V4 = 0;// A enlever je pense
private final static int NODES_DOUBLE_PREC = 2411;// d'apr\xE8s exemple donne
@@ -28,7 +29,8 @@
private final static int ELEMENTS_SEC_V4 = 71;
private final static int ELEMENTS_SEC_V6 = 780;
- public SuperTabReader() {}
+ public SuperTabReader() {
+ }
@Override
protected Object internalRead() {
@@ -57,35 +59,35 @@
sector = this.searchNextSector();
switch (sector) {
- /*
- * case TITLE_SEC : { title = this.readTitle();
- *
- * titleRead = true;
- *
- * break; }
- */
+ /*
+ * case TITLE_SEC : { title = this.readTitle();
+ *
+ * titleRead = true;
+ *
+ * break; }
+ */
- case NODES_SIMPLE_PREC_SEC:
- case NODES_DOUBLE_PREC_SEC_V4:
- case NODES_DOUBLE_PREC_SEC_V6: {
- this.readNodes(nodes, boundaryCond);
- nodesRead = true;
- break;
- }
- case NODES_DOUBLE_PREC: {
- this.readNodesDoublePrec(nodes, boundaryCond);
- nodesRead = true;
- break;
- }
- case ELEMENTS_SEC_DOUBLLE_PREC:
- case ELEMENTS_SEC_V4:
- case ELEMENTS_SEC_V6: {
- type = this.readElements(elements);
- elementsRead = true;
+ case NODES_SIMPLE_PREC_SEC:
+ case NODES_DOUBLE_PREC_SEC_V4:
+ case NODES_DOUBLE_PREC_SEC_V6: {
+ this.readNodes(nodes, boundaryCond);
+ nodesRead = true;
+ break;
+ }
+ case NODES_DOUBLE_PREC: {
+ this.readNodesDoublePrec(nodes, boundaryCond);
+ nodesRead = true;
+ break;
+ }
+ case ELEMENTS_SEC_DOUBLLE_PREC:
+ case ELEMENTS_SEC_V4:
+ case ELEMENTS_SEC_V6: {
+ type = this.readElements(elements);
+ elementsRead = true;
- break;
+ break;
+ }
}
- }
}
} catch (final EOFException eOFException) {
@@ -103,7 +105,7 @@
// EfLib.orienteGrid(grid, progress_, true, analyze_);
return new EfGridSourceDefaut(grid, SuperTabFileFormat.getInstance(), boundaryCond
- .toArray(new ConditionLimiteEnum[boundaryCond.size()]));
+ .toArray(new ConditionLimiteEnum[boundaryCond.size()]));
}
return null;
@@ -111,7 +113,7 @@
/**
* Recherche le num\xE9ro du prochain secteur.
- *
+ *
* @return le num\xE9ro du prochain secteur.
* @throws IOException
*/
@@ -130,7 +132,7 @@
/**
* Recherche le d\xE9but du prochain secteur.
- *
+ *
* @throws IOException
*/
private void searchBeginSector() throws IOException {
@@ -145,13 +147,14 @@
sector = Integer.parseInt(in_.stringField(0));
isIntField = true;
- } catch (Exception e) {}
+ } catch (Exception e) {
+ }
}
}
/**
* Donne le type d'\xE9l\xE9ments pour la grille.
- *
+ *
* @param currentType le type trouv\xE9 actuellement.
* @param nbPts le nombre de points de l'\xE9l\xE9ment test\xE9.
* @return le type d'\xE9l\xE9ments pour la grille.
@@ -164,16 +167,18 @@
} else if (currentType.equals(type)) {
return type;
} else if ((currentType.equals(EfElementType.T3_Q4) && (type.equals(EfElementType.T3) || type
- .equals(EfElementType.Q4)))
- || (currentType.equals(EfElementType.Q4) && type.equals(EfElementType.T3))
- || (currentType.equals(EfElementType.T3) && type.equals(EfElementType.Q4))) { return EfElementType.T3_Q4; }
+ .equals(EfElementType.Q4)))
+ || (currentType.equals(EfElementType.Q4) && type.equals(EfElementType.T3))
+ || (currentType.equals(EfElementType.T3) && type.equals(EfElementType.Q4))) {
+ return EfElementType.T3_Q4;
+ }
return null;
}
/**
* Lit les \xE9l\xE9ments dans le fichier et retourne le type d'\xE9l\xE9ments pour la grille.
- *
+ *
* @param elements la liste des \xE9l\xE9ments.
* @return le type d'\xE9l\xE9ments pour la grille
* @throws IOException
@@ -184,6 +189,15 @@
in_.readFields();
int sector = in_.intField(0);
+ int typeEle = in_.intField(5);
+ //on ignore les segments \xE9ventuels
+ while (typeEle == 2 && sector != -1) {
+ in_.readFields();
+ in_.readFields();
+ in_.readFields();
+ sector = in_.intField(0);
+ typeEle = in_.intField(5);
+ }
while (sector != -1) {
in_.readFields();
@@ -214,7 +228,7 @@
/**
* Lit les points dans le fichier.
- *
+ *
* @param nodes la liste des points.
* @param boundaryCondtion la liste des conditions limites.
* @throws IOException
@@ -238,7 +252,7 @@
/**
* En fortran, les doubles pr\xE9cision sont ecrit avec un D a la place du E
- *
+ *
* @param i l'indice de la colonne a lire
* @return le double lu
*/
@@ -248,7 +262,7 @@
/**
* Lit les points dans le fichier.
- *
+ *
* @param nodes la liste des points.
* @param boundaryCondtion la liste des conditions limites.
* @throws IOException
@@ -274,7 +288,7 @@
/**
* Lit et retourne le titre du fichier.
- *
+ *
* @return le titre du fichier.
* @throws IOException
*/
Deleted: trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/triangle/TrianglePolyDataNodeDefault.java
===================================================================
--- trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/triangle/TrianglePolyDataNodeDefault.java 2012-12-18 10:56:37 UTC (rev 8148)
+++ trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/triangle/TrianglePolyDataNodeDefault.java 2012-12-18 11:27:56 UTC (rev 8149)
@@ -1,43 +0,0 @@
-/*
- GPL 2
- */
-package org.fudaa.dodico.ef.io.triangle;
-
-import org.fudaa.dodico.ef.io.common.AbstractTriangulationPolyData;
-
-/**
- * une impl\xE9ementation par defaut avec les z comme attributs.
- *
- * @author Frederic Deniger
- */
-public class TrianglePolyDataNodeDefault extends AbstractTriangulationPolyData {
-
- TriangleNodeDataInterface nodeData;
-
- public TrianglePolyDataNodeDefault() {
- }
-
- public void setNodeData(TriangleNodeDataInterface nodeData) {
- this.nodeData = nodeData;
- }
-
- @Override
- public int getNbPoints() {
- return nodeData == null ? 0 : nodeData.getNbPoints();
- }
-
- @Override
- public double getPtX(int idxPt) {
- return nodeData.getX(idxPt);
- }
-
- @Override
- public double getPtY(int idxPt) {
- return nodeData.getY(idxPt);
- }
-
- @Override
- public double getPtAttributes(int idxPt, int idxAtt) {
- return nodeData.getAttributes(idxPt, idxAtt);
- }
-}
Copied: trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/triangle/TriangulationPolyDataNodeDefault.java (from rev 8141, trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/triangle/TrianglePolyDataNodeDefault.java)
===================================================================
--- trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/triangle/TriangulationPolyDataNodeDefault.java (rev 0)
+++ trunk/business/fudaa-ef/io/src/main/java/org/fudaa/dodico/ef/io/triangle/TriangulationPolyDataNodeDefault.java 2012-12-18 11:27:56 UTC (rev 8149)
@@ -0,0 +1,42 @@
+/*
+ GPL 2
+ */
+package org.fudaa.dodico.ef.io.triangle;
+
+import org.fudaa.dodico.ef.io.common.AbstractTriangulationPolyData;
+
+/**
+ * une impl\xE9ementation par defaut avec les z comme attributs.
+ *
+ * @author Frederic Deniger
+ */
+public class TriangulationPolyDataNodeDefault extends AbstractTriangulationPolyData {
+
+ TriangleNodeDataInterface nodeData;
+
+ public TriangulationPolyDataNodeDefault() {
+ }
+
+ public void setNodeData(TriangleNodeDataInterface nodeData) {
+ this.nodeData = nodeData;
+ }
+
+ @Override
+ public int getNbPoints() {
+ return nodeData == null ? 0 : nodeData.getNbPoints();
+ }
+
+ @Override
+ public double getPtX(int idxPt) {
+ return nodeData.getX(idxPt);
+ }
+
+ @Override
+ public double getPtY(int idxPt) {
+ return nodeData.getY(idxPt);
+ }
+
+ public double getPtAttributes(int idxPt, int idxAtt) {
+ return nodeData.getAttributes(idxPt, idxAtt);
+ }
+}
Modified: trunk/business/fudaa-ef/io/src/test/java/org/fudaa/dodico/ef/io/mesh/TestMeshReader.java
===================================================================
--- trunk/business/fudaa-ef/io/src/test/java/org/fudaa/dodico/ef/io/mesh/TestMeshReader.java 2012-12-18 10:56:37 UTC (rev 8148)
+++ trunk/business/fudaa-ef/io/src/test/java/org/fudaa/dodico/ef/io/mesh/TestMeshReader.java 2012-12-18 11:27:56 UTC (rev 8149)
@@ -2,13 +2,10 @@
import org.fudaa.ctulu.CtuluIOOperationSynthese;
import org.fudaa.dodico.common.TestIO;
-import org.fudaa.dodico.ef.ConditionLimiteEnum;
-import org.fudaa.dodico.ef.ConditionLimiteHelper;
import org.fudaa.dodico.ef.EfElement;
import org.fudaa.dodico.ef.EfGridInterface;
import org.fudaa.dodico.ef.EfGridSource;
import org.fudaa.dodico.ef.EfNode;
-import org.fudaa.dodico.ef.io.supertab.SuperTabReader;
public class TestMeshReader extends TestIO
{
Modified: trunk/business/fudaa-ef/io/src/test/java/org/fudaa/dodico/ef/io/triangle/TriangleEleReaderTest.java
===================================================================
--- trunk/business/fudaa-ef/io/src/test/java/org/fudaa/dodico/ef/io/triangle/TriangleEleReaderTest.java 2012-12-18 10:56:37 UTC (rev 8148)
+++ trunk/business/fudaa-ef/io/src/test/java/org/fudaa/dodico/ef/io/triangle/TriangleEleReaderTest.java 2012-12-18 11:27:56 UTC (rev 8149)
@@ -3,7 +3,6 @@
*/
package org.fudaa.dodico.ef.io.triangle;
-import junit.framework.TestCase;
import org.fudaa.ctulu.CtuluIOResult;
import org.fudaa.dodico.common.TestIO;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|