104 lines
3.0 KiB
C++
104 lines
3.0 KiB
C++
#include "vec_cyliner.h"
|
|
|
|
void disp_help()
|
|
{
|
|
cout<<"grav2d_vectical_cylinder 1.0 - forward modeling gravity data of a vectical cylinder"<<endl<<endl
|
|
<<"syntax: grav2d_vectical_cylinder -p<top-depth>/<bottom-depth>/<radius>/<density> -l<x-center>/<y-center> -r<xmin>/<xmax>/<ymin>/<ymax> -i<x-interval>/<y-interval>[/integral-interval] -o<outfile-name>"<<endl
|
|
<<" -p physical parameters of the cylinder. units are meter and g/cm^3"<<endl
|
|
<<" -l centeral location of the cylinder"<<endl
|
|
<<" -r range of calculation"<<endl
|
|
<<" -i calculation spaces. the default integration interval is 1e-5 for all cases. Users can set customized value by applying a different value"<<endl
|
|
<<" -o output file's name. The output format is .xyz ASSCI format, hence no surffix is needed nor can change the output format."<<endl<<endl
|
|
<<"example: grav2d_vectical_cylinder -p10/60/20/2.0 -l100/100 -r0/200/0/200 -i5/5 -otestout.dat"<<endl;
|
|
}
|
|
|
|
int main(int argc, char const *argv[])
|
|
{
|
|
int range_num;
|
|
double para[4] = {MAX,MAX,MAX,MAX};
|
|
double posi[2] = {MAX,MAX};
|
|
double range[4] = {MAX,MAX,MAX,MAX};
|
|
double interval[3] = {MIN,MIN,MIN};
|
|
char filename[1024] = {0};
|
|
char cmd_type[1024] = {0};
|
|
if (argc==1)
|
|
{
|
|
disp_help();
|
|
}
|
|
else
|
|
{
|
|
for (int i = 1; i < argc; i++)
|
|
{
|
|
sscanf(argv[i],"%2s",cmd_type);
|
|
if (!strcmp(cmd_type,PARA))
|
|
{
|
|
range_num = sscanf(argv[i],"%*2s%lf/%lf/%lf/%lf",¶[0],¶[1],¶[2],¶[3]);
|
|
if (range_num==4)
|
|
{
|
|
if (para[0]>para[1]||para[0]<0||para[1]<0||para[2]<0||para[3]<0)
|
|
{
|
|
cout<<BOLDRED<<"==> "<<RESET<<"bad syntax: "<<argv[i]<<endl;
|
|
return 0;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
cout<<BOLDRED<<"==> "<<RESET<<"bad syntax: "<<argv[i]<<endl;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
if (!strcmp(cmd_type,POSI))
|
|
{
|
|
range_num = sscanf(argv[i],"%*2s%lf/%lf",&posi[0],&posi[1]);
|
|
if (posi[0]==MAX||posi[1]==MAX)
|
|
{
|
|
cout<<BOLDRED<<"==> "<<RESET<<"bad syntax: "<<argv[i]<<endl;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
if (!strcmp(cmd_type,RANGE))
|
|
{
|
|
range_num = sscanf(argv[i],"%*2s%lf/%lf/%lf/%lf",&range[0],&range[1],&range[2],&range[3]);
|
|
if (range_num==4)
|
|
{
|
|
if (range[0]>range[1]||range[2]>range[3])
|
|
{
|
|
cout<<BOLDRED<<"==> "<<RESET<<"bad syntax: "<<argv[i]<<endl;
|
|
return 0;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
cout<<BOLDRED<<"==> "<<RESET<<"bad syntax: "<<argv[i]<<endl;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
if (!strcmp(cmd_type,SPACE))
|
|
{
|
|
range_num = sscanf(argv[i],"%*2s%lf/%lf/%lf",&interval[0],&interval[1],&interval[2]);
|
|
if (interval[0]<0||interval[1]<0)
|
|
{
|
|
cout<<BOLDRED<<"==> "<<RESET<<"bad syntax: "<<argv[i]<<endl;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
if (!strcmp(cmd_type,OUTFILE))
|
|
{
|
|
sscanf(argv[i],"%*2s%s",filename);//按格式读入文件名与扩展名
|
|
if(!strcmp(filename,""))//检查文件名是否为空
|
|
{
|
|
cout<<BOLDRED<<"==> "<<RESET<<"bad syntax: "<<argv[i]<<endl;
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
vec_cy v1;
|
|
v1.info_taker(para,posi,range,interval,filename);
|
|
}
|
|
return 0;
|
|
} |