#include #include "libsx.h" #include "globals.h" #include "crosshair.h" #include "kraftwerk.h" #include "graph.h" Widget meshsizeWindow; Widget cancelB, doneB; Widget textEntry, textLabel, infotext; void meshError(int ierr) { /* * TYPE IERR ERROR * * FILE HANDLING 1 CANNOT OPEN INPUT FILE * -"- 2 CANNOT OPEN OUTPUT FILE * -"- 3 CANNOT CLOSE INPUT FILE * -"- 4 ATTEMPT TO OPEN TOO MANY FILES * -"- 5 FAILED TO READ FROM INPUT FILE * -"- 6 CANNOT OPEN AUXILIARY INPUT FILE * -"- 7 FAILED TO READ FROM POINT SCRATCH FILE * -"- 8 FAILED TO READ FROM SEGMENT SCRATCH FILE * -"- 9 FAILED TO READ FROM BOUNDARY SCRATCH FILE * * MEMORY HANDLING 11 PRIMARY MEMORY TOO SMALL * -"- 12 MAXIMUM NUMBER OF ELEMENTS EXCEEDED * * COMMAND HANDLING 101 UNKNOWN COMMAND * -"- 102 TOO FEW BOUNDARIES * -"- 103 NON-POSITIVE POINT NUMBER * -"- 104 TOO FEW POINTS TO DEFINE SEGMENT * -"- 105 TOO FEW SEGMENTS TO DEFINE BOUNDARY * -"- 106 NO POINTS HAVE BEEN DEFINED * -"- 107 TOO FEW SEGMENTS HAVE BEEN DEFINED * -"- 108 NO BOUNDARY HAS BEEN DEFINED * -"- 109 DUPLICATE SEGMENT NAME * -"- 110 DUPLICATE BOUNDARY NAME * -"- 111 A BOUNDARY HAS NOT BEEN DEFINED * -"- 112 A SEGMENT HAS NOT BEEN DEFINED * -"- 113 SEGMENTS DO NOT FORM AN UNBROKEN CHAIN * -"- 114 NO MEHSIZE HAS BEEN GIVEN * -"- 115 NEGATIVE MEHSIZE HAS BEEN GIVEN * " * * MESH GENERATION 9000 MESH TANGLED, BUG!! */ if(ierr > 0 & ierr < 10) errorHandler("The temporary file created by femlab could not be read"); else if(ierr == 11) errorHandler("The memory is exhausted"); else if(ierr == 12) errorHandler("The maximum number of elements is exceeded"); else if(ierr == 9000) errorHandler("You have encountered a bug in the mesh generator"); else if(ierr == 114) errorHandler("You have not specified a meshsize"); else{ errorHandler("You have encountered a bug in the mesh generator"); } } void meshMouseMotion(Widget w, int x, int y, void *data) { crossHair(x, y); } void meshMouseDown(Widget w, int button, int x, int y, void *data) { myDrawText(GetStringEntry(textEntry), x+4, y-8); sscanf(GetStringEntry(textEntry),"%f",&h[ih]); myDrawFilledBox(x-2,y-2,4,4); hx[ih] = x; hy[ih] = y; ih++; } void cancel( Widget w, void *data) { deleteCrossHair(); SetMouseMotionCB(drawWindow, NULL); SetButtonDownCB(drawWindow, NULL); CloseWindow(); } void done( Widget w, void *data) { int hh = 0, ww = 0; deleteCrossHair(); SetMouseMotionCB(drawWindow, NULL); SetButtonDownCB(drawWindow, NULL); CloseWindow(); state = HAVE_MESHSIZE; redisplay(w, hh, ww, data); } void meshsize() { Widget form = NULL; int hh = 0, ww = 0, *data = NULL; setAction(NORMAL); state = HAVE_BOUNDARY; redisplay(form, hh, ww, data); ih = 0; meshsizeWindow = MakeWindow("Meshsize", SAME_DISPLAY, NONEXCLUSIVE_WINDOW); form = MakeForm(TOP_LEVEL_FORM, NO_CARE, NULL, NO_CARE, NULL); textLabel = MakeLabel("Input meshsize:"); infotext = MakeLabel("Click on at least one point in the domain"); textEntry = MakeStringEntry("0.1", 100, NULL, NULL); doneB = MakeButton("Done",done, NULL); SetWidgetPos(textEntry, PLACE_RIGHT, textLabel, NO_CARE, NULL); SetWidgetPos(infotext, PLACE_UNDER, textLabel, NO_CARE, NULL); SetWidgetPos(doneB, PLACE_UNDER, infotext,NO_CARE, NULL); ShowDisplay(); SetMouseMotionCB(drawWindow, meshMouseMotion); SetButtonDownCB(drawWindow, meshMouseDown); /* Beep(); */ }