fortran_python_bridge.F90 Source File


Source Code

module  mapl_fortran_python_bridge
    
    ! - - - - - - - - - - - - - - -!
    !
    ! Fortan interface forwarding into an iso_c_binding worth C code defined in bridge.C
    !
    ! - - - - - - - - - - - - - - -!
    
    use ESMF
    use iso_c_binding, only: c_int, c_ptr

    implicit none

    character(len=ESMF_MAXSTR), TARGET :: PYGEOSBRIDGE_name_BUFFER

    private
    public :: mapl_fortran_python_bridge_global_initialize
    
    public :: mapl_fortran_python_bridge_user_init
    public :: mapl_fortran_python_bridge_user_run
    public :: mapl_fortran_python_bridge_user_run_with_internal
    public :: mapl_fortran_python_bridge_user_finalize

    public :: PYGEOSBRIDGE_name_BUFFER

    interface

        ! - - - Global subroutines - setup/teardown python - - - !

        subroutine mapl_fortran_python_bridge_global_initialize( im, jm, lm) bind(c, name='mapl_fortran_python_bridge_global_initialize')
            import c_int
            implicit none
            integer(kind=c_int), intent(in), value :: im, jm, lm
        end subroutine mapl_fortran_python_bridge_global_initialize

        ! - - - User interface to reach user code keyed by name - - - !

        subroutine mapl_fortran_python_bridge_user_init(name, mapl_state, import, export) bind(c, name='mapl_fortran_python_bridge_user_init')
            import c_ptr
            implicit none
            type(c_ptr), intent(in), value :: name, mapl_state, import, export
        end subroutine mapl_fortran_python_bridge_user_init

        subroutine mapl_fortran_python_bridge_user_run(name, mapl_state, import, export) bind(c, name='mapl_fortran_python_bridge_user_run')
            import c_ptr
            implicit none
            type(c_ptr), intent(in), value :: name, mapl_state, import, export
        end subroutine mapl_fortran_python_bridge_user_run

        subroutine mapl_fortran_python_bridge_user_run_with_internal(name, mapl_state, import, export, INTERNAL) bind(c, name='mapl_fortran_python_bridge_user_run_with_internal')
            import c_ptr
            implicit none
            type(c_ptr), intent(in), value :: name, mapl_state, import, export, INTERNAL
        end subroutine mapl_fortran_python_bridge_user_run_with_internal

        subroutine mapl_fortran_python_bridge_user_finalize(name, mapl_state, import, export) bind(c, name='mapl_fortran_python_bridge_user_finalize')
            import c_ptr
            implicit none
            type(c_ptr), intent(in), value :: name, mapl_state, import, export
        end subroutine mapl_fortran_python_bridge_user_finalize

    end interface

end module mapl_fortran_python_bridge