m_turbine_model Module

Abstract interface for turbine forcing models (actuator disc, actuator line)

A turbine model is a backend-agnostic physics object: it samples the flow at actuator points and accumulates a momentum source back onto the RHS fields (du, dv, dw). It is owned and driven entirely by the flow case (see m_case_wind_turbine) and therefore knows nothing about the solver, the case, or the iturbine switch - the case decides which concrete model to allocate and when to call it.

Concrete implementations: - turbine_dummy_t (m_turbine_dummy): no-op / iturbine=0, the fallback - alm_t (m_alm) : actuator line model - adm_t (m_adm) : actuator disc model


Uses

  • module~~m_turbine_model~~UsesGraph module~m_turbine_model m_turbine_model module~m_allocator m_allocator module~m_turbine_model->module~m_allocator module~m_base_backend m_base_backend module~m_turbine_model->module~m_base_backend module~m_checkpoint_state m_checkpoint_state module~m_turbine_model->module~m_checkpoint_state module~m_common m_common module~m_turbine_model->module~m_common module~m_field m_field module~m_turbine_model->module~m_field module~m_mesh m_mesh module~m_turbine_model->module~m_mesh module~m_allocator->module~m_common module~m_allocator->module~m_field 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 iso_c_binding iso_c_binding module~m_base_backend->iso_c_binding module~m_logger m_logger module~m_base_backend->module~m_logger module~m_poisson_fft m_poisson_fft module~m_base_backend->module~m_poisson_fft module~m_tdsops m_tdsops module~m_base_backend->module~m_tdsops module~m_io_session m_io_session module~m_checkpoint_state->module~m_io_session m_mpi m_mpi module~m_common->m_mpi module~m_common->module~m_logger module~m_field->module~m_common module~m_field->iso_c_binding module~m_mesh->module~m_common module~m_mesh->module~m_field module~m_mesh->m_mpi module~m_mesh->module~m_logger module~m_mesh_content m_mesh_content module~m_mesh->module~m_mesh_content module~m_io_session->module~m_base_backend module~m_io_session->module~m_common module~m_io_session->module~m_field module~m_io_session->module~m_logger module~m_io_backend~2 m_io_backend module~m_io_session->module~m_io_backend~2 module~m_io_base m_io_base module~m_io_session->module~m_io_base module~m_logger->m_mpi iso_fortran_env iso_fortran_env module~m_logger->iso_fortran_env module~m_mesh_content->module~m_common module~m_mesh_content->module~m_logger 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_logger module~m_poisson_fft->module~m_tdsops module~m_tdsops->module~m_common module~m_tdsops->module~m_logger module~m_io_backend~2->module~m_base_backend module~m_io_backend~2->module~m_common module~m_io_backend~2->module~m_field module~m_io_backend~2->module~m_logger module~m_io_backend~2->module~m_io_base module~m_io_base->module~m_base_backend module~m_io_base->module~m_common module~m_io_base->module~m_field

Used by

  • module~~m_turbine_model~~UsedByGraph module~m_turbine_model m_turbine_model module~m_adm m_adm module~m_adm->module~m_turbine_model module~m_case_wind_turbine m_case_wind_turbine module~m_case_wind_turbine->module~m_turbine_model module~m_case_wind_turbine->module~m_adm module~m_turbine_dummy m_turbine_dummy module~m_case_wind_turbine->module~m_turbine_dummy module~m_turbine_dummy->module~m_turbine_model program~xcompact xcompact program~xcompact->module~m_case_wind_turbine

Abstract Interfaces

abstract interface

  • public subroutine init_iface(self, backend, mesh, host_allocator, dt)

    Set up turbine geometry/state (read config files, place actuator points, build smearing kernels, ...). Called once after the solver exists. The model caches whatever context it needs (backend, mesh, host_allocator) so the per-step hooks below take only fields.

    Arguments

    Type IntentOptional Attributes Name
    class(turbine_model_t), intent(inout) :: self
    class(base_backend_t), intent(in), target :: backend
    type(mesh_t), intent(in), target :: mesh
    type(allocator_t), intent(in), target :: host_allocator
    real(kind=dp), intent(in) :: dt

abstract interface

  • public subroutine update_iface(self, t, dt)

    Advance the turbine internal state (blade kinematics, rotor speed, velocity filtering) by one step. Called once per substep before project_forces.

    Arguments

    Type IntentOptional Attributes Name
    class(turbine_model_t), intent(inout) :: self
    real(kind=dp), intent(in) :: t
    real(kind=dp), intent(in) :: dt

abstract interface

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

    Sample the velocity field at the actuator points and accumulate the turbine momentum source into the RHS fields du, dv, dw. Uses the backend/mesh cached at init.

    Arguments

    Type IntentOptional Attributes Name
    class(turbine_model_t), intent(inout) :: 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

abstract interface

  • public subroutine write_output_iface(self, iter, is_root)

    Write per-turbine diagnostics (power, thrust, loads).

    Arguments

    Type IntentOptional Attributes Name
    class(turbine_model_t), intent(inout) :: self
    integer, intent(in) :: iter
    logical, intent(in) :: is_root

abstract interface

  • public subroutine setup_output_iface(self, is_root, append)

    Arguments

    Type IntentOptional Attributes Name
    class(turbine_model_t), intent(inout) :: self
    logical, intent(in) :: is_root
    logical, intent(in) :: append

abstract interface

  • public subroutine finalise_iface(self)

    Arguments

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

Derived Types

type, public, abstract, extends(checkpoint_state_t) ::  turbine_model_t

Type-Bound Procedures

procedure(write_checkpoint_iface), public, deferred :: write_checkpoint
procedure(read_checkpoint_iface), public, deferred :: read_checkpoint
procedure(init_iface), public, deferred :: init
procedure(update_iface), public, deferred :: update
procedure(project_forces_iface), public, deferred :: project_forces
procedure(write_output_iface), public, deferred :: write_output
procedure(setup_output_iface), public, deferred :: setup_output
procedure(finalise_iface), public, deferred :: finalise