Author: echatellier Date: 2015-06-25 12:26:46 +0000 (Thu, 25 Jun 2015) New Revision: 372 Url: http://forge.codelutin.com/projects/isis-fish-data/repository/revisions/372 Log: Fix total fishing mortality. Add lbarTotal compute Modified: trunk/resultinfos/MatrixFishingMortality.java trunk/resultinfos/MatrixTotalFishingMortality.java trunk/scripts/SiMatrix.java trunk/simulators/DefaultSimulator.java Modified: trunk/resultinfos/MatrixFishingMortality.java =================================================================== --- trunk/resultinfos/MatrixFishingMortality.java 2015-06-25 11:55:33 UTC (rev 371) +++ trunk/resultinfos/MatrixFishingMortality.java 2015-06-25 12:26:46 UTC (rev 372) @@ -35,16 +35,7 @@ public static final String NAME = MatrixFishingMortality.class.getSimpleName(); - protected String[] necessaryResult = { - MatrixFishingMortalityPerGroup.NAME - }; - @Override - public String[] getNecessaryResult() { - return necessaryResult; - } - - @Override public String getDescription() { return "do the doc of Result MatrixFishingMortality"; } Modified: trunk/resultinfos/MatrixTotalFishingMortality.java =================================================================== --- trunk/resultinfos/MatrixTotalFishingMortality.java 2015-06-25 11:55:33 UTC (rev 371) +++ trunk/resultinfos/MatrixTotalFishingMortality.java 2015-06-25 12:26:46 UTC (rev 372) @@ -31,7 +31,16 @@ public static final String NAME = MatrixTotalFishingMortality.class.getSimpleName(); + protected String[] necessaryResult = { + MatrixFishingMortalityPerGroup.NAME + }; + @Override + public String[] getNecessaryResult() { + return necessaryResult; + } + + @Override public String getDescription() { return "do the doc of Result MatrixTotalFishingMortality"; } Modified: trunk/scripts/SiMatrix.java =================================================================== --- trunk/scripts/SiMatrix.java 2015-06-25 11:55:33 UTC (rev 371) +++ trunk/scripts/SiMatrix.java 2015-06-25 12:26:46 UTC (rev 372) @@ -1231,7 +1231,7 @@ */ public MatrixND totalFishingMortality(TimeStep step, Population pop, MatrixND fishingMortalityPerGroup) throws TopiaException { MatrixND tfmMatrix = fishingMortalityPerGroup.copy(); - tfmMatrix.setName(MatrixFishingMortality.NAME); + tfmMatrix.setName(MatrixTotalFishingMortality.NAME); //log.info("tfmMatrix = " + tfmMatrix); List<PopulationGroup> groups = pop.getPopulationGroup(); @@ -1331,8 +1331,36 @@ return LbarMatrix; } - + /** + * Permet de calculer la longueur moyenne total (LbarTotal) d'une population. + * + * @param step + * @param pop + * @param N + * @return + */ + public MatrixND LbarTotal(TimeStep step, Population pop, MatrixND N) throws TopiaException { + MatrixND LbarTotalMatrix = N.copy(); + LbarTotalMatrix = LbarTotalMatrix.sumOverDim(1).reduceDims(1); // reduction des zones + double ab = LbarTotalMatrix.sumAll(); + + LbarTotalMatrix.setName(MatrixLbarTotal.NAME); + List<PopulationGroup> groups = pop.getPopulationGroup(); + + for (PopulationGroup group : groups) { + LbarTotalMatrix.setValue(group, LbarTotalMatrix.getValue(group) * group.getLength()); + } + + LbarTotalMatrix = LbarTotalMatrix.sumOverDim(0); // Somme sur les groupes + LbarTotalMatrix = LbarTotalMatrix.reduce(); + + LbarTotalMatrix = LbarTotalMatrix.divs(ab); + + return LbarTotalMatrix; + } + + /** * Permet de sortir le recrutement par pas de temps. * @param step * @param pop Modified: trunk/simulators/DefaultSimulator.java =================================================================== --- trunk/simulators/DefaultSimulator.java 2015-06-25 11:55:33 UTC (rev 371) +++ trunk/simulators/DefaultSimulator.java 2015-06-25 12:26:46 UTC (rev 372) @@ -324,7 +324,7 @@ MatrixND landing = populationMonitor.getCatch(pop).copy(); if (discard != null) { landing = landing.minus(discard); - } + } MatrixND landingweight = siMatrix.matrixToWeightMatrix(step, 2, MatrixLandingWeight.NAME, landing); @@ -482,7 +482,12 @@ MatrixND Lbar = siMatrix.Lbar(step, pop, N); resManager.addResult(step, pop, Lbar); } - + + if (resManager.isEnabled(MatrixLbarTotal.NAME)) { + MatrixND Lbar = siMatrix.LbarTotal(step, pop, N); + resManager.addResult(step, pop, Lbar); + } + if (resManager.isEnabled(MatrixRecruitment.NAME)) { MatrixND Recruitment = siMatrix.Recruitment(step, pop); resManager.addResult(step, pop, Recruitment);