subdomain_t Derived Type

type, public :: subdomain_t


Components

Type Visibility Attributes Name Initial
real, private, allocatable :: s_(:,:,:)

Type-Bound Procedures

procedure, public, pass(self) :: define

  • interface

    private module subroutine define(side, boundary_val, internal_val, n, self)

    Arguments

    Type IntentOptional Attributes Name
    real, intent(in) :: side
    real, intent(in) :: boundary_val
    real, intent(in) :: internal_val
    integer, intent(in) :: n

    number of grid points in each coordinate direction

    class(subdomain_t), intent(out) :: self

procedure, public, pass(self) :: step

  • interface

    private module subroutine step(alpha_dt, self)

    Arguments

    Type IntentOptional Attributes Name
    real, intent(in) :: alpha_dt
    class(subdomain_t), intent(inout) :: self

procedure, public, pass(rhs) :: multiply

  • interface

    private pure module function multiply(lhs, rhs) result(product)

    Arguments

    Type IntentOptional Attributes Name
    real, intent(in) :: lhs
    class(subdomain_t), intent(in) :: rhs

    Return Value type(subdomain_t)

generic, public :: operator(.laplacian.) => laplacian

  • private interface laplacian()

    Arguments

    None

generic, public :: operator(*) => multiply

  • private interface multiply()

    Arguments

    None

generic, public :: operator(+) => add

  • private interface add()

    Arguments

    None

generic, public :: assignment(=) => assign_and_sync

procedure, public :: dt_stable

  • interface

    private pure module function dt_stable(self, alpha) result(my_dt)

    Set the time step at 90% of the stability limit obtained generalizing to 3D the value provided for 2D by Kassinos, S., & Alexiadis, A. (2024). Beyond Language: Applying MLX Transformers to Engineering Physics. arXiv preprint arXiv:2410.04167.

    Arguments

    Type IntentOptional Attributes Name
    class(subdomain_t), intent(in) :: self
    real, intent(in) :: alpha

    Return Value real

procedure, public :: dx

  • interface

    private pure module function dx(self) result(my_dx)

    Arguments

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

    Return Value real

procedure, public :: dy

  • interface

    private pure module function dy(self) result(my_dy)

    Arguments

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

    Return Value real

procedure, public :: dz

  • interface

    private pure module function dz(self) result(my_dz)

    Arguments

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

    Return Value real

procedure, public :: values

  • interface

    private pure module function values(self) result(my_values)

    Arguments

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

    Return Value real, allocatable, (:,:,:)

procedure, private :: laplacian

  • interface

    private pure module function laplacian(rhs) result(laplacian_rhs)

    Arguments

    Type IntentOptional Attributes Name
    class(subdomain_t), intent(in) :: rhs

    Return Value type(subdomain_t)

procedure, private :: add

procedure, private :: assign_and_sync

  • interface

    private module subroutine assign_and_sync(lhs, rhs)

    Arguments

    Type IntentOptional Attributes Name
    class(subdomain_t), intent(out) :: lhs
    type(subdomain_t), intent(in) :: rhs