working on configure script and testing on linux

git-svn-id: svn://136.177.114.72/svn_GW/IPhreeqc/trunk@4271 1feff8c3-07ed-0310-ac33-dd36852eb9cd
This commit is contained in:
Scott R Charlton 2010-04-20 23:30:04 +00:00
parent 37bc8baffb
commit 4793b2a682
9 changed files with 128 additions and 88 deletions

View File

@ -1,8 +1,12 @@
# Prelude.
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.64])
AC_INIT([IPhreeqc], [1.0], [charlton@usgs.gov])
AC_CONFIG_AUX_DIR([config])
AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_CONFIG_SRCDIR([src/IPhreeqc.cpp])
# Checks for programs.
AC_PROG_CXX
@ -17,9 +21,12 @@ AC_ARG_ENABLE([fortran],
if test "X$IPQ_FORTRAN" = "Xyes"; then
echo "yes"
AC_PROG_F77
AC_F77_LIBRARY_LDFLAGS
AC_F77_WRAPPERS
AC_PROG_FC
AC_FC_LIBRARY_LDFLAGS
AC_FC_WRAPPERS
AC_FC_MAIN
AC_SUBST(F77, $FC)
AC_SUBST(FFLAGS, $FCFLAGS)
else
echo "no"
fi
@ -29,7 +36,14 @@ AM_CONDITIONAL([BUILD_FORTRAN], [test "X$IPQ_FORTRAN" = "Xyes"])
AC_DISABLE_SHARED
AC_PROG_LIBTOOL
# Output files.
# Checks for libraries.
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_CONFIG_FILES([Makefile src/Makefile test/Makefile testcpp/Makefile])
AC_OUTPUT

View File

@ -59,7 +59,7 @@ C
INTEGER LoadDatabase
INTEGER LoadDatabaseString
C INTEGER OutputLastError
INTEGER OutputLastWarning
C INTEGER OutputLastWarning
INTEGER OutputLines
INTEGER RunAccumulated
INTEGER RunFile

View File

@ -91,50 +91,56 @@
INTERFACE
SUBROUTINE SetSelectedOutputOn(ID,SEL_ON)
FUNCTION SetSelectedOutputOn(ID,SEL_ON)
INTEGER(KIND=4) :: ID
LOGICAL(KIND=4) :: SEL_ON
END SUBROUTINE SetSelectedOutputOn
INTEGER(KIND=4) :: SetSelectedOutputOn
END FUNCTION SetSelectedOutputOn
END INTERFACE
INTERFACE
SUBROUTINE SetOutputOn(ID,OUT_ON)
FUNCTION SetOutputOn(ID,OUT_ON)
INTEGER(KIND=4) :: ID
LOGICAL(KIND=4) :: OUT_ON
END SUBROUTINE SetOutputOn
INTEGER(KIND=4) :: SetOutputOn
END FUNCTION SetOutputOn
END INTERFACE
INTERFACE
SUBROUTINE SetErrorOn(ID,ERR_ON)
FUNCTION SetErrorOn(ID,ERR_ON)
INTEGER(KIND=4) :: ID
LOGICAL(KIND=4) :: ERR_ON
END SUBROUTINE SetErrorOn
INTEGER(KIND=4) :: SetErrorOn
END FUNCTION SetErrorOn
END INTERFACE
INTERFACE
SUBROUTINE SetLogOn(ID,LOG_ON)
FUNCTION SetLogOn(ID,LOG_ON)
INTEGER(KIND=4) :: ID
LOGICAL(KIND=4) :: LOG_ON
END SUBROUTINE SetLogOn
INTEGER(KIND=4) :: SetLogOn
END FUNCTION SetLogOn
END INTERFACE
INTERFACE
SUBROUTINE SetDumpOn(ID,DUMP_ON)
FUNCTION SetDumpOn(ID,DUMP_ON)
INTEGER(KIND=4) :: ID
LOGICAL(KIND=4) :: DUMP_ON
END SUBROUTINE SetDumpOn
INTEGER(KIND=4) :: SetDumpOn
END FUNCTION SetDumpOn
END INTERFACE
INTERFACE
SUBROUTINE SetDumpStringOn(ID,DUMP_STRING_ON)
FUNCTION SetDumpStringOn(ID,DUMP_STRING_ON)
INTEGER(KIND=4) :: ID
LOGICAL(KIND=4) :: DUMP_STRING_ON
END SUBROUTINE SetDumpStringOn
INTEGER(KIND=4) :: SetDumpStringOn
END FUNCTION SetDumpStringOn
END INTERFACE
@ -234,9 +240,10 @@
INTERFACE
SUBROUTINE GetComponent(ID,N,COMP)
FUNCTION GetComponent(ID,N,COMP)
INTEGER(KIND=4) :: ID
INTEGER(KIND=4) :: N
CHARACTER(LEN=*) :: COMP
END SUBROUTINE
INTEGER(KIND=4) :: GetComponent
END FUNCTION GetComponent
END INTERFACE

View File

@ -40,14 +40,17 @@
UnLoadDatabase = UnLoadDatabaseF(ID)
END FUNCTION UnLoadDatabase
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
SUBROUTINE OutputLastError
SUBROUTINE OutputLastError(ID)
IMPLICIT NONE
CALL OutputLastErrorF
INTEGER :: ID
WRITE(*,*) "fortran OutputLastError ID = ", ID
CALL OutputLastErrorF(ID)
END SUBROUTINE OutputLastError
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
SUBROUTINE OutputLastWarning
SUBROUTINE OutputLastWarning(ID)
IMPLICIT NONE
CALL OutputLastWarningF
INTEGER :: ID
CALL OutputLastWarningF(ID)
END SUBROUTINE OutputLastWarning
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION AccumulateLine(ID,LINE)

View File

@ -18,18 +18,25 @@ private:
int
CreateIPhreeqc(void)
{
return IPhreeqcLib::CreateIPhreeqc();
// return IPhreeqcLib::CreateIPhreeqc();
int i = IPhreeqcLib::CreateIPhreeqc();
std::cout << "CreateIPhreeqc " << i << "\n";
return i;
}
IPQ_RESULT
DestroyIPhreeqc(int id)
{
return IPhreeqcLib::DestroyIPhreeqc(id);
// return IPhreeqcLib::DestroyIPhreeqc(id);
IPQ_RESULT i = IPhreeqcLib::DestroyIPhreeqc(id);
std::cout << "DestroyIPhreeqc( " << id << ") = " << i << "\n";
return i;
}
int
LoadDatabase(int id, const char* filename)
{
std::cout << "In LoadDatabase id = " << id << "\n";
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
if (IPhreeqcPtr)
{
@ -65,6 +72,7 @@ void
OutputLastError(int id)
{
static const char err_msg[] = "OutputLastError: Bad instance.\n";
std::cout << "In OutputLastError id = " << id << "\n";
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
if (IPhreeqcPtr)
{

View File

@ -148,11 +148,11 @@ include_HEADERS=\
if BUILD_FORTRAN
libiphreeqc_la_SOURCES+=\
fwrap.cpp\
fwrap.h\
fwrap.cpp\
fwrap2.cpp\
fwrap3.cpp\
IPhreeqcF.F
IPhreeqcF.f
include_HEADERS+=\
$(top_srcdir)/include/IPhreeqc.f90.inc\

View File

@ -7,37 +7,37 @@
#define DLL_EXPORT
#endif
#if defined(F77_FUNC)
#define CreateIPhreeqcF F77_FUNC (createiphreeqcf, CREATEIPHREEQCF)
#define DestroyIPhreeqcF F77_FUNC (destroyiphreeqcf, DESTROYIPHREEQCF)
#define LoadDatabaseF F77_FUNC (loaddatabasef, LOADDATABASEF)
#define LoadDatabaseStringF F77_FUNC (loaddatabasestringf, LOADDATABASESTRINGF)
#define UnLoadDatabaseF F77_FUNC (unloaddatabasef, UNLOADDATABASEF)
#define AccumulateLineF F77_FUNC (accumulatelinef, ACCUMULATELINEF)
#define RunAccumulatedF F77_FUNC (runaccumulatedf, RUNACCUMULATEDF)
#define RunFileF F77_FUNC (runfilef, RUNFILEF)
#define RunStringF F77_FUNC (runstringf, RUNSTRINGF)
#define GetSelectedOutputRowCountF F77_FUNC (getselectedoutputrowcountf, GETSELECTEDOUTPUTROWCOUNTF)
#define GetSelectedOutputColumnCountF F77_FUNC (getselectedoutputcolumncountf, GETSELECTEDOUTPUTCOLUMNCOUNTF)
#define GetSelectedOutputValueF F77_FUNC (getselectedoutputvaluef, GETSELECTEDOUTPUTVALUEF)
#define SetSelectedOutputOnF F77_FUNC (setselectedoutputonf, SETSELECTEDOUTPUTONF)
#define SetOutputOnF F77_FUNC (setoutputonf, SETOUTPUTONF)
#define SetErrorOnF F77_FUNC (seterroronf, SETERRORONF)
#define SetLogOnF F77_FUNC (setlogonf, SETLOGONF)
#define SetDumpOnF F77_FUNC (setdumponf, SETDUMPONF)
#define SetDumpStringOnF F77_FUNC (setdumpstringonf, SETDUMPSTRINGONF)
#define GetDumpLineCountF F77_FUNC (getdumplinecountf, GETDUMPLINECOUNTF)
#define GetDumpLineF F77_FUNC (getdumplinef, GETDUMPLINEF)
#define GetErrorLineCountF F77_FUNC (geterrorlinecountf, GETERRORLINECOUNTF)
#define GetErrorLineF F77_FUNC (geterrorlinef, GETERRORLINEF)
#define GetWarningLineCountF F77_FUNC (getwarninglinecountf, GETWARNINGLINECOUNTF)
#define GetWarningLineF F77_FUNC (getwarninglinef, GETWARNINGLINEF)
#define GetComponentCountF F77_FUNC (getcomponentcountf, GETCOMPONENTCOUNTF)
#define GetComponentF F77_FUNC (getcomponentf, GETCOMPONENTF)
#define OutputLastErrorF F77_FUNC (outputlasterrorf, OUTPUTLASTERRORF)
#define OutputLastWarningF F77_FUNC (outputlastwarningf, OUTPUTLASTWARNINGF)
#define OutputLinesF F77_FUNC (outputlinesf, OUTPUTLINESF)
#endif /* F77_FUNC */
#if defined(FC_FUNC)
#define CreateIPhreeqcF FC_FUNC (createiphreeqcf, CREATEIPHREEQCF)
#define DestroyIPhreeqcF FC_FUNC (destroyiphreeqcf, DESTROYIPHREEQCF)
#define LoadDatabaseF FC_FUNC (loaddatabasef, LOADDATABASEF)
#define LoadDatabaseStringF FC_FUNC (loaddatabasestringf, LOADDATABASESTRINGF)
#define UnLoadDatabaseF FC_FUNC (unloaddatabasef, UNLOADDATABASEF)
#define AccumulateLineF FC_FUNC (accumulatelinef, ACCUMULATELINEF)
#define RunAccumulatedF FC_FUNC (runaccumulatedf, RUNACCUMULATEDF)
#define RunFileF FC_FUNC (runfilef, RUNFILEF)
#define RunStringF FC_FUNC (runstringf, RUNSTRINGF)
#define GetSelectedOutputRowCountF FC_FUNC (getselectedoutputrowcountf, GETSELECTEDOUTPUTROWCOUNTF)
#define GetSelectedOutputColumnCountF FC_FUNC (getselectedoutputcolumncountf, GETSELECTEDOUTPUTCOLUMNCOUNTF)
#define GetSelectedOutputValueF FC_FUNC (getselectedoutputvaluef, GETSELECTEDOUTPUTVALUEF)
#define SetSelectedOutputOnF FC_FUNC (setselectedoutputonf, SETSELECTEDOUTPUTONF)
#define SetOutputOnF FC_FUNC (setoutputonf, SETOUTPUTONF)
#define SetErrorOnF FC_FUNC (seterroronf, SETERRORONF)
#define SetLogOnF FC_FUNC (setlogonf, SETLOGONF)
#define SetDumpOnF FC_FUNC (setdumponf, SETDUMPONF)
#define SetDumpStringOnF FC_FUNC (setdumpstringonf, SETDUMPSTRINGONF)
#define GetDumpLineCountF FC_FUNC (getdumplinecountf, GETDUMPLINECOUNTF)
#define GetDumpLineF FC_FUNC (getdumplinef, GETDUMPLINEF)
#define GetErrorLineCountF FC_FUNC (geterrorlinecountf, GETERRORLINECOUNTF)
#define GetErrorLineF FC_FUNC (geterrorlinef, GETERRORLINEF)
#define GetWarningLineCountF FC_FUNC (getwarninglinecountf, GETWARNINGLINECOUNTF)
#define GetWarningLineF FC_FUNC (getwarninglinef, GETWARNINGLINEF)
#define GetComponentCountF FC_FUNC (getcomponentcountf, GETCOMPONENTCOUNTF)
#define GetComponentF FC_FUNC (getcomponentf, GETCOMPONENTF)
#define OutputLastErrorF FC_FUNC (outputlasterrorf, OUTPUTLASTERRORF)
#define OutputLastWarningF FC_FUNC (outputlastwarningf, OUTPUTLASTWARNINGF)
#define OutputLinesF FC_FUNC (outputlinesf, OUTPUTLINESF)
#endif /* FC_FUNC */
#if defined(__cplusplus)
extern "C" {

View File

@ -1,5 +1,7 @@
EXTRA_DIST = phreeqc.dat llnl.dat
AM_FCFLAGS = -I$(top_srcdir)/include
AM_FFLAGS = -I$(top_srcdir)/include
noinst_PROGRAMS = kinn
kinn_SOURCES = kinn.f dummy.cxx
kinn_LDADD = ../src/libiphreeqc.la $(FLIBS)
kinn_SOURCES = kinn.f main.cxx
kinn_LDADD = $(top_builddir)/src/libiphreeqc.la $(FCLIBS)

View File

@ -1,5 +1,6 @@
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
PROGRAM DRIVER
C PROGRAM DRIVER
SUBROUTINE F_MAIN
IMPLICIT NONE
INCLUDE 'IPhreeqc.f.inc'
@ -10,18 +11,22 @@
CHARACTER(30) comp
INTEGER n
INTEGER len
INTEGER id
INTEGER(KIND=4) id
REAL*8 dvalue
id = CreateIPhreeqc()
write (*,*) "id = ", id
IF (id.LT.0) THEN
CALL OutputLastError(id)
STOP
ENDIF
write (*,*) "id = ", id
iresult = LoadDatabase(id, 'llnl.dat')
write (*,*) "id = ", id
IF (iresult.NE.0) THEN
write (*,*) "id = ", id
CALL OutputLastError(id)
STOP
ENDIF
@ -103,7 +108,8 @@
50 FORMAT(A15,A,$)
60 FORMAT(1PG15.7E2,A,$)
END PROGRAM DRIVER
C END PROGRAM DRIVER
END SUBROUTINE F_MAIN
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
SUBROUTINE SOLUTION(id, C, Ca, Na)
INCLUDE 'IPhreeqc.f90.inc'
@ -111,13 +117,13 @@
INTEGER err
REAL C, Ca, Na
CHARACTER(80) line
WRITE (line,100),'SOLUTION 1'
WRITE (line,100) 'SOLUTION 1'
err = AccumulateLine(id, line)
WRITE (line,110),'C ', C
WRITE (line,110) 'C ', C
err = AccumulateLine(id, line)
WRITE (line,110),'Ca ', Ca
WRITE (line,110) 'Ca ', Ca
err = AccumulateLine(id, line)
WRITE (line,110),'Na ', Na
WRITE (line,110) 'Na ', Na
err = AccumulateLine(id, line)
100 FORMAT(A)
110 FORMAT(TR4,A,F8.4)
@ -130,9 +136,9 @@
REAL si, amount
CHARACTER*(*) phase
CHARACTER(80) line
WRITE (line,'(A)'),'EQUILIBRIUM_PHASES'
WRITE (line,'(A)') 'EQUILIBRIUM_PHASES'
err = AccumulateLine(id, line)
WRITE (line,'(TR4, A, F8.4, F8.4)'), phase, si, amount
WRITE (line,'(TR4, A, F8.4, F8.4)') phase, si, amount
err = AccumulateLine(id, line)
END SUBROUTINE EQUILIBRIUM_PHASES
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@ -146,37 +152,37 @@
CHARACTER(800) line
CHARACTER(80) form
CHARACTER(30) heading(20)
WRITE (line,200),'USER_PUNCH'
WRITE (line,200) 'USER_PUNCH'
err = AccumulateLine(id, line)
DO i = 1,max
WRITE (heading(i), 210),
WRITE (heading(i), 210)
& i, '.name ',
& i, '.type ',
& i, '.moles '
END DO
WRITE (line, *), '-head ', (heading(i), i=1,max)
WRITE (line, *) '-head ', (heading(i), i=1,max)
err = AccumulateLine(id, line)
WRITE (line, 200), '-start'
WRITE (line, 200) '-start'
err = AccumulateLine(id, line)
WRITE (line, 220), '10 n = sys("'
WRITE (line, 220) '10 n = sys("'
& , element, '", count, names$, types$, moles)'
err = AccumulateLine(id, line)
WRITE (line, 230), '20 n = ', max
WRITE (line, 230) '20 n = ', max
err = AccumulateLine(id, line)
WRITE (line, 240), '30 if count < ', max
WRITE (line, 240) '30 if count < ', max
& , ' then n = count'
err = AccumulateLine(id, line)
WRITE (line, 200), '40 for i = 1 to count'
WRITE (line, 200) '40 for i = 1 to count'
err = AccumulateLine(id, line)
WRITE (line, 200), '50 PUNCH names$(i), types$(i), moles(i)'
WRITE (line, 200) '50 PUNCH names$(i), types$(i), moles(i)'
err = AccumulateLine(id, line)
WRITE (line, 200), '60 next i'
WRITE (line, 200) '60 next i'
err = AccumulateLine(id, line)
WRITE (line, 200), '70 list'
WRITE (line, 200) '70 list'
err = AccumulateLine(id, line)
WRITE (line, 200), '-end'
WRITE (line, 200) '-end'
err = AccumulateLine(id, line)
WRITE (line, 200), 'SELECTED_OUTPUT'
WRITE (line, 200) 'SELECTED_OUTPUT'
err = AccumulateLine(id, line)
!!! WRITE (line, 200), '-file srctest.txt'
!!! CALL AccumulateLine(line)
@ -193,13 +199,13 @@
INTEGER err
CHARACTER(80) line
INTEGER i
WRITE (line,500),'PHASES'
WRITE (line,500) 'PHASES'
err = AccumulateLine(id, line)
WRITE (line,510),'Fix_H+'
WRITE (line,510) 'Fix_H+'
err = AccumulateLine(id, line)
WRITE (line,510),'H+ = H+'
WRITE (line,510) 'H+ = H+'
err = AccumulateLine(id, line)
WRITE (line,510),'log_k 0.0'
WRITE (line,510) 'log_k 0.0'
err = AccumulateLine(id, line)
500 FORMAT(A)
510 FORMAT(TR4,A)