|
From: <bma...@us...> - 2011-09-29 20:30:39
|
Revision: 6465
http://fudaa.svn.sourceforge.net/fudaa/?rev=6465&view=rev
Author: bmarchan
Date: 2011-09-29 20:30:31 +0000 (Thu, 29 Sep 2011)
Log Message:
-----------
Add : Lancement calcul de d?\195?\169bit et relecture dans PivFlowResults
Modified Paths:
--------------
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivExeLauncher.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportTransectAction.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java
Added Paths:
-----------
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/PivDischargeFileFormat.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivDischargeReader.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivFlowResults.java
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivExeLauncher.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivExeLauncher.java 2011-09-29 20:26:45 UTC (rev 6464)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivExeLauncher.java 2011-09-29 20:30:31 UTC (rev 6465)
@@ -24,6 +24,9 @@
import org.fudaa.fudaa.piv.io.PivHFileFormat;
import org.fudaa.fudaa.piv.io.PivImgRefFileFormat;
import org.fudaa.fudaa.piv.io.PivParamFileFormat;
+import org.fudaa.fudaa.piv.io.PivBathyFileFormat;
+import org.fudaa.fudaa.piv.io.PivDischargeFileFormat;
+import org.fudaa.fudaa.piv.metier.PivFlowResults;
import org.fudaa.fudaa.piv.metier.PivOrthoPoint;
import org.fudaa.fudaa.piv.metier.PivProject;
import org.fudaa.fudaa.piv.metier.PivVelResults;
@@ -38,12 +41,13 @@
*/
public class PivExeLauncher {
/** Les exe pouvant \xEAtre lanc\xE9s */
- private final static String[] EXES={"ortho_plan","transf_a","PIV","repack","verif_ortho","moy_ec","filter"};
+ private final static String[] EXES={
+ "ortho_plan","transf_a","PIV","repack","verif_ortho",
+ "moy_ec","filter","bathy_compute","Q_compute_proj2"};
private final static String[] CMDS={"repack"};
/** */
private static final String OUTPUT_DIR="outputs.dir";
- private static final String IMG_RAW_DIR="img_raw";
/** Le repertoire des images reconditionn\xE9es */
private static final String IMG_PGM_DIR="img_pgm";
private static final String IMG_TRANSF_DIR="img_transf";
@@ -711,4 +715,156 @@
return true;
}
+
+ /**
+ * Lance le calcul de restructuration de la bathymetrie.
+ *
+ * @param _ana L'analyse pour la tache ex\xE9cut\xE9e.
+ * @param _prj Le projet.
+ * @param _task La tache en cours d'execution.
+ * @return true : Tout s'est bien d\xE9roul\xE9.
+ */
+ public boolean launchBathyCompute(CtuluAnalyze _ana, PivProject _prj, CtuluTaskOperationGUI _task) {
+ File exeOutputs=new File(exePath,OUTPUT_DIR);
+
+ createExeDirs();
+
+ try {
+ // Sauvegarde des donn\xE9es du projet.
+ File bathyFile=new File(exeOutputs, "bathy.dat");
+ FileWriteOperationAbstract writer=PivBathyFileFormat.getInstance().createWriter();
+ CtuluIOOperationSynthese ret=writer.write(_prj.getTransect(), bathyFile, null);
+
+ int prog=5;
+
+ String desc=PivResource.getS("Reconditionnement du transect...");
+ FuLog.trace(desc);
+ if (_task != null) {
+ _task.setDesc(desc);
+ _task.setProgression(prog);
+ }
+
+ try {
+ String outs=FuLib.runProgram(new String[]{exePath + File.separator + EXES[7] + EXE_EXT}, exePath);
+ if (!outs.trim().equals("")) {
+ _ana.addError(PivResource.getS("Erreur de reconditionnement du transect:\n") + outs);
+ return false;
+ }
+
+ if (_task != null && _task.isStopRequested()) {
+ _ana.addError(PivResource.getS("Calcul interrompu"));
+ return false;
+ }
+ }
+ catch (IOException ex) {
+ _ana.addError(ex.getMessage());
+ return false;
+ }
+
+ FuLog.trace(PivResource.getS("Reconditionnement du transect ok."));
+ if (_task != null) {
+ _task.setProgression(100);
+ }
+ }
+
+ // On supprime les repertoires temporaires
+ finally {
+// delExeDirs();
+ }
+
+ return true;
+ }
+
+ /**
+ * Lance le calcul de d\xE9bit \xE0 partir du transect.
+ *
+ * @param _ana L'analyse pour la tache ex\xE9cut\xE9e.
+ * @param _prj Le projet.
+ * @param _task La tache en cours d'execution.
+ * @return true : Tout s'est bien d\xE9roul\xE9.
+ */
+ public boolean launchQCompute(CtuluAnalyze _ana, PivProject _prj, CtuluTaskOperationGUI _task) {
+ File prjRoot=_prj.getRoot();
+ File prjOutputs=new File(prjRoot,OUTPUT_DIR);
+ File exeOutputs=new File(exePath,OUTPUT_DIR);
+
+ // On supprime le fichier du repertoire projet
+ String fdis="Discharge.dat";
+ File resFile=new File(prjOutputs, fdis);
+ resFile.delete();
+
+ _prj.setFlowResults(null);
+
+// createExeDirs();
+
+ try {
+ // PIV_param.dat
+ File paramFile=new File(exeOutputs, "PIV_param.dat");
+ FileWriteOperationAbstract writer=PivParamFileFormat.getInstance().createWriter();
+ Object[] params=new Object[]{_prj.getComputeParameters(), _prj.getTransfImageSize()};
+ CtuluIOOperationSynthese ret=writer.write(params, paramFile, null);
+
+ // bathy_p.dat => D\xE9j\xE0 dans le r\xE9pertoire de sortie.
+
+ // Hauteurs d'eau
+ File hFile = new File(exeOutputs, "h.dat");
+ writer = PivHFileFormat.getInstance().createWriter();
+ ret = writer.write(_prj.getOrthoParameters().getWaterElevation(), hFile, null);
+
+ // average_vel.out => Copie depuis le r\xE9pertoire projet.
+ copyFile(prjOutputs, exeOutputs, "average_vel.out");
+
+ int prog=5;
+
+ String desc=PivResource.getS("Calcul du d\xE9bit...");
+ FuLog.trace(desc);
+ if (_task != null) {
+ _task.setDesc(desc);
+ _task.setProgression(prog);
+ }
+
+ try {
+ StringBuffer sbout=new StringBuffer();
+ StringBuffer sberr=new StringBuffer();
+ String outs=FuLib.runProgram(new String[]{exePath + File.separator + EXES[8] + EXE_EXT}, exePath, sbout, sberr);
+ if (!sberr.toString().trim().equals("")) {
+ _ana.addError(PivResource.getS("Erreur de calcul du d\xE9bit:\n") + outs);
+ return false;
+ }
+
+ if (_task != null && _task.isStopRequested()) {
+ _ana.addError(PivResource.getS("Calcul interrompu"));
+ return false;
+ }
+
+ // On d\xE9place le fichier vers le repertoire projet
+ new File(exeOutputs, fdis).renameTo(resFile);
+
+ // R\xE9cup\xE9ration des r\xE9sultats du projet.
+ FileReadOperationAbstract reader=PivDischargeFileFormat.getInstance().createReader();
+ ret=reader.read(resFile, _task);
+ PivFlowResults res=(PivFlowResults) ret.getSource();
+
+ FuLog.trace(PivResource.getS("Calcul du d\xE9bit ok."));
+ if (_task != null) {
+ _task.setProgression(80);
+ }
+ _prj.setFlowResults(res);
+ if (_task != null) {
+ _task.setProgression(100);
+ }
+ }
+ catch (IOException ex) {
+ _ana.addError(ex.getMessage());
+ return false;
+ }
+ }
+
+ // On supprime les repertoires temporaires
+ finally {
+ delExeDirs();
+ }
+
+ return true;
+ }
}
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-09-29 20:26:45 UTC (rev 6464)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-09-29 20:30:31 UTC (rev 6465)
@@ -34,6 +34,7 @@
import org.fudaa.fudaa.commun.impl.FudaaLookPreferencesPanel;
import org.fudaa.fudaa.commun.impl.FudaaStartupExitPreferencesPanel;
import org.fudaa.fudaa.piv.action.PivComputeAverageAction;
+import org.fudaa.fudaa.piv.action.PivComputeFlowAction;
import org.fudaa.fudaa.piv.action.PivComputeLaunchAction;
import org.fudaa.fudaa.piv.action.PivComputeParamAction;
import org.fudaa.fudaa.piv.action.PivNewTransectAction;
@@ -217,6 +218,7 @@
setEnabledForAction("IMPORT_GRID", bprjOpen && bprjHasTransfImg);
setEnabledForAction("IMPORT_TRANSECT", bprjOpen && bprjHasTransfImg);
setEnabledForAction("CREATE_TRANSECT", bprjOpen && bprjHasTransfImg);
+ setEnabledForAction("FLOW_COMPUTE", bprjOpen && project.getVelResults()!=null);
setEnabledForAction("PIV_COMPUTE", bprjOpen);
setEnabledForAction("COMPUTE_AVERAGE", bprjOpen);
setEnabledForAction("RESULTS_SHOW_VELOCITIES", bprjOpen && project.getVelResults()!=null);
@@ -677,6 +679,7 @@
mn.add(get2dFrame().getVisuPanel().getShowVelocitiesAction().buildMenuItem(EbliComponentFactory.INSTANCE));
mn.addSeparator(PivResource.getS("Post-traitement"));
mn.add(get2dFrame().getVisuPanel().getNewTransectAction());
+ mn.add(new PivComputeFlowAction(this));
mn.addSeparator(PivResource.getS("Vue"));
ButtonGroup bg=new ButtonGroup();
AbstractButton itOriginalView=get2dFrame().getVisuPanel().getOriginalViewAction().buildMenuItem(EbliComponentFactory.INSTANCE);
Added: 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 (rev 0)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeFlowAction.java 2011-09-29 20:30:31 UTC (rev 6465)
@@ -0,0 +1,128 @@
+/*
+ * @creation 3 juil. 2008
+ * @modification $Date:$
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail fud...@li...
+ */
+package org.fudaa.fudaa.piv.action;
+
+import java.awt.event.ActionEvent;
+import java.io.File;
+import org.fudaa.ctulu.CtuluAnalyze;
+import org.fudaa.ctulu.gui.CtuluDialog;
+import org.fudaa.ctulu.gui.CtuluTaskOperationGUI;
+import org.fudaa.ebli.commun.EbliActionSimple;
+import org.fudaa.fudaa.piv.PivExePanel;
+import org.fudaa.fudaa.piv.PivImplementation;
+import org.fudaa.fudaa.piv.PivPreferences;
+import org.fudaa.fudaa.piv.PivProgressionPanel;
+import org.fudaa.fudaa.piv.PivResource;
+
+/**
+ * Une action pour lancer le calcul de d\xE9bit.
+ *
+ * @author Bertrand Marchand (mar...@de...)
+ * @version $Id$
+ */
+public class PivComputeFlowAction extends EbliActionSimple {
+ PivImplementation impl;
+ CtuluDialog diProgress_;
+
+ /**
+ * Constructeur.
+ * @param _impl L'implementation.
+ */
+ public PivComputeFlowAction(PivImplementation _impl) {
+ super(PivResource.getS("Calcul du d\xE9bit"), null, "FLOW_COMPUTE");
+
+ impl=_impl;
+ setEnabled(false);
+ }
+
+ /**
+ * Lance l'analyse par PIV, dans un thread s\xE9par\xE9.
+ * @param _e L'evenement pour l'action.
+ */
+ @Override
+ public void actionPerformed(final ActionEvent _e) {
+ if (!isValide()) {
+ return;
+ }
+
+ if (!impl.getLauncher().areExeOK()) {
+ PivExePanel pnExe = new PivExePanel();
+
+ if (!pnExe.afficheModaleOk(impl.getFrame(), PivResource.getS("R\xE9pertoire contenant les executables"))) {
+ return;
+ }
+ else {
+ impl.getLauncher().setExePath(new File(PivPreferences.PIV.getStringProperty(PivPreferences.PIV_EXE_PATH)));
+ }
+ }
+
+
+ // La tache a ex\xE9cuter.
+ CtuluTaskOperationGUI r=new CtuluTaskOperationGUI(impl, PivResource.getS("Calcul du d\xE9bit")) {
+
+ @Override
+ public void act() {
+ try {
+ CtuluAnalyze ana=new CtuluAnalyze();
+ ana.setDesc(this.getName());
+ impl.getLauncher().launchBathyCompute(ana, impl.getCurrentProject(), this);
+ if (ana.containsErrorOrFatalError()) {
+ impl.error(ana.getResume());
+ return;
+ }
+
+ impl.getLauncher().launchQCompute(ana, impl.getCurrentProject(), this);
+ if (ana.containsErrorOrFatalError()) {
+ impl.error(ana.getResume());
+ return;
+ }
+ }
+ finally {
+ diProgress_.dispose();
+ }
+
+ impl.message(PivResource.getS("Calcul termin\xE9"), PivResource.getS("Le calcul s'est termin\xE9 avec succ\xE8s"), false);
+// impl.get2dFrame().getVisuPanel().setVelocitiesLayerVisible(false);
+ }
+ };
+
+ PivProgressionPanel pnProgress_=new PivProgressionPanel(r);
+ diProgress_ = pnProgress_.createDialog(impl.getParentComponent());
+ diProgress_.setOption(CtuluDialog.ZERO_OPTION);
+ diProgress_.setDefaultCloseOperation(CtuluDialog.DO_NOTHING_ON_CLOSE);
+ diProgress_.setTitle(r.getName());
+
+ r.start();
+ diProgress_.afficheDialogModal();
+ }
+
+ /**
+ * @return true Si toutes les donn\xE9es sont pr\xE9sentes pour un lancement.
+ */
+ public boolean isValide() {
+ if (impl.getCurrentProject().getTransect()==null) {
+ impl.error(PivResource.getS("Erreur"), PivResource.getS("Le transect n'a pas \xE9t\xE9 d\xE9fini"));
+ return false;
+ }
+ if (impl.getCurrentProject().getComputeParameters()==null) {
+ impl.error(PivResource.getS("Erreur"), PivResource.getS("Les param\xE8tres de calcul n'ont pas \xE9t\xE9 donn\xE9s"));
+ return false;
+ }
+ if (impl.getCurrentProject().getVelResults()==null) {
+ impl.error(PivResource.getS("Erreur"), PivResource.getS("Le projet ne contient pas de r\xE9sultats moyenn\xE9s"));
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public String getEnableCondition() {
+ return PivResource.getS("Un transect doit \xEAtre d\xE9fini et des r\xE9sultats moyenn\xE9s doivent exister");
+ }
+}
Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeFlowAction.java
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportTransectAction.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportTransectAction.java 2011-09-29 20:26:45 UTC (rev 6464)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportTransectAction.java 2011-09-29 20:30:31 UTC (rev 6465)
@@ -9,7 +9,7 @@
import org.fudaa.fudaa.piv.PivImplementation;
import org.fudaa.fudaa.piv.PivResource;
import org.fudaa.fudaa.piv.PivVisuPanel;
-import org.fudaa.fudaa.piv.io.PivTransectFileFormat;
+import org.fudaa.fudaa.piv.io.PivBathyFileFormat;
import org.fudaa.fudaa.piv.metier.PivTransect;
/**
@@ -55,7 +55,7 @@
}
File transectFile=fcTransect.getSelectedFile();
- FileReadOperationAbstract reader=PivTransectFileFormat.getInstance().createReader();
+ FileReadOperationAbstract reader=PivBathyFileFormat.getInstance().createReader();
CtuluIOOperationSynthese ret=reader.read(transectFile, null);
if (ret.getAnalyze().containsErrorOrFatalError()) {
impl.error(ret.getAnalyze().getResume());
Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivDischargeFileFormat.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivDischargeFileFormat.java (rev 0)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivDischargeFileFormat.java 2011-09-29 20:30:31 UTC (rev 6465)
@@ -0,0 +1,45 @@
+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 Discharge.dat de r\xE9sultats de d\xE9bit.
+ *
+ * @author Bertrand Marchand (mar...@de...)
+ * @version $Id$
+ */
+public class PivDischargeFileFormat extends FileFormatUnique {
+
+ private PivDischargeFileFormat() {
+ super(1);
+ nom_ = PivResource.getS("Piv discharge");
+ description_ = PivResource.getS("Fichier contenant les d\xE9bits calcul\xE9s");
+ extensions_=new String[]{"dat"};
+ }
+ static final PivDischargeFileFormat INSTANCE = new PivDischargeFileFormat();
+
+ /**
+ * Retourne le singleton pour instancier un reader ou un writer.
+ * @return Le singleton
+ */
+ public static PivDischargeFileFormat getInstance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Cr\xE9ation d'un reader.
+ * @return Le reader
+ */
+ public FileReadOperationAbstract createReader() {
+ return new PivDischargeReader();
+ }
+
+ /** Non implement\xE9 */
+ public FileWriteOperationAbstract createWriter() {
+ return null;
+ }
+
+}
Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivDischargeFileFormat.java
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivDischargeReader.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivDischargeReader.java (rev 0)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivDischargeReader.java 2011-09-29 20:30:31 UTC (rev 6465)
@@ -0,0 +1,139 @@
+/**
+ * @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 java.util.ArrayList;
+import java.util.List;
+
+import org.fudaa.ctulu.CtuluActivity;
+import org.fudaa.dodico.fortran.FileOpReadCharSimpleAbstract;
+
+import org.fudaa.fudaa.piv.PivResource;
+import org.fudaa.fudaa.piv.metier.PivFlowResults;
+
+/**
+ * Un lecteur pour les fichiers des r\xE9sultats de calcul de d\xE9bit.
+ *
+ * @author Bertrand Marchand (mar...@de...)
+ * @version $Id$
+ */
+public class PivDischargeReader extends FileOpReadCharSimpleAbstract implements CtuluActivity {
+
+ /** Drapeau d'interruption */
+ boolean bstop_;
+ /** Nb d'octets du fichier a lire pour stat sur pourcentage effectu\xE9 */
+ int nbOctets;
+
+ /**
+ * Le constructeur.
+ */
+ public PivDischargeReader() {
+ }
+
+ /**
+ * Lit les r\xE9sultats de debit et les retourne.
+ * @return Les r\xE9sultats
+ */
+ protected PivFlowResults internalRead() {
+ return readResults();
+ }
+
+ @Override
+ protected void processFile(final File _f) {
+ nbOctets = (int) _f.length();
+ }
+
+ /**
+ * Utilise FortranReader ( donc un buffer).
+ *
+ * @return les infos non bloquantes.
+ */
+ private synchronized PivFlowResults readResults() {
+ PivFlowResults res = new PivFlowResults();
+ List<Double> lx=new ArrayList<Double>();
+ List<Double> ly=new ArrayList<Double>();
+ List<Double> lvx=new ArrayList<Double>();
+ List<Double> lvy=new ArrayList<Double>();
+
+ 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);
+
+ // 1ere ligne
+ in_.readFields();
+ // Debit
+ res.setDischarge(in_.doubleField(1));
+ // Surface mouill\xE9e
+ res.setWettedArea(in_.doubleField(2));
+ // Vitesse moyenne
+ res.setMeanVelocity(in_.doubleField(3));
+
+ // Boucle jusque fin de fichier. Exception EOF si fin.
+ while (true) {
+ in_.readFields();
+
+ // X
+ lx.add(in_.doubleField(2));
+ // Y
+ ly.add(in_.doubleField(3));
+ // VX
+ lvx.add(in_.doubleField(5));
+ // VY
+ lvy.add(in_.doubleField(6));
+
+ lu+=84; // Si le formattage en fortran
+
+ if ((afficheAvance) && ((lu * 100 / nbOctets) >= (pourcentageEnCours + 20))) {
+ pourcentageEnCours += 20;
+ progress_.setProgression(pourcentageEnCours);
+ }
+ }
+ }
+ // Sortie normale
+ catch (final EOFException e) {
+ res.setX(lx.toArray(new Double[0]));
+ res.setY(ly.toArray(new Double[0]));
+ res.setVx(lvx.toArray(new Double[0]));
+ res.setVy(lvy.toArray(new Double[0]));
+ }
+ 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());
+ }
+
+ if (progress_ != null) {
+ progress_.setProgression(100);
+ }
+
+ return res;
+ }
+
+ /**
+ * Interruption asynchrone de l'activit\xE9 de lecture.
+ */
+ public void stop() {
+ bstop_ = true;
+ }
+}
Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivDischargeReader.java
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivFlowResults.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivFlowResults.java (rev 0)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivFlowResults.java 2011-09-29 20:30:31 UTC (rev 6465)
@@ -0,0 +1,138 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.fudaa.fudaa.piv.metier;
+
+/**
+ * Les r\xE9sultats d'un calcul de d\xE9bit.
+ * @author Bertrand Marchand (mar...@de...)
+ */
+public class PivFlowResults {
+ /** Le debit */
+ protected double discharge;
+ /** La surface mouill\xE9e */
+ protected double wettedArea;
+ /** La v\xE9locit\xE9 moyenne. */
+ protected double meanVelocity;
+ /** Les coordonn\xE9es X des points */
+ protected Double[] x;
+ /** Les coordonn\xE9es Y des points */
+ protected Double[] y;
+ /** Les vitesses suivant Vx */
+ protected Double[] vx;
+ /** Les vitesses suivant Vy */
+ protected Double[] vy;
+
+ /**
+ * @return Le debit
+ */
+ public double getDischarge() {
+ return discharge;
+ }
+
+ /**
+ * D\xE9finit le d\xE9bit
+ * @param _discharge Le d\xE9bit
+ */
+ public void setDischarge(double _discharge) {
+ this.discharge=_discharge;
+ }
+
+ /**
+ * @return La surface mouill\xE9e
+ */
+ public double getWettedArea() {
+ return wettedArea;
+ }
+
+ /**
+ * D\xE9finit la surface mouill\xE9e
+ * @param _wettedArea La surface mouill\xE9e
+ */
+ public void setWettedArea(double _wettedArea) {
+ this.wettedArea=_wettedArea;
+ }
+
+ /**
+ * @return La v\xE9locit\xE9 moyenne
+ */
+ public double getMeanVelocity() {
+ return meanVelocity;
+ }
+
+ /**
+ * D\xE9finit la v\xE9locit\xE9 moyenne
+ * @param _meanVelocity La v\xE9locit\xE9 moyenne
+ */
+ public void setMeanVelocity(double _meanVelocity) {
+ this.meanVelocity=_meanVelocity;
+ }
+
+ /**
+ * @return La coordonn\xE9e X du point d'index donn\xE9e.
+ */
+ public double getX(int _i) {
+ return x[_i];
+ }
+
+ /**
+ * @return La coordonn\xE9e Y du point d'index donn\xE9e.
+ */
+ public double getY(int _i) {
+ return y[_i];
+ }
+
+ /**
+ * @return La vitesse Vx du point d'index donn\xE9e.
+ */
+ public double getVx(int _i) {
+ return vx[_i];
+ }
+
+ /**
+ * @return La vitesse Vy du point d'index donn\xE9e.
+ */
+ public double getVy(int _i) {
+ return vy[_i];
+ }
+
+ /**
+ * @return Le nombre de points de v\xE9locit\xE9.
+ */
+ public int getNombre() {
+ return vy.length;
+ }
+
+ /**
+ * Definit les coordonn\xE9es X des points de r\xE9sultats
+ * @param _x Les coordonn\xE9es X
+ */
+ public void setX(Double[] _x) {
+ x=_x;
+ }
+
+ /**
+ * Definit les coordonn\xE9es Y des points de r\xE9sultats
+ * @param _y Les coordonn\xE9es Y
+ */
+ public void setY(Double[] _y) {
+ y=_y;
+ }
+
+ /**
+ * Definit les vitesses X des points de r\xE9sultats
+ * @param _vx Les vitesses X
+ */
+ public void setVx(Double[] _vx) {
+ vx=_vx;
+ }
+
+ /**
+ * Definit les vitesses Y des points de r\xE9sultats
+ * @param _vy Les vitesses Y
+ */
+ public void setVy(Double[] _vy) {
+ vy=_vy;
+ }
+}
Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivFlowResults.java
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
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 2011-09-29 20:26:45 UTC (rev 6464)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2011-09-29 20:30:31 UTC (rev 6465)
@@ -24,7 +24,8 @@
import org.fudaa.fudaa.piv.io.PivHFileFormat;
import org.fudaa.fudaa.piv.io.PivImgRefFileFormat;
import org.fudaa.fudaa.piv.io.PivParamFileFormat;
-import org.fudaa.fudaa.piv.io.PivTransectFileFormat;
+import org.fudaa.fudaa.piv.io.PivBathyFileFormat;
+import org.fudaa.fudaa.piv.io.PivDischargeFileFormat;
/**
* Le projet contenant toutes les donn\xE9es. Chauqe projet peut \xEAtre sauv\xE9/relu
@@ -59,6 +60,8 @@
protected PivTransect transect;
/** Les r\xE9sultats de vitesses */
protected PivVelResults velResults;
+ /** Les r\xE9sultats de d\xE9bit calcul\xE9 */
+ protected PivFlowResults flowResults;
/** La taille des images transform\xE9es */
protected Dimension imgTransfSize=null;
/** True : Les images transform\xE9es ont \xE9t\xE9 modifi\xE9es */
@@ -460,11 +463,19 @@
CtuluIOOperationSynthese ret=reader.read(velFile, null);
velResults=(PivVelResults)ret.getSource();
}
+
+ // Les r\xE9sultats de d\xE9bit
+ File flowFile=new File(outputDir,"Discharge.dat");
+ if (flowFile.exists()) {
+ FileReadOperationAbstract reader=PivDischargeFileFormat.getInstance().createReader();
+ CtuluIOOperationSynthese ret=reader.read(flowFile, null);
+ flowResults=(PivFlowResults)ret.getSource();
+ }
// Un transect
File transectFile=new File(outputDir,"bathy.dat");
if (transectFile.exists()) {
- FileReadOperationAbstract reader=PivTransectFileFormat.getInstance().createReader();
+ FileReadOperationAbstract reader=PivBathyFileFormat.getInstance().createReader();
CtuluIOOperationSynthese ret=reader.read(transectFile, null);
transect=(PivTransect)ret.getSource();
}
@@ -500,12 +511,6 @@
else {
FuLog.trace("Pas de points de grille.");
}
- if (velResults!=null) {
- FuLog.trace("R\xE9sultats charg\xE9s");
- }
- else {
- FuLog.trace("Pas de r\xE9sultats.");
- }
if (transect!=null) {
FuLog.trace("Transect charg\xE9");
}
@@ -524,6 +529,18 @@
else {
FuLog.trace("Pas d'images transform\xE9es.");
}
+ if (velResults!=null) {
+ FuLog.trace("R\xE9sultats de vitesses charg\xE9s");
+ }
+ else {
+ FuLog.trace("Pas de r\xE9sultats de vitesses.");
+ }
+ if (flowResults!=null) {
+ FuLog.trace("R\xE9sultats de d\xE9bit charg\xE9s");
+ }
+ else {
+ FuLog.trace("Pas de r\xE9sultats de d\xE9bit.");
+ }
FuLog.trace("*** Fin du chargement ***");
isModified=false;
@@ -579,7 +596,7 @@
// Un transect
if (transect!=null) {
File transectFile=new File(outputDir,"bathy.dat");
- FileWriteOperationAbstract writer=PivTransectFileFormat.getInstance().createWriter();
+ FileWriteOperationAbstract writer=PivBathyFileFormat.getInstance().createWriter();
CtuluIOOperationSynthese ret=writer.write(transect, transectFile, null);
}
@@ -725,7 +742,26 @@
isModified=true;
fireProjectStateChanged("velResults");
}
+
+ /**
+ * Retourne les r\xE9sultats de d\xE9bit.
+ * @return Les r\xE9sultats, ou <tt>null</tt> s'ils n'ont pas \xE9t\xE9 d\xE9finis.
+ */
+ public PivFlowResults getFlowResults() {
+ return flowResults;
+ }
+ /**
+ * Definit les r\xE9sultats de d\xE9bit, et notifie que le projet a \xE9t\xE9
+ * modifi\xE9.
+ * @param _res Les r\xE9sultats. <tt>null</tt> est autoris\xE9.
+ */
+ public void setFlowResults(PivFlowResults _res) {
+ flowResults=_res;
+ isModified=true;
+ fireProjectStateChanged("flowResults");
+ }
+
void fireProjectStateChanged(String _prop) {
for (PivProjectStateListener listener : listeners) {
listener.projectStateChanged(_prop);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|