<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><div dir="ltr">Hi<div>I try to use both Scatterv and GAtterv function in my algorithm but when I stock the same value "CFC [NIV [nv] .tab_cls [rang_proc]]. taille_ptt_trame_cls" in the two variables "sendcounts" and "recvcount" of Scatterv does not give me the value "CFC [NIV [nv] .tab_cls [rang_proc]]. taille_ptt_trame_cls" for the variable recvcount (i use 2 process for running this program):<br></div><div><div>#include <stdio.h></div><div>#include <stdio.h></div><div>#include <stdlib.h></div><div>#include <string.h></div><div>#include <math.h></div><div>#include "mpi.h"</div><div><br></div><div>struct Etat_str</div><div>{</div><div><span class="" style="white-space:pre">       </span>int nbr_action;</div><div><span class="" style="white-space:pre">    </span>int indice_cls;</div><div><span class="" style="white-space:pre">    </span>int indice_Niv;</div><div><span class="" style="white-space:pre">    </span>int R[4];</div><div><span class="" style="white-space:pre">  </span>int P[4][20];</div><div><span class="" style="white-space:pre">      </span>int PI[4][20]; </div><div><span class="" style="white-space:pre">       </span>int taille_ptt_trame;</div><div><span class="" style="white-space:pre">      </span>int ptt_trame[100];</div><div><br></div><div>};</div><div>struct FU_par_Niv_str</div><div>{</div><div><span class="" style="white-space:pre">  </span>int indice_cls;</div><div><span class="" style="white-space:pre">    </span>double tab_etat_FU_t[2][20];</div><div><span class="" style="white-space:pre">       </span>double tab_etat_FU_t_plus_1[2][20];</div><div>};</div><div><br></div><div>struct NIV_str</div><div>{</div><div><span class="" style="white-space:pre"> </span>int long_trame;</div><div><span class="" style="white-space:pre">    </span>int nbr_cls;</div><div><span class="" style="white-space:pre">       </span>int tab_cls[30];</div><div><span class="" style="white-space:pre">   </span>int tab_etat_restr[30];</div><div><span class="" style="white-space:pre">    </span>int nbr_etat_restr;                                         </div><div><span class="" style="white-space:pre">      </span>int tab_dplc[20];</div><div><span class="" style="white-space:pre">  </span>int tab_nomb_elm[20]; </div><div><span class="" style="white-space:pre">        </span>int tab_donnĂ©_total[200];</div><div><span class="" style="white-space:pre"> </span>int deplacement[30];</div><div><span class="" style="white-space:pre">       </span>int count[30];</div><div><br></div><div>};</div><div><br></div><div>struct CFC_str</div><div>{</div><div><span class="" style="white-space:pre">     </span>int nb_etat_CFC;</div><div><span class="" style="white-space:pre">   </span>int nbr_etat_restrient_CFC;</div><div><span class="" style="white-space:pre">        </span>int nbr_etat_appartient_pas_CFC;</div><div><span class="" style="white-space:pre">   </span>int nbr_etat_successeur_CFC = 0;</div><div><span class="" style="white-space:pre">   </span>double tab_Vt_instantane[30];</div><div><span class="" style="white-space:pre">      </span>int tab_etat_CFC[20];</div><div><span class="" style="white-space:pre">      </span>int tab_etat_appartient_pas_CFC[30];</div><div><span class="" style="white-space:pre">       </span>int tab_etat_successeur_CFC[30 * 30];</div><div><span class="" style="white-space:pre">      </span>int tab_etat_restrient_CFC[30];</div><div><span class="" style="white-space:pre">    </span>int taille_ptt_trame_cls;</div><div><span class="" style="white-space:pre">  </span>int ptt_trame_cls[100];</div><div><span class="" style="white-space:pre">    </span>//int tab_emplacement[20];</div><div>};</div><div><br></div><div>int main(int argc, char** argv)</div><div>{</div><div><span class="" style="white-space:pre"> </span>int          nbr_proc, rang_proc;</div><div><span class="" style="white-space:pre"> </span>int recvcount;</div><div><span class="" style="white-space:pre">     </span>int          ierr, i, itask, entet;</div><div><span class="" style="white-space:pre">       </span>int<span class="" style="white-space:pre">       </span>        buffsize, sendcounts[2048], displs[2048], *receive_counts, *receive_displacements;</div><div><span class="" style="white-space:pre">        </span>double       **sendbuff, *recvbuff, *buffer1, buffsum, buffsums[2048], buffer[3];</div><div><span class="" style="white-space:pre">   </span>double       inittime, totaltime;</div><div><span class="" style="white-space:pre">   </span>int espace_memoir_trame = 150;</div><div><br></div><div><span class="" style="white-space:pre">    </span>double gama = 0.5;</div><div><span class="" style="white-space:pre"> </span>double sigma = 0.2;</div><div><span class="" style="white-space:pre">        </span>int teste;</div><div><span class="" style="white-space:pre"> </span>int  m1 = 10, n1 = 16;</div><div><br></div><div><span class="" style="white-space:pre">       </span>const int nbr_etat = 8;</div><div><span class="" style="white-space:pre">    </span>int buffsize1[nbr_etat];</div><div><span class="" style="white-space:pre">   </span>struct Etat_str Etat[nbr_etat];</div><div><span class="" style="white-space:pre">    </span>struct FU_par_Niv_str FU_par_Niv[nbr_etat];</div><div><br></div><div><br></div><div><span class="" style="white-space:pre">      </span>int E[16][10] = { { 2, 2, 0, 1, 0, 0, 0, 0, 0, 0 }, { 2, 4, 1, 0, 0, 0, 0, 0, 0, 0 }, { 2, 1, 1, 0, 0, 0, 0, 0, 0, 0 }, { 2, 3, 0, 1, 0, 0, 0, 0, 0, 0 }, { 1, 2, 0, 0, 0, 1, 0, 0, 0, 0 }, { 2, 4, 0, 0, 1, 0, 0, 0, 0, 0 }, { 2, 1, 0, 0, 0, 1, 0, 0, 0, 0 }, { 2, 2, 0, 0, 0, 0, 1, 0, 0, 0 }, { 2, 1, 0, 0, 0, 0, 0, 1, 0, 0 }, { 2, 6, 0, 0, 0, 0, 1, 0, 0, 0 }, { 2, 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { 3, 2, 0, 0, 1, 0, 0, 0, 0, 0 }, { 3, 5, 0, 0, 0, 0, 0, 0, 1, 0 }, { 3, 1, 0, 0, 0, 0, 0, 0, 0, 1 }, { 2, 5, 0, 0, 0, 0, 0, 0, 0, 1 }, { 2, 4, 0, 0, 0, 0, 0, 0, 1, 0 } };</div><div><br></div><div><span class="" style="white-space:pre">       </span>int pas = 0;</div><div><span class="" style="white-space:pre">       </span>for (int i = 0; i < nbr_etat; i++) {</div><div><span class="" style="white-space:pre">            </span>Etat[i].nbr_action = E[pas][0];</div><div><span class="" style="white-space:pre">            </span>int s1 = 0;</div><div><span class="" style="white-space:pre">                </span>for (int j = pas; j < (pas + Etat[i].nbr_action); j++)</div><div><span class="" style="white-space:pre">              </span>{</div><div><span class="" style="white-space:pre">                  </span>Etat[i].R[s1] = E[j][1];</div><div><span class="" style="white-space:pre">                   </span>int s2 = 0;</div><div><span class="" style="white-space:pre">                        </span>for (int k = 2; k < m1; k++)</div><div><span class="" style="white-space:pre">                    </span>{</div><div><span class="" style="white-space:pre">                          </span>Etat[i].P[s1][s2] = E[j][k];</div><div><span class="" style="white-space:pre">                               </span>s2++;</div><div><span class="" style="white-space:pre">                      </span>}</div><div><span class="" style="white-space:pre">                  </span>s1++;</div><div><span class="" style="white-space:pre">              </span>}</div><div><span class="" style="white-space:pre">          </span>pas += E[pas][0];</div><div><span class="" style="white-space:pre">      </span>}</div><div><span class="" style="white-space:pre">  </span>struct CFC_str CFC[20];</div><div><span class="" style="white-space:pre">    </span>struct NIV_str NIV[20];</div><div><span class="" style="white-space:pre">    </span>int  m = 8, n = 8;</div><div><span class="" style="white-space:pre">    </span>int A[8][8] = { { 1, 1, 0, 0, 0, 0, 0, 0 }, { 1, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 1, 0, 0, 0, 0 }, { 0, 0, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 0, 0 }, { 0, 0, 1, 0, 1, 0, 0, 0 }, { 0, 0, 1, 0, 0, 0, 1, 1 }, { 0, 0, 0, 0, 0, 0, 1, 1 } };</div><div><span class="" style="white-space:pre">  </span>int A1[8][8];</div><div><span class="" style="white-space:pre">      </span>for (int i = 0; i < m; i++) {</div><div><span class="" style="white-space:pre">           </span>for (int j = 0; j < n; j++)</div><div><span class="" style="white-space:pre">             </span>{</div><div><span class="" style="white-space:pre">                  </span>A1[i][j] = A[i][j];</div><div><span class="" style="white-space:pre">                </span>}</div><div><span class="" style="white-space:pre">  </span>}</div><div><span class="" style="white-space:pre">  </span>for (int i = 0; i < m; i++) {</div><div><span class="" style="white-space:pre">           </span>for (int j = 0; j < n; j++)</div><div><span class="" style="white-space:pre">             </span>if (i == j)</div><div><span class="" style="white-space:pre">                </span>{</div><div><span class="" style="white-space:pre">                  </span>A[i][j] = 1;</div><div><span class="" style="white-space:pre">               </span>}</div><div><span class="" style="white-space:pre">          </span>else</div><div><span class="" style="white-space:pre">               </span>{</div><div><span class="" style="white-space:pre">                  </span>A[i][j] = A[i][j];</div><div><span class="" style="white-space:pre">         </span>}</div><div><br></div><div><span class="" style="white-space:pre"> </span>}</div><div><br></div><div><span class="" style="white-space:pre"> </span>for (int k = 0; k < n; k++) {</div><div><span class="" style="white-space:pre">           </span>for (int j = 0; j < n; j++) {</div><div><span class="" style="white-space:pre">                   </span>for (int i = 0; i < n; i++) {</div><div><br></div><div><span class="" style="white-space:pre">                          </span>if ((A[i][j] + (A[i][k] * A[k][j])) >= 1)</div><div><span class="" style="white-space:pre">                                   </span>A[i][j] = 1;//>=1</div><div><span class="" style="white-space:pre">                       </span>}</div><div><span class="" style="white-space:pre">          </span>}</div><div><span class="" style="white-space:pre">  </span>}</div><div><span class="" style="white-space:pre">  </span>int tab_etat[nbr_etat];</div><div><span class="" style="white-space:pre">    </span>int tab_etat_echange[nbr_etat];</div><div><span class="" style="white-space:pre">    </span>for (int i = 0; i < n; i++)</div><div><span class="" style="white-space:pre">     </span>{</div><div><span class="" style="white-space:pre">          </span>tab_etat[i] = i;</div><div><span class="" style="white-space:pre">           </span>tab_etat_echange[i] = i;</div><div><span class="" style="white-space:pre">   </span>}</div><div><span class="" style="white-space:pre">  </span>i = 0;</div><div><span class="" style="white-space:pre">     </span>int nbr_cfc = 0;</div><div><span class="" style="white-space:pre">   </span>while (i < n)</div><div><span class="" style="white-space:pre">   </span>{</div><div><span class="" style="white-space:pre">          </span>if ((tab_etat[i] != n) && (i != n - 1))</div><div><span class="" style="white-space:pre">            </span>{</div><div><span class="" style="white-space:pre">                  </span>int p = 0;</div><div><span class="" style="white-space:pre">                 </span>nbr_cfc++;</div><div><span class="" style="white-space:pre">                 </span>tab_etat[i] = n;</div><div><span class="" style="white-space:pre">                   </span>CFC[nbr_cfc - 1].tab_etat_CFC[p] = i;</div><div><span class="" style="white-space:pre">                      </span>Etat[i].indice_cls = nbr_cfc - 1;</div><div><span class="" style="white-space:pre">                  </span>int j = 0;</div><div><span class="" style="white-space:pre">                 </span>while (j < n)</div><div><span class="" style="white-space:pre">                   </span>{</div><div><span class="" style="white-space:pre">                          </span>if ((tab_etat[j] != n) && (j != i))</div><div><span class="" style="white-space:pre">                                </span>{</div><div><span class="" style="white-space:pre">                                  </span>for (int k = 0; k < n; k++)</div><div><span class="" style="white-space:pre">                                     </span>{</div><div><span class="" style="white-space:pre">                                          </span>if (A[i][k] != A[j][k])</div><div><span class="" style="white-space:pre">                                            </span>{</div><div><br></div><div><span class="" style="white-space:pre">                                                 </span>j = j + 1;</div><div><span class="" style="white-space:pre">                                                     </span>break;</div><div><span class="" style="white-space:pre">                                             </span>}</div><div><span class="" style="white-space:pre">                                          </span>else if ((A[i][k] == A[j][k]) && (k == n - 1))</div><div><span class="" style="white-space:pre">                                             </span>{</div><div><span class="" style="white-space:pre">                                                  </span></div><div><span class="" style="white-space:pre">                                                   </span>tab_etat[j] = n;</div><div><span class="" style="white-space:pre">                                                   </span>p++;</div><div><span class="" style="white-space:pre">                                                       </span>CFC[nbr_cfc - 1].tab_etat_CFC[p] = j;</div><div><span class="" style="white-space:pre">                                                      </span>Etat[j].indice_cls = nbr_cfc - 1;</div><div><span class="" style="white-space:pre">                                                  </span>j = j + 1;</div><div><span class="" style="white-space:pre">                                             </span>}</div><div><span class="" style="white-space:pre">                                  </span>}</div><div><span class="" style="white-space:pre">                          </span>}</div><div><span class="" style="white-space:pre">                          </span>else</div><div><span class="" style="white-space:pre">                               </span>{</div><div><span class="" style="white-space:pre">                                  </span>j = j + 1;</div><div><span class="" style="white-space:pre">                             </span>}</div><div><span class="" style="white-space:pre">                  </span>}</div><div><span class="" style="white-space:pre">                  </span>CFC[nbr_cfc - 1].nb_etat_CFC = p + 1;</div><div><span class="" style="white-space:pre">                  </span>i = i + 1;</div><div><br></div><div><span class="" style="white-space:pre">            </span>}</div><div><span class="" style="white-space:pre">          </span>else if ((tab_etat[i] != n) && (i == n - 1))</div><div><span class="" style="white-space:pre">               </span>{</div><div><span class="" style="white-space:pre">                  </span>int p = 0;</div><div><span class="" style="white-space:pre">                 </span>nbr_cfc++;</div><div><span class="" style="white-space:pre">                 </span>CFC[nbr_cfc - 1].tab_etat_CFC[p] = i;</div><div><span class="" style="white-space:pre">                      </span>CFC[nbr_cfc - 1].nb_etat_CFC = 1;</div><div><span class="" style="white-space:pre">                  </span></div><div><span class="" style="white-space:pre">                   </span>break;</div><div><span class="" style="white-space:pre">             </span>}</div><div><span class="" style="white-space:pre">          </span>else</div><div><span class="" style="white-space:pre">               </span>{</div><div><span class="" style="white-space:pre">                  </span>i = i + 1;</div><div><span class="" style="white-space:pre">             </span>}</div><div><br></div><div><span class="" style="white-space:pre"> </span>}</div><div><br></div><div><span class="" style="white-space:pre"> </span>for (int i = 0; i < nbr_cfc; i++)</div><div><span class="" style="white-space:pre">       </span>{</div><div><span class="" style="white-space:pre">          </span>int l = 0;</div><div><span class="" style="white-space:pre">         </span>for (int k = 0; k < nbr_etat; k++)</div><div><span class="" style="white-space:pre">              </span>{</div><div><span class="" style="white-space:pre">                  </span>int j = 0;</div><div><span class="" style="white-space:pre">                 </span>while (j < CFC[i].nb_etat_CFC)</div><div><span class="" style="white-space:pre">                  </span>{</div><div><span class="" style="white-space:pre">                          </span>if (tab_etat_echange[k] != CFC[i].tab_etat_CFC[j])</div><div><span class="" style="white-space:pre">                         </span>{</div><div><span class="" style="white-space:pre">                                  </span>j = j + 1;</div><div><span class="" style="white-space:pre">                                     </span>if (j == CFC[i].nb_etat_CFC){</div><div><span class="" style="white-space:pre">                                              </span>CFC[i].tab_etat_appartient_pas_CFC[l] = tab_etat_echange[k];</div><div><span class="" style="white-space:pre">                                               </span>l++;</div><div><span class="" style="white-space:pre">                                       </span>}</div><div><span class="" style="white-space:pre">                          </span>}</div><div><br></div><div><span class="" style="white-space:pre">                         </span>else if (tab_etat_echange[k] == CFC[i].tab_etat_CFC[j])</div><div><span class="" style="white-space:pre">                            </span>{</div><div><span class="" style="white-space:pre">                                  </span>break;</div><div><span class="" style="white-space:pre">                             </span>}</div><div><span class="" style="white-space:pre">                  </span>}</div><div><br></div><div><br></div><div><span class="" style="white-space:pre">                </span>}</div><div><span class="" style="white-space:pre">          </span>CFC[i].nbr_etat_appartient_pas_CFC = l;</div><div><span class="" style="white-space:pre">    </span>}</div><div><span class="" style="white-space:pre">  </span></div><div><span class="" style="white-space:pre">   </span>int B[nbr_etat][nbr_etat];</div><div><span class="" style="white-space:pre"> </span>for (int i = 0; i < nbr_cfc; i++)</div><div><span class="" style="white-space:pre">       </span>{</div><div><span class="" style="white-space:pre">          </span>for (int j = 0; j < nbr_etat; j++)</div><div><span class="" style="white-space:pre">              </span>{</div><div><span class="" style="white-space:pre">                  </span>B[i][j] = 0;</div><div><span class="" style="white-space:pre">                       </span>for (int k = 0; k < CFC[i].nb_etat_CFC; k++)</div><div><span class="" style="white-space:pre">                    </span>{</div><div><span class="" style="white-space:pre">                          </span>if (A1[CFC[i].tab_etat_CFC[k]][j]>0)</div><div><span class="" style="white-space:pre">                            </span>{</div><div><span class="" style="white-space:pre">                                  </span>B[i][j] = 1;</div><div><span class="" style="white-space:pre">                                       </span>break;</div><div><span class="" style="white-space:pre">                             </span>}</div><div><span class="" style="white-space:pre">                  </span>}</div><div><span class="" style="white-space:pre">          </span>}</div><div><span class="" style="white-space:pre">  </span>}</div><div><br></div><div><br></div><div><span class="" style="white-space:pre">        </span>for (int i = 0; i < nbr_cfc; i++)</div><div><span class="" style="white-space:pre">       </span>{</div><div><span class="" style="white-space:pre">          </span>int i2 = 0;</div><div><span class="" style="white-space:pre">                </span>int i1 = 0;</div><div><span class="" style="white-space:pre">                </span>for (int k = 0; k<CFC[i].nbr_etat_appartient_pas_CFC; k++)</div><div><span class="" style="white-space:pre">              </span>{</div><div><span class="" style="white-space:pre">                  </span>if ((B[i][CFC[i].tab_etat_appartient_pas_CFC[k]])>0)</div><div><span class="" style="white-space:pre">                    </span>{</div><div><span class="" style="white-space:pre">                          </span>i2++;</div><div><span class="" style="white-space:pre">                              </span>CFC[i].tab_etat_successeur_CFC[i1] = CFC[i].tab_etat_appartient_pas_CFC[k];</div><div><span class="" style="white-space:pre">                                </span>i1++;</div><div><span class="" style="white-space:pre">                      </span>}</div><div><span class="" style="white-space:pre">          </span>}</div><div><br></div><div><br></div><div><span class="" style="white-space:pre">                </span>CFC[i].nbr_etat_successeur_CFC = i2;</div><div><br></div><div><br></div><div><span class="" style="white-space:pre">     </span>}</div><div><span class="" style="white-space:pre">  </span></div><div><span class="" style="white-space:pre">   </span>for (int i = 0; i < nbr_cfc; i++)</div><div><span class="" style="white-space:pre">       </span>{</div><div><span class="" style="white-space:pre">          </span>int i3 = 0;</div><div><span class="" style="white-space:pre">                </span>for (int j = 0; j < CFC[i].nb_etat_CFC; j++)</div><div><span class="" style="white-space:pre">            </span>{</div><div><span class="" style="white-space:pre">                  </span>CFC[i].tab_etat_restrient_CFC[i3] = CFC[i].tab_etat_CFC[j];</div><div><span class="" style="white-space:pre">                        </span></div><div><span class="" style="white-space:pre">                   </span>i3++;</div><div><span class="" style="white-space:pre">              </span>}</div><div><span class="" style="white-space:pre">          </span>for (int k = 0; k < CFC[i].nbr_etat_successeur_CFC; k++)</div><div><span class="" style="white-space:pre">                </span>{</div><div><span class="" style="white-space:pre">                  </span>CFC[i].tab_etat_restrient_CFC[i3] = CFC[i].tab_etat_successeur_CFC[k];</div><div><span class="" style="white-space:pre">                     </span>i3++;</div><div><span class="" style="white-space:pre">              </span>}</div><div><span class="" style="white-space:pre">          </span>CFC[i].nbr_etat_restrient_CFC = CFC[i].nbr_etat_successeur_CFC + CFC[i].nb_etat_CFC;</div><div><span class="" style="white-space:pre">   </span>}</div><div><br></div><div><span class="" style="white-space:pre"> </span>int C[nbr_etat][nbr_etat];</div><div><span class="" style="white-space:pre"> </span>int D[nbr_etat][nbr_etat];</div><div><br></div><div><span class="" style="white-space:pre">        </span>for (int i = 0; i < nbr_cfc; i++)</div><div><span class="" style="white-space:pre">       </span>{</div><div><span class="" style="white-space:pre">          </span>for (int j = 0; j < nbr_cfc; j++)</div><div><span class="" style="white-space:pre">               </span>{</div><div><span class="" style="white-space:pre">                  </span>C[i][j] = 0;</div><div><span class="" style="white-space:pre">                       </span>D[i][j] = 0;</div><div><span class="" style="white-space:pre">                       </span>if (i == j)</div><div><span class="" style="white-space:pre">                        </span>{</div><div><span class="" style="white-space:pre">                          </span>C[i][j] = 1;</div><div><span class="" style="white-space:pre">                               </span>D[i][j] = 1;</div><div><span class="" style="white-space:pre">                       </span>}</div><div><span class="" style="white-space:pre">                  </span>else if (i != j)</div><div><span class="" style="white-space:pre">                   </span>{</div><div><br></div><div><span class="" style="white-space:pre">                         </span>for (int k = 0; k < CFC[j].nb_etat_CFC; k++)</div><div><span class="" style="white-space:pre">                            </span>{</div><div><span class="" style="white-space:pre">                                  </span>if (B[i][CFC[j].tab_etat_CFC[k]] == 1)</div><div><span class="" style="white-space:pre">                                     </span>{</div><div><span class="" style="white-space:pre">                                          </span>C[i][j] = 1;</div><div><span class="" style="white-space:pre">                                               </span>D[i][j] = 1;</div><div><span class="" style="white-space:pre">                                               </span>break;</div><div><span class="" style="white-space:pre">                                     </span>}</div><div><span class="" style="white-space:pre">                          </span>}</div><div><span class="" style="white-space:pre">                  </span>}</div><div><span class="" style="white-space:pre">          </span>}</div><div><span class="" style="white-space:pre">  </span>}</div><div><br></div><div><span class="" style="white-space:pre"> </span>int D1[nbr_etat];</div><div><span class="" style="white-space:pre">  </span>int ni = 0;</div><div><span class="" style="white-space:pre">        </span>bool test = true;</div><div><span class="" style="white-space:pre">  </span>do</div><div><span class="" style="white-space:pre"> </span>{</div><div><span class="" style="white-space:pre">          </span>for (int i = 0; i < nbr_cfc; i++)</div><div><span class="" style="white-space:pre">               </span>{</div><div><span class="" style="white-space:pre">                  </span>int sum = 0;</div><div><span class="" style="white-space:pre">                       </span>for (int j = 0; j < nbr_cfc; j++)</div><div><span class="" style="white-space:pre">                       </span>{</div><div><span class="" style="white-space:pre">                          </span>if (D[i][j]>0)</div><div><span class="" style="white-space:pre">                          </span>{</div><div><span class="" style="white-space:pre">                                  </span>sum++;</div><div><span class="" style="white-space:pre">                             </span>}</div><div><span class="" style="white-space:pre">                          </span>D1[i] = sum;</div><div><span class="" style="white-space:pre">                       </span>}</div><div><span class="" style="white-space:pre">          </span>}</div><div><span class="" style="white-space:pre">          </span>int nbr_test = 0;</div><div><span class="" style="white-space:pre">          </span>for (int i = 0; i < nbr_cfc; i++)</div><div><span class="" style="white-space:pre">               </span>{</div><div><span class="" style="white-space:pre">                  </span>nbr_test += D1[i];</div><div><span class="" style="white-space:pre">             </span>}</div><div><span class="" style="white-space:pre">          </span>if (nbr_test>0)</div><div><span class="" style="white-space:pre">         </span>{</div><div><span class="" style="white-space:pre">                  </span>int k = 0;</div><div><span class="" style="white-space:pre">                 </span>for (int j = 0; j < nbr_cfc; j++)</div><div><span class="" style="white-space:pre">                       </span>{</div><div><span class="" style="white-space:pre">                          </span>if (D1[j] == 1)</div><div><span class="" style="white-space:pre">                            </span>{</div><div><span class="" style="white-space:pre">                                  </span>NIV[ni].tab_cls[k] = j;</div><div><span class="" style="white-space:pre">                                    </span>for (int s = 0; s < nbr_cfc; s++)</div><div><span class="" style="white-space:pre">                                       </span>{</div><div><span class="" style="white-space:pre">                                          </span>D[s][j] = 0;</div><div><span class="" style="white-space:pre">                                       </span>}</div><div><span class="" style="white-space:pre">                                  </span>k++;</div><div><span class="" style="white-space:pre">                                       </span>NIV[ni].nbr_cls = k;/**/</div><div><span class="" style="white-space:pre">                           </span>}</div><div><span class="" style="white-space:pre">                          </span>NIV[ni].nbr_cls = k;</div><div><span class="" style="white-space:pre">                       </span>}</div><div><span class="" style="white-space:pre">                  </span>ni++;</div><div><span class="" style="white-space:pre">                      </span>test = 1;</div><div><span class="" style="white-space:pre">          </span>}</div><div><span class="" style="white-space:pre">          </span>else if (nbr_test == 0)</div><div><span class="" style="white-space:pre">            </span>{</div><div><span class="" style="white-space:pre">                  </span>test = false;</div><div><span class="" style="white-space:pre">              </span>}</div><div><span class="" style="white-space:pre">  </span>} while (test);</div><div><span class="" style="white-space:pre">    </span>int nbr_niv = ni;</div><div><span class="" style="white-space:pre">  </span>for (int i = 0; i < nbr_niv; i++)</div><div><span class="" style="white-space:pre">       </span>{</div><div><span class="" style="white-space:pre">          </span>NIV[i].deplacement[0] = 0;</div><div><span class="" style="white-space:pre">         </span>for (int j = 0; j < NIV[i].nbr_cls; j++)</div><div><span class="" style="white-space:pre">                </span>{</div><div><span class="" style="white-space:pre">                  </span>NIV[i].count[j] = CFC[NIV[i].tab_cls[j]].nbr_etat_restrient_CFC;</div><div><span class="" style="white-space:pre">                   </span>NIV[i].deplacement[j + 1] = NIV[i].count[j];</div><div><span class="" style="white-space:pre">           </span>}</div><div><span class="" style="white-space:pre">  </span>}</div><div><span class="" style="white-space:pre">  </span>for (int i = 0; i < nbr_niv; i++)</div><div><span class="" style="white-space:pre">       </span>{</div><div><span class="" style="white-space:pre">          </span>int l = 0;</div><div><span class="" style="white-space:pre">         </span>for (int j = 0; j < NIV[i].nbr_cls; j++)</div><div><span class="" style="white-space:pre">                </span>{</div><div><span class="" style="white-space:pre">                  </span>for (int k = 0; k < CFC[NIV[i].tab_cls[j]].nbr_etat_restrient_CFC; k++)</div><div><span class="" style="white-space:pre">                 </span>{</div><div><span class="" style="white-space:pre">                          </span>NIV[i].tab_etat_restr[l] = CFC[NIV[i].tab_cls[j]].tab_etat_restrient_CFC[k];</div><div><span class="" style="white-space:pre">                               </span>l++;</div><div><span class="" style="white-space:pre">                       </span>}</div><div><span class="" style="white-space:pre">          </span>}</div><div><span class="" style="white-space:pre">          </span>NIV[i].nbr_etat_restr = l;</div><div><span class="" style="white-space:pre"> </span>}</div><div><br></div><div><span class="" style="white-space:pre"> </span>for (int i = 0; i < nbr_etat; i++)</div><div><span class="" style="white-space:pre">      </span>{</div><div><span class="" style="white-space:pre">          </span>for (int j = 0; j < Etat[i].nbr_action; j++)</div><div><span class="" style="white-space:pre">            </span>{</div><div><span class="" style="white-space:pre">                  </span>for (int k = 0; k < CFC[Etat[i].indice_cls].nbr_etat_restrient_CFC; k++) </div><div><span class="" style="white-space:pre">                  </span>{</div><div><span class="" style="white-space:pre">                          </span>Etat[i].PI[j][k] = Etat[i].P[j][CFC[Etat[i].indice_cls].tab_etat_restrient_CFC[k]];</div><div><span class="" style="white-space:pre">                        </span>}</div><div><span class="" style="white-space:pre">          </span>}</div><div><span class="" style="white-space:pre">  </span>}</div><div><span class="" style="white-space:pre">  </span>for (int i = 0; i < nbr_niv; i++)</div><div><span class="" style="white-space:pre">       </span>{</div><div><span class="" style="white-space:pre">          </span>for (int j = 0; j < NIV[i].nbr_cls; j++) </div><div><span class="" style="white-space:pre">          </span>{</div><div><span class="" style="white-space:pre">                  </span>FU_par_Niv[j].indice_cls = NIV[i].tab_cls[j];</div><div><span class="" style="white-space:pre">                      </span>for (int k = 0; k < CFC[NIV[i].tab_cls[j]].nbr_etat_restrient_CFC; k++) </div><div><span class="" style="white-space:pre">                   </span>{</div><div><span class="" style="white-space:pre">                          </span>FU_par_Niv[j].tab_etat_FU_t[0][k] = CFC[NIV[i].tab_cls[j]].tab_etat_restrient_CFC[k];</div><div><span class="" style="white-space:pre">                              </span>FU_par_Niv[j].tab_etat_FU_t_plus_1[0][k] = CFC[NIV[i].tab_cls[j]].tab_etat_restrient_CFC[k];</div><div><span class="" style="white-space:pre">                               </span>FU_par_Niv[j].tab_etat_FU_t[1][k] = 0;</div><div><span class="" style="white-space:pre">                             </span>FU_par_Niv[j].tab_etat_FU_t_plus_1[1][k] = 0;</div><div><span class="" style="white-space:pre">                      </span>}</div><div><span class="" style="white-space:pre">          </span>}</div><div><span class="" style="white-space:pre">  </span>}</div><div><br></div><div><span class="" style="white-space:pre"> </span>int a1, a2, a3;</div><div><span class="" style="white-space:pre">    </span>for (int nv = 0; nv < nbr_niv; nv++)</div><div><span class="" style="white-space:pre">    </span>{</div><div><span class="" style="white-space:pre">          </span>for (int j = 0; j < NIV[nv].nbr_cls; j++) </div><div><span class="" style="white-space:pre">         </span>{</div><div><span class="" style="white-space:pre">                  </span>a1 = CFC[NIV[nv].tab_cls[j]].nb_etat_CFC;<span class="" style="white-space:pre">         </span></div><div><span class="" style="white-space:pre">                   </span>a2 = CFC[NIV[nv].tab_cls[j]].nbr_etat_restrient_CFC;</div><div><span class="" style="white-space:pre">                       </span>for (int k = 0; k < CFC[NIV[nv].tab_cls[j]].nb_etat_CFC; k++)</div><div><span class="" style="white-space:pre">                   </span>{</div><div><span class="" style="white-space:pre">                          </span>int a4 = 0;</div><div><span class="" style="white-space:pre">                                </span>a3 = Etat[CFC[NIV[nv].tab_cls[j]].tab_etat_CFC[k]].nbr_action;</div><div><span class="" style="white-space:pre">                             </span>Etat[CFC[NIV[nv].tab_cls[j]].tab_etat_CFC[k]].taille_ptt_trame = 1 + a2*a3 + a3;</div><div><span class="" style="white-space:pre">                           </span>printf("%d la taille = %d \n", NIV[nv].tab_cls[j], Etat[CFC[NIV[nv].tab_cls[j]].tab_etat_CFC[k]].taille_ptt_trame);</div><div><span class="" style="white-space:pre">                              </span>Etat[CFC[NIV[nv].tab_cls[j]].tab_etat_CFC[k]].ptt_trame[a4] = a3;</div><div><span class="" style="white-space:pre">                          </span>for (int s = 0; s < a3; s++)</div><div><span class="" style="white-space:pre">                            </span>{</div><div><span class="" style="white-space:pre">                                  </span>a4++;</div><div><span class="" style="white-space:pre">                                      </span>Etat[CFC[NIV[nv].tab_cls[j]].tab_etat_CFC[k]].ptt_trame[a4] = Etat[CFC[NIV[nv].tab_cls[j]].tab_etat_CFC[k]].R[s];</div><div><span class="" style="white-space:pre">                          </span>}</div><div><span class="" style="white-space:pre">                          </span>for (int s1 = 0; s1 < a3; s1++)</div><div><span class="" style="white-space:pre">                         </span>{</div><div><span class="" style="white-space:pre">                                  </span>for (int s2 = 0; s2 < a2; s2++)</div><div><span class="" style="white-space:pre">                                 </span>{</div><div><span class="" style="white-space:pre">                                          </span>a4++;</div><div><span class="" style="white-space:pre">                                              </span>Etat[CFC[NIV[nv].tab_cls[j]].tab_etat_CFC[k]].ptt_trame[a4] = Etat[CFC[NIV[nv].tab_cls[j]].tab_etat_CFC[k]].PI[s1][s2];</div><div><span class="" style="white-space:pre">                                    </span>}</div><div><span class="" style="white-space:pre">                          </span>}</div><div><span class="" style="white-space:pre">                  </span>}</div><div><span class="" style="white-space:pre">          </span>}</div><div><span class="" style="white-space:pre">  </span>}</div><div><span class="" style="white-space:pre">  </span></div><div><span class="" style="white-space:pre">   </span>int a4, a5;</div><div><span class="" style="white-space:pre">        </span>MPI_Init(&argc, &argv);</div><div><span class="" style="white-space:pre">    </span>MPI_Comm_rank(MPI_COMM_WORLD, &rang_proc);</div><div><span class="" style="white-space:pre">     </span>MPI_Comm_size(MPI_COMM_WORLD, &nbr_proc);</div><div><span class="" style="white-space:pre">      </span>for (int nv = 0; nv < nbr_niv; nv++)</div><div><span class="" style="white-space:pre">    </span>{</div><div><span class="" style="white-space:pre">          </span>if (rang_proc == 0){</div><div><span class="" style="white-space:pre">               </span>printf("rang_proc=%d \n", rang_proc);</div><div><span class="" style="white-space:pre">                    </span>for (int j = 0; j < NIV[nv].nbr_cls; j++) </div><div><span class="" style="white-space:pre">                 </span>{</div><div><span class="" style="white-space:pre">                          </span>int jj = 0;</div><div><span class="" style="white-space:pre">                                </span>int a6 = 0;</div><div><span class="" style="white-space:pre">                                </span>a4 = 2;</div><div><span class="" style="white-space:pre">                            </span>int z1 = a6;</div><div><span class="" style="white-space:pre">                               </span>CFC[NIV[nv].tab_cls[j]].ptt_trame_cls[a6] = CFC[NIV[nv].tab_cls[j]].nb_etat_CFC;</div><div><span class="" style="white-space:pre">                           </span>a6 += 1;</div><div><span class="" style="white-space:pre">                               </span>CFC[NIV[nv].tab_cls[j]].ptt_trame_cls[a6] = CFC[NIV[nv].tab_cls[j]].nbr_etat_restrient_CFC;</div><div><span class="" style="white-space:pre">                                </span>a4 += CFC[NIV[nv].tab_cls[j]].nbr_etat_restrient_CFC;</div><div><span class="" style="white-space:pre">                          </span>int z2 = a6;</div><div><span class="" style="white-space:pre">                               </span>a6 += 1;</div><div><span class="" style="white-space:pre">                               </span>int a7;</div><div><span class="" style="white-space:pre">                            </span>for (int i = 0; i < CFC[NIV[nv].tab_cls[j]].ptt_trame_cls[z2]; i++)</div><div><span class="" style="white-space:pre">                             </span>{</div><div><span class="" style="white-space:pre">                                  </span>if (i >= CFC[NIV[nv].tab_cls[j]].ptt_trame_cls[z1])</div><div><span class="" style="white-space:pre">                                     </span>{</div><div><span class="" style="white-space:pre">                                          </span>a7 = a6 + i;</div><div><span class="" style="white-space:pre">                                           </span>CFC[NIV[nv].tab_cls[j]].ptt_trame_cls[a7] = CFC[NIV[nv].tab_cls[j]].tab_Vt_instantane[i];</div><div><span class="" style="white-space:pre">                                  </span>}</div><div><span class="" style="white-space:pre">                                  </span>else</div><div><span class="" style="white-space:pre">                                       </span>{</div><div><span class="" style="white-space:pre">                                          </span>a7 = a6 + i;</div><div><span class="" style="white-space:pre">                                           </span>CFC[NIV[nv].tab_cls[j]].ptt_trame_cls[a7] = 0;</div><div><span class="" style="white-space:pre">                                     </span>}</div><div><span class="" style="white-space:pre">                          </span>}</div><div><span class="" style="white-space:pre">                          </span>a6 = a7 + 1;</div><div><span class="" style="white-space:pre">                           </span>for (int k = 0; k < CFC[NIV[nv].tab_cls[j]].nb_etat_CFC; k++)  </div><div><span class="" style="white-space:pre">                            </span>{</div><div><span class="" style="white-space:pre">                                  </span>a5 = Etat[CFC[NIV[nv].tab_cls[j]].tab_etat_CFC[k]].taille_ptt_trame;</div><div><span class="" style="white-space:pre">                                       </span>a4 += a5;</div><div><span class="" style="white-space:pre">                                      </span>for (int s2 = 0; s2 < a5; s2++)</div><div><span class="" style="white-space:pre">                                 </span>{</div><div><span class="" style="white-space:pre">                                          </span>CFC[NIV[nv].tab_cls[j]].ptt_trame_cls[a6] = Etat[CFC[NIV[nv].tab_cls[j]].tab_etat_CFC[k]].ptt_trame[s2];</div><div><span class="" style="white-space:pre">                                           </span>a6++;</div><div><span class="" style="white-space:pre">                                      </span>}</div><div><span class="" style="white-space:pre">                          </span>}</div><div><span class="" style="white-space:pre">                          </span>CFC[NIV[nv].tab_cls[j]].taille_ptt_trame_cls = a4;</div><div><span class="" style="white-space:pre">                 </span>}</div><div><span class="" style="white-space:pre">          </span>}</div><div><span class="" style="white-space:pre">          </span>recvbuff = (double *)malloc(sizeof(double)*espace_memoir_trame);</div><div><span class="" style="white-space:pre">           </span>if (rang_proc == 0)</div><div><span class="" style="white-space:pre">                </span>{</div><div><span class="" style="white-space:pre">                  </span>sendbuff = (double **)malloc(sizeof(double *)* nbr_proc);// on execute pour deux proc</div><div><span class="" style="white-space:pre">                      </span>sendbuff[0] = (double *)malloc(sizeof(double)*nbr_proc*espace_memoir_trame);</div><div><span class="" style="white-space:pre">                       </span>for (i = 1; i < nbr_proc; i++)</div><div><span class="" style="white-space:pre">                  </span>{</div><div><span class="" style="white-space:pre">                          </span>sendbuff[i] = sendbuff[i - 1] + espace_memoir_trame;</div><div><span class="" style="white-space:pre">                   </span>}</div><div><span class="" style="white-space:pre">          </span>}</div><div><span class="" style="white-space:pre">          </span>else</div><div><span class="" style="white-space:pre">               </span>{</div><div><span class="" style="white-space:pre">                  </span>sendbuff = (double **)malloc(sizeof(double *)* 1);</div><div><span class="" style="white-space:pre">                 </span>sendbuff[0] = (double *)malloc(sizeof(double)* 1);</div><div><br></div><div><span class="" style="white-space:pre">                </span>}</div><div><span class="" style="white-space:pre">          </span>if (rang_proc == 0){</div><div><span class="" style="white-space:pre">                       </span>for (itask = 0; itask< nbr_proc; itask++)</div><div><span class="" style="white-space:pre">                       </span>{</div><div><span class="" style="white-space:pre">                          </span>int k;</div><div><span class="" style="white-space:pre">                             </span>displs[itask] = itask*espace_memoir_trame;</div><div><span class="" style="white-space:pre">                         </span>sendcounts[itask] = CFC[NIV[nv].tab_cls[itask]].taille_ptt_trame_cls;</div><div><span class="" style="white-space:pre">                              </span>printf("sendcounts[%d]=%d \n", itask, sendcounts[itask]);</div><div><span class="" style="white-space:pre">                                </span>printf("-----------------------------\n");</div><div><span class="" style="white-space:pre">                               </span>k = 0;</div><div><span class="" style="white-space:pre">                             </span>for (i = 0; i<sendcounts[itask]; i++)</div><div><span class="" style="white-space:pre">                           </span>{</div><div><span class="" style="white-space:pre">                                  </span>sendbuff[itask][i] = CFC[NIV[nv].tab_cls[itask]].ptt_trame_cls[i];</div><div><span class="" style="white-space:pre">                         </span>}</div><div><span class="" style="white-space:pre">                          </span>printf("\n");</div><div><span class="" style="white-space:pre">                    </span>}</div><div><span class="" style="white-space:pre">          </span>}</div><div><span class="" style="white-space:pre">          </span>recvcount = CFC[NIV[nv].tab_cls[rang_proc]].taille_ptt_trame_cls;</div><div><span class="" style="white-space:pre">          </span>printf("rank = % drecvcount= %d \n",rang_proc,  recvcount);</div><div><span class="" style="white-space:pre">         </span>printf("-----------------------------\n");</div><div><br></div><div><br></div><div><span class="" style="white-space:pre">             </span>ierr = MPI_Scatterv(sendbuff[0], sendcounts, displs, MPI_DOUBLE,</div><div><span class="" style="white-space:pre">                   </span>recvbuff, recvcount, MPI_DOUBLE,</div><div><span class="" style="white-space:pre">                   </span>0, MPI_COMM_WORLD);</div><div><span class="" style="white-space:pre">                </span>int f = 0;</div><div><span class="" style="white-space:pre">         </span>double *V_t = NULL;</div><div><span class="" style="white-space:pre">                </span>double *V_t_1 = NULL;</div><div><span class="" style="white-space:pre">              </span>double *V_choi_max = NULL;</div><div><span class="" style="white-space:pre">         </span>int *pi = NULL;</div><div><span class="" style="white-space:pre">            </span>V_t_1 = (double *)malloc(sizeof(double)*recvbuff[1]);</div><div><span class="" style="white-space:pre">              </span>V_t = (double *)malloc(sizeof(double)*recvbuff[1]);</div><div><span class="" style="white-space:pre">                </span>pi = (int *)malloc(sizeof(int)*recvbuff[0]);</div><div><br></div><div><span class="" style="white-space:pre">              </span>double ech = 0;</div><div><span class="" style="white-space:pre">            </span>for (int i = 0; i < recvbuff[1]; i++)</div><div><span class="" style="white-space:pre">           </span>{</div><div><span class="" style="white-space:pre">                  </span>int y = 2 + i;</div><div><span class="" style="white-space:pre">                 </span>V_t[i] = recvbuff[y];</div><div><span class="" style="white-space:pre">                      </span>ech = recvbuff[y];</div><div><span class="" style="white-space:pre">                 </span>V_t_1[i] = ech;</div><div><span class="" style="white-space:pre">            </span>}</div><div><span class="" style="white-space:pre">          </span>bool fini = true;</div><div><span class="" style="white-space:pre">          </span>int M = 0;</div><div><span class="" style="white-space:pre">         </span>while (fini)</div><div><span class="" style="white-space:pre">               </span>{<span class="" style="white-space:pre"> </span></div><div><span class="" style="white-space:pre">                   </span>for (int i = 0; i < recvbuff[1]; i++)</div><div><span class="" style="white-space:pre">                   </span>{</div><div><span class="" style="white-space:pre">                          </span>V_t_1[i] = V_t[i];</div><div><span class="" style="white-space:pre">                 </span>}</div><div><span class="" style="white-space:pre">                  </span>M++;</div><div><span class="" style="white-space:pre">                       </span>for (int i = 0; i < recvbuff[0]; i++)</div><div><span class="" style="white-space:pre">                   </span>{</div><div><span class="" style="white-space:pre">                          </span>int y = 2 + recvbuff[1], o;</div><div><span class="" style="white-space:pre">                            </span>double *R = NULL;</div><div><span class="" style="white-space:pre">                          </span>double **P = NULL;</div><div><span class="" style="white-space:pre">                         </span>double gama = 0.5;</div><div><span class="" style="white-space:pre">                         </span>int r = 2 + recvbuff[1];</div><div><span class="" style="white-space:pre">                               </span>if (i == 0)</div><div><span class="" style="white-space:pre">                                </span>{</div><div><span class="" style="white-space:pre">                                  </span>V_choi_max = (double *)malloc(sizeof(double)*recvbuff[r]);</div><div><span class="" style="white-space:pre">                                 </span>R = (double *)malloc(sizeof(double)*recvbuff[r]);</div><div><span class="" style="white-space:pre">                                  </span>for (int j = 0; j < recvbuff[r]; j++)</div><div><span class="" style="white-space:pre">                                   </span>{</div><div><span class="" style="white-space:pre">                                          </span>R[j] = recvbuff[r + j + 1];</div><div><span class="" style="white-space:pre">                                        </span>}</div><div><span class="" style="white-space:pre">                                  </span>o = r + 1 + recvbuff[r];</div><div><span class="" style="white-space:pre">                                   </span>P = (double **)malloc(sizeof(double *)* recvbuff[r]);</div><div><br></div><div><span class="" style="white-space:pre">                                     </span>for (int i = 0; i < recvbuff[r]; i++)</div><div><span class="" style="white-space:pre">                                   </span>{</div><div><span class="" style="white-space:pre">                                          </span>P[i] = (double *)malloc(sizeof(double)*recvbuff[1]);</div><div><span class="" style="white-space:pre">                                       </span>}</div><div><span class="" style="white-space:pre">                                  </span>for (int i1 = 0; i1 < recvbuff[r]; i1++)</div><div><span class="" style="white-space:pre">                                        </span>{</div><div><span class="" style="white-space:pre">                                          </span>for (int j1 = 0; j1 < recvbuff[1]; j1++)</div><div><span class="" style="white-space:pre">                                                </span>{</div><div><span class="" style="white-space:pre">                                                  </span>P[i1][j1] = recvbuff[o];</div><div><span class="" style="white-space:pre">                                                   </span>o++;</div><div><span class="" style="white-space:pre">                                               </span>}</div><div><span class="" style="white-space:pre">                                  </span>}</div><div><span class="" style="white-space:pre">                                  </span>for (int i1 = 0; i1 < recvbuff[r]; i1++)</div><div><span class="" style="white-space:pre">                                        </span>{</div><div><span class="" style="white-space:pre">                                          </span>double sum = 0;</div><div><span class="" style="white-space:pre">                                            </span>for (int j1 = 0; j1 < recvbuff[1]; j1++)</div><div><span class="" style="white-space:pre">                                                </span>{</div><div><span class="" style="white-space:pre">                                                  </span>sum += P[i1][j1] * V_t_1[j1];</div><div><span class="" style="white-space:pre">                                          </span>}</div><div><span class="" style="white-space:pre">                                          </span>V_choi_max[i1] = R[i1] + (gama*sum);</div><div><span class="" style="white-space:pre">                                   </span>}</div><div><span class="" style="white-space:pre">                                  </span>double max = V_choi_max[0];</div><div><span class="" style="white-space:pre">                                        </span>pi[i] = 0;</div><div><span class="" style="white-space:pre">                                 </span>for (int i1 = 0; i1 < recvbuff[r]; i1++)// vers le nbr d action</div><div><span class="" style="white-space:pre">                                 </span>{</div><div><span class="" style="white-space:pre">                                          </span>if (max <= V_choi_max[i1])</div><div><span class="" style="white-space:pre">                                              </span>{</div><div><span class="" style="white-space:pre">                                                  </span>max = V_choi_max[i1];</div><div><span class="" style="white-space:pre">                                                      </span>pi[i] = i1;</div><div><span class="" style="white-space:pre">                                                </span>}</div><div><span class="" style="white-space:pre">                                  </span>}</div><div><span class="" style="white-space:pre">                                  </span>V_t[i] = max;</div><div><span class="" style="white-space:pre">                                      </span>free(R);</div><div><span class="" style="white-space:pre">                                   </span>for (int i = 0; i < recvbuff[r]; i++)</div><div><span class="" style="white-space:pre">                                           </span>free(P[i]);</div><div><span class="" style="white-space:pre">                                        </span>free(P);</div><div><br></div><div><br></div><div><span class="" style="white-space:pre">                         </span>}</div><div><span class="" style="white-space:pre">                          </span>else</div><div><span class="" style="white-space:pre">                               </span>{</div><div><span class="" style="white-space:pre">                                  </span>y += 1 + recvbuff[y] + recvbuff[y] * recvbuff[1];</div><div><span class="" style="white-space:pre">                                      </span>int yy = y + 1 + recvbuff[y] + recvbuff[y] * recvbuff[1];</div><div><span class="" style="white-space:pre">                                      </span>R = (double *)malloc(sizeof(double)*recvbuff[y]);</div><div><span class="" style="white-space:pre">                                  </span>for (int j = 0; j < recvbuff[y]; j++)</div><div><span class="" style="white-space:pre">                                   </span>{</div><div><span class="" style="white-space:pre">                                          </span>R[j] = recvbuff[y + j + 1];</div><div><span class="" style="white-space:pre">                                        </span>}</div><div><span class="" style="white-space:pre">                                  </span>int oo = y + recvbuff[y];</div><div><span class="" style="white-space:pre">                                      </span>P = (double **)malloc(sizeof(double *)* recvbuff[y]);// on execute pour deux proc</div><div><span class="" style="white-space:pre">                                  </span>for (int i = 0; i < recvbuff[y]; i++)</div><div><span class="" style="white-space:pre">                                   </span>{</div><div><span class="" style="white-space:pre">                                          </span>P[i] = (double *)malloc(sizeof(double)*recvbuff[1]);</div><div><span class="" style="white-space:pre">                                       </span>}</div><div><br></div><div><span class="" style="white-space:pre">                                 </span>for (int i1 = 0; i1 < recvbuff[y]; i1++)</div><div><span class="" style="white-space:pre">                                        </span>{</div><div><span class="" style="white-space:pre">                                          </span>for (int j1 = 0; j1 < recvbuff[1]; j1++)</div><div><span class="" style="white-space:pre">                                                </span>{</div><div><span class="" style="white-space:pre">                                                  </span>oo += 1;</div><div><span class="" style="white-space:pre">                                                       </span>P[i1][j1] = recvbuff[oo];</div><div><span class="" style="white-space:pre">                                          </span>}</div><div><span class="" style="white-space:pre">                                  </span>}</div><div><span class="" style="white-space:pre">                                  </span>for (int i1 = 0; i1 < recvbuff[y]; i1++)</div><div><span class="" style="white-space:pre">                                        </span>{</div><div><span class="" style="white-space:pre">                                          </span>double sum = 0;</div><div><span class="" style="white-space:pre">                                            </span>for (int j1 = 0; j1 < recvbuff[1]; j1++)</div><div><span class="" style="white-space:pre">                                                </span>{</div><div><span class="" style="white-space:pre">                                                  </span>sum += P[i1][j1] * V_t_1[j1];</div><div><span class="" style="white-space:pre">                                          </span>}</div><div><span class="" style="white-space:pre">                                          </span>V_choi_max[i1] = R[i1] + (gama*sum);</div><div><span class="" style="white-space:pre">                                   </span>}</div><div><span class="" style="white-space:pre">                                  </span>double max = V_choi_max[0];</div><div><span class="" style="white-space:pre">                                        </span>pi[i] = 0;</div><div><span class="" style="white-space:pre">                                 </span>for (int i1 = 0; i1 < recvbuff[y]; i1++)</div><div><span class="" style="white-space:pre">                                        </span>{</div><div><span class="" style="white-space:pre">                                          </span>if (max <= V_choi_max[i1])</div><div><span class="" style="white-space:pre">                                              </span>{</div><div><span class="" style="white-space:pre">                                                  </span>max = V_choi_max[i1];</div><div><span class="" style="white-space:pre">                                                      </span>pi[i] = i1;</div><div><span class="" style="white-space:pre">                                                </span>}</div><div><span class="" style="white-space:pre">                                  </span>}</div><div><span class="" style="white-space:pre">                                  </span>V_t[i] = max;</div><div><span class="" style="white-space:pre">                                      </span>free(R);</div><div><span class="" style="white-space:pre">                                   </span>for (int i = 0; i < recvbuff[y]; i++)</div><div><span class="" style="white-space:pre">                                           </span>free(P[i]);</div><div><span class="" style="white-space:pre">                                        </span>free(P);</div><div><span class="" style="white-space:pre">                           </span>}</div><div><span class="" style="white-space:pre">                  </span>}</div><div><span class="" style="white-space:pre">                  </span>int psi = 1;</div><div><span class="" style="white-space:pre">                       </span>fini = false;</div><div><span class="" style="white-space:pre">                      </span>for (int i = 0; i < recvbuff[1]; i++)</div><div><span class="" style="white-space:pre">                   </span>{</div><div><span class="" style="white-space:pre">                          </span>if (fabs(V_t[i] - V_t_1[i]) >= psi)</div><div><span class="" style="white-space:pre">                             </span>{</div><div><span class="" style="white-space:pre">                                  </span>fini = true;</div><div><span class="" style="white-space:pre">                                       </span>break;</div><div><span class="" style="white-space:pre">                             </span>}</div><div><span class="" style="white-space:pre">                  </span>}</div><div><br></div><div><br></div><div><br></div><div><span class="" style="white-space:pre">               </span>}</div><div><span class="" style="white-space:pre">          </span>for (int i = 0; i < recvbuff[1]; i++)</div><div><span class="" style="white-space:pre">                   </span>printf("V_tF[%d]=%0.2f \n",i, V_t[i]);</div><div><span class="" style="white-space:pre">           </span>printf("\n");</div><div><br></div><div><span class="" style="white-space:pre">           </span>int p = 0;</div><div><span class="" style="white-space:pre">         </span>buffer1 = (double *)malloc(sizeof(double)*recvbuff[1]);</div><div><span class="" style="white-space:pre">            </span>for (i = 0; i<recvbuff[1]; i++)</div><div><span class="" style="white-space:pre">         </span>{</div><div><span class="" style="white-space:pre">                  </span>p++;</div><div><span class="" style="white-space:pre">                       </span>buffer1[i] = V_t[i];</div><div><span class="" style="white-space:pre">               </span>}</div><div><span class="" style="white-space:pre">          </span>receive_counts = (int *)malloc(sizeof(int)*NIV[nv].nbr_cls);</div><div><span class="" style="white-space:pre">               </span>receive_displacements = (int *)malloc(sizeof(int)*NIV[nv].nbr_cls);</div><div><span class="" style="white-space:pre">                </span>for (int d = 0; d < NIV[nv].nbr_cls; d++)</div><div><span class="" style="white-space:pre">               </span>{</div><div><span class="" style="white-space:pre">                  </span>receive_counts[d] = NIV[nv].count[d];</div><div><span class="" style="white-space:pre">                      </span>receive_displacements[d] = NIV[nv].deplacement[d];</div><div><span class="" style="white-space:pre">         </span>}</div><div><span class="" style="white-space:pre">          </span>MPI_Gatherv(buffer1, p, MPI_DOUBLE, buffer, receive_counts, receive_displacements, MPI_DOUBLE, 0, MPI_COMM_WORLD);</div><div><span class="" style="white-space:pre">         </span>if (rang_proc == 0){</div><div><span class="" style="white-space:pre">                       </span>for (int s1 = 0; s1<NIV[nv].nbr_etat_restr; s1++) </div><div><span class="" style="white-space:pre">                 </span>{</div><div><br></div><div><span class="" style="white-space:pre">                         </span>for (int s2 = nv + 1; s2 < nbr_niv; s2++)</div><div><span class="" style="white-space:pre">                           </span>{</div><div><span class="" style="white-space:pre">                                  </span>for (int s3 = 0; s3 < NIV[s2].nbr_cls; s3++)</div><div><span class="" style="white-space:pre">                                    </span>{</div><div><span class="" style="white-space:pre">                                          </span>for (int s4 = 0; s4 < CFC[NIV[s2].tab_cls[s3]].nbr_etat_restrient_CFC; s4++)</div><div><span class="" style="white-space:pre">                                            </span>{</div><div><span class="" style="white-space:pre">                                                  </span>if (NIV[nv].tab_etat_restr[s1] == CFC[NIV[s2].tab_cls[s3]].tab_etat_restrient_CFC[s4])</div><div><span class="" style="white-space:pre">                                                     </span>{</div><div><span class="" style="white-space:pre">                                                          </span>CFC[NIV[s2].tab_cls[s3]].tab_Vt_instantane[s4] = buffer[s1];</div><div><span class="" style="white-space:pre">                                                       </span>}</div><div><span class="" style="white-space:pre">                                          </span>}</div><div><span class="" style="white-space:pre">                                  </span>}</div><div><span class="" style="white-space:pre">                          </span>}</div><div><span class="" style="white-space:pre">                  </span>}</div><div><span class="" style="white-space:pre">                  </span>fflush(stdout);</div><div><span class="" style="white-space:pre">            </span>}</div><div><span class="" style="white-space:pre">          </span>MPI_Barrier(MPI_COMM_WORLD);</div><div><span class="" style="white-space:pre">               </span>if (rang_proc == 0)</div><div><span class="" style="white-space:pre">                </span>{</div><div><span class="" style="white-space:pre">                  </span>free(sendbuff[0]);</div><div><span class="" style="white-space:pre">                 </span>free(sendbuff);</div><div><span class="" style="white-space:pre">                    </span>free(receive_counts);</div><div><span class="" style="white-space:pre">                      </span>free(receive_displacements);</div><div><span class="" style="white-space:pre">               </span>}</div><div><span class="" style="white-space:pre">          </span>else</div><div><span class="" style="white-space:pre">               </span>{</div><div><span class="" style="white-space:pre">                  </span>free(sendbuff[0]);</div><div><span class="" style="white-space:pre">                 </span>free(sendbuff);</div><div><span class="" style="white-space:pre">                    </span>free(recvbuff);</div><div><span class="" style="white-space:pre">            </span>}</div><div>} </div><div><span class="" style="white-space:pre">    </span>MPI_Finalize();</div><div><br></div><div>}</div></div></div>