Subroutine ledhmz2

subroutine ledhmz2

        ! Variables
    integer, intent(in) :: n1
    integer, intent(in) :: m1
    integer, intent(in) :: nf
    integer, intent(in) :: nu
    integer, intent(in) :: flag1
    integer, intent(in) :: flag2
    integer, intent(in) :: fdim1
    integer, intent(in) :: fdim2
    integer, intent(in) :: init
    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(inout), dimension (0:nf,0:m1) :: f
    double precision, intent(inout), dimension (0:nu,0:m1) :: u
    integer :: i
    integer :: j
    integer :: m
    integer :: n
    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 :: val
    double precision :: rm1
    double precision :: rm2

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

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

Input:

Output: This routine is a internal part of the specpack package, but can be used directly if one is content with the input and output in spectral space. For more documentation regarding the use of the SpecPack package: see the package documentation.

Author: Jan Ivar Moldekleiv, Jie Shen

Version: 0.8


Description of Variables

n1

integer, intent(in) :: n1
Leading dimension of rh.side

m1

integer, intent(in) :: m1
Second dimension of rh. side

nf

integer, intent(in) :: nf
Leading dim. of array containing rh. side. nf >= n1

nu

integer, intent(in) :: nu
Leading dim. of array containing solution. nu >= n1

flag1

integer, intent(in) :: flag1
Determines the dimension of e1 & e2

flag2

integer, intent(in) :: flag2
Determines the dimension of e1 & e2

fdim1

integer, intent(in) :: fdim1
Determines the dimension of e1 & e2

fdim2

integer, intent(in) :: fdim2
Determines the dimension of e1 & e2

init

integer, intent(in) :: init
initialization flag: init=1, initialize ws

rm

double precision, intent(in) :: rm
The constant rm in the helmholtz equation.

beta

double precision, intent(in) :: beta
The constant beta in the helmholtz equation.

e1

double precision, intent(in), dimension (fdim1,fdim1) :: e1
First part of eigenfunctions from ledeig.

e2

double precision, intent(in), dimension (fdim1-flag1,fdim1-flag1) :: e2
Second part of eigenfunctions.

w1

double precision, intent(in), dimension (fdim1) :: w1
Eigenvalues from ledeig.

w2

double precision, intent(in), dimension (fdim1-flag1) :: w2
Second part of eigenvalues from ledeig.

f

double precision, intent(inout), dimension (0:nf,0:m1) :: f
The righthandside after letrfm2

u

double precision, intent(inout), dimension (0:nu,0:m1) :: u
The solution before letrfm2

i

integer :: i
Local variable

j

integer :: j
Local variable

m

integer :: m
Local variable

n

integer :: n
Local variable

f1

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

f2

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

f3

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

f4

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

ftmp1

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

ftmp2

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

ftmp3

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

ftmp4

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

val

double precision :: val
Local variable

rm1

double precision :: rm1
Local variable

rm2

double precision :: rm2
Local variable