Subroutine lenhmz2

subroutine lenhmz2

        ! Variables
    integer, intent(in) :: n1
    integer, intent(in) :: m1
    integer, intent(in) :: mx
    integer, intent(in) :: init
    integer, intent(in) :: flag1
    integer, intent(in) :: flag2
    integer, intent(in) :: fdim1
    integer, intent(in) :: fdim2
    double precision, intent(in) :: rm
    double precision, intent(in) :: beta
    double precision, intent(in), dimension (0:mx) :: aa
    double precision, intent(in), dimension (0:mx) :: ww
    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(inout), dimension (0:n1,0:m1) :: u
    double precision, intent(inout), dimension (0:n1,0:m1) :: f
    integer :: i
    integer :: j
    integer :: m
    integer :: n
    integer :: n2
    double precision, dimension (fdim1,fdim2) :: f1
    double precision, dimension (fdim1-flag1,fdim2) :: f2
    double precision, dimension (fdim1,fdim2-flag2) :: f3
    double precision, dimension (fdim1-flag1,fdim2-flag2) :: f4
    double precision, dimension (fdim1,fdim2) :: ftmp1
    double precision, dimension (fdim1-flag1,fdim2) :: ftmp2
    double precision, dimension (fdim1,fdim2-flag2) :: ftmp3
    double precision, dimension (fdim1-flag1,fdim2-flag2) :: ftmp4
    double precision, dimension (0:m1,3) :: ws
    double precision :: val
    double precision :: rm1
    double precision :: rm2
    double precision :: t1
    double precision :: t2
    double precision :: t3
    double precision :: t4
    real, dimension (2) :: tt

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

Solve the 2D Helmholtz equation: rm*u - u_xx - beta u_yy= f with homogeneous Neumann B.C.

Input:

Output: Basis: phi_i = ww(i) (L_i - aa(i) L_{i+2}) i=0,1,..., n1-2 (phi'i,phi' j)= Delta{ij} for i,j >= 1, ww(0)=1.

Author: Jan Ivar Moldekleiv, Jie Shen

Version: 0.8


Description of Variables

n1

integer, intent(in) :: n1

m1

integer, intent(in) :: m1

mx

integer, intent(in) :: mx

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

rm

double precision, intent(in) :: rm

beta

double precision, intent(in) :: beta

aa

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

ww

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

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

u

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

f

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

i

integer :: i

j

integer :: j

m

integer :: m

n

integer :: n

n2

integer :: n2

f1

double precision, dimension (fdim1,fdim2) :: f1

f2

double precision, dimension (fdim1-flag1,fdim2) :: f2

f3

double precision, dimension (fdim1,fdim2-flag2) :: f3

f4

double precision, dimension (fdim1-flag1,fdim2-flag2) :: f4

ftmp1

double precision, dimension (fdim1,fdim2) :: ftmp1

ftmp2

double precision, dimension (fdim1-flag1,fdim2) :: ftmp2

ftmp3

double precision, dimension (fdim1,fdim2-flag2) :: ftmp3

ftmp4

double precision, dimension (fdim1-flag1,fdim2-flag2) :: ftmp4

ws

double precision, dimension (0:m1,3) :: ws

val

double precision :: val

rm1

double precision :: rm1

rm2

double precision :: rm2

t1

double precision :: t1

t2

double precision :: t2

t3

double precision :: t3

t4

double precision :: t4

tt

real, dimension (2) :: tt