本文整理汇总了C++中Vertices::AddData方法的典型用法代码示例。如果您正苦于以下问题:C++ Vertices::AddData方法的具体用法?C++ Vertices::AddData怎么用?C++ Vertices::AddData使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Vertices
的用法示例。
在下文中一共展示了Vertices::AddData方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CalcIntegralOfSmallTrgBp
double CalcIntegralOfSmallTrgBp(CoordXYZ xtrg[3], double time, BasePoints &bp, CoordXYZ &control_point)
{
double cell_square;
CoordXYZ cell_normal(3), cell_mass_centre(3);
if (GetCellParams(xtrg, cell_square, cell_normal,cell_mass_centre)){
return 0;
}
CoordXYZ R(3);
for (int i = 0; i < 3; ++i)
R[i] = control_point[i] - cell_mass_centre[i];
double norma_R = GetVectorNorma1(R);
if (!norma_R){
cout << " Error 1 : norma_r=0" << endl;
exit(1);
}
double SUM = 0;
double t = ModifyTimeByPosition(R, time);
CoordXYZ f(kbase);
for(int i=0;i<kbase;i++)
f[i]=0;
// double rez[kbase];
// найдём отклик от каждой вершины
// этот фрагмент следует вычислять для каждого узла пирамиды
// и для каждой функции отдельно
double rho=0, rho_der=0, u_der[3];
for(int nonZeroNode=0; nonZeroNode<4; nonZeroNode++) // по каждой вершине
{
f[nonZeroNode]=1;
double rez=bp.GetVal(cell_mass_centre,ip,f); // величина отклика от вершины, без учета функциональной зависимости
f[nonZeroNode]=0;
for(int nonZeroFunc=0; nonZeroFunc<5; nonZeroFunc++)
{
/*
Эти функции равны 0 или 1 в зависимости от nonZeroFunc
CoordXYZ u_der = bp.GetUDerivative(cell_mass_centre, t);
double rho_der = bp.GetRhoDerivative(cell_mass_centre, t);
double rho = bp.GetRho(cell_mass_centre, t);
*/
switch(nonZeroFunc)
{
case 0: rho=1; rho_der=0; u_der[0]=0; u_der[1]=0; u_der[2]=0; break;
case 1: rho=0; rho_der=1; u_der[0]=0; u_der[1]=0; u_der[2]=0; break;
case 2: rho=0; rho_der=0; u_der[0]=1; u_der[1]=0; u_der[2]=0; break;
case 3: rho=0; rho_der=0; u_der[0]=0; u_der[1]=1; u_der[2]=0; break;
case 4: rho=0; rho_der=0; u_der[0]=0; u_der[1]=0; u_der[2]=1; break;
}
SUM=0.;
for (int i = 0; i < 3; ++i)
{
SUM +=
1./(4*PI)*
(
u_der[i]/norma_R
+
R[i]/kva(norma_R)*(rho_der + rho/norma_R)
)
*cell_normal[i]
*cell_square;
}
int err=vrt.AddData(ip[nonZeroNode],nonZeroFunc,SUM*rez,t);
if(err)
exit(0);
}
}
// Расчет инвариантов
S_Surf+=cell_square;
for (int i = 0; i < 3; ++i)
IntN[i]+=(cell_square*cell_normal[i]);
return SUM;
}