Author: jcouteau Date: 2009-03-10 17:53:18 +0000 (Tue, 10 Mar 2009) New Revision: 71 Added: trunk/exports/SensitivityBiomass.java Log: Export biomass for sensitivity analysis Added: trunk/exports/SensitivityBiomass.java =================================================================== --- trunk/exports/SensitivityBiomass.java (rev 0) +++ trunk/exports/SensitivityBiomass.java 2009-03-10 17:53:18 UTC (rev 71) @@ -0,0 +1,84 @@ +package exports; + +import static org.codelutin.i18n.I18n._; + +import java.io.Writer; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.codelutin.math.matrix.MatrixIterator; +import org.codelutin.math.matrix.MatrixND; + +import scripts.ResultName; + +import fr.ifremer.isisfish.datastore.SimulationStorage; +import fr.ifremer.isisfish.entities.Population; +import fr.ifremer.isisfish.entities.PopulationGroup; +import fr.ifremer.isisfish.entities.Zone; +import fr.ifremer.isisfish.export.SensitivityExport; +import fr.ifremer.isisfish.types.Date; + +public class SensitivityBiomass implements SensitivityExport { + + /** to use log facility, just put in your code: log.info("..."); */ + static private Log log = LogFactory.getLog(SensitivityBiomass.class); + + protected String[] necessaryResult = { ResultName.MATRIX_BIOMASS }; + + @Override + public void export(SimulationStorage simulation, Writer out) + throws Exception { + double biomass = 0.0; + int lastDate = 0; + for (Population pop : simulation.getParameter().getPopulations()) { + MatrixND mat = simulation.getResultStorage().getMatrix(pop, + ResultName.MATRIX_BIOMASS); + for (MatrixIterator i = mat.iterator(); i.hasNext();) { + i.next(); + Object[] sems = i.getSemanticsCoordinates(); + Date date = (Date) sems[0]; + if (date.getDate()>lastDate){ + lastDate=date.getDate(); + } + + } + } + for (Population pop : simulation.getParameter().getPopulations()) { + MatrixND mat = simulation.getResultStorage().getMatrix(pop, ResultName.MATRIX_BIOMASS); + for (MatrixIterator i=mat.iterator(); i.hasNext();) { + i.next(); + Object [] sems = i.getSemanticsCoordinates(); + Date date = (Date)sems[0]; + PopulationGroup group = (PopulationGroup)sems[1]; + Zone zone = (Zone)sems[2]; + + if(date.getDate()==lastDate){ + biomass=biomass+i.getValue(); + } + } + } + out.write(Double.toString(biomass)); + + } + + @Override + public String getDescription() { + return _("Biomass for the last time step. Biomass is the sum on the groups and zones"); + } + + @Override + public String getExportFilename() { + return "SensitivityBiomass"; + } + + @Override + public String getExtensionFilename() { + return ".csv"; + } + + @Override + public String[] getNecessaryResult() { + return this.necessaryResult; + } + +}