FokkerPlanck1D_mod Module

модуль содержит функции для решения одномерного уравнения Фоккер-Планка



Interfaces

public interface FokkerPlanck1D

  • public function FokkerPlanck1D_constructor(e, v_lim, v, f) result(this)

    конструктор для FokkerPlanck1D

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), value :: e
    real(kind=dp), value :: v_lim
    real(kind=dp), value :: v(:)
    real(kind=dp), value :: f(:)

    Return Value type(FokkerPlanck1D)


Derived Types

type, public ::  FokkerPlanck1D

solver of FP eq

Components

Type Visibility Attributes Name Initial
real(kind=dp), public :: enorm = 0

электрическое поле

real(kind=dp), public :: v_lim = 0

верхняя граница скорости электронов

real(kind=dp), public, allocatable :: v(:)

сетка скоростей

real(kind=dp), public, allocatable :: f(:)

распределение

integer, public :: i0 = 0

size of distribution grid

real(kind=dp), public :: alfa2 = 0

поле со знаком

integer, public :: n = 0

size of local grid

real(kind=dp), public :: h = 0

step of local grid

real(kind=dp), public, allocatable :: d1(:)

диффузия

real(kind=dp), public, allocatable :: d2(:)

диффузия

real(kind=dp), public, allocatable :: d3(:)

диффузия

Constructor

public function FokkerPlanck1D_constructor (e, v_lim, v, f)

конструктор для FokkerPlanck1D

Type-Bound Procedures

procedure, public :: print => FokkerPlanck1D_print
procedure, public :: solve_time_step => FokkerPlanck1D_solve_time_step
procedure, public :: init_zero_diffusion => FokkerPlanck1D_init_zero_diffusion
procedure, public :: init_diffusion => FokkerPlanck1D_init_diffusion

Functions

public function FokkerPlanck1D_constructor(e, v_lim, v, f) result(this)

конструктор для FokkerPlanck1D

Arguments

Type IntentOptional Attributes Name
real(kind=dp), value :: e
real(kind=dp), value :: v_lim
real(kind=dp), value :: v(:)
real(kind=dp), value :: f(:)

Return Value type(FokkerPlanck1D)


Subroutines

public subroutine FokkerPlanck1D_print(this)

Arguments

Type IntentOptional Attributes Name
class(FokkerPlanck1D), intent(in) :: this

public subroutine FokkerPlanck1D_init_zero_diffusion(this)

Arguments

Type IntentOptional Attributes Name
class(FokkerPlanck1D), intent(inout) :: this

public subroutine FokkerPlanck1D_init_diffusion(this, dif)

инициализация диффузии для схемы савельева

Arguments

Type IntentOptional Attributes Name
class(FokkerPlanck1D), intent(inout) :: this
real(kind=dp), intent(in), dimension(:) :: dif

public subroutine FokkerPlanck1D_solve_time_step(this, dt, nt)

!!!!!!!!!! solve problem !!!!!!!!!!!!!!!!!!!!!!!!!!

Arguments

Type IntentOptional Attributes Name
class(FokkerPlanck1D), intent(inout) :: this
real(kind=dp), intent(in) :: dt
integer, intent(in) :: nt

public subroutine burying_procedure(v, f0, df0)

процедура закапывания

Arguments

Type IntentOptional Attributes Name
real(kind=8), intent(in) :: v(:)
real(kind=8), intent(inout) :: f0(:)
real(kind=8), intent(inout), optional :: df0(:)