gctl_toolkits/archive/TetraGM/main.cpp

429 lines
13 KiB
C++
Raw Normal View History

2024-09-10 20:25:18 +08:00
/*
TetraGM4.0 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
2015/11/12
Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮ǰ<EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣<EFBFBD><EFBFBD><EFBFBD>4.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><EFBFBD>Գ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD>
ͨ<EFBFBD><EFBFBD>ģ<EFBFBD>ͶԱ<EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬʱ4.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʺ<EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>󡣵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>ÿһ<EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ
һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.msh<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD><EFBFBD>ͻ<EFBFBD>ƿڡ<EFBFBD>
2015/11/13
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i5<EFBFBD><EFBFBD>4G<EFBFBD>ڴ<EFBFBD>ƽ̨<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԼΪԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>ƽ̨<EFBFBD><EFBFBD>ȡ<EFBFBD>ø<EFBFBD><EFBFBD>õijɼ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD>¡<EFBFBD>
point3d<EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x,y,z<EFBFBD><EFBFBD>
sphere_point<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD>γֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
vertex<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
edge<EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵı<EFBFBD><EFBFBD>ţ<EFBFBD><EFBFBD>ߵĶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD>ߵij<EFBFBD><EFBFBD>ȣ<EFBFBD><EFBFBD>ߵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>E
face<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><EFBFBD>ţ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>F
tetra<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>š<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>š<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>
<EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>F<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>E<EFBFBD><EFBFBD><EFBFBD>ߵij<EFBFBD><EFBFBD>ȣ<EFBFBD>F<EFBFBD><EFBFBD>E<EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵĹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Data_Func.h<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫʹ<EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Commond_Line.h<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
res_reg.h<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Tetra_G.h<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Tetra_M.h<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
main.cppʶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
*/
#include "Tetra_G.h"
#include "Commond_Line.h"
int caltype = NULL;//<2F><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>
int fietype = NULL;//<2F>۲<EFBFBD><DBB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int attritype = NULL;//Ԫ<><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int elementtype = NULL;//<2F><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
int space_num;//<2F>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>пո<D0BF><D5B8>ĸ<EFBFBD><C4B8><EFBFBD>
double attri[3];//Ԫ<><D4AA><EFBFBD><EFBFBD>
double ob_info[7];//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>۲<EFBFBD><DBB2><EFBFBD><EFBFBD><EFBFBD>Ϣ
string _attri;
string meshname;
string fiename;
string savename;
stringstream stemp;
void disp_info()
{
cout<<"tetragm 0.5.0 - forward modeling of gravity and magnetic data and their gradient data based on unstructured grid"<<endl<<endl
<<"usage: tetragm -gc|ggc|gs|ggs|mc|ms|mgc|mgs -a[<para1>/<para2>/<para3>/<para4>] -v<mesh-file>|s<mesh-file>"<<endl
<<" -F<fie-file>|M[<xmin>/<dx>/<xmax>/<ymin>/<dy>/<ymax>/<altitude>][<lati_min>/<d_lati>/<lati_max>/"<<endl
<<" <longi_min>/<d_longi>/<longi_max>/<radius>] -o<output-file>"<<endl
<<" -gc forward modeling gravity data in Cartesian coordinate"<<endl
<<" -ggc forward modeling gravity gradient data in Cartesian coordinate"<<endl
<<" -gs forward modeling gravity data in spherical coordinate"<<endl
<<" -ggs forward modeling gravity gradient data in spherical coordinate"<<endl
<<" -mc forward modeling magnetic data in Cartesian coordinate"<<endl
<<" -mgc forward modeling magnetic gradient data in Cartesian coordinate"<<endl
<<" -ms forward modeling magnetic data in spherical coordinate"<<endl
<<" -mgs forward modeling magnetic gradient data in spherical coordinate"<<endl
<<" -a define cells' physical attributes. If no arguments are followed behind -a, it means that the cells'"<<endl
<<" attributes are defined by the mesh-file individually. For forward modeling gravity and its gradient"<<endl
<<" data, density is the only parameter the program need. In this case, you just need to specify 'para1'."<<endl
<<" For example '1.0///'. For forward modeling magnetic and its gradient data. Parameters are as follow"<<endl
<<" para1 "<<endl
<<"-Vstring: use volume element, followed by mesh file's name"<<endl
<<"-Sstring: use surface element, followed by mesh file's name"<<endl
<<"-Fstring: read observation points from a .fie file, followed by file name"<<endl
<<"-Mdouble/double/double/double/double/double/double: user defined observation points, format:"<<endl
<<"xmin/dx/xmax/ymin/dy/ymax/altitude"<<endl
<<"lati_min/d_lati/lati_max/longi_min/d_longi/longi_max/radius"<<endl
<<"-Ostring: Output file, followed by file name"<<endl;
}
int typeget(char *str, const char* str2,string &str3)
{
char* strp = strstr(str, str2); // <20><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>str<74>в<EFBFBD><D0B2><EFBFBD>str2<72><32>
if (strp == NULL)
{
return 0; // <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
string temp = str;
str3=temp.substr(strlen(str2));//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>str2<72><32><EFBFBD><EFBFBD><EFBFBD>Ӿ<EFBFBD>
return 1;
}
string& replace_all(string& str,const string& old_value,const string& new_value,int &num) //<2F>滻str<74><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD>lod_valueΪnew_value,<2C><><EFBFBD>ر<EFBFBD><D8B1><EFBFBD><E6BBBB>lod_value<75>ĸ<EFBFBD><C4B8><EFBFBD>
{
int count = 0;
for(string::size_type pos(0);pos!=string::npos;pos+=new_value.length()){
if((pos=str.find(old_value,pos))!=string::npos){
str.replace(pos,old_value.length(),new_value);
count++;
}
else break;
}
num = count;
return str;
}
/*
caltype -GC:1 -GGC:2 -GS:3 -GGS:4 -MC:5 -MGC:6 -MS:7 -MGS:8
elementtype -V:1 -S:2
attritype -F:1 -M:2
*/
struct Call_func
{
int callback_func(int caltype,int elementtype,string filename,string fiename,string savename)
{
switch (caltype)
{
case 1:{
Tetra_G _Project;
if(_Project.info_taker_run(caltype,filename,fiename,savename)) return 1;
}break;
case 2:{
Tetra_G _Project;
if(_Project.info_taker_run(caltype,filename,fiename,savename)) return 1;
}break;
case 3:{
Tetra_G _Project;
if(_Project.info_taker_run(caltype,filename,fiename,savename)) return 1;
}break;
case 4:{
Tetra_G _Project;
if(_Project.info_taker_run(caltype,filename,fiename,savename)) return 1;
}break;
case 5:{
cout<<"Unfished!"<<endl;
}break;
case 6:{
cout<<"Unfished!"<<endl;
}break;
case 7:{
cout<<"Unfished!"<<endl;
}break;
case 8:{
cout<<"Unfished!"<<endl;
}break;
default:{
cout<<"An error picked at 'callback_func()', program stopped...";
exit(0);
}break;
}
return 0;
}
int callback_func(int caltype,int elementtype,string filename,double* ob_info,string savename)
{
switch (caltype)
{
case 1:{
Tetra_G _Project;
if(_Project.info_taker_run(caltype,filename,ob_info,savename)) return 1;
}break;
case 2:{
Tetra_G _Project;
if(_Project.info_taker_run(caltype,filename,ob_info,savename)) return 1;
}break;
case 3:{
Tetra_G _Project;
if(_Project.info_taker_run(caltype,filename,ob_info,savename)) return 1;
}break;
case 4:{
Tetra_G _Project;
if(_Project.info_taker_run(caltype,filename,ob_info,savename)) return 1;
}break;
case 5:{
cout<<"Unfished!"<<endl;
}break;
case 6:{
cout<<"Unfished!"<<endl;
}break;
case 7:{
cout<<"Unfished!"<<endl;
}break;
case 8:{
cout<<"Unfished!"<<endl;
}break;
default:{
cout<<"An error picked at 'callback_func()', program stopped...";
exit(0);
}break;
}
return 0;
}
int callback_func(int caltype,int elementtype,string filename,string fiename,string savename,double* attri)
{
switch (caltype)
{
case 1:{
Tetra_G _Project;
if(_Project.info_taker_run(caltype,filename,fiename,savename,attri)) return 1;
}break;
case 2:{
Tetra_G _Project;
if(_Project.info_taker_run(caltype,filename,fiename,savename,attri)) return 1;
}break;
case 3:{
Tetra_G _Project;
if(_Project.info_taker_run(caltype,filename,fiename,savename,attri)) return 1;
}break;
case 4:{
Tetra_G _Project;
if(_Project.info_taker_run(caltype,filename,fiename,savename,attri)) return 1;
}break;
case 5:{
cout<<"Unfished!"<<endl;
}break;
case 6:{
cout<<"Unfished!"<<endl;
}break;
case 7:{
cout<<"Unfished!"<<endl;
}break;
case 8:{
cout<<"Unfished!"<<endl;
}break;
default:{
cout<<"An error picked at 'callback_func()', program stopped...";
exit(0);
}break;
}
return 0;
}
int callback_func(int caltype,int elementtype,string filename,double* ob_info,string savename,double* attri)
{
switch (caltype)
{
case 1:{
Tetra_G _Project;
if(_Project.info_taker_run(caltype,filename,ob_info,savename,attri)) return 1;
}break;
case 2:{
Tetra_G _Project;
if(_Project.info_taker_run(caltype,filename,ob_info,savename,attri)) return 1;
}break;
case 3:{
Tetra_G _Project;
if(_Project.info_taker_run(caltype,filename,ob_info,savename,attri)) return 1;
}break;
case 4:{
Tetra_G _Project;
if(_Project.info_taker_run(caltype,filename,ob_info,savename,attri)) return 1;
}break;
case 5:{
cout<<"Unfished!"<<endl;
}break;
case 6:{
cout<<"Unfished!"<<endl;
}break;
case 7:{
cout<<"Unfished!"<<endl;
}break;
case 8:{
cout<<"Unfished!"<<endl;
}break;
default:{
cout<<"An error picked at 'callback_func()', program stopped...";
exit(0);
}break;
}
return 0;
}
};
int main(int argc,char* argv[])
{
if(argc==1){
disp_info();
}
else{
Call_func Call;
for(int i=1;i<=argc-1;i++){
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>
if(!strcmp(argv[i],ForGC)) caltype=1;
else if(!strcmp(argv[i],ForGGC)) caltype=2;
else if(!strcmp(argv[i],ForGS)) caltype=3;
else if(!strcmp(argv[i],ForGGS)) caltype=4;
else if(!strcmp(argv[i],ForMC)) caltype=5;
else if(!strcmp(argv[i],ForMGC)) caltype=6;
else if(!strcmp(argv[i],ForMS)) caltype=7;
else if(!strcmp(argv[i],ForMGS)) caltype=8;
//<2F><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD>Ҫ<EFBFBD>ͺ<EFBFBD>
if(typeget(argv[i],ATTRI,_attri)){
if(_attri!=""){
attritype=2;
replace_all(_attri,"/"," ",space_num);
stemp.clear();
stemp.str(_attri);
if(space_num==3){
for(int i=0;i<4;i++)
{
if(!(stemp>>attri[i])){
attri[i]=DBL_MAX;
}
}
}
else{
cout<<"Insufficient attributes information, program stoped...";//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>۲<EFBFBD><DBB2><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ
system("pause");
exit(0);
}
}
else attritype=1;//<2F><><EFBFBD>޸<EFBFBD><DEB8><EFBFBD>Ԫ<EFBFBD><D4AA>Ϣ
}
//<2F><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
if(typeget(argv[i],VolumeElement,meshname)){
elementtype = 1;
if(meshname==""){
cout<<"No mesh file name, program stoped...";//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ
system("pause");
exit(0);
}
}
else if(typeget(argv[i],SurfaceElement,meshname)){
elementtype = 2;
if(meshname==""){
cout<<"No mesh file name, program stoped...";//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ
system("pause");
exit(0);
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>۲<EFBFBD><DBB2><EFBFBD>Ϣ
if(typeget(argv[i],FILE,fiename)){
fietype=1;
if(fiename==""){
cout<<"No observation points' information, program stoped...";//<2F>޹۲<DEB9><DBB2><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ
system("pause");
exit(0);
}
}
else if(typeget(argv[i],MANUAL,fiename)){
fietype=2;
if(fiename==""){
cout<<"No observation points' information, program stoped...";//<2F><><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>۲<EFBFBD><DBB2><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ
system("pause");
exit(0);
}
else{
replace_all(fiename,"/"," ",space_num);
stemp.clear();
stemp.str(fiename);
if(space_num==6){
for(int i=0;i<7;i++)
{
if(!(stemp>>ob_info[i])){
ob_info[i]=DBL_MAX;
}
}
for(int i=0;i<7;i++)
{
if(ob_info[i]==DBL_MAX){
cout<<"Wrong observation points' information, program stoped...";//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>۲<EFBFBD><DBB2><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ
system("pause");
exit(0);
}
}
if(ob_info[1]<0||ob_info[4]<0||ob_info[0]>ob_info[2]||ob_info[3]>ob_info[5]||(ob_info[0]+ob_info[1])>ob_info[2]||(ob_info[3]+ob_info[4])>ob_info[5]){
cout<<"Wrong observation points' information, program stoped...";//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>۲<EFBFBD><DBB2><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ
system("pause");
exit(0);
}
}
else{
cout<<"Wrong observation points' information, program stoped...";//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>۲<EFBFBD><DBB2><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ
system("pause");
exit(0);
}
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
if(typeget(argv[i],OUTFILE,savename)){
if(savename==""){
cout<<"No output file name, program stoped...";//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ
system("pause");
exit(0);
}
}
}
if(caltype==NULL||fietype==NULL||attritype==NULL||elementtype==NULL||savename==""){
cout<<"Wrong commond line, program stoped...";
system("pause");
exit(0);
}
if(fietype==1&&attritype==1){
if(Call.callback_func(caltype,elementtype,meshname,fiename,savename)){
system("pause");
exit(0);
}
}
else if(fietype==1&&attritype==2){
if(Call.callback_func(caltype,elementtype,meshname,fiename,savename,attri)){
system("pause");
exit(0);
}
}
else if(fietype==2&&attritype==1){
if(Call.callback_func(caltype,elementtype,meshname,ob_info,savename)){
system("pause");
exit(0);
}
}
else if(fietype==2&&attritype==2){
if(Call.callback_func(caltype,elementtype,meshname,ob_info,savename,attri)){
system("pause");
exit(0);
}
}
else{
cout<<"A program error is detected, program stopped...";
system("pause");
exit(0);
}
}
return 0;
}