Skip to content

adam_prism_riemann_library

ADAM, PRISM Riemann Problem for Maxwell equations solvers and convective fluxes computations library.

Source: src/app/prism/common/adam_prism_riemann_library.F90

Dependencies

Contents

Interfaces

compute_convective_fluxes_interface

Subroutines

compute_riemann_maxwell_llf

Solve the Riemann problem between the state 1 (left) and 4 (right) using the Local-Lax-Friedrichs (LLF, Rusanov) solver.

fortran
subroutine compute_riemann_maxwell_llf(sir, nv, q1, q4, chi, f, lmax)

Arguments

NameTypeIntentAttributesDescription
sirreal(kind=R8P)inDirectional (1=x,2=y,3=z) increment.
nvinteger(kind=I4P)inNumber of conservative varibales.
q1real(kind=R8P)inLeft state.
q4real(kind=R8P)inRight state.
chireal(kind=R8P)inCoefficiente velocità trasporto errori divergenza campi (non usato)
freal(kind=R8P)inoutResulting fluxes.
lmaxreal(kind=R8P)outoptionalMaximum wave speed estimation.

Call graph

compute_riemann_maxwell_hll

Solve the Riemann problem between the state 1 (left) and 4 (right) using the Harten, Lax and van Leer (HLL) solver.

fortran
subroutine compute_riemann_maxwell_hll(sir, nv, q1, q4, chi, f, lmax, lmin)

Arguments

NameTypeIntentAttributesDescription
sirreal(kind=R8P)inDirectional (1=x,2=y,3=z) increment.
nvinteger(kind=I4P)inNumber of conservative varibales.
q1real(kind=R8P)inLeft state.
q4real(kind=R8P)inRight state.
chireal(kind=R8P)inCoefficiente velocità trasporto errori divergenza campi (non usato)
freal(kind=R8P)inoutResulting fluxes.
lmaxreal(kind=R8P)outoptionalMaximum wave speed estimation.
lminreal(kind=R8P)outoptionalMaximum wave speed estimation.

Call graph

compute_convective_fluxes_maxwell

Compute convective fluxes.

 Fx(1) =  0       Fy(1) = -Bz/muz  Fz(1) =  By/muy
 Fx(2) =  Bz/muz  Fy(2) =  0       Fz(2) = -Bx/mux
 Fx(3) = -By/muy  Fy(3) =  Bx/mux  Fz(3) =  0
 Fx(4) =  0       Fy(4) =  Dz/epsz Fz(4) = -Dy/epsy
 Fx(5) = -Dz/epsz Fy(5) =  0       Fz(5) =  Dx/epsx
 Fx(6) =  Dy/epsy Fy(6) = -Dx/epsx Fz(6) =  0
fortran
subroutine compute_convective_fluxes_maxwell(sir, q, f, chi)

Arguments

NameTypeIntentAttributesDescription
sirreal(kind=R8P)inDirection array
qreal(kind=R8P)inAuxiliary variables.
freal(kind=R8P)inoutConservative fluxes.
chireal(kind=R8P)inCoefficiente velocità trasporto errori divergenza campi (non usato)

Call graph

compute_convective_fluxes_maxwell_div_d

Compute convective fluxes. J corrected with phi:

 Fx(1)  =  phi     Fy(1)  = -Bz/muz   Fz(1)  =  By/muy
 Fx(2)  =  Bz/muz  Fy(2)  =  phi      Fz(2)  = -Bx/mux
 Fx(3)  = -By/muy  Fy(3)  =  Bx/mux   Fz(3)  =  phi
 Fx(4)  =  0       Fy(4)  =  Dz/epsz  Fz(4)  = -Dy/epsy
 Fx(5)  = -Dz/epsz Fy(5)  =  0        Fz(5)  =  Dx/epsx
 Fx(6)  =  Dy/epsy Fy(6)  = -Dx/epsx  Fz(6)  =  0
 Fx(7)  =  0       Fy(7)  =  0        Fz(7)  =  0
 Fx(8)  =  0       Fy(8)  =  0        Fz(8)  =  0
 Fx(9)  =  0       Fy(9)  =  0        Fz(9)  =  0
 Fx(10) =  ch^2*Dx Fy(10) =  ch^2*Dy  Fz(10) =  ch^2*Dz
fortran
subroutine compute_convective_fluxes_maxwell_div_d(sir, q, f, chi)

Arguments

NameTypeIntentAttributesDescription
sirreal(kind=R8P)inDirection array
qreal(kind=R8P)inAuxiliary variables.
freal(kind=R8P)inoutConservative fluxes.
chireal(kind=R8P)inCoefficiente velocità trasporto errori divergenza campi

compute_convective_fluxes_maxwell_div_b

Compute convective fluxes. J corrected with phi:

 Fx(1)  =  phi     Fy(1)  = -Bz/muz   Fz(1)  =  By/muy
 Fx(2)  =  Bz/muz  Fy(2)  =  phi      Fz(2)  = -Bx/mux
 Fx(3)  = -By/muy  Fy(3)  =  Bx/mux   Fz(3)  =  phi
 Fx(4)  =  0       Fy(4)  =  Dz/epsz  Fz(4)  = -Dy/epsy
 Fx(5)  = -Dz/epsz Fy(5)  =  0        Fz(5)  =  Dx/epsx
 Fx(6)  =  Dy/epsy Fy(6)  = -Dx/epsx  Fz(6)  =  0
 Fx(7)  =  0       Fy(7)  =  0        Fz(7)  =  0
 Fx(8)  =  0       Fy(8)  =  0        Fz(8)  =  0
 Fx(9)  =  0       Fy(9)  =  0        Fz(9)  =  0
 Fx(10) =  ch^2*Dx Fy(10) =  ch^2*Dy  Fz(10) =  ch^2*Dz
fortran
subroutine compute_convective_fluxes_maxwell_div_b(sir, q, f, chi)

Arguments

NameTypeIntentAttributesDescription
sirreal(kind=R8P)inDirection array
qreal(kind=R8P)inAuxiliary variables.
freal(kind=R8P)inoutConservative fluxes.
chireal(kind=R8P)inCoefficiente velocità trasporto errori divergenza campi

compute_convective_fluxes_maxwell_div_d_b

Compute convective fluxes. J corrected with phi and psi:

 Fx(1)  =  phi     Fy(1)  = -Bz/muz    Fz(1)  =  By/muy
 Fx(2)  =  Bz/muz  Fy(2)  =  phi       Fz(2)  = -Bx/mux
 Fx(3)  = -By/muy  Fy(3)  =  Bx/mux    Fz(3)  =  phi
 Fx(4)  =  csi     Fy(4)  =  Dz/epsz   Fz(4)  = -Dy/epsy
 Fx(5)  = -Dz/epsz Fy(5)  =  csi       Fz(5)  =  Dx/epsx
 Fx(6)  =  Dy/epsy Fy(6)  = -Dx/epsx   Fz(6)  =  csi
 Fx(7)  =  0       Fy(7)  =  0         Fz(7)  =  0
 Fx(8)  =  0       Fy(8)  =  0         Fz(8)  =  0
 Fx(9)  =  0       Fy(9)  =  0         Fz(9)  =  0
 Fx(10) =  ch^2*Dx Fy(10) =  ch^2*Dy   Fz(10) =  ch^2*Dz
 Fx(11) =  ch^2*Bx Fy(10) =  ch^2*By   Fz(10) =  ch^2*Bz
fortran
subroutine compute_convective_fluxes_maxwell_div_d_b(sir, q, f, chi)

Arguments

NameTypeIntentAttributesDescription
sirreal(kind=R8P)inDirection array
qreal(kind=R8P)inAuxiliary variables.
freal(kind=R8P)inoutConservative fluxes.
chireal(kind=R8P)inCoefficiente velocità trasporto errori divergenza campi

compute_eigenvalues_vector

Compute eigenvalues vector for Maxwell equations in direction sir.

fortran
subroutine compute_eigenvalues_vector(sir, p)

Arguments

NameTypeIntentAttributesDescription
sirreal(kind=R8P)inDirection array
preal(kind=R8P)outEigenvalues vector