Beispiel #1
0
void proded_perm(argom* arg) {
    int i,k;
    int app,proded=1;


    if(arg->index >= 1) {

        for(k=arg->index; k >= 0; k--) {
            app=arg->elementi[k];
            arg->elementi[k]=arg->elementi[arg->index];
            arg->elementi[arg->index] = app;
            arg->index--;
            proded_perm(arg);
            arg->index++;
            app=arg->elementi[k];
            arg->elementi[k]=arg->elementi[arg->index];
            arg->elementi[arg->index] = app;

        }
    }
    else if(2*arg->nperm==fat(arg->dim) && arg->dim!=1) pthread_exit(0);
    else {

        arg->nperm++;

        for(i=0;  i < arg->dim; i++)
            proded=proded*arg->mat[i][arg->elementi[i]-1];
        if(classe(arg->elementi , arg->dim)%2!=0) proded=-proded;
        *arg->det=*arg->det+proded;

    }



}
Beispiel #2
0
vpz::BaseModel* ModelFactory::createModelFromClass(Coordinator& coordinator,
                                                 vpz::CoupledModel* parent,
                                                 const std::string& classname,
                                                 const std::string& modelname)
{
    vpz::Class& classe(mClasses.get(classname));
    vpz::BaseModel* mdl(classe.model()->clone());
    vpz::AtomicModelVector atomicmodellist;
    vpz::BaseModel::getAtomicModelList(mdl, atomicmodellist);
    parent->addModel(mdl, modelname);

    for (vpz::AtomicModelVector::iterator it = atomicmodellist.begin();
         it != atomicmodellist.end(); ++it) {
        createModel(coordinator,
                    *it,
                    (*it)->dynamics(),
                    (*it)->conditions(),
                    (*it)->observables());
    }

    return mdl;
}