m_solver Module


Uses

  • module~~m_solver~~UsesGraph module~m_solver m_solver iso_fortran_env iso_fortran_env module~m_solver->iso_fortran_env module~m_allocator m_allocator module~m_solver->module~m_allocator module~m_base_backend m_base_backend module~m_solver->module~m_base_backend module~m_common m_common module~m_solver->module~m_common module~m_config m_config module~m_solver->module~m_config module~m_field m_field module~m_solver->module~m_field module~m_mesh m_mesh module~m_solver->module~m_mesh module~m_tdsops m_tdsops module~m_solver->module~m_tdsops module~m_time_integrator m_time_integrator module~m_solver->module~m_time_integrator module~m_vector_calculus m_vector_calculus module~m_solver->module~m_vector_calculus mpi mpi module~m_solver->mpi module~m_allocator->iso_fortran_env module~m_allocator->module~m_common module~m_allocator->module~m_field module~m_allocator->module~m_mesh module~m_base_backend->module~m_allocator module~m_base_backend->module~m_common module~m_base_backend->module~m_field module~m_base_backend->module~m_mesh module~m_base_backend->module~m_tdsops module~m_base_backend->mpi module~m_poisson_fft m_poisson_fft module~m_base_backend->module~m_poisson_fft module~m_config->iso_fortran_env module~m_config->module~m_common module~m_field->module~m_common module~m_mesh->iso_fortran_env module~m_mesh->module~m_common module~m_mesh->module~m_field module~m_mesh->mpi module~m_mesh_content m_mesh_content module~m_mesh->module~m_mesh_content module~m_tdsops->iso_fortran_env module~m_tdsops->module~m_common module~m_time_integrator->module~m_allocator module~m_time_integrator->module~m_base_backend module~m_time_integrator->module~m_common module~m_time_integrator->module~m_field module~m_vector_calculus->iso_fortran_env module~m_vector_calculus->module~m_allocator module~m_vector_calculus->module~m_base_backend module~m_vector_calculus->module~m_common module~m_vector_calculus->module~m_field module~m_vector_calculus->module~m_tdsops module~m_mesh_content->module~m_common module~m_poisson_fft->module~m_common module~m_poisson_fft->module~m_field module~m_poisson_fft->module~m_mesh module~m_poisson_fft->module~m_tdsops

Used by

  • module~~m_solver~~UsedByGraph module~m_solver m_solver module~m_base_case m_base_case module~m_base_case->module~m_solver module~m_case_channel m_case_channel module~m_case_channel->module~m_solver module~m_case_channel->module~m_base_case module~m_case_generic m_case_generic module~m_case_generic->module~m_solver module~m_case_generic->module~m_base_case module~m_case_tgv m_case_tgv module~m_case_tgv->module~m_solver module~m_case_tgv->module~m_base_case program~xcompact xcompact program~xcompact->module~m_base_case program~xcompact->module~m_case_channel program~xcompact->module~m_case_generic program~xcompact->module~m_case_tgv

Interfaces

public interface solver_t

  • public function init(backend, mesh, host_allocator) result(solver)

    Arguments

    Type IntentOptional Attributes Name
    class(base_backend_t), intent(inout), target :: backend
    type(mesh_t), intent(inout), target :: mesh
    type(allocator_t), intent(inout), target :: host_allocator

    Return Value type(solver_t)


Abstract Interfaces

abstract interface

  • public subroutine poisson_solver(self, pressure, div_u)

    Arguments

    Type IntentOptional Attributes Name
    class(solver_t) :: self
    class(field_t), intent(inout) :: pressure
    class(field_t), intent(in) :: div_u

Derived Types

type, public ::  solver_t

solver class defines the Incompact3D algorithm at a very high level.

Read more…

Components

Type Visibility Attributes Name Initial
real(kind=dp), public :: dt
real(kind=dp), public :: nu
integer, public :: n_iters
integer, public :: n_output
integer, public :: ngrid
class(field_t), public, pointer :: u
class(field_t), public, pointer :: v
class(field_t), public, pointer :: w
class(base_backend_t), public, pointer :: backend
type(mesh_t), public, pointer :: mesh
type(time_intg_t), public :: time_integrator
type(allocator_t), public, pointer :: host_allocator
type(dirps_t), public, pointer :: xdirps
type(dirps_t), public, pointer :: ydirps
type(dirps_t), public, pointer :: zdirps
type(vector_calculus_t), public :: vector_calculus
procedure(poisson_solver), public, pointer :: poisson => null()

Constructor

public function init (backend, mesh, host_allocator)

Type-Bound Procedures

procedure, public :: transeq
procedure, public :: pressure_correction
procedure, public :: divergence_v2p
procedure, public :: gradient_p2v
procedure, public :: curl

Functions

public function init(backend, mesh, host_allocator) result(solver)

Arguments

Type IntentOptional Attributes Name
class(base_backend_t), intent(inout), target :: backend
type(mesh_t), intent(inout), target :: mesh
type(allocator_t), intent(inout), target :: host_allocator

Return Value type(solver_t)


Subroutines

public subroutine allocate_tdsops(dirps, backend, mesh, der1st_scheme, der2nd_scheme, interpl_scheme, stagder_scheme)

Arguments

Type IntentOptional Attributes Name
type(dirps_t), intent(inout) :: dirps
class(base_backend_t), intent(in) :: backend
type(mesh_t), intent(in) :: mesh
character(len=*), intent(in) :: der1st_scheme
character(len=*), intent(in) :: der2nd_scheme
character(len=*), intent(in) :: interpl_scheme
character(len=*), intent(in) :: stagder_scheme

public subroutine transeq(self, du, dv, dw, u, v, w)

Skew-symmetric form of convection-diffusion terms in the incompressible Navier-Stokes momemtum equations, excluding pressure terms. Inputs from velocity grid and outputs to velocity grid.

Arguments

Type IntentOptional Attributes Name
class(solver_t) :: self
class(field_t), intent(inout) :: du
class(field_t), intent(inout) :: dv
class(field_t), intent(inout) :: dw
class(field_t), intent(in) :: u
class(field_t), intent(in) :: v
class(field_t), intent(in) :: w

public subroutine divergence_v2p(self, div_u, u, v, w)

Wrapper for divergence_v2p

Arguments

Type IntentOptional Attributes Name
class(solver_t) :: self
class(field_t), intent(inout) :: div_u
class(field_t), intent(in) :: u
class(field_t), intent(in) :: v
class(field_t), intent(in) :: w

public subroutine gradient_p2v(self, dpdx, dpdy, dpdz, pressure)

Wrapper for gradient_p2v

Arguments

Type IntentOptional Attributes Name
class(solver_t) :: self
class(field_t), intent(inout) :: dpdx
class(field_t), intent(inout) :: dpdy
class(field_t), intent(inout) :: dpdz
class(field_t), intent(in) :: pressure

public subroutine curl(self, o_i_hat, o_j_hat, o_k_hat, u, v, w)

Wrapper for curl

Arguments

Type IntentOptional Attributes Name
class(solver_t) :: self
class(field_t), intent(inout) :: o_i_hat

Vector components of the output vector field Omega

class(field_t), intent(inout) :: o_j_hat

Vector components of the output vector field Omega

class(field_t), intent(inout) :: o_k_hat

Vector components of the output vector field Omega

class(field_t), intent(in) :: u
class(field_t), intent(in) :: v
class(field_t), intent(in) :: w

public subroutine poisson_fft(self, pressure, div_u)

Arguments

Type IntentOptional Attributes Name
class(solver_t) :: self
class(field_t), intent(inout) :: pressure
class(field_t), intent(in) :: div_u

public subroutine poisson_cg(self, pressure, div_u)

Arguments

Type IntentOptional Attributes Name
class(solver_t) :: self
class(field_t), intent(inout) :: pressure
class(field_t), intent(in) :: div_u

public subroutine pressure_correction(self, u, v, w)

Arguments

Type IntentOptional Attributes Name
class(solver_t) :: self
class(field_t), intent(inout) :: u
class(field_t), intent(inout) :: v
class(field_t), intent(inout) :: w