m_les Module

Shared physics for explicit eddy-viscosity LES models.

Derivatives and data movement are orchestrated here, while pointwise operations are dispatched to the selected computational backend.


Uses

  • module~~m_les~~UsesGraph module~m_les m_les module~m_base_backend m_base_backend module~m_les->module~m_base_backend module~m_common m_common module~m_les->module~m_common module~m_config m_config module~m_les->module~m_config module~m_field m_field module~m_les->module~m_field module~m_mesh m_mesh module~m_les->module~m_mesh module~m_tdsops m_tdsops module~m_les->module~m_tdsops 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_allocator m_allocator module~m_base_backend->module~m_allocator module~m_poisson_fft m_poisson_fft module~m_base_backend->module~m_poisson_fft mpi mpi module~m_base_backend->mpi module~m_common->mpi module~m_config->module~m_common iso_fortran_env iso_fortran_env module~m_config->iso_fortran_env module~m_field->module~m_common module~m_mesh->module~m_common module~m_mesh->module~m_field module~m_mesh->iso_fortran_env module~m_mesh_content m_mesh_content module~m_mesh->module~m_mesh_content module~m_mesh->mpi module~m_tdsops->module~m_common module~m_tdsops->iso_fortran_env module~m_allocator->module~m_common module~m_allocator->module~m_field module~m_allocator->iso_fortran_env 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_les~~UsedByGraph module~m_les m_les module~m_solver m_solver module~m_solver->module~m_les module~m_base_case m_base_case module~m_base_case->module~m_solver module~m_io_manager m_io_manager module~m_base_case->module~m_io_manager module~m_monitoring m_monitoring module~m_base_case->module~m_monitoring module~m_postprocess m_postprocess module~m_base_case->module~m_postprocess 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_cylinder m_case_cylinder module~m_case_cylinder->module~m_solver module~m_case_cylinder->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 module~m_checkpoint_manager m_checkpoint_manager module~m_checkpoint_manager->module~m_solver module~m_io_field_utils m_io_field_utils module~m_checkpoint_manager->module~m_io_field_utils module~m_stats m_stats module~m_checkpoint_manager->module~m_stats module~m_io_field_utils->module~m_solver module~m_io_manager->module~m_solver module~m_io_manager->module~m_checkpoint_manager module~m_snapshot_manager m_snapshot_manager module~m_io_manager->module~m_snapshot_manager module~m_io_manager->module~m_stats module~m_monitoring->module~m_solver module~m_postprocess->module~m_solver module~m_snapshot_manager->module~m_solver module~m_snapshot_manager->module~m_io_field_utils module~m_stats->module~m_solver program~xcompact xcompact program~xcompact->module~m_base_case program~xcompact->module~m_case_channel program~xcompact->module~m_case_cylinder program~xcompact->module~m_case_generic program~xcompact->module~m_case_tgv

Interfaces

public interface les_t

  • private pure function les_init(config) result(les)

    Arguments

    Type IntentOptional Attributes Name
    type(les_config_t), intent(in) :: config

    Return Value type(les_t)


Derived Types

type, public ::  les_t

Components

Type Visibility Attributes Name Initial
character(len=20), public :: model = 'none'
real(kind=dp), public :: smagorinsky_constant = 0.14_dp
logical, public :: wall_damping = .false.
real(kind=dp), public :: wall_damping_n = 3._dp
real(kind=dp), public :: von_karman_constant = 0.4_dp
real(kind=dp), public :: roughness_length = 0._dp
class(field_t), public, pointer :: nut => null()
class(field_t), public, pointer :: mixing_length_sq => null()

Constructor

private pure function les_init (config)

Type-Bound Procedures

procedure, public :: mixing_length
procedure, public :: nut_from_gradient
procedure, public :: compute_nut
procedure, public :: apply_sgs_stress
procedure, public :: finalise

Functions

public pure function filter_width(spacing) result(delta)

Volume-equivalent grid-filter width, Delta=(dxdydz)^(1/3).

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: spacing(3)

Return Value real(kind=dp)

public pure function strain_rate_magnitude(velocity_gradient) result(smag)

|S|=sqrt(2 S_ij S_ij), where S_ij=(du_i/dx_j+du_j/dx_i)/2.

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: velocity_gradient(3,3)

Return Value real(kind=dp)

public pure function wall_damped_mixing_length(delta, wall_distance, smagorinsky_constant, von_karman_constant, exponent, roughness_length) result(length)

Mason-Thomson blend used by Incompact3d's ABL Smagorinsky path.

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: delta
real(kind=dp), intent(in) :: wall_distance
real(kind=dp), intent(in) :: smagorinsky_constant
real(kind=dp), intent(in) :: von_karman_constant
real(kind=dp), intent(in) :: exponent
real(kind=dp), intent(in) :: roughness_length

Return Value real(kind=dp)

public pure function smagorinsky_nut(velocity_gradient, length) result(nut)

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: velocity_gradient(3,3)
real(kind=dp), intent(in) :: length

Return Value real(kind=dp)