| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576 |
- !===============================================================================
- ! Copyright 2005-2022 Intel Corporation.
- !
- ! This software and the related documents are Intel copyrighted materials, and
- ! your use of them is governed by the express license under which they were
- ! provided to you (License). Unless the License provides otherwise, you may not
- ! use, modify, copy, publish, distribute, disclose or transmit this software or
- ! the related documents without Intel's prior written permission.
- !
- ! This software and the related documents are provided as is, with no express
- ! or implied warranties, other than those that are expressly stated in the
- ! License.
- !===============================================================================
- ! Content:
- ! Intel(R) oneAPI Math Kernel Library (oneMKL) Fortran 90 interface for preconditioners,
- ! RCI ISS and TR solvers routines
- !******************************************************************************
- MODULE MKL_RCI_TYPE
- TYPE , PUBLIC :: HANDLE_TR
- INTEGER N
- INTEGER M
- INTEGER*8 HANDLE
- END TYPE HANDLE_TR
- END MODULE
- MODULE MKL_RCI
- USE MKL_RCI_TYPE
- ! PARAMETERS
- INTEGER(KIND=4), PARAMETER :: TR_SUCCESS = 1501
- INTEGER(KIND=4), PARAMETER :: TR_INVALID_OPTION = 1502
- INTEGER(KIND=4), PARAMETER :: TR_OUT_OF_MEMORY = 1503
- ! SUBROUTINES
- INTERFACE
- SUBROUTINE DCG(n,x,b,rci_request,ipar,dpar,tmp)
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(OUT) :: rci_request
- INTEGER, INTENT(INOUT), DIMENSION(*) :: ipar
- DOUBLE PRECISION, INTENT(INOUT), DIMENSION(*) :: x
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: b
- DOUBLE PRECISION, INTENT(INOUT), DIMENSION(*) :: dpar
- DOUBLE PRECISION, INTENT(INOUT), DIMENSION(n,*) :: tmp
- END SUBROUTINE
- END INTERFACE
- INTERFACE
- SUBROUTINE DCG_INIT(n,x,b,rci_request,ipar,dpar,tmp)
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(OUT) :: rci_request
- INTEGER, INTENT(OUT), DIMENSION(*) :: ipar
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: x
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: b
- DOUBLE PRECISION, INTENT(OUT), DIMENSION(*) :: dpar
- DOUBLE PRECISION, INTENT(OUT), DIMENSION(n,*) :: tmp
- END SUBROUTINE
- END INTERFACE
- INTERFACE
- SUBROUTINE DCG_CHECK(n,x,b,rci_request,ipar,dpar,tmp)
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(OUT) :: rci_request
- INTEGER, INTENT(INOUT), DIMENSION(*) :: ipar
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: x
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: b
- DOUBLE PRECISION, INTENT(OUT), DIMENSION(*) :: dpar
- DOUBLE PRECISION, INTENT(OUT), DIMENSION(n,*) :: tmp
- END SUBROUTINE
- END INTERFACE
- INTERFACE
- SUBROUTINE DCG_GET(n,x,b,rci_request,ipar,dpar,tmp,itercount)
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(IN) :: rci_request
- INTEGER, INTENT(OUT) :: itercount
- INTEGER, INTENT(IN), DIMENSION(*) :: ipar
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: x
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: b
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: dpar
- DOUBLE PRECISION, INTENT(IN), DIMENSION(n,*) :: tmp
- END SUBROUTINE
- END INTERFACE
- INTERFACE
- SUBROUTINE DCSRILU0(n,a,ia,ja,alu,ipar,dpar,ierr)
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(OUT) :: ierr
- INTEGER, INTENT(IN), DIMENSION(*) :: ia, ja, ipar
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: a, dpar
- DOUBLE PRECISION, INTENT(OUT), DIMENSION(*) :: alu
- END SUBROUTINE
- END INTERFACE
- INTERFACE
- SUBROUTINE DCSRILUT(n,a,ia,ja,alut,ialut,jalut,tol,maxfil,ipar,dpar,ierr)
- INTEGER, INTENT(IN) :: n, maxfil
- INTEGER, INTENT(OUT) :: ierr
- DOUBLE PRECISION, INTENT(IN) :: tol
- INTEGER, INTENT(IN), DIMENSION(*) :: ia, ja, ipar
- INTEGER, INTENT(OUT), DIMENSION(*) :: jalut, ialut
- DOUBLE PRECISION, INTENT(OUT), DIMENSION(*) :: alut
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: a, dpar
- END SUBROUTINE
- END INTERFACE
- INTERFACE
- SUBROUTINE DFGMRES(n,x,b,rci_request,ipar,dpar,tmp)
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(OUT) :: rci_request
- INTEGER, INTENT(INOUT), DIMENSION(*) :: ipar
- DOUBLE PRECISION, INTENT(INOUT), DIMENSION(*) :: x
- DOUBLE PRECISION, INTENT(INOUT), DIMENSION(*) :: b
- DOUBLE PRECISION, INTENT(INOUT), DIMENSION(*) :: dpar
- DOUBLE PRECISION, INTENT(INOUT), DIMENSION(*) :: tmp
- END SUBROUTINE
- END INTERFACE
- INTERFACE
- SUBROUTINE DFGMRES_INIT(n,x,b,rci_request,ipar,dpar,tmp)
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(OUT) :: rci_request
- INTEGER, INTENT(OUT), DIMENSION(*) :: ipar
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: x
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: b
- DOUBLE PRECISION, INTENT(OUT), DIMENSION(*) :: dpar
- DOUBLE PRECISION, INTENT(OUT), DIMENSION(*) :: tmp
- END SUBROUTINE
- END INTERFACE
- INTERFACE
- SUBROUTINE DFGMRES_CHECK(n,x,b,rci_request,ipar,dpar,tmp)
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(OUT) :: rci_request
- INTEGER, INTENT(INOUT), DIMENSION(*) :: ipar
- DOUBLE PRECISION, INTENT(IN) , DIMENSION(*) :: x
- DOUBLE PRECISION, INTENT(IN) , DIMENSION(*) :: b
- DOUBLE PRECISION, INTENT(INOUT), DIMENSION(*) :: dpar
- DOUBLE PRECISION, INTENT(OUT) , DIMENSION(*) :: tmp
- END SUBROUTINE
- END INTERFACE
- INTERFACE
- SUBROUTINE DFGMRES_GET(n,x,b,rci_request,ipar,dpar,tmp,itercount)
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(OUT) :: rci_request
- INTEGER, INTENT(OUT) :: itercount
- INTEGER, INTENT(IN), DIMENSION(*) :: ipar
- DOUBLE PRECISION, INTENT(OUT), DIMENSION(*) :: x
- DOUBLE PRECISION, INTENT(OUT), DIMENSION(*) :: b
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: dpar
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: tmp
- END SUBROUTINE
- END INTERFACE
- INTERFACE
- SUBROUTINE DCGMRHS(n,x,nRhs,b,rci_request,ipar,dpar,tmp)
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(IN) :: nRhs
- INTEGER, INTENT(OUT) :: rci_request
- INTEGER, INTENT(INOUT), DIMENSION(*) :: ipar
- DOUBLE PRECISION, INTENT(INOUT), DIMENSION(n,*) :: x
- DOUBLE PRECISION, INTENT(IN), DIMENSION(nRhs,*) :: b
- DOUBLE PRECISION, INTENT(INOUT), DIMENSION(n,*) :: tmp
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: dpar
- END SUBROUTINE
- END INTERFACE
- INTERFACE
- SUBROUTINE DCGMRHS_INIT(n,x,nRhs,b,method,rci_request,ipar,dpar,tmp)
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(IN) :: nRhs
- INTEGER, INTENT(IN) :: method
- INTEGER, INTENT(OUT) :: rci_request
- INTEGER, INTENT(OUT), DIMENSION(*) :: ipar
- DOUBLE PRECISION, INTENT(IN), DIMENSION(n,*) :: x
- DOUBLE PRECISION, INTENT(IN), DIMENSION(nRhs,*) :: b
- DOUBLE PRECISION, INTENT(OUT), DIMENSION(n,*) :: tmp
- DOUBLE PRECISION, INTENT(OUT), DIMENSION(*) :: dpar
- END SUBROUTINE
- END INTERFACE
- INTERFACE
- SUBROUTINE DCGMRHS_CHECK(n,x,nRhs,b,rci_request,ipar,dpar,tmp)
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(IN) :: nRhs
- INTEGER, INTENT(OUT) :: rci_request
- INTEGER, INTENT(INOUT), DIMENSION(*) :: ipar
- DOUBLE PRECISION, INTENT(IN), DIMENSION(n,*) :: x
- DOUBLE PRECISION, INTENT(IN), DIMENSION(nRhs,*) :: b
- DOUBLE PRECISION, INTENT(OUT), DIMENSION(n,*) :: tmp
- DOUBLE PRECISION, INTENT(INOUT), DIMENSION(*) :: dpar
- END SUBROUTINE
- END INTERFACE
- INTERFACE
- SUBROUTINE DCGMRHS_GET(n,x,nRhs,b,rci_request,ipar,dpar,tmp,itercount)
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(IN) :: nRhs
- INTEGER, INTENT(IN) :: rci_request
- INTEGER, INTENT(OUT) :: itercount
- INTEGER, INTENT(IN), DIMENSION(*) :: ipar
- DOUBLE PRECISION, INTENT(IN), DIMENSION(n,*) :: x
- DOUBLE PRECISION, INTENT(IN), DIMENSION(nRhs,*) :: b
- DOUBLE PRECISION, INTENT(IN), DIMENSION(n,*) :: tmp
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: dpar
- END SUBROUTINE
- END INTERFACE
- ! FUNCTIONS
- INTERFACE
- INTEGER FUNCTION DTRNLSP_INIT(handle, n, m, x, eps, iter1, iter2, rs)
- USE MKL_RCI_TYPE
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(IN) :: m
- INTEGER, INTENT(IN) :: iter1
- INTEGER, INTENT(IN) :: iter2
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: x
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: eps
- DOUBLE PRECISION, INTENT(IN) :: rs
- TYPE(HANDLE_TR), INTENT(OUT) :: handle
- END FUNCTION
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION DTRNLSP_CHECK(handle, n, m, fjac, fvec, eps, info)
- USE MKL_RCI_TYPE
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(IN) :: m
- INTEGER, INTENT(OUT), DIMENSION(*):: info
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: fvec
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: eps
- DOUBLE PRECISION, INTENT(IN), DIMENSION(m, *) :: fjac
- TYPE(HANDLE_TR), INTENT(IN) :: handle
- END FUNCTION
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION DTRNLSP_SOLVE(handle, fvec, fjac, rci_request)
- USE MKL_RCI_TYPE
- INTEGER, INTENT(OUT) :: rci_request
- DOUBLE PRECISION, INTENT(INOUT), DIMENSION(*) :: fvec
- TYPE(HANDLE_TR), INTENT(IN) :: handle
- DOUBLE PRECISION, INTENT(IN), DIMENSION(handle%m, *) :: fjac
- END FUNCTION
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION DTRNLSP_GET(handle, iter, st_cr, r1, r2)
- USE MKL_RCI_TYPE
- INTEGER, INTENT(OUT) :: iter
- INTEGER, INTENT(OUT) :: st_cr
- DOUBLE PRECISION, INTENT(OUT) :: r1
- DOUBLE PRECISION, INTENT(OUT) :: r2
- TYPE(HANDLE_TR), INTENT(IN) :: handle
- END FUNCTION
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION DTRNLSP_DELETE(handle)
- USE MKL_RCI_TYPE
- TYPE(HANDLE_TR), INTENT(INOUT) :: handle
- END FUNCTION
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION DTRNLSPBC_INIT(handle, n, m, x, low, up, e, iter1, iter2, rs)
- USE MKL_RCI_TYPE
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(IN) :: m
- INTEGER, INTENT(IN) :: iter1
- INTEGER, INTENT(IN) :: iter2
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: x
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: low
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: up
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: e
- DOUBLE PRECISION, INTENT(IN) :: rs
- TYPE(HANDLE_TR), INTENT(OUT) :: handle
- END FUNCTION
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION DTRNLSPBC_CHECK(handle, n, m, fjac, fvec, low, up, eps, info)
- USE MKL_RCI_TYPE
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(IN) :: m
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: fvec
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: low
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: up
- DOUBLE PRECISION, INTENT(IN), DIMENSION(m, *) :: fjac
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: eps
- INTEGER, INTENT(OUT), DIMENSION(*):: info
- TYPE(HANDLE_TR), INTENT(IN) :: handle
- END FUNCTION
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION DTRNLSPBC_SOLVE(handle, fvec, fjac, rci_request)
- USE MKL_RCI_TYPE
- INTEGER, INTENT(OUT) :: rci_request
- DOUBLE PRECISION, INTENT(INOUT), DIMENSION(*) :: fvec
- TYPE(HANDLE_TR), INTENT(IN) :: handle
- DOUBLE PRECISION, INTENT(IN), DIMENSION(handle%m, *) :: fjac
- END FUNCTION
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION DTRNLSPBC_GET(handle, iter, st_cr, r1, r2)
- USE MKL_RCI_TYPE
- INTEGER, INTENT(OUT) :: iter
- INTEGER, INTENT(OUT) :: st_cr
- DOUBLE PRECISION, INTENT(OUT) :: r1
- DOUBLE PRECISION, INTENT(OUT) :: r2
- TYPE(HANDLE_TR), INTENT(IN) :: handle
- END FUNCTION
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION DTRNLSPBC_DELETE(handle)
- USE MKL_RCI_TYPE
- TYPE(HANDLE_TR), INTENT(INOUT) :: handle
- END FUNCTION
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION DJACOBI_INIT(handle, n, m, x, fjac, eps)
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(IN) :: m
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: x
- DOUBLE PRECISION, INTENT(IN), DIMENSION(m, *) :: fjac
- DOUBLE PRECISION, INTENT(IN) :: eps
- INTEGER(KIND=8), INTENT(OUT) :: handle
- END FUNCTION
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION DJACOBI_SOLVE(handle, f1, f2, rci_request)
- INTEGER, INTENT(OUT) :: rci_request
- DOUBLE PRECISION, INTENT(OUT), DIMENSION(*) :: f1
- DOUBLE PRECISION, INTENT(OUT), DIMENSION(*) :: f2
- INTEGER(KIND=8), INTENT(IN) :: handle
- END FUNCTION
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION DJACOBI_DELETE(handle)
- INTEGER(KIND=8), INTENT(INOUT) :: handle
- END FUNCTION
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION DJACOBI(fcn, n, m, fjac, x, eps)
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(IN) :: m
- DOUBLE PRECISION, INTENT(IN) :: eps
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: x
- DOUBLE PRECISION, INTENT(OUT), DIMENSION(m, *) :: fjac
- INTERFACE
- SUBROUTINE fcn(m, n, x, f)
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(IN) :: m
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: x
- DOUBLE PRECISION, INTENT(OUT), DIMENSION(*) :: f
- END SUBROUTINE
- END INTERFACE
- END FUNCTION
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION DJACOBIX(fcn, n, m, fjac, x, eps, user_data)
- USE, INTRINSIC :: ISO_C_BINDING
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(IN) :: m
- DOUBLE PRECISION, INTENT(IN) :: eps
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: x
- DOUBLE PRECISION, INTENT(OUT), DIMENSION(m, *) :: fjac
- INTEGER(C_INTPTR_T) :: user_data
- INTERFACE
- SUBROUTINE fcn(m, n, x, f, user_data)
- USE, INTRINSIC :: ISO_C_BINDING
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(IN) :: m
- DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: x
- DOUBLE PRECISION, INTENT(OUT), DIMENSION(*) :: f
- INTEGER(C_INTPTR_T), INTENT(IN) :: user_data
- END SUBROUTINE
- END INTERFACE
- END FUNCTION
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION STRNLSP_INIT(handle, n, m, x, eps, iter1, iter2, rs)
- USE MKL_RCI_TYPE
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(IN) :: m
- INTEGER, INTENT(IN) :: iter1
- INTEGER, INTENT(IN) :: iter2
- REAL, INTENT(IN), DIMENSION(*) :: x
- REAL, INTENT(IN), DIMENSION(*) :: eps
- REAL, INTENT(IN) :: rs
- TYPE(HANDLE_TR), INTENT(OUT) :: handle
- END FUNCTION
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION STRNLSP_CHECK(handle, n, m, fjac, fvec, eps, info)
- USE MKL_RCI_TYPE
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(IN) :: m
- INTEGER, INTENT(OUT), DIMENSION(*):: info
- REAL, INTENT(IN), DIMENSION(*) :: fvec
- REAL, INTENT(IN), DIMENSION(*) :: eps
- REAL, INTENT(IN), DIMENSION(m, *) :: fjac
- TYPE(HANDLE_TR), INTENT(IN) :: handle
- END FUNCTION
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION STRNLSP_SOLVE(handle, fvec, fjac, rci_request)
- USE MKL_RCI_TYPE
- INTEGER, INTENT(OUT) :: rci_request
- REAL, INTENT(INOUT), DIMENSION(*) :: fvec
- TYPE(HANDLE_TR), INTENT(IN) :: handle
- REAL, INTENT(IN), DIMENSION(handle%m, *) :: fjac
- END FUNCTION
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION STRNLSP_GET(handle, iter, st_cr, r1, r2)
- USE MKL_RCI_TYPE
- INTEGER, INTENT(OUT) :: iter
- INTEGER, INTENT(OUT) :: st_cr
- REAL, INTENT(OUT) :: r1
- REAL, INTENT(OUT) :: r2
- TYPE(HANDLE_TR), INTENT(IN) :: handle
- END FUNCTION
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION STRNLSP_DELETE(handle)
- USE MKL_RCI_TYPE
- TYPE(HANDLE_TR), INTENT(IN) :: handle
- END FUNCTION
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION STRNLSPBC_INIT(handle, n, m, x, low, up, e, iter1, iter2, rs)
- USE MKL_RCI_TYPE
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(IN) :: m
- INTEGER, INTENT(IN) :: iter1
- INTEGER, INTENT(IN) :: iter2
- REAL, INTENT(IN), DIMENSION(*) :: x
- REAL, INTENT(IN), DIMENSION(*) :: low
- REAL, INTENT(IN), DIMENSION(*) :: up
- REAL, INTENT(IN), DIMENSION(*) :: e
- REAL, INTENT(IN) :: rs
- TYPE(HANDLE_TR), INTENT(OUT) :: handle
- END FUNCTION
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION STRNLSPBC_CHECK(handle, n, m, fjac, fvec, low, up, eps, info)
- USE MKL_RCI_TYPE
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(IN) :: m
- REAL, INTENT(IN), DIMENSION(*) :: fvec
- REAL, INTENT(IN), DIMENSION(*) :: low
- REAL, INTENT(IN), DIMENSION(*) :: up
- REAL, INTENT(IN), DIMENSION(m, *) :: fjac
- REAL, INTENT(IN), DIMENSION(*) :: eps
- INTEGER, INTENT(OUT), DIMENSION(*):: info
- TYPE(HANDLE_TR), INTENT(OUT) :: handle
- END FUNCTION
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION STRNLSPBC_SOLVE(handle, fvec, fjac, rci_request)
- USE MKL_RCI_TYPE
- INTEGER, INTENT(OUT) :: rci_request
- REAL, INTENT(INOUT), DIMENSION(*) :: fvec
- TYPE(HANDLE_TR), INTENT(IN) :: handle
- REAL, INTENT(IN), DIMENSION(handle%m, *) :: fjac
- END FUNCTION
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION STRNLSPBC_GET(handle, iter, st_cr, r1, r2)
- USE MKL_RCI_TYPE
- INTEGER, INTENT(OUT) :: iter
- INTEGER, INTENT(OUT) :: st_cr
- REAL, INTENT(OUT) :: r1
- REAL, INTENT(OUT) :: r2
- TYPE(HANDLE_TR), INTENT(IN) :: handle
- END FUNCTION
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION STRNLSPBC_DELETE(handle)
- USE MKL_RCI_TYPE
- TYPE(HANDLE_TR), INTENT(IN) :: handle
- END FUNCTION
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION SJACOBI_INIT(handle, n, m, x, fjac, eps)
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(IN) :: m
- REAL, INTENT(IN), DIMENSION(*) :: x
- REAL, INTENT(IN), DIMENSION(m, *) :: fjac
- REAL, INTENT(IN) :: eps
- INTEGER(KIND=8), INTENT(OUT) :: handle
- END FUNCTION
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION SJACOBI_SOLVE(handle, f1, f2, rci_request)
- INTEGER, INTENT(OUT) :: rci_request
- REAL, INTENT(OUT), DIMENSION(*) :: f1
- REAL, INTENT(OUT), DIMENSION(*) :: f2
- INTEGER(KIND=8), INTENT(IN) :: handle
- END FUNCTION
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION SJACOBI_DELETE(handle)
- INTEGER(KIND=8), INTENT(IN) :: handle
- END FUNCTION
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION SJACOBI(fcn, n, m, fjac, x, eps)
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(IN) :: m
- REAL, INTENT(IN) :: eps
- REAL, INTENT(IN), DIMENSION(*) :: x
- REAL, INTENT(OUT), DIMENSION(m, *) :: fjac
- INTERFACE
- SUBROUTINE fcn(m, n, x, f)
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(IN) :: m
- REAL, INTENT(IN), DIMENSION(*) :: x
- REAL, INTENT(OUT), DIMENSION(*) :: f
- END SUBROUTINE
- END INTERFACE
- END FUNCTION
- END INTERFACE
- INTERFACE
- INTEGER FUNCTION SJACOBIX(fcn, n, m, fjac, x, eps, user_data)
- USE, INTRINSIC :: ISO_C_BINDING
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(IN) :: m
- REAL, INTENT(IN) :: eps
- REAL, INTENT(IN), DIMENSION(*) :: x
- REAL, INTENT(OUT), DIMENSION(m, *) :: fjac
- INTEGER(C_INTPTR_T) :: user_data
- INTERFACE
- SUBROUTINE fcn(m, n, x, f, user_data)
- USE, INTRINSIC :: ISO_C_BINDING
- INTEGER, INTENT(IN) :: n
- INTEGER, INTENT(IN) :: m
- REAL, INTENT(IN), DIMENSION(*) :: x
- REAL, INTENT(OUT), DIMENSION(*) :: f
- INTEGER(C_INTPTR_T), INTENT(IN) :: user_data
- END SUBROUTINE
- END INTERFACE
- END FUNCTION
- END INTERFACE
- END MODULE
|