V 7.046 : ajouts, corrctions et modifications : prise en compte des types MPI_Offset
This commit is contained in:
parent
e9f8348952
commit
944e1ec548
27 changed files with 110 additions and 66 deletions
|
@ -1277,7 +1277,7 @@ void Algori::InfoIncrementReac(LesMaillages * lesMail,
|
||||||
// brestart : booleen qui indique si l'on est en restart ou pas
|
// brestart : booleen qui indique si l'on est en restart ou pas
|
||||||
void Algori::CalEnergieAffichage(const double& coef_mass,const Vecteur & V,const Mat_abstraite& mat_mass
|
void Algori::CalEnergieAffichage(const double& coef_mass,const Vecteur & V,const Mat_abstraite& mat_mass
|
||||||
,const Vecteur & delta_X,int icharge,bool brestart,const Vecteur & gamma
|
,const Vecteur & delta_X,int icharge,bool brestart,const Vecteur & gamma
|
||||||
,const Vecteur & forces_vis_num)
|
,const Vecteur & forces_vis_num,int aff_iteration)
|
||||||
{
|
{
|
||||||
#ifdef UTILISATION_MPI
|
#ifdef UTILISATION_MPI
|
||||||
// cas d'un calcul //, le CPU 0 calcule
|
// cas d'un calcul //, le CPU 0 calcule
|
||||||
|
@ -1343,7 +1343,8 @@ void Algori::CalEnergieAffichage(const double& coef_mass,const Vecteur & V,cons
|
||||||
};
|
};
|
||||||
// --- affichage ----
|
// --- affichage ----
|
||||||
if (( pa.Vrai_commande_sortie(icharge,temps_derniere_sauvegarde))
|
if (( pa.Vrai_commande_sortie(icharge,temps_derniere_sauvegarde))
|
||||||
&&(pa.AfficheIncrEnergie()))
|
&&(pa.AfficheIncrEnergie())
|
||||||
|
&& aff_iteration)
|
||||||
{// cas des énergies
|
{// cas des énergies
|
||||||
cout << "\n energies: cin= "<< std::fixed << std::setprecision(nbcar)<< E_cin_tdt
|
cout << "\n energies: cin= "<< std::fixed << std::setprecision(nbcar)<< E_cin_tdt
|
||||||
<<" int= " << std::fixed << std::setprecision(nbcar)<< E_int_tdt
|
<<" int= " << std::fixed << std::setprecision(nbcar)<< E_int_tdt
|
||||||
|
@ -1412,7 +1413,8 @@ void Algori::CalEnergieAffichage(const double& coef_mass,const Vecteur & V,cons
|
||||||
// affichage éventuelle des ces énergies et du bilan
|
// affichage éventuelle des ces énergies et du bilan
|
||||||
// icharge : compteur d'increment
|
// icharge : compteur d'increment
|
||||||
// brestart : booleen qui indique si l'on est en restart ou pas
|
// brestart : booleen qui indique si l'on est en restart ou pas
|
||||||
void Algori::CalEnergieAffichage(const Vecteur & delta_X,int icharge,bool brestart,const Vecteur & forces_vis_num)
|
void Algori::CalEnergieAffichage(const Vecteur & delta_X,int icharge,bool brestart,const Vecteur & forces_vis_num
|
||||||
|
,int aff_iteration)
|
||||||
{
|
{
|
||||||
#ifdef UTILISATION_MPI
|
#ifdef UTILISATION_MPI
|
||||||
// cas d'un calcul //, le CPU 0 calcule
|
// cas d'un calcul //, le CPU 0 calcule
|
||||||
|
@ -1475,7 +1477,8 @@ void Algori::CalEnergieAffichage(const Vecteur & delta_X,int icharge,bool bresta
|
||||||
|
|
||||||
// --- affichage ----
|
// --- affichage ----
|
||||||
if (( pa.Vrai_commande_sortie(icharge,temps_derniere_sauvegarde))
|
if (( pa.Vrai_commande_sortie(icharge,temps_derniere_sauvegarde))
|
||||||
&&(pa.AfficheIncrEnergie()))
|
&&(pa.AfficheIncrEnergie())
|
||||||
|
&& aff_iteration)
|
||||||
{// cas des énergies
|
{// cas des énergies
|
||||||
cout << "\n energies: int= " << std::fixed << std::setprecision(nbcar)<< E_int_tdt
|
cout << "\n energies: int= " << std::fixed << std::setprecision(nbcar)<< E_int_tdt
|
||||||
<< " ext= " << std::fixed << std::setprecision(nbcar)<< E_ext_tdt
|
<< " ext= " << std::fixed << std::setprecision(nbcar)<< E_ext_tdt
|
||||||
|
|
|
@ -1049,12 +1049,13 @@ class Algori
|
||||||
// gamma : vecteur accélération
|
// gamma : vecteur accélération
|
||||||
void CalEnergieAffichage(const double& coef_mass,const Vecteur & V,const Mat_abstraite& mat_mass
|
void CalEnergieAffichage(const double& coef_mass,const Vecteur & V,const Mat_abstraite& mat_mass
|
||||||
,const Vecteur & delta_ddl,int icharge,bool brestart,const Vecteur & gamma
|
,const Vecteur & delta_ddl,int icharge,bool brestart,const Vecteur & gamma
|
||||||
,const Vecteur & forces_vis_num);
|
,const Vecteur & forces_vis_num,int aff_iteration);
|
||||||
// idem pour un calcul statique, c'est-à-dire sans énergie cinématique et puissance d'accélération
|
// idem pour un calcul statique, c'est-à-dire sans énergie cinématique et puissance d'accélération
|
||||||
// affichage éventuelle des ces énergies et du bilan
|
// affichage éventuelle des ces énergies et du bilan
|
||||||
// icharge : compteur d'increment
|
// icharge : compteur d'increment
|
||||||
// brestart : booleen qui indique si l'on est en restart ou pas
|
// brestart : booleen qui indique si l'on est en restart ou pas
|
||||||
void CalEnergieAffichage(const Vecteur & delta_ddl,int icharge,bool brestart,const Vecteur & forces_vis_num);
|
void CalEnergieAffichage(const Vecteur & delta_ddl,int icharge,bool brestart,const Vecteur & forces_vis_num
|
||||||
|
,int aff_iteration);
|
||||||
|
|
||||||
// affichage éventuelle de la matrice de raideur et du second membre
|
// affichage éventuelle de la matrice de raideur et du second membre
|
||||||
void Affiche_RaidSM(const Vecteur & vglobin,const Mat_abstraite& matglob) const;
|
void Affiche_RaidSM(const Vecteur & vglobin,const Mat_abstraite& matglob) const;
|
||||||
|
|
|
@ -2697,7 +2697,7 @@ void Algori::Lecture_base_info(istream& ent,int cas)
|
||||||
ent >> nom1 >> temps_transfert_long_contact;
|
ent >> nom1 >> temps_transfert_long_contact;
|
||||||
ent >> nom1 >> temps_attente_contact;
|
ent >> nom1 >> temps_attente_contact;
|
||||||
#else
|
#else
|
||||||
if (mono_proc_on_lit_un_BI_multiProc)
|
if (mono_proc_on_lit_un_BI_multiProc) // passage des temps de transfert
|
||||||
{for (int i=0;i<13;i++) // 13 car au premier passage il y a la lecture de fin de ligne
|
{for (int i=0;i<13;i++) // 13 car au premier passage il y a la lecture de fin de ligne
|
||||||
{nom1.clear();
|
{nom1.clear();
|
||||||
std::getline(ent, nom1);
|
std::getline(ent, nom1);
|
||||||
|
|
|
@ -1471,7 +1471,7 @@ void AlgoriRungeKutta::CalEquilibre(ParaGlob * paraGlob,LesMaillages * lesMail
|
||||||
// calcul des énergies et affichage des balances
|
// calcul des énergies et affichage des balances
|
||||||
// delta_X.Zero(); delta_X += X_tdt; delta_X -= X_t; // X_tdt - X_t
|
// delta_X.Zero(); delta_X += X_tdt; delta_X -= X_t; // X_tdt - X_t
|
||||||
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
||||||
CalEnergieAffichage(1.,vitesse_tdt,*mat_masse_sauve,delta_X,icharge,brestart,acceleration_tdt,forces_vis_num);
|
CalEnergieAffichage(1.,vitesse_tdt,*mat_masse_sauve,delta_X,icharge,brestart,acceleration_tdt,forces_vis_num,aff_incr);
|
||||||
if (icharge==1)// dans le cas du premier incrément on considère que la balance vaut l'énergie
|
if (icharge==1)// dans le cas du premier incrément on considère que la balance vaut l'énergie
|
||||||
// cinétique initiale, car vu que l'on ne met pas de CL à t=0, E_cin_0 est difficile à calculer
|
// cinétique initiale, car vu que l'on ne met pas de CL à t=0, E_cin_0 est difficile à calculer
|
||||||
{E_cin_0 = E_cin_tdt - bilan_E + E_int_tdt - E_ext_tdt; };
|
{E_cin_0 = E_cin_tdt - bilan_E + E_int_tdt - E_ext_tdt; };
|
||||||
|
|
|
@ -873,7 +873,7 @@ void AlgoriDynaExpli::Calcul_Equilibre(ParaGlob * paraGlob,LesMaillages * lesMai
|
||||||
// calcul des énergies et affichage des balances
|
// calcul des énergies et affichage des balances
|
||||||
// delta_X.Zero(); delta_X += X_tdt; delta_X -= X_t; // X_tdt - X_t
|
// delta_X.Zero(); delta_X += X_tdt; delta_X -= X_t; // X_tdt - X_t
|
||||||
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
||||||
CalEnergieAffichage(1.,vitesse_tdt,matrice_mas_sauve,delta_X,icharge,brestart,acceleration_tdt,forces_vis_num);
|
CalEnergieAffichage(1.,vitesse_tdt,matrice_mas_sauve,delta_X,icharge,brestart,acceleration_tdt,forces_vis_num,aff_incr);
|
||||||
if (icharge==1)// dans le cas du premier incrément on considère que la balance vaut l'énergie
|
if (icharge==1)// dans le cas du premier incrément on considère que la balance vaut l'énergie
|
||||||
// cinétique initiale, car vu que l'on ne met pas de CL à t=0, E_cin_0 est difficile à calculer
|
// cinétique initiale, car vu que l'on ne met pas de CL à t=0, E_cin_0 est difficile à calculer
|
||||||
{E_cin_0 = E_cin_tdt - bilan_E + E_int_tdt - E_ext_tdt; };
|
{E_cin_0 = E_cin_tdt - bilan_E + E_int_tdt - E_ext_tdt; };
|
||||||
|
|
|
@ -632,7 +632,7 @@ void AlgoriDynaExpli::Calcul_Equilibre2(ParaGlob * paraGlob,LesMaillages * lesMa
|
||||||
{// calcul des énergies et affichage des balances
|
{// calcul des énergies et affichage des balances
|
||||||
// delta_X.Zero(); delta_X += X_tdt; delta_X -= X_t; // X_tdt - X_t
|
// delta_X.Zero(); delta_X += X_tdt; delta_X -= X_t; // X_tdt - X_t
|
||||||
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
||||||
CalEnergieAffichage(1.,vitesse_tdt,matrice_mas_sauve,delta_X,icharge,brestart,acceleration_tdt,forces_vis_num);
|
CalEnergieAffichage(1.,vitesse_tdt,matrice_mas_sauve,delta_X,icharge,brestart,acceleration_tdt,forces_vis_num,aff_incr);
|
||||||
if (icharge==1)// dans le cas du premier incrément on considère que la balance vaut l'énergie
|
if (icharge==1)// dans le cas du premier incrément on considère que la balance vaut l'énergie
|
||||||
// cinétique initiale, car vu que l'on ne met pas de CL à t=0, E_cin_0 est difficile à calculer
|
// cinétique initiale, car vu que l'on ne met pas de CL à t=0, E_cin_0 est difficile à calculer
|
||||||
{E_cin_0 = E_cin_tdt - bilan_E + E_int_tdt - E_ext_tdt; };
|
{E_cin_0 = E_cin_tdt - bilan_E + E_int_tdt - E_ext_tdt; };
|
||||||
|
@ -1526,7 +1526,7 @@ void AlgoriDynaExpli::CalEquilibre(ParaGlob * paraGlob,LesMaillages * lesMail
|
||||||
//delta_X.Zero(); delta_X += X_tdt; delta_X -= X_t;// X_tdt - X_t
|
//delta_X.Zero(); delta_X += X_tdt; delta_X -= X_t;// X_tdt - X_t
|
||||||
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
||||||
CalEnergieAffichage(1.,vitesse_tdt,*mat_masse_sauve,delta_X
|
CalEnergieAffichage(1.,vitesse_tdt,*mat_masse_sauve,delta_X
|
||||||
,icharge,brestart,acceleration_tdt,forces_vis_num);
|
,icharge,brestart,acceleration_tdt,forces_vis_num,aff_incr);
|
||||||
if (icharge==1)// dans le cas du premier incrément on considère que la balance vaut l'énergie
|
if (icharge==1)// dans le cas du premier incrément on considère que la balance vaut l'énergie
|
||||||
// cinétique initiale, car vu que l'on ne met pas de CL à t=0, E_cin_0 est difficile à calculer
|
// cinétique initiale, car vu que l'on ne met pas de CL à t=0, E_cin_0 est difficile à calculer
|
||||||
{E_cin_0 = E_cin_tdt - bilan_E + E_int_tdt - E_ext_tdt; };
|
{E_cin_0 = E_cin_tdt - bilan_E + E_int_tdt - E_ext_tdt; };
|
||||||
|
|
|
@ -1010,7 +1010,7 @@ void AlgoriDynaExpli_zhai::CalEquilibre(ParaGlob * paraGlob,LesMaillages * lesMa
|
||||||
{ // calcul des énergies et affichage des balances
|
{ // calcul des énergies et affichage des balances
|
||||||
// delta_X.Zero(); delta_X += X_tdt; delta_X -= X_t; // X_tdt - X_t
|
// delta_X.Zero(); delta_X += X_tdt; delta_X -= X_t; // X_tdt - X_t
|
||||||
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
||||||
CalEnergieAffichage(1.,vitesse_tdt,*mat_masse_sauve,delta_X,icharge,brestart,acceleration_tdt,forces_vis_num);
|
CalEnergieAffichage(1.,vitesse_tdt,*mat_masse_sauve,delta_X,icharge,brestart,acceleration_tdt,forces_vis_num,aff_incr);
|
||||||
if (icharge==1)// dans le cas du premier incrément on considère que la balance vaut l'énergie
|
if (icharge==1)// dans le cas du premier incrément on considère que la balance vaut l'énergie
|
||||||
// cinétique initiale, car vu que l'on ne met pas de CL à t=0, E_cin_0 est difficile à calculer
|
// cinétique initiale, car vu que l'on ne met pas de CL à t=0, E_cin_0 est difficile à calculer
|
||||||
{E_cin_0 = E_cin_tdt - bilan_E + E_int_tdt - E_ext_tdt; };
|
{E_cin_0 = E_cin_tdt - bilan_E + E_int_tdt - E_ext_tdt; };
|
||||||
|
@ -1628,7 +1628,7 @@ void AlgoriDynaExpli_zhai::Calcul_Equilibre(ParaGlob * paraGlob,LesMaillages * l
|
||||||
// calcul des énergies et affichage des balances
|
// calcul des énergies et affichage des balances
|
||||||
// delta_X.Zero(); delta_X += X_tdt; delta_X -= X_t; // X_tdt - X_t
|
// delta_X.Zero(); delta_X += X_tdt; delta_X -= X_t; // X_tdt - X_t
|
||||||
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
||||||
CalEnergieAffichage(1.,vitesse_tdt,matrice_mas_sauve,delta_X,icharge,brestart,acceleration_tdt,forces_vis_num);
|
CalEnergieAffichage(1.,vitesse_tdt,matrice_mas_sauve,delta_X,icharge,brestart,acceleration_tdt,forces_vis_num,aff_incr);
|
||||||
if (icharge==1)// dans le cas du premier incrément on considère que la balance vaut l'énergie
|
if (icharge==1)// dans le cas du premier incrément on considère que la balance vaut l'énergie
|
||||||
// cinétique initiale, car vu que l'on ne met pas de CL à t=0, E_cin_0 est difficile à calculer
|
// cinétique initiale, car vu que l'on ne met pas de CL à t=0, E_cin_0 est difficile à calculer
|
||||||
{E_cin_0 = E_cin_tdt - bilan_E + E_int_tdt - E_ext_tdt; };
|
{E_cin_0 = E_cin_tdt - bilan_E + E_int_tdt - E_ext_tdt; };
|
||||||
|
|
|
@ -997,7 +997,7 @@ void Algori_chung_lee::CalEquilibre(ParaGlob * paraGlob,LesMaillages * lesMail,
|
||||||
// calcul des énergies et affichage des balances
|
// calcul des énergies et affichage des balances
|
||||||
// delta_X.Zero(); delta_X += X_tdt; delta_X -= X_t; // X_tdt - X_t
|
// delta_X.Zero(); delta_X += X_tdt; delta_X -= X_t; // X_tdt - X_t
|
||||||
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
||||||
CalEnergieAffichage(1.,vitesse_t,*mat_masse_sauve,delta_X,icharge,brestart,acceleration_tdt,forces_vis_num);
|
CalEnergieAffichage(1.,vitesse_t,*mat_masse_sauve,delta_X,icharge,brestart,acceleration_tdt,forces_vis_num,aff_incr);
|
||||||
if (icharge==1)// dans le cas du premier incrément on considère que la balance vaut l'énergie
|
if (icharge==1)// dans le cas du premier incrément on considère que la balance vaut l'énergie
|
||||||
// cinétique initiale, car vu que l'on ne met pas de CL à t=0, E_cin_0 est difficile à calculer
|
// cinétique initiale, car vu que l'on ne met pas de CL à t=0, E_cin_0 est difficile à calculer
|
||||||
{E_cin_0 = E_cin_tdt - bilan_E + E_int_tdt - E_ext_tdt; };
|
{E_cin_0 = E_cin_tdt - bilan_E + E_int_tdt - E_ext_tdt; };
|
||||||
|
@ -1683,7 +1683,7 @@ void Algori_chung_lee::Calcul_Equilibre(ParaGlob * paraGlob,LesMaillages * lesMa
|
||||||
// calcul des énergies et affichage des balances
|
// calcul des énergies et affichage des balances
|
||||||
// delta_X.Zero(); delta_X += X_tdt; delta_X -= X_t; // X_tdt - X_t
|
// delta_X.Zero(); delta_X += X_tdt; delta_X -= X_t; // X_tdt - X_t
|
||||||
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
||||||
CalEnergieAffichage(1.,vitesse_t,matrice_mas_sauve,delta_X,icharge,brestart,acceleration_tdt,forces_vis_num);
|
CalEnergieAffichage(1.,vitesse_t,matrice_mas_sauve,delta_X,icharge,brestart,acceleration_tdt,forces_vis_num,aff_incr);
|
||||||
if (icharge==1)// dans le cas du premier incrément on considère que la balance vaut l'énergie
|
if (icharge==1)// dans le cas du premier incrément on considère que la balance vaut l'énergie
|
||||||
// cinétique initiale, car vu que l'on ne met pas de CL à t=0, E_cin_0 est difficile à calculer
|
// cinétique initiale, car vu que l'on ne met pas de CL à t=0, E_cin_0 est difficile à calculer
|
||||||
{E_cin_0 = E_cin_tdt - bilan_E + E_int_tdt - E_ext_tdt; };
|
{E_cin_0 = E_cin_tdt - bilan_E + E_int_tdt - E_ext_tdt; };
|
||||||
|
|
|
@ -1516,6 +1516,18 @@ void AlgoriRelaxDyna::InitAlgorithme(ParaGlob * paraGlob,LesMaillages * lesMail,
|
||||||
lesMail->AjoutConteneurAuNoeud(typQ_gene_int);
|
lesMail->AjoutConteneurAuNoeud(typQ_gene_int);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//// debug
|
||||||
|
//{
|
||||||
|
// cout << "\n debug : AlgoriRelaxDyna::InitAlgorithme( ";
|
||||||
|
// cout << "\n taper une touche pour continuer ";
|
||||||
|
// string rep;
|
||||||
|
// cin >> rep;
|
||||||
|
// //Sortie(1);
|
||||||
|
//}
|
||||||
|
////-- fin debug
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//--cas de restart et/ou de sauvegarde------------
|
//--cas de restart et/ou de sauvegarde------------
|
||||||
// tout d'abord récup du restart si nécessaire
|
// tout d'abord récup du restart si nécessaire
|
||||||
|
@ -2622,7 +2634,7 @@ Vecteur V_ext(F_int_tdt);
|
||||||
// delta_X = X_tdt; delta_X -= X_t; // X_tdt - X_t
|
// delta_X = X_tdt; delta_X -= X_t; // X_tdt - X_t
|
||||||
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
||||||
CalEnergieAffichage(1.,vitesse_tdt,*mat_masse_sauve,delta_X
|
CalEnergieAffichage(1.,vitesse_tdt,*mat_masse_sauve,delta_X
|
||||||
,icharge,brestart,acceleration_tdt,forces_vis_num);
|
,icharge,brestart,acceleration_tdt,forces_vis_num,aff_iteration);
|
||||||
if (compteur_demarrage==0)// dans le cas du premier incrément on considère que la balance vaut l'énergie
|
if (compteur_demarrage==0)// dans le cas du premier incrément on considère que la balance vaut l'énergie
|
||||||
// cinétique initiale, car vu que l'on ne met pas de CL à t=0, E_cin_0 est difficile à calculer
|
// cinétique initiale, car vu que l'on ne met pas de CL à t=0, E_cin_0 est difficile à calculer
|
||||||
{E_cin_0 = E_cin_tdt - bilan_E + E_int_tdt - E_ext_tdt; };
|
{E_cin_0 = E_cin_tdt - bilan_E + E_int_tdt - E_ext_tdt; };
|
||||||
|
|
|
@ -1630,7 +1630,7 @@ void AlgoriTchamwa::CalEquilibre(ParaGlob * paraGlob,LesMaillages * lesMail
|
||||||
// calcul des énergies et affichage des balances
|
// calcul des énergies et affichage des balances
|
||||||
// delta_X.Zero(); delta_X += X_tdt; delta_X -= X_t; // X_tdt - X_t
|
// delta_X.Zero(); delta_X += X_tdt; delta_X -= X_t; // X_tdt - X_t
|
||||||
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
||||||
CalEnergieAffichage(1.,vitesse_tdt,*mat_masse_sauve,delta_X,icharge,brestart,acceleration_tdt,forces_vis_num);
|
CalEnergieAffichage(1.,vitesse_tdt,*mat_masse_sauve,delta_X,icharge,brestart,acceleration_tdt,forces_vis_num,aff_incr);
|
||||||
if (icharge==1)// dans le cas du premier incrément on considère que la balance vaut l'énergie
|
if (icharge==1)// dans le cas du premier incrément on considère que la balance vaut l'énergie
|
||||||
// cinétique initiale, car vu que l'on ne met pas de CL à t=0, E_cin_0 est difficile à calculer
|
// cinétique initiale, car vu que l'on ne met pas de CL à t=0, E_cin_0 est difficile à calculer
|
||||||
{E_cin_0 = E_cin_tdt - bilan_E + E_int_tdt - E_ext_tdt; };
|
{E_cin_0 = E_cin_tdt - bilan_E + E_int_tdt - E_ext_tdt; };
|
||||||
|
|
|
@ -561,7 +561,7 @@ void AlgoriTchamwa::Calcul_Equilibre2(ParaGlob * paraGlob,LesMaillages * lesMail
|
||||||
// calcul des énergies et affichage des balances
|
// calcul des énergies et affichage des balances
|
||||||
// delta_X.Zero(); delta_X += X_tdt; delta_X -= X_t; // X_tdt - X_t
|
// delta_X.Zero(); delta_X += X_tdt; delta_X -= X_t; // X_tdt - X_t
|
||||||
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
||||||
CalEnergieAffichage(1.,vitesse_tdt,matrice_mas_sauve,delta_X,icharge,brestart,acceleration_tdt,forces_vis_num);
|
CalEnergieAffichage(1.,vitesse_tdt,matrice_mas_sauve,delta_X,icharge,brestart,acceleration_tdt,forces_vis_num,aff_incr);
|
||||||
if (icharge==1)// dans le cas du premier incrément on considère que la balance vaut l'énergie
|
if (icharge==1)// dans le cas du premier incrément on considère que la balance vaut l'énergie
|
||||||
// cinétique initiale, car vu que l'on ne met pas de CL à t=0, E_cin_0 est difficile à calculer
|
// cinétique initiale, car vu que l'on ne met pas de CL à t=0, E_cin_0 est difficile à calculer
|
||||||
{E_cin_0 = E_cin_tdt - bilan_E + E_int_tdt - E_ext_tdt; };
|
{E_cin_0 = E_cin_tdt - bilan_E + E_int_tdt - E_ext_tdt; };
|
||||||
|
@ -1126,7 +1126,7 @@ void AlgoriTchamwa::Calcul_Equilibre4(ParaGlob * paraGlob,LesMaillages * lesMail
|
||||||
// calcul des énergies et affichage des balances
|
// calcul des énergies et affichage des balances
|
||||||
// delta_X.Zero(); delta_X += X_tdt; delta_X -= X_t; // X_tdt - X_t
|
// delta_X.Zero(); delta_X += X_tdt; delta_X -= X_t; // X_tdt - X_t
|
||||||
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
||||||
CalEnergieAffichage(1.,vitesse_tdt,matrice_mas_sauve,delta_X,icharge,brestart,acceleration_tdt,forces_vis_num);
|
CalEnergieAffichage(1.,vitesse_tdt,matrice_mas_sauve,delta_X,icharge,brestart,acceleration_tdt,forces_vis_num,aff_incr);
|
||||||
if (icharge==1)// dans le cas du premier incrément on considère que la balance vaut l'énergie
|
if (icharge==1)// dans le cas du premier incrément on considère que la balance vaut l'énergie
|
||||||
// cinétique initiale, car vu que l'on ne met pas de CL à t=0, E_cin_0 est difficile à calculer
|
// cinétique initiale, car vu que l'on ne met pas de CL à t=0, E_cin_0 est difficile à calculer
|
||||||
{E_cin_0 = E_cin_tdt - bilan_E + E_int_tdt - E_ext_tdt; };
|
{E_cin_0 = E_cin_tdt - bilan_E + E_int_tdt - E_ext_tdt; };
|
||||||
|
|
|
@ -971,7 +971,7 @@ void AlgoriNewmark::CalEquilibre(ParaGlob * paraGlob,LesMaillages * lesMail
|
||||||
// calcul des énergies et affichage des balances
|
// calcul des énergies et affichage des balances
|
||||||
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
||||||
CalEnergieAffichage(coef_masse * unSurBetaDeltaTcarre,vitesse_tdt,mat_mas_modif
|
CalEnergieAffichage(coef_masse * unSurBetaDeltaTcarre,vitesse_tdt,mat_mas_modif
|
||||||
,delta_X,icharge,brestart,acceleration_tdt,forces_vis_num);
|
,delta_X,icharge,brestart,acceleration_tdt,forces_vis_num,aff_iteration);
|
||||||
if (permet_affichage > 3)
|
if (permet_affichage > 3)
|
||||||
{ cout << "\n --- |max_var_DeltaDdl|= "<< max_var_delta_X
|
{ cout << "\n --- |max_var_DeltaDdl|= "<< max_var_delta_X
|
||||||
<< " , |max_deltaDdl|= " << max_delta_X << flush;};
|
<< " , |max_deltaDdl|= " << max_delta_X << flush;};
|
||||||
|
|
|
@ -801,7 +801,7 @@ void AlgoristatExpli::Calcul_Equilibre(ParaGlob * paraGlob,LesMaillages * lesMai
|
||||||
// calcul des énergies et affichage des balances
|
// calcul des énergies et affichage des balances
|
||||||
// delta_X.Zero(); delta_X += X_tdt; delta_X -= X_t; // X_tdt - X_t
|
// delta_X.Zero(); delta_X += X_tdt; delta_X -= X_t; // X_tdt - X_t
|
||||||
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
||||||
CalEnergieAffichage(1.,vitesse_tdt,matrice_mas_sauve,delta_X,icharge,brestart,acceleration_tdt,forces_vis_num);
|
CalEnergieAffichage(1.,vitesse_tdt,matrice_mas_sauve,delta_X,icharge,brestart,acceleration_tdt,forces_vis_num,aff_iteration);
|
||||||
if (icharge==1)// dans le cas du premier incrément on considère que la balance vaut l'énergie
|
if (icharge==1)// dans le cas du premier incrément on considère que la balance vaut l'énergie
|
||||||
// cinétique initiale, car vu que l'on ne met pas de CL à t=0, E_cin_0 est difficile à calculer
|
// cinétique initiale, car vu que l'on ne met pas de CL à t=0, E_cin_0 est difficile à calculer
|
||||||
{E_cin_0 = E_cin_tdt - bilan_E + E_int_tdt - E_ext_tdt; };
|
{E_cin_0 = E_cin_tdt - bilan_E + E_int_tdt - E_ext_tdt; };
|
||||||
|
|
|
@ -1025,7 +1025,7 @@ void AlgoriNonDyna::CalEquilibre(ParaGlob * paraGlob,LesMaillages * lesMail
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
CalEnergieAffichage(delta_X,icharge,brestart,forces_vis_num);
|
CalEnergieAffichage(delta_X,icharge,brestart,forces_vis_num,aff_iteration);
|
||||||
// test de convergence sur un increment
|
// test de convergence sur un increment
|
||||||
// en tenant compte éventuellement du contact (non decollement) decol = false systématiquement si pas de contact
|
// en tenant compte éventuellement du contact (non decollement) decol = false systématiquement si pas de contact
|
||||||
|
|
||||||
|
|
|
@ -588,7 +588,7 @@ void ImpliNonDynaCont::Calcul_Equilibre(ParaGlob * paraGlob,LesMaillages * lesMa
|
||||||
// delta_X.Zero(); delta_X += X_tdt; delta_X -= X_t; // X_tdt - X_t
|
// delta_X.Zero(); delta_X += X_tdt; delta_X -= X_t; // X_tdt - X_t
|
||||||
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
Algori::Cal_Transfert_delta_et_var_X(max_delta_X,max_var_delta_X);
|
||||||
Vecteur forces_vis_num; // ne sert pas
|
Vecteur forces_vis_num; // ne sert pas
|
||||||
CalEnergieAffichage(delta_X,icharge,brestart,forces_vis_num);
|
CalEnergieAffichage(delta_X,icharge,brestart,forces_vis_num,aff_iteration);
|
||||||
// test de convergence sur un increment
|
// test de convergence sur un increment
|
||||||
// en tenant compte du contact (non decollement)
|
// en tenant compte du contact (non decollement)
|
||||||
if (Convergence(aff_iteration,last_var_ddl_max,vglobaal,maxPuissExt,maxPuissInt,maxReaction,compteur,arret)
|
if (Convergence(aff_iteration,last_var_ddl_max,vglobaal,maxPuissExt,maxPuissInt,maxReaction,compteur,arret)
|
||||||
|
|
|
@ -1155,14 +1155,7 @@ void Charge::Lecture_base_info(istream& entr,const int cas,LesReferences& ,LesCo
|
||||||
istream& entr = *entrons; // on redéfinit ent
|
istream& entr = *entrons; // on redéfinit ent
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
entr >> toto ; // entête
|
entr >> toto ; // entête dans le cas non MPI
|
||||||
#ifdef MISE_AU_POINT
|
|
||||||
if (toto != "****chargement")
|
|
||||||
{cout << "\n *** erreur en lecture, on attendait ****chargement "
|
|
||||||
<< " et on a lue " << toto;
|
|
||||||
Sortie(1);
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
// dans le cas où on lit un fichier créé avec MPI io, et que l'on n'est pas
|
// dans le cas où on lit un fichier créé avec MPI io, et que l'on n'est pas
|
||||||
// en MPI, on passe les offsets et tailles
|
// en MPI, on passe les offsets et tailles
|
||||||
#ifndef UTILISATION_MPI
|
#ifndef UTILISATION_MPI
|
||||||
|
@ -1175,12 +1168,20 @@ void Charge::Lecture_base_info(istream& entr,const int cas,LesReferences& ,LesCo
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (mono_proc_on_lit_un_BI_multiProc)
|
||||||
|
entr >> toto ; // lecture en tête
|
||||||
|
#ifdef MISE_AU_POINT
|
||||||
|
if (toto != "****chargement")
|
||||||
|
{cout << "\n *** erreur en lecture, on attendait ****chargement "
|
||||||
|
<< " et on a lue " << toto;
|
||||||
|
Sortie(1);
|
||||||
|
};
|
||||||
|
#endif
|
||||||
switch (cas)
|
switch (cas)
|
||||||
{ case 1 : // ------- on récupère tout -------------------------
|
{ case 1 : // ------- on récupère tout -------------------------
|
||||||
|
|
||||||
{ if (ParaGlob::NiveauImpression() >= 6)
|
{ if (ParaGlob::NiveauImpression() >= 6)
|
||||||
cout << "== lecture du chargement \n";
|
cout << "== lecture du chargement \n";
|
||||||
string toto;entr >> toto ; // lecture en tête
|
|
||||||
string type; entr >> type; // lecture du premier type
|
string type; entr >> type; // lecture du premier type
|
||||||
while (type != "type_de_charge")
|
while (type != "type_de_charge")
|
||||||
{ if (type == "force_volumique")
|
{ if (type == "force_volumique")
|
||||||
|
@ -1387,15 +1388,15 @@ void Charge::Ecriture_base_info(ostream& sort,const int cas)
|
||||||
#ifdef UTILISATION_MPI
|
#ifdef UTILISATION_MPI
|
||||||
// retour de la taille globale des sorties retardées
|
// retour de la taille globale des sorties retardées
|
||||||
// concernant les sorties sur .BI
|
// concernant les sorties sur .BI
|
||||||
int Charge::Taille_buffer_sortie_BI()
|
MPI_Offset Charge::Taille_buffer_sortie_BI()
|
||||||
{int taille_totale = 0; // init
|
{MPI_Offset taille_totale = 0; // init
|
||||||
int proc_en_cours = ParaGlob::Monde()->rank();
|
int proc_en_cours = ParaGlob::Monde()->rank();
|
||||||
if (proc_en_cours == 0) // partie dédiée proc 0
|
if (proc_en_cours == 0) // partie dédiée proc 0
|
||||||
{// tout d'abord on prend en compte les buffers propres
|
{// tout d'abord on prend en compte les buffers propres
|
||||||
for (int i=1;i<= nb_buffer;i++) // normalement 1
|
for (MPI_Offset i=1;i<= nb_buffer;i++) // normalement 1
|
||||||
taille_totale += buffer_ioBI_MPI(i).size();
|
taille_totale += buffer_ioBI_MPI(i).size();
|
||||||
// puis on intègre la taille de l'ensemble des offsets:
|
// puis on intègre la taille de l'ensemble des offsets:
|
||||||
int taille_entete = 42 + (taille_offset)*21+27; // cf. Charge::Ecriture_base_info_MPI_IO
|
MPI_Offset taille_entete = 42 + (taille_offset)*21+27; // cf. Charge::Ecriture_base_info_MPI_IO
|
||||||
taille_totale += taille_entete;
|
taille_totale += taille_entete;
|
||||||
};
|
};
|
||||||
// retour
|
// retour
|
||||||
|
|
|
@ -325,7 +325,7 @@ class Charge
|
||||||
#ifdef UTILISATION_MPI
|
#ifdef UTILISATION_MPI
|
||||||
// retour de la taille globale des sorties retardées
|
// retour de la taille globale des sorties retardées
|
||||||
// concernant les sorties sur .BI
|
// concernant les sorties sur .BI
|
||||||
int Taille_buffer_sortie_BI();
|
MPI_Offset Taille_buffer_sortie_BI();
|
||||||
// récupération de l'offset global sur .BI pour la classe
|
// récupération de l'offset global sur .BI pour la classe
|
||||||
// et mise à jour des offsets de classes dérivées si besoin
|
// et mise à jour des offsets de classes dérivées si besoin
|
||||||
void Mise_a_jour_Offset_BI_ecriture(MPI_Offset offset,const int cas);
|
void Mise_a_jour_Offset_BI_ecriture(MPI_Offset offset,const int cas);
|
||||||
|
|
|
@ -88,6 +88,13 @@
|
||||||
charge->Lecture2(*entreePrinc,*lesCourbes1D,*lesFonctionsnD); // lecture du type d'application du chargement
|
charge->Lecture2(*entreePrinc,*lesCourbes1D,*lesFonctionsnD); // lecture du type d'application du chargement
|
||||||
algori->Lecture(*entreePrinc,*paraGlob,*lesMaillages); // lecture des parametres de controle de l'algorithme
|
algori->Lecture(*entreePrinc,*paraGlob,*lesMaillages); // lecture des parametres de controle de l'algorithme
|
||||||
resultats->Lecture(lesRef); // lecture des parametres de gestion de la sortie des resultats
|
resultats->Lecture(lesRef); // lecture des parametres de gestion de la sortie des resultats
|
||||||
|
//
|
||||||
|
// // debug
|
||||||
|
// cout << "\n debug : Projet::Lecture () ";
|
||||||
|
// Sortie(1);
|
||||||
|
// //-- fin debug
|
||||||
|
//
|
||||||
|
//
|
||||||
// s'il y a des données externes sur les maillages nécessaires pour l'algorithme
|
// s'il y a des données externes sur les maillages nécessaires pour l'algorithme
|
||||||
if (algori->ExisteDonneesExternes())
|
if (algori->ExisteDonneesExternes())
|
||||||
LectureDonneesExternes();
|
LectureDonneesExternes();
|
||||||
|
|
|
@ -484,7 +484,17 @@ class UtilLecture
|
||||||
friend istream & operator >> (istream & entree, Position_BI& a);
|
friend istream & operator >> (istream & entree, Position_BI& a);
|
||||||
// surcharge de l'operator d'ecriture
|
// surcharge de l'operator d'ecriture
|
||||||
friend ostream & operator << (ostream & sort, const Position_BI& a);
|
friend ostream & operator << (ostream & sort, const Position_BI& a);
|
||||||
|
#ifdef UTILISATION_MPI
|
||||||
|
private:
|
||||||
|
friend class boost::serialization::access;
|
||||||
|
// When the class Archive corresponds to an output archive, the
|
||||||
|
// & operator is defined similar to <<. Likewise, when the class Archive
|
||||||
|
// is a type of input archive the & operator is defined similar to >>.
|
||||||
|
template<class Archive>
|
||||||
|
void serialize(Archive & ar, const unsigned int version)
|
||||||
|
{ ar & num_incr; ar & position; }
|
||||||
|
#endif
|
||||||
|
|
||||||
public :
|
public :
|
||||||
#ifndef UTILISATION_MPI
|
#ifndef UTILISATION_MPI
|
||||||
Position_BI(streampos posi=(ios::beg), int num = 0) : // constructeur
|
Position_BI(streampos posi=(ios::beg), int num = 0) : // constructeur
|
||||||
|
@ -559,13 +569,13 @@ class UtilLecture
|
||||||
#else
|
#else
|
||||||
MPI_File ent_MPI_BI ; // pointeur fichier commun
|
MPI_File ent_MPI_BI ; // pointeur fichier commun
|
||||||
MPI_File sort_MPI_BI ; // " "
|
MPI_File sort_MPI_BI ; // " "
|
||||||
int taille_buffer_Nouvelle_enreg_MPI; // la taille du buffer pour chaque enreg
|
MPI_Offset taille_buffer_Nouvelle_enreg_MPI; // la taille du buffer pour chaque enreg
|
||||||
char * buffer_MPI; // le tableau du buffer associé
|
char * buffer_MPI; // le tableau du buffer associé
|
||||||
MPI_Offset offset_Nouvelle_enreg_MPI; //l'offset actuel du buffer lue par Nouvelle_enreg_MPI
|
MPI_Offset offset_Nouvelle_enreg_MPI; //l'offset actuel du buffer lue par Nouvelle_enreg_MPI
|
||||||
int lecture_MPI_BI_en_cours; // " " =0 le fichier n'est pas ouvert, =1 le buffer n'est pas encore rempli
|
int lecture_MPI_BI_en_cours; // " " =0 le fichier n'est pas ouvert, =1 le buffer n'est pas encore rempli
|
||||||
// = 2 la lecture est en cours et le buffer est rempli
|
// = 2 la lecture est en cours et le buffer est rempli
|
||||||
int taille_actuelle_buffer; // " "
|
MPI_Offset taille_actuelle_buffer; // " "
|
||||||
int dernier_posi_dans_buffer; // " "
|
MPI_Offset dernier_posi_dans_buffer; // " "
|
||||||
|
|
||||||
MPI_File ent_MPI_PI ; // pointeur fichier liste des pointeurs d'incréments de base info
|
MPI_File ent_MPI_PI ; // pointeur fichier liste des pointeurs d'incréments de base info
|
||||||
MPI_File sort_MPI_PI ; // " "
|
MPI_File sort_MPI_PI ; // " "
|
||||||
|
|
|
@ -401,7 +401,11 @@ void UtilLecture::Nouvel_enregCvisu ()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// on récupère le nombre d'éléments lus
|
// on récupère le nombre d'éléments lus
|
||||||
MPI_Get_count(&status, MPI_CHAR,&taille_actuelle_buffer);
|
int inter_taille; // MPI_Get_count utilise un entier pour la taille
|
||||||
|
// donc on utilise une variable intermédiare, car on veut garder un MPI_Offset
|
||||||
|
// pour les tailles, histoire d'être homogène dans tout herezh en MPI-IO
|
||||||
|
MPI_Get_count(&status, MPI_CHAR,&inter_taille);
|
||||||
|
taille_actuelle_buffer=inter_taille;
|
||||||
// si le nombre est inférieur à celui demandé, on est arrivé à la fin du fichier
|
// si le nombre est inférieur à celui demandé, on est arrivé à la fin du fichier
|
||||||
if (taille_actuelle_buffer < taille_buffer_Nouvelle_enreg_MPI)
|
if (taille_actuelle_buffer < taille_buffer_Nouvelle_enreg_MPI)
|
||||||
{pas_fin_fichier = false;}
|
{pas_fin_fichier = false;}
|
||||||
|
@ -438,7 +442,11 @@ void UtilLecture::Nouvel_enregCvisu ()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// on récupère le nombre d'éléments lus
|
// on récupère le nombre d'éléments lus
|
||||||
ierr_lecture = MPI_Get_count(&status, MPI_CHAR,&taille_actuelle_buffer);
|
int inter_taille; // MPI_Get_count utilise un entier pour la taille
|
||||||
|
// donc on utilise une variable intermédiare, car on veut garder un MPI_Offset
|
||||||
|
// pour les tailles, histoire d'être homogène dans tout herezh en MPI-IO
|
||||||
|
ierr_lecture = MPI_Get_count(&status, MPI_CHAR,&inter_taille);
|
||||||
|
taille_actuelle_buffer=inter_taille;
|
||||||
#ifdef MISE_AU_POINT
|
#ifdef MISE_AU_POINT
|
||||||
if (ierr_lecture)
|
if (ierr_lecture)
|
||||||
{cout << "\n *** erreur d'acces a MPI_Get_count , stop Herezh "
|
{cout << "\n *** erreur d'acces a MPI_Get_count , stop Herezh "
|
||||||
|
|
|
@ -160,7 +160,7 @@ void UtilLecture::Ouverture_base_info(string type_entree)
|
||||||
<< "\n UtilLecture::Ouverture_base_info() " << endl;
|
<< "\n UtilLecture::Ouverture_base_info() " << endl;
|
||||||
Sortie(1);
|
Sortie(1);
|
||||||
};
|
};
|
||||||
int taille_fichier_enOctet = filesize;
|
MPI_Offset taille_fichier_enOctet = filesize;
|
||||||
char * buffer_car = new char [taille_fichier_enOctet] ; // def du tableau de travail
|
char * buffer_car = new char [taille_fichier_enOctet] ; // def du tableau de travail
|
||||||
MPI_Status status;
|
MPI_Status status;
|
||||||
ierr = MPI_File_read(ent_MPI_PI, buffer_car, taille_fichier_enOctet, MPI_CHAR, &status);
|
ierr = MPI_File_read(ent_MPI_PI, buffer_car, taille_fichier_enOctet, MPI_CHAR, &status);
|
||||||
|
@ -297,7 +297,7 @@ void UtilLecture::Ouverture_base_info(string type_entree)
|
||||||
buf2 << endl;
|
buf2 << endl;
|
||||||
// le buffer du stream n'est pas pérenne il faut le récupérer
|
// le buffer du stream n'est pas pérenne il faut le récupérer
|
||||||
string buf_inter = buf2.str(); // on récupère le buffer
|
string buf_inter = buf2.str(); // on récupère le buffer
|
||||||
int taille_buf = buf_inter.size();
|
MPI_Offset taille_buf = buf_inter.size();
|
||||||
MPI_Status status; // pour le retour
|
MPI_Status status; // pour le retour
|
||||||
if (num_cpu_en_cours_BI == 0)
|
if (num_cpu_en_cours_BI == 0)
|
||||||
{int ierr = MPI_File_write(sort_MPI_PI,buf_inter.c_str(),taille_buf,MPI_CHAR,&status);
|
{int ierr = MPI_File_write(sort_MPI_PI,buf_inter.c_str(),taille_buf,MPI_CHAR,&status);
|
||||||
|
@ -317,13 +317,15 @@ void UtilLecture::Ouverture_base_info(string type_entree)
|
||||||
}; // fin du test if (!positionPI)
|
}; // fin du test if (!positionPI)
|
||||||
#ifdef UTILISATION_MPI
|
#ifdef UTILISATION_MPI
|
||||||
// on doit transmettre liste_posi_BI à tous les proc
|
// on doit transmettre liste_posi_BI à tous les proc
|
||||||
std::vector < DeuxEntiers > inter; // sert pour le transfert interproc
|
std::vector < Position_BI > inter; // sert pour le transfert interproc
|
||||||
if (num_cpu_en_cours_BI == 0) // on rempli inter
|
if (num_cpu_en_cours_BI == 0) // on rempli inter
|
||||||
{inter.resize(liste_posi_BI.size());
|
{inter.resize(liste_posi_BI.size());
|
||||||
list<Position_BI>::iterator iter,iter_fin = liste_posi_BI.end();
|
list<Position_BI>::iterator iter,iter_fin = liste_posi_BI.end();
|
||||||
int i=0;
|
int i=0;
|
||||||
for (iter = liste_posi_BI.begin();iter != iter_fin;iter++,i++)
|
for (iter = liste_posi_BI.begin();iter != iter_fin;iter++,i++)
|
||||||
inter[i] = DeuxEntiers((*iter).num_incr,(*iter).position);
|
{inter[i].num_incr = (*iter).num_incr;
|
||||||
|
inter[i].position = (*iter).position;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
// il faut transmettre à tous les proc le contenu de liste_posi_BI
|
// il faut transmettre à tous les proc le contenu de liste_posi_BI
|
||||||
broadcast(*ParaGlob::Monde(), inter, 0);
|
broadcast(*ParaGlob::Monde(), inter, 0);
|
||||||
|
@ -332,7 +334,7 @@ void UtilLecture::Ouverture_base_info(string type_entree)
|
||||||
{liste_posi_BI.clear();
|
{liste_posi_BI.clear();
|
||||||
int taille = inter.size();
|
int taille = inter.size();
|
||||||
for (int i=0;i<taille;i++)
|
for (int i=0;i<taille;i++)
|
||||||
{Position_BI truc(inter[i].deux,inter[i].un);
|
{Position_BI truc(inter[i].num_incr,inter[i].position);
|
||||||
liste_posi_BI.push_back(truc);
|
liste_posi_BI.push_back(truc);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -497,7 +499,7 @@ void UtilLecture::Fermeture_base_info()
|
||||||
buf2 << endl;
|
buf2 << endl;
|
||||||
// le buffer du stream n'est pas pérenne il faut le récupérer
|
// le buffer du stream n'est pas pérenne il faut le récupérer
|
||||||
string buf_inter = buf2.str(); // on récupère le buffer
|
string buf_inter = buf2.str(); // on récupère le buffer
|
||||||
int taille_buf = buf_inter.size();
|
MPI_Offset taille_buf = buf_inter.size();
|
||||||
MPI_Status status; // pour le retour
|
MPI_Status status; // pour le retour
|
||||||
|
|
||||||
int ierr = MPI_File_write(sort_MPI_PI,buf_inter.c_str(),taille_buf,MPI_CHAR,&status);
|
int ierr = MPI_File_write(sort_MPI_PI,buf_inter.c_str(),taille_buf,MPI_CHAR,&status);
|
||||||
|
|
|
@ -2981,13 +2981,6 @@ void LesCondLim::Lecture_base_info(istream& ent,const int cas,LesReferences& ,Le
|
||||||
|
|
||||||
// lecture du nombre de maillage total
|
// lecture du nombre de maillage total
|
||||||
ent >> toto ; // entête
|
ent >> toto ; // entête
|
||||||
#ifdef MISE_AU_POINT
|
|
||||||
if (toto != "****LesCondLim")
|
|
||||||
{cout << "\n *** erreur en lecture, on attendait ****LesCondLim "
|
|
||||||
<< " et on a lue " << toto;
|
|
||||||
Sortie(1);
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
// dans le cas où on lit un fichier créé avec MPI io, et que l'on n'est pas
|
// dans le cas où on lit un fichier créé avec MPI io, et que l'on n'est pas
|
||||||
// en MPI, on passe les offsets et tailles
|
// en MPI, on passe les offsets et tailles
|
||||||
#ifndef UTILISATION_MPI
|
#ifndef UTILISATION_MPI
|
||||||
|
@ -3002,6 +2995,13 @@ void LesCondLim::Lecture_base_info(istream& ent,const int cas,LesReferences& ,Le
|
||||||
|
|
||||||
if (mono_proc_on_lit_un_BI_multiProc)
|
if (mono_proc_on_lit_un_BI_multiProc)
|
||||||
ent >> toto; // on lit l'entête , sinon elle a déjà été lue
|
ent >> toto; // on lit l'entête , sinon elle a déjà été lue
|
||||||
|
#ifdef MISE_AU_POINT
|
||||||
|
if (toto != "****LesCondLim")
|
||||||
|
{cout << "\n *** erreur en lecture, on attendait ****LesCondLim "
|
||||||
|
<< " et on a lue " << toto;
|
||||||
|
Sortie(1);
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
// les conditions linéaires qui varies par exemples dues au contact sont stockées
|
// les conditions linéaires qui varies par exemples dues au contact sont stockées
|
||||||
// autre part, dans LesContacts par exemple
|
// autre part, dans LesContacts par exemple
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
EnumLangue ParaGlob::langueHZ = FRANCAIS; // langue utilisée pour les entrées sorties
|
EnumLangue ParaGlob::langueHZ = FRANCAIS; // langue utilisée pour les entrées sorties
|
||||||
int ParaGlob::nbComposantesTenseur = 1; // nombre de composantes par defaut a 1
|
int ParaGlob::nbComposantesTenseur = 1; // nombre de composantes par defaut a 1
|
||||||
int ParaGlob::nivImpression = 2; // niveau d'impression
|
int ParaGlob::nivImpression = 2; // niveau d'impression
|
||||||
string ParaGlob::nbVersion = "7.045" ; // numéro de version du logiciel
|
string ParaGlob::nbVersion = "7.046" ; // numéro de version du logiciel
|
||||||
string ParaGlob::NbVersionsurfichier = ""; // numéro de version lue en entrée fichier
|
string ParaGlob::NbVersionsurfichier = ""; // numéro de version lue en entrée fichier
|
||||||
int ParaGlob::nb_diggit_double_calcul= 17; // nombre de chiffre significatifs utilisé pour
|
int ParaGlob::nb_diggit_double_calcul= 17; // nombre de chiffre significatifs utilisé pour
|
||||||
// l'affichage des double précision pour l'archivage
|
// l'affichage des double précision pour l'archivage
|
||||||
|
|
|
@ -552,8 +552,8 @@ void ParaGlob::Ecriture_base_info(ostream& sort,const int cas)
|
||||||
|
|
||||||
// retour de la taille globale des sorties retardées
|
// retour de la taille globale des sorties retardées
|
||||||
// concernant les sorties sur .BI
|
// concernant les sorties sur .BI
|
||||||
int ParaGlob::Taille_buffer_sortie_BI()
|
MPI_Offset ParaGlob::Taille_buffer_sortie_BI()
|
||||||
{ int taille =0;
|
{ MPI_Offset taille =0;
|
||||||
taille += 43; // écriture de buf_inter2
|
taille += 43; // écriture de buf_inter2
|
||||||
taille += 57; // écriture de buf_inter1
|
taille += 57; // écriture de buf_inter1
|
||||||
taille += taille_buffer_ioBI_MPI; // écriture du buffer
|
taille += taille_buffer_ioBI_MPI; // écriture du buffer
|
||||||
|
|
|
@ -292,7 +292,7 @@ class ParaGlob
|
||||||
void Ecriture_base_info(MPI_File& sort,const int cas);
|
void Ecriture_base_info(MPI_File& sort,const int cas);
|
||||||
// retour de la taille globale des sorties retardées
|
// retour de la taille globale des sorties retardées
|
||||||
// concernant les sorties sur .BI
|
// concernant les sorties sur .BI
|
||||||
int Taille_buffer_sortie_BI();
|
MPI_Offset Taille_buffer_sortie_BI();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -546,7 +546,7 @@ const T Tableau<T>::val_const(int i) const
|
||||||
#ifdef MISE_AU_POINT
|
#ifdef MISE_AU_POINT
|
||||||
if ( (i<1) || (i>taille) )
|
if ( (i<1) || (i>taille) )
|
||||||
{ cout << "\nErreur : composante inexistante !, nb demande = " << i << '\n';
|
{ cout << "\nErreur : composante inexistante !, nb demande = " << i << '\n';
|
||||||
cout << "T TABLEAU_T::OPERATOR() (int ) const \n";
|
cout << "T TABLEAU_T::val_const(int i) const const \n";
|
||||||
cout << "\n pour info: taille actuelle du tableau = " << taille << " ";
|
cout << "\n pour info: taille actuelle du tableau = " << taille << " ";
|
||||||
Sortie(1);
|
Sortie(1);
|
||||||
};
|
};
|
||||||
|
@ -567,7 +567,7 @@ const T& Tableau<T>::ref_const(int i) const
|
||||||
#ifdef MISE_AU_POINT
|
#ifdef MISE_AU_POINT
|
||||||
if ( (i<1) || (i>taille) )
|
if ( (i<1) || (i>taille) )
|
||||||
{ cout << "\nErreur : composante inexistante !, nb demande = " << i << '\n';
|
{ cout << "\nErreur : composante inexistante !, nb demande = " << i << '\n';
|
||||||
cout << "T TABLEAU_T::OPERATOR() (int ) const \n";
|
cout << "T TABLEAU_T::ref_const(int i) const \n";
|
||||||
cout << "\n pour info: taille actuelle du tableau = " << taille << " ";
|
cout << "\n pour info: taille actuelle du tableau = " << taille << " ";
|
||||||
Sortie(1);
|
Sortie(1);
|
||||||
};
|
};
|
||||||
|
|
|
@ -43,8 +43,8 @@ void Sortie(int n)
|
||||||
// dans le cas de la mise au point
|
// dans le cas de la mise au point
|
||||||
// #ifdef MISE_AU_POINT
|
// #ifdef MISE_AU_POINT
|
||||||
if (nombre_de_fois_ou_on_appel_sortie == 0)
|
if (nombre_de_fois_ou_on_appel_sortie == 0)
|
||||||
{if (fr){cout << "\n passage dans la methode Sortie \n ";}
|
{if (fr){cerr << "\n passage dans la methode Sortie \n ";}
|
||||||
else {cout << "\n call to the method Sortie \n ";}
|
else {cerr << "\n call to the method Sortie \n ";}
|
||||||
};
|
};
|
||||||
// #endif
|
// #endif
|
||||||
// si n est positif on génère une interruption qui peut être intercepté
|
// si n est positif on génère une interruption qui peut être intercepté
|
||||||
|
@ -65,12 +65,12 @@ void Sortie(int n)
|
||||||
// ensuite on continue
|
// ensuite on continue
|
||||||
if (n > 0)
|
if (n > 0)
|
||||||
{if (fr)
|
{if (fr)
|
||||||
{ cout << "\n *************************************************************** "
|
{ cerr << "\n *************************************************************** "
|
||||||
<< "\n ** arret apres une erreur ** "
|
<< "\n ** arret apres une erreur ** "
|
||||||
<< "\n ***************************************************************\n ";
|
<< "\n ***************************************************************\n ";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ cout << "\n *************************************************************** "
|
{ cerr << "\n *************************************************************** "
|
||||||
<< "\n ** stop after an error ** "
|
<< "\n ** stop after an error ** "
|
||||||
<< "\n ***************************************************************\n ";
|
<< "\n ***************************************************************\n ";
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue