abst_side Derived Type

type, public, abstract :: abst_side


Inherits

type~~abst_side~~InheritsGraph type~abst_side abst_side type~type_dp_pointer type_dp_pointer type~abst_side->type~type_dp_pointer x, y, z

Inherited by

type~~abst_side~~InheritedByGraph type~abst_side abst_side type~holder_sides holder_sides type~holder_sides->type~abst_side s type~type_side_first type_side_first type~type_side_first->type~abst_side type~type_side_second type_side_second type~type_side_second->type~abst_side type~type_domain type_domain type~type_domain->type~holder_sides sides type~type_ftdss type_ftdss type~type_ftdss->type~type_domain domain

Components

Type Visibility Attributes Name Initial
integer(kind=int32), public, allocatable :: connectivity(:)

connectivity information

integer(kind=int32), public, allocatable :: connectivity_reordered(:)

reordered connectivity information

integer(kind=int32), private :: dimension
real(kind=real64), public, allocatable :: gauss(:)

Gauss Quadrature points Coordinate

integer(kind=int32), private :: group
integer(kind=int32), private :: id
integer(kind=int32), public :: num_gauss

Number of Gauss Quadrature points

integer(kind=int32), private :: num_nodes
integer(kind=int32), private :: order
integer(kind=int32), private :: type
real(kind=real64), public, allocatable :: weight(:)

Gauss weight

type(type_dp_pointer), public, allocatable :: x(:)

X coordinate

type(type_dp_pointer), public, allocatable :: y(:)

Y coordinate

type(type_dp_pointer), public, allocatable :: z(:)

Z coordinate


Type-Bound Procedures

procedure(abst_dpsi_dxi), public, deferred, pass(self) :: dpsi_dxi

  • function abst_dpsi_dxi(self, i) result(dpsi) Prototype

    Arguments

    Type IntentOptional Attributes Name
    class(abst_side), intent(in) :: self
    integer(kind=int32), intent(in) :: i

    Return Value real(kind=real64)

procedure(abst_get_dimension), public, deferred, pass(self) :: get_dimension

  • function abst_get_dimension(self) result(dimension) Prototype

    Arguments

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

    Return Value integer(kind=int32)

procedure(abst_get_group), public, deferred, pass(self) :: get_group

  • function abst_get_group(self) result(group) Prototype

    Arguments

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

    Return Value integer(kind=int32)

procedure(abst_get_id), public, deferred, pass(self) :: get_id

  • function abst_get_id(self) result(id) Prototype

    Arguments

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

    Return Value integer(kind=int32)

procedure(abst_get_num_gauss), public, deferred, pass(self) :: get_num_gauss

  • function abst_get_num_gauss(self) result(num_gauss) Prototype

    Arguments

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

    Return Value integer(kind=int32)

procedure(abst_get_num_nodes), public, deferred, pass(self) :: get_num_nodes

  • function abst_get_num_nodes(self) result(num_nodes) Prototype

    Arguments

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

    Return Value integer(kind=int32)

procedure(abst_get_order), public, deferred, pass(self) :: get_order

  • function abst_get_order(self) result(order) Prototype

    Arguments

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

    Return Value integer(kind=int32)

procedure(abst_get_type), public, deferred, pass(self) :: get_type

  • function abst_get_type(self) result(type) Prototype

    Arguments

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

    Return Value integer(kind=int32)

procedure(abst_psi), public, deferred, pass(self) :: psi

  • function abst_psi(self, i, xi) result(psi) Prototype

    Arguments

    Type IntentOptional Attributes Name
    class(abst_side), intent(in) :: self
    integer(kind=int32), intent(in) :: i
    real(kind=real64), intent(in) :: xi

    Return Value real(kind=real64)

Source Code

    type, abstract :: abst_side
        integer(int32), private :: id
        integer(int32), private :: type ! Edge type
        integer(int32), private :: num_nodes ! Number of nodes in the Edge
        integer(int32), private :: group ! Group ID
        integer(int32), private :: dimension
        integer(int32), private :: order
        integer(int32), allocatable :: connectivity(:) !! connectivity information
        integer(int32), allocatable :: connectivity_reordered(:) !! reordered connectivity information
        type(type_dp_pointer), allocatable :: x(:) !! X coordinate
        type(type_dp_pointer), allocatable :: y(:) !! Y coordinate
        type(type_dp_pointer), allocatable :: z(:) !! Z coordinate

        !----------------------------------------------------------------------------------
        ! Gauss Quadrature points and weights
        !  - Gauss Quadrature points are defined in the local coordinate system
        !  - The number of Gauss points is determined by the element type
        !  - The weights are used for numerical integration over the element
        !  - The Gauss points are used to evaluate the shape functions and their derivatives
        !----------------------------------------------------------------------------------
        integer(int32) :: num_gauss !! Number of Gauss Quadrature points
        real(real64), allocatable :: weight(:) !! Gauss weight
        real(real64), allocatable :: gauss(:) !! Gauss Quadrature points Coordinate
    contains
        procedure(abst_get_id),        pass(self), deferred :: get_id !&
        procedure(abst_get_type),      pass(self), deferred :: get_type !&
        procedure(abst_get_num_nodes), pass(self), deferred :: get_num_nodes !&
        procedure(abst_get_group),     pass(self), deferred :: get_group !&
        procedure(abst_get_order),     pass(self), deferred :: get_order !&
        procedure(abst_get_dimension), pass(self), deferred :: get_dimension !&
        procedure(abst_get_num_gauss), pass(self), deferred :: get_num_gauss !&
        !----------------------------------------------------------------------------------
        procedure(abst_psi),           pass(self), deferred :: psi !&
        procedure(abst_dpsi_dxi),      pass(self), deferred :: dpsi_dxi !&
    end type abst_side