Fix matrix generation for samples

maint-1.1
sfilippone 11 months ago
parent 5fbdfb1436
commit fc34385341

@ -46,37 +46,37 @@ contains
! functions parametrizing the differential equation ! functions parametrizing the differential equation
! !
function b1(x,y) function b1(x,y)
use psb_base_mod, only : psb_dpk_, dzero, done implicit none
real(psb_dpk_) :: b1 real(psb_dpk_) :: b1
real(psb_dpk_), intent(in) :: x,y real(psb_dpk_), intent(in) :: x,y
b1 = dzero/1.414_psb_dpk_ b1 = dzero/1.414_psb_dpk_
end function b1 end function b1
function b2(x,y) function b2(x,y)
use psb_base_mod, only : psb_dpk_, dzero, done implicit none
real(psb_dpk_) :: b2 real(psb_dpk_) :: b2
real(psb_dpk_), intent(in) :: x,y real(psb_dpk_), intent(in) :: x,y
b2 = dzero/1.414_psb_dpk_ b2 = dzero/1.414_psb_dpk_
end function b2 end function b2
function c(x,y) function c(x,y)
use psb_base_mod, only : psb_dpk_, dzero, done implicit none
real(psb_dpk_) :: c real(psb_dpk_) :: c
real(psb_dpk_), intent(in) :: x,y real(psb_dpk_), intent(in) :: x,y
c = dzero c = dzero
end function c end function c
function a1(x,y) function a1(x,y)
use psb_base_mod, only : psb_dpk_, dzero, done implicit none
real(psb_dpk_) :: a1 real(psb_dpk_) :: a1
real(psb_dpk_), intent(in) :: x,y real(psb_dpk_), intent(in) :: x,y
a1=done*epsilon a1=done*epsilon
end function a1 end function a1
function a2(x,y) function a2(x,y)
use psb_base_mod, only : psb_dpk_, dzero, done implicit none
real(psb_dpk_) :: a2 real(psb_dpk_) :: a2
real(psb_dpk_), intent(in) :: x,y real(psb_dpk_), intent(in) :: x,y
a2=done*epsilon a2=done*epsilon
end function a2 end function a2
function g(x,y) function g(x,y)
use psb_base_mod, only : psb_dpk_, dzero, done implicit none
real(psb_dpk_) :: g real(psb_dpk_) :: g
real(psb_dpk_), intent(in) :: x,y real(psb_dpk_), intent(in) :: x,y
g = dzero g = dzero

@ -46,37 +46,37 @@ contains
! functions parametrizing the differential equation ! functions parametrizing the differential equation
! !
function b1_box(x,y) function b1_box(x,y)
use psb_base_mod, only : psb_dpk_, dzero, done implicit none
real(psb_dpk_) :: b1_box real(psb_dpk_) :: b1_box
real(psb_dpk_), intent(in) :: x,y real(psb_dpk_), intent(in) :: x,y
b1_box = done/1.414_psb_dpk_ b1_box = done/1.414_psb_dpk_
end function b1_box end function b1_box
function b2_box(x,y) function b2_box(x,y)
use psb_base_mod, only : psb_dpk_, dzero, done implicit none
real(psb_dpk_) :: b2_box real(psb_dpk_) :: b2_box
real(psb_dpk_), intent(in) :: x,y real(psb_dpk_), intent(in) :: x,y
b2_box = done/1.414_psb_dpk_ b2_box = done/1.414_psb_dpk_
end function b2_box end function b2_box
function c_box(x,y) function c_box(x,y)
use psb_base_mod, only : psb_dpk_, dzero, done implicit none
real(psb_dpk_) :: c_box real(psb_dpk_) :: c_box
real(psb_dpk_), intent(in) :: x,y real(psb_dpk_), intent(in) :: x,y
c_box = dzero c_box = dzero
end function c_box end function c_box
function a1_box(x,y) function a1_box(x,y)
use psb_base_mod, only : psb_dpk_, dzero, done implicit none
real(psb_dpk_) :: a1_box real(psb_dpk_) :: a1_box
real(psb_dpk_), intent(in) :: x,y real(psb_dpk_), intent(in) :: x,y
a1_box=done*epsilon a1_box=done*epsilon
end function a1_box end function a1_box
function a2_box(x,y) function a2_box(x,y)
use psb_base_mod, only : psb_dpk_, dzero, done implicit none
real(psb_dpk_) :: a2_box real(psb_dpk_) :: a2_box
real(psb_dpk_), intent(in) :: x,y real(psb_dpk_), intent(in) :: x,y
a2_box=done*epsilon a2_box=done*epsilon
end function a2_box end function a2_box
function g_box(x,y) function g_box(x,y)
use psb_base_mod, only : psb_dpk_, dzero, done implicit none
real(psb_dpk_) :: g_box real(psb_dpk_) :: g_box
real(psb_dpk_), intent(in) :: x,y real(psb_dpk_), intent(in) :: x,y
g_box = dzero g_box = dzero

@ -46,37 +46,37 @@ contains
! functions parametrizing the differential equation ! functions parametrizing the differential equation
! !
function b1_exp(x,y) function b1_exp(x,y)
use psb_base_mod, only : psb_dpk_, done, dzero implicit none
real(psb_dpk_) :: b1_exp real(psb_dpk_) :: b1_exp
real(psb_dpk_), intent(in) :: x,y real(psb_dpk_), intent(in) :: x,y
b1_exp = dzero b1_exp = dzero
end function b1_exp end function b1_exp
function b2_exp(x,y) function b2_exp(x,y)
use psb_base_mod, only : psb_dpk_, done, dzero implicit none
real(psb_dpk_) :: b2_exp real(psb_dpk_) :: b2_exp
real(psb_dpk_), intent(in) :: x,y real(psb_dpk_), intent(in) :: x,y
b2_exp = dzero b2_exp = dzero
end function b2_exp end function b2_exp
function c_exp(x,y) function c_exp(x,y)
use psb_base_mod, only : psb_dpk_, done, dzero implicit none
real(psb_dpk_) :: c_exp real(psb_dpk_) :: c_exp
real(psb_dpk_), intent(in) :: x,y real(psb_dpk_), intent(in) :: x,y
c_exp = dzero c_exp = dzero
end function c_exp end function c_exp
function a1_exp(x,y) function a1_exp(x,y)
use psb_base_mod, only : psb_dpk_, done, dzero implicit none
real(psb_dpk_) :: a1_exp real(psb_dpk_) :: a1_exp
real(psb_dpk_), intent(in) :: x,y real(psb_dpk_), intent(in) :: x,y
a1=done*epsilon*exp(-(x+y)) a1_exp=done*epsilon*exp(-(x+y))
end function a1_exp end function a1_exp
function a2_exp(x,y) function a2_exp(x,y)
use psb_base_mod, only : psb_dpk_, done, dzero implicit none
real(psb_dpk_) :: a2_exp real(psb_dpk_) :: a2_exp
real(psb_dpk_), intent(in) :: x,y real(psb_dpk_), intent(in) :: x,y
a2=done*epsilon*exp(-(x+y)) a2_exp=done*epsilon*exp(-(x+y))
end function a2_exp end function a2_exp
function g_exp(x,y) function g_exp(x,y)
use psb_base_mod, only : psb_dpk_, done, dzero implicit none
real(psb_dpk_) :: g_exp real(psb_dpk_) :: g_exp
real(psb_dpk_), intent(in) :: x,y real(psb_dpk_), intent(in) :: x,y
g_exp = dzero g_exp = dzero

@ -35,7 +35,7 @@
! POSSIBILITY OF SUCH DAMAGE. ! POSSIBILITY OF SUCH DAMAGE.
! !
module amg_d_pde3d_base_mod module amg_d_pde3d_base_mod
use psb_base_mod, only : psb_dpk_, done use psb_base_mod, only : psb_dpk_, done, dzero
real(psb_dpk_), save, private :: epsilon=done/80 real(psb_dpk_), save, private :: epsilon=done/80
contains contains
subroutine pde_set_parm(dat) subroutine pde_set_parm(dat)
@ -46,49 +46,49 @@ contains
! functions parametrizing the differential equation ! functions parametrizing the differential equation
! !
function b1(x,y,z) function b1(x,y,z)
use psb_base_mod, only : psb_dpk_, done implicit none
real(psb_dpk_) :: b1 real(psb_dpk_) :: b1
real(psb_dpk_), intent(in) :: x,y,z real(psb_dpk_), intent(in) :: x,y,z
b1=done/sqrt(3.0_psb_dpk_) b1=done/sqrt(3.0_psb_dpk_)
end function b1 end function b1
function b2(x,y,z) function b2(x,y,z)
use psb_base_mod, only : psb_dpk_, done implicit none
real(psb_dpk_) :: b2 real(psb_dpk_) :: b2
real(psb_dpk_), intent(in) :: x,y,z real(psb_dpk_), intent(in) :: x,y,z
b2=done/sqrt(3.0_psb_dpk_) b2=done/sqrt(3.0_psb_dpk_)
end function b2 end function b2
function b3(x,y,z) function b3(x,y,z)
use psb_base_mod, only : psb_dpk_, done implicit none
real(psb_dpk_) :: b3 real(psb_dpk_) :: b3
real(psb_dpk_), intent(in) :: x,y,z real(psb_dpk_), intent(in) :: x,y,z
b3=done/sqrt(3.0_psb_dpk_) b3=done/sqrt(3.0_psb_dpk_)
end function b3 end function b3
function c(x,y,z) function c(x,y,z)
use psb_base_mod, only : psb_dpk_, dzero, done implicit none
real(psb_dpk_) :: c real(psb_dpk_) :: c
real(psb_dpk_), intent(in) :: x,y,z real(psb_dpk_), intent(in) :: x,y,z
c=dzero c=dzero
end function c end function c
function a1(x,y,z) function a1(x,y,z)
use psb_base_mod, only : psb_dpk_ implicit none
real(psb_dpk_) :: a1 real(psb_dpk_) :: a1
real(psb_dpk_), intent(in) :: x,y,z real(psb_dpk_), intent(in) :: x,y,z
a1=epsilon a1=epsilon
end function a1 end function a1
function a2(x,y,z) function a2(x,y,z)
use psb_base_mod, only : psb_dpk_ implicit none
real(psb_dpk_) :: a2 real(psb_dpk_) :: a2
real(psb_dpk_), intent(in) :: x,y,z real(psb_dpk_), intent(in) :: x,y,z
a2=epsilon a2=epsilon
end function a2 end function a2
function a3(x,y,z) function a3(x,y,z)
use psb_base_mod, only : psb_dpk_ implicit none
real(psb_dpk_) :: a3 real(psb_dpk_) :: a3
real(psb_dpk_), intent(in) :: x,y,z real(psb_dpk_), intent(in) :: x,y,z
a3=epsilon a3=epsilon
end function a3 end function a3
function g(x,y,z) function g(x,y,z)
use psb_base_mod, only : psb_dpk_, done, dzero implicit none
real(psb_dpk_) :: g real(psb_dpk_) :: g
real(psb_dpk_), intent(in) :: x,y,z real(psb_dpk_), intent(in) :: x,y,z
g = dzero g = dzero

@ -35,7 +35,7 @@
! POSSIBILITY OF SUCH DAMAGE. ! POSSIBILITY OF SUCH DAMAGE.
! !
module amg_d_pde3d_exp_mod module amg_d_pde3d_exp_mod
use psb_base_mod, only : psb_dpk_, done use psb_base_mod, only : psb_dpk_, done, dzero
real(psb_dpk_), save, private :: epsilon=done/160 real(psb_dpk_), save, private :: epsilon=done/160
contains contains
subroutine pde_set_parm(dat) subroutine pde_set_parm(dat)
@ -46,49 +46,49 @@ contains
! functions parametrizing the differential equation ! functions parametrizing the differential equation
! !
function b1_exp(x,y,z) function b1_exp(x,y,z)
use psb_base_mod, only : psb_dpk_, dzero implicit none
real(psb_dpk_) :: b1_exp real(psb_dpk_) :: b1_exp
real(psb_dpk_), intent(in) :: x,y,z real(psb_dpk_), intent(in) :: x,y,z
b1_exp=dzero/sqrt(3.0_psb_dpk_) b1_exp=dzero/sqrt(3.0_psb_dpk_)
end function b1_exp end function b1_exp
function b2_exp(x,y,z) function b2_exp(x,y,z)
use psb_base_mod, only : psb_dpk_, dzero implicit none
real(psb_dpk_) :: b2_exp real(psb_dpk_) :: b2_exp
real(psb_dpk_), intent(in) :: x,y,z real(psb_dpk_), intent(in) :: x,y,z
b2_exp=dzero/sqrt(3.0_psb_dpk_) b2_exp=dzero/sqrt(3.0_psb_dpk_)
end function b2_exp end function b2_exp
function b3_exp(x,y,z) function b3_exp(x,y,z)
use psb_base_mod, only : psb_dpk_, dzero implicit none
real(psb_dpk_) :: b3_exp real(psb_dpk_) :: b3_exp
real(psb_dpk_), intent(in) :: x,y,z real(psb_dpk_), intent(in) :: x,y,z
b3_exp=dzero/sqrt(3.0_psb_dpk_) b3_exp=dzero/sqrt(3.0_psb_dpk_)
end function b3_exp end function b3_exp
function c_exp(x,y,z) function c_exp(x,y,z)
use psb_base_mod, only : psb_dpk_, dzero implicit none
real(psb_dpk_) :: c_exp real(psb_dpk_) :: c_exp
real(psb_dpk_), intent(in) :: x,y,z real(psb_dpk_), intent(in) :: x,y,z
c_exp=dzero c_exp=dzero
end function c_exp end function c_exp
function a1_exp(x,y,z) function a1_exp(x,y,z)
use psb_base_mod, only : psb_dpk_ implicit none
real(psb_dpk_) :: a1_exp real(psb_dpk_) :: a1_exp
real(psb_dpk_), intent(in) :: x,y,z real(psb_dpk_), intent(in) :: x,y,z
a1_exp=epsilon*exp(-(x+y+z)) a1_exp=epsilon*exp(-(x+y+z))
end function a1_exp end function a1_exp
function a2_exp(x,y,z) function a2_exp(x,y,z)
use psb_base_mod, only : psb_dpk_ implicit none
real(psb_dpk_) :: a2_exp real(psb_dpk_) :: a2_exp
real(psb_dpk_), intent(in) :: x,y,z real(psb_dpk_), intent(in) :: x,y,z
a2_exp=epsilon*exp(-(x+y+z)) a2_exp=epsilon*exp(-(x+y+z))
end function a2_exp end function a2_exp
function a3_exp(x,y,z) function a3_exp(x,y,z)
use psb_base_mod, only : psb_dpk_ implicit none
real(psb_dpk_) :: a3_exp real(psb_dpk_) :: a3_exp
real(psb_dpk_), intent(in) :: x,y,z real(psb_dpk_), intent(in) :: x,y,z
a3_exp=epsilon*exp(-(x+y+z)) a3_exp=epsilon*exp(-(x+y+z))
end function a3_exp end function a3_exp
function g_exp(x,y,z) function g_exp(x,y,z)
use psb_base_mod, only : psb_dpk_, done, dzero implicit none
real(psb_dpk_) :: g_exp real(psb_dpk_) :: g_exp
real(psb_dpk_), intent(in) :: x,y,z real(psb_dpk_), intent(in) :: x,y,z
g_exp = dzero g_exp = dzero

@ -35,7 +35,7 @@
! POSSIBILITY OF SUCH DAMAGE. ! POSSIBILITY OF SUCH DAMAGE.
! !
module amg_d_pde3d_gauss_mod module amg_d_pde3d_gauss_mod
use psb_base_mod, only : psb_dpk_, done use psb_base_mod, only : psb_dpk_, done, dzero
real(psb_dpk_), save, private :: epsilon=done/80 real(psb_dpk_), save, private :: epsilon=done/80
contains contains
subroutine pde_set_parm(dat) subroutine pde_set_parm(dat)
@ -46,49 +46,49 @@ contains
! functions parametrizing the differential equation ! functions parametrizing the differential equation
! !
function b1_gauss(x,y,z) function b1_gauss(x,y,z)
use psb_base_mod, only : psb_dpk_, done implicit none
real(psb_dpk_) :: b1_gauss real(psb_dpk_) :: b1_gauss
real(psb_dpk_), intent(in) :: x,y,z real(psb_dpk_), intent(in) :: x,y,z
b1_gauss=done/sqrt(3.0_psb_dpk_)-2*x*exp(-(x**2+y**2+z**2)) b1_gauss=done/sqrt(3.0_psb_dpk_)-2*x*exp(-(x**2+y**2+z**2))
end function b1_gauss end function b1_gauss
function b2_gauss(x,y,z) function b2_gauss(x,y,z)
use psb_base_mod, only : psb_dpk_, done implicit none
real(psb_dpk_) :: b2_gauss real(psb_dpk_) :: b2_gauss
real(psb_dpk_), intent(in) :: x,y,z real(psb_dpk_), intent(in) :: x,y,z
b2_gauss=done/sqrt(3.0_psb_dpk_)-2*y*exp(-(x**2+y**2+z**2)) b2_gauss=done/sqrt(3.0_psb_dpk_)-2*y*exp(-(x**2+y**2+z**2))
end function b2_gauss end function b2_gauss
function b3_gauss(x,y,z) function b3_gauss(x,y,z)
use psb_base_mod, only : psb_dpk_, done implicit none
real(psb_dpk_) :: b3_gauss real(psb_dpk_) :: b3_gauss
real(psb_dpk_), intent(in) :: x,y,z real(psb_dpk_), intent(in) :: x,y,z
b3_gauss=done/sqrt(3.0_psb_dpk_)-2*z*exp(-(x**2+y**2+z**2)) b3_gauss=done/sqrt(3.0_psb_dpk_)-2*z*exp(-(x**2+y**2+z**2))
end function b3_gauss end function b3_gauss
function c_gauss(x,y,z) function c_gauss(x,y,z)
use psb_base_mod, only : psb_dpk_, dzero implicit none
real(psb_dpk_) :: c_gauss real(psb_dpk_) :: c_gauss
real(psb_dpk_), intent(in) :: x,y,z real(psb_dpk_), intent(in) :: x,y,z
c=dzero c_gauss=dzero
end function c_gauss end function c_gauss
function a1_gauss(x,y,z) function a1_gauss(x,y,z)
use psb_base_mod, only : psb_dpk_ implicit none
real(psb_dpk_) :: a1_gauss real(psb_dpk_) :: a1_gauss
real(psb_dpk_), intent(in) :: x,y,z real(psb_dpk_), intent(in) :: x,y,z
a1_gauss=epsilon*exp(-(x**2+y**2+z**2)) a1_gauss=epsilon*exp(-(x**2+y**2+z**2))
end function a1_gauss end function a1_gauss
function a2_gauss(x,y,z) function a2_gauss(x,y,z)
use psb_base_mod, only : psb_dpk_ implicit none
real(psb_dpk_) :: a2_gauss real(psb_dpk_) :: a2_gauss
real(psb_dpk_), intent(in) :: x,y,z real(psb_dpk_), intent(in) :: x,y,z
a2_gauss=epsilon*exp(-(x**2+y**2+z**2)) a2_gauss=epsilon*exp(-(x**2+y**2+z**2))
end function a2_gauss end function a2_gauss
function a3_gauss(x,y,z) function a3_gauss(x,y,z)
use psb_base_mod, only : psb_dpk_ implicit none
real(psb_dpk_) :: a3_gauss real(psb_dpk_) :: a3_gauss
real(psb_dpk_), intent(in) :: x,y,z real(psb_dpk_), intent(in) :: x,y,z
a3_gauss=epsilon*exp(-(x**2+y**2+z**2)) a3_gauss=epsilon*exp(-(x**2+y**2+z**2))
end function a3_gauss end function a3_gauss
function g_gauss(x,y,z) function g_gauss(x,y,z)
use psb_base_mod, only : psb_dpk_, done, dzero implicit none
real(psb_dpk_) :: g_gauss real(psb_dpk_) :: g_gauss
real(psb_dpk_), intent(in) :: x,y,z real(psb_dpk_), intent(in) :: x,y,z
g_gauss = dzero g_gauss = dzero

@ -46,37 +46,37 @@ contains
! functions parametrizing the differential equation ! functions parametrizing the differential equation
! !
function b1(x,y) function b1(x,y)
use psb_base_mod, only : psb_spk_, szero, sone implicit none
real(psb_spk_) :: b1 real(psb_spk_) :: b1
real(psb_spk_), intent(in) :: x,y real(psb_spk_), intent(in) :: x,y
b1 = szero/1.414_psb_spk_ b1 = szero/1.414_psb_spk_
end function b1 end function b1
function b2(x,y) function b2(x,y)
use psb_base_mod, only : psb_spk_, szero, sone implicit none
real(psb_spk_) :: b2 real(psb_spk_) :: b2
real(psb_spk_), intent(in) :: x,y real(psb_spk_), intent(in) :: x,y
b2 = szero/1.414_psb_spk_ b2 = szero/1.414_psb_spk_
end function b2 end function b2
function c(x,y) function c(x,y)
use psb_base_mod, only : psb_spk_, szero, sone implicit none
real(psb_spk_) :: c real(psb_spk_) :: c
real(psb_spk_), intent(in) :: x,y real(psb_spk_), intent(in) :: x,y
c = szero c = szero
end function c end function c
function a1(x,y) function a1(x,y)
use psb_base_mod, only : psb_spk_, szero, sone implicit none
real(psb_spk_) :: a1 real(psb_spk_) :: a1
real(psb_spk_), intent(in) :: x,y real(psb_spk_), intent(in) :: x,y
a1=sone*epsilon a1=sone*epsilon
end function a1 end function a1
function a2(x,y) function a2(x,y)
use psb_base_mod, only : psb_spk_, szero, sone implicit none
real(psb_spk_) :: a2 real(psb_spk_) :: a2
real(psb_spk_), intent(in) :: x,y real(psb_spk_), intent(in) :: x,y
a2=sone*epsilon a2=sone*epsilon
end function a2 end function a2
function g(x,y) function g(x,y)
use psb_base_mod, only : psb_spk_, szero, sone implicit none
real(psb_spk_) :: g real(psb_spk_) :: g
real(psb_spk_), intent(in) :: x,y real(psb_spk_), intent(in) :: x,y
g = szero g = szero

@ -46,37 +46,37 @@ contains
! functions parametrizing the differential equation ! functions parametrizing the differential equation
! !
function b1_box(x,y) function b1_box(x,y)
use psb_base_mod, only : psb_spk_, szero, sone implicit none
real(psb_spk_) :: b1_box real(psb_spk_) :: b1_box
real(psb_spk_), intent(in) :: x,y real(psb_spk_), intent(in) :: x,y
b1_box = sone/1.414_psb_spk_ b1_box = sone/1.414_psb_spk_
end function b1_box end function b1_box
function b2_box(x,y) function b2_box(x,y)
use psb_base_mod, only : psb_spk_, szero, sone implicit none
real(psb_spk_) :: b2_box real(psb_spk_) :: b2_box
real(psb_spk_), intent(in) :: x,y real(psb_spk_), intent(in) :: x,y
b2_box = sone/1.414_psb_spk_ b2_box = sone/1.414_psb_spk_
end function b2_box end function b2_box
function c_box(x,y) function c_box(x,y)
use psb_base_mod, only : psb_spk_, szero, sone implicit none
real(psb_spk_) :: c_box real(psb_spk_) :: c_box
real(psb_spk_), intent(in) :: x,y real(psb_spk_), intent(in) :: x,y
c_box = szero c_box = szero
end function c_box end function c_box
function a1_box(x,y) function a1_box(x,y)
use psb_base_mod, only : psb_spk_, szero, sone implicit none
real(psb_spk_) :: a1_box real(psb_spk_) :: a1_box
real(psb_spk_), intent(in) :: x,y real(psb_spk_), intent(in) :: x,y
a1_box=sone*epsilon a1_box=sone*epsilon
end function a1_box end function a1_box
function a2_box(x,y) function a2_box(x,y)
use psb_base_mod, only : psb_spk_, szero, sone implicit none
real(psb_spk_) :: a2_box real(psb_spk_) :: a2_box
real(psb_spk_), intent(in) :: x,y real(psb_spk_), intent(in) :: x,y
a2_box=sone*epsilon a2_box=sone*epsilon
end function a2_box end function a2_box
function g_box(x,y) function g_box(x,y)
use psb_base_mod, only : psb_spk_, szero, sone implicit none
real(psb_spk_) :: g_box real(psb_spk_) :: g_box
real(psb_spk_), intent(in) :: x,y real(psb_spk_), intent(in) :: x,y
g_box = szero g_box = szero

@ -46,37 +46,37 @@ contains
! functions parametrizing the differential equation ! functions parametrizing the differential equation
! !
function b1_exp(x,y) function b1_exp(x,y)
use psb_base_mod, only : psb_spk_, sone, szero implicit none
real(psb_spk_) :: b1_exp real(psb_spk_) :: b1_exp
real(psb_spk_), intent(in) :: x,y real(psb_spk_), intent(in) :: x,y
b1_exp = szero b1_exp = szero
end function b1_exp end function b1_exp
function b2_exp(x,y) function b2_exp(x,y)
use psb_base_mod, only : psb_spk_, sone, szero implicit none
real(psb_spk_) :: b2_exp real(psb_spk_) :: b2_exp
real(psb_spk_), intent(in) :: x,y real(psb_spk_), intent(in) :: x,y
b2_exp = szero b2_exp = szero
end function b2_exp end function b2_exp
function c_exp(x,y) function c_exp(x,y)
use psb_base_mod, only : psb_spk_, sone, szero implicit none
real(psb_spk_) :: c_exp real(psb_spk_) :: c_exp
real(psb_spk_), intent(in) :: x,y real(psb_spk_), intent(in) :: x,y
c_exp = szero c_exp = szero
end function c_exp end function c_exp
function a1_exp(x,y) function a1_exp(x,y)
use psb_base_mod, only : psb_spk_, sone, szero implicit none
real(psb_spk_) :: a1_exp real(psb_spk_) :: a1_exp
real(psb_spk_), intent(in) :: x,y real(psb_spk_), intent(in) :: x,y
a1=sone*epsilon*exp(-(x+y)) a1_exp=sone*epsilon*exp(-(x+y))
end function a1_exp end function a1_exp
function a2_exp(x,y) function a2_exp(x,y)
use psb_base_mod, only : psb_spk_, sone, szero implicit none
real(psb_spk_) :: a2_exp real(psb_spk_) :: a2_exp
real(psb_spk_), intent(in) :: x,y real(psb_spk_), intent(in) :: x,y
a2=sone*epsilon*exp(-(x+y)) a2_exp=sone*epsilon*exp(-(x+y))
end function a2_exp end function a2_exp
function g_exp(x,y) function g_exp(x,y)
use psb_base_mod, only : psb_spk_, sone, szero implicit none
real(psb_spk_) :: g_exp real(psb_spk_) :: g_exp
real(psb_spk_), intent(in) :: x,y real(psb_spk_), intent(in) :: x,y
g_exp = szero g_exp = szero

@ -35,7 +35,7 @@
! POSSIBILITY OF SUCH DAMAGE. ! POSSIBILITY OF SUCH DAMAGE.
! !
module amg_s_pde3d_base_mod module amg_s_pde3d_base_mod
use psb_base_mod, only : psb_spk_, sone use psb_base_mod, only : psb_spk_, sone, szero
real(psb_spk_), save, private :: epsilon=sone/80 real(psb_spk_), save, private :: epsilon=sone/80
contains contains
subroutine pde_set_parm(dat) subroutine pde_set_parm(dat)
@ -46,49 +46,49 @@ contains
! functions parametrizing the differential equation ! functions parametrizing the differential equation
! !
function b1(x,y,z) function b1(x,y,z)
use psb_base_mod, only : psb_spk_, sone implicit none
real(psb_spk_) :: b1 real(psb_spk_) :: b1
real(psb_spk_), intent(in) :: x,y,z real(psb_spk_), intent(in) :: x,y,z
b1=sone/sqrt(3.0_psb_spk_) b1=sone/sqrt(3.0_psb_spk_)
end function b1 end function b1
function b2(x,y,z) function b2(x,y,z)
use psb_base_mod, only : psb_spk_, sone implicit none
real(psb_spk_) :: b2 real(psb_spk_) :: b2
real(psb_spk_), intent(in) :: x,y,z real(psb_spk_), intent(in) :: x,y,z
b2=sone/sqrt(3.0_psb_spk_) b2=sone/sqrt(3.0_psb_spk_)
end function b2 end function b2
function b3(x,y,z) function b3(x,y,z)
use psb_base_mod, only : psb_spk_, sone implicit none
real(psb_spk_) :: b3 real(psb_spk_) :: b3
real(psb_spk_), intent(in) :: x,y,z real(psb_spk_), intent(in) :: x,y,z
b3=sone/sqrt(3.0_psb_spk_) b3=sone/sqrt(3.0_psb_spk_)
end function b3 end function b3
function c(x,y,z) function c(x,y,z)
use psb_base_mod, only : psb_spk_, szero, sone implicit none
real(psb_spk_) :: c real(psb_spk_) :: c
real(psb_spk_), intent(in) :: x,y,z real(psb_spk_), intent(in) :: x,y,z
c=szero c=szero
end function c end function c
function a1(x,y,z) function a1(x,y,z)
use psb_base_mod, only : psb_spk_ implicit none
real(psb_spk_) :: a1 real(psb_spk_) :: a1
real(psb_spk_), intent(in) :: x,y,z real(psb_spk_), intent(in) :: x,y,z
a1=epsilon a1=epsilon
end function a1 end function a1
function a2(x,y,z) function a2(x,y,z)
use psb_base_mod, only : psb_spk_ implicit none
real(psb_spk_) :: a2 real(psb_spk_) :: a2
real(psb_spk_), intent(in) :: x,y,z real(psb_spk_), intent(in) :: x,y,z
a2=epsilon a2=epsilon
end function a2 end function a2
function a3(x,y,z) function a3(x,y,z)
use psb_base_mod, only : psb_spk_ implicit none
real(psb_spk_) :: a3 real(psb_spk_) :: a3
real(psb_spk_), intent(in) :: x,y,z real(psb_spk_), intent(in) :: x,y,z
a3=epsilon a3=epsilon
end function a3 end function a3
function g(x,y,z) function g(x,y,z)
use psb_base_mod, only : psb_spk_, sone, szero implicit none
real(psb_spk_) :: g real(psb_spk_) :: g
real(psb_spk_), intent(in) :: x,y,z real(psb_spk_), intent(in) :: x,y,z
g = szero g = szero

@ -35,7 +35,7 @@
! POSSIBILITY OF SUCH DAMAGE. ! POSSIBILITY OF SUCH DAMAGE.
! !
module amg_s_pde3d_exp_mod module amg_s_pde3d_exp_mod
use psb_base_mod, only : psb_spk_, sone use psb_base_mod, only : psb_spk_, sone, szero
real(psb_spk_), save, private :: epsilon=sone/160 real(psb_spk_), save, private :: epsilon=sone/160
contains contains
subroutine pde_set_parm(dat) subroutine pde_set_parm(dat)
@ -46,49 +46,49 @@ contains
! functions parametrizing the differential equation ! functions parametrizing the differential equation
! !
function b1_exp(x,y,z) function b1_exp(x,y,z)
use psb_base_mod, only : psb_spk_, szero implicit none
real(psb_spk_) :: b1_exp real(psb_spk_) :: b1_exp
real(psb_spk_), intent(in) :: x,y,z real(psb_spk_), intent(in) :: x,y,z
b1_exp=szero/sqrt(3.0_psb_spk_) b1_exp=szero/sqrt(3.0_psb_spk_)
end function b1_exp end function b1_exp
function b2_exp(x,y,z) function b2_exp(x,y,z)
use psb_base_mod, only : psb_spk_, szero implicit none
real(psb_spk_) :: b2_exp real(psb_spk_) :: b2_exp
real(psb_spk_), intent(in) :: x,y,z real(psb_spk_), intent(in) :: x,y,z
b2_exp=szero/sqrt(3.0_psb_spk_) b2_exp=szero/sqrt(3.0_psb_spk_)
end function b2_exp end function b2_exp
function b3_exp(x,y,z) function b3_exp(x,y,z)
use psb_base_mod, only : psb_spk_, szero implicit none
real(psb_spk_) :: b3_exp real(psb_spk_) :: b3_exp
real(psb_spk_), intent(in) :: x,y,z real(psb_spk_), intent(in) :: x,y,z
b3_exp=szero/sqrt(3.0_psb_spk_) b3_exp=szero/sqrt(3.0_psb_spk_)
end function b3_exp end function b3_exp
function c_exp(x,y,z) function c_exp(x,y,z)
use psb_base_mod, only : psb_spk_, szero implicit none
real(psb_spk_) :: c_exp real(psb_spk_) :: c_exp
real(psb_spk_), intent(in) :: x,y,z real(psb_spk_), intent(in) :: x,y,z
c_exp=szero c_exp=szero
end function c_exp end function c_exp
function a1_exp(x,y,z) function a1_exp(x,y,z)
use psb_base_mod, only : psb_spk_ implicit none
real(psb_spk_) :: a1_exp real(psb_spk_) :: a1_exp
real(psb_spk_), intent(in) :: x,y,z real(psb_spk_), intent(in) :: x,y,z
a1_exp=epsilon*exp(-(x+y+z)) a1_exp=epsilon*exp(-(x+y+z))
end function a1_exp end function a1_exp
function a2_exp(x,y,z) function a2_exp(x,y,z)
use psb_base_mod, only : psb_spk_ implicit none
real(psb_spk_) :: a2_exp real(psb_spk_) :: a2_exp
real(psb_spk_), intent(in) :: x,y,z real(psb_spk_), intent(in) :: x,y,z
a2_exp=epsilon*exp(-(x+y+z)) a2_exp=epsilon*exp(-(x+y+z))
end function a2_exp end function a2_exp
function a3_exp(x,y,z) function a3_exp(x,y,z)
use psb_base_mod, only : psb_spk_ implicit none
real(psb_spk_) :: a3_exp real(psb_spk_) :: a3_exp
real(psb_spk_), intent(in) :: x,y,z real(psb_spk_), intent(in) :: x,y,z
a3_exp=epsilon*exp(-(x+y+z)) a3_exp=epsilon*exp(-(x+y+z))
end function a3_exp end function a3_exp
function g_exp(x,y,z) function g_exp(x,y,z)
use psb_base_mod, only : psb_spk_, sone, szero implicit none
real(psb_spk_) :: g_exp real(psb_spk_) :: g_exp
real(psb_spk_), intent(in) :: x,y,z real(psb_spk_), intent(in) :: x,y,z
g_exp = szero g_exp = szero

@ -35,7 +35,7 @@
! POSSIBILITY OF SUCH DAMAGE. ! POSSIBILITY OF SUCH DAMAGE.
! !
module amg_s_pde3d_gauss_mod module amg_s_pde3d_gauss_mod
use psb_base_mod, only : psb_spk_, sone use psb_base_mod, only : psb_spk_, sone, szero
real(psb_spk_), save, private :: epsilon=sone/80 real(psb_spk_), save, private :: epsilon=sone/80
contains contains
subroutine pde_set_parm(dat) subroutine pde_set_parm(dat)
@ -46,49 +46,49 @@ contains
! functions parametrizing the differential equation ! functions parametrizing the differential equation
! !
function b1_gauss(x,y,z) function b1_gauss(x,y,z)
use psb_base_mod, only : psb_spk_, sone implicit none
real(psb_spk_) :: b1_gauss real(psb_spk_) :: b1_gauss
real(psb_spk_), intent(in) :: x,y,z real(psb_spk_), intent(in) :: x,y,z
b1_gauss=sone/sqrt(3.0_psb_spk_)-2*x*exp(-(x**2+y**2+z**2)) b1_gauss=sone/sqrt(3.0_psb_spk_)-2*x*exp(-(x**2+y**2+z**2))
end function b1_gauss end function b1_gauss
function b2_gauss(x,y,z) function b2_gauss(x,y,z)
use psb_base_mod, only : psb_spk_, sone implicit none
real(psb_spk_) :: b2_gauss real(psb_spk_) :: b2_gauss
real(psb_spk_), intent(in) :: x,y,z real(psb_spk_), intent(in) :: x,y,z
b2_gauss=sone/sqrt(3.0_psb_spk_)-2*y*exp(-(x**2+y**2+z**2)) b2_gauss=sone/sqrt(3.0_psb_spk_)-2*y*exp(-(x**2+y**2+z**2))
end function b2_gauss end function b2_gauss
function b3_gauss(x,y,z) function b3_gauss(x,y,z)
use psb_base_mod, only : psb_spk_, sone implicit none
real(psb_spk_) :: b3_gauss real(psb_spk_) :: b3_gauss
real(psb_spk_), intent(in) :: x,y,z real(psb_spk_), intent(in) :: x,y,z
b3_gauss=sone/sqrt(3.0_psb_spk_)-2*z*exp(-(x**2+y**2+z**2)) b3_gauss=sone/sqrt(3.0_psb_spk_)-2*z*exp(-(x**2+y**2+z**2))
end function b3_gauss end function b3_gauss
function c_gauss(x,y,z) function c_gauss(x,y,z)
use psb_base_mod, only : psb_spk_, szero implicit none
real(psb_spk_) :: c_gauss real(psb_spk_) :: c_gauss
real(psb_spk_), intent(in) :: x,y,z real(psb_spk_), intent(in) :: x,y,z
c=szero c_gauss=szero
end function c_gauss end function c_gauss
function a1_gauss(x,y,z) function a1_gauss(x,y,z)
use psb_base_mod, only : psb_spk_ implicit none
real(psb_spk_) :: a1_gauss real(psb_spk_) :: a1_gauss
real(psb_spk_), intent(in) :: x,y,z real(psb_spk_), intent(in) :: x,y,z
a1_gauss=epsilon*exp(-(x**2+y**2+z**2)) a1_gauss=epsilon*exp(-(x**2+y**2+z**2))
end function a1_gauss end function a1_gauss
function a2_gauss(x,y,z) function a2_gauss(x,y,z)
use psb_base_mod, only : psb_spk_ implicit none
real(psb_spk_) :: a2_gauss real(psb_spk_) :: a2_gauss
real(psb_spk_), intent(in) :: x,y,z real(psb_spk_), intent(in) :: x,y,z
a2_gauss=epsilon*exp(-(x**2+y**2+z**2)) a2_gauss=epsilon*exp(-(x**2+y**2+z**2))
end function a2_gauss end function a2_gauss
function a3_gauss(x,y,z) function a3_gauss(x,y,z)
use psb_base_mod, only : psb_spk_ implicit none
real(psb_spk_) :: a3_gauss real(psb_spk_) :: a3_gauss
real(psb_spk_), intent(in) :: x,y,z real(psb_spk_), intent(in) :: x,y,z
a3_gauss=epsilon*exp(-(x**2+y**2+z**2)) a3_gauss=epsilon*exp(-(x**2+y**2+z**2))
end function a3_gauss end function a3_gauss
function g_gauss(x,y,z) function g_gauss(x,y,z)
use psb_base_mod, only : psb_spk_, sone, szero implicit none
real(psb_spk_) :: g_gauss real(psb_spk_) :: g_gauss
real(psb_spk_), intent(in) :: x,y,z real(psb_spk_), intent(in) :: x,y,z
g_gauss = szero g_gauss = szero

@ -2,18 +2,18 @@
CSR ! Storage format CSR COO JAD CSR ! Storage format CSR COO JAD
0040 ! IDIM; domain size. Linear system size is IDIM**3 0040 ! IDIM; domain size. Linear system size is IDIM**3
CONST ! PDECOEFF: CONST, EXP, GAUSS Coefficients of the PDE CONST ! PDECOEFF: CONST, EXP, GAUSS Coefficients of the PDE
BICGSTAB ! Iterative method: BiCGSTAB BiCGSTABL BiCG CG CGS FCG GCR RGMRES CG ! Iterative method: BiCGSTAB BiCGSTABL BiCG CG CGS FCG GCR RGMRES
2 ! ISTOPC 2 ! ISTOPC
00500 ! ITMAX 00008 ! ITMAX
1 ! ITRACE 1 ! ITRACE
30 ! IRST (restart for RGMRES and BiCGSTABL) 30 ! IRST (restart for RGMRES and BiCGSTABL)
1.d-6 ! EPS 1.d-6 ! EPS
%%%%%%%%%%% Main preconditioner choices %%%%%%%%%%%%%%%% %%%%%%%%%%% Main preconditioner choices %%%%%%%%%%%%%%%%
ML-VBM-VCYCLE-FBGS-D-BJAC ! Longer descriptive name for preconditioner (up to 20 chars) ML-VBM-VCYCLE-FBGS-D-BJAC ! Longer descriptive name for preconditioner (up to 20 chars)
BJAC ! Preconditioner type: NONE JACOBI GS FBGS BJAC AS ML L1-JACOBI ! Preconditioner type: NONE JACOBI GS FBGS BJAC AS ML
%%%%%%%%%%% First smoother (for all levels but coarsest) %%%%%%%%%%%%%%%% %%%%%%%%%%% First smoother (for all levels but coarsest) %%%%%%%%%%%%%%%%
BJAC ! Smoother type JACOBI FBGS GS BWGS BJAC AS. For 1-level, repeats previous. L1-JACOBI ! Smoother type JACOBI FBGS GS BWGS BJAC AS. For 1-level, repeats previous.
1 ! Number of sweeps for smoother 4 ! Number of sweeps for smoother
0 ! Number of overlap layers for AS preconditioner 0 ! Number of overlap layers for AS preconditioner
HALO ! AS restriction operator: NONE HALO HALO ! AS restriction operator: NONE HALO
NONE ! AS prolongation operator: NONE SUM AVG NONE ! AS prolongation operator: NONE SUM AVG

Loading…
Cancel
Save