Subroutine chebsolve

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:

Output:

Author: Jan Ivar Moldekleiv

Version: 0.8


Description of Variables

flag1

integer, intent(in) :: flag1
Parameters generated in startup. Will be moved inside the subroutine in the next version

flag2

integer, intent(in) :: flag2
Parameters generated in startup. Will be moved inside the subroutine in the next version

fdim1

integer, intent(in) :: fdim1
Parameters generated in startup. Will be moved inside the subroutine in the next version

fdim2

integer, intent(in) :: fdim2
Parameters generated in startup. Will be moved inside the subroutine in the next version

n1

integer, intent(in) :: n1
The dimensions of the righthandside f(n1,m1)

m1

integer, intent(in) :: m1
The dimensions of the righthandside f(n1,m1)

svartype

integer, intent(in) :: svartype
Type of answer. Not implemented yet. Use 1

alpha

double precision, intent(in) :: alpha
Parameters in the Helmholtz equation

beta

double precision, intent(in) :: beta
Parameters in the Helmholtz equation

f

double precision, intent(inout), dimension (0:n1-1,0:m1-1) :: f
The righthandside at input. Solution at output.

odd

integer :: odd

even

integer :: even

dim1

integer :: dim1

dim2

integer :: dim2

retning

integer :: retning

flag3

integer :: flag3

flag4

integer :: flag4

i

integer :: i

j

integer :: j

ny

integer :: ny

runbefore

integer :: runbefore

counter

integer, save :: counter = 0

forrige_n1

integer, save :: forrige_n1 = 0

forrige_m1

integer, save :: forrige_m1 = 0

tt

real, dimension (2) :: tt

start

real :: start

slutt

real :: slutt

mflops

real :: mflops

u

double precision, dimension (0:n1-1,0:m1-1) :: u

cosn

double precision, dimension(:), allocatable, save :: cosn

cosm

double precision, dimension(:), allocatable, save :: cosm

pi

double precision :: pi

d1

double precision, dimension(:), allocatable, save :: d1

p1

double precision, dimension(:), allocatable, save :: p1

a1

double precision, dimension(:,:), allocatable, save :: a1

a2

double precision, dimension(:,:), allocatable, save :: a2

c1

double precision, dimension(:,:), allocatable, save :: c1

c2

double precision, dimension(:,:), allocatable, save :: c2

d2

double precision, dimension(:), allocatable, save :: d2

p2

double precision, dimension(:), allocatable, save :: p2

Id1

double precision, dimension(:,:), allocatable, save :: Id1

Id1inv

double precision, dimension(:,:), allocatable, save :: Id1inv

Id2

double precision, dimension(:,:), allocatable, save :: Id2

Id2inv

double precision, dimension(:,:), allocatable, save :: Id2inv

Diag1

double precision, dimension(:), allocatable, save :: Diag1

Diag2

double precision, dimension(:), allocatable, save :: Diag2