tem_miescatter_module Module

This module gathers the definition of the analytical solution by scattering of an electromagnetic wave at a dielectric sphere/cylinder. The solution is given by means of Mie-series. The solution is given in: Cai, W., & Deng, S. (2003). An upwinding embedded boundary method for Maxwell's equations in media with material interfaces: 2D case. Journal of Computational Physics, 190(1), 159-183. doi:10.1016/S0021-9991(03)00269-9


Uses

  • module~~tem_miescatter_module~~UsesGraph module~tem_miescatter_module tem_miescatter_module aot_table_module aot_table_module module~tem_miescatter_module->aot_table_module aotus_module aotus_module module~tem_miescatter_module->aotus_module flu_binding flu_binding module~tem_miescatter_module->flu_binding module~env_module env_module module~tem_miescatter_module->module~env_module module~tem_aux_module tem_aux_module module~tem_miescatter_module->module~tem_aux_module module~tem_logging_module tem_logging_module module~tem_miescatter_module->module~tem_logging_module module~tem_param_module tem_param_module module~tem_miescatter_module->module~tem_param_module module~env_module->aotus_module module~env_module->flu_binding iso_fortran_env iso_fortran_env module~env_module->iso_fortran_env mpi mpi module~env_module->mpi module~tem_aux_module->aot_table_module module~tem_aux_module->aotus_module module~tem_aux_module->flu_binding module~tem_aux_module->module~env_module module~tem_aux_module->module~tem_logging_module module~soi_revision_module soi_revision_module module~tem_aux_module->module~soi_revision_module module~tem_comm_env_module tem_comm_env_module module~tem_aux_module->module~tem_comm_env_module module~tem_lua_requires_module tem_lua_requires_module module~tem_aux_module->module~tem_lua_requires_module module~tem_tools_module tem_tools_module module~tem_aux_module->module~tem_tools_module module~tem_aux_module->mpi module~tem_logging_module->aot_table_module module~tem_logging_module->aotus_module module~tem_logging_module->module~env_module module~tem_param_module->module~env_module module~tem_comm_env_module->mpi module~tem_lua_requires_module->aot_table_module module~tem_lua_requires_module->aotus_module module~tem_lua_requires_module->flu_binding module~tem_lua_requires_module->module~env_module iso_c_binding iso_c_binding module~tem_lua_requires_module->iso_c_binding module~tem_tools_module->module~env_module

Interfaces

  • private subroutine tem_load_miescatter(conf, thandle, me)

    load gauss pulse variables to set initial condition

    Arguments

    Type IntentOptional Attributes Name
    type(flu_State) :: conf

    lua state type

    integer, intent(in) :: thandle

    aotus parent handle

    type(tem_miescatter_field_type), intent(out) :: me

    Global gauss pulse data type

  • private subroutine tem_load_miescatter(conf, thandle, me)

    load gauss pulse variables to set initial condition

    Arguments

    Type IntentOptional Attributes Name
    type(flu_State) :: conf

    lua state type

    integer, intent(in) :: thandle

    aotus parent handle

    type(tem_miescatter_field_type), intent(out) :: me

    Global gauss pulse data type

  • private subroutine tem_load_miescatter(conf, thandle, me)

    load gauss pulse variables to set initial condition

    Arguments

    Type IntentOptional Attributes Name
    type(flu_State) :: conf

    lua state type

    integer, intent(in) :: thandle

    aotus parent handle

    type(tem_miescatter_field_type), intent(out) :: me

    Global gauss pulse data type


Derived Types

type, public ::  tem_miescatter_field_type

Parameters of the solution for Mie-Scatter at dielectric cylinder (infinite height in z direction).

Components

Type Visibility Attributes Name Initial
type(tem_miescatter_type), public :: miescatter

Parameter of the geometrical and material setup

type(tem_mieexpansion_type), public :: mieexpansion

The expansion parameters for the scattered solution

type, private ::  tem_miescatter_type

Parameters of the solution for Mie-Scatter at dielectric cylinder (infinite height in z direction)

Components

Type Visibility Attributes Name Initial
real(kind=rk), public :: center(2) = [0.0_rk, 0.0_rk]

The center of the cylinder (in the x-y plane)

real(kind=rk), public :: radius = 1.0_rk

The radius of the cylinder

real(kind=rk), public :: permeability_background = 1.0_rk

Permeability (mu) of the background.

real(kind=rk), public :: permitivity_background = 1.0_rk

Permitivity (epsilon) of the background.

real(kind=rk), public :: permeability_cylinder = 1.0_rk

Permeability (mu) of the cylinder.

real(kind=rk), public :: permitivity_cylinder = 1.0_rk

Permitivity (epsilon) of the cylinder.

real(kind=rk), public :: wavenumber_background

Wave number for the background

real(kind=rk), public :: wavenumber_cylinder

Wave number for the cylinder

real(kind=rk), public :: omega = 2.0_rk*PI*1.0_rk

Angular frequency ( = 2 * pi * f , where f is the original frequency in Hertz)

type, private ::  tem_mieexpansion_type

Expansion data for the Mier scatter solution.

Components

Type Visibility Attributes Name Initial
integer, public :: nCoeffs
complex(kind=rk), public, allocatable :: c_tot(:)
complex(kind=rk), public, allocatable :: c_scat(:)

Functions

public function tem_eval_miescatter_displz(me, coord, time, n) result(res)

Evaluate displacement field (z component) for Mie-Scattering of electromagnetic wave at dielectric cylinder.

Arguments

Type IntentOptional Attributes Name
type(tem_miescatter_field_type), intent(in) :: me

The function to evaluate

real(kind=rk), intent(in) :: coord(n,3)

barycentric Ids of an elements. 1st index goes over number of elements and 2nd index goes over x,y,z coordinates

real(kind=rk), intent(in) :: time

The time to evaluate the function at.

integer, intent(in) :: n

Number of points to evaluate the function for.

Return Value real(kind=rk), (n)

return value of the function

public function tem_eval_miescatter_magnx(me, coord, time, n) result(res)

Evaluate magnetic field (x-component) for Mie-Scattering of electromagnetic wave at dielectric cylinder.

Arguments

Type IntentOptional Attributes Name
type(tem_miescatter_field_type), intent(in) :: me

The function to evaluate

real(kind=rk), intent(in) :: coord(n,3)

barycentric Ids of an elements. 1st index goes over number of elements and 2nd index goes over x,y,z coordinates

real(kind=rk), intent(in) :: time

The time to evaluate the function at.

integer, intent(in) :: n

Number of points to evaluate the function for.

Return Value real(kind=rk), (n)

return value of the function

public function tem_eval_miescatter_magny(me, coord, time, n) result(res)

Evaluate magnetic field (y-component) for Mie-Scattering of electromagnetic wave at dielectric cylinder.

Arguments

Type IntentOptional Attributes Name
type(tem_miescatter_field_type), intent(in) :: me

The function to evaluate

real(kind=rk), intent(in) :: coord(n,3)

barycentric Ids of an elements. 1st index goes over number of elements and 2nd index goes over x,y,z coordinates

real(kind=rk), intent(in) :: time

The time to evaluate the function at.

integer, intent(in) :: n

Number of points to evaluate the function for.

Return Value real(kind=rk), (n)

return value of the function

private function tem_eval_miescatter_magnangular(me, coord, time, n) result(res)

Evaluate magnetizing field (angular-component) for Mie-Scattering of electromagnetic wave at dielectric cylinder.

Arguments

Type IntentOptional Attributes Name
type(tem_miescatter_field_type), intent(in) :: me

The function to evaluate

real(kind=rk), intent(in) :: coord(n,3)

barycentric Ids of an elements. 1st index goes over number of elements and 2nd index goes over x,y,z coordinates

real(kind=rk), intent(in) :: time

The time to evaluate the function at.

integer, intent(in) :: n

Number of points to evaluate the function for.

Return Value real(kind=rk), (n)

return value of the function

private function tem_eval_miescatter_magnradial(me, coord, time, n) result(res)

Evaluate magnetizing field (radial-component) for Mie-Scattering of electromagnetic wave at dielectric cylinder.

Arguments

Type IntentOptional Attributes Name
type(tem_miescatter_field_type), intent(in) :: me

The function to evaluate

real(kind=rk), intent(in) :: coord(n,3)

barycentric Ids of an elements. 1st index goes over number of elements and 2nd index goes over x,y,z coordinates

real(kind=rk), intent(in) :: time

The time to evaluate the function at.

integer, intent(in) :: n

Number of points to evaluate the function for.

Return Value real(kind=rk), (n)

return value of the function


Subroutines

private subroutine tem_load_miescatter(conf, thandle, me)

load gauss pulse variables to set initial condition

Arguments

Type IntentOptional Attributes Name
type(flu_State) :: conf

lua state type

integer, intent(in) :: thandle

aotus parent handle

type(tem_miescatter_field_type), intent(out) :: me

Global gauss pulse data type