00001 #include <stdio.h>
00002 #include <math.h>
00003
00004 #include "machine.h"
00005 #include "../../elementaries_functions/includes/elementaries_functions.h"
00006 #include "scicos.h"
00007
00008
00009
00010
00011
00012
00013 #define Abs(x) ( (x) > 0) ? (x) : -(x)
00014 #define Min(x,y) (((x)<(y))?(x):(y))
00015 #define Max(x,y) (((x)>(y))?(x):(y))
00016
00017 typedef void (scicos0_block) __PARAMS((ARGS_scicos0));
00018 extern scicos0_block F2C(absblk), F2C(andlog), F2C(bidon), F2C(gain);
00019 extern scicos0_block F2C(cdummy), F2C(dband), F2C(cosblk);
00020
00021
00022
00023
00024
00025
00026
00027 void C2F(absblk)(flag, nevprt, t, xd, x, nx, z, nz, tvec,
00028 ntvec, rpar, nrpar, ipar, nipar, u, nu, y, ny)
00029 integer *flag, *nevprt,*nx,*nz,*nrpar, *ipar, *nipar,*ntvec,*nu,*ny;
00030 double *t, *xd, *x, *z, *tvec, *rpar, *u, *y;
00031 {
00032 int i;
00033 for (i = 0 ; i < *nu ; ++i ) y[i] = Abs(u[i]);
00034 }
00035
00036
00037
00038
00039
00040
00041
00042
00043 void C2F(andlog)(flag, nevprt, t, xd, x, nx, z, nz, tvec,
00044 ntvec, rpar, nrpar, ipar, nipar, u, nu, y, ny)
00045 integer *flag, *nevprt,*nx,*nz,*nrpar, *ipar, *nipar,*ntvec,*nu,*ny;
00046 double *t, *xd, *x, *z, *tvec, *rpar, *u, *y;
00047 {
00048 if ( *flag == 1) y[0] = ( *nevprt != 3 ) ? -1.00 : 1.00;
00049 }
00050
00051
00052
00053
00054
00055
00056
00057 void C2F(bidon)(flag, nevprt, t, xd, x, nx, z, nz, tvec,
00058 ntvec, rpar, nrpar, ipar, nipar, u, nu, y, ny)
00059 integer *flag, *nevprt,*nx,*nz,*nrpar, *ipar, *nipar,*ntvec,*nu,*ny;
00060 double *t, *xd, *x, *z, *tvec, *rpar, *u, *y;
00061 {
00062 }
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072 void C2F(gain)(flag, nevprt, t, xd, x, nx, z, nz, tvec,
00073 ntvec, rpar, nrpar, ipar, nipar, u, nu, y, ny)
00074 integer *flag, *nevprt,*nx,*nz,*nrpar, *ipar, *nipar,*ntvec,*nu,*ny;
00075 double *t, *xd, *x, *z, *tvec, *rpar, *u, *y;
00076 {
00077 integer un=1;
00078 C2F(dmmul)(rpar,ny,u,nu,y,ny,ny,nu,&un);
00079 }
00080
00081
00082
00083
00084
00085
00086 void C2F(cdummy)(flag, nevprt, t, xd, x, nx, z, nz, tvec,
00087 ntvec, rpar, nrpar, ipar, nipar, u, nu, y, ny)
00088 integer *flag, *nevprt,*nx,*nz,*nrpar, *ipar, *nipar,*ntvec,*nu,*ny;
00089 double *t, *xd, *x, *z, *tvec, *rpar, *u, *y;
00090 {
00091 if ( *flag == 0 ) xd[0]=sin(*t);
00092 }
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102 void C2F(dband)(flag, nevprt, t, xd, x, nx, z, nz, tvec,
00103 ntvec, rpar, nrpar, ipar, nipar, u, nu, y, ny)
00104 integer *flag, *nevprt,*nx,*nz,*nrpar, *ipar, *nipar,*ntvec,*nu,*ny;
00105 double *t, *xd, *x, *z, *tvec, *rpar, *u, *y;
00106 {
00107 int i;
00108
00109 for ( i=0 ; i < *nu ; i++ )
00110 {
00111 if ( u[i] < 0 )
00112 y[i] = Min(0.00,u[i]+rpar[i]/2.00);
00113 else
00114 y[i] = Max(0.00,u[i]-rpar[i]/2.00);
00115 }
00116 }
00117
00118
00119
00120
00121
00122
00123
00124 void C2F(cosblk)(flag, nevprt, t, xd, x, nx, z, nz, tvec,
00125 ntvec, rpar, nrpar, ipar, nipar, u, nu, y, ny)
00126 integer *flag, *nevprt,*nx,*nz,*nrpar, *ipar, *nipar,*ntvec,*nu,*ny;
00127 double *t, *xd, *x, *z, *tvec, *rpar, *u, *y;
00128 {
00129
00130 int i;
00131 for ( i=0; i < *nu ; i++) y[i]= cos(u[i]);
00132 }