immersed_m Module

Abstract immersed boundary module to set boundary conditions at targets


Uses

  • module~~immersed_m~~UsesGraph module~immersed_m immersed_m module~equilibrium_m equilibrium_m module~immersed_m->module~equilibrium_m module~list_operations_m list_operations_m module~immersed_m->module~list_operations_m module~mesh_cart_m mesh_cart_m module~immersed_m->module~mesh_cart_m module~precision_m precision_m module~immersed_m->module~precision_m module~equilibrium_m->module~precision_m module~list_operations_m->module~precision_m module~screen_io_m screen_io_m module~list_operations_m->module~screen_io_m module~mesh_cart_m->module~equilibrium_m module~mesh_cart_m->module~precision_m iso_c_binding iso_c_binding module~mesh_cart_m->iso_c_binding module~comm_handling_m comm_handling_m module~mesh_cart_m->module~comm_handling_m module~descriptors_m descriptors_m module~mesh_cart_m->module~descriptors_m module~error_handling_m error_handling_m module~mesh_cart_m->module~error_handling_m module~slab_equilibrium_m slab_equilibrium_m module~mesh_cart_m->module~slab_equilibrium_m module~status_codes_m status_codes_m module~mesh_cart_m->module~status_codes_m netcdf netcdf module~mesh_cart_m->netcdf module~precision_m->iso_c_binding iso_fortran_env iso_fortran_env module~precision_m->iso_fortran_env mpi mpi module~precision_m->mpi module~precision_m->netcdf module~comm_handling_m->mpi module~descriptors_m->module~screen_io_m module~error_handling_m->module~precision_m module~error_handling_m->module~comm_handling_m module~error_handling_m->module~screen_io_m module~error_handling_m->module~status_codes_m module~error_handling_m->mpi module~error_handling_m->netcdf module~screen_io_m->module~precision_m module~screen_io_m->iso_fortran_env module~screen_io_m->netcdf module~slab_equilibrium_m->module~equilibrium_m module~slab_equilibrium_m->module~precision_m module~slab_equilibrium_m->module~descriptors_m module~slab_equilibrium_m->module~screen_io_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~precision_m module~params_equi_slab_m->iso_fortran_env module~params_equi_slab_m->module~error_handling_m module~params_equi_slab_m->module~screen_io_m module~params_equi_slab_m->module~status_codes_m

Used by

  • module~~immersed_m~~UsedByGraph module~immersed_m immersed_m module~immersed_factory_m immersed_factory_m module~immersed_factory_m->module~immersed_m module~immersed_rho_m immersed_rho_m module~immersed_factory_m->module~immersed_rho_m module~immersed_trace_m immersed_trace_m module~immersed_factory_m->module~immersed_trace_m module~immersed_vessel_m immersed_vessel_m module~immersed_factory_m->module~immersed_vessel_m module~immersed_netcdf_s immersed_netcdf_s module~immersed_netcdf_s->module~immersed_m module~immersed_rho_m->module~immersed_m module~immersed_trace_m->module~immersed_m module~immersed_vessel_m->module~immersed_m

Interfaces

interface

  • public module subroutine write_netcdf_immersed(self, fgid)

    Writes immersed boundary data to NetCDF id

    Arguments

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

    Instance of class

    integer, intent(in) :: fgid

    NetCDF file or group id

interface

  • public module subroutine read_netcdf_immersed(self, fgid)

    Reads immersed boundary data from NetCDF id

    Arguments

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

    Instance of class

    integer, intent(in) :: fgid

    NetCDF file or group id


Abstract Interfaces

abstract interface

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

    Initialises the immersed boundary fields charfun and dirind, depending on specialised implementation

    Arguments

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

    Instance of type

    class(equilibrium_t), intent(inout) :: equi

    Equilibrium

    type(mesh_cart_t), intent(in) :: mesh

    Mesh

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

    Filename, where to read parameters from, if not provided default parameters will be used

abstract interface

  • public subroutine display(self)

    Writes basic information of immersed boundary to stdout

    Arguments

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

    Instance of type


Derived Types

type, public, abstract ::  immersed_t

Abstract immersed boundary type

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

Type-Bound Procedures

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

Subroutines

public subroutine build_inds(self, mesh)

Computes inds. The construction is common to all derived immersed types

Arguments

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

Instance of type

type(mesh_cart_t), intent(in) :: mesh

Mesh

public subroutine build_adj_inds(self, mesh)

Computes adj_inds. The construction is common to all derived immersed types

Arguments

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

Instance of type

type(mesh_cart_t), intent(in) :: mesh

Mesh