Report Typos and Errors    
Semi-Lagrangian Library
Modular library for kinetic and gyrokinetic simulations of plasmas in fusion energy devices.
sll_m_poisson_3d_base.F90
Go to the documentation of this file.
1 
7 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
8 #include "sll_working_precision.h"
9 
10  implicit none
11 
12  public :: &
14 
15  private
16 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
17 
19  type, abstract :: sll_c_poisson_3d_base
20  contains
22  procedure(signature_compute_phi_from_rho_3d), deferred, pass(poisson) :: &
23  compute_phi_from_rho
25  procedure(signature_compute_e_from_rho_3d), deferred, pass(poisson) :: &
26  compute_e_from_rho
27  end type sll_c_poisson_3d_base
28 
29 #ifndef DOXYGEN_SHOULD_SKIP_THIS
30 
31  abstract interface
32  ! solves -\Delta phi = rho in 2d or similar thing
33  subroutine signature_compute_phi_from_rho_3d(poisson, phi, rho)
36  class(sll_c_poisson_3d_base), target :: poisson
37  sll_real64, dimension(:, :, :), intent(in) :: rho
38  sll_real64, dimension(:, :, :), intent(out) :: phi
39  end subroutine signature_compute_phi_from_rho_3d
40  end interface
41 
42 ! abstract interface
43 ! ! solves E = -\nabla Phi in 2d
44 ! subroutine signature_compute_E_from_phi_2d( poisson, phi, E1, E2 )
45 ! use sll_m_working_precision
46 ! import sll_c_poisson_2d_base
47 ! class(sll_c_poisson_2d_base) :: poisson
48 ! sll_real64,dimension(:,:),intent(in) :: phi
49 ! sll_real64,dimension(:,:),intent(out) :: E1
50 ! sll_real64,dimension(:,:),intent(out) :: E2
51 ! end subroutine signature_compute_E_from_phi_2d
52 ! end interface
53 
54  abstract interface
55  ! solves E = -\nabla Phi with -\Delta phi = rho in 2d
56  subroutine signature_compute_e_from_rho_3d(poisson, E1, E2, E3, rho)
59  class(sll_c_poisson_3d_base) :: poisson
60  sll_real64, dimension(:, :, :), intent(in) :: rho
61  sll_real64, dimension(:, :, :), intent(out) :: e1
62  sll_real64, dimension(:, :, :), intent(out) :: e2
63  sll_real64, dimension(:, :, :), intent(out) :: e3
64  end subroutine signature_compute_e_from_rho_3d
65  end interface
66 
67 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
68 
69 end module sll_m_poisson_3d_base
Module interface to solve Poisson equation in 3D.
Module to select the kind parameter.
Abstract class for Poisson solver in 3 dimensions.
    Report Typos and Errors