diff options
author | diener <diener@f69c4107-0314-4c4f-9ad4-17e986b73f4a> | 2009-03-31 23:00:16 +0000 |
---|---|---|
committer | diener <diener@f69c4107-0314-4c4f-9ad4-17e986b73f4a> | 2009-03-31 23:00:16 +0000 |
commit | 9fbf1f753b7927be6d888b46049953f36a1fe3f4 (patch) | |
tree | c5cccc75e8a9a8a840e7218bb7e41c9e07e1e65e /src/All_Coeffs_mod.F90 | |
parent | 77d4fe21433a1d33867954de21247c196954ac35 (diff) |
Introduce a boolean parameter to switch of SBP near outer boundary. Instead
switch to progressively lower order centered stencil as the boundery is
approached, similar to what is done with the second order and upwind stencils.
git-svn-id: https://svn.cct.lsu.edu/repos/numrel/LSUThorns/SummationByParts/trunk@118 f69c4107-0314-4c4f-9ad4-17e986b73f4a
Diffstat (limited to 'src/All_Coeffs_mod.F90')
-rw-r--r-- | src/All_Coeffs_mod.F90 | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/src/All_Coeffs_mod.F90 b/src/All_Coeffs_mod.F90 index 1886497..55a76ab 100644 --- a/src/All_Coeffs_mod.F90 +++ b/src/All_Coeffs_mod.F90 @@ -28,6 +28,17 @@ module All_Coeffs_mod end subroutine coeffs_1_2_1 + subroutine coeffs_1_2 ( a, q ) + + CCTK_REAL, dimension(1), intent(OUT) :: a + CCTK_REAL, dimension(1,1), intent(OUT) :: q + + a(1) = 1.0_wp/2.0_wp + + q(1,1) = zero + + end subroutine coeffs_1_2 + subroutine coeffs_up_2_1 ( a1, q1, a2, q2 ) CCTK_REAL, dimension(-1:1), intent(OUT) :: a1, a2 @@ -161,6 +172,24 @@ module All_Coeffs_mod end subroutine coeffs_1_4_2 + subroutine coeffs_1_4 ( a, q ) + + CCTK_REAL, dimension(2), intent(OUT) :: a + CCTK_REAL, dimension(3,2), intent(OUT) :: q + + a(1) = 2.0_wp/3.0_wp + a(2) = -1.0_wp/12.0_wp + + q(1,1) = zero + q(2,1) = zero + q(3,1) = zero + + q(1,2) = -1.0_wp/2.0_wp + q(2,2) = zero + q(3,2) = 1.0_wp/2.0_wp + + end subroutine coeffs_1_4 + subroutine coeffs_up_4_2 ( a1, q1, a2, q2 ) CCTK_REAL, dimension(-2:2), intent(OUT) :: a1, a2 @@ -526,6 +555,35 @@ module All_Coeffs_mod end subroutine coeffs_1_6_3_opt + subroutine coeffs_1_6 ( a, q ) + + CCTK_REAL, dimension(3), intent(OUT) :: a + CCTK_REAL, dimension(5,3), intent(OUT) :: q + + a(1) = 3.0_wp/4.0_wp + a(2) = -3.0_wp/20.0_wp + a(3) = 1.0_wp/60.0_wp + + q(1,1) = zero + q(2,1) = zero + q(3,1) = zero + q(4,1) = zero + q(5,1) = zero + + q(1,2) = -1.0_wp/2.0_wp + q(2,2) = zero + q(3,2) = 1.0_wp/2.0_wp + q(4,2) = zero + q(5,2) = zero + + q(1,3) = 1.0_wp/12.0_wp + q(2,3) = -2.0_wp/3.0_wp + q(3,3) = zero + q(4,3) = 2.0_wp/3.0_wp + q(5,3) = -1.0_wp/12.0_wp + + end subroutine coeffs_1_6 + subroutine coeffs_up_6_3_opt ( a1, q1, a2, q2 ) CCTK_REAL, dimension(-3:3), intent(OUT) :: a1, a2 @@ -1129,6 +1187,50 @@ module All_Coeffs_mod end subroutine coeffs_1_8_4_opt + subroutine coeffs_1_8 ( a, q ) + + CCTK_REAL, dimension(4), intent(OUT) :: a + CCTK_REAL, dimension(7,4), intent(OUT) :: q + + a(1) = 4.0_wp/5.0_wp + a(2) = -1.0_wp/5.0_wp + a(3) = 4.0_wp/105.0_wp + a(4) = -1.0_wp/280.0_wp + + q(1,1) = zero + q(2,1) = zero + q(3,1) = zero + q(4,1) = zero + q(5,1) = zero + q(6,1) = zero + q(7,1) = zero + + q(1,2) = -1.0_wp/2.0_wp + q(2,2) = zero + q(3,2) = 1.0_wp/2.0_wp + q(4,2) = zero + q(5,2) = zero + q(6,2) = zero + q(7,1) = zero + + q(1,3) = 1.0_wp/12.0_wp + q(2,3) = -2.0_wp/3.0_wp + q(3,3) = zero + q(4,3) = 2.0_wp/3.0_wp + q(5,3) = -1.0_wp/12.0_wp + q(6,3) = zero + q(7,3) = zero + + q(1,4) = -1.0_wp/60.0_wp + q(2,4) = 3.0_wp/20.0_wp + q(3,4) = -3.0_wp/4.0_wp + q(4,4) = zero + q(5,4) = 3.0_wp/4.0_wp + q(6,4) = -3.0_wp/20.0_wp + q(7,4) = 1.0_wp/60.0_wp + + end subroutine coeffs_1_8 + subroutine coeffs_up_8_4_opt ( a1, q1, a2, q2 ) CCTK_REAL, dimension(-4:4), intent(OUT) :: a1, a2 |