!! Copyright (C) Stichting Deltares, 2005-2020. !! !! This file is part of iMOD. !! !! 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 3 of the License, 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. If not, see . !! !! Contact: imod.support@deltares.nl !! Stichting Deltares !! P.O. Box 177 !! 2600 MH Delft, The Netherlands. !! MODULE MOD_IMPORT USE WINTERACTER USE RESOURCE USE IMODVAR, ONLY : DP_KIND,SP_KIND USE MOD_IMPORT_CALC, ONLY : IMPORT_CALC,IMPORT_CLOSE USE MOD_IMPORT_PAR, ONLY : DIR_DBS,IVERSION,XMIN,YMIN,SDATE,RUNFILE,FNAME_MDL,ISUMPCK,IRIV5,IBATCH USE MOD_UTL, ONLY : ITOS,UTL_IDATETOJDATE,UTL_FILLDATES,UTL_CAP,UTL_MESSAGEHANDLE,UTL_CLOSEUNITS,UTL_WSELECTFILE,UTL_GETHELP,UTL_DIALOGSHOW USE DATEVAR USE MOD_PREF_PAR, ONLY : PREFVAL REAL(KIND=DP_KIND),PRIVATE,PARAMETER :: NODATA=-999.99 CONTAINS !###====================================================================== SUBROUTINE IMPORT_MAIN() !###====================================================================== IMPLICIT NONE TYPE(WIN_MESSAGE) :: MESSAGE INTEGER :: ITYPE IBATCH=0 CALL WDIALOGLOAD(ID_DIMPORTMODFLOW,ID_DIMPORTMODFLOW) CALL WDIALOGPUTIMAGE(ID_OPEN,ID_ICONOPEN,1) !## string editable, changes will be monitored directly CALL WDIALOGFIELDOPTIONS(IDF_STRING1,EDITFIELDCHANGED,ENABLED) CALL WDIALOGFIELDOPTIONS(IDF_STRING2,EDITFIELDCHANGED,ENABLED) CALL WDIALOGUNDEFINED(DVALUE=NODATA) CALL WDIALOGPUTSTRING(IDF_LABEL4,'Name of the Runfile to be created (will be placed in '//TRIM(PREFVAL(1))//'\runfiles') CALL WDIALOGPUTMENU(IDF_MENU1,CDATE,12,5) CALL WDIALOGPUTINTEGER(IDF_INTEGER1,1) CALL WDIALOGPUTINTEGER(IDF_INTEGER2,1987) CALL IMPORT_FIELDS() CALL UTL_DIALOGSHOW(-1,-1,0,3) DO CALL WMESSAGE(ITYPE,MESSAGE) SELECT CASE (ITYPE) CASE (FIELDCHANGED) CALL IMPORT_FIELDS() CASE (PUSHBUTTON) SELECT CASE (MESSAGE%VALUE1) CASE (ID_OPEN) CALL WDIALOGGETRADIOBUTTON(IDF_RADIO1,IVERSION) IF(IVERSION.EQ.1)THEN IF(UTL_WSELECTFILE('Modflow Bas file (*.bas)|*.bas|Modflow Nam file (*.nam)|*.nam|', & LOADDIALOG+PROMPTON+DIRCHANGE+MUSTEXIST,FNAME_MDL,'Select Modflow File'))THEN CALL WDIALOGPUTSTRING(IDF_STRING1,FNAME_MDL) ENDIF ELSE IF(UTL_WSELECTFILE('Modflow Nam file (*.nam)|*.nam|',LOADDIALOG+PROMPTON+DIRCHANGE+MUSTEXIST,FNAME_MDL,'Select Modflow Nam File'))THEN CALL WDIALOGPUTSTRING(IDF_STRING1,FNAME_MDL) ENDIF ENDIF CALL IMPORT_FIELDS() CASE (IDOK) CALL WMESSAGEBOX(YESNO,QUESTIONICON,COMMONNO,'Results will be saved in the folder:'//CHAR(13)// & TRIM(DIR_DBS)//CHAR(13)//CHAR(13)//'Are you sure to start the import ? ','Question') IF(WINFODIALOG(4).EQ.1)THEN CALL IMPORT_FIELDS() IF(IMPORT_CALC(0))EXIT CALL IMPORT_CLOSE() CALL UTL_CLOSEUNITS() ENDIF CASE (IDCANCEL) EXIT CASE (IDHELP) CALL UTL_GETHELP('5.5.2','TMO.IT.Modflow') END SELECT END SELECT ENDDO CALL WDIALOGUNLOAD() END SUBROUTINE IMPORT_MAIN !###====================================================================== SUBROUTINE IMPORT_FIELDS() !###====================================================================== IMPLICIT NONE INTEGER :: I,J,K LOGICAL :: LEX CALL UTL_FILLDATES(IDF_INTEGER2,IDF_MENU1,IDF_INTEGER1) CALL WDIALOGGETINTEGER(IDF_INTEGER2,I) CALL WDIALOGGETINTEGER(IDF_INTEGER1,J) CALL WDIALOGGETMENU(IDF_MENU1,K) SDATE=UTL_IDATETOJDATE(I*10000+K*100+J) CALL WDIALOGGETRADIOBUTTON(IDF_RADIO1,IVERSION) IF(IVERSION.EQ.1)THEN CALL WDIALOGPUTSTRING(IDF_LABEL5,'Locate one of the Modflow files (e.g. modflow.bas, modflow.drn) or NAM file:') ELSE CALL WDIALOGPUTSTRING(IDF_LABEL5,'Locate the Modflow NAM file (e.g. model.nam):') ENDIF I=1 CALL WDIALOGGETSTRING(IDF_STRING1,FNAME_MDL) !## modelfile IF(LEN_TRIM(FNAME_MDL).EQ.0)I=0 LEX=.FALSE. IF(I.EQ.1)INQUIRE(FILE=FNAME_MDL,EXIST=LEX) IF(LEX) CALL WDIALOGFIELDSTATE(IDF_LABEL7,3) IF(.NOT.LEX)THEN I=0 CALL WDIALOGFIELDSTATE(IDF_LABEL7,1) CALL WDIALOGPUTSTRING(IDF_LABEL7,'File '//TRIM(FNAME_MDL)//' does not exist') ENDIF J=1 CALL WDIALOGGETSTRING(IDF_STRING2,RUNFILE) !## modelrunfile IF(LEN_TRIM(RUNFILE).EQ.0)J=0 LEX=.FALSE. IF(J.EQ.1)THEN RUNFILE=UTL_CAP(RUNFILE,'U') J=MIN(J,INDEX(RUNFILE,'.RUN',.TRUE.)) IF(J.EQ.1)INQUIRE(FILE=TRIM(PREFVAL(1))//'\runfiles\'//TRIM(RUNFILE),EXIST=LEX) ENDIF IF(.NOT.LEX)CALL WDIALOGFIELDSTATE(IDF_LABEL8,3) IF(LEX)THEN CALL WDIALOGFIELDSTATE(IDF_LABEL8,1) CALL WDIALOGPUTSTRING(IDF_LABEL8,TRIM(RUNFILE)//' does exist already') ENDIF RUNFILE=TRIM(PREFVAL(1))//'\runfiles\'//TRIM(RUNFILE) CALL WDIALOGGETDOUBLE(IDF_REAL1,XMIN) CALL WDIALOGGETDOUBLE(IDF_REAL2,YMIN) K=1 IF(XMIN.EQ.NODATA)K=0 IF(YMIN.EQ.NODATA)K=0 CALL WDIALOGGETCHECKBOX(IDF_CHECK1,IRIV5) CALL WDIALOGFIELDSTATE(IDOK,MIN(I,J,K)) DIR_DBS=TRIM(PREFVAL(1))//'\IMPORT' CALL WDIALOGGETRADIOBUTTON(IDF_RADIO4,ISUMPCK) ISUMPCK=ISUMPCK-1 END SUBROUTINE IMPORT_FIELDS END MODULE MOD_IMPORT