Le 13/08/2012 15:07, Eric Chatellier a écrit :
Le 13/08/2012 15:08, Loic GASCHE a écrit :
Oui je suis d'accord, mais le fait qu'il manque des dimensions ne peut-il pas venir du fait que la matrice n'est pas créée comme il faut, parce que Fgroup n'est pas calculé (par exemple) ? Ce qui modifierait les dimensions de la matrice ? Je m'acharne sur Fgroup car j'ai mis un log dessus mais je ne le trouve pas dans les simulation.log alors je me dis qu'il y a peut-être un problème de ce côté ?
Dans ton cas, tu appelles getSubMatrix() sur une matrice qui existe. D'où viens cette matrice ? Tu as un exemple de code qui la récupère ou qui la crée ?
public MatrixND TotalFishingMortality (TimeStep step, Population pop, MatrixND FishingMortalityPerGroup)throws TopiaException { // Zone zone double Ftemp=0; double Fpop=0; double Nbre; MatrixND tfmMatrix = FishingMortalityPerGroup.copy(); tfmMatrix.setName(ResultName.MATRIX_TOTAL_FISHING_MORTALITY); log.info("tfmMatrix = " + tfmMatrix); log.info("DimensionNames() = " + tfmMatrix.getDimensionNames()); List<Population> populations = new ArrayList(); populations.add(pop); //log.info("pop = " + pop + "Year=" + step.getYear()); //List<Population> populations = getPopulations(step); List<PopulationGroup> groups = pop.getPopulationGroup(); // On ne fait l'analyse que sur les groupes representatifs double AgeMin = context.get(pop).getAsDouble("AgeMin"); double AgeMax = context.get(pop).getAsDouble("AgeMax"); Nbre= AgeMax-AgeMin+1; log.info("AgeMin = " + AgeMin); log.info("AgeMax = " + AgeMax); tfmMatrix = tfmMatrix.getSubMatrix(2, AgeMin, Nbre); // MatrixND getSubMatrix(int dim,,int start, int nb) tfmMatrix = tfmMatrix.meanOverDim(2); log.info("tfmMatrix = " + tfmMatrix); //Fpop = Ftemp / groupesRepresentatifs.size(); // Moyenne sur les groupes representatifs //log.info("Fpop= " + Fpop + "pop=" + pop +"Year=" + step.getYear()); return tfmMatrix; }