#define X_SIZE 800 /* default draw area size, change as desired */ #define Y_SIZE 685 #define INFO_X_SIZE 173 #define LOGO_SIZE 200 #define INFO_Y_SIZE 60 #define NITEM 20 /* Max number of menu items in a menu */ #define NMAX 100 /* Max number of points on a boundary */ #define NB 20 /* Max number of boundaries */ #define NH 500 /* Max number of points where eqdata can be spec. */ #define MAXLEVELS 10 /* Max number of refinment levels */ #define NOBF 3 /* Number of basefcn's in an element */ #define WORKSIZE 3000000 /* Default size for the fortran work array */ #define CLICK_TOL 10 /* How close one must click on a point (pixels) */ /* */ /* Some magic numbers */ /* */ #define OUTER 0 #define INNER 1 #define INTERNAL 2 #define DIRICHLET 0 #define NEUMANN 1 #define NORMAL 0 #define DRAWING 1 #define DELETING 2 #define MOVING 3 #define PICKING 4 #define WAITING 5 #define ZOOMING 6 #define HAVE_NOTHING 0 #define HAVE_SCALE 2 #define HAVE_BOUNDARY 4 #define HAVE_MESHSIZE 8 #define HAVE_MESH 12 #define HAVE_EQDATA 16 #define HAVE_BCDATA 18 #define HAVE_SOLVDATA 20 #define HAVE_SOLUTION 24 #define HAVE_MORE 124 #define TO_PRINTER 0 #define TO_FILE 1 #include "multireq.h" void quit(Widget w, void *data); void file(Widget w, void *data); void save(Widget w, void *data); void cut(Widget w, void *data); void sselect(Widget w, void *data); void scroll(Widget w, float x, void *data); void getDrawingScale(); int state; int action; int substate; int have_colors; int zoomActive; extern int solverLevels; extern float solverTol; extern char solverNorm[]; Widget solButt[MAXLEVELS]; Widget label; int moveThis, onThisB, boundaryType; struct { unsigned int plotTable[10] ; int zoom; } flags; typedef struct { Widget name; Widget item[NITEM]; int needs[NITEM]; int noItems; } menu; typedef struct { int el; int x; int y; float f[4]; } pointData; typedef struct { char text[80]; } name; typedef struct { int what; char *label; int nvalues; int n; pointData value[NH]; int type; name expr[10]; } EqData; typedef struct { char *sectionName; char *labelName[4]; Widget label[4]; Widget input[4]; Widget header; Widget butt; } EqDataUI; typedef struct { int n; char type[NB*NMAX]; int segment[NB*NMAX]; float value[NB*NMAX]; int id[NB*NMAX]; } BoundaryCondition; /* Equation data definition */ BoundaryCondition cdbc[5]; extern int numberOfEqData; extern int nvar; extern EqData cddata[]; extern EqDataUI cdUI[]; int hx[NH]; int hy[NH]; int ih ; float h[NH]; /* The menus */ menu fileMenu, geomMenu, meshMenu, solverMenu, plotMenu; /* The buttons */ Widget zoomButton, unZoomButton; menu levelMenu; /* The windows */ Widget drawWindow, infoWindow, logoWindow; Widget kth; Widget sbar, sbar1, sbar2; float psred, psgreen, psblue; int white1, white2; int curcol ; int GREY; int color_ps;