Update of /cvsroot/fudaa/fudaa_devel/dodico/src/org/fudaa/dodico/h2d
In directory sc8-pr-cvs1:/tmp/cvs-serv3430/h2d
Modified Files:
H2dBord.java H2dElement.java H2dLib.java H2dMaillage.java
H2dMaillageBord.java H2dMaillageMutable.java
H2dParametresCalculReflux.java H2dPoint.java
H2dRefluxDicoModel.java
Removed Files:
H2dIndexData.java H2dIndexDouble.java H2dIndexString.java
H2dTempsValeur.java
Log Message:
Maj des projets hydraulique 2d
Index: H2dBord.java
===================================================================
RCS file: /cvsroot/fudaa/fudaa_devel/dodico/src/org/fudaa/dodico/h2d/H2dBord.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** H2dBord.java 4 Jul 2003 13:07:25 -0000 1.1
--- H2dBord.java 18 Aug 2003 11:05:19 -0000 1.2
***************
*** 12,15 ****
--- 12,16 ----
/**
+ * TODO : Les bords contiennent des conditions limites !
* @author deniger
* @version $Id$
Index: H2dElement.java
===================================================================
RCS file: /cvsroot/fudaa/fudaa_devel/dodico/src/org/fudaa/dodico/h2d/H2dElement.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** H2dElement.java 4 Jul 2003 13:07:25 -0000 1.1
--- H2dElement.java 18 Aug 2003 11:05:19 -0000 1.2
***************
*** 18,23 ****
/**
! * En element. La notion de segment correspond a 2 indices consecutifs
! * de l'element
* @author deniger
* @version $Id$
--- 18,22 ----
/**
! * Les elements d'un maillage.
* @author deniger
* @version $Id$
***************
*** 140,151 ****
/**
! * Renvoie true si cet element contient le segment compose des index _s1,_s2 ( ordre quelconque).
*/
public boolean containsSegment(int _ptIdx1, int _ptIdx2) {
int n= ptIndex_.length - 1;
int rs1, rs2;
for (int i= n - 1; i >= 0; i--) {
! rs1= ptIndex_[i + 1];
! rs2= ptIndex_[i];
if (((rs1 == _ptIdx1) && (rs2 == _ptIdx2))
|| ((rs1 == _ptIdx2) && (rs2 == _ptIdx1)))
--- 139,164 ----
/**
! * Renvoie true si cet element contient l arete (_ptIdx1,_ptIdx2) dans le sens donne
*/
public boolean containsSegment(int _ptIdx1, int _ptIdx2) {
int n= ptIndex_.length - 1;
+ for (int i= n - 1; i >= 0; i--) {
+ if ((ptIndex_[i] == _ptIdx1) && (ptIndex_[i + 1] == _ptIdx2))
+ return true;
+ }
+ if ((ptIndex_[n] == _ptIdx1) && (ptIndex_[0] == _ptIdx2))
+ return true;
+ return false;
+ }
+
+ /**
+ * Recherche si cet element contient l'arete dans n'importe quel sens.
+ */
+ public boolean containsSegmentSensIndifferent(int _ptIdx1, int _ptIdx2) {
+ int n= ptIndex_.length - 1;
int rs1, rs2;
for (int i= n - 1; i >= 0; i--) {
! rs1= ptIndex_[i];
! rs2= ptIndex_[i + 1];
if (((rs1 == _ptIdx1) && (rs2 == _ptIdx2))
|| ((rs1 == _ptIdx2) && (rs2 == _ptIdx1)))
***************
*** 205,208 ****
--- 218,223 ----
for (int i= n; i >= 0; i--) {
contenu= false;
+ //Dans un maillage tous les elements sont dans le meme sens. Donc il suffit de
+ //tester les segment (i,i-1) uniquement
s1= (i != 0 ? ptIndex_[i - 1] : ptIndex_[n]);
s2= ptIndex_[i];
***************
*** 210,214 ****
for (int j= nElem;((j >= 0) && (!contenu)); j--) {
if (j != _indexThis) {
! if (_m.getElement(j).containsSegment(s1, s2)) {
contenu= true;
}
--- 225,229 ----
for (int j= nElem;((j >= 0) && (!contenu)); j--) {
if (j != _indexThis) {
! if (_m.getElement(j).containsSegment(s2, s1)) {
contenu= true;
}
***************
*** 243,246 ****
--- 258,264 ----
for (int i= n; i >= 0; i--) {
contenu= false;
+ //ATTENTION Optimisation : tous les segments sont dans le
+ //meme sens donc il suffit de tester la presence d'un doublon dans
+ //le sens oppose
s1= (i != 0 ? ptIndex_[i - 1] : ptIndex_[n]);
s2= ptIndex_[i];
***************
*** 302,319 ****
for (int i= n; i >= 0; i--) {
contenu= false;
s1= (i != 0 ? ptIndex_[i - 1] : ptIndex_[n]);
s2= ptIndex_[i];
- //Optimisation de 30 % mais prend de la place memoire.
- // int[] s1Element = (int[]) indexPointElement.get(s1);
- // if (s1Element == null) {
- // s1Element = (int[]) indexPointElement.get(s2);
- // }
- // if (s1Element == null) {
- // s1Element = getIndexElementContainsId(_m.elts_, s1);
- // indexPointElement.put(s1, s1Element);
- // }
for (int j= nElem; j >= 0; j--) {
if (j != _indexThis) {
! if (_m.elts_[j].containsSegment(s1, s2)) {
contenu= true;
break;
--- 320,331 ----
for (int i= n; i >= 0; i--) {
contenu= false;
+ //ATTENTION Optimisation : tous les segments sont dans le
+ //meme sens donc il suffit de tester la presence d'un doublon dans
+ //le sens oppose
s1= (i != 0 ? ptIndex_[i - 1] : ptIndex_[n]);
s2= ptIndex_[i];
for (int j= nElem; j >= 0; j--) {
if (j != _indexThis) {
! if (_m.elts_[j].containsSegment(s2, s1)) {
contenu= true;
break;
***************
*** 321,332 ****
}
}
- // nTemp = s1Element.length - 1;
- // for (int j = nTemp; j >= 0; j--) {
- // n2=s1Element[j];
- // if ( (_indexThis!=n2) && (_m.elts_[n2].containsSegment(s1, s2)) ) {
- // contenu = true;
- // break;
- // }
- // }
if (!contenu) {
--- 333,336 ----
***************
*** 355,359 ****
/**
* Renvoie true, si un des elements <code>_elems</code> contient le segment
! * <code>[_s1,_s2]</code>.
*/
public static boolean containsSegment(
--- 359,364 ----
/**
* Renvoie true, si un des elements <code>_elems</code> contient le segment
! * <code>[_s1,_s2]</code> dans le sens donne.
! * @see H2dElement#containsSegment(int, int).
*/
public static boolean containsSegment(
***************
*** 370,373 ****
--- 375,418 ----
/**
+ * Renvoie l'index du segment contenant l'arete [s1,s2] dans l'ordre donne.
+ * @return -1 si non trouve
+ */
+ public static int getIdxSegmentContains(
+ H2dElement[] _elems,
+ int _s1,
+ int _s2) {
+ int n= _elems.length - 1;
+ for (int i= n; i >= 0; i--) {
+ if (_elems[i].containsSegment(_s1, _s2))
+ return i;
+ }
+ return -1;
+ }
+
+ /**
+ * Renvoie true, si un des elements <code>_elems</code> contient le segment
+ * <code>[_s1,_s2]</code> sans tenir compte du sens.
+ * @see H2dElement#containsSegmentSensIndifferent(int, int)
+ */
+ public static boolean containsSegmentSensIndif(
+ H2dElement[] _elems,
+ int _s1,
+ int _s2) {
+ int n= _elems.length - 1;
+ for (int i= n; i >= 0; i--) {
+ if (_elems[i].containsSegmentSensIndifferent(_s1, _s2))
+ return true;
+ }
+ return false;
+ }
+
+ public static boolean containsSegmentSensIndif(
+ H2dMaillage _mail,
+ int _s1,
+ int _s2) {
+ return containsSegmentSensIndif(_mail.elts_, _s1, _s2);
+ }
+
+ /**
* Renvoie les indices des points pour cet element ( NE PAS MODIFIER LE TABLEAU).
*/
***************
*** 380,383 ****
--- 425,435 ----
}
+ /**
+ * Renvoie l'indice a la ieme position de cet element ( pas de verification).
+ */
+ public int getPtIndex(int _i) {
+ return ptIndex_[_i];
+ }
+
public static int getCommunType(H2dElement[] _elts) {
int n= _elts.length - 2;
***************
*** 418,421 ****
--- 470,479 ----
}
+ public boolean isSame(H2dElement _ele) {
+ if (ptIndex_.length != _ele.ptIndex_.length)
+ return false;
+ return Arrays.equals(ptIndex_, _ele.ptIndex_);
+ }
+
public static int getDefaultType(int _nbPoint) {
switch (_nbPoint) {
***************
*** 434,438 ****
public static void main(String[] args) {
H2dElement e= new H2dElement(new int[] { 1, 43, 5 });
! System.out.println(e.containsSegment(1, 5));
}
--- 492,496 ----
public static void main(String[] args) {
H2dElement e= new H2dElement(new int[] { 1, 43, 5 });
! System.out.println(e.containsSegment(5, 1));
}
Index: H2dLib.java
===================================================================
RCS file: /cvsroot/fudaa/fudaa_devel/dodico/src/org/fudaa/dodico/h2d/H2dLib.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** H2dLib.java 4 Jul 2003 13:07:25 -0000 1.2
--- H2dLib.java 18 Aug 2003 11:05:19 -0000 1.3
***************
*** 9,23 ****
package org.fudaa.dodico.h2d;
! import gnu.trove.TIntArrayList;
!
! import java.util.ArrayList;
!
! import org.fudaa.dodico.corba.geometrie.SMaillageIndex;
! import org.fudaa.dodico.corba.geometrie.SPoint;
!
! import org.fudaa.dodico.commun.ProgressionInterface;
!
!
!
/**
--- 9,13 ----
package org.fudaa.dodico.h2d;
! import com.memoire.bu.BuInformationsSoftware;
/**
***************
*** 26,40 ****
* @version $Id$
*/
! public class H2dLib
! {
!
/**
* Appel la methode getStep(nbIteration,5)
*/
! public final static int getStep(int nbIteration)
! {
! return getStep(nbIteration,5);
}
!
/**
* Methode utilisée pour mettre a jour l'avancement.
--- 16,28 ----
* @version $Id$
*/
! public class H2dLib {
!
/**
* Appel la methode getStep(nbIteration,5)
*/
! public final static int getStep(int nbIteration) {
! return getStep(nbIteration, 5);
}
!
/**
* Methode utilisée pour mettre a jour l'avancement.
***************
*** 47,123 ****
* But : eviter
*/
! public final static int getStep(int nbIteration,int _nbStep)
! {
! return (((int)(nbIteration / _nbStep))< 20)?2:_nbStep;
! }
!
! public static boolean setBathymetrie(SMaillageIndex _m,double[] _fondValues)
! {
! SPoint[] pts=_m.points;
! int nbPoints=pts.length;
! if(nbPoints!=_fondValues.length) return false;
! for(int i=nbPoints-1;i>=0;i--)
! {
! pts[i].z=_fondValues[i];
! }
! return true;
! }
!
! /**
! * Permet de cree un maillage a partir des points, elements et
! * des indices des points frontiere arrangé selon l'ordre télémac : numerotation partant
! * du point x+y min et x min et dans le sens horaire pour la frontiere externe et anti-horaire
! * pour les frontieres internes.Il est suppose que le tableau _ipobo soit correct.
! */
! public static void computeBord(
! H2dMaillage _mail,
! int[] _ipobo,
! ProgressionInterface _pr)
! {
! if (_pr != null)
! {
! _pr.setDesc("Recherche des frontières");
! _pr.setProgression(0);
! }
! //Le vecteur stockant les bords.
! ArrayList l = new ArrayList(5);
! int n = _ipobo.length;
! TIntArrayList bordEncours = new TIntArrayList(n);
! int s1, s2 = -1;
! int pourc = 0;
! int step = H2dLib.getStep(n);
! int pas = (int) (n / step);
! int pMax = pas;
! int pourcStep = (int) (90 / step);
! for (int i = 1; i < n; i++)
! {
! s1 = _ipobo[i - 1];
! s2 = _ipobo[i];
! bordEncours.add(s1);
! if (!H2dElement.containsSegment(_mail.elts_, s1, s2))
! {
! l.add(bordEncours.toNativeArray());
! bordEncours.clear();
! }
! if ((_pr != null) && (i > pMax))
! {
! pourc += pourcStep;
! _pr.setProgression(pourc);
! pMax += pas;
! }
! }
! //finition
! if (s2 >= 0)
! bordEncours.add(s2);
! l.add(bordEncours.toNativeArray());
! if (_pr != null)
! _pr.setProgression(90);
! _mail.ptsFrontiere_=new H2dMaillageBord(l);
}
-
-
-
-
-
}
--- 35,41 ----
* But : eviter
*/
! public final static int getStep(int nbIteration, int _nbStep) {
! return (((int) (nbIteration / _nbStep)) < 20) ? 2 : _nbStep;
}
}
Index: H2dMaillage.java
===================================================================
RCS file: /cvsroot/fudaa/fudaa_devel/dodico/src/org/fudaa/dodico/h2d/H2dMaillage.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** H2dMaillage.java 4 Jul 2003 16:11:51 -0000 1.2
--- H2dMaillage.java 18 Aug 2003 11:05:19 -0000 1.3
***************
*** 9,17 ****
package org.fudaa.dodico.h2d;
- import java.util.ArrayList;
-
-
import gnu.trove.TIntArrayList;
! import gnu.trove.TIntObjectHashMap;
import org.fudaa.dodico.commun.DodicoLib;
--- 9,20 ----
[...988 lines suppressed...]
+ l.add(bordEncours.toNativeArray());
+ bordEncours.clear();
+ }
+ if ((_pr != null) && (i > pMax))
+ {
+ pourc += pourcStep;
+ _pr.setProgression(pourc);
+ pMax += pas;
+ }
+ }
+ //finition
+ if (s2 >= 0)
+ bordEncours.add(s2);
+ l.add(bordEncours.toNativeArray());
+ if (_pr != null)
+ _pr.setProgression(90);
+ _mail.ptsFrontiere_=new H2dMaillageBord(l);
+ }
}
Index: H2dMaillageBord.java
===================================================================
RCS file: /cvsroot/fudaa/fudaa_devel/dodico/src/org/fudaa/dodico/h2d/H2dMaillageBord.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** H2dMaillageBord.java 4 Jul 2003 13:07:25 -0000 1.1
--- H2dMaillageBord.java 18 Aug 2003 11:05:19 -0000 1.2
***************
*** 9,12 ****
--- 9,14 ----
package org.fudaa.dodico.h2d;
+ import gnu.trove.TIntArrayList;
+
import java.util.List;
***************
*** 37,41 ****
}
}
!
/**
* Permet de verifier si les indices de bords
--- 39,43 ----
}
}
!
/**
* Permet de verifier si les indices de bords
***************
*** 43,82 ****
* par _ipobo.
*/
! public boolean isSame(int[] _ipobo)
! {
! if(_ipobo==null) return false;
! int n=bordPrinc_.length;
! int nIpobo=_ipobo.length;
! if(nIpobo<n) return false;
! for(int i=0;i<n;i++)
! {
! if(_ipobo[i]!=bordPrinc_[i]){
! System.out.println("echec externe");
return false;
}
}
! if(bordInter_==null)
! {
//il n'y a pas de bord interne
! if(nIpobo==n) return true;
! else return false;
}
! int nBI=bordInter_.length;
! int indexIpobo=n;
int nbFI;
! for(int i=0;i<nBI;i++)
! {
! nbFI=bordInter_[i].length;
! for(int j=0;j<nbFI;j++)
! {
! if(_ipobo[indexIpobo+j]!=bordInter_[i][j])
! {
System.out.println("echec interne");
return false;
}
}
! indexIpobo+=nbFI;
}
return true;
}
--- 45,102 ----
* par _ipobo.
*/
! public boolean isSame(int[] _ipobo) {
! if (_ipobo == null)
return false;
+ int n= bordPrinc_.length;
+ int nIpobo= _ipobo.length;
+ if (nIpobo < n)
+ return false;
+ for (int i= 0; i < n; i++) {
+ if (_ipobo[i] != bordPrinc_[i]) {
+ System.out.println("echec externe");
+ return false;
}
}
! if (bordInter_ == null) {
//il n'y a pas de bord interne
! if (nIpobo == n)
! return true;
! else
! return false;
}
! int nBI= bordInter_.length;
! int indexIpobo= n;
int nbFI;
! for (int i= 0; i < nBI; i++) {
! nbFI= bordInter_[i].length;
! for (int j= 0; j < nbFI; j++) {
! if (_ipobo[indexIpobo + j] != bordInter_[i][j]) {
System.out.println("echec interne");
return false;
}
}
! indexIpobo += nbFI;
}
return true;
+ }
+
+ /**
+ * Renvoie les bords sous forme d'un tableau ( conforme tableau ipobo
+ * de telemac/serafin).
+ */
+ public int[] getArray() {
+ TIntArrayList list= new TIntArrayList(bordPrinc_);
+ if (bordInter_ != null) {
+ int nb= bordInter_.length;
+ list.ensureCapacity(bordPrinc_.length + nb * (bordPrinc_.length / 2));
+ int nbParBord;
+ for (int i= 0; i < nb; i++) {
+ nbParBord= bordInter_[i].length;
+ for (int j= 0; j < nbParBord; j++) {
+ list.add(bordInter_[i][j]);
+ }
+ }
+ }
+ return list.toNativeArray();
}
Index: H2dMaillageMutable.java
===================================================================
RCS file: /cvsroot/fudaa/fudaa_devel/dodico/src/org/fudaa/dodico/h2d/H2dMaillageMutable.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** H2dMaillageMutable.java 4 Jul 2003 13:07:25 -0000 1.1
--- H2dMaillageMutable.java 18 Aug 2003 11:05:19 -0000 1.2
***************
*** 9,18 ****
package org.fudaa.dodico.h2d;
! import gnu.trove.TDoubleArrayList;
! import gnu.trove.TIntArrayList;
!
! import java.util.ArrayList;
!
! import org.fudaa.dodico.commun.ProgressionInterface;
/**
--- 9,13 ----
package org.fudaa.dodico.h2d;
! import org.fudaa.dodico.telemac.io.SerafinInterface;
/**
***************
*** 20,31 ****
* @version $Id$
*/
! public class H2dMaillageMutable extends H2dMaillage
! {
/**
*
*/
! public H2dMaillageMutable(H2dPoint[] _pts, H2dElement[] _elts)
! {
super(_pts, _elts);
}
--- 15,24 ----
* @version $Id$
*/
! public class H2dMaillageMutable extends H2dMaillage {
/**
*
*/
! public H2dMaillageMutable(H2dPoint[] _pts, H2dElement[] _elts) {
super(_pts, _elts);
}
***************
*** 34,49 ****
*
*/
! public void setElts(H2dElement[] _elements)
! {
! elts_ = _elements;
}
-
/**
*
*/
! public void setPts(H2dPoint[] _points)
! {
! pts_ = _points;
}
--- 27,39 ----
*
*/
! public void setElts(H2dElement[] _elements) {
! elts_= _elements;
}
/**
*
*/
! public void setPts(H2dPoint[] _points) {
! pts_= _points;
}
***************
*** 51,57 ****
*
*/
! public void setPtsExtremitesElement(int[] _is)
! {
! ptsExtremitesElement_ = _is;
}
--- 41,46 ----
*
*/
! public void setPtsFrontiere(H2dMaillageBord _is) {
! ptsFrontiere_= _is;
}
***************
*** 59,74 ****
*
*/
! public void setPtsFrontiere(H2dMaillageBord _is)
! {
! ptsFrontiere_ = _is;
}
- /**
- *
- */
- public void setTypeElt(int _i)
- {
- typeElt_ = _i;
- }
}
--- 48,55 ----
*
*/
! public void setTypeElt(int _i) {
! typeElt_= _i;
}
}
Index: H2dParametresCalculReflux.java
===================================================================
RCS file: /cvsroot/fudaa/fudaa_devel/dodico/src/org/fudaa/dodico/h2d/H2dParametresCalculReflux.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** H2dParametresCalculReflux.java 4 Jul 2003 13:07:25 -0000 1.1
--- H2dParametresCalculReflux.java 18 Aug 2003 11:05:19 -0000 1.2
***************
*** 9,20 ****
package org.fudaa.dodico.h2d;
- import gnu.trove.TObjectDoubleHashMap;
-
- import java.util.HashMap;
- import java.util.HashSet;
- import java.util.Set;
-
- import org.fudaa.dodico.dico.DicoParams;
- import org.fudaa.dodico.h2d.type.H2dRefluxImpressionType;
/**
--- 9,12 ----
Index: H2dPoint.java
===================================================================
RCS file: /cvsroot/fudaa/fudaa_devel/dodico/src/org/fudaa/dodico/h2d/H2dPoint.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** H2dPoint.java 4 Jul 2003 13:07:25 -0000 1.1
--- H2dPoint.java 18 Aug 2003 11:05:19 -0000 1.2
***************
*** 26,29 ****
--- 26,35 ----
z_= _z;
}
+
+ public H2dPoint(H2dPoint _p) {
+ x_= _p.x_;
+ y_= _p.y_;
+ z_= _p.z_;
+ }
/**
***************
*** 50,53 ****
--- 56,69 ----
protected void setZ(double _z) {
z_= _z;
+ }
+
+ /**
+ * Compare des doubles avec = voir si Double.doubleToLongBits
+ * ne conviendrait pas.
+ */
+ public boolean isSame(H2dPoint _p)
+ {
+ return (x_==_p.x_) && (y_==_p.y_) && (z_==_p.z_);
+
}
Index: H2dRefluxDicoModel.java
===================================================================
RCS file: /cvsroot/fudaa/fudaa_devel/dodico/src/org/fudaa/dodico/h2d/H2dRefluxDicoModel.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** H2dRefluxDicoModel.java 4 Jul 2003 13:07:25 -0000 1.1
--- H2dRefluxDicoModel.java 18 Aug 2003 11:05:19 -0000 1.2
***************
*** 31,36 ****
{
- DicoEntite[] entiteContrib_;
-
/**
*
--- 31,34 ----
***************
*** 46,77 ****
}
! public DicoEntite getCoefContribution(int _index)
! {
! String rubrique = "Coefficients contribution";
! DicoEntiteList entites = getEntites();
! if (entiteContrib_ == null)
! {
! List l = new ArrayList(18);
! DicoEntite ent;
! for (Iterator it = entites.iterator(); it.hasNext();)
! {
! ent = (DicoEntite) it.next();
! if (rubrique.equals(ent.getRubrique()))
! {
! l.add(ent);
! }
! }
! Collections.sort(l, DicoEntiteGenerate.getComparatorIndex());
! entiteContrib_ = new DicoEntite[l.size()];
! l.toArray(entiteContrib_);
! }
! if (_index < 0 || _index >= entiteContrib_.length)
! {
! System.out.println(
! "index doit etre compris entre 0 et " + entiteContrib_.length);
! return null;
! }
! return entiteContrib_[_index];
! }
public DicoEntite[] createEntites()
--- 44,48 ----
}
!
public DicoEntite[] createEntites()
--- H2dIndexData.java DELETED ---
--- H2dIndexDouble.java DELETED ---
--- H2dIndexString.java DELETED ---
--- H2dTempsValeur.java DELETED ---
|