110 lines
4.7 KiB
FortranFixed
110 lines
4.7 KiB
FortranFixed
|
!#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
!# Author: Piyush Agram
|
||
|
!# Copyright 2014, by the California Institute of Technology. ALL RIGHTS RESERVED.
|
||
|
!# United States Government Sponsorship acknowledged.
|
||
|
!# Any commercial use must be negotiated with the Office of Technology Transfer at
|
||
|
!# the California Institute of Technology.
|
||
|
!# This software may be subject to U.S. export control laws.
|
||
|
!# By accepting this software, the user agrees to comply with all applicable U.S.
|
||
|
!# export laws and regulations. User has the responsibility to obtain export licenses,
|
||
|
!# or other export authority as may be required before exporting such information to
|
||
|
!# foreign countries or providing access to foreign persons.
|
||
|
!#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
|
||
|
module poly1dModule
|
||
|
use, intrinsic:: iso_c_binding
|
||
|
implicit none
|
||
|
|
||
|
type, bind(C) :: poly1dType
|
||
|
integer(C_INT) :: order !c poly1d order
|
||
|
real(C_DOUBLE) :: mean !c Mean
|
||
|
real(C_DOUBLE) :: norm !c Norm
|
||
|
type(C_PTR) :: coeffs !c Pointer to array of coeffs
|
||
|
end type poly1dType
|
||
|
|
||
|
interface
|
||
|
|
||
|
function evalPoly1d_f(poly,x)BIND(C,NAME='evalPoly1d')
|
||
|
use, intrinsic :: iso_c_binding
|
||
|
import :: poly1dType
|
||
|
type(poly1dType) :: poly
|
||
|
real(C_DOUBLE), value :: x
|
||
|
real(C_DOUBLE) :: evalPoly1d_f
|
||
|
end function evalPoly1d_f
|
||
|
|
||
|
subroutine modifyMean1d_f(src,targ,off)BIND(C,NAME='modifyMean1d')
|
||
|
use, intrinsic :: iso_c_binding
|
||
|
import :: poly1dType
|
||
|
type(poly1dType) :: src, targ
|
||
|
real(C_DOUBLE), value :: off
|
||
|
end subroutine modifyMean1d_f
|
||
|
|
||
|
subroutine modifyNorm1d_f(src,targ,norm)BIND(C,NAME='modifyNorm1d')
|
||
|
use, intrinsic :: iso_c_binding
|
||
|
import:: poly1dType
|
||
|
type(poly1dType) :: src, targ
|
||
|
real(C_DOUBLE), value :: norm
|
||
|
end subroutine modifyNorm1d_f
|
||
|
|
||
|
subroutine scalepoly1d_f(src,targ,naz,maz)BIND(C,NAME='scalePoly1d')
|
||
|
use, intrinsic :: iso_c_binding
|
||
|
import:: poly1dType
|
||
|
type(poly1dType) :: src, targ
|
||
|
real(C_DOUBLE), value:: naz, maz
|
||
|
end subroutine scalepoly1d_f
|
||
|
|
||
|
subroutine setCoeff1d_f(src,i,val)BIND(C,NAME='setCoeff1d')
|
||
|
use, intrinsic :: iso_c_binding
|
||
|
import:: poly1dType
|
||
|
type(poly1dType) :: src
|
||
|
integer(C_INT), value :: i
|
||
|
real(C_DOUBLE), value :: val
|
||
|
end subroutine setCoeff1d_f
|
||
|
|
||
|
function getCoeff1d_f(src,i)BIND(C,NAME='getCoeff1d')
|
||
|
use, intrinsic :: iso_c_binding
|
||
|
import :: poly1dType
|
||
|
type(poly1dType) :: src
|
||
|
integer(C_INT), value :: i
|
||
|
real(C_DOUBLE) :: getCoeff1d_f
|
||
|
end function getCoeff1d_f
|
||
|
|
||
|
!!Not to be used in fortran
|
||
|
function createpoly1d_f(az)BIND(C,NAME='createPoly1d')
|
||
|
use, intrinsic :: iso_c_binding
|
||
|
import :: poly1dType
|
||
|
type(poly1dType) :: createpoly1d_f
|
||
|
integer(C_INT), value :: az
|
||
|
end function createpoly1d_f
|
||
|
|
||
|
subroutine initpoly1d_f(poly,az)BIND(C,NAME='initPoly1d')
|
||
|
use, intrinsic :: iso_c_binding
|
||
|
import :: poly1dType
|
||
|
type(poly1dType) :: poly
|
||
|
integer(C_INT), value :: az
|
||
|
end subroutine initpoly1d_f
|
||
|
|
||
|
subroutine cleanpoly1d_f(poly)BIND(C,NAME='cleanPoly1d')
|
||
|
use, intrinsic :: iso_c_binding
|
||
|
import :: poly1dType
|
||
|
type(poly1dType) :: poly
|
||
|
end subroutine cleanpoly1d_f
|
||
|
|
||
|
!!Not to be really used in Fortran
|
||
|
subroutine deletepoly1d_f(poly)BIND(C,NAME='deletePoly1d')
|
||
|
use, intrinsic :: iso_c_binding
|
||
|
import :: poly1dType
|
||
|
type(poly1dType) :: poly
|
||
|
end subroutine deletepoly1d_f
|
||
|
|
||
|
subroutine printpoly1d_f(poly)BIND(C,NAME='printPoly1d')
|
||
|
use, intrinsic :: iso_c_binding
|
||
|
import :: poly1dType
|
||
|
type(poly1dType) :: poly
|
||
|
end subroutine printpoly1d_f
|
||
|
|
||
|
end interface
|
||
|
|
||
|
end module poly1dModule
|
||
|
|