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. |