我有一个非常好奇的问题。在下面我有一个小代码的剪切。该程序似乎没有任何理由创建nan输出,因此它不起作用。在58次循环之后,返回值res_force_vector的输出变为nan(我不知道为什么......)。 但是,如果我想知道向量loc_force_vec,代码似乎工作正常,输出向量res_force_vec不再是nan? cout会改变代码中的某些内容吗?我怎么能解决这个问题?
....
// 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;
....
我希望这个问题不是唯一的...
提前致谢 弗朗兹
答案 0 :(得分:0)
为了清楚起见,所有输出res_force_vec应为零向量。实际上它们是,但是在58次循环之后它变成了nan,如果我想通过cout检查所有变量来查看原因,那么res_force_vec似乎不再是nan了。也许loc_force_vector也是nan但是当我用cout打印它时它会改变为正确的值零???? 对不起,我有点绝望......