Report Typos and Errors    
Semi-Lagrangian Library
Modular library for kinetic and gyrokinetic simulations of plasmas in fusion energy devices.
sll_m_sim_base_class.F90
Go to the documentation of this file.
1 
4 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
5  use sll_m_utilities, only: &
7 
8  implicit none
9 
10  public :: &
12 
13  private
14 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
15 
16  ! Basic signature for all simulations. These can be declared, initialized,
17  ! executed and deleted. This abstract class provides the general interface
18  ! to be implemented in all specific simulations. To consider: maybe this
19  ! is general enough to not merit a distinction among the dimensionality of
20  ! the simulation.
21 
23  type, abstract :: sll_c_simulation_base_class
24  contains
26  procedure(simulation_initializer), pass(sim), deferred :: &
27  init_from_file
29  procedure(simulation_execute), pass(sim), deferred :: run
31 
32 #ifndef DOXYGEN_SHOULD_SKIP_THIS
33 
34  abstract interface
35 
38  subroutine simulation_initializer(sim, filename)
40  class(sll_c_simulation_base_class), intent(inout) :: sim
41  character(len=*), intent(in) :: filename
42  end subroutine simulation_initializer
43  end interface
44 
45  abstract interface
46 
48  subroutine simulation_execute(sim)
50  class(sll_c_simulation_base_class), intent(inout) :: sim
51  end subroutine simulation_execute
52  end interface
53 
54 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
55 
56 end module sll_m_sim_base
Parent class module for simulation.
Some common numerical utilities.
subroutine, public sll_s_int2string(istep, cstep)
Convert an integer < 9999 to a 4 characters string.
    Report Typos and Errors