Subroutine cln

subroutine cln

        ! Variables
    integer, intent(in) :: n1
    integer, intent(in) :: m1
    integer, intent(in) :: nf
    integer, intent(in) :: nu
    integer, intent(in) :: init
    integer, intent(in) :: flag1
    integer, intent(in) :: flag2
    integer, intent(in) :: fdim1
    integer, intent(in) :: fdim2
    integer, intent(in) :: mx
    double precision, intent(in) :: rm
    double precision, intent(in) :: beta
    double precision, intent(in), dimension (fdim1,fdim1) :: e1
    double precision, intent(in), dimension (fdim1-flag1,fdim1-flag1) :: e2
    double precision, intent(in), dimension (fdim1) :: w1
    double precision, intent(in), dimension (fdim1-flag1) :: w2
    double precision, intent(in), dimension (0:mx) :: aa
    double precision, intent(in), dimension (0:mx) :: ww
    double precision, intent(inout), dimension (0:nu,0:m1) :: u
    double precision, intent(inout), dimension (0:nf,0:m1) :: f
    integer :: i
    integer :: j
    integer :: k
    integer :: m
    integer :: m2
    integer :: n
    integer :: n2
    integer :: flag_1
    integer :: flag_2
    integer :: fdim_1
    integer :: fdim_2
    integer :: fdim_1a
    integer :: fdim_1b
    double precision, dimension(:,:), allocatable :: ainit1
    double precision, dimension(:,:), allocatable :: ainit2
    double precision, dimension(:,:), allocatable :: binit1
    double precision, dimension(:,:), allocatable :: binit2
    double precision, dimension (0:n1,0:m1) :: la
    double precision :: pi
    real, dimension (2) :: tt

end subroutine cln
subroutine cln(n1,m1,rm,beta,f,nf,u,nu,e1,e2,w1,w2,init,flag1,flag2,fdim1,fdim2,aa,ww,mx)

Solve the 2D Helmholtz equation rm*u -u_xx -beta u_yy = f with homogeneous Neumann Boundary Conditions. in IxI by using the Chebychev-Legendre method presented in [paper here] Input in Chebychev - calls The legendre solver after transform. Output in Chebychev

Input:

Output:

Author: Jan Ivar Moldekleiv

Version: 0.8


Description of Variables

n1

integer, intent(in) :: n1

m1

integer, intent(in) :: m1

nf

integer, intent(in) :: nf

nu

integer, intent(in) :: nu

init

integer, intent(in) :: init

flag1

integer, intent(in) :: flag1

flag2

integer, intent(in) :: flag2

fdim1

integer, intent(in) :: fdim1

fdim2

integer, intent(in) :: fdim2

mx

integer, intent(in) :: mx

rm

double precision, intent(in) :: rm

beta

double precision, intent(in) :: beta

e1

double precision, intent(in), dimension (fdim1,fdim1) :: e1

e2

double precision, intent(in), dimension (fdim1-flag1,fdim1-flag1) :: e2

w1

double precision, intent(in), dimension (fdim1) :: w1

w2

double precision, intent(in), dimension (fdim1-flag1) :: w2

aa

double precision, intent(in), dimension (0:mx) :: aa

ww

double precision, intent(in), dimension (0:mx) :: ww

u

double precision, intent(inout), dimension (0:nu,0:m1) :: u

f

double precision, intent(inout), dimension (0:nf,0:m1) :: f

i

integer :: i
Local variables

j

integer :: j
Local variables

k

integer :: k
Local variables

m

integer :: m
Local variables

m2

integer :: m2
Local variables

n

integer :: n
Local variables

n2

integer :: n2
Local variables

flag_1

integer :: flag_1
Local variables

flag_2

integer :: flag_2
Local variables

fdim_1

integer :: fdim_1
Local variables

fdim_2

integer :: fdim_2
Local variables

fdim_1a

integer :: fdim_1a
Local variables

fdim_1b

integer :: fdim_1b
Local variables

ainit1

double precision, dimension(:,:), allocatable :: ainit1
Local variables

ainit2

double precision, dimension(:,:), allocatable :: ainit2
Local variables

binit1

double precision, dimension(:,:), allocatable :: binit1
Local variables

binit2

double precision, dimension(:,:), allocatable :: binit2
Local variables

la

double precision, dimension (0:n1,0:m1) :: la
Local storage

pi

double precision :: pi
local constant

tt

real, dimension (2) :: tt
For timing purposes.