2016-11-03 1 views
0

J'ai un problème assez curieux. Dans la suite, j'ai une petite découpe de mon code. Le programme semble créer sans aucune raison des sorties nan et donc ça ne marche pas. Après 58 boucles la sortie de la valeur de retour res_force_vector devient nan (je ne sais pas pourquoi ...). Cependant, si je veux connaitre le vecteur loc_force_vec le code semble bien fonctionner et le vecteur de sortie res_force_vec n'est plus nan ???? Est-ce que cout change quelque chose dans le code? Comment pourrais-je résoudre ce problème?cout changements variables de nan à zéro?

.... 
// Material data of linear material 
double E = elements_info(i,2); 
double d = elements_info(i,3); 
double nue = elements_info(i,4); 
//calculate inner restoring force vector 
element_array[i].load_data(x_coor,y_coor,E,nue,d); 
VectorXd loc_force_vec = element_array[i].create_force_lin(disp_elem,save_params,timestep_counter); 
cout << "local force of element: " << i << endl; 
cout << loc_force_vec << endl;  /////////// this line 
//write local into global force vector 
    for (int k=0;k<dof_vec.rows();k++){ 
    dof = dof_vec(k); 
    if (dof!=0){ 
    res_force_vec(dof-1) += loc_force_vec(k); 
    } 
} 
cout << "norm of internal force of element: " << i << endl; 
cout << res_force_vec.norm() << endl; 
cin.get(); 
} 
return res_force_vec; 
.... 

J'espère que ce problème n'est pas ...

Merci à l'avance Franz

Répondre

0

Pour être clair, toutes les sorties res_force_vec devraient être zéro vecteurs. En fait ils le sont, mais après 58 boucles ça change en nan et si je veux voir les raisons en vérifiant toutes les variables par cout il semble que res_force_vec ne soit plus nan. Peut-être loc_force_vector est aussi nan mais quand je l'imprime avec cout il change à la valeur correcte zéro ???? Désolé les gars je suis un peu désespéré ...