initial upload
This commit is contained in:
104
archive/grav2d_vectical_cylinder/vec_cyliner.cpp
Normal file
104
archive/grav2d_vectical_cylinder/vec_cyliner.cpp
Normal file
@@ -0,0 +1,104 @@
|
||||
#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;
|
||||
}
|
Reference in New Issue
Block a user