Re Salut Benjamin Voici le fichier qu'on regardait tout à l'heure A+ Hilaire -- Hilaire Drouineau IFREMER, département EMH Centre de Nantes - BP 21105 - 44311 Nantes Cedex 3 tel : +33 (0)2 40 37 43 06 - fax : +33 (0)2 40 37 40 75 email : hilaire.drouineau@ifremer.fr - web : http://www.ifremer.fr ***************************************************************** // remplace: matriceCatchRatePerStrategyMet, // Abondances, // Biomasse, // matriceCatchRatePerStrategyMet, // matriceCatchPerStrategyMet, // matriceCatchWeightPerStrategyMet //corps de Calcul Mois //j'appelle AbondanceBis la matrices des abondances après recrutement, repro, migration changement de classe //Abondandance, la matrice à la fin du pas de temps //je code en ecmascript var iAbbis=Abondancesbis.iterateur(); //les matrice AbondancesBis, Abondance et Biomasses sont "rangées" pareil //on peut donc utiliser des itérateurs en "parrallèle (qui bougent en même temps iAbbis.next(); var iBiomasse=Biomasse.iterateur(); iBiomasse.next(); for (var iAb=Abondances.iterateur();iAb.next();){ var coordonnes=iAb.getSemanticsCoordinates(); var classe=coordonnes[0]; //a verfier var zone=coordonnes[1]; //a verfier //Calcul des FisgingMortality et TotalFishingMortality var TF=0; for (var istr=SiMatrice.getListeStrategies().iterator();istr.hasNext();){ var str=istr.next(); var ListeMetiers=str.getSetOfVessels().getMetiers(); //eventuellement si loopoverallmetie=true, faire ListeMetiers=SiMatrice.getListeMetiers() for (var imetier=ListeMetiers.iterator();imetier.hasNext();){ var metier=imetier.next(); var f=FishingMortality(date, str, metier, classe, zone); //Pas de changement matriceCatchRatePerStrategyMet.setValue(str, metier, classe, zone,f); TF+=f; } } //calcul de TotalCatchRate et SurvivalCatchRate var TotalCatchRate=(1-exp(-TF-classe.getMortaliteNaturelle()/12.0))*TF/(TF+classe.getMortaliteNaturelle()/12.0); var SurvivalRate=exp(-TF-classe.getMortaliteNaturelle()/12.0); //Calcul des abondances et biomasse à t+1 var n=SurvivalRate*iAbbis.getValue(); iAb.setValue(n); iBiomasse.setValue(n*classe.getPoidsMoyen()); //Calcul des CatchRatePerStrategyMet et CatchPerStrategyMet for (var istr=SiMatrice.getListeStrategies().iterator();istr.hasNext();){ var str=istr.next(); var ListeMetiers=str.getSetOfVessels().getMetiers(); //éventuellement si loopoverallmetie=true, faire ListeMetiers=SiMatrice.getListeMetiers() for (var imetier=ListeMetiers.iterator();imetier.hasNext();){ var metier=imetier.next(); var cr=matriceCatchRatePerStrategyMet.getValue(str,metier,classe,zone)/TF*TotalCatchRate;//dans matriceCatchRatePerStrategyMet on a déjà les fishingMortality matriceCatchRatePerStrategyMet.setValue(str,metier,classe,zone,cr); matriceCatchPerStrategyMet.setValue(str,metier,classe,zone, cr*iAbbis.getValue()); matriceCatchWeightPerStrategyMet.setValue(str,metier,classe,zone, cr*iAbbis.getValue()*classe.getPoidsMoyen()); } } iAbbis.next(); iBiomasse.next(); }