This commit is contained in:
张壹 2025-01-08 11:33:18 +08:00
parent dcf18f3681
commit cd5b6f26fe
3 changed files with 93 additions and 93 deletions

View File

@ -30,7 +30,7 @@
using namespace gctl::geometry3d;
void gctl::callink_gravity_para(array<grav_tri_cone> &in_cone, array<gravcone_para> &out_para)
void gctl::callink_gravity_para(array<gravcone> &in_cone, array<gravcone_para> &out_para)
{
point3dc v1, v2, v3, nf;
@ -63,21 +63,21 @@ void gctl::callink_gravity_para(array<grav_tri_cone> &in_cone, array<gravcone_pa
return;
}
typedef void (*gkernel_tri_cone)(gctl::matrix<double> &out_kernel, const gctl::array<gctl::grav_tri_cone> &ele,
typedef void (*gkernel_tri_cone)(gctl::matrix<double> &out_kernel, const gctl::array<gctl::gravcone> &ele,
const gctl::array<gctl::point3ds> &ops, gctl::verbose_type_e verbose);
void gkernel_tricone_pot(gctl::matrix<double> &out_kernel, const gctl::array<gctl::grav_tri_cone> &ele,
void gkernel_tricone_pot(gctl::matrix<double> &out_kernel, const gctl::array<gctl::gravcone> &ele,
const gctl::array<gctl::point3ds> &ops, gctl::verbose_type_e verbose);
void gkernel_tricone_vr(gctl::matrix<double> &out_kernel, const gctl::array<gctl::grav_tri_cone> &ele,
void gkernel_tricone_vr(gctl::matrix<double> &out_kernel, const gctl::array<gctl::gravcone> &ele,
const gctl::array<gctl::point3ds> &ops, gctl::verbose_type_e verbose);
void gkernel_tricone_vrp(gctl::matrix<double> &out_kernel, const gctl::array<gctl::grav_tri_cone> &ele,
void gkernel_tricone_vrp(gctl::matrix<double> &out_kernel, const gctl::array<gctl::gravcone> &ele,
const gctl::array<gctl::point3ds> &ops, gctl::verbose_type_e verbose);
void gkernel_tricone_vrt(gctl::matrix<double> &out_kernel, const gctl::array<gctl::grav_tri_cone> &ele,
void gkernel_tricone_vrt(gctl::matrix<double> &out_kernel, const gctl::array<gctl::gravcone> &ele,
const gctl::array<gctl::point3ds> &ops, gctl::verbose_type_e verbose);
void gkernel_tricone_vrr(gctl::matrix<double> &out_kernel, const gctl::array<gctl::grav_tri_cone> &ele,
void gkernel_tricone_vrr(gctl::matrix<double> &out_kernel, const gctl::array<gctl::gravcone> &ele,
const gctl::array<gctl::point3ds> &ops, gctl::verbose_type_e verbose);
void gctl::gkernel(matrix<double> &out_kernel, const array<grav_tri_cone> &ele,
void gctl::gkernel(matrix<double> &out_kernel, const array<gravcone> &ele,
const array<point3ds> &ops, gravitational_field_type_e comp_id, verbose_type_e verbose)
{
gkernel_tri_cone tricone_kernel;
@ -106,21 +106,21 @@ void gctl::gkernel(matrix<double> &out_kernel, const array<grav_tri_cone> &ele,
}
typedef void (*gobser_tri_cone)(gctl::array<double> &out_obs, const gctl::array<gctl::grav_tri_cone> &ele,
typedef void (*gobser_tri_cone)(gctl::array<double> &out_obs, const gctl::array<gctl::gravcone> &ele,
const gctl::array<gctl::point3ds> &ops, const gctl::array<double> &rho, gctl::verbose_type_e verbose);
void gobser_tricone_pot(gctl::array<double> &out_obs, const gctl::array<gctl::grav_tri_cone> &ele,
void gobser_tricone_pot(gctl::array<double> &out_obs, const gctl::array<gctl::gravcone> &ele,
const gctl::array<gctl::point3ds> &ops, const gctl::array<double> &rho, gctl::verbose_type_e verbose);
void gobser_tricone_vr(gctl::array<double> &out_obs, const gctl::array<gctl::grav_tri_cone> &ele,
void gobser_tricone_vr(gctl::array<double> &out_obs, const gctl::array<gctl::gravcone> &ele,
const gctl::array<gctl::point3ds> &ops, const gctl::array<double> &rho, gctl::verbose_type_e verbose);
void gobser_tricone_vrp(gctl::array<double> &out_obs, const gctl::array<gctl::grav_tri_cone> &ele,
void gobser_tricone_vrp(gctl::array<double> &out_obs, const gctl::array<gctl::gravcone> &ele,
const gctl::array<gctl::point3ds> &ops, const gctl::array<double> &rho, gctl::verbose_type_e verbose);
void gobser_tricone_vrt(gctl::array<double> &out_obs, const gctl::array<gctl::grav_tri_cone> &ele,
void gobser_tricone_vrt(gctl::array<double> &out_obs, const gctl::array<gctl::gravcone> &ele,
const gctl::array<gctl::point3ds> &ops, const gctl::array<double> &rho, gctl::verbose_type_e verbose);
void gobser_tricone_vrr(gctl::array<double> &out_obs, const gctl::array<gctl::grav_tri_cone> &ele,
void gobser_tricone_vrr(gctl::array<double> &out_obs, const gctl::array<gctl::gravcone> &ele,
const gctl::array<gctl::point3ds> &ops, const gctl::array<double> &rho, gctl::verbose_type_e verbose);
void gctl::gobser(array<double> &out_obs, const array<grav_tri_cone> &ele, const array<point3ds> &ops,
void gctl::gobser(array<double> &out_obs, const array<gravcone> &ele, const array<point3ds> &ops,
const array<double> &rho, gravitational_field_type_e comp_id, verbose_type_e verbose)
{
gobser_tri_cone tricone_obser;
@ -149,9 +149,9 @@ void gctl::gobser(array<double> &out_obs, const array<grav_tri_cone> &ele, const
}
// 前置声明
gctl::point3dc gkernel_tricone_v_sig(const gctl::grav_tri_cone &a_ele, const gctl::point3dc &a_op);
gctl::point3dc gkernel_tricone_v_sig(const gctl::gravcone &a_ele, const gctl::point3dc &a_op);
void gctl::gobser(array<point3dc> &out_obs, const array<grav_tri_cone> &ele, const array<point3dc> &obsp,
void gctl::gobser(array<point3dc> &out_obs, const array<gravcone> &ele, const array<point3dc> &obsp,
const array<double> &rho, verbose_type_e verbose)
{
int i, j;
@ -176,13 +176,13 @@ void gctl::gobser(array<point3dc> &out_obs, const array<grav_tri_cone> &ele, con
// 以下是具体的实现
double gkernel_tricone_pot_sig(const gctl::grav_tri_cone &a_ele, const gctl::point3ds &a_op);
double gkernel_tricone_vr_sig(const gctl::grav_tri_cone &a_ele, const gctl::point3ds &a_op);
double gkernel_tricone_vrp_sig(const gctl::grav_tri_cone &a_ele, const gctl::point3ds &a_op);
double gkernel_tricone_vrt_sig(const gctl::grav_tri_cone &a_ele, const gctl::point3ds &a_op);
double gkernel_tricone_vrr_sig(const gctl::grav_tri_cone &a_ele, const gctl::point3ds &a_op);
double gkernel_tricone_pot_sig(const gctl::gravcone &a_ele, const gctl::point3ds &a_op);
double gkernel_tricone_vr_sig(const gctl::gravcone &a_ele, const gctl::point3ds &a_op);
double gkernel_tricone_vrp_sig(const gctl::gravcone &a_ele, const gctl::point3ds &a_op);
double gkernel_tricone_vrt_sig(const gctl::gravcone &a_ele, const gctl::point3ds &a_op);
double gkernel_tricone_vrr_sig(const gctl::gravcone &a_ele, const gctl::point3ds &a_op);
void gkernel_tricone_pot(gctl::matrix<double> &out_kernel, const gctl::array<gctl::grav_tri_cone> &ele,
void gkernel_tricone_pot(gctl::matrix<double> &out_kernel, const gctl::array<gctl::gravcone> &ele,
const gctl::array<gctl::point3ds> &ops, gctl::verbose_type_e verbose)
{
int i, j;
@ -205,7 +205,7 @@ void gkernel_tricone_pot(gctl::matrix<double> &out_kernel, const gctl::array<gct
return;
}
void gkernel_tricone_vr(gctl::matrix<double> &out_kernel, const gctl::array<gctl::grav_tri_cone> &ele,
void gkernel_tricone_vr(gctl::matrix<double> &out_kernel, const gctl::array<gctl::gravcone> &ele,
const gctl::array<gctl::point3ds> &ops, gctl::verbose_type_e verbose)
{
int i, j;
@ -228,7 +228,7 @@ void gkernel_tricone_vr(gctl::matrix<double> &out_kernel, const gctl::array<gctl
return;
}
void gkernel_tricone_vrp(gctl::matrix<double> &out_kernel, const gctl::array<gctl::grav_tri_cone> &ele,
void gkernel_tricone_vrp(gctl::matrix<double> &out_kernel, const gctl::array<gctl::gravcone> &ele,
const gctl::array<gctl::point3ds> &ops, gctl::verbose_type_e verbose)
{
int i, j;
@ -251,7 +251,7 @@ void gkernel_tricone_vrp(gctl::matrix<double> &out_kernel, const gctl::array<gct
return;
}
void gkernel_tricone_vrt(gctl::matrix<double> &out_kernel, const gctl::array<gctl::grav_tri_cone> &ele,
void gkernel_tricone_vrt(gctl::matrix<double> &out_kernel, const gctl::array<gctl::gravcone> &ele,
const gctl::array<gctl::point3ds> &ops, gctl::verbose_type_e verbose)
{
int i, j;
@ -274,7 +274,7 @@ void gkernel_tricone_vrt(gctl::matrix<double> &out_kernel, const gctl::array<gct
return;
}
void gkernel_tricone_vrr(gctl::matrix<double> &out_kernel, const gctl::array<gctl::grav_tri_cone> &ele,
void gkernel_tricone_vrr(gctl::matrix<double> &out_kernel, const gctl::array<gctl::gravcone> &ele,
const gctl::array<gctl::point3ds> &ops, gctl::verbose_type_e verbose)
{
int i, j;
@ -298,7 +298,7 @@ void gkernel_tricone_vrr(gctl::matrix<double> &out_kernel, const gctl::array<gct
}
void gobser_tricone_pot(gctl::array<double> &out_obs, const gctl::array<gctl::grav_tri_cone> &ele,
void gobser_tricone_pot(gctl::array<double> &out_obs, const gctl::array<gctl::gravcone> &ele,
const gctl::array<gctl::point3ds> &ops, const gctl::array<double> &rho, gctl::verbose_type_e verbose)
{
int i, j;
@ -321,7 +321,7 @@ void gobser_tricone_pot(gctl::array<double> &out_obs, const gctl::array<gctl::gr
return;
}
void gobser_tricone_vr(gctl::array<double> &out_obs, const gctl::array<gctl::grav_tri_cone> &ele,
void gobser_tricone_vr(gctl::array<double> &out_obs, const gctl::array<gctl::gravcone> &ele,
const gctl::array<gctl::point3ds> &ops, const gctl::array<double> &rho, gctl::verbose_type_e verbose)
{
int i, j;
@ -344,7 +344,7 @@ void gobser_tricone_vr(gctl::array<double> &out_obs, const gctl::array<gctl::gra
return;
}
void gobser_tricone_vrp(gctl::array<double> &out_obs, const gctl::array<gctl::grav_tri_cone> &ele,
void gobser_tricone_vrp(gctl::array<double> &out_obs, const gctl::array<gctl::gravcone> &ele,
const gctl::array<gctl::point3ds> &ops, const gctl::array<double> &rho, gctl::verbose_type_e verbose)
{
int i, j;
@ -367,7 +367,7 @@ void gobser_tricone_vrp(gctl::array<double> &out_obs, const gctl::array<gctl::gr
return;
}
void gobser_tricone_vrt(gctl::array<double> &out_obs, const gctl::array<gctl::grav_tri_cone> &ele,
void gobser_tricone_vrt(gctl::array<double> &out_obs, const gctl::array<gctl::gravcone> &ele,
const gctl::array<gctl::point3ds> &ops, const gctl::array<double> &rho, gctl::verbose_type_e verbose)
{
int i, j;
@ -390,7 +390,7 @@ void gobser_tricone_vrt(gctl::array<double> &out_obs, const gctl::array<gctl::gr
return;
}
void gobser_tricone_vrr(gctl::array<double> &out_obs, const gctl::array<gctl::grav_tri_cone> &ele,
void gobser_tricone_vrr(gctl::array<double> &out_obs, const gctl::array<gctl::gravcone> &ele,
const gctl::array<gctl::point3ds> &ops, const gctl::array<double> &rho, gctl::verbose_type_e verbose)
{
int i, j;
@ -416,7 +416,7 @@ void gobser_tricone_vrr(gctl::array<double> &out_obs, const gctl::array<gctl::gr
// 以下是具体的实现
double gkernel_tricone_pot_sig(const gctl::grav_tri_cone &a_ele, const gctl::point3ds &a_op)
double gkernel_tricone_pot_sig(const gctl::gravcone &a_ele, const gctl::point3ds &a_op)
{
int f,e;
double Le,wf;
@ -468,7 +468,7 @@ double gkernel_tricone_pot_sig(const gctl::grav_tri_cone &a_ele, const gctl::poi
return -0.5*GCTL_G0*(face_sum - edge_sum);
}
gctl::point3dc gkernel_tricone_v_sig(const gctl::grav_tri_cone &a_ele, const gctl::point3dc &a_op)
gctl::point3dc gkernel_tricone_v_sig(const gctl::gravcone &a_ele, const gctl::point3dc &a_op)
{
int f,e;
double Le,wf;
@ -511,7 +511,7 @@ gctl::point3dc gkernel_tricone_v_sig(const gctl::grav_tri_cone &a_ele, const gct
return GCTL_G0*(face_sum - edge_sum);
}
double gkernel_tricone_vr_sig(const gctl::grav_tri_cone &a_ele, const gctl::point3ds &a_op)
double gkernel_tricone_vr_sig(const gctl::gravcone &a_ele, const gctl::point3ds &a_op)
{
int f,e;
double Le,wf;
@ -568,7 +568,7 @@ double gkernel_tricone_vr_sig(const gctl::grav_tri_cone &a_ele, const gctl::poin
return -1.0*GCTL_G0*(face_sum - edge_sum);
}
double gkernel_tricone_vrp_sig(const gctl::grav_tri_cone &a_ele, const gctl::point3ds &a_op)
double gkernel_tricone_vrp_sig(const gctl::gravcone &a_ele, const gctl::point3ds &a_op)
{
int f,e;
double Le,wf;
@ -637,7 +637,7 @@ double gkernel_tricone_vrp_sig(const gctl::grav_tri_cone &a_ele, const gctl::poi
return 1.0*GCTL_G0*(face_sum - edge_sum);
}
double gkernel_tricone_vrt_sig(const gctl::grav_tri_cone &a_ele, const gctl::point3ds &a_op)
double gkernel_tricone_vrt_sig(const gctl::gravcone &a_ele, const gctl::point3ds &a_op)
{
int f,e;
double Le,wf;
@ -706,7 +706,7 @@ double gkernel_tricone_vrt_sig(const gctl::grav_tri_cone &a_ele, const gctl::poi
return 1.0*GCTL_G0*(face_sum - edge_sum);
}
double gkernel_tricone_vrr_sig(const gctl::grav_tri_cone &a_ele, const gctl::point3ds &a_op)
double gkernel_tricone_vrr_sig(const gctl::gravcone &a_ele, const gctl::point3ds &a_op)
{
int f,e;
double Le,wf;

View File

@ -39,7 +39,7 @@ namespace gctl
double edglen[12]; ///< edge lengths of six edges
};
typedef type_tricone<gravcone_para> grav_tri_cone; ///< 带gravcone_para属性的三角锥结构体
typedef type_tricone<gravcone_para> gravcone; ///< 带gravcone_para属性的三角锥结构体
/**
* @brief 使 GJI的文章
@ -58,7 +58,7 @@ namespace gctl
point3dc n23_rj[3];
};
typedef type_tricone<gravcone_para_gji> grav_tri_cone_gji; ///< 带gravcone_para_gji属性的三角锥结构体
typedef type_tricone<gravcone_para_gji> gravcone_gji; ///< 带gravcone_para_gji属性的三角锥结构体
/**
* @brief calculate the gravity parameters of given element type.
@ -66,7 +66,7 @@ namespace gctl
* @param in_tri Input elements
* @param out_para The output parameter array
*/
void callink_gravity_para(array<grav_tri_cone> &in_cone, array<gravcone_para> &out_para);
void callink_gravity_para(array<gravcone> &in_cone, array<gravcone_para> &out_para);
/**
* @brief calculate the gravity parameters of given element type.
@ -74,7 +74,7 @@ namespace gctl
* @param in_tri Input elements
* @param out_para The output parameter array
*/
void callink_gravity_para(array<grav_tri_cone_gji> &in_cone, array<gravcone_para_gji> &out_para);
void callink_gravity_para(array<gravcone_gji> &in_cone, array<gravcone_para_gji> &out_para);
/**
* @brief
@ -87,7 +87,7 @@ namespace gctl
* @param[in] comp_id
* @param[in] show_progress
*/
void gkernel(matrix<double> &out_kernel, const array<grav_tri_cone> &ele, const array<point3ds> &obsp,
void gkernel(matrix<double> &out_kernel, const array<gravcone> &ele, const array<point3ds> &obsp,
gravitational_field_type_e comp_id = Vz, verbose_type_e verbose = FullMsg);
/**
@ -102,7 +102,7 @@ namespace gctl
* @param[in] comp_id
* @param[in] verbose
*/
void gobser(array<double> &out_obs, const array<grav_tri_cone> &ele, const array<point3ds> &obsp,
void gobser(array<double> &out_obs, const array<gravcone> &ele, const array<point3ds> &obsp,
const array<double> &rho, gravitational_field_type_e comp_id = Vz, verbose_type_e verbose = FullMsg);
/**
@ -114,7 +114,7 @@ namespace gctl
* @param[in] rho kg/m^3
* @param[in] verbose
*/
void gobser(array<point3dc> &out_obs, const array<grav_tri_cone> &ele, const array<point3dc> &obsp,
void gobser(array<point3dc> &out_obs, const array<gravcone> &ele, const array<point3dc> &obsp,
const array<double> &rho, verbose_type_e verbose = FullMsg);
/**
@ -129,7 +129,7 @@ namespace gctl
* @param[in] comp_id
* @param[in] verbose
*/
void gobser(array<double> &out_obs, const array<grav_tri_cone_gji> &ele, const array<point3ds> &obsp,
void gobser(array<double> &out_obs, const array<gravcone_gji> &ele, const array<point3ds> &obsp,
const array<double> &rho, gravitational_field_type_e comp_id = Vz, verbose_type_e verbose = FullMsg);
/**
@ -144,7 +144,7 @@ namespace gctl
* @param[in] comp_id
* @param[in] verbose
*/
void gobser_model_gradient(array<double> &out_mGrad, const array<std::vector<grav_tri_cone_gji*> > &vert_neighList,
void gobser_model_gradient(array<double> &out_mGrad, const array<std::vector<gravcone_gji*> > &vert_neighList,
const array<double> &obs_diff, const array<point3ds> &obsp, const array<double> &rho,
const array<vertex3dc> *verts_ptr = nullptr, double ang_limit = -1.0,
gravitational_field_type_e comp_id = Vz, verbose_type_e verbose = FullMsg);

View File

@ -31,7 +31,7 @@
using namespace gctl::geometry3d;
/*
void gctl::grav_tri_cone_gji::initialize_tensors()
void gctl::gravcone_gji::initialize_tensors()
{
point3dc v1, v2, v3, nf, ne;
point3dc faceVec, faceVec_rj;
@ -111,7 +111,7 @@ void gctl::grav_tri_cone_gji::initialize_tensors()
}
*/
void gctl::callink_gravity_para(array<grav_tri_cone_gji> &in_cone, array<gravcone_para_gji> &out_para)
void gctl::callink_gravity_para(array<gravcone_gji> &in_cone, array<gravcone_para_gji> &out_para)
{
point3dc v1, v2, v3, ne, nf;
point3dc faceVec, faceVec_rj;
@ -198,34 +198,34 @@ void gctl::callink_gravity_para(array<grav_tri_cone_gji> &in_cone, array<gravcon
}
typedef void (*gobser_mGrad_tricone)(gctl::array<double> &out_mGrad,
const gctl::array<std::vector<gctl::grav_tri_cone_gji*> > &vert_neighList,
const gctl::array<std::vector<gctl::gravcone_gji*> > &vert_neighList,
const gctl::array<double> &obs_diff, const gctl::array<gctl::point3ds> &ops,
const gctl::array<double> &rho, const gctl::array<gctl::vertex3dc> *verts_ptr,
double ang_limit, gctl::verbose_type_e verbose);
void gobser_mGrad_tricone_vr(gctl::array<double> &out_mGrad,
const gctl::array<std::vector<gctl::grav_tri_cone_gji*> > &vert_neighList,
const gctl::array<std::vector<gctl::gravcone_gji*> > &vert_neighList,
const gctl::array<double> &obs_diff, const gctl::array<gctl::point3ds> &ops,
const gctl::array<double> &rho, const gctl::array<gctl::vertex3dc> *verts_ptr,
double ang_limit, gctl::verbose_type_e verbose);
void gobser_mGrad_tricone_vrp(gctl::array<double> &out_mGrad,
const gctl::array<std::vector<gctl::grav_tri_cone_gji*> > &vert_neighList,
const gctl::array<std::vector<gctl::gravcone_gji*> > &vert_neighList,
const gctl::array<double> &obs_diff, const gctl::array<gctl::point3ds> &ops,
const gctl::array<double> &rho, const gctl::array<gctl::vertex3dc> *verts_ptr,
double ang_limit, gctl::verbose_type_e verbose);
void gobser_mGrad_tricone_vrt(gctl::array<double> &out_mGrad,
const gctl::array<std::vector<gctl::grav_tri_cone_gji*> > &vert_neighList,
const gctl::array<std::vector<gctl::gravcone_gji*> > &vert_neighList,
const gctl::array<double> &obs_diff, const gctl::array<gctl::point3ds> &ops,
const gctl::array<double> &rho, const gctl::array<gctl::vertex3dc> *verts_ptr,
double ang_limit, gctl::verbose_type_e verbose);
void gobser_mGrad_tricone_vrr(gctl::array<double> &out_mGrad,
const gctl::array<std::vector<gctl::grav_tri_cone_gji*> > &vert_neighList,
const gctl::array<std::vector<gctl::gravcone_gji*> > &vert_neighList,
const gctl::array<double> &obs_diff, const gctl::array<gctl::point3ds> &ops,
const gctl::array<double> &rho, const gctl::array<gctl::vertex3dc> *verts_ptr,
double ang_limit, gctl::verbose_type_e verbose);
void gctl::gobser_model_gradient(array<double> &out_mGrad,
const array<std::vector<grav_tri_cone_gji*> > &vert_neighList,
const array<std::vector<gravcone_gji*> > &vert_neighList,
const array<double> &obs_diff, const array<point3ds> &ops,
const array<double> &rho, const array<vertex3dc> *verts_ptr,
double ang_limit, gravitational_field_type_e comp_id, verbose_type_e verbose)
@ -252,31 +252,31 @@ void gctl::gobser_model_gradient(array<double> &out_mGrad,
return gobser_mGrad(out_mGrad, vert_neighList, obs_diff, ops, rho, verts_ptr, ang_limit, verbose);
}
double gobser_mGrad_tricone_vr_sig(const std::vector<gctl::grav_tri_cone_gji*> &a_list,
double gobser_mGrad_tricone_vr_sig(const std::vector<gctl::gravcone_gji*> &a_list,
int vert_id, const gctl::point3ds &a_op, const gctl::array<double> &rho);
double gobser_mGrad_tricone_vrp_sig(const std::vector<gctl::grav_tri_cone_gji*> &a_list,
double gobser_mGrad_tricone_vrp_sig(const std::vector<gctl::gravcone_gji*> &a_list,
int vert_id, const gctl::point3ds &a_op, const gctl::array<double> &rho);
double gobser_mGrad_tricone_vrt_sig(const std::vector<gctl::grav_tri_cone_gji*> &a_list,
double gobser_mGrad_tricone_vrt_sig(const std::vector<gctl::gravcone_gji*> &a_list,
int vert_id, const gctl::point3ds &a_op, const gctl::array<double> &rho);
double gobser_mGrad_tricone_vrr_sig(const std::vector<gctl::grav_tri_cone_gji*> &a_list,
double gobser_mGrad_tricone_vrr_sig(const std::vector<gctl::gravcone_gji*> &a_list,
int vert_id, const gctl::point3ds &a_op, const gctl::array<double> &rho);
typedef void (*gobser_tri_cone_gji)(gctl::array<double> &out_obs, const gctl::array<gctl::grav_tri_cone_gji> &ele,
typedef void (*gobser_tri_cone_gji)(gctl::array<double> &out_obs, const gctl::array<gctl::gravcone_gji> &ele,
const gctl::array<gctl::point3ds> &ops, const gctl::array<double> &rho, gctl::verbose_type_e verbose);
void gobser_tricone_gji_pot(gctl::array<double> &out_obs, const gctl::array<gctl::grav_tri_cone_gji> &ele,
void gobser_tricone_gji_pot(gctl::array<double> &out_obs, const gctl::array<gctl::gravcone_gji> &ele,
const gctl::array<gctl::point3ds> &ops, const gctl::array<double> &rho, gctl::verbose_type_e verbose);
void gobser_tricone_gji_vr(gctl::array<double> &out_obs, const gctl::array<gctl::grav_tri_cone_gji> &ele,
void gobser_tricone_gji_vr(gctl::array<double> &out_obs, const gctl::array<gctl::gravcone_gji> &ele,
const gctl::array<gctl::point3ds> &ops, const gctl::array<double> &rho, gctl::verbose_type_e verbose);
void gobser_tricone_gji_vrp(gctl::array<double> &out_obs, const gctl::array<gctl::grav_tri_cone_gji> &ele,
void gobser_tricone_gji_vrp(gctl::array<double> &out_obs, const gctl::array<gctl::gravcone_gji> &ele,
const gctl::array<gctl::point3ds> &ops, const gctl::array<double> &rho, gctl::verbose_type_e verbose);
void gobser_tricone_gji_vrt(gctl::array<double> &out_obs, const gctl::array<gctl::grav_tri_cone_gji> &ele,
void gobser_tricone_gji_vrt(gctl::array<double> &out_obs, const gctl::array<gctl::gravcone_gji> &ele,
const gctl::array<gctl::point3ds> &ops, const gctl::array<double> &rho, gctl::verbose_type_e verbose);
void gobser_tricone_gji_vrr(gctl::array<double> &out_obs, const gctl::array<gctl::grav_tri_cone_gji> &ele,
void gobser_tricone_gji_vrr(gctl::array<double> &out_obs, const gctl::array<gctl::gravcone_gji> &ele,
const gctl::array<gctl::point3ds> &ops, const gctl::array<double> &rho, gctl::verbose_type_e verbose);
void gctl::gobser(array<double> &out_obs, const array<grav_tri_cone_gji> &ele, const array<point3ds> &ops,
void gctl::gobser(array<double> &out_obs, const array<gravcone_gji> &ele, const array<point3ds> &ops,
const array<double> &rho, gravitational_field_type_e comp_id, verbose_type_e verbose)
{
gobser_tri_cone_gji tricone_obser;
@ -303,16 +303,16 @@ void gctl::gobser(array<double> &out_obs, const array<grav_tri_cone_gji> &ele, c
return tricone_obser(out_obs, ele, ops, rho, verbose);
}
double gkernel_tricone_gji_pot_sig(const gctl::grav_tri_cone_gji &a_ele, const gctl::point3ds &a_op);
double gkernel_tricone_gji_vr_sig(const gctl::grav_tri_cone_gji &a_ele, const gctl::point3ds &a_op);
double gkernel_tricone_gji_vrp_sig(const gctl::grav_tri_cone_gji &a_ele, const gctl::point3ds &a_op);
double gkernel_tricone_gji_vrt_sig(const gctl::grav_tri_cone_gji &a_ele, const gctl::point3ds &a_op);
double gkernel_tricone_gji_vrr_sig(const gctl::grav_tri_cone_gji &a_ele, const gctl::point3ds &a_op);
double gkernel_tricone_gji_pot_sig(const gctl::gravcone_gji &a_ele, const gctl::point3ds &a_op);
double gkernel_tricone_gji_vr_sig(const gctl::gravcone_gji &a_ele, const gctl::point3ds &a_op);
double gkernel_tricone_gji_vrp_sig(const gctl::gravcone_gji &a_ele, const gctl::point3ds &a_op);
double gkernel_tricone_gji_vrt_sig(const gctl::gravcone_gji &a_ele, const gctl::point3ds &a_op);
double gkernel_tricone_gji_vrr_sig(const gctl::gravcone_gji &a_ele, const gctl::point3ds &a_op);
// 以下是具体的实现
void gobser_mGrad_tricone_vr(gctl::array<double> &out_mGrad,
const gctl::array<std::vector<gctl::grav_tri_cone_gji*> > &vert_neighList,
const gctl::array<std::vector<gctl::gravcone_gji*> > &vert_neighList,
const gctl::array<double> &obs_diff, const gctl::array<gctl::point3ds> &ops,
const gctl::array<double> &rho, const gctl::array<gctl::vertex3dc> *verts_ptr,
double ang_limit, gctl::verbose_type_e verbose)
@ -357,7 +357,7 @@ void gobser_mGrad_tricone_vr(gctl::array<double> &out_mGrad,
}
void gobser_mGrad_tricone_vrp(gctl::array<double> &out_mGrad,
const gctl::array<std::vector<gctl::grav_tri_cone_gji*> > &vert_neighList,
const gctl::array<std::vector<gctl::gravcone_gji*> > &vert_neighList,
const gctl::array<double> &obs_diff, const gctl::array<gctl::point3ds> &ops,
const gctl::array<double> &rho, const gctl::array<gctl::vertex3dc> *verts_ptr,
double ang_limit, gctl::verbose_type_e verbose)
@ -402,7 +402,7 @@ void gobser_mGrad_tricone_vrp(gctl::array<double> &out_mGrad,
}
void gobser_mGrad_tricone_vrt(gctl::array<double> &out_mGrad,
const gctl::array<std::vector<gctl::grav_tri_cone_gji*> > &vert_neighList,
const gctl::array<std::vector<gctl::gravcone_gji*> > &vert_neighList,
const gctl::array<double> &obs_diff, const gctl::array<gctl::point3ds> &ops,
const gctl::array<double> &rho, const gctl::array<gctl::vertex3dc> *verts_ptr,
double ang_limit, gctl::verbose_type_e verbose)
@ -447,7 +447,7 @@ void gobser_mGrad_tricone_vrt(gctl::array<double> &out_mGrad,
}
void gobser_mGrad_tricone_vrr(gctl::array<double> &out_mGrad,
const gctl::array<std::vector<gctl::grav_tri_cone_gji*> > &vert_neighList,
const gctl::array<std::vector<gctl::gravcone_gji*> > &vert_neighList,
const gctl::array<double> &obs_diff, const gctl::array<gctl::point3ds> &ops,
const gctl::array<double> &rho, const gctl::array<gctl::vertex3dc> *verts_ptr,
double ang_limit, gctl::verbose_type_e verbose)
@ -492,7 +492,7 @@ void gobser_mGrad_tricone_vrr(gctl::array<double> &out_mGrad,
}
void gobser_tricone_gji_pot(gctl::array<double> &out_obs, const gctl::array<gctl::grav_tri_cone_gji> &ele,
void gobser_tricone_gji_pot(gctl::array<double> &out_obs, const gctl::array<gctl::gravcone_gji> &ele,
const gctl::array<gctl::point3ds> &ops, const gctl::array<double> &rho, gctl::verbose_type_e verbose)
{
int i, j;
@ -515,7 +515,7 @@ void gobser_tricone_gji_pot(gctl::array<double> &out_obs, const gctl::array<gctl
return;
}
void gobser_tricone_gji_vr(gctl::array<double> &out_obs, const gctl::array<gctl::grav_tri_cone_gji> &ele,
void gobser_tricone_gji_vr(gctl::array<double> &out_obs, const gctl::array<gctl::gravcone_gji> &ele,
const gctl::array<gctl::point3ds> &ops, const gctl::array<double> &rho, gctl::verbose_type_e verbose)
{
int i, j;
@ -538,7 +538,7 @@ void gobser_tricone_gji_vr(gctl::array<double> &out_obs, const gctl::array<gctl:
return;
}
void gobser_tricone_gji_vrp(gctl::array<double> &out_obs, const gctl::array<gctl::grav_tri_cone_gji> &ele,
void gobser_tricone_gji_vrp(gctl::array<double> &out_obs, const gctl::array<gctl::gravcone_gji> &ele,
const gctl::array<gctl::point3ds> &ops, const gctl::array<double> &rho, gctl::verbose_type_e verbose)
{
int i, j;
@ -561,7 +561,7 @@ void gobser_tricone_gji_vrp(gctl::array<double> &out_obs, const gctl::array<gctl
return;
}
void gobser_tricone_gji_vrt(gctl::array<double> &out_obs, const gctl::array<gctl::grav_tri_cone_gji> &ele,
void gobser_tricone_gji_vrt(gctl::array<double> &out_obs, const gctl::array<gctl::gravcone_gji> &ele,
const gctl::array<gctl::point3ds> &ops, const gctl::array<double> &rho, gctl::verbose_type_e verbose)
{
int i, j;
@ -584,7 +584,7 @@ void gobser_tricone_gji_vrt(gctl::array<double> &out_obs, const gctl::array<gctl
return;
}
void gobser_tricone_gji_vrr(gctl::array<double> &out_obs, const gctl::array<gctl::grav_tri_cone_gji> &ele,
void gobser_tricone_gji_vrr(gctl::array<double> &out_obs, const gctl::array<gctl::gravcone_gji> &ele,
const gctl::array<gctl::point3ds> &ops, const gctl::array<double> &rho, gctl::verbose_type_e verbose)
{
int i, j;
@ -608,7 +608,7 @@ void gobser_tricone_gji_vrr(gctl::array<double> &out_obs, const gctl::array<gctl
}
double gobser_mGrad_tricone_vr_sig(const std::vector<gctl::grav_tri_cone_gji*> &a_list,
double gobser_mGrad_tricone_vr_sig(const std::vector<gctl::gravcone_gji*> &a_list,
int vert_id, const gctl::point3ds &a_op, const gctl::array<double> &rho)
{
int local_id;
@ -624,7 +624,7 @@ double gobser_mGrad_tricone_vr_sig(const std::vector<gctl::grav_tri_cone_gji*> &
gctl::point3dc R;
gctl::point3dc face_temp, edge_temp;
gctl::point3dc re;
gctl::grav_tri_cone_gji* curr_tri;
gctl::gravcone_gji* curr_tri;
gctl::gravcone_para_gji* gp;
R.x = sin((0.5-a_op.lat/180.0)*GCTL_Pi)*cos((2.0+a_op.lon/180.0)*GCTL_Pi);
@ -816,7 +816,7 @@ double gobser_mGrad_tricone_vr_sig(const std::vector<gctl::grav_tri_cone_gji*> &
return point_sum;
}
double gobser_mGrad_tricone_vrp_sig(const std::vector<gctl::grav_tri_cone_gji*> &a_list,
double gobser_mGrad_tricone_vrp_sig(const std::vector<gctl::gravcone_gji*> &a_list,
int vert_id, const gctl::point3ds &a_op, const gctl::array<double> &rho)
{
int local_id;
@ -831,7 +831,7 @@ double gobser_mGrad_tricone_vrp_sig(const std::vector<gctl::grav_tri_cone_gji*>
gctl::point3dc r_ijk[3];
gctl::point3dc R, R_1st;
gctl::point3dc face_temp, edge_temp;
gctl::grav_tri_cone_gji* curr_tri;
gctl::gravcone_gji* curr_tri;
gctl::gravcone_para_gji* gp;
R_1st.x = sin((0.5-a_op.lat/180.0)*GCTL_Pi)*cos((2.0+a_op.lon/180.0)*GCTL_Pi);
@ -1007,7 +1007,7 @@ double gobser_mGrad_tricone_vrp_sig(const std::vector<gctl::grav_tri_cone_gji*>
return point_sum;
}
double gobser_mGrad_tricone_vrt_sig(const std::vector<gctl::grav_tri_cone_gji*> &a_list,
double gobser_mGrad_tricone_vrt_sig(const std::vector<gctl::gravcone_gji*> &a_list,
int vert_id, const gctl::point3ds &a_op, const gctl::array<double> &rho)
{
int local_id;
@ -1022,7 +1022,7 @@ double gobser_mGrad_tricone_vrt_sig(const std::vector<gctl::grav_tri_cone_gji*>
gctl::point3dc r_ijk[3];
gctl::point3dc R, R_1st;
gctl::point3dc face_temp, edge_temp;
gctl::grav_tri_cone_gji* curr_tri;
gctl::gravcone_gji* curr_tri;
gctl::gravcone_para_gji* gp;
R_1st.x = sin((0.5-a_op.lat/180.0)*GCTL_Pi)*cos((2.0+a_op.lon/180.0)*GCTL_Pi);
@ -1198,7 +1198,7 @@ double gobser_mGrad_tricone_vrt_sig(const std::vector<gctl::grav_tri_cone_gji*>
return point_sum;
}
double gobser_mGrad_tricone_vrr_sig(const std::vector<gctl::grav_tri_cone_gji*> &a_list,
double gobser_mGrad_tricone_vrr_sig(const std::vector<gctl::gravcone_gji*> &a_list,
int vert_id, const gctl::point3ds &a_op, const gctl::array<double> &rho)
{
int local_id;
@ -1213,7 +1213,7 @@ double gobser_mGrad_tricone_vrr_sig(const std::vector<gctl::grav_tri_cone_gji*>
gctl::point3dc r_ijk[3];
gctl::point3dc R;
gctl::point3dc face_temp, edge_temp;
gctl::grav_tri_cone_gji* curr_tri;
gctl::gravcone_gji* curr_tri;
gctl::gravcone_para_gji* gp;
R.x = sin((0.5-a_op.lat/180.0)*GCTL_Pi)*cos((2.0+a_op.lon/180.0)*GCTL_Pi);
@ -1388,7 +1388,7 @@ double gobser_mGrad_tricone_vrr_sig(const std::vector<gctl::grav_tri_cone_gji*>
// 以下是具体的实现
double gkernel_tricone_gji_pot_sig(const gctl::grav_tri_cone_gji &a_ele, const gctl::point3ds &a_op)
double gkernel_tricone_gji_pot_sig(const gctl::gravcone_gji &a_ele, const gctl::point3ds &a_op)
{
int f,e;
double Le,wf;
@ -1439,7 +1439,7 @@ double gkernel_tricone_gji_pot_sig(const gctl::grav_tri_cone_gji &a_ele, const g
return -0.5e+8*GCTL_G0*(face_sum - edge_sum);
}
double gkernel_tricone_gji_vr_sig(const gctl::grav_tri_cone_gji &a_ele, const gctl::point3ds &a_op)
double gkernel_tricone_gji_vr_sig(const gctl::gravcone_gji &a_ele, const gctl::point3ds &a_op)
{
int f,e;
double Le,wf;
@ -1496,7 +1496,7 @@ double gkernel_tricone_gji_vr_sig(const gctl::grav_tri_cone_gji &a_ele, const gc
return -1.0e+8*GCTL_G0*(face_sum - edge_sum);
}
double gkernel_tricone_gji_vrp_sig(const gctl::grav_tri_cone_gji &a_ele, const gctl::point3ds &a_op)
double gkernel_tricone_gji_vrp_sig(const gctl::gravcone_gji &a_ele, const gctl::point3ds &a_op)
{
int f,e;
double Le,wf;
@ -1565,7 +1565,7 @@ double gkernel_tricone_gji_vrp_sig(const gctl::grav_tri_cone_gji &a_ele, const g
return 1.0e+8*GCTL_G0*(face_sum - edge_sum);
}
double gkernel_tricone_gji_vrt_sig(const gctl::grav_tri_cone_gji &a_ele, const gctl::point3ds &a_op)
double gkernel_tricone_gji_vrt_sig(const gctl::gravcone_gji &a_ele, const gctl::point3ds &a_op)
{
int f,e;
double Le,wf;
@ -1634,7 +1634,7 @@ double gkernel_tricone_gji_vrt_sig(const gctl::grav_tri_cone_gji &a_ele, const g
return 1.0e+8*GCTL_G0*(face_sum - edge_sum);
}
double gkernel_tricone_gji_vrr_sig(const gctl::grav_tri_cone_gji &a_ele, const gctl::point3ds &a_op)
double gkernel_tricone_gji_vrr_sig(const gctl::gravcone_gji &a_ele, const gctl::point3ds &a_op)
{
int f,e;
double Le,wf;