|
From: <de...@us...> - 2004-02-12 15:37:51
|
Update of /cvsroot/fudaa/fudaa_devel/dodico/src/org/fudaa/dodico/test/h2d In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20934/test/h2d Modified Files: TestBord.java TestMaillage.java TestTransformationCorEleBthSerafin.java Log Message: Maj version 0.05 prepro Index: TestBord.java =================================================================== RCS file: /cvsroot/fudaa/fudaa_devel/dodico/src/org/fudaa/dodico/test/h2d/TestBord.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** TestBord.java 12 Dec 2003 10:30:55 -0000 1.8 --- TestBord.java 12 Feb 2004 15:32:50 -0000 1.9 *************** *** 105,114 **** assertEquals(0, b.isIntersectBy(19, 15, nbP)); assertEquals(-1, b.isIntersectBy(19, 11, nbP)); ! b.setBoundaryType(H2dBoundaryType.SOLIDE); ! assertEquals(0, b.isIntersectBy(0, 12, nbP)); ! assertEquals(0, b.isIntersectBy(13, 14, nbP)); ! assertEquals(1, b.isIntersectBy(14, 14, nbP)); ! assertEquals(2, b.isIntersectBy(19, 15, nbP)); ! assertEquals(-1, b.isIntersectBy(19, 12, nbP)); b.setIdxDeb(16); b.setIdxFin(5); --- 105,114 ---- assertEquals(0, b.isIntersectBy(19, 15, nbP)); assertEquals(-1, b.isIntersectBy(19, 11, nbP)); ! // b.setBoundaryType(H2dBoundaryType.SOLIDE); ! // assertEquals(0, b.isIntersectBy(0, 12, nbP)); ! // assertEquals(1, b.isIntersectBy(13, 14, nbP)); ! // assertEquals(1, b.isIntersectBy(14, 14, nbP)); ! // assertEquals(0, b.isIntersectBy(19, 15, nbP)); ! // assertEquals(-1, b.isIntersectBy(19, 12, nbP)); b.setIdxDeb(16); b.setIdxFin(5); *************** *** 119,128 **** assertEquals(1, b.isIntersectBy(17, 4, nbP)); assertEquals(2, b.isIntersectBy(15, 6, nbP)); ! b.setBoundaryType(H2dBoundaryType.SOLIDE); ! assertEquals(-1, b.isIntersectBy(5, 16, nbP)); ! assertEquals(0, b.isIntersectBy(4, 14, nbP)); ! assertEquals(0, b.isIntersectBy(18, 9, nbP)); ! assertEquals(1, b.isIntersectBy(19, 3, nbP)); ! assertEquals(2, b.isIntersectBy(16, 5, nbP)); } } --- 119,128 ---- assertEquals(1, b.isIntersectBy(17, 4, nbP)); assertEquals(2, b.isIntersectBy(15, 6, nbP)); ! // b.setBoundaryType(H2dBoundaryType.SOLIDE); ! // assertEquals(-1, b.isIntersectBy(5, 16, nbP)); ! // assertEquals(0, b.isIntersectBy(4, 14, nbP)); ! // assertEquals(0, b.isIntersectBy(18, 9, nbP)); ! // assertEquals(1, b.isIntersectBy(19, 3, nbP)); ! // assertEquals(2, b.isIntersectBy(16, 5, nbP)); } } Index: TestMaillage.java =================================================================== RCS file: /cvsroot/fudaa/fudaa_devel/dodico/src/org/fudaa/dodico/test/h2d/TestMaillage.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** TestMaillage.java 11 Dec 2003 12:41:29 -0000 1.10 --- TestMaillage.java 12 Feb 2004 15:32:50 -0000 1.11 *************** *** 8,23 **** */ package org.fudaa.dodico.test.h2d; import gnu.trove.TIntArrayList; import gnu.trove.TIntIntHashMap; import gnu.trove.TObjectIntHashMap; import java.util.Arrays; import junit.framework.TestCase; import org.fudaa.dodico.commun.DodicoLib; import org.fudaa.dodico.commun.ProgressionTestAdapter; ! import org.fudaa.dodico.h2d.H2dElement; ! import org.fudaa.dodico.h2d.H2dGrid; ! import org.fudaa.dodico.h2d.H2dFrontier; ! import org.fudaa.dodico.h2d.H2dPoint; ! import org.fudaa.dodico.h2d.H2dSegment; /** * 8 --- 8,36 ---- */ package org.fudaa.dodico.test.h2d; + import gnu.trove.TDoubleArrayList; import gnu.trove.TIntArrayList; import gnu.trove.TIntIntHashMap; import gnu.trove.TObjectIntHashMap; + + import java.awt.Polygon; + import java.util.ArrayList; import java.util.Arrays; + + import org.fudaa.ctulu.CtuluGeometrie; + import junit.framework.TestCase; + + import org.fudaa.dodico.commun.DodicoAnalyze; import org.fudaa.dodico.commun.DodicoLib; import org.fudaa.dodico.commun.ProgressionTestAdapter; ! import org.fudaa.dodico.ef.EfElement; ! import org.fudaa.dodico.ef.EfFrontier; ! import org.fudaa.dodico.ef.EfGrid; ! import org.fudaa.dodico.ef.EfInterpolationGrid; ! import org.fudaa.dodico.ef.EfLib; ! import org.fudaa.dodico.ef.EfdSegment; ! import org.fudaa.dodico.ef.EfNode; ! import org.fudaa.dodico.interpolateur.Interpolateur; ! import org.fudaa.dodico.interpolateur.InterpolationNearestNeighborRef; /** * 8 *************** *** 37,41 **** */ public class TestMaillage extends TestCase { ! H2dGrid mail_; double eps_; ProgressionTestAdapter progress_; --- 50,54 ---- */ public class TestMaillage extends TestCase { ! EfGrid mail_; double eps_; ProgressionTestAdapter progress_; *************** *** 44,72 **** */ public TestMaillage() { ! progress_= new ProgressionTestAdapter(); eps_= 1E-15; } ! public static H2dGrid createMaillage() { ! H2dPoint[] pts= new H2dPoint[9]; ! pts[0]= new H2dPoint(0, 0, 15); ! pts[1]= new H2dPoint(2, -1, -15); ! pts[2]= new H2dPoint(1, 2, -5); ! pts[3]= new H2dPoint(2, 2, 30); ! pts[4]= new H2dPoint(0, 2, 30); ! pts[5]= new H2dPoint(1, 4, 30); ! pts[6]= new H2dPoint(10, 11, 30); ! pts[7]= new H2dPoint(0, 4, 30); ! pts[8]= new H2dPoint(2, 20, 30); ! H2dElement[] elt= new H2dElement[9]; ! elt[0]= new H2dElement(new int[] { 0, 2, 1 }); ! elt[1]= new H2dElement(new int[] { 1, 2, 3 }); ! elt[2]= new H2dElement(new int[] { 0, 4, 2 }); ! elt[3]= new H2dElement(new int[] { 4, 5, 2 }); ! elt[4]= new H2dElement(new int[] { 5, 6, 3 }); ! elt[5]= new H2dElement(new int[] { 5, 4, 7 }); ! elt[6]= new H2dElement(new int[] { 1, 3, 6 }); ! elt[7]= new H2dElement(new int[] { 7, 8, 5 }); ! elt[8]= new H2dElement(new int[] { 6, 5, 8 }); ! return new H2dGrid(pts, elt); } private void initMaillage() { --- 57,133 ---- */ public TestMaillage() { ! progress_= null; eps_= 1E-15; } ! ! public void testAireTriangle() { ! double x1= 0; ! double y1= 0; ! double x2= 5; ! double y2= 0; ! double x3= 0; ! double y3= 5; ! assertEquals( ! 12.5, ! CtuluGeometrie.aireTriangle(x1, y1, x2, y2, x3, y3), ! eps_); ! x3= -15; ! assertEquals( ! 12.5, ! CtuluGeometrie.aireTriangle(x1, y1, x2, y2, x3, y3), ! eps_); ! x3= 15; ! y3= -5; ! assertEquals( ! 12.5, ! CtuluGeometrie.aireTriangle(x1, y1, x2, y2, x3, y3), ! eps_); ! initMaillage(); ! int[] l= mail_.getSmallElement(null, 1); ! assertNotNull(l); ! assertEquals(3, l.length); ! Arrays.sort(l); ! assertEquals(2, l[0]); ! assertEquals(3, l[1]); ! assertEquals(5, l[2]); ! l= mail_.getSmallElement(null, 0.95); ! assertNull(l); ! ! initMaillageT6(); ! l= mail_.getSmallElement(null, 1); ! assertNotNull(l); ! assertEquals(3, l.length); ! Arrays.sort(l); ! assertEquals(2, l[0]); ! assertEquals(3, l[1]); ! assertEquals(5, l[2]); ! l= mail_.getSmallElement(null, 0.95); ! assertNull(l); ! ! } ! ! public static EfGrid createMaillage() { ! EfNode[] pts= new EfNode[9]; ! pts[0]= new EfNode(0, 0, 15); ! pts[1]= new EfNode(2, -1, -15); ! pts[2]= new EfNode(1, 2, -5); ! pts[3]= new EfNode(2, 2, 30); ! pts[4]= new EfNode(0, 2, 30); ! pts[5]= new EfNode(1, 4, 30); ! pts[6]= new EfNode(10, 11, 30); ! pts[7]= new EfNode(0, 4, 30); ! pts[8]= new EfNode(2, 20, 30); ! EfElement[] elt= new EfElement[9]; ! elt[0]= new EfElement(new int[] { 0, 2, 1 }); ! elt[1]= new EfElement(new int[] { 1, 2, 3 }); ! elt[2]= new EfElement(new int[] { 0, 4, 2 }); ! elt[3]= new EfElement(new int[] { 4, 5, 2 }); ! elt[4]= new EfElement(new int[] { 5, 6, 3 }); ! elt[5]= new EfElement(new int[] { 5, 4, 7 }); ! elt[6]= new EfElement(new int[] { 1, 3, 6 }); ! elt[7]= new EfElement(new int[] { 7, 8, 5 }); ! elt[8]= new EfElement(new int[] { 6, 5, 8 }); ! EfGrid r= new EfGrid(pts, elt); ! return r; } private void initMaillage() { *************** *** 76,141 **** mail_= createMaillageT6(); } ! public static H2dGrid createMaillageT6() { ! H2dPoint[] pts= new H2dPoint[27]; ! pts[0]= new H2dPoint(0, 0, 15); ! pts[1]= new H2dPoint(2, -1, -15); ! pts[2]= new H2dPoint(1, 2, -5); ! pts[3]= new H2dPoint(2, 2, 30); ! pts[4]= new H2dPoint(0, 2, 30); ! pts[5]= new H2dPoint(1, 4, 30); ! pts[6]= new H2dPoint(10, 11, 30); ! pts[7]= new H2dPoint(0, 4, 30); ! pts[8]= new H2dPoint(2, 20, 30); //elt 0 ! pts[9]= H2dPoint.createMilieu(pts[0], pts[2]); ! pts[10]= H2dPoint.createMilieu(pts[2], pts[1]); ! pts[11]= H2dPoint.createMilieu(pts[1], pts[0]); //elt 1 ! pts[12]= H2dPoint.createMilieu(pts[2], pts[3]); ! pts[13]= H2dPoint.createMilieu(pts[1], pts[3]); //pts10 //elt 2 ! pts[14]= H2dPoint.createMilieu(pts[0], pts[4]); ! pts[15]= H2dPoint.createMilieu(pts[4], pts[2]); //pts 9 // elt 3 ! pts[16]= H2dPoint.createMilieu(pts[5], pts[4]); ! pts[17]= H2dPoint.createMilieu(pts[5], pts[2]); //pts 15 // elt 4 ! pts[18]= H2dPoint.createMilieu(pts[5], pts[6]); ! pts[19]= H2dPoint.createMilieu(pts[3], pts[6]); ! pts[20]= H2dPoint.createMilieu(pts[5], pts[3]); // elt 5 ! pts[21]= H2dPoint.createMilieu(pts[4], pts[7]); ! pts[22]= H2dPoint.createMilieu(pts[5], pts[7]); //pts 16 // elt 6 //pts12 //pts19 ! pts[23]= H2dPoint.createMilieu(pts[6], pts[1]); // elt 7 ! pts[24]= H2dPoint.createMilieu(pts[7], pts[8]); ! pts[25]= H2dPoint.createMilieu(pts[8], pts[5]); //pts 21 // elt 8 ! pts[26]= H2dPoint.createMilieu(pts[6], pts[8]); //Pts 25 //pts 20 ! H2dElement[] elt= new H2dElement[9]; ! elt[0]= new H2dElement(new int[] { 0, 9, 2, 10, 1, 11 }); ! elt[1]= new H2dElement(new int[] { 1, 10, 2, 12, 3, 13 }); ! elt[2]= new H2dElement(new int[] { 0, 14, 4, 15, 2, 9 }); ! elt[3]= new H2dElement(new int[] { 4, 16, 5, 17, 2, 15 }); ! elt[4]= new H2dElement(new int[] { 5, 18, 6, 19, 3, 20 }); ! elt[5]= new H2dElement(new int[] { 5, 16, 4, 21, 7, 22 }); ! elt[6]= new H2dElement(new int[] { 1, 13, 3, 19, 6, 23 }); ! elt[7]= new H2dElement(new int[] { 7, 24, 8, 25, 5, 22 }); ! elt[8]= new H2dElement(new int[] { 6, 18, 5, 25, 8, 26 }); ! return new H2dGrid(pts, elt); } public void testTrigo() { initMaillage(); ! H2dElement el= mail_.getElement(0); assertEquals(el.getPtIndex(0), 0); assertEquals(el.getPtIndex(1), 2); --- 137,203 ---- mail_= createMaillageT6(); } ! public static EfGrid createMaillageT6() { ! EfNode[] pts= new EfNode[27]; ! pts[0]= new EfNode(0, 0, 15); ! pts[1]= new EfNode(2, -1, -15); ! pts[2]= new EfNode(1, 2, -5); ! pts[3]= new EfNode(2, 2, 30); ! pts[4]= new EfNode(0, 2, 30); ! pts[5]= new EfNode(1, 4, 30); ! pts[6]= new EfNode(10, 11, 30); ! pts[7]= new EfNode(0, 4, 30); ! pts[8]= new EfNode(2, 20, 30); //elt 0 ! pts[9]= EfNode.createMilieu(pts[0], pts[2]); ! pts[10]= EfNode.createMilieu(pts[2], pts[1]); ! pts[11]= EfNode.createMilieu(pts[1], pts[0]); //elt 1 ! pts[12]= EfNode.createMilieu(pts[2], pts[3]); ! pts[13]= EfNode.createMilieu(pts[1], pts[3]); //pts10 //elt 2 ! pts[14]= EfNode.createMilieu(pts[0], pts[4]); ! pts[15]= EfNode.createMilieu(pts[4], pts[2]); //pts 9 // elt 3 ! pts[16]= EfNode.createMilieu(pts[5], pts[4]); ! pts[17]= EfNode.createMilieu(pts[5], pts[2]); //pts 15 // elt 4 ! pts[18]= EfNode.createMilieu(pts[5], pts[6]); ! pts[19]= EfNode.createMilieu(pts[3], pts[6]); ! pts[20]= EfNode.createMilieu(pts[5], pts[3]); // elt 5 ! pts[21]= EfNode.createMilieu(pts[4], pts[7]); ! pts[22]= EfNode.createMilieu(pts[5], pts[7]); //pts 16 // elt 6 //pts12 //pts19 ! pts[23]= EfNode.createMilieu(pts[6], pts[1]); // elt 7 ! pts[24]= EfNode.createMilieu(pts[7], pts[8]); ! pts[25]= EfNode.createMilieu(pts[8], pts[5]); //pts 21 // elt 8 ! pts[26]= EfNode.createMilieu(pts[6], pts[8]); //Pts 25 //pts 20 ! EfElement[] elt= new EfElement[9]; ! elt[0]= new EfElement(new int[] { 0, 9, 2, 10, 1, 11 }); ! elt[1]= new EfElement(new int[] { 1, 10, 2, 12, 3, 13 }); ! elt[2]= new EfElement(new int[] { 0, 14, 4, 15, 2, 9 }); ! elt[3]= new EfElement(new int[] { 4, 16, 5, 17, 2, 15 }); ! elt[4]= new EfElement(new int[] { 5, 18, 6, 19, 3, 20 }); ! elt[5]= new EfElement(new int[] { 5, 16, 4, 21, 7, 22 }); ! elt[6]= new EfElement(new int[] { 1, 13, 3, 19, 6, 23 }); ! elt[7]= new EfElement(new int[] { 7, 24, 8, 25, 5, 22 }); ! elt[8]= new EfElement(new int[] { 6, 18, 5, 25, 8, 26 }); ! EfGrid r= new EfGrid(pts, elt); ! return r; } public void testTrigo() { initMaillage(); ! EfElement el= mail_.getElement(0); assertEquals(el.getPtIndex(0), 0); assertEquals(el.getPtIndex(1), 2); *************** *** 152,159 **** assertEquals(el.isSegmentInEltOrient(2, 3), 1); assertEquals(el.isSegmentInEltOrient(2, 2), 0); } public void testTrigoT6() { initMaillageT6(); ! H2dElement el= mail_.getElement(0); assertEquals(el.getPtIndex(0), 0); assertEquals(el.getPtIndex(1), 9); --- 214,274 ---- assertEquals(el.isSegmentInEltOrient(2, 3), 1); assertEquals(el.isSegmentInEltOrient(2, 2), 0); + double d= el.getAngle(mail_, 2) * 180 / Math.PI; + assertEquals(90, d, eps_); + d= el.getAngle(mail_, 0) * 180 / Math.PI; + assertEquals(18.4349, d, 1e-3); + d= el.getAngle(mail_, 1) * 180 / Math.PI; + assertEquals(90 - 18.4349, d, 1e-3); + } + + public void testOverstressed() { + initMaillage(); + int[] overI= mail_.getOverstressedElement(null); + assertNotNull(overI); + assertEquals(9, overI.length); + EfElement[] nElt= new EfElement[mail_.getEltNb() + 1]; + for (int i= 0; i < mail_.getEltNb(); i++) { + nElt[i]= new EfElement(mail_.getElement(i)); + } + nElt[mail_.getEltNb()]= new EfElement(new int[] { 2, 3, 5 }); + EfNode[] nPt= new EfNode[mail_.getPtsNb() + 1]; + for (int i= 0; i < mail_.getPtsNb(); i++) { + nPt[i]= new EfNode(mail_.getPt(i)); + } + EfGrid n= new EfGrid(nPt, nElt); + EfLib.orienteGrid(n, null, true, null); + n.computeBord(null); + assertNull(n.getOverstressedElement(null)); + + } + + public void testContains() { + initMaillage(); + mail_.computeBord(null); + // Polygon l=new Polygon(); + // + // for(int i=mail_.getFrontiers().getNbPt(0)-1;i>=0;i--){ + // l.addPoint((int)mail_.getPointOnFrontierExtern(i).getX(), + // (int)mail_.getPointOnFrontierExtern(i).getY()); + // } + // for(int i=mail_.getFrontiers().getNbPt(0)-1;i>=0;i--){ + // assertTrue(l.contains(mail_.getPointOnFrontierExtern(i).getX(),mail_.getPointOnFrontierExtern(i).getY())); + // } + // System.out.println("POLYGON OK"); + + for (int i= mail_.getFrontiers().getNbPt(0) - 1; i >= 0; i--) { + assertTrue(mail_.contientPoint(mail_.getPointOnFrontierExtern(i))); + } + + assertFalse(mail_.contientPoint(0, 5)); + assertFalse(mail_.contientPoint(2.1, 20)); + assertTrue(mail_.contientPoint(1, 12)); + assertEquals(1, mail_.getDistanceFromFrontier(-1, 1), eps_); + assertEquals(1, mail_.getDistanceFromFrontier(1, 1), eps_); + assertEquals(0, mail_.getDistanceFromFrontier(1, -0.5), eps_); } public void testTrigoT6() { initMaillageT6(); ! EfElement el= mail_.getElement(0); assertEquals(el.getPtIndex(0), 0); assertEquals(el.getPtIndex(1), 9); *************** *** 172,176 **** } private void _testMinMaxCommun() { ! H2dPoint p= mail_.getMaxPoint(); assertEquals(p.getX(), 10, eps_); assertEquals(p.getY(), 20, eps_); --- 287,291 ---- } private void _testMinMaxCommun() { ! EfNode p= mail_.getMaxPoint(); assertEquals(p.getX(), 10, eps_); assertEquals(p.getY(), 20, eps_); *************** *** 190,194 **** } public void _testBordCommun() { ! H2dFrontier bord= mail_.getFrontiers(); assertEquals(2, bord.getNbFrontier()); int[] eltContains4= mail_.getEltIdxContainsPtIdx(4); --- 305,309 ---- } public void _testBordCommun() { ! EfFrontier bord= mail_.getFrontiers(); assertEquals(2, bord.getNbFrontier()); int[] eltContains4= mail_.getEltIdxContainsPtIdx(4); *************** *** 223,227 **** } public void _testBordCommunT6() { ! H2dFrontier bord= mail_.getFrontiers(); assertEquals(bord.getNbFrontier(), 2); int[] eltContains4= mail_.getEltIdxContainsPtIdx(4); --- 338,342 ---- } public void _testBordCommunT6() { ! EfFrontier bord= mail_.getFrontiers(); assertEquals(bord.getNbFrontier(), 2); int[] eltContains4= mail_.getEltIdxContainsPtIdx(4); *************** *** 257,268 **** initMaillage(); TObjectIntHashMap segmentPtIdx= new TObjectIntHashMap(mail_.getEltNb() * 3); ! H2dGrid temp= mail_.maillageT3enT6(progress_, segmentPtIdx); assertEquals(temp.getEltNb(), 9); assertEquals(27, temp.getPtsNb()); initMaillageT6(); ! for (int i= 0; i < mail_.getPtsNb(); i++) { ! assertTrue(temp.getPt(i).isSame(mail_.getPt(i))); ! } ! H2dSegment s= new H2dSegment(0, 1); assertEquals(11, segmentPtIdx.get(s)); s.setPt1Idx(1); --- 372,381 ---- initMaillage(); TObjectIntHashMap segmentPtIdx= new TObjectIntHashMap(mail_.getEltNb() * 3); ! EfGrid temp= EfLib.maillageT3enT6(mail_, progress_, segmentPtIdx); assertEquals(temp.getEltNb(), 9); assertEquals(27, temp.getPtsNb()); initMaillageT6(); ! assertTrue(temp.isEquivalent(mail_, true, eps_)); ! EfdSegment s= new EfdSegment(0, 1); assertEquals(11, segmentPtIdx.get(s)); s.setPt1Idx(1); *************** *** 314,326 **** s.setPt2Idx(6); assertEquals(26, segmentPtIdx.get(s)); ! assertTrue(temp.isSame(mail_)); } public void testT61T3() { initMaillageT6(); TIntIntHashMap T6T3Corresp= new TIntIntHashMap(mail_.getPtsNb() / 2); ! System.out.println("element type " + mail_.getEltType()); ! H2dGrid temp= mail_.maillageT6enT3(progress_, T6T3Corresp); assertNotNull(temp); ! temp.isSame(mail_); assertEquals(9, T6T3Corresp.size()); for (int i= 0; i < 9; i++) { --- 427,438 ---- s.setPt2Idx(6); assertEquals(26, segmentPtIdx.get(s)); ! assertTrue(temp.isSameStrict(mail_)); } public void testT61T3() { initMaillageT6(); TIntIntHashMap T6T3Corresp= new TIntIntHashMap(mail_.getPtsNb() / 2); ! EfGrid temp= EfLib.maillageT6enT3(mail_, progress_, T6T3Corresp); assertNotNull(temp); ! temp.isSameStrict(mail_); assertEquals(9, T6T3Corresp.size()); for (int i= 0; i < 9; i++) { *************** *** 328,369 **** } //Autre essai ! H2dPoint[] pts= new H2dPoint[15]; ! pts[0]= new H2dPoint(0, 0, 0); ! pts[1]= new H2dPoint(1, 1, 0); ! pts[2]= new H2dPoint(2, 2, 0); ! pts[3]= new H2dPoint(3, 3, 0); ! pts[4]= new H2dPoint(4, 4, 0); ! pts[5]= new H2dPoint(5, 3, 0); ! pts[6]= new H2dPoint(6, 2, 0); ! pts[7]= new H2dPoint(7, 1, 0); ! pts[8]= new H2dPoint(8, 0, 0); ! pts[9]= new H2dPoint(6, 0, 0); ! pts[10]= new H2dPoint(4, 0, 0); ! pts[11]= new H2dPoint(2, 0, 0); ! pts[12]= new H2dPoint(3, 1, 0); ! pts[13]= new H2dPoint(4, 2, 0); ! pts[14]= new H2dPoint(5, 1, 0); ! H2dElement[] elt= new H2dElement[4]; ! elt[0]= new H2dElement(new int[] { 0, 1, 2, 12, 10, 11 }); ! elt[1]= new H2dElement(new int[] { 2, 3, 4, 5, 6, 13 }); ! elt[2]= new H2dElement(new int[] { 6, 7, 8, 9, 10, 14 }); ! elt[3]= new H2dElement(new int[] { 10, 12, 2, 13, 6, 14 }); //Attention a bien initialiser la table de correspondance. T6T3Corresp.clear(); ! H2dGrid t3calc= new H2dGrid(pts, elt).maillageT6enT3(null, T6T3Corresp); ! pts= new H2dPoint[6]; ! pts[0]= new H2dPoint(0, 0, 0); ! pts[1]= new H2dPoint(2, 2, 0); ! pts[2]= new H2dPoint(4, 4, 0); ! pts[3]= new H2dPoint(6, 2, 0); ! pts[4]= new H2dPoint(8, 0, 0); ! pts[5]= new H2dPoint(4, 0, 0); ! elt= new H2dElement[4]; ! elt[0]= new H2dElement(new int[] { 0, 1, 5 }); ! elt[1]= new H2dElement(new int[] { 1, 2, 3 }); ! elt[2]= new H2dElement(new int[] { 3, 4, 5 }); ! elt[3]= new H2dElement(new int[] { 5, 1, 3 }); ! H2dGrid t3final= new H2dGrid(pts, elt); ! assertTrue(t3calc.isSame(t3final)); for (int i= 0; i < pts.length; i++) { assertEquals(i, T6T3Corresp.get(2 * i)); --- 440,482 ---- } //Autre essai ! EfNode[] pts= new EfNode[15]; ! pts[0]= new EfNode(0, 0, 0); ! pts[1]= new EfNode(1, 1, 0); ! pts[2]= new EfNode(2, 2, 0); ! pts[3]= new EfNode(3, 3, 0); ! pts[4]= new EfNode(4, 4, 0); ! pts[5]= new EfNode(5, 3, 0); ! pts[6]= new EfNode(6, 2, 0); ! pts[7]= new EfNode(7, 1, 0); ! pts[8]= new EfNode(8, 0, 0); ! pts[9]= new EfNode(6, 0, 0); ! pts[10]= new EfNode(4, 0, 0); ! pts[11]= new EfNode(2, 0, 0); ! pts[12]= new EfNode(3, 1, 0); ! pts[13]= new EfNode(4, 2, 0); ! pts[14]= new EfNode(5, 1, 0); ! EfElement[] elt= new EfElement[4]; ! elt[0]= new EfElement(new int[] { 0, 1, 2, 12, 10, 11 }); ! elt[1]= new EfElement(new int[] { 2, 3, 4, 5, 6, 13 }); ! elt[2]= new EfElement(new int[] { 6, 7, 8, 9, 10, 14 }); ! elt[3]= new EfElement(new int[] { 10, 12, 2, 13, 6, 14 }); //Attention a bien initialiser la table de correspondance. T6T3Corresp.clear(); ! EfGrid t3calc= ! EfLib.maillageT6enT3(new EfGrid(pts, elt), null, T6T3Corresp); ! pts= new EfNode[6]; ! pts[0]= new EfNode(0, 0, 0); ! pts[1]= new EfNode(2, 2, 0); ! pts[2]= new EfNode(4, 4, 0); ! pts[3]= new EfNode(6, 2, 0); ! pts[4]= new EfNode(8, 0, 0); ! pts[5]= new EfNode(4, 0, 0); ! elt= new EfElement[4]; ! elt[0]= new EfElement(new int[] { 0, 1, 5 }); ! elt[1]= new EfElement(new int[] { 1, 2, 3 }); ! elt[2]= new EfElement(new int[] { 3, 4, 5 }); ! elt[3]= new EfElement(new int[] { 5, 1, 3 }); ! EfGrid t3final= new EfGrid(pts, elt); ! assertTrue(t3calc.isSameStrict(t3final)); for (int i= 0; i < pts.length; i++) { assertEquals(i, T6T3Corresp.get(2 * i)); *************** *** 372,379 **** public void testT6en4T3() { initMaillageT6(); ! H2dGrid temp= mail_.maillageT6en4T3(progress_); assertNotNull(temp); assertEquals(36, temp.getEltNb()); ! H2dElement t= temp.getElement(0); assertEquals(t.getPtIndex(0), 0); assertEquals(t.getPtIndex(1), 9); --- 485,492 ---- public void testT6en4T3() { initMaillageT6(); ! EfGrid temp= EfLib.maillageT6en4T3(mail_, progress_); assertNotNull(temp); assertEquals(36, temp.getEltNb()); ! EfElement t= temp.getElement(0); assertEquals(t.getPtIndex(0), 0); assertEquals(t.getPtIndex(1), 9); *************** *** 403,407 **** initMaillage(); int[] ipobo= new int[] { 0, 1, 6, 8, 7, 4, 2, 5, 3 }; ! H2dGrid.computeBordFast(mail_, ipobo, null); _testBordCommun(); } --- 516,520 ---- initMaillage(); int[] ipobo= new int[] { 0, 1, 6, 8, 7, 4, 2, 5, 3 }; ! EfGrid.computeBordFast(mail_, ipobo, null); _testBordCommun(); } *************** *** 410,417 **** initMaillage(); mail_.computeBord(null); ! System.out.println("alors"); ! System.out.println( ! DodicoLib._printObject(mail_.getFrontiers().getArray(), true)); ! for (H2dFrontier.FrontiereIdxIterator it= mail_.getFrontiers().getFrontierIterator(); it.hasNext(); --- 523,527 ---- initMaillage(); mail_.computeBord(null); ! for (EfFrontier.FrontiereIdxIterator it= mail_.getFrontiers().getFrontierIterator(); it.hasNext(); *************** *** 421,427 **** assertTrue(mail_.getFrontiers().isSame(l.toNativeArray())); } public void TestShiftElement() { ! H2dElement el= new H2dElement(new int[] { 1, 2, 3, 4, 5 }); ! H2dElement n= H2dElement.ShiftLeftElementIndex(el); assertEquals(n.getPtNb(), 5); assertEquals(n.getPtIndex(0), 2); --- 531,702 ---- assertTrue(mail_.getFrontiers().isSame(l.toNativeArray())); } + + public void testInterpRef() { + initMaillage(); + InterpolationNearestNeighborRef ref= mail_; + int[] d= new int[4]; + assertTrue(ref.getQuadrantIdx(1, -2, d)); + assertEquals(-1, d[0]); + assertEquals(-1, d[1]); + assertEquals(1, d[2]); + assertEquals(0, d[3]); + assertTrue(ref.getQuadrantIdx(1, 0, d)); + assertEquals(0, d[0]); + assertEquals(1, d[1]); + assertEquals(2, d[2]); + assertEquals(0, d[3]); + assertTrue(ref.getQuadrantIdx(0.5, 3, d)); + assertEquals(4, d[0]); + assertEquals(2, d[1]); + assertEquals(5, d[2]); + assertEquals(7, d[3]); + //pour verifier que les -1 sont bien remis + assertTrue(ref.getQuadrantIdx(1, -2, d)); + assertEquals(-1, d[0]); + assertEquals(-1, d[1]); + assertEquals(1, d[2]); + assertEquals(0, d[3]); + } + + public void testInterpolFromGrid() { + initMaillage(); + EfGrid target; + DodicoAnalyze a; + double[] d; + target= createMaillage(); + a= new DodicoAnalyze(); + EfLib.orienteGrid(mail_, null, true, null); + d= EfInterpolationGrid.interpolation(mail_, target, a, null); + if (!a.isEmpty()) { + a.printResume(); + } + assertTrue(a.isEmpty()); + assertEquals(target.getPtsNb(), d.length); + for (int i= target.getPtsNb() - 1; i >= 0; i--) { + assertEquals(d[i], target.getPt(i).getZ(), eps_); + } + initMaillageT6(); + EfLib.orienteGrid(mail_, null, true, null); + target= createMaillageT6(); + a= new DodicoAnalyze(); + d= EfInterpolationGrid.interpolation(mail_, target, a, null); + if (!a.isEmpty()) { + a.printResume(); + } + assertTrue(a.isEmpty()); + assertEquals(target.getPtsNb(), d.length); + for (int i= target.getPtsNb() - 1; i >= 0; i--) { + assertEquals(d[i], target.getPt(i).getZ(), eps_); + } + } + + private static double getInterpolValue( + double _d1, + double _z1, + double _d2, + double _z2) { + return (_z1 / (_d1 * _d1) + _z2 / (_d2 * _d2)) + / (1 / (_d1 * _d1) + 1 / (_d2 * _d2)); + } + + private static double getInterpolValue( + double _d1, + double _z1, + double _d2, + double _z2, + double _d3, + double _z3, + double _d4, + double _z4) { + return ( + _z1 / (_d1 * _d1) + + _z2 / (_d2 * _d2) + + _z3 / (_d3 * _d3) + + _z4 / (_d4 * _d4)) + / (1 / (_d1 * _d1) + 1 / (_d2 * _d2) + 1 / (_d3 * _d3) + 1 / (_d4 * _d4)); + } + + public void testInterpolation() { + initMaillage(); + EfGrid g2= createMaillage(); + //premier test primaire pour verifier l'interpolation + InterpolationNearestNeighborRef ref= g2; + DodicoAnalyze a= new DodicoAnalyze(); + + double[] z= Interpolateur.interpol(mail_, ref, 1, a, null); + assertTrue(a.isEmpty()); + assertEquals(g2.getPtsNb(), z.length); + for (int i= z.length - 1; i >= 0; i--) { + assertEquals(z[i], mail_.getPt(i).getZ(), eps_); + } + ArrayList l= new ArrayList(); + //le point 0 + l.add(new EfNode(-0.5, 0, 3)); + // le point 0 + l.add(new EfNode(0.5, -0.5, 14)); + l.add(new EfNode(0.5, 0.5, 4)); + //le point 4 + l.add(new EfNode(-0.5, 2, -4)); + //le point 4 et 2 + l.add(new EfNode(0.5, 2, 14)); + //le point 7 + l.add(new EfNode(-0.5, 4, 3)); + //le point 7 et 5 + l.add(new EfNode(0.5, 4, 34)); + //le point 5 + l.add(new EfNode(1.5, 4, 21354)); + //le point 2 et 3 + l.add(new EfNode(1.5, 2, 3)); + //le point 3 + l.add(new EfNode(3.5, 2, 45)); + //le point 1 + l.add(new EfNode(1.5, -1, 45)); + //le point 1 + l.add(new EfNode(2.5, -1, 1)); + //le point 6 + l.add(new EfNode(10, 11.5, 0)); + // le point 6 + l.add(new EfNode(10, 10.5, 14)); + //le point 8 qui ne sera pas pris en compte + //car les points ref en dehors de la frontiere et trop loin + l.add(new EfNode(-1, 20, 4)); + l.add(new EfNode(5, 20, 4)); + // les z attendus + TDoubleArrayList d= new TDoubleArrayList(); + //0 + double dist= CtuluGeometrie.getDistance(0, 0, 0.5, 0.5); + + d.add(getInterpolValue(0.5, 3, 0.5, 3, dist, 14, dist, 4)); + //1 + d.add(getInterpolValue(0.5, 1, 0.5, 45)); + //2 + d.add(getInterpolValue(0.5, 3, 0.5, 14)); + // 3 + d.add(getInterpolValue(1.5, 45, 0.5, 3)); + // 4 + d.add(getInterpolValue(0.5, 14, 0.5, -4)); + // 5 + d.add(getInterpolValue(0.5, 34, 0.5, 21354)); + //6 + double d6= getInterpolValue(0.5, 0, 0.5, 14); + d.add(d6); + //7 + d.add(getInterpolValue(0.5, 3, 0.5, 34)); + //8 idem que 6 + d.add(d6); + EfNode[] list= new EfNode[l.size()]; + l.toArray(list); + ref= new InterpolationNearestNeighborRef.ListOnZ(list); + z= Interpolateur.interpol(mail_, ref, 1, a, null); + assertFalse(a.isEmpty()); + assertEquals(z.length, d.size()); + for (int i= z.length - 1; i >= 0; i--) { + assertEquals(d.getQuick(i), z[i], eps_); + } + + } public void TestShiftElement() { ! EfElement el= new EfElement(new int[] { 1, 2, 3, 4, 5 }); ! EfElement n= EfElement.ShiftLeftElementIndex(el); assertEquals(n.getPtNb(), 5); assertEquals(n.getPtIndex(0), 2); Index: TestTransformationCorEleBthSerafin.java =================================================================== RCS file: /cvsroot/fudaa/fudaa_devel/dodico/src/org/fudaa/dodico/test/h2d/TestTransformationCorEleBthSerafin.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** TestTransformationCorEleBthSerafin.java 25 Nov 2003 10:12:00 -0000 1.4 --- TestTransformationCorEleBthSerafin.java 12 Feb 2004 15:32:50 -0000 1.5 *************** *** 12,20 **** import org.fudaa.dodico.commun.DodicoLib; import org.fudaa.dodico.commun.ProgressionTestAdapter; import org.fudaa.dodico.fichiers.FileFormat; import org.fudaa.dodico.fichiers.FileFormatVersion; import org.fudaa.dodico.fichiers.FileOperationSynthese; import org.fudaa.dodico.fortran.NativeBinaryInputStream; - import org.fudaa.dodico.h2d.H2dGrid; import org.fudaa.dodico.reflux.io.CorEleBthFileFormat; import org.fudaa.dodico.reflux.io.CorEleBthInterface; --- 12,21 ---- import org.fudaa.dodico.commun.DodicoLib; import org.fudaa.dodico.commun.ProgressionTestAdapter; + import org.fudaa.dodico.ef.EfGrid; + import org.fudaa.dodico.ef.EfLib; import org.fudaa.dodico.fichiers.FileFormat; import org.fudaa.dodico.fichiers.FileFormatVersion; import org.fudaa.dodico.fichiers.FileOperationSynthese; import org.fudaa.dodico.fortran.NativeBinaryInputStream; import org.fudaa.dodico.reflux.io.CorEleBthFileFormat; import org.fudaa.dodico.reflux.io.CorEleBthInterface; *************** *** 53,62 **** synth.printAnalyze(); CorEleBthInterface inter= (CorEleBthInterface)synth.getSource(); ! H2dGrid mail= inter.getMaillage(); long t1= System.currentTimeMillis(); mail.computeBord(null); long t2= System.currentTimeMillis(); System.out.println(t2 - t1); ! H2dGrid maillageSimpleT3= mail.maillageT6enT3(progres, null); t1= System.currentTimeMillis(); maillageSimpleT3.computeBord(null); --- 54,63 ---- synth.printAnalyze(); CorEleBthInterface inter= (CorEleBthInterface)synth.getSource(); ! EfGrid mail= inter.getGrid(); long t1= System.currentTimeMillis(); mail.computeBord(null); long t2= System.currentTimeMillis(); System.out.println(t2 - t1); ! EfGrid maillageSimpleT3= EfLib.maillageT6enT3(mail,progres, null); t1= System.currentTimeMillis(); maillageSimpleT3.computeBord(null); |