MPI-AMRVAC  3.0
The MPI - Adaptive Mesh Refinement - Versatile Advection Code
mod_physics_roe.t
Go to the documentation of this file.
2 
3  implicit none
4  public
5 
6  procedure(sub_average), pointer :: phys_average => null()
7  procedure(sub_get_eigenjump), pointer :: phys_get_eigenjump => null()
8  procedure(sub_rtimes), pointer :: phys_rtimes => null()
9 
10  integer :: nworkroe = -1
11 
12  abstract interface
13  subroutine sub_average(wL, wR, x, ix^L, idim, wroe, workroe)
15  import
16  integer, intent(in) :: ix^L, idim
17  double precision, intent(in) :: wL(ixG^T, nw), wR(ixG^T, nw)
18  double precision, intent(inout) :: wroe(ixG^T, nw)
19  double precision, intent(inout) :: workroe(ixG^T, nworkroe)
20  double precision, intent(in) :: x(ixG^T, 1:^ND)
21  end subroutine sub_average
22 
23  subroutine sub_get_eigenjump(wL, wR, wC, x, ix^L, il, &
24  idim, smalla, a, jump, workroe)
26  import
27  integer, intent(in) :: ix^L, il, idim
28  double precision, dimension(ixG^T, nw) :: wL, wR, wC
29  double precision, dimension(ixG^T) :: smalla, a, jump
30  double precision, dimension(ixG^T, nworkroe) :: workroe
31  double precision, intent(in) :: x(ixG^T, 1:^ND)
32  end subroutine sub_get_eigenjump
33 
34  subroutine sub_rtimes(q, w, ix^L, iw, il, idim, rq, workroe)
36  import
37  integer, intent(in) :: ix^L, iw, il, idim
38  double precision, intent(in) :: w(ixG^T, nw), q(ixG^T)
39  double precision, intent(inout) :: rq(ixG^T)
40  double precision, intent(inout) :: workroe(ixG^T, nworkroe)
41  end subroutine sub_rtimes
42  end interface
43 
44 contains
45 
46  subroutine phys_roe_check()
47  if (.not. associated(phys_average)) &
49 
50  if (.not. associated(phys_get_eigenjump)) &
52 
53  if (.not. associated(phys_rtimes)) &
55 
56  end subroutine phys_roe_check
57 
58  subroutine dummy_roe_average(wL, wR, x, ix^L, idim, wroe, workroe)
60  integer, intent(in) :: ix^L, idim
61  double precision, intent(in) :: wL(ixG^T, nw), wR(ixG^T, nw)
62  double precision, intent(inout) :: wroe(ixG^T, nw)
63  double precision, intent(inout) :: workroe(ixG^T, nworkroe)
64  double precision, intent(in) :: x(ixG^T, 1:^ND)
65 
66  call mpistop("dummy_roe_average should not be called")
67  end subroutine dummy_roe_average
68 
69  subroutine dummy_roe_get_eigenjump(wL, wR, wC, x, ix^L, il, &
70  idim, smalla, a, jump, workroe)
72  integer, intent(in) :: ix^L, il, idim
73  double precision, dimension(ixG^T, nw) :: wL, wR, wC
74  double precision, dimension(ixG^T) :: smalla, a, jump
75  double precision, dimension(ixG^T, nworkroe) :: workroe
76  double precision, intent(in) :: x(ixG^T, 1:^ND)
77 
78  call mpistop("dummy_roe_get_eigenjump should not be called")
79  end subroutine dummy_roe_get_eigenjump
80 
81  subroutine dummy_roe_rtimes(q, w, ix^L, iw, il, idim, rq, workroe)
83  integer, intent(in) :: ix^L, iw, il, idim
84  double precision, intent(in) :: w(ixG^T, nw), q(ixG^T)
85  double precision, intent(inout) :: rq(ixG^T)
86  double precision, intent(inout) :: workroe(ixG^T, nworkroe)
87 
88  call mpistop("dummy_roe_rtimes should not be called")
89  end subroutine dummy_roe_rtimes
90 
91 end module mod_physics_roe
subroutine mpistop(message)
Exit MPI-AMRVAC with an error message.
Definition: comm_lib.t:194
This module contains definitions of global parameters and variables and some generic functions/subrou...
subroutine dummy_roe_get_eigenjump(wL, wR, wC, x, ixL, il, idim, smalla, a, jump, workroe)
subroutine phys_roe_check()
procedure(sub_rtimes), pointer phys_rtimes
subroutine dummy_roe_average(wL, wR, x, ixL, idim, wroe, workroe)
subroutine dummy_roe_rtimes(q, w, ixL, iw, il, idim, rq, workroe)
procedure(sub_get_eigenjump), pointer phys_get_eigenjump
procedure(sub_average), pointer phys_average