mirror of
https://git.gfz-potsdam.de/naaice/iphreeqc.git
synced 2025-12-15 16:18:22 +01:00
git-svn-id: svn://136.177.114.72/svn_GW/IPhreeqc/trunk@9702 1feff8c3-07ed-0310-ac33-dd36852eb9cd
60 lines
1.7 KiB
Fortran
60 lines
1.7 KiB
Fortran
MODULE MyData
|
|
DOUBLE PRECISION year
|
|
END MODULE MyData
|
|
|
|
MODULE Callback
|
|
CONTAINS
|
|
DOUBLE PRECISION FUNCTION MyCallback(x1, x2, str)
|
|
USE MyData, ONLY : year
|
|
USE ISO_C_BINDING
|
|
!
|
|
! Use of a callback is optional.
|
|
!
|
|
! The callback provides a way to obtain data from a Basic program
|
|
! through the variables x1, x2, and str, and send data to a
|
|
! Basic program through the return value of the callback.
|
|
!
|
|
! The callback function is called whenever CALLBACK(x1, x2, str$)
|
|
! is used in a Basic program (usually USER_PUNCH). See file "ic".
|
|
!
|
|
DOUBLE PRECISION, INTENT(in) :: x1, x2
|
|
CHARACTER(*), INTENT(in) :: str
|
|
MyCallback = -1.0
|
|
! An example of a datum available in main program
|
|
IF (TRIM(str) .EQ. "Year") THEN
|
|
WRITE (*,"(/a,i2,a,f8.2)") "Callback for cell ", INT(x1), ": pH ", x2
|
|
MyCallback = year
|
|
ENDIF
|
|
RETURN
|
|
END FUNCTION MyCallback
|
|
END MODULE Callback
|
|
|
|
PROGRAM Advect
|
|
USE Callback
|
|
USE MyData
|
|
USE IPhreeqc
|
|
INTEGER :: Id
|
|
|
|
!Create module, load database, define initial conditions and selected output
|
|
year = 2012.
|
|
Id = CreateIPhreeqc()
|
|
IF (LoadDatabase(Id, "phreeqc.dat") .NE. 0) THEN
|
|
CALL OutputErrorString(Id)
|
|
STOP
|
|
ENDIF
|
|
IF (SetSelectedOutputFileOn(id, .TRUE.) .NE. 0) THEN
|
|
CALL OutputErrorString(Id)
|
|
STOP
|
|
ENDIF
|
|
!???IF (SetBasicFortranCallback(id, MyCallback) .NE. 0) THEN
|
|
!??? CALL OutputErrorString(Id)
|
|
!??? STOP
|
|
!???ENDIF
|
|
IF (RunFile(Id, "ic") .NE. 0) THEN
|
|
CALL OutputErrorString(Id)
|
|
STOP
|
|
ENDIF
|
|
!Destroy module
|
|
IF (DestroyIPhreeqc(Id) .NE. 0) CALL OutputErrorString(Id)
|
|
END PROGRAM Advect
|