korc_synthetic_camera Module



Contents


Variables

TypeVisibility AttributesNameInitial
type(CAMERA), private :: cam
type(ANGLES), private :: ang
type(POLOIDAL_PLANE), private :: pplane
real(kind=rp), private, parameter:: Tol =1.0E-5_rp
real(kind=rp), private, parameter:: CGS_h =6.6261E-27_rp

Planck constant in erg*s

real(kind=rp), private, parameter:: CGS_C =1.0E2_rp*C_C
real(kind=rp), private, parameter:: CGS_E =3.0E9_rp*C_E
real(kind=rp), private, parameter:: CGS_ME =1.0E3_rp*C_ME

Interfaces

private interface save_snapshot_var

  • private subroutine save_snapshot_var_1d(params, var, var_name)

    Arguments

    Type IntentOptional AttributesName
    type(KORC_PARAMS), intent(in) :: params
    real(kind=rp), intent(in), DIMENSION(:), ALLOCATABLE:: var
    character(len=MAX_STRING_LENGTH), intent(in) :: var_name
  • private subroutine save_snapshot_var_2d(params, var, var_name)

    Arguments

    Type IntentOptional AttributesName
    type(KORC_PARAMS), intent(in) :: params
    real(kind=rp), intent(in), DIMENSION(:,:), ALLOCATABLE:: var
    character(len=MAX_STRING_LENGTH), intent(in) :: var_name
  • private subroutine save_snapshot_var_3d(params, var, var_name)

    Arguments

    Type IntentOptional AttributesName
    type(KORC_PARAMS), intent(in) :: params
    real(kind=rp), intent(in), DIMENSION(:,:,:), ALLOCATABLE:: var
    character(len=MAX_STRING_LENGTH), intent(in) :: var_name
  • private subroutine save_snapshot_var_4d(params, var, var_name)

    Arguments

    Type IntentOptional AttributesName
    type(KORC_PARAMS), intent(in) :: params
    real(kind=rp), intent(in), DIMENSION(:,:,:,:), ALLOCATABLE:: var
    character(len=MAX_STRING_LENGTH), intent(in) :: var_name

Derived Types

type, private :: POLOIDAL_PLANE

Components

TypeVisibility AttributesNameInitial
real(kind=rp), public, DIMENSION(:), ALLOCATABLE:: nodes_R
real(kind=rp), public, DIMENSION(:), ALLOCATABLE:: nodes_Z
real(kind=rp), public :: DR
real(kind=rp), public :: DZ
real(kind=rp), public :: Rmax
real(kind=rp), public :: Rmin
real(kind=rp), public :: Zmax
real(kind=rp), public :: Zmin
integer, public, DIMENSION(2):: grid_dims

type, private :: CAMERA

Components

TypeVisibility AttributesNameInitial
logical, public :: camera_on
real(kind=rp), public :: start_at

In seconds

real(kind=rp), public :: Riw

Radial position of inner wall

integer, public, DIMENSION(2):: num_pixels

Number of pixels (X,Y)

real(kind=rp), public, DIMENSION(2):: sensor_size

In meters (horizontal,vertical)

real(kind=rp), public :: pixel_area

Area of a single pixel of the camera sensor. This based on sensor_size and num_pixels.

real(kind=rp), public :: focal_length

Focal length in meters

real(kind=rp), public, DIMENSION(2):: position

Position of camera (R,Z)

real(kind=rp), public :: incline

Incline of camera in degrees

real(kind=rp), public :: horizontal_angle_view

Horizontal angle of view in radians

real(kind=rp), public :: vertical_angle_view

Vertical angle of view in radians

real(kind=rp), public, DIMENSION(:), ALLOCATABLE:: pixels_nodes_x

In meters

real(kind=rp), public, DIMENSION(:), ALLOCATABLE:: pixels_nodes_y

In meters

real(kind=rp), public, DIMENSION(:), ALLOCATABLE:: pixels_edges_x

In meters

real(kind=rp), public, DIMENSION(:), ALLOCATABLE:: pixels_edges_y

In meters

real(kind=rp), public :: lambda_min

Minimum wavelength in cm

real(kind=rp), public :: lambda_max

Maximum wavelength in cm

integer, public :: Nlambda
real(kind=rp), public :: Dlambda

In cm

real(kind=rp), public, DIMENSION(:), ALLOCATABLE:: lambda

In cm

logical, public :: integrated_opt
logical, public :: toroidal_sections
logical, public :: photon_count
integer, public :: ntor_sections
real(kind=rp), public, DIMENSION(3):: r

type, private :: ANGLES

Components

TypeVisibility AttributesNameInitial
real(kind=rp), public, DIMENSION(:), ALLOCATABLE:: eta
real(kind=rp), public, DIMENSION(:), ALLOCATABLE:: beta
real(kind=rp), public, DIMENSION(:), ALLOCATABLE:: psi
real(kind=rp), public, DIMENSION(:), ALLOCATABLE:: ax
real(kind=rp), public, DIMENSION(:), ALLOCATABLE:: ay
real(kind=rp), public :: max_ax
real(kind=rp), public :: min_ax
real(kind=rp), public :: max_ay
real(kind=rp), public :: min_ay
real(kind=rp), public :: ac
real(kind=rp), public :: threshold_angle
real(kind=rp), public :: threshold_radius

Functions

private function cross(a, b)

Arguments

Type IntentOptional AttributesName
real(kind=rp), intent(in), DIMENSION(3):: a
real(kind=rp), intent(in), DIMENSION(3):: b

Return Value real(kind=rp), DIMENSION(3)

private function clockwise_rotation(x, t)

Arguments

Type IntentOptional AttributesName
real(kind=rp), intent(in), DIMENSION(2):: x
real(kind=rp), intent(in) :: t

Return Value real(kind=rp), DIMENSION(2)

private function anticlockwise_rotation(x, t)

Arguments

Type IntentOptional AttributesName
real(kind=rp), intent(in), DIMENSION(2):: x
real(kind=rp), intent(in) :: t

Return Value real(kind=rp), DIMENSION(2)

private function besselk(v, x)

Arguments

Type IntentOptional AttributesName
real(kind=rp), intent(in) :: v
real(kind=rp), intent(in) :: x

Return Value real(kind=rp)

private function zeta(g, p, k, l)

Arguments

Type IntentOptional AttributesName
real(kind=rp), intent(in) :: g
real(kind=rp), intent(in) :: p
real(kind=rp), intent(in) :: k
real(kind=rp), intent(in) :: l

Return Value real(kind=rp)

private function fx(g, p, x)

Arguments

Type IntentOptional AttributesName
real(kind=rp), intent(in) :: g
real(kind=rp), intent(in) :: p
real(kind=rp), intent(in) :: x

Return Value real(kind=rp)

private function Po(g, p, k, l)

Arguments

Type IntentOptional AttributesName
real(kind=rp), intent(in) :: g
real(kind=rp), intent(in) :: p
real(kind=rp), intent(in) :: k
real(kind=rp), intent(in) :: l

Return Value real(kind=rp)

private function arg(g, p, k, l, x)

Arguments

Type IntentOptional AttributesName
real(kind=rp), intent(in) :: g
real(kind=rp), intent(in) :: p
real(kind=rp), intent(in) :: k
real(kind=rp), intent(in) :: l
real(kind=rp), intent(in) :: x

Return Value real(kind=rp)

private function P1(g, p, k, l, x)

Arguments

Type IntentOptional AttributesName
real(kind=rp), intent(in) :: g
real(kind=rp), intent(in) :: p
real(kind=rp), intent(in) :: k
real(kind=rp), intent(in) :: l
real(kind=rp), intent(in) :: x

Return Value real(kind=rp)

private function Psyn(g, p, k, l, x)

Arguments

Type IntentOptional AttributesName
real(kind=rp), intent(in) :: g
real(kind=rp), intent(in) :: p
real(kind=rp), intent(in) :: k
real(kind=rp), intent(in) :: l
real(kind=rp), intent(in) :: x

Return Value real(kind=rp)

private function chic(g, k, l)

Arguments

Type IntentOptional AttributesName
real(kind=rp), intent(in) :: g
real(kind=rp), intent(in) :: k
real(kind=rp), intent(in) :: l

Return Value real(kind=rp)

private function psic(k, l)

Arguments

Type IntentOptional AttributesName
real(kind=rp), intent(in) :: k
real(kind=rp), intent(in) :: l

Return Value real(kind=rp)

private function IntK(v, x)

Arguments

Type IntentOptional AttributesName
real(kind=rp), intent(in) :: v
real(kind=rp), intent(in) :: x

Return Value real(kind=rp)

private function IntBesselK(a, b)

Arguments

Type IntentOptional AttributesName
real(kind=rp), intent(in) :: a
real(kind=rp), intent(in) :: b

Return Value real(kind=rp)

private function trapz(x, f)

Arguments

Type IntentOptional AttributesName
real(kind=rp), intent(in), DIMENSION(:):: x
real(kind=rp), intent(in), DIMENSION(:):: f

Return Value real(kind=rp)

public function rad2deg(t)

Arguments

Type IntentOptional AttributesName
real(kind=rp), intent(in) :: t

Return Value real(kind=rp)


Subroutines

public subroutine test_analytical_formula()

Arguments

None

public subroutine test(params)

Arguments

Type IntentOptional AttributesName
type(KORC_PARAMS), intent(in) :: params

public subroutine testbesselkv()

Arguments

None

public subroutine initialize_synthetic_camera(params, F)

Arguments

Type IntentOptional AttributesName
type(KORC_PARAMS), intent(in) :: params
type(FIELDS), intent(in) :: F

public subroutine P_integral(z, P)

Arguments

Type IntentOptional AttributesName
real(kind=rp), intent(in), DIMENSION(:), ALLOCATABLE:: z
real(kind=rp), intent(inout), DIMENSION(:), ALLOCATABLE:: P

private subroutine check_if_visible(X, V, threshold_angle, bool, angle, XC)

Arguments

Type IntentOptional AttributesName
real(kind=rp), intent(in), DIMENSION(3):: X
real(kind=rp), intent(in), DIMENSION(3):: V
real(kind=rp), intent(in) :: threshold_angle
logical, intent(out) :: bool
real(kind=rp), intent(out) :: angle
real(kind=rp), intent(out), optional DIMENSION(3):: XC

public subroutine is_visible(X, V, threshold_angle, bool, ii, jj)

Arguments

Type IntentOptional AttributesName
real(kind=rp), intent(in), DIMENSION(3):: X
real(kind=rp), intent(in), DIMENSION(3):: V
real(kind=rp), intent(in) :: threshold_angle
logical, intent(out) :: bool
integer, intent(out) :: ii
integer, intent(out) :: jj

private subroutine calculate_rotation_angles(X, bpa, apa)

NX

Arguments

Type IntentOptional AttributesName
real(kind=rp), intent(in), DIMENSION(3):: X
logical, intent(inout), DIMENSION(:,:,:), ALLOCATABLE:: bpa
real(kind=rp), intent(inout), DIMENSION(:,:,:), ALLOCATABLE:: apa

private subroutine angular_density(params, spp)

Arguments

Type IntentOptional AttributesName
type(KORC_PARAMS), intent(in) :: params
type(SPECIES), intent(in), DIMENSION(:), ALLOCATABLE:: spp

public subroutine integrated_angular_density(params, spp)

Arguments

Type IntentOptional AttributesName
type(KORC_PARAMS), intent(in) :: params
type(SPECIES), intent(in), DIMENSION(:), ALLOCATABLE:: spp

private subroutine integrated_SE_3D(params, spp)

Arguments

Type IntentOptional AttributesName
type(KORC_PARAMS), intent(in) :: params
type(SPECIES), intent(in), DIMENSION(:), ALLOCATABLE:: spp

private subroutine spectral_density(params, spp)

Arguments

Type IntentOptional AttributesName
type(KORC_PARAMS), intent(in) :: params
type(SPECIES), intent(in), DIMENSION(:), ALLOCATABLE:: spp

public subroutine integrated_spectral_density(params, spp)

Arguments

Type IntentOptional AttributesName
type(KORC_PARAMS), intent(in) :: params
type(SPECIES), intent(in), DIMENSION(:), ALLOCATABLE:: spp

private subroutine save_synthetic_camera_params(params)

Arguments

Type IntentOptional AttributesName
type(KORC_PARAMS), intent(in) :: params

private subroutine save_snapshot_var_1d(params, var, var_name)

Arguments

Type IntentOptional AttributesName
type(KORC_PARAMS), intent(in) :: params
real(kind=rp), intent(in), DIMENSION(:), ALLOCATABLE:: var
character(len=MAX_STRING_LENGTH), intent(in) :: var_name

private subroutine save_snapshot_var_2d(params, var, var_name)

Arguments

Type IntentOptional AttributesName
type(KORC_PARAMS), intent(in) :: params
real(kind=rp), intent(in), DIMENSION(:,:), ALLOCATABLE:: var
character(len=MAX_STRING_LENGTH), intent(in) :: var_name

private subroutine save_snapshot_var_3d(params, var, var_name)

Arguments

Type IntentOptional AttributesName
type(KORC_PARAMS), intent(in) :: params
real(kind=rp), intent(in), DIMENSION(:,:,:), ALLOCATABLE:: var
character(len=MAX_STRING_LENGTH), intent(in) :: var_name

private subroutine save_snapshot_var_4d(params, var, var_name)

Arguments

Type IntentOptional AttributesName
type(KORC_PARAMS), intent(in) :: params
real(kind=rp), intent(in), DIMENSION(:,:,:,:), ALLOCATABLE:: var
character(len=MAX_STRING_LENGTH), intent(in) :: var_name

public subroutine synthetic_camera(params, spp)

Arguments

Type IntentOptional AttributesName
type(KORC_PARAMS), intent(in) :: params
type(SPECIES), intent(in), DIMENSION(:), ALLOCATABLE:: spp