在Ubuntu 14.04 VirtualBox VM上使用Repast HPC 2.1运行C ++代码。 此代码已经证明可以在Mac笔记本电脑上的XCode中运行。我目前正在尝试使现有代码在Ubuntu中运行。在Ubuntu中的代码上成功运行,但在尝试调用mpirun -n 4时,我收到以下错误,表明该文件无法正常打开:
file open fail /home/repasthpc/Desktop/hpcmodel/angiogenesis-osteogenesis-simulator/concFiles/c100forC.txt
file open fail /home/repasthpc/Desktop/hpcmodel/angiogenesis-osteogenesis-simulator/concFiles/c100forC.txt
file open fail /home/repasthpc/Desktop/hpcmodel/angiogenesis-osteogenesis-simulator/concFiles/c100forC.txt
file open fail /home/repasthpc/Desktop/hpcmodel/angiogenesis-osteogenesis-simulator/concFiles/c100forC.txt
这是使用多个线程(4),我听说在Ubuntu中打开文件时会出现问题,但如果这是问题,我不知道如何修复它。
错误是由此方法中的file.fail()
调用生成的:
#include <fstream>
#include <string>
#include <vector>
#include <math.h>
#include "repast_hpc/Random.h"
#include "SolubleMap.h"
#include "BoneModel.h"
using namespace std;
void SolubleMap::releaseVEGF(std::string filename){
ifstream file;
file.open(filename.c_str());
int row=time; //time
int column=ydim; // location
if(file.fail()){
cerr << "file open fail" << endl;
}
else{
this->VEGFConcentration = new double*[row]; // memory allocated for elements of rows
for(int j = 0; j < row; j++){
this->VEGFConcentration[j] = new double[column]; // memory allocated for elements of columns
for(int i = 0; i < column; i++){
if (!(file >> this->VEGFConcentration[j][i])){
std::cerr << "error while reading file";
break;
}
}
if (!file) break;
}
}
file.close();
}
当完整文件路径作为字符串传递给方法的第2行中的file.open()
时,仍会产生相同的错误。
XCode是否提供了一些我遗漏的参考文献或库?
谢谢!