package formules;import fr.ifremer.isisfish.entities.*;import org.codelutin.math.matrix.*;import fr.ifremer.isisfish.types.Date;import fr.ifremer.isisfish.types.Month;import fr.ifremer.isisfish.types.RangeOfValues;import fr.ifremer.isisfish.types.TimeUnit;import java.util.*;public class fr_ifremer_isisfish_entities_Equation_1175514899045_0_5636186607743631 implements fr.ifremer.isisfish.equation.PopulationReproductionEquation {public double compute(fr.ifremer.isisfish.simulator.SimulationContext context, org.codelutin.math.matrix.MatrixND N, fr.ifremer.isisfish.entities.Population pop, fr.ifremer.isisfish.types.Month month, double prepro, java.util.List<Zone> zoneRepro, java.util.List<PopulationGroup> groups, java.util.List<Zone> zones, org.codelutin.math.matrix.MatrixND result) throws Exception {//double eff = 0;

// dans cette exemple on parcours la matrice entiere
// ce n'est surement pas ce qu'il faut. Il ne faut
// sans ne parcourir que les zoneRepro
//for(int ic=0;ic<groups.size();ic++){
  //   PopulationGroup c = groups.get(ic);
    // for(int iz=0; iz<zones.size();iz++){
      // Zone z =zoneRepro.get(iz);
       //eff += N.getValue(c, z);
     //}
//}

// on met a jour la matrice resultat, qui servira
// ensuite. Il ne faut pas oublier de multiplier
// par prepro la valeur que l'on affecte a la matrice

//for(int izr=0; izr<zoneRepro.size(); izr++){
  //Zone zr = zoneRepro.get(izr);
  //result.setValue(zr, eff * prepro);
//}
//return 0;
double tot = 0.0;

for(Zone zr : zoneRepro){ // boucle sur les zones repro
tot = 0; // on remet tot a 0 car il contient le nb d oeufs de la zone 
//précédente dans la boucle

    for (PopulationGroup cr : groups){    // boucle sur TOUTES les classes

tot += 
N.getValue(cr,zr)*cr.getReproductionRate()*cr.getMeanWeight()*0.05*1000*prepro*0.58; 

}// fin de la boucle sur les classes
  
    result.setValue(zr,tot); // on affecte le nb d oeufs a la zone
  
} // fin de boucle pour les zones repro

return 0;



}
}
