コード例 #1
0
ファイル: threelinkarm.cpp プロジェクト: xchoo/spaun2.0
/*
	Parametrized simulation driver
*/
EXP long M_DECL ParamDriverC(double t0, double dt, long npts, double *ic, double *p, double *out, char *errbuf, long internal)
{
    double u[NINP],y[NOUT],w[1+2*NEQ+NPAR+NDFA+NEVT];
    long i,j;
    SolverStruct S;

    /* Setup */
    for(i=0; i<npts*(NOUT+1); i++) out[i]=*dsn_undef;
    S.w=w;
    if(internal==0) S.err=0;
    else S.err=-1;
    S.buf=errbuf;
    SolverSetup(t0,ic,u,p,y,dt,&S);
    /* Output */
    out[0]=t0;
    for(j=0; j<NOUT; j++) out[j+1]=y[j];
    /* Integration loop */
    for(i=1; i<npts; i++) {
        /* Take a step with states */
        EulerStep(u,&S);
        if( S.err>0 ) break;
        /* Output */
        SolverOutputs(y,&S);
        out[i*(NOUT+1)]=S.w[0];
        for(j=0; j<NOUT; j++) out[i*(NOUT+1)+j+1]=y[j];
    }

    return(i);
}
コード例 #2
0
void Sim::reset(double* out, double* ic)
{
    SolverSetup(t0, ic, u0, params, y, dt, &S);
 
    /* Output */
    out[0] = t0;
        for(int j = 0; j < NOUT; j++)
            out[j + 1] = y[j];
}