gctl_toolkits/archive/TetraGM/res_reg.h
2024-09-10 20:25:18 +08:00

103 lines
2.0 KiB
C++

//保存中间计算结果,保存最终计算结果
#ifndef _RES_REG_H
#define _RES_REG_H
#include "Data_Func.h"
class res_reg
{
public:
res_reg(int);
~res_reg();
int res_add(double *,int);
int savedat(string,int,sphere_point *);
int savedat(string,int,point3d *);
int check(int);
private:
double *tempresult;
};
res_reg::res_reg(int M)
{
tempresult = new double [M];
for(int i=0;i<M;i++)
{
tempresult[i]=0;
}
}
res_reg::~res_reg()
{
if(tempresult) delete []tempresult;
}
int res_reg::res_add(double *result,int M)
{
for(int i=0;i<M;i++)
{
tempresult[i]+=*(result+i);
}
return 0;
}
int res_reg::savedat(string filename,int sum,sphere_point *fie)
{
ofstream fout;
string tempname = filename + ".dat";
const char* savename = tempname.c_str();
fout.open(savename);
if(!fout)
{
cout<<"can't create "<<savename<<endl;
return 1;
}
else
{
cout<<"saving "<<savename<<"..."<<endl;
fout<<"Longitude(degree) Latitude(degree) Radius(m) Value"<<endl;
for(int i=0;i<sum;i++)
{
fout<<setprecision(16)<<fie[i].phi<<" "<<fie[i].thet<<" "<<fie[i].radius<<" "<<tempresult[i]<<endl;
}
fout.close();
return 0;
}
}
int res_reg::savedat(string filename,int sum,point3d *fie)
{
ofstream fout;
string tempname = filename + ".dat";
const char* savename = tempname.c_str();
fout.open(savename);
if(!fout)
{
cout<<"can't create "<<filename<<endl;
return 1;
}
else
{
cout<<"saving "<<filename<<"..."<<endl;
//fout<<"X(m) Y(m) Z(m) Value"<<endl;
for(int i=0;i<sum;i++)
{
//fout<<setprecision(16)<<fie[i].x<<" "<<fie[i].y<<" "<<fie[i].z<<" "<<tempresult[i]<<endl;
fout<<setprecision(16)<<fie[i].x<<" "<<fie[i].y<<" "<<fie[i].z<<" "<<tempresult[i]<<endl;
}
fout.close();
return 0;
}
}
int res_reg::check(int sum)
{
for(int i=0;i<sum;i++)
{
if(tempresult[i]!=tempresult[i])
{
cout<<"A non-numeric data is detected."<<endl;
return 1;
}
}
return 0;
}
#endif