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

67 lines
1.6 KiB
C

#include "data_func.h"
void cylinder_a(double* Range,double* Para,string filename)
{
double xmin,xmax,dx;
double D,r,S,density;
double g;
xmin = *Range; dx = *(Range+1); xmax = *(Range+2);
S = *Para; D = *(Para+1); r = *(Para+2); density = *(Para+3);
const char* savename = filename.c_str();
int Num = (xmax-xmin)/dx+1;
xmax = xmin + (Num-1)*dx;
ofstream outfile(savename);
for (int i=0;i<Num;i++)
{
g=2*G*D*density*pi*r*r/((xmin+i*dx-S)*(xmin+i*dx-S)+D*D);
outfile<<xmin+i*dx<<" "<<setprecision(16)<<g<<endl;
}
outfile.close();
}
void cylinder_h(double* Range,double* Para,string filename)
{
double xmin,xmax,dx;
double D,r,S,density;
double g;
xmin = *Range; dx = *(Range+1); xmax = *(Range+2);
S = *Para; D = *(Para+1); r = *(Para+2); density = *(Para+3);
const char* savename = filename.c_str();
int Num = (xmax-xmin)/dx+1;
xmax = xmin + (Num-1)*dx;
ofstream outfile(savename);
for (int i=0;i<Num;i++)
{
g=-4*G*density*pi*r*r*D*(xmin+i*dx-S)/pow(((xmin+i*dx-S)*(xmin+i*dx-S)+D*D),2);
outfile<<xmin+i*dx<<" "<<setprecision(16)<<g*1e+4<<endl;
}
outfile.close();
}
void cylinder_v(double* Range,double* Para,string filename)
{
double xmin,xmax,dx;
double D,r,S,density;
double g;
xmin = *Range; dx = *(Range+1); xmax = *(Range+2);
S = *Para; D = *(Para+1); r = *(Para+2); density = *(Para+3);
const char* savename = filename.c_str();
int Num = (xmax-xmin)/dx+1;
xmax = xmin + (Num-1)*dx;
ofstream outfile(savename);
for (int i=0;i<Num;i++)
{
g=2*G*density*pi*r*r*(D*D-(xmin+i*dx-S)*(xmin+i*dx-S))/pow((xmin+i*dx-S)*(xmin+i*dx-S)+D*D,2);
outfile<<xmin+i*dx<<" "<<setprecision(16)<<g*1e+4<<endl;
}
outfile.close();
}