OpenFOAM按进程输出和输入文件

OpenFOAM按进程输出和输入文件

在某些前处理过程中需要按进程输入或者输出某些文件,
例如输出网格中心高度大于0.2m的网格中心点:

    const volVectorField& C = mesh_.C();
    string nProc = std::to_string(Pstream::myProcNo());//不同编译器形式不同
    fileName gamma = "gamma" + "-" + nProc + ".data";
    label count = 0;
    forAll(C,cellI){
    	if(C[cellI][2]>0.2){
    		count++
    	}
    }
    FILE *fout = fopen(gamma.c_str(),"w");
    fprintf(fout,"nGamma %d\n",count);
    forAll(C,i){
	    if (C[i][2] <0.2){
		    fprintf(fout,"%f %f %f\n",C[i][0],C[i][1],C[i][2]);
	    }
    }
    fclose(fout);

在另一个程序中输入这些网格中心,并找到相应的cellID:

			char tmp[128];
			int nGamma = 0;
			float a = 0.0;	//a,b,c必须被定义为float,不能用scalar;
			float b = 0.0;
			float c = 0.0;
			string nProc = std::to_string(Pstream::myProcNo());
			fileName gamma = "gamma" +"-" +nProc+".data";
			FILE* fin = fopen(gamma.c_str(),"r");
			if(fin == NULL){
				Info<< "cannot find gamma file" << endl;
			}
			fscanf(fin,"%s %d",tmp,&nGamma);
			vector listGamma;
			for(int k = 0;k

需要注意的是在使用FILE输入输出文件时,最好使用C++本身函数,与openfoam自带函数有歧义时,需要添加std::

你可能感兴趣的:(openfoam,C++)