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 |
subroutine tem_load_miescatter(conf, thandle, me)
! ---------------------------------------------------------------------------
!> lua state type
type(flu_State) :: conf
!> aotus parent handle
integer, intent(in) :: thandle
!> Global gauss pulse data type
type(tem_miescatter_field_type), intent(out) :: me
! ---------------------------------------------------------------------------
integer :: iError, iPos, cent_handle, back_handle, circ_handle
real(kind=rk) :: frequency
! ---------------------------------------------------------------------------
! Read center cooridnates
call aot_table_open( L = conf, &
& parent = thandle, &
& thandle = cent_handle, &
& key = 'center' )
if ( cent_handle.eq.0 ) then
write(logUnit(1),*)'ERROR in tem_load_miescatter_displacementfieldz: '
write(logUnit(1),*)'Not able to read center-table for Mie-Scatter '// &
& 'solution from lua, stopping ...'
call tem_abort()
end if
do iPos = 1, 2
call aot_get_val( L = conf, &
& thandle = cent_handle, &
& pos = iPos, &
& val = me%miescatter%center(iPos), &
& ErrCode = iError )
if ( iError.ne.0 ) then
write(logUnit(1),*)'ERROR in tem_load_miescatter_displacementfieldz: '
write(logUnit(1),*)'Not able to read center for Mie-Scatter '// &
& 'solution from lua, stopping ...'
call tem_abort()
end if
end do
call aot_table_close(conf, cent_handle)
! Read radius of the cylinder
call aot_get_val( L = conf, &
& thandle = thandle, &
& key = 'radius', &
& val = me%miescatter%radius, &
& ErrCode = iError )
if ( iError.ne.0 ) then
write(logUnit(1),*)'ERROR in tem_load_miescatter_displacementfieldz: '
write(logUnit(1),*)'Not able to read radius for Mie-Scatter '// &
& 'solution from lua, stopping ...'
call tem_abort()
end if
! Read background permeability and permitivity
call aot_table_open( L = conf, &
& parent = thandle, &
& thandle = back_handle, &
& key = 'permeaPermit_background' )
if ( back_handle.eq.0 ) then
write(logUnit(1),*)'ERROR in tem_load_miescatter_displacementfieldz: '
write(logUnit(1),*) 'Not able to open permeaPermit_background-table for '&
& // 'Mie-Scatter solution from lua, stopping ...'
call tem_abort()
end if
call aot_get_val( L = conf, &
& thandle = back_handle, &
& pos = 1, &
& val = me%miescatter%permeability_background, &
& ErrCode = iError )
if ( iError.ne.0 ) then
write(logUnit(1),*)'ERROR in tem_load_miescatter_displacementfieldz: '
write(logUnit(1),*) 'Not able to read background permeability for ' // &
& 'Mie-Scatter solution from lua, stopping ...'
call tem_abort()
end if
call aot_get_val( L = conf, &
& thandle = back_handle, &
& pos = 2, &
& val = me%miescatter%permitivity_background, &
& ErrCode = iError )
if ( iError.ne.0 ) then
write(logUnit(1),*)'ERROR in tem_load_miescatter_displacementfieldz: '
write(logUnit(1),*) 'Not able to read background permitivity for ' // &
& 'Mie-Scatter solution from lua, stopping ...'
call tem_abort()
end if
call aot_table_close(conf, back_handle)
! Read background permeability and permitivity
call aot_table_open( L = conf, &
& parent = thandle, &
& thandle = circ_handle, &
& key = 'permeaPermit_cylinder' )
if ( back_handle.eq.0 ) then
write(logUnit(1),*)'ERROR in tem_load_miescatter_displacementfieldz: '
write(logUnit(1),*) 'Not able to open permeaPermit_cylinder-table for '//&
& 'Mie-Scatter solution from lua, stopping ...'
call tem_abort()
end if
call aot_get_val( L = conf, &
& thandle = circ_handle, &
& pos = 1, &
& val = me%miescatter%permeability_cylinder, &
& ErrCode = iError )
if ( iError.ne.0 ) then
write(logUnit(1),*)'ERROR in tem_load_miescatter_displacementfieldz: '
write(logUnit(1),*) 'Not able to read cylinder permeability for ' // &
& 'Mie-Scatter solution from lua, stopping ...'
call tem_abort()
end if
call aot_get_val( L = conf, &
& thandle = circ_handle, &
& pos = 2, &
& val = me%miescatter%permitivity_cylinder, &
& ErrCode = iError )
if ( iError.ne.0 ) then
write(logUnit(1),*)'ERROR in tem_load_miescatter_displacementfieldz: '
write(logUnit(1),*) 'Not able to read cylinder permitivity for ' // &
& 'Mie-Scatter solution from lua, stopping ...'
call tem_abort()
end if
call aot_table_close(conf, circ_handle)
! Read the frequency
call aot_get_val( L = conf, &
& thandle = thandle, &
& key = 'frequency', &
& val = frequency, &
& ErrCode = iError )
if ( iError.ne.0 ) then
write(logUnit(1),*)'ERROR in tem_load_miescatter_displacementfieldz: '
write(logUnit(1),*)'Not able to read frequency for Mie-Scatter '// &
& 'solution from lua, stopping ...'
call tem_abort()
end if
me%miescatter%omega = 2.0_rk * PI * frequency
! Calculate the wave numbers inside and outside of the cylinder
me%miescatter%wavenumber_cylinder = me%miescatter%omega &
& * sqrt(me%miescatter%permeability_cylinder * &
& me%miescatter%permitivity_cylinder )
me%miescatter%wavenumber_background = me%miescatter%omega &
& * sqrt(me%miescatter%permeability_background * &
& me%miescatter%permitivity_background )
! Setup the parameters for the solution inside and outside the
! dielectric cylinder...
call tem_init_data( conf, thandle, me%miescatter, me%mieexpansion )
end subroutine tem_load_miescatter