Report Typos and Errors    
Semi-Lagrangian Library
Modular library for kinetic and gyrokinetic simulations of plasmas in fusion energy devices.
Data Types | Modules | Macros | Functions/Subroutines | Variables
sll_m_initial_distribution.F90 File Reference
#include "sll_working_precision.h"
#include "sll_errors.h"
#include "sll_k_make_cos_onegaussian_init.F90"
#include "sll_k_make_cos_twogaussian_init.F90"
Include dependency graph for sll_m_initial_distribution.F90:

Go to the source code of this file.

Data Types

type  sll_c_distribution_params
 Abstract data type for parameters of initial distribution. More...
 
type  sll_t_params_cos_gaussian
 Data type for distribution function with (multiple) Gaussians in v and one plus cosine perturbations in x. More...
 
type  sll_t_params_noise_gaussian
 
type  sll_t_params_cos_gaussian_screwpinch
 
interface  signature_empty
 
interface  signature_eval
 
interface  signature_evalx
 
interface  signature_evalv
 

Modules

module  sll_m_initial_distribution
 Parameters to define common initial distributions.
 

Macros

#define MAKE_COS_ONEGAUSSIAN_INIT(fname, dimx, dimv, dimalpha)
 
#define MAKE_COS_TWOGAUSSIAN_INIT(fname, dimx, dimv, dimalpha)
 

Functions/Subroutines

real(kind=f64) function sll_f_cos_gaussian (self, x, v, m)
 
real(kind=f64) function sll_f_cos (self, x, v)
 
real(kind=f64) function sll_f_gaussian (self, v, x, m)
 
real(kind=f64) function sll_f_gaussian_pnoise (self, v, x, m)
 
real(kind=f64) function sll_f_noise (self, x, v)
 
real(kind=f64) function sll_f_noise_gaussian (self, x, v, m)
 
real(kind=f64) function sll_f_cos_gaussian_screwpinch (self, x, v, m)
 
real(kind=f64) function sll_f_cos_screwpinch (self, x, v)
 
real(kind=f64) function sll_f_gaussian_screwpinch (self, v, x, m)
 
subroutine free_cos_gaussian (self)
 
subroutine free_noise_gaussian (self)
 
subroutine noise_gaussian_init (self, n_gaussians, dims, file_id, profile)
 
subroutine noise_gaussian_init_1d2v (self, file_id)
 
subroutine noise_gaussian_init_3d3v (self, file_id)
 
subroutine cos_gaussian_init (self, descriptor, dims, file_id, profile)
 
subroutine, public sll_s_initial_distribution_new (distribution, dims, file_id, params, profile)
 Factory function for sll_c_distribution_params, parameters read form input file. More...
 
subroutine, public sll_s_initial_distribution_file_new (dims, nml_file, params, profile)
 Factory function for sll_c_distribution_params, parameters read form input file. More...
 
subroutine, public sll_s_initial_distribution_new_descriptor (distribution, dims, file_id, params, profile)
 Factory function for sll_c_distribution_params, parameters read form input file. Version build upon descriptors. More...
 
subroutine cossum_multigaussian_init_1d2v (file_id, params, n_gaussians)
 1d2v subroutine for initialization of sum of arbitrary number of Gaussians. Note that v_thermal_1/2 refers her to the velocity dimension instead of the number of the Gaussian in the sum as for the twogaussian case. More...
 

Variables

integer(kind=i32), parameter, public sll_p_sumcos_onegaussian = 0
 Descriptor for (1+\sum cos( kx * x_i))*exp(-0.5(v-v_mean)**2/v_thermal**2) More...
 
integer(kind=i32), parameter, public sll_p_cossum_onegaussian = 1
 Descriptor for (1+cos( \sum kx_i * x_i))*exp(-0.5(v-v_mean)**2/v_thermal**2) More...
 
integer(kind=i32), parameter, public sll_p_sumcos_twogaussian = 2
 as sll_p_sumcos_onegaussian but with sum of two Gaussians More...
 
integer(kind=i32), parameter, public sll_p_cossum_twogaussian = 3
 as sll_p_sumcos_onegaussian but with sum of two Gaussians More...
 
integer(kind=i32), parameter, public sll_p_cossum_multigaussian1 = 4
 
integer(kind=i32), parameter sll_p_cossum_multigaussian2 = 5
 
integer(kind=i32), parameter sll_p_cossum_multigaussian11 = 14
 
integer(kind=i32), parameter sll_p_noise_multigaussian1 = 15
 
integer(kind=i32), parameter sll_p_noise_multigaussian11 = 16
 

Macro Definition Documentation

◆ MAKE_COS_ONEGAUSSIAN_INIT

#define MAKE_COS_ONEGAUSSIAN_INIT (   fname,
  dimx,
  dimv,
  dimalpha 
)
Value:
1 subroutine fname( file_id, params );\
2  sll_int32, intent( in ) :: file_id;\
3  type( sll_t_params_cos_gaussian ), intent( inout ) :: params; \
4  sll_real64 :: kx(dimx)= 0.0_f64; \
5  sll_real64 :: modnum(dimx)= 0.0_f64; \
6  sll_real64 :: alpha(dimalpha); \
7  sll_real64 :: phase_shift(dimalpha) = 0.0_f64; \
8  sll_real64 :: v_thermal(dimv); \
9  sll_real64 :: v_mean(dimv)= 0.0_f64; \
10  sll_int32 :: j; \
11  namelist /cos_onegaussian/ kx, modnum, alpha, phase_shift, v_thermal, v_mean; \
12  params%n_cos = dimalpha;

◆ MAKE_COS_TWOGAUSSIAN_INIT

#define MAKE_COS_TWOGAUSSIAN_INIT (   fname,
  dimx,
  dimv,
  dimalpha 
)
Value:
1  subroutine fname( file_id, params ); \
2  sll_int32, intent( in ) :: file_id; \
3  type( sll_t_params_cos_gaussian ), intent( inout ) :: params; \
4  sll_real64 :: kx(dimx)= 0.0_f64; \
5  sll_real64 :: modnum(dimx)= 0.0_f64; \
6  sll_real64 :: alpha(dimalpha); \
7  sll_real64 :: phase_shift(dimalpha) = 0.0_f64; \
8  sll_real64 :: v_thermal_1(dimv); \
9  sll_real64 :: v_mean_1(dimv); \
10  sll_real64 :: v_thermal_2(dimv); \
11  sll_real64 :: v_mean_2(dimv); \
12  sll_real64 :: delta; \
13  sll_int32 :: j; \
14  namelist /cos_twogaussian/ kx, modnum, alpha, phase_shift, v_thermal_1, v_mean_1, v_thermal_2, v_mean_2, delta; \
15  params%n_cos = dimalpha;
    Report Typos and Errors