Author: echatellier Date: 2016-01-20 16:48:54 +0100 (Wed, 20 Jan 2016) New Revision: 281 Url: http://forge.codelutin.com/projects/isis-fish-docs/repository/revisions/281 Log: Add change doc for results Modified: trunk/src/site/rst/v4/user/changes/changements44.rst Modified: trunk/src/site/rst/v4/user/changes/changements44.rst =================================================================== --- trunk/src/site/rst/v4/user/changes/changements44.rst 2016-01-06 13:51:12 UTC (rev 280) +++ trunk/src/site/rst/v4/user/changes/changements44.rst 2016-01-20 15:48:54 UTC (rev 281) @@ -5,7 +5,7 @@ .. * $Id$ .. * $HeadURL$ .. * %% -.. * Copyright (C) 2011 - 2015 Ifremer, CodeLutin, Chatellier Eric +.. * Copyright (C) 2011 - 2016 Ifremer, CodeLutin, Chatellier Eric .. * %% .. * This program is free software: you can redistribute it and/or modify .. * it under the terms of the GNU General Public License as @@ -153,6 +153,77 @@ Pour utiliser le nouveau code, il faudra le remplacer par ``MATRIX_ABUNDANCE.NAME``. +Export +------ + +Les exports ont été amélioré pour pouvoir être effectué durant la simulation. Auparavant, les exports +étaient effectués à la fin de la simulation, et si celle-ci échouait, les exports n'étaits pas disponibles. + +Pour rappel, dans ISIS-Fish 4.3, un export se défini de la façon suivante: + +.. class:: java + +:: + + public class Abundances implements Export { + + public void export(SimulationStorage simulation, Writer out) throws Exception { + for (Population pop : simulation.getParameter().getPopulations()) { + MatrixND mat = simulation.getResultStorage().getMatrix(pop, MatrixAbundance.NAME); + for (MatrixIterator i = mat.iterator(); i.hasNext();) { + i.next(); + Object[] sems = i.getSemanticsCoordinates(); + TimeStep step = (TimeStep) sems[0]; + PopulationGroup group = (PopulationGroup) sems[1]; + Zone zone = (Zone) sems[2]; + + double val = i.getValue(); + out.write(pop.getName() + ";" + group.getId() + ";" + zone.getName() + ";" + step.getStep() + ";" + val + "\n"); + } + } + } + } + +Cet export étend l'interface ``Export`` et implémente une unique méthode ``export`` appelée à la fin +de la simualtion. + +Cet export peut toujours se définir ainsi dans la version 4.4, mais il est aussi possible de +l'implémenter d'une autre façon: + +.. class:: java + +:: + + public class Abundances implements ExportStep { + + @Override + public void export(SimulationStorage simulation, TimeStep step, Writer out) throws Exception { + for (Population pop : simulation.getParameter().getPopulations()) { + MatrixND mat = simulation.getResultStorage().getMatrix(step, pop, MatrixAbundance.NAME); + for (MatrixIterator i = mat.iterator(); i.hasNext();) { + i.next(); + Object[] sems = i.getSemanticsCoordinates(); + PopulationGroup group = (PopulationGroup) sems[1]; + Zone zone = (Zone) sems[2]; + + double val = i.getValue(); + out.write(pop.getName() + ";" + group.getId() + ";" + zone.getName() + ";" + step.getStep() + ";" + val + "\n"); + } + } + } + + @Override + public void exportEnd(SimulationStorage simulation, Writer out) throws Exception { + + } + } + +Ces nouveaux exports étendent une nouvelle interface ``ExportStep`` et doivent implémenter deux nouvelles méthodes: + + * ``export``: appelée à la fin de chaque pas de temps + * ``exportEnd``: appelée à la fin de la simulation + + Mortalité par pêche "autres" ---------------------------- Une equation de mortalité par pêche "autres" a été ajoutée dans l'onglet "Stocks". Elle permet de spécifier une mortalité due à des flottilles non explicitement modélisées. La structure est identique à celle de l'equation de mortalité naturelle (par groupe et potentiellement par zone).