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
load gauss pulse variables to set initial condition
Type | Intent | Optional | 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 |
load gauss pulse variables to set initial condition
Type | Intent | Optional | 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 |
load gauss pulse variables to set initial condition
Type | Intent | Optional | 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 |
Parameters of the solution for Mie-Scatter at dielectric cylinder (infinite height in z direction).
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 |
Parameters of the solution for Mie-Scatter at dielectric cylinder (infinite height in z direction)
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) |
Expansion data for the Mier scatter solution.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public | :: | nCoeffs |
The number of expansion coefficients |
|||
complex(kind=rk), | public, | allocatable | :: | c_tot(:) |
Expansion coefficients inside the cylinder |
||
complex(kind=rk), | public, | allocatable | :: | c_scat(:) |
Expansion coefficients outside the cylinder (for the scattered field) |
Evaluate displacement field (z component) for Mie-Scattering of electromagnetic wave at dielectric cylinder.
Type | Intent | Optional | 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 of the function
Evaluate magnetic field (x-component) for Mie-Scattering of electromagnetic wave at dielectric cylinder.
Type | Intent | Optional | 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 of the function
Evaluate magnetic field (y-component) for Mie-Scattering of electromagnetic wave at dielectric cylinder.
Type | Intent | Optional | 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 of the function
Evaluate magnetizing field (angular-component) for Mie-Scattering of electromagnetic wave at dielectric cylinder.
Type | Intent | Optional | 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 of the function
Evaluate magnetizing field (radial-component) for Mie-Scattering of electromagnetic wave at dielectric cylinder.
Type | Intent | Optional | 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 of the function
Convert from cartesian coordinates (in the x-y plane) to polar coordinates (radius,angle)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=rk) | :: | x |
X coordinate |
|||
real(kind=rk) | :: | y |
Y coordinate |
Polar coordinates, radius (first entry) and angle (second entry)
Compute derivative for Bessel function of first kind of order n.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer | :: | n |
The order of the function. |
|||
real(kind=rk), | intent(in) | :: | x |
The evaluation point. |
The function value.
Compute derivative for Hankel function of second kind of order n.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer | :: | n |
The order of the function. |
|||
real(kind=rk), | intent(in) | :: | x |
The evaluation point. |
The function value.
Compute Hankel function of second kind of order n.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer | :: | n |
The order of the function. |
|||
real(kind=rk), | intent(in) | :: | x |
The evaluation point. |
The function value.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(flu_State) | :: | conf |
lua state type |
|||
integer, | intent(in) | :: | thandle |
aotus parent handle |
The number of coefficients necessary for the Fourier series
load gauss pulse variables to set initial condition
Type | Intent | Optional | 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 |
Init the expansion coefficients for the Mie-Scattering.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(flu_State) | :: | conf |
lua state type |
|||
integer, | intent(in) | :: | thandle |
aotus parent handle |
||
type(tem_miescatter_type), | intent(in) | :: | miescatter |
The description of the Mie-Scattering setup. |
||
type(tem_mieexpansion_type), | intent(out) | :: | mieexpansion |
The expansion coefficients to be filled |