MODULE MOD_SCENTOOL_PLOT USE WINTERACTER USE RESOURCE USE IMODVAR USE MODPLOT, ONLY : MPW USE MOD_SCENTOOL_PAR USE MOD_DBL USE MOD_UTL, ONLY : RTOS,ITOS,UTL_INVERSECOLOUR,UTL_PLOT1BITMAP,UTL_PLOT2BITMAP,UTL_DEBUGLEVEL,UTL_PLOTLABEL REAL(KIND=DP_KIND),PARAMETER,PRIVATE :: TSIZE=0.01D0 CONTAINS !###====================================================================== SUBROUTINE ST1DRAWSCENARIO() !###====================================================================== IMPLICIT NONE CALL IGRSELECT(DRAWBITMAP,MPW%IBITMAP) CALL IGRPLOTMODE(MODECOPY) CALL DBL_IGRAREA(0.0D0,0.0D0,1.0D0,1.0D0) CALL DBL_IGRUNITS(MPW%XMIN,MPW%YMIN,MPW%XMAX,MPW%YMAX,IOFFSET=1) !## plot well systems CALL ST1PLOTWELLS() !## plot observations CALL ST1PLOTOBS() END SUBROUTINE ST1DRAWSCENARIO !###====================================================================== SUBROUTINE ST1PLOTOBS() !###====================================================================== IMPLICIT NONE INTEGER :: I,IROW,ICLR,IMARKER ! REAL(KIND=DP_KIND),PARAMETER :: TSIZE=0.01D0 REAL(KIND=DP_KIND) :: X,Y,Z,TWIDTH,THEIGTH CHARACTER(LEN=50),DIMENSION(5) :: CLABEL,CVALUE CHARACTER(LEN=10),DIMENSION(2) :: CUNIT INTEGER,DIMENSION(5) :: IOPTION INTEGER :: IALL,JOBS,ILABEL DATA CUNIT/'m+MSL','m+SLevel'/ CALL WDIALOGSELECT(ID_DSCENTOOLTAB3) CALL WDIALOGGETCHECKBOX(IDF_CHECK1,IALL) CALL WDIALOGGETCHECKBOX(IDF_CHECK2,ILABEL) CALL UTL_DEBUGLEVEL(0) CALL WDIALOGGETMENU(IDF_MENU1,JOBS) CALL UTL_DEBUGLEVEL(1) CLABEL='' IF(ILABEL.EQ.1)THEN CLABEL(1)='ID' CLABEL(2)='Top Screen' CLABEL(3)='Bot Screen' CLABEL(4)='X-coord.' CLABEL(5)='Y-coord.' ENDIF !## overrule in case iOBS.ne.0 IF(IOBS.NE.0)THEN IALL=0 JOBS=0 ENDIF CALL WDIALOGGETRADIOBUTTON(IDF_RADIO1,I) IOPTION=1 SELECT CASE (I) CASE (1) !## no labeling IOPTION=0 CASE (2) !## id IOPTION(2:5)=0 CASE (3) !## id+filter screens IOPTION(4:5)=0 CASE (4) !## all IOPTION=1 END SELECT DO I=1,NOBS TWIDTH =TSIZE/2.0D0 THEIGTH=TWIDTH*(0.03333333D0/0.013333D0) THEIGTH=THEIGTH*WINFOGRREAL(GRAPHICSRATIO) !## currently selected OBSl-system - draw from grid-field IF(I.EQ.IOBS)THEN CALL WDIALOGSELECT(ID_DSCENTOOL_PROPTAB3) CALL WDIALOGGETINTEGER(IDF_INTEGER1,ICLR) CALL WDIALOGGETMENU(IDF_MENU1,IMARKER) CALL WDIALOGSELECT(ID_DSCENTOOL_PROPTAB2) DO IROW=1,NROWL X=0.0D0 Y=0.0D0 CVALUE='' IF(WINFOGRIDCELL(IDF_GRID1,1,IROW,GRIDCELLDEFINED).EQ.1)CALL WGRIDGETCELLSTRING(IDF_GRID1,1,IROW,CVALUE(1)) !## id IF(WINFOGRIDCELL(IDF_GRID1,2,IROW,GRIDCELLDEFINED).EQ.1)THEN CALL WGRIDGETCELLDOUBLE(IDF_GRID1,2,IROW,Z) !## z1 CVALUE(2)=TRIM(RTOS(Z,'F',3))//' '//TRIM(CUNIT(OBS(I)%ILOCT)) ENDIF IF(WINFOGRIDCELL(IDF_GRID1,3,IROW,GRIDCELLDEFINED).EQ.1)THEN CALL WGRIDGETCELLDOUBLE(IDF_GRID1,3,IROW,Z) !## z2 CVALUE(3)=TRIM(RTOS(Z,'F',3))//' '//TRIM(CUNIT(OBS(I)%ILOCT)) ENDIF IF(WINFOGRIDCELL(IDF_GRID1,4,IROW,GRIDCELLDEFINED).EQ.1.AND. & WINFOGRIDCELL(IDF_GRID1,5,IROW,GRIDCELLDEFINED).EQ.1)THEN CALL WGRIDGETCELLDOUBLE(IDF_GRID1,4,IROW,X) !## x CVALUE(4)=TRIM(RTOS(X,'F',3))//' m' CALL WGRIDGETCELLDOUBLE(IDF_GRID1,5,IROW,Y) !## y CVALUE(5)=TRIM(RTOS(Y,'F',3))//' m' CALL DBL_WGRTEXTFONT(IFAMILY=0,TWIDTH=TSIZE,THEIGHT=TSIZE*WINFOGRREAL(GRAPHICSRATIO),ISTYLE=0) CALL IGRCOLOURN(ICLR) CALL DBL_IGRMARKER(X,Y,IMARKER,IOFFSET=1) CALL UTL_PLOTLABEL(X,Y,CVALUE,IOPTION,5,TWIDTH,THEIGTH,CLABEL,.FALSE.,-1,ALIGNLEFT,CFORMAT='(F10.2)') ENDIF ENDDO ELSE DO IROW=1,OBS(I)%NLOC IF(IALL.EQ.1.OR.(IALL.EQ.0.AND.JOBS.EQ.I))THEN CVALUE(1)=OBS(I)%LOC(IROW)%ID CVALUE(2)=TRIM(RTOS(OBS(I)%LOC(IROW)%Z1,'F',3))//' '//TRIM(CUNIT(OBS(I)%ILOCT)) CVALUE(3)=TRIM(RTOS(OBS(I)%LOC(IROW)%Z2,'F',3))//' '//TRIM(CUNIT(OBS(I)%ILOCT)) CVALUE(4)=TRIM(RTOS(OBS(I)%LOC(IROW)%X ,'F',3))//' m' CVALUE(5)=TRIM(RTOS(OBS(I)%LOC(IROW)%Y ,'F',3))//' m' CALL UTL_PLOTLABEL(OBS(I)%LOC(IROW)%X,OBS(I)%LOC(IROW)%Y,CVALUE,IOPTION,5,TWIDTH,THEIGTH,CLABEL,.FALSE.,-1,ALIGNLEFT,CFORMAT='(F10.2)') ENDIF CALL IGRCOLOURN(OBS(I)%ICLR) CALL DBL_WGRTEXTFONT(IFAMILY=0,TWIDTH=TSIZE,THEIGHT=TSIZE*WINFOGRREAL(GRAPHICSRATIO),ISTYLE=0) CALL DBL_IGRMARKER(OBS(I)%LOC(IROW)%X,OBS(I)%LOC(IROW)%Y,OBS(I)%ISYMBOL,IOFFSET=1) ENDDO ENDIF END DO END SUBROUTINE ST1PLOTOBS !###====================================================================== SUBROUTINE ST1PLOTWELLS() !###====================================================================== IMPLICIT NONE INTEGER :: I,IROW,ICLR,IMARKER REAL(KIND=DP_KIND) :: X,Y,Z,TWIDTH,THEIGTH CHARACTER(LEN=50),DIMENSION(5) :: CLABEL,CVALUE CHARACTER(LEN=10),DIMENSION(2) :: CUNIT INTEGER,DIMENSION(5) :: IOPTION INTEGER :: IALL,JWEL,ILABEL,JLABEL DATA CUNIT/'m+MSL','m+SLevel'/ CALL WDIALOGSELECT(ID_DSCENTOOLTAB1) CALL WDIALOGGETCHECKBOX(IDF_CHECK1,IALL) CALL WDIALOGGETCHECKBOX(IDF_CHECK2,ILABEL) CALL UTL_DEBUGLEVEL(0) CALL WDIALOGGETMENU(IDF_MENU1,JWEL) CALL UTL_DEBUGLEVEL(1) JLABEL=ILABELNAME CLABEL='' IF(ILABEL.EQ.1)THEN CLABEL(1)='ID' CLABEL(2)='Top Screen' CLABEL(3)='Bot Screen' CLABEL(4)='X-coord.' CLABEL(5)='Y-coord.' ILABELNAME=1 ENDIF !## overrule in case iwel.ne.0 IF(IWEL.NE.0)THEN IALL=0 JWEL=0 ENDIF CALL WDIALOGGETRADIOBUTTON(IDF_RADIO1,I) IOPTION=1 SELECT CASE (I) CASE (1) !## no labeling IOPTION=0 CASE (2) !## id IOPTION(2:5)=0 CASE (3) !## id+filter screens IOPTION(4:5)=0 CASE (4) !## all IOPTION=1 END SELECT DO I=1,NWEL TWIDTH =TSIZE/2.0D0 THEIGTH=TWIDTH*(0.03333333D0/0.013333D0) THEIGTH=THEIGTH*WINFOGRREAL(GRAPHICSRATIO) !## currently selected well-system - draw from grid-field IF(I.EQ.IWEL)THEN CALL WDIALOGSELECT(ID_DSCENTOOL_PROPTAB3) CALL WDIALOGGETINTEGER(IDF_INTEGER1,ICLR) CALL WDIALOGGETMENU(IDF_MENU1,IMARKER) CALL WDIALOGSELECT(ID_DSCENTOOL_PROPTAB2) DO IROW=1,NROWL X=0.0D0 Y=0.0D0 CVALUE='' IF(WINFOGRIDCELL(IDF_GRID1,1,IROW,GRIDCELLDEFINED).EQ.1)CALL WGRIDGETCELLSTRING(IDF_GRID1,1,IROW,CVALUE(1)) !## id IF(WINFOGRIDCELL(IDF_GRID1,2,IROW,GRIDCELLDEFINED).EQ.1)THEN CALL WGRIDGETCELLDOUBLE(IDF_GRID1,2,IROW,Z) !## z1 CVALUE(2)=TRIM(RTOS(Z,'G',7))//' '//TRIM(CUNIT(WEL(I)%ILOCT)) ENDIF IF(WINFOGRIDCELL(IDF_GRID1,3,IROW,GRIDCELLDEFINED).EQ.1)THEN CALL WGRIDGETCELLDOUBLE(IDF_GRID1,3,IROW,Z) !## z2 CVALUE(3)=TRIM(RTOS(Z,'G',7))//' '//TRIM(CUNIT(WEL(I)%ILOCT)) ENDIF IF(WINFOGRIDCELL(IDF_GRID1,4,IROW,GRIDCELLDEFINED).EQ.1.AND. & WINFOGRIDCELL(IDF_GRID1,5,IROW,GRIDCELLDEFINED).EQ.1)THEN CALL WGRIDGETCELLDOUBLE(IDF_GRID1,4,IROW,X) !## x CVALUE(4)=TRIM(RTOS(X,'F',3))//' m' CALL WGRIDGETCELLDOUBLE(IDF_GRID1,5,IROW,Y) !## y CVALUE(5)=TRIM(RTOS(Y,'F',3))//' m' CALL DBL_WGRTEXTFONT(IFAMILY=0,TWIDTH=TSIZE,THEIGHT=TSIZE*WINFOGRREAL(GRAPHICSRATIO),ISTYLE=0) CALL IGRCOLOURN(ICLR) CALL DBL_IGRMARKER(X,Y,IMARKER,IOFFSET=1) CALL UTL_PLOTLABEL(X,Y,CVALUE,IOPTION,5,TWIDTH,THEIGTH,CLABEL,.FALSE.,-1,ALIGNLEFT,CFORMAT='(F10.2)') ENDIF ENDDO ELSE DO IROW=1,WEL(I)%NLOC IF(IALL.EQ.1.OR.(IALL.EQ.0.AND.JWEL.EQ.I))THEN CVALUE(1)=WEL(I)%LOC(IROW)%ID CVALUE(2)=TRIM(RTOS(WEL(I)%LOC(IROW)%Z1,'F',3))//' '//TRIM(CUNIT(WEL(I)%ILOCT)) CVALUE(3)=TRIM(RTOS(WEL(I)%LOC(IROW)%Z2,'F',3))//' '//TRIM(CUNIT(WEL(I)%ILOCT)) CVALUE(4)=TRIM(RTOS(WEL(I)%LOC(IROW)%X ,'F',3))//' m' CVALUE(5)=TRIM(RTOS(WEL(I)%LOC(IROW)%Y ,'F',3))//' m' CALL UTL_PLOTLABEL(WEL(I)%LOC(IROW)%X,WEL(I)%LOC(IROW)%Y,CVALUE,IOPTION,5,TWIDTH,THEIGTH,CLABEL,.FALSE.,-1,ALIGNLEFT,CFORMAT='(F10.2)') ENDIF CALL IGRCOLOURN(WEL(I)%ICLR) CALL DBL_WGRTEXTFONT(IFAMILY=0,TWIDTH=TSIZE,THEIGHT=TSIZE*WINFOGRREAL(GRAPHICSRATIO),ISTYLE=0) CALL DBL_IGRMARKER(WEL(I)%LOC(IROW)%X,WEL(I)%LOC(IROW)%Y,WEL(I)%ISYMBOL,IOFFSET=1) ENDDO ENDIF END DO ILABELNAME=JLABEL END SUBROUTINE ST1PLOTWELLS END MODULE MOD_SCENTOOL_PLOT