immersed_trace_m Module

Immersed boundary module, based on parallel distance to targets (tracing)


Uses

  • module~~immersed_trace_m~~UsesGraph module~immersed_trace_m immersed_trace_m module~connection_length_m connection_length_m module~immersed_trace_m->module~connection_length_m module~constants_m constants_m module~immersed_trace_m->module~constants_m module~elementary_functions_m elementary_functions_m module~immersed_trace_m->module~elementary_functions_m module~equilibrium_m equilibrium_m module~immersed_trace_m->module~equilibrium_m module~error_handling_m error_handling_m module~immersed_trace_m->module~error_handling_m module~immersed_m immersed_m module~immersed_trace_m->module~immersed_m module~mesh_cart_m mesh_cart_m module~immersed_trace_m->module~mesh_cart_m module~precision_m precision_m module~immersed_trace_m->module~precision_m module~root_finding_m root_finding_m module~immersed_trace_m->module~root_finding_m module~screen_io_m screen_io_m module~immersed_trace_m->module~screen_io_m module~status_codes_m status_codes_m module~immersed_trace_m->module~status_codes_m module~connection_length_m->module~equilibrium_m module~connection_length_m->module~error_handling_m module~connection_length_m->module~precision_m module~connection_length_m->module~screen_io_m module~connection_length_m->module~status_codes_m module~descriptors_m descriptors_m module~connection_length_m->module~descriptors_m module~fieldline_tracer_m fieldline_tracer_m module~connection_length_m->module~fieldline_tracer_m module~constants_m->module~precision_m module~elementary_functions_m->module~precision_m module~equilibrium_m->module~precision_m module~error_handling_m->module~precision_m module~error_handling_m->module~screen_io_m module~error_handling_m->module~status_codes_m module~comm_handling_m comm_handling_m module~error_handling_m->module~comm_handling_m mpi mpi module~error_handling_m->mpi netcdf netcdf module~error_handling_m->netcdf module~immersed_m->module~equilibrium_m module~immersed_m->module~mesh_cart_m module~immersed_m->module~precision_m module~list_operations_m list_operations_m module~immersed_m->module~list_operations_m module~mesh_cart_m->module~equilibrium_m module~mesh_cart_m->module~error_handling_m module~mesh_cart_m->module~precision_m module~mesh_cart_m->module~status_codes_m iso_c_binding iso_c_binding module~mesh_cart_m->iso_c_binding module~mesh_cart_m->module~comm_handling_m module~mesh_cart_m->module~descriptors_m module~slab_equilibrium_m slab_equilibrium_m module~mesh_cart_m->module~slab_equilibrium_m module~mesh_cart_m->netcdf module~precision_m->iso_c_binding iso_fortran_env iso_fortran_env module~precision_m->iso_fortran_env module~precision_m->mpi module~precision_m->netcdf module~root_finding_m->module~precision_m module~screen_io_m->module~precision_m module~screen_io_m->iso_fortran_env module~screen_io_m->netcdf module~comm_handling_m->mpi module~descriptors_m->module~screen_io_m module~fieldline_tracer_m->module~equilibrium_m module~fieldline_tracer_m->module~error_handling_m module~fieldline_tracer_m->module~precision_m module~fieldline_tracer_m->module~screen_io_m module~fieldline_tracer_m->module~status_codes_m module~fieldline_tracer_m->module~comm_handling_m dop853_constants dop853_constants module~fieldline_tracer_m->dop853_constants dop853_module dop853_module module~fieldline_tracer_m->dop853_module module~list_operations_m->module~precision_m module~list_operations_m->module~screen_io_m module~slab_equilibrium_m->module~equilibrium_m module~slab_equilibrium_m->module~precision_m module~slab_equilibrium_m->module~screen_io_m module~slab_equilibrium_m->module~descriptors_m module~params_equi_slab_m params_equi_slab_m module~slab_equilibrium_m->module~params_equi_slab_m module~params_equi_slab_m->module~error_handling_m module~params_equi_slab_m->module~precision_m module~params_equi_slab_m->module~screen_io_m module~params_equi_slab_m->module~status_codes_m module~params_equi_slab_m->iso_fortran_env

Used by

  • module~~immersed_trace_m~~UsedByGraph module~immersed_trace_m immersed_trace_m module~immersed_factory_m immersed_factory_m module~immersed_factory_m->module~immersed_trace_m

Variables

Type Visibility Attributes Name Initial
real(kind=FP), protected :: charfun_at_target = 0.5_FP

Value of characteristic immersion function at target

real(kind=FP), protected :: dphi_max = PI

Maximum distance of tracing

integer, protected :: immersed_step_order = 2

Hermite order of transition function

real(kind=FP), protected :: immersed_trace_width_charfun = 0.0_FP

Parallel transition width of characteristic immersion function

real(kind=FP), protected :: immersed_trace_width_dirindfun = 0.0_FP

Parallel transition width length of direction indicator function

real(kind=FP), protected :: trace_max_step_size = PI/180.0_FP

Maximum step size of trace algorithm


Derived Types

type, public, extends(immersed_t) ::  immersed_trace_t

Immersed boundary type based on field line tracing

Components

Type Visibility Attributes Name Initial
real(kind=FP), public, allocatable, dimension(:) :: charfun

Characteristic function of immersed boundary, commonly referred chi

real(kind=FP), public, allocatable, dimension(:) :: dirindfun

Function indicating direction of magnetic field (towards/away from target), commonly referred xi

integer, public, allocatable, dimension(:) :: inds

Mesh indices which lie in immersed boundary region

integer, public :: n_inds

Size of inds

integer, public, allocatable, dimension(:) :: adj_inds

Mesh indices, which are adjacent to the immersed boundary region

integer, public :: n_adj_inds

Size of adj_inds

Finalizations Procedures

final :: destructor_immersed_trace_t

Type-Bound Procedures

procedure, public :: build_inds
procedure, public :: build_adj_inds
procedure, public :: write_netcdf => write_netcdf_immersed
procedure, public :: read_netcdf => read_netcdf_immersed
procedure, public :: init
procedure, public :: display

Functions

public function sigmoid(x0, x, wx, order)

Sigmoid function going from y=0 to y=1 between x=x0-wx/2 to x=x0+wx/2

Arguments

Type IntentOptional Attributes Name
real(kind=FP), intent(in) :: x0

Location of center of sigmoid

real(kind=FP), intent(in) :: x

Abscissa

real(kind=FP), intent(in) :: wx

Transition width

integer, intent(in) :: order

Order of transition

Return Value real(kind=fp)

public function get_dphi_shift()

Finds abscissa, where sigmoid function has value charfun_at_target Used to set charfun_at_target correctly

Arguments

None

Return Value real(kind=fp)

public function aux_sigmoid_func(this, t, iuser, ruser)

Auxiliary to get_dphi_shift function

Arguments

Type IntentOptional Attributes Name
class(aux_sigmoid_func_t), intent(in) :: this

Instance of test function class

real(kind=FP), intent(in) :: t
integer, intent(in), dimension(:) :: iuser

Integer inputs

real(kind=FP), intent(in), dimension(:) :: ruser

Dummy, not used

Return Value real(kind=fp)


Subroutines

public subroutine init(self, equi, mesh, filename)

Arguments

Type IntentOptional Attributes Name
class(immersed_trace_t), intent(inout) :: self
class(equilibrium_t), intent(inout) :: equi
type(mesh_cart_t), intent(in) :: mesh
character(len=*), intent(in), optional :: filename

public subroutine read_params_immersed_trace(self, filename)

Reads parameters for trace based immersion

Arguments

Type IntentOptional Attributes Name
class(immersed_trace_t), intent(inout) :: self

Instance of type

character(len=*), intent(in) :: filename

Filename, where to read parameters from

public subroutine display(self)

Arguments

Type IntentOptional Attributes Name
class(immersed_trace_t), intent(in) :: self

public subroutine destructor_immersed_trace_t(self)

Destructor for immersed_rho_t

Arguments

Type IntentOptional Attributes Name
type(immersed_trace_t), intent(inout) :: self