sciblk2i.c File Reference

#include "machine.h"

Include dependency graph for sciblk2i.c:

Go to the source code of this file.

Functions

integer C2F() scierr ()
void C2F() itosci ()
void C2F() dtosci ()
void C2F() vvtosci ()
void C2F() scitovv ()
void C2F() skipvars ()
void C2F() scitod ()
void C2F() list2vars ()
void C2F() ltopadj ()
void C2F() scifunc ()
int C2F() mklist ()
void sciblk2i (integer *flag, integer *nevprt,*t, residual, xd, x, integer *nx, z, integer *nz, tvec, integer *ntvec, rpar, integer *nrpar, ipar, integer *nipar, inptr, insz, integer *nin, outptr, outsz, integer *nout)


Function Documentation

void C2F() dtosci (  ) 

void C2F() itosci (  ) 

void C2F() list2vars (  ) 

void C2F() ltopadj (  ) 

int C2F() mklist (  ) 

void sciblk2i ( integer flag,
integer nevprt,
t,
residual  ,
xd  ,
x  ,
integer nx,
z  ,
integer nz,
tvec  ,
integer ntvec,
rpar  ,
integer nrpar,
ipar  ,
integer nipar,
inptr  ,
insz  ,
integer nin,
outptr  ,
outsz  ,
integer nout 
)

Definition at line 18 of file sciblk2i.c.

References C2F, dtosci(), err, itosci(), list2vars(), ltopadj(), mklist(), mlhs, mrhs, nu, scierr(), scifunc(), scitod(), scitovv(), skip, skipvars(), vvtosci(), and y.

00025 {
00026     int k;
00027     double *y;
00028     double *u;
00029 /*    int nev,ic;*/
00030     integer one=1,skip;
00031     integer nu,ny;
00032     integer mlhs=6,mrhs=9;
00033     integer ltop;
00034     /*
00035  
00036     [y,  x,  z,  tvec,xd]=func(flag,nevprt,t,xd,x,z,rpar,ipar,u)
00037     [y,  x,  z,  tvec,res]=func(flag,nevprt,t,xd,x,z,rpar,ipar,u)
00038     */
00039     C2F(itosci)(flag,&one,&one);
00040     if (C2F(scierr)()!=0) goto err;
00041     C2F(itosci)(nevprt,&one,&one);
00042     if (C2F(scierr)()!=0) goto err;  
00043     C2F(dtosci)(t,&one,&one);
00044     if (C2F(scierr)()!=0) goto err;  
00045     C2F(dtosci)(xd,nx,&one);
00046     if (C2F(scierr)()!=0) goto err;  
00047     C2F(dtosci)(x,nx,&one);
00048     if (C2F(scierr)()!=0) goto err;  
00049     C2F(vvtosci)(z,nz);
00050     if (C2F(scierr)()!=0) goto err; 
00051     C2F(vvtosci)(rpar,nrpar); 
00052     if (C2F(scierr)()!=0) goto err;  
00053     C2F(itosci)(ipar,nipar,&one);
00054     if (C2F(scierr)()!=0) goto err;
00055     for (k=0;k<*nin;k++) {
00056         u=(double *)inptr[k];
00057         nu=insz[k];
00058         C2F(dtosci)(u,&nu,&one);
00059         if (C2F(scierr)()!=0) goto err;
00060     }
00061     C2F(mklist)(nin);
00062 
00063 
00064     C2F(scifunc)(&mlhs,&mrhs);
00065     if (C2F(scierr)()!=0) goto err;
00066     
00067     switch (*flag) {
00068     case 1 :
00069         /* y  computation */
00070       {
00071         skip=4;
00072         C2F(skipvars)(&skip);
00073       }
00074       if (*nout==0) {
00075         skip=1;
00076         C2F(skipvars)(&skip);
00077       }
00078       else {
00079         C2F(list2vars)(nout,&ltop);
00080         if (C2F(scierr)()!=0) goto err; 
00081         for (k=*nout-1;k>=0;k--) {
00082           y=(double *)outptr[k];
00083           ny=outsz[k];
00084           C2F(scitod)(y,&ny,&one);
00085           if (C2F(scierr)()!=0) goto err;
00086         }
00087         /* list2vars has changed the Lstk(top+1) value. 
00088            reset the correct value */
00089         C2F(ltopadj)(&ltop);  
00090       }
00091       break;
00092     case 0 :
00093         /*  residual  computation */
00094       {
00095         C2F(scitod)(residual,nx,&one);
00096         skip=4;
00097         C2F(skipvars)(&skip);
00098         break;
00099       }
00100     case 2 : 
00101       /* continuous and discrete state jump */
00102       {
00103         C2F(scitod)(xd,nx,&one);
00104         skip=1;
00105         C2F(skipvars)(&skip);
00106         C2F(scitovv)(z,nz);
00107         C2F(scitod)(x,nx,&one);
00108         skip=1;
00109         C2F(skipvars)(&skip);
00110       }
00111       break;
00112     case 3 :
00113       /* output event */
00114         skip=1;
00115         C2F(skipvars)(&skip);
00116         C2F(scitod)(tvec,ntvec,&one);
00117         skip=3;
00118         C2F(skipvars)(&skip);
00119         break;
00120     case 4 :
00121         C2F(scitod)(xd,nx,&one);
00122         skip=1;C2F(skipvars)(&skip);
00123         C2F(scitovv)(z,nz);
00124         C2F(scitod)(x,nx,&one);
00125         skip=1;C2F(skipvars)(&skip);
00126         break;
00127     case 5 :
00128         C2F(scitod)(xd,nx,&one);
00129         skip=1;C2F(skipvars)(&skip);
00130         C2F(scitovv)(z,nz);
00131         C2F(scitod)(x,nx,&one);
00132         skip=1;
00133         C2F(skipvars)(&skip);
00134         break;
00135     case 6 :
00136         C2F(scitod)(xd,nx,&one);
00137         skip=1;
00138         C2F(skipvars)(&skip);
00139         C2F(scitovv)(z,nz);
00140         C2F(scitod)(x,nx,&one);
00141         if (*nout==0) {
00142             skip=1;
00143             C2F(skipvars)(&skip);
00144         }
00145         else {
00146             C2F(list2vars)(nout,&ltop); 
00147             if (C2F(scierr)()!=0) goto err;
00148             for (k=*nout-1;k>=0;k--) {
00149                 y=(double *)outptr[k];
00150                 ny=outsz[k];
00151                 C2F(scitod)(y,&ny,&one);
00152                 if (C2F(scierr)()!=0) goto err;
00153             }
00154             /* list2vars has changed the Lstk(top+1) value. 
00155                reset the correct value */
00156            C2F(ltopadj)(&ltop);  
00157         }
00158         break;
00159     }
00160     return;
00161  err: 
00162     *flag=-1;
00163 }

Here is the call graph for this function:

integer C2F() scierr (  ) 

void C2F() scifunc (  ) 

void C2F() scitod (  ) 

void C2F() scitovv (  ) 

void C2F() skipvars (  ) 

void C2F() vvtosci (  ) 


Generated on Sun Mar 4 16:12:14 2007 for Scilab [trunk] by  doxygen 1.5.1