/*********************************************************************** * * ***** *** *** * * * * * * * * *** *** * * * * * * * ***** *** *** * * A FREE Finite Elements Analysis Program in ANSI C for the UNIX OS. * * Composed and edited and copyright by * Professor Dr.-Ing. Frank Rieg, University of Bayreuth, Germany * * eMail: * frank.rieg@uni-bayreuth.de * dr.frank.rieg@t-online.de * * V10.0 December 12, 2001 * * Z88 should compile and run under any UNIX OS and Motif 2.0. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. ***********************************************************************/ /*********************************************************************** * function vgpp88 plottet die spannungen an den gausspunkten * 23.3.2002 Rieg, fuer UNIX ***********************************************************************/ /***************************************************************************** * UNIX *****************************************************************************/ #ifdef FR_UNIX #include #include /* itoa */ #include /* strlen,strcpy */ #include #endif /**************************************************************************** * Start vgpp88 ****************************************************************************/ int vgpp88(Widget hcallw) { extern GC hgc[]; extern FR_DOUBLEAY siggp; extern FR_DOUBLE spamax,spamin,spainc; extern FR_INT4 LANG; extern FR_INT4AY kgpx; extern FR_INT4AY kgpy; extern FR_INT4 isflag,igpanz; extern int IW_DRAWAR,IH_DRAWAR; GC gc; size_t laenge; int ispa[12]; int jspa,ix,iy,incx,i; char cispa[10]; static char *cblock[]= {"000","***","***","***","***","***","***","***","***","***","***" }; char cvon[5],cbis[5],cgeh[30]; /*********************************************************************** * incremente festlegen ***********************************************************************/ incx= IW_DRAWAR/11; /*********************************************************************** * strings festlegen ***********************************************************************/ if(LANG == 1) { strcpy(cvon,"VON"); strcpy(cbis,"BIS"); strcpy(cgeh,"VERGLEICHSSPANNUNGEN NACH GEH"); } if(LANG == 2) { strcpy(cvon,"FROM"); strcpy(cbis,"TO"); strcpy(cgeh,"VON MISES STRESSES"); } /********************************************************************** * aufteilen **********************************************************************/ ispa[1]= (int)(spamin); ispa[2]= (int)(spamin+ spainc); ispa[3]= (int)(spamin+ 2.*spainc); ispa[4]= (int)(spamin+ 3.*spainc); ispa[5]= (int)(spamin+ 4.*spainc); ispa[6]= (int)(spamin+ 5.*spainc); ispa[7]= (int)(spamin+ 6.*spainc); ispa[8]= (int)(spamin+ 7.*spainc); ispa[9]= (int)(spamin+ 8.*spainc); ispa[10]=(int)(spamin+ 9.*spainc); ispa[11]=(int)(spamax); /********************************************************************** * Zeichen setzen **********************************************************************/ for( i= 1; i<= igpanz;i++) { jspa= (int)siggp[i]; if (jspa >= ispa[1] && jspa < ispa[2]) gc= hgc[4]; else if(jspa >= ispa[2] && jspa < ispa[3]) gc= hgc[5]; else if(jspa >= ispa[3] && jspa < ispa[4]) gc= hgc[6]; else if(jspa >= ispa[4] && jspa < ispa[5]) gc= hgc[7]; else if(jspa >= ispa[5] && jspa < ispa[6]) gc= hgc[8]; else if(jspa >= ispa[6] && jspa < ispa[7]) gc= hgc[9]; else if(jspa >= ispa[7] && jspa < ispa[8]) gc= hgc[10]; else if(jspa >= ispa[8] && jspa < ispa[9]) gc= hgc[11]; else if(jspa >= ispa[9] && jspa < ispa[10])gc= hgc[12]; else gc= hgc[13]; /* Quadrat malen */ XDrawPoint(XtDisplay(hcallw),XtWindow(hcallw),gc,kgpx[i]-1,kgpy[i] ); XDrawPoint(XtDisplay(hcallw),XtWindow(hcallw),gc,kgpx[i], kgpy[i] ); XDrawPoint(XtDisplay(hcallw),XtWindow(hcallw),gc,kgpx[i]+1,kgpy[i] ); XDrawPoint(XtDisplay(hcallw),XtWindow(hcallw),gc,kgpx[i]-1,kgpy[i]-1); XDrawPoint(XtDisplay(hcallw),XtWindow(hcallw),gc,kgpx[i], kgpy[i]-1); XDrawPoint(XtDisplay(hcallw),XtWindow(hcallw),gc,kgpx[i]+1,kgpy[i]-1); XDrawPoint(XtDisplay(hcallw),XtWindow(hcallw),gc,kgpx[i]-1,kgpy[i]+1); XDrawPoint(XtDisplay(hcallw),XtWindow(hcallw),gc,kgpx[i], kgpy[i]+1); XDrawPoint(XtDisplay(hcallw),XtWindow(hcallw),gc,kgpx[i]+1,kgpy[i]+1); } /*********************************************************************** * palette mit beschriftung zeichnen ***********************************************************************/ /*--------------------------------------------------------------------------- * "VERGLEICHSSPANNUNGEN" unten malen *--------------------------------------------------------------------------*/ ix= 10; iy= IH_DRAWAR-60; if(isflag == 1) { laenge= strlen(cgeh); XDrawString(XtDisplay(hcallw),XtWindow(hcallw), hgc[0],ix,iy,cgeh,(int)laenge); } /*--------------------------------------------------------------------------- * "VON" unten malen *--------------------------------------------------------------------------*/ ix= 10; iy= IH_DRAWAR-45; laenge= strlen(cvon); XDrawString(XtDisplay(hcallw),XtWindow(hcallw), hgc[0],ix,iy,cvon,(int)laenge); /*--------------------------------------------------------------------------- * die farbigen Spannungswerte unten malen *--------------------------------------------------------------------------*/ iy= IH_DRAWAR-30; for(i= 1; i<= 10; i++) { ix= incx + (i-1)*incx; XDrawString(XtDisplay(hcallw),XtWindow(hcallw), hgc[3+i],ix,iy,cblock[i],3); } /*--------------------------------------------------------------------------- * "BIS" unten malen *--------------------------------------------------------------------------*/ ix= 10; iy= IH_DRAWAR-15; laenge= strlen(cbis); XDrawString(XtDisplay(hcallw),XtWindow(hcallw), hgc[0],ix,iy,cbis,(int)laenge); /*--------------------------------------------------------------------------- * obere Zahlenreihe unten malen *--------------------------------------------------------------------------*/ iy= IH_DRAWAR-45; for(i= 1; i<= 10; i++) { ix= incx+(i-1)*incx; sprintf(cispa,"%d",ispa[i]); laenge= strlen(cispa); XDrawString(XtDisplay(hcallw),XtWindow(hcallw), hgc[0],ix,iy,cispa,(int)laenge); } /*--------------------------------------------------------------------------- * untere Zahlenreihe unten malen *--------------------------------------------------------------------------*/ iy= IH_DRAWAR-15; for(i= 1; i<= 10; i++) { ix= incx+(i-1)*incx; sprintf(cispa,"%d",(ispa[i+1]-1)); laenge= strlen(cispa); XDrawString(XtDisplay(hcallw),XtWindow(hcallw), hgc[0],ix,iy,cispa,(int)laenge); } return 0; }