00001
00037 #ifndef _DYN_H
00038 #define _DYN_H
00039
00040 #include <mc/mc_base.h>
00041
00042 #include <mc/aprx.h>
00043 #include <mc/nam.h>
00044
00051 typedef enum DYNtype {
00052 SIMP_TYPE,
00053 TDEP_TYPE,
00054 NLIN_TYPE
00055 } DYNtype;
00056
00062 struct sSVio {
00063
00066 char rwkey[1];
00073 char iodev[VMAX_BUFSIZE];
00077 char iofmt[VMAX_BUFSIZE];
00079 char iohost[VMAX_BUFSIZE];
00081 char iofile[VMAX_BUFSIZE];
00082
00084 int colKeyGV;
00086 int chartKeyGV;
00088 int fkeyGV;
00090 double gluValGV;
00091
00098 int printtype;
00099
00101 Vio * sock;
00102
00104 char *buf;
00106 int bufsize;
00107
00108 };
00109
00115 typedef struct sSVio SVio;
00116
00122 typedef struct DynPDE {
00123
00125 double time;
00127 int ekey;
00130 void (*userStepHook)(PDE *thee, AM *am, int ekey);
00134 int haveUserStepHook;
00135
00136 } DynPDE;
00137
00138
00139
00140
00141
00142
00143
00144 #if !defined(VINLINE_DYN)
00145 #else
00146 #endif
00147
00148
00149
00150
00151
00152
00153
00173 void AM_tSolve(AM *thee, int meth, double dt, double t0, int numstep,
00174 int pfreq, int efreq, int ekeytotal, DYNtype pdetype,
00175 double ltol, int lmax, SVio *vsock);
00176
00185 void PDE_initDyn(PDE *thee);
00186
00195 void PDE_killDyn(PDE *thee);
00196
00205 int PDE_checkDyn(PDE *thee);
00206
00216 void PDE_setTime(PDE *thee, double mytime);
00217
00226 double PDE_getTime(PDE *thee);
00227
00237 void PDE_setUserStepHook(PDE *thee,
00238 void (*UserStepHook)(PDE *thee, AM *am, int ekey));
00239
00248 void PDE_nullUserStepHook(PDE *thee);
00249
00260 void PDE_userStepHook(PDE *thee, AM *am, int ekey);
00261
00271 void PDE_setEnergyKey(PDE *thee, int ekey);
00272
00281 int PDE_getEnergyKey(PDE *thee);
00282
00283
00284
00285
00286
00287
00288
00296 SVio* SVio_ctor(void);
00297
00306 void SVio_dtor(SVio **vsock);
00307
00317 SVio* Vsh_SVioSetup(Vsh *thee, char *key);
00318
00328 void Vsh_SVioCleanup(Vsh *thee, SVio **vsock);
00329
00352 void SVio_initStructure(SVio *thee, const char *rwkey,
00353 const char *iodev, const char *iofmt, const char *iohost,
00354 const char *iofile, char *buf, int bufsize, int ptype);
00355
00364 int SVio_bufSize(SVio *thee);
00365
00374 char* SVio_bufGive(SVio *thee);
00375
00386 void SVio_bufTake(SVio *thee, char *buf, int bufsize);
00387
00399 void Aprx_writeSVio(Aprx *thee, int plabel, Bvec *w0, SVio *vsock);
00400
00401 #endif
00402
00403