|
From: <bma...@us...> - 2013-02-14 15:43:46
|
Revision: 8271
http://fudaa.svn.sourceforge.net/fudaa/?rev=8271&view=rev
Author: bmarchan
Date: 2013-02-14 15:43:35 +0000 (Thu, 14 Feb 2013)
Log Message:
-----------
Add : Relecture transect projete
Modified Paths:
--------------
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeFlowAction.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivResultsLayer.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivVelResultsLayer.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivTransect.java
Added Paths:
-----------
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivBathyPFileFormat.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivBathyPReader.java
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java 2013-02-14 15:41:04 UTC (rev 8270)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java 2013-02-14 15:43:35 UTC (rev 8271)
@@ -221,7 +221,7 @@
// Layer des vitesses resultantes.
cqVelResults = new PivVelResultsLayer();
cqVelResults.setTitle(PivResource.getS("Vit. surf. moy."));
- cqVelResults.setLongTitle(PivResource.getS("Vitesse de surface moyenn\xE9e"));
+ cqVelResults.setLongTitle(PivResource.getS("Vitesses de surface moyenn\xE9es"));
cqVelResults.setTitleModifiable(true);
cqVelResults.setName("cqRealVel");
// Donne la couleur des fl\xE8ches si pas de palette de couleurs.
@@ -237,7 +237,7 @@
// Layer des vitesses instantan\xE9es resultantes.
cqInstantVelResults_ = new PivVelResultsLayer();
cqInstantVelResults_.setTitle(PivResource.getS("Vit. surf. inst."));
- cqInstantVelResults_.setLongTitle(PivResource.getS("Vitesse de surface instantan\xE9e"));
+ cqInstantVelResults_.setLongTitle(PivResource.getS("Vitesses de surface instantan\xE9es"));
cqInstantVelResults_.setTitleModifiable(true);
cqInstantVelResults_.setName("cqInstantVel");
// Donne la couleur des fl\xE8ches si pas de palette de couleurs.
@@ -258,7 +258,7 @@
}
};
cqFlowResults.setTitle(PivResource.getS("Vit. moy. prof."));
- cqFlowResults.setLongTitle(PivResource.getS("Vitesse moyenn\xE9e sur la profondeur"));
+ cqFlowResults.setLongTitle(PivResource.getS("Vitesses moyenn\xE9es sur la profondeur"));
cqFlowResults.setTitleModifiable(true);
cqFlowResults.setName("cqRealFlow");
// Donne la couleur des fl\xE8ches si pas de palette de couleurs.
@@ -285,7 +285,7 @@
// Layer des iso couleurs instantan\xE9es
cqInstantIso_ = new PivResultsLayer();
cqInstantIso_.setLineModel(0, new TraceLigneModel(TraceLigne.LISSE, 1, Color.LIGHT_GRAY));
- cqInstantIso_.setTitle("R\xE9sultats instantan\xE9s");
+ cqInstantIso_.setTitle(PivResource.getS("R\xE9sultats instantan\xE9s"));
cqInstantIso_.setName("cqInstantResults");
cqInstantIso_.setDestructible(false);
cqInstantIso_.setVisible(false);
@@ -293,7 +293,7 @@
// Layer des iso couleurs instantan\xE9es
cqAverageIso_ = new PivResultsLayer();
cqAverageIso_.setLineModel(0, new TraceLigneModel(TraceLigne.LISSE, 1, Color.LIGHT_GRAY));
- cqAverageIso_.setTitle("R\xE9sultats moyenn\xE9s");
+ cqAverageIso_.setTitle(PivResource.getS("R\xE9sultats moyenn\xE9s"));
cqAverageIso_.setName("cqAveResults");
cqAverageIso_.setDestructible(false);
cqAverageIso_.setVisible(false);
@@ -584,21 +584,28 @@
else if("averageResults".equals(_prop)) {
if (_prj.getAverageResults()!=null) {
mdlAverageResults=new PivResultsModel(new PivResultsI[]{prj_.getAverageResults()},null);
- cqAverageIso_.setModele(mdlAverageResults);
-
mdlVelResults=new PivVelResultsModel(new PivResultsI[]{prj_.getAverageResults()});
- cqVelResults.setModele(mdlVelResults);
}
+ else {
+ mdlAverageResults=null;
+ mdlVelResults=null;
+ }
+ cqAverageIso_.setModele(mdlAverageResults);
+ cqVelResults.setModele(mdlVelResults);
+
majTools();
}
else if ("instantResults".equals(_prop)) {
if (_prj.getInstantResults()!=null) {
mdlInstantResults=new PivResultsModel(prj_.getInstantResults(),null);
- cqInstantIso_.setModele(mdlInstantResults);
-
mdlInstantVelResults=new PivVelResultsModel(prj_.getInstantResults());
- cqInstantVelResults_.setModele(mdlInstantVelResults);
}
+ else {
+ mdlInstantResults=null;
+ mdlInstantVelResults=null;
+ }
+ cqInstantIso_.setModele(mdlInstantResults);
+ cqInstantVelResults_.setModele(mdlInstantVelResults);
majTools();
}
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeFlowAction.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeFlowAction.java 2013-02-14 15:41:04 UTC (rev 8270)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeFlowAction.java 2013-02-14 15:43:35 UTC (rev 8271)
@@ -11,6 +11,7 @@
import java.io.File;
import javax.swing.SwingUtilities;
import org.fudaa.ctulu.CtuluAnalyze;
+import org.fudaa.ctulu.fileformat.FileReadOperationAbstract;
import org.fudaa.ctulu.gui.CtuluDialog;
import org.fudaa.ctulu.gui.CtuluTaskOperationGUI;
import org.fudaa.ebli.commun.EbliActionSimple;
@@ -22,7 +23,10 @@
import org.fudaa.fudaa.piv.PivProgressionPanel;
import org.fudaa.fudaa.piv.PivResource;
import org.fudaa.fudaa.piv.PivVisuPanel;
+import org.fudaa.fudaa.piv.io.PivBathyPFileFormat;
+import org.fudaa.fudaa.piv.io.PivDischargeFileFormat;
import org.fudaa.fudaa.piv.io.PivExeLauncher;
+import org.fudaa.fudaa.piv.metier.PivFlowResults;
import org.fudaa.fudaa.piv.metier.PivOrthoParameters;
import org.fudaa.fudaa.piv.metier.PivTransect;
@@ -98,6 +102,14 @@
pnInfo.afficheModale(impl.getFrame(), PivResource.getS("Calcul termin\xE9"), CtuluDialog.OK_OPTION);
impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_REAL_VIEW);
impl.get2dFrame().getVisuPanel().setFlowLayerVisible(true);
+
+ if (impl.question(
+ PivResource.getS("Modification du transect initial"),
+ PivResource.getS("Souhaitez vous remplacer le transect initial par celui calcul\xE9 ?"))) {
+
+ PivTransect trans=impl.getCurrentProject().loadBathyPFile(null);
+ impl.getCurrentProject().setTransect(trans);
+ }
}
});
Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivBathyPFileFormat.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivBathyPFileFormat.java (rev 0)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivBathyPFileFormat.java 2013-02-14 15:43:35 UTC (rev 8271)
@@ -0,0 +1,51 @@
+package org.fudaa.fudaa.piv.io;
+
+import org.fudaa.ctulu.fileformat.FileFormatUnique;
+import org.fudaa.ctulu.fileformat.FileReadOperationAbstract;
+import org.fudaa.ctulu.fileformat.FileWriteOperationAbstract;
+import org.fudaa.fudaa.piv.PivResource;
+
+/**
+ * La classe d\xE9crivant le format d'un fichier bathy_p.dat contenant
+ * un transect.
+ *
+ * @author Bertrand Marchand (mar...@de...)
+ * @version $Id$
+ */
+public class PivBathyPFileFormat extends FileFormatUnique {
+
+ private PivBathyPFileFormat() {
+ super(1);
+ nom_ = PivResource.getS("PIV transect");
+ description_ = PivResource.getS("Fichier contenant un transect");
+ extensions_=new String[]{"dat"};
+ }
+ static final PivBathyPFileFormat INSTANCE = new PivBathyPFileFormat();
+
+ /**
+ * Retourne le singleton pour instancier un reader ou un writer.
+ * @return Le singleton
+ */
+ public static PivBathyPFileFormat getInstance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Cr\xE9ation d'un reader.
+ * @return Le reader
+ */
+ @Override
+ public FileReadOperationAbstract createReader() {
+ return new PivBathyPReader();
+ }
+
+ /**
+ * Cr\xE9ation d'un writer.
+ * @return Le writer
+ */
+ @Override
+ public FileWriteOperationAbstract createWriter() {
+ return null;
+ }
+
+}
Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivBathyPFileFormat.java
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivBathyPReader.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivBathyPReader.java (rev 0)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivBathyPReader.java 2013-02-14 15:43:35 UTC (rev 8271)
@@ -0,0 +1,121 @@
+/**
+ * @creation 2002-11-21
+ * @modification $Date: 2007/05/04 13:47:27 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.fudaa.piv.io;
+
+import java.io.EOFException;
+import java.io.File;
+import java.io.IOException;
+
+import org.fudaa.ctulu.CtuluActivity;
+import org.fudaa.dodico.fortran.FileOpReadCharSimpleAbstract;
+import org.fudaa.ebli.geometrie.GrPolyligne;
+import org.fudaa.fudaa.piv.PivResource;
+import org.fudaa.fudaa.piv.metier.PivTransect;
+
+/**
+ * Un lecteur pour les fichiers de bathy_p.dat.
+ *
+ * @author Bertrand Marchand (mar...@de...)
+ * @version $Id$
+ */
+public class PivBathyPReader extends FileOpReadCharSimpleAbstract implements CtuluActivity {
+
+ /** Drapeau d'interruption */
+ boolean bstop_;
+ /** Nb d'octets du fichier a lire pour stat sur pourcentage effectu\xE9 */
+ int nbOctets;
+
+ /**
+ * Constructeur.
+ */
+ public PivBathyPReader() {
+ }
+
+ /**
+ * Lit les points et retourne le transect.
+ * @return Le transect
+ */
+ @Override
+ protected PivTransect internalRead() {
+ return readParams();
+ }
+
+ @Override
+ protected void processFile(final File _f) {
+ nbOctets = (int) _f.length();
+ }
+
+ /**
+ * Utilise FortranReader ( donc un buffer).
+ *
+ * @return les infos non bloquantes.
+ */
+ private synchronized PivTransect readParams() {
+ PivTransect ret=null;
+ GrPolyligne pl=new GrPolyligne();
+
+ if (super.in_ == null) {
+ analyze_.addErrorFromFile(PivResource.getS("Flux d'entr\xE9e non trouv\xE9"), 0);
+ return null;
+ }
+
+ try {
+ int lu=0;
+ boolean afficheAvance = false;
+ if ((progress_ != null) && (nbOctets > 0)) {
+ afficheAvance = true;
+ progress_.setProgression(0);
+ }
+ int pourcentageEnCours = 0;
+
+ in_.setJumpBlankLine(true);
+
+ // On saute l'entete (6 lignes)
+ for (int i=0; i<6; i++) {
+ in_.readLine();
+ }
+
+ // Boucle jusque fin de fichier. Exception EOF si fin.
+ while (true) {
+ in_.readFields();
+ pl.sommets_.ajoute(in_.doubleField(1),in_.doubleField(2),in_.doubleField(3));
+ lu+=26; // Si le formattage en fortran
+
+ if ((afficheAvance) && ((lu * 100 / nbOctets) >= (pourcentageEnCours + 20))) {
+ pourcentageEnCours += 20;
+ progress_.setProgression(pourcentageEnCours);
+ }
+ }
+ }
+ // Sortie normale
+ catch (final EOFException e) {
+ ret=new PivTransect();
+ ret.setStraight(pl);
+ }
+ catch (final IOException e) {
+ analyze_.addErrorFromFile(PivResource.getS("Une erreur de lecture s'est produite"), in_.getLineNumber());
+ }
+ catch (final NumberFormatException e) {
+ analyze_.addErrorFromFile(PivResource.getS("Une erreur de lecture s'est produite"), in_.getLineNumber());
+ }
+ finally {
+ if (progress_ != null) {
+ progress_.setProgression(100);
+ }
+ return ret;
+ }
+ }
+
+ /**
+ * Interruption asynchrone de l'activit\xE9 de lecture.
+ */
+ @Override
+ public void stop() {
+ bstop_ = true;
+ }
+}
Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivBathyPReader.java
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java 2013-02-14 15:41:04 UTC (rev 8270)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java 2013-02-14 15:43:35 UTC (rev 8271)
@@ -370,8 +370,10 @@
// On supprime le fichier des vitesses moyennes
File resFile=new File(prjOutputs, faverage);
resFile.delete();
-
- _prj.setAverageResults(null);
+ // Et celui des scalaires moyens
+ faverage="average_scal.out";
+ File resScalFile=new File(prjOutputs,faverage);
+ resScalFile.delete();
try {
// Sauvegarde des donn\xE9es du projet.
@@ -449,6 +451,11 @@
finally {
new File(prjImgOut, "image1_transf.pgm").delete();
new File(prjImgOut, "image2_transf.pgm").delete();
+
+ if (_ana.containsErrorOrFatalError()) {
+ _prj.setInstantResults(null);
+ _prj.setAverageResults(null);
+ }
}
return true;
@@ -903,7 +910,7 @@
FuLog.trace(PivResource.getS("Transformation ok."));
- desc=PivResource.getS("Calcul des r\xE9sultats instantan\xE9es...");
+ desc=PivResource.getS("Calcul des r\xE9sultats instantan\xE9s...");
FuLog.trace(desc);
if (_task!=null) {
_task.setDesc(desc);
@@ -934,6 +941,7 @@
}
finally {
_prj.setInstantResults(res);
+ _prj.setAverageResults(null);
}
return true;
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivResultsLayer.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivResultsLayer.java 2013-02-14 15:41:04 UTC (rev 8270)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivResultsLayer.java 2013-02-14 15:43:35 UTC (rev 8271)
@@ -66,7 +66,7 @@
@Override
public void setModele(ZModelePolygone _modele) {
- if (!(_modele instanceof PivResultsModel))
+ if (_modele!=null && !(_modele instanceof PivResultsModel))
throw new IllegalArgumentException("Bad type argument");
if (modele_!=null) {
@@ -78,11 +78,16 @@
}
initPalette();
- if (isoPainter==null) {
- isoPainter = new MvIsoLayerQuickPainter(modele());
+ if (_modele==null) {
+ isoPainter=null;
}
else {
- isoPainter.setModel(modele());
+ if (isoPainter==null) {
+ isoPainter = new MvIsoLayerQuickPainter(modele());
+ }
+ else {
+ isoPainter.setModel(modele());
+ }
}
}
@@ -227,7 +232,7 @@
CtuluRange range = new CtuluRange();
this.getRange(range);
palette.initPlages(10, range.min_, range.max_);
- palette.setSousTitre(modele().getCurrentVar().getName());
+ palette.setSousTitre(modele()==null ? null:modele().getCurrentVar().getName());
this.setPaletteCouleurPlages(palette);
}
@@ -237,7 +242,9 @@
res.put(PivResultatsLayerConfigure.ISO_LINE_PAINTED, isTraceIsoLine());
res.put(PivResultatsLayerConfigure.ISO_SURFACE_PAINTED, isTraceIsoSurface());
- res.put("iso.variable", modele()==null ? "":modele().getCurrentVar().toString());
+ if (modele()!=null)
+ res.put("iso.variable", modele().getCurrentVar().toString());
+
return res;
}
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivVelResultsLayer.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivVelResultsLayer.java 2013-02-14 15:41:04 UTC (rev 8270)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivVelResultsLayer.java 2013-02-14 15:43:35 UTC (rev 8271)
@@ -3,6 +3,9 @@
import org.fudaa.ctulu.CtuluRange;
import org.fudaa.ebli.calque.ZCalqueFleche;
import org.fudaa.ebli.calque.ZModeleSegment;
+import org.fudaa.ebli.palette.BPalettePlage;
+import org.fudaa.ebli.palette.BPalettePlageAbstract;
+import org.fudaa.ebli.palette.BPalettePlageInterface;
/**
* Un calque pour le trac\xE9 des vitesses.
@@ -75,11 +78,26 @@
@Override
public void setModele(ZModeleSegment _modele) {
- if (!(_modele instanceof PivVelResultsModel))
+ if (_modele!=null && !(_modele instanceof PivVelResultsModel))
throw new IllegalArgumentException("Bad type argument");
super.setModele(_modele);
+
+ initPalette();
}
-
+ /**
+ * Initialisation de la palette en fonction des bornes min/max des valeurs pour tous les
+ * pas de temps.
+ */
+ private void initPalette() {
+ BPalettePlage palette=(BPalettePlage)getPaletteCouleur();
+ // Pas de plages : On consid\xE8re que la palette n'est pas utilis\xE9e.
+ if (palette==null || palette.getNbPlages()==0) return;
+
+ CtuluRange range = new CtuluRange();
+ this.getRange(range);
+ palette.initPlages(10, range.min_, range.max_);
+ this.setPaletteCouleurPlages(palette);
+ }
}
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2013-02-14 15:41:04 UTC (rev 8270)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2013-02-14 15:43:35 UTC (rev 8271)
@@ -35,6 +35,7 @@
import org.fudaa.fudaa.piv.io.PivAverageScalFileFormat;
import org.fudaa.fudaa.piv.io.PivAverageVelFileFormat;
import org.fudaa.fudaa.piv.io.PivBathyFileFormat;
+import org.fudaa.fudaa.piv.io.PivBathyPFileFormat;
import org.fudaa.fudaa.piv.io.PivDischargeFileFormat;
import org.fudaa.fudaa.piv.io.PivGRPFileFormat;
import org.fudaa.fudaa.piv.io.PivGlobalXmlFileFormat;
@@ -1043,6 +1044,18 @@
}
/**
+ * Charge un fichier bathy_p.dat
+ * @param _prog L'interface de progression.
+ * @return Le transect lu.
+ * TODO devrait etre d\xE9l\xE9gu\xE9 dans une classe de lecture/ecriture des donn\xE9es.
+ */
+ public PivTransect loadBathyPFile(ProgressionInterface _prog) {
+ File fbathyp=new File(getOutputDir(),"bathy_p.dat");
+ FileReadOperationAbstract reader=PivBathyPFileFormat.getInstance().createReader();
+ CtuluIOOperationSynthese ret=reader.read(fbathyp, _prog);
+ return (PivTransect)ret.getSource();
+ }
+ /**
* Sauve le projet sur le fichier projet. Les infos sont sauv\xE9es sur le
* r\xE9pertoire temporaire, puis zip\xE9es.
* @param _prjFile Le fichier de sauvegarde.
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivTransect.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivTransect.java 2013-02-14 15:41:04 UTC (rev 8270)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivTransect.java 2013-02-14 15:43:35 UTC (rev 8271)
@@ -28,4 +28,23 @@
public void setStraight(GrPolyligne _transect) {
this.transect = _transect;
}
+
+ /**
+ * Recr\xE9e un transect depuis les r\xE9sultats calcul\xE9s et le transect d'origine. Lors du calcul,
+ * les points sont r\xE9align\xE9s. La bathy et le nombre de points n'est pas modifi\xE9e.
+ * @param _res Les r\xE9sultats.
+ * @param _trans Le transect original, avec points non align\xE9s.
+ * @return Le transect recalcul\xE9.
+ */
+ public static PivTransect buildFromAlignResults(PivFlowResults _res, PivTransect _trans) {
+ PivTransect trans=new PivTransect();
+
+ GrPolyligne pl=new GrPolyligne();
+ for (int i=0; i<_res.getNombre(); i++) {
+ pl.sommets_.ajoute(_res.getX(i), _res.getY(i), _trans.getStraight().sommet(i).z_);
+ }
+ trans.transect=pl;
+
+ return trans;
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|