#include <stdio.h>
#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(); */
}
syntax highlighted by Code2HTML, v. 0.9.1