当前位置: 首页>>代码示例>>C++>>正文


C++ Vertices::AddData方法代码示例

本文整理汇总了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;
}
开发者ID:LK4D4,项目名称:IPM,代码行数:89,代码来源:integral.cpp


注:本文中的Vertices::AddData方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。