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~2~~UsesGraph module~tem_miescatter_module~2 tem_miescatter_module module~tem_aux_module tem_aux_module module~tem_miescatter_module~2->module~tem_aux_module module~env_module env_module module~tem_miescatter_module~2->module~env_module module~tem_logging_module tem_logging_module module~tem_miescatter_module~2->module~tem_logging_module module~flu_binding flu_binding module~tem_miescatter_module~2->module~flu_binding module~aot_table_module aot_table_module module~tem_miescatter_module~2->module~aot_table_module module~aotus_module aotus_module module~tem_miescatter_module~2->module~aotus_module module~tem_param_module tem_param_module module~tem_miescatter_module~2->module~tem_param_module module~tem_aux_module->module~env_module module~tem_aux_module->module~tem_logging_module module~tem_aux_module->module~flu_binding module~tem_aux_module->module~aot_table_module module~tem_aux_module->module~aotus_module module~tem_revision_module tem_revision_module module~tem_aux_module->module~tem_revision_module module~tem_comm_env_module tem_comm_env_module module~tem_aux_module->module~tem_comm_env_module module~tem_tools_module tem_tools_module module~tem_aux_module->module~tem_tools_module module~tem_lua_requires_module tem_lua_requires_module module~tem_aux_module->module~tem_lua_requires_module mpi mpi module~tem_aux_module->mpi module~env_module->module~flu_binding module~env_module->module~aotus_module iso_fortran_env iso_fortran_env module~env_module->iso_fortran_env module~env_module->mpi module~tem_logging_module->module~env_module module~tem_logging_module->module~aot_table_module module~tem_logging_module->module~aotus_module module~tem_param_module->module~env_module module~tem_comm_env_module->mpi module~tem_tools_module->module~env_module module~tem_lua_requires_module->module~env_module module~tem_lua_requires_module->module~flu_binding module~tem_lua_requires_module->module~aot_table_module module~tem_lua_requires_module->module~aotus_module iso_c_binding iso_c_binding module~tem_lua_requires_module->iso_c_binding

Contents


Interfaces

  • private subroutine tem_load_miescatter(conf, thandle, me)

    load gauss pulse variables to set initial condition

    Arguments

    TypeIntentOptionalAttributesName
    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

    TypeIntentOptionalAttributesName
    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

    TypeIntentOptionalAttributesName
    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

TypeVisibilityAttributesNameInitial
type(tem_miescatter_type), private :: miescatter

Parameter of the geometrical and material setup

type(tem_mieexpansion_type), private :: 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

TypeVisibilityAttributesNameInitial
real(kind=rk), private :: center(2) =[0.0_rk, 0.0_rk]

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

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

The radius of the cylinder

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

Permeability (mu) of the background.

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

Permitivity (epsilon) of the background.

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

Permeability (mu) of the cylinder.

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

Permitivity (epsilon) of the cylinder.

real(kind=rk), private :: wavenumber_background

Wave number for the background

real(kind=rk), private :: wavenumber_cylinder

Wave number for the cylinder

real(kind=rk), private :: 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

TypeVisibilityAttributesNameInitial
integer, private :: nCoeffs
complex(kind=rk), private, allocatable:: c_tot(:)
complex(kind=rk), private, 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

TypeIntentOptionalAttributesName
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

TypeIntentOptionalAttributesName
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

TypeIntentOptionalAttributesName
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

TypeIntentOptionalAttributesName
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

TypeIntentOptionalAttributesName
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

TypeIntentOptionalAttributesName
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