mirror of
https://git.gfz-potsdam.de/naaice/iphreeqc.git
synced 2025-12-16 00:28:23 +01:00
git-svn-id: svn://136.177.114.72/svn_GW/IPhreeqc/trunk@4372 1feff8c3-07ed-0310-ac33-dd36852eb9cd
161 lines
3.6 KiB
Fortran
161 lines
3.6 KiB
Fortran
FUNCTION F_MAIN()
|
|
|
|
IMPLICIT NONE
|
|
INCLUDE 'IPhreeqc.f.inc'
|
|
INTEGER(KIND=4) id
|
|
|
|
INTEGER(KIND=4) r
|
|
INTEGER(KIND=4) c
|
|
INTEGER(KIND=4) t
|
|
REAL(KIND=8) d
|
|
CHARACTER(LEN=80) s
|
|
|
|
INTEGER(KIND=4) F_MAIN
|
|
INTEGER(KIND=4) TestGetSet
|
|
|
|
INTEGER(KIND=4) EXIT_SUCCESS
|
|
PARAMETER (EXIT_SUCCESS=0)
|
|
|
|
INTEGER(KIND=4) EXIT_FAILURE
|
|
PARAMETER (EXIT_FAILURE=1)
|
|
|
|
EXTERNAL GetDumpOn
|
|
EXTERNAL SetDumpOn
|
|
|
|
EXTERNAL GetDumpStringOn
|
|
EXTERNAL SetDumpStringOn
|
|
|
|
EXTERNAL GetErrorOn
|
|
EXTERNAL SetErrorOn
|
|
|
|
EXTERNAL GetLogOn
|
|
EXTERNAL SetLogOn
|
|
|
|
EXTERNAL GetOutputOn
|
|
EXTERNAL SetOutputOn
|
|
|
|
EXTERNAL GetSelectedOutputOn
|
|
EXTERNAL SetSelectedOutputOn
|
|
|
|
id = CreateIPhreeqc()
|
|
IF (id.LT.0) THEN
|
|
F_MAIN = EXIT_FAILURE
|
|
RETURN
|
|
ENDIF
|
|
|
|
C Dump
|
|
IF (TestGetSet(id,GetDumpOn,SetDumpOn).NE.0) THEN
|
|
F_MAIN = EXIT_FAILURE
|
|
RETURN
|
|
ENDIF
|
|
|
|
C Dump string
|
|
IF (TestGetSet(id,GetDumpStringOn,SetDumpStringOn).NE.0) THEN
|
|
F_MAIN = EXIT_FAILURE
|
|
RETURN
|
|
ENDIF
|
|
|
|
C Error
|
|
IF (TestGetSet(id,GetErrorOn,SetErrorOn).NE.0) THEN
|
|
F_MAIN = EXIT_FAILURE
|
|
RETURN
|
|
ENDIF
|
|
|
|
C Log
|
|
IF (TestGetSet(id,GetLogOn,SetLogOn).NE.0) THEN
|
|
F_MAIN = EXIT_FAILURE
|
|
RETURN
|
|
ENDIF
|
|
|
|
C Output
|
|
IF (TestGetSet(id,GetOutputOn,SetOutputOn).NE.0) THEN
|
|
F_MAIN = EXIT_FAILURE
|
|
RETURN
|
|
ENDIF
|
|
|
|
C Selected output
|
|
IF (TestGetSet(id,GetSelectedOutputOn,SetSelectedOutputOn)
|
|
& .NE.0) THEN
|
|
F_MAIN = EXIT_FAILURE
|
|
RETURN
|
|
ENDIF
|
|
|
|
IF (LoadDatabase(id, "phreeqc.dat").NE.0) THEN
|
|
CALL OutputError(id)
|
|
F_MAIN = EXIT_FAILURE
|
|
RETURN
|
|
ENDIF
|
|
|
|
IF (RunFile(id, "ex2").NE.0) THEN
|
|
CALL OutputError(id)
|
|
F_MAIN = EXIT_FAILURE
|
|
RETURN
|
|
ENDIF
|
|
|
|
DO 20 r=1,GetSelectedOutputRowCount(id)
|
|
DO 10 c=1,GetSelectedOutputColumnCount(id)
|
|
IF (GetSelectedOutputValue(id,r,c,t,d,s).EQ.IPQ_OK) THEN
|
|
CALL OutputError(id)
|
|
F_MAIN = EXIT_FAILURE
|
|
RETURN
|
|
ENDIF
|
|
10 CONTINUE
|
|
20 CONTINUE
|
|
|
|
IF (DestroyIPhreeqc(id).NE.0) THEN
|
|
CALL OutputError(id)
|
|
F_MAIN = EXIT_FAILURE
|
|
RETURN
|
|
ENDIF
|
|
|
|
F_MAIN = EXIT_SUCCESS
|
|
RETURN
|
|
|
|
END FUNCTION F_MAIN
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FUNCTION TestGetSet(id,getFunc,setFunc)
|
|
|
|
IMPLICIT NONE
|
|
INCLUDE 'IPhreeqc.f.inc'
|
|
INTEGER(KIND=4) id
|
|
INTEGER(KIND=4) TestGetSet
|
|
|
|
LOGICAL(KIND=4) getFunc
|
|
INTEGER(KIND=4) setFunc
|
|
|
|
INTEGER(KIND=4) EXIT_SUCCESS
|
|
PARAMETER (EXIT_SUCCESS=0)
|
|
|
|
INTEGER(KIND=4) EXIT_FAILURE
|
|
PARAMETER (EXIT_FAILURE=1)
|
|
|
|
IF (getFunc(id)) THEN
|
|
TestGetSet = EXIT_FAILURE
|
|
RETURN
|
|
ENDIF
|
|
|
|
IF (setFunc(id,.TRUE.).NE.IPQ_OK) THEN
|
|
TestGetSet = EXIT_FAILURE
|
|
RETURN
|
|
ENDIF
|
|
|
|
IF (.NOT.getFunc(id)) THEN
|
|
TestGetSet = EXIT_FAILURE
|
|
RETURN
|
|
ENDIF
|
|
|
|
IF (setFunc(id,.FALSE.).NE.IPQ_OK) THEN
|
|
TestGetSet = EXIT_FAILURE
|
|
RETURN
|
|
ENDIF
|
|
|
|
TestGetSet = EXIT_SUCCESS
|
|
RETURN
|
|
|
|
END FUNCTION TestGetSet
|