subroutine chebsolve
! Variables
integer, intent(in) :: flag1
integer, intent(in) :: flag2
integer, intent(in) :: fdim1
integer, intent(in) :: fdim2
integer, intent(in) :: n1
integer, intent(in) :: m1
integer, intent(in) :: svartype
double precision, intent(in) :: alpha
double precision, intent(in) :: beta
double precision, intent(inout), dimension (0:n1-1,0:m1-1) :: f
integer :: odd
integer :: even
integer :: dim1
integer :: dim2
integer :: retning
integer :: flag3
integer :: flag4
integer :: i
integer :: j
integer :: ny
integer :: runbefore
integer, save :: counter = 0
integer, save :: forrige_n1 = 0
integer, save :: forrige_m1 = 0
real, dimension (2) :: tt
real :: start
real :: slutt
real :: mflops
double precision, dimension (0:n1-1,0:m1-1) :: u
double precision, dimension(:), allocatable, save :: cosn
double precision, dimension(:), allocatable, save :: cosm
double precision :: pi
double precision, dimension(:), allocatable, save :: d1
double precision, dimension(:), allocatable, save :: p1
double precision, dimension(:,:), allocatable, save :: a1
double precision, dimension(:,:), allocatable, save :: a2
double precision, dimension(:,:), allocatable, save :: c1
double precision, dimension(:,:), allocatable, save :: c2
double precision, dimension(:), allocatable, save :: d2
double precision, dimension(:), allocatable, save :: p2
double precision, dimension(:,:), allocatable, save :: Id1
double precision, dimension(:,:), allocatable, save :: Id1inv
double precision, dimension(:,:), allocatable, save :: Id2
double precision, dimension(:,:), allocatable, save :: Id2inv
double precision, dimension(:), allocatable, save :: Diag1
double precision, dimension(:), allocatable, save :: Diag2
end subroutine chebsolve
subroutine chebsolve(n1,m1,alpha,beta,f,flag1,flag2,fdim1,fdim2,svartype)
Solve the 2D Helmholtz equation: alpha*u - u_xx - beta u_yy= f with homogeneous Dirichlet B.C. in IxI.
Input:
Author: Jan Ivar Moldekleiv
Version: 0.8
integer, intent(in) :: flag1Parameters generated in startup. Will be moved inside the subroutine in the next version
integer, intent(in) :: flag2Parameters generated in startup. Will be moved inside the subroutine in the next version
integer, intent(in) :: fdim1Parameters generated in startup. Will be moved inside the subroutine in the next version
integer, intent(in) :: fdim2Parameters generated in startup. Will be moved inside the subroutine in the next version
integer, intent(in) :: n1The dimensions of the righthandside f(n1,m1)
integer, intent(in) :: m1The dimensions of the righthandside f(n1,m1)
integer, intent(in) :: svartypeType of answer. Not implemented yet. Use 1
double precision, intent(in) :: alphaParameters in the Helmholtz equation
double precision, intent(in) :: betaParameters in the Helmholtz equation
double precision, intent(inout), dimension (0:n1-1,0:m1-1) :: fThe righthandside at input. Solution at output.
integer :: odd
integer :: even
integer :: dim1
integer :: dim2
integer :: retning
integer :: flag3
integer :: flag4
integer :: i
integer :: j
integer :: ny
integer :: runbefore
integer, save :: counter = 0
integer, save :: forrige_n1 = 0
integer, save :: forrige_m1 = 0
real, dimension (2) :: tt
real :: start
real :: slutt
real :: mflops
double precision, dimension (0:n1-1,0:m1-1) :: u
double precision, dimension(:), allocatable, save :: cosn
double precision, dimension(:), allocatable, save :: cosm
double precision :: pi
double precision, dimension(:), allocatable, save :: d1
double precision, dimension(:), allocatable, save :: p1
double precision, dimension(:,:), allocatable, save :: a1
double precision, dimension(:,:), allocatable, save :: a2
double precision, dimension(:,:), allocatable, save :: c1
double precision, dimension(:,:), allocatable, save :: c2
double precision, dimension(:), allocatable, save :: d2
double precision, dimension(:), allocatable, save :: p2
double precision, dimension(:,:), allocatable, save :: Id1
double precision, dimension(:,:), allocatable, save :: Id1inv
double precision, dimension(:,:), allocatable, save :: Id2
double precision, dimension(:,:), allocatable, save :: Id2inv
double precision, dimension(:), allocatable, save :: Diag1
double precision, dimension(:), allocatable, save :: Diag2