opticalProperties Module

module implments the optical property abstract type and the types that inheirt from it abstract optical property type



Interfaces

public interface mono

  • private function init_mono(mus, mua, hgg, n) result(res)

    Arguments

    Type IntentOptional Attributes Name
    real(kind=wp), intent(in) :: mus
    real(kind=wp), intent(in) :: mua
    real(kind=wp), intent(in) :: hgg
    real(kind=wp), intent(in) :: n

    Return Value type(mono)

public interface opticalProp_t

public interface spectral

  • private function init_spectral(mus, mua, hgg, n, flux) result(res)

    Arguments

    Type IntentOptional Attributes Name
    real(kind=wp), intent(in), allocatable :: mus(:,:)
    real(kind=wp), intent(in), allocatable :: mua(:,:)
    real(kind=wp), intent(in), allocatable :: hgg(:,:)
    real(kind=wp), intent(in), allocatable :: n(:,:)
    real(kind=wp), intent(in), allocatable :: flux(:,:)

    Return Value type(spectral)


Abstract Interfaces

abstract interface

  • public subroutine updateInterface(this, wavelength)

    Arguments

    Type IntentOptional Attributes Name
    class(opticalProp_base), intent(inout) :: this
    real(kind=wp), intent(out) :: wavelength

Derived Types

type, public, extends(opticalProp_base) ::  mono

Components

Type Visibility Attributes Name Initial
real(kind=wp), public :: albedo

real(kind=wp), public :: g2

g factor squared

real(kind=wp), public :: hgg

g factor

real(kind=wp), public :: kappa

real(kind=wp), public :: mua

absoprtion coeff.

real(kind=wp), public :: mus

scattering coeff.

real(kind=wp), public :: n

refractive index

Constructor

private function init_mono (mus, mua, hgg, n)

Type-Bound Procedures

procedure, public :: update => updateMono

type, public, abstract ::  opticalProp_base

Components

Type Visibility Attributes Name Initial
real(kind=wp), public :: albedo

real(kind=wp), public :: g2

g factor squared

real(kind=wp), public :: hgg

g factor

real(kind=wp), public :: kappa

real(kind=wp), public :: mua

absoprtion coeff.

real(kind=wp), public :: mus

scattering coeff.

real(kind=wp), public :: n

refractive index

Type-Bound Procedures

procedure(updateInterface), public, deferred :: update

type, public, extends(opticalProp_base) ::  opticalProp_t

Components

Type Visibility Attributes Name Initial
real(kind=wp), public :: albedo

real(kind=wp), public :: g2

g factor squared

real(kind=wp), public :: hgg

g factor

real(kind=wp), public :: kappa

real(kind=wp), public :: mua

absoprtion coeff.

real(kind=wp), public :: mus

scattering coeff.

real(kind=wp), public :: n

refractive index

class(opticalProp_base), public, allocatable :: value

Constructor

private function opticaProp_new (rhs)

Type-Bound Procedures

generic, public :: assignment(=) => opticalProp_t_assign
procedure, private :: opticalProp_t_assign
procedure, public :: update => update_opticalProp_t

type, public, extends(opticalProp_base) ::  spectral

Components

Type Visibility Attributes Name Initial
real(kind=wp), public :: albedo

type(piecewise1D), private :: flux
real(kind=wp), public :: g2

g factor squared

real(kind=wp), public :: hgg

g factor

type(piecewise1D), private :: hgg_a
real(kind=wp), public :: kappa

real(kind=wp), public :: mua

absoprtion coeff.

type(piecewise1D), private :: mua_a
real(kind=wp), public :: mus

scattering coeff.

type(piecewise1D), private :: mus_a
real(kind=wp), public :: n

refractive index

type(piecewise1D), private :: n_a

Constructor

private function init_spectral (mus, mua, hgg, n, flux)

Type-Bound Procedures

procedure, public :: update => updateSpectral

Functions

private function init_mono(mus, mua, hgg, n) result(res)

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: mus
real(kind=wp), intent(in) :: mua
real(kind=wp), intent(in) :: hgg
real(kind=wp), intent(in) :: n

Return Value type(mono)

private function init_spectral(mus, mua, hgg, n, flux) result(res)

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in), allocatable :: mus(:,:)
real(kind=wp), intent(in), allocatable :: mua(:,:)
real(kind=wp), intent(in), allocatable :: hgg(:,:)
real(kind=wp), intent(in), allocatable :: n(:,:)
real(kind=wp), intent(in), allocatable :: flux(:,:)

Return Value type(spectral)

private function opticaProp_new(rhs) result(lhs)

Arguments

Type IntentOptional Attributes Name
class(opticalProp_base), intent(in) :: rhs

Return Value type(opticalProp_t)


Subroutines

private subroutine opticalProp_t_assign(lhs, rhs)

Arguments

Type IntentOptional Attributes Name
class(opticalProp_t), intent(inout) :: lhs
class(opticalProp_base), intent(in) :: rhs

private subroutine updateMono(this, wavelength)

Arguments

Type IntentOptional Attributes Name
class(mono), intent(inout) :: this
real(kind=wp), intent(out) :: wavelength

private subroutine updateSpectral(this, wavelength)

Arguments

Type IntentOptional Attributes Name
class(spectral), intent(inout) :: this
real(kind=wp), intent(out) :: wavelength

private subroutine update_opticalProp_t(this, wavelength)

Arguments

Type IntentOptional Attributes Name
class(opticalProp_t), intent(inout) :: this
real(kind=wp), intent(out) :: wavelength