Ejemplo n.º 1
0
void initComponentGeneral()
{
    static bool first = true;
    if (first)
    {
        first = false;
    }

    initValidation();
    initExporter();
    initEngine();
    initGraphComponent();
    initTopologyMapping();
    initBoundaryCondition();
    initUserInteraction();
    initConstraint();
    initHaptics();
    initDenseSolver();
#ifdef SOFA_HAVE_CSPARSE
    initSparseSolver();
#endif
    initPreconditioner();
    initOpenGLVisual();

}
Ejemplo n.º 2
0
bool reroot_rootedtree(double& br,int r,int s10,int s20,Pr* pr,Node** nodes,Node** nodes_new){
    cloneInternalNodes(pr,nodes,nodes_new,0);
    if (r==s10 || r==s20){
        br = nodes[s10]->B+nodes[s20]->B;
        nodes_new[s10]->B=br;
        nodes_new[s20]->B=br;
        computeVarianceEstimateRoot(pr,nodes_new,br);
        return initConstraint(pr,nodes_new);
    }
    else {
        nodes_new[0]->L="";
        nodes_new[0]->P=-1;
        nodes_new[r]->P=0;
        nodes_new[nodes[r]->P]->P=0;
        nodes_new[0]->suc.clear();
        nodes_new[0]->suc.push_back(r);
        nodes_new[0]->suc.push_back(nodes[r]->P);
        int ii=r;
        int i=nodes[r]->P;
        int j=nodes[i]->P;
        while (j!=0){
            nodes_new[i]->suc.clear();
            nodes_new[i]->suc.push_back(j);
            for (vector<int>::iterator iter=nodes[i]->suc.begin(); iter!=nodes[i]->suc.end(); iter++) {
                if (*iter!=ii) {
                    nodes_new[i]->suc.push_back(*iter);
                }
            }
            nodes_new[j]->P=i;
            nodes_new[j]->B=nodes[i]->B;
            ii=i;
            i=j;
            j=nodes[i]->P;
        }
        int k=s10;
        if (k==i) k=s20;
        nodes_new[k]->P=i;
        nodes_new[i]->suc.clear();
        nodes_new[i]->suc.push_back(k);
        for (vector<int>::iterator iter=nodes[i]->suc.begin(); iter!=nodes[i]->suc.end(); iter++) {
            if (*iter!=ii) {
                nodes_new[i]->suc.push_back(*iter);
            }
        }
        br=nodes[r]->B;
        nodes_new[k]->B=nodes[i]->B+nodes[k]->B;
        nodes_new[r]->B=br;
        nodes_new[nodes[r]->P]->B=br;
        computeVarianceEstimateRoot(pr,nodes_new,br);
        return initConstraintReRooted(pr, nodes_new,k,i);
    }
}