From f353fcbc163ead4c02cff61fb7e147f710f476c8 Mon Sep 17 00:00:00 2001 From: Nicholas Malaya Date: Fri, 15 Jun 2012 18:53:39 +0000 Subject: [PATCH] [cantera]: adding patch that adds support for two methods in C++ to fortran, both getMixDiffCoeffs{Mass,Mole} --- include/cantera/transport/TransportBase.h | 10 ++++++++++ src/fortran/cantera.f90 | 8 ++++++++ src/fortran/cantera_transport.f90 | 14 ++++++++++++++ src/fortran/fct.cpp | 20 ++++++++++++++++++++ src/fortran/fct_interface.f90 | 10 ++++++++++ 5 files changed, 62 insertions(+) diff --git a/include/cantera/transport/TransportBase.h b/include/cantera/transport/TransportBase.h index d42548b93..2e9f06a3c 100644 --- a/include/cantera/transport/TransportBase.h +++ b/include/cantera/transport/TransportBase.h @@ -740,6 +740,16 @@ public: } + //! Returns a vector of mixture averaged diffusion coefficients + virtual void getMixDiffCoeffsMole(doublereal* const d) { + err("getMixDiffCoeffsMole"); + } + + //! Returns a vector of mixture averaged diffusion coefficients + virtual void getMixDiffCoeffsMass(doublereal* const d) { + err("getMixDiffCoeffsMass"); + } + //! Set model parameters for derived classes /*! * This method may be derived in subclasses to set model-specific parameters. diff --git a/src/fortran/cantera.f90 b/src/fortran/cantera.f90 index d1a9e1579..fbfc79fad 100644 --- a/src/fortran/cantera.f90 +++ b/src/fortran/cantera.f90 @@ -149,6 +149,14 @@ MODULE CANTERA MODULE PROCEDURE ctrans_getMixDiffCoeffs END INTERFACE getMixDiffCoeffs + INTERFACE getMixDiffCoeffsMole + MODULE PROCEDURE ctrans_getMixDiffCoeffsMole + END INTERFACE getMixDiffCoeffsMole + + INTERFACE getMixDiffCoeffsMass + MODULE PROCEDURE ctrans_getMixDiffCoeffsMass + END INTERFACE getMixDiffCoeffsMass + INTERFACE getMoleFractions MODULE PROCEDURE ctthermo_getMoleFractions END INTERFACE getMoleFractions diff --git a/src/fortran/cantera_transport.f90 b/src/fortran/cantera_transport.f90 index 36a5620c1..26d427a61 100644 --- a/src/fortran/cantera_transport.f90 +++ b/src/fortran/cantera_transport.f90 @@ -46,6 +46,20 @@ contains self%err = trans_getMixDiffCoeffs(self%tran_id, d) end subroutine ctrans_getMixDiffCoeffs + subroutine ctrans_getMixDiffCoeffsMass(self, d) + implicit none + type(phase_t), intent(inout) :: self + double precision, intent(out) :: d(*) + self%err = trans_getMixDiffCoeffsMass(self%tran_id, d) + end subroutine ctrans_getMixDiffCoeffsMass + + subroutine ctrans_getMixDiffCoeffsMole(self, d) + implicit none + type(phase_t), intent(inout) :: self + double precision, intent(out) :: d(*) + self%err = trans_getMixDiffCoeffsMole(self%tran_id, d) + end subroutine ctrans_getMixDiffCoeffsMole + subroutine ctrans_getBinDiffCoeffs(self, ld, d) implicit none type(phase_t), intent(inout) :: self diff --git a/src/fortran/fct.cpp b/src/fortran/fct.cpp index 5a26856c4..61dc2b22a 100644 --- a/src/fortran/fct.cpp +++ b/src/fortran/fct.cpp @@ -965,6 +965,26 @@ extern "C" { } } + status_t trans_getmixdiffcoeffsmass_(const integer* n, doublereal* d) + { + try { + _ftrans(n)->getMixDiffCoeffsMass(d); + return 0; + } catch (...) { + return handleAllExceptions(-1, ERR); + } + } + + status_t trans_getmixdiffcoeffsmole_(const integer* n, doublereal* d) + { + try { + _ftrans(n)->getMixDiffCoeffsMole(d); + return 0; + } catch (...) { + return handleAllExceptions(-1, ERR); + } + } + status_t trans_getbindiffcoeffs_(const integer* n, integer* ld, doublereal* d) { try { diff --git a/src/fortran/fct_interface.f90 b/src/fortran/fct_interface.f90 index b415d784b..25d3da11a 100644 --- a/src/fortran/fct_interface.f90 +++ b/src/fortran/fct_interface.f90 @@ -393,6 +393,16 @@ interface double precision, intent(out) :: d(*) end function trans_getMixDiffCoeffs + integer function trans_getMixDiffCoeffsMass(n, d) + integer, intent(in) :: n + double precision, intent(out) :: d(*) + end function trans_getMixDiffCoeffsMass + + integer function trans_getMixDiffCoeffsMole(n, d) + integer, intent(in) :: n + double precision, intent(out) :: d(*) + end function trans_getMixDiffCoeffsMole + integer function trans_getBinDiffCoeffs(n, ld, d) integer, intent(in) :: n integer, intent(in) :: ld