Subroutine cld_btri

subroutine cld_btri

        ! 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
    double precision, intent(in) :: rm
    double precision, intent(in) :: beta
    double precision, intent(inout), dimension (0:nf,0:m1) :: f
    double precision, intent(inout), dimension (0:n1,0:n1) :: u
    double precision, intent(inout), dimension (3*(m1-1),0:n1-2) :: ws
    integer :: i
    integer :: j
    integer :: k
    integer :: m
    integer :: m2
    integer :: n
    integer :: n2
    double precision, dimension (0:fdim1,0:fdim2) :: ainit1
    double precision, dimension (0:fdim1-flag1,0:fdim2-flag1) :: ainit2
    double precision, dimension (0:fdim1,0:fdim2) :: binit1
    double precision, dimension (0:fdim1-flag1,0:fdim2-flag1) :: binit2
    double precision, dimension (n1/2+1) :: ec
    double precision, dimension (0:n1/2+1) :: er
    double precision, dimension (n1/2) :: oc
    double precision, dimension (0:n1/2) :: or
    double precision, dimension (n1/2+1,n1/2+1) :: y
    double precision, dimension (0:n1) :: w
    double precision, dimension (4*m1**2) :: wk
    double precision, dimension (0:nf,0:m1) :: la
    double precision :: pi
    real, dimension (2) :: tt

end subroutine cld_btri
subroutine cld_btri(n1,m1,rm,beta,f,nf,u,nu,ws,init,flag1,flag2,fdim1,fdim2)

Solve the 2D Helmholtz equation rm*u -u_xx -beta u_yy = f with homogeneous Diriclet Boundary Conditions. in IxI by using the Chebychev-Legendre method with blocktridiagonal 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

rm

double precision, intent(in) :: rm

beta

double precision, intent(in) :: beta

f

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

u

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

ws

double precision, intent(inout), dimension (3*(m1-1),0:n1-2) :: ws

i

integer :: i

j

integer :: j

k

integer :: k

m

integer :: m

m2

integer :: m2

n

integer :: n

n2

integer :: n2

ainit1

double precision, dimension (0:fdim1,0:fdim2) :: ainit1

ainit2

double precision, dimension (0:fdim1-flag1,0:fdim2-flag1) :: ainit2

binit1

double precision, dimension (0:fdim1,0:fdim2) :: binit1

binit2

double precision, dimension (0:fdim1-flag1,0:fdim2-flag1) :: binit2

ec

double precision, dimension (n1/2+1) :: ec

er

double precision, dimension (0:n1/2+1) :: er

oc

double precision, dimension (n1/2) :: oc

or

double precision, dimension (0:n1/2) :: or

y

double precision, dimension (n1/2+1,n1/2+1) :: y

w

double precision, dimension (0:n1) :: w

wk

double precision, dimension (4*m1**2) :: wk

la

double precision, dimension (0:nf,0:m1) :: la

pi

double precision :: pi

tt

real, dimension (2) :: tt