turbine_dummy.f90 Source File


This file depends on

sourcefile~~turbine_dummy.f90~~EfferentGraph sourcefile~turbine_dummy.f90 turbine_dummy.f90 sourcefile~allocator.f90 allocator.f90 sourcefile~turbine_dummy.f90->sourcefile~allocator.f90 sourcefile~backend.f90~2 backend.f90 sourcefile~turbine_dummy.f90->sourcefile~backend.f90~2 sourcefile~common.f90~4 common.f90 sourcefile~turbine_dummy.f90->sourcefile~common.f90~4 sourcefile~field.f90 field.f90 sourcefile~turbine_dummy.f90->sourcefile~field.f90 sourcefile~io_session.f90 io_session.f90 sourcefile~turbine_dummy.f90->sourcefile~io_session.f90 sourcefile~mesh.f90 mesh.f90 sourcefile~turbine_dummy.f90->sourcefile~mesh.f90 sourcefile~turbine_model.f90 turbine_model.f90 sourcefile~turbine_dummy.f90->sourcefile~turbine_model.f90 sourcefile~allocator.f90->sourcefile~common.f90~4 sourcefile~allocator.f90->sourcefile~field.f90 sourcefile~backend.f90~2->sourcefile~allocator.f90 sourcefile~backend.f90~2->sourcefile~common.f90~4 sourcefile~backend.f90~2->sourcefile~field.f90 sourcefile~backend.f90~2->sourcefile~mesh.f90 sourcefile~logger.f90 logger.f90 sourcefile~backend.f90~2->sourcefile~logger.f90 sourcefile~poisson_fft.f90~3 poisson_fft.f90 sourcefile~backend.f90~2->sourcefile~poisson_fft.f90~3 sourcefile~tdsops.f90 tdsops.f90 sourcefile~backend.f90~2->sourcefile~tdsops.f90 sourcefile~common.f90~4->sourcefile~logger.f90 sourcefile~field.f90->sourcefile~common.f90~4 sourcefile~io_session.f90->sourcefile~backend.f90~2 sourcefile~io_session.f90->sourcefile~common.f90~4 sourcefile~io_session.f90->sourcefile~field.f90 sourcefile~io.f90 io.f90 sourcefile~io_session.f90->sourcefile~io.f90 sourcefile~io_base.f90 io_base.f90 sourcefile~io_session.f90->sourcefile~io_base.f90 sourcefile~io_session.f90->sourcefile~logger.f90 sourcefile~mesh.f90->sourcefile~common.f90~4 sourcefile~mesh.f90->sourcefile~field.f90 sourcefile~decomp_dummy.f90 decomp_dummy.f90 sourcefile~mesh.f90->sourcefile~decomp_dummy.f90 sourcefile~mesh.f90->sourcefile~logger.f90 sourcefile~mesh_content.f90 mesh_content.f90 sourcefile~mesh.f90->sourcefile~mesh_content.f90 sourcefile~turbine_model.f90->sourcefile~allocator.f90 sourcefile~turbine_model.f90->sourcefile~backend.f90~2 sourcefile~turbine_model.f90->sourcefile~common.f90~4 sourcefile~turbine_model.f90->sourcefile~field.f90 sourcefile~turbine_model.f90->sourcefile~mesh.f90 sourcefile~checkpoint_state.f90 checkpoint_state.f90 sourcefile~turbine_model.f90->sourcefile~checkpoint_state.f90 sourcefile~checkpoint_state.f90->sourcefile~io_session.f90 sourcefile~decomp_dummy.f90->sourcefile~logger.f90 sourcefile~decomp_dummy.f90->sourcefile~mesh_content.f90 sourcefile~io.f90->sourcefile~backend.f90~2 sourcefile~io.f90->sourcefile~common.f90~4 sourcefile~io.f90->sourcefile~field.f90 sourcefile~io.f90->sourcefile~io_base.f90 sourcefile~io.f90->sourcefile~logger.f90 sourcefile~nvtx.f90 nvtx.f90 sourcefile~io.f90->sourcefile~nvtx.f90 sourcefile~io_base.f90->sourcefile~backend.f90~2 sourcefile~io_base.f90->sourcefile~common.f90~4 sourcefile~io_base.f90->sourcefile~field.f90 sourcefile~mesh_content.f90->sourcefile~common.f90~4 sourcefile~mesh_content.f90->sourcefile~logger.f90 sourcefile~poisson_fft.f90~3->sourcefile~common.f90~4 sourcefile~poisson_fft.f90~3->sourcefile~field.f90 sourcefile~poisson_fft.f90~3->sourcefile~mesh.f90 sourcefile~poisson_fft.f90~3->sourcefile~logger.f90 sourcefile~poisson_fft.f90~3->sourcefile~tdsops.f90 sourcefile~tdsops.f90->sourcefile~common.f90~4 sourcefile~tdsops.f90->sourcefile~logger.f90

Files dependent on this one

sourcefile~~turbine_dummy.f90~~AfferentGraph sourcefile~turbine_dummy.f90 turbine_dummy.f90 sourcefile~wind_turbine.f90 wind_turbine.f90 sourcefile~wind_turbine.f90->sourcefile~turbine_dummy.f90 sourcefile~xcompact.f90 xcompact.f90 sourcefile~xcompact.f90->sourcefile~wind_turbine.f90

Source Code

module m_turbine_dummy
  !! Dummy (no-op) turbine model.
  !!
  !! Implements turbine_model_t but adds zero forcing. It is the explicit
  !! "no turbine" model selected when iturbine = 0, and also lets the
  !! wind-turbine carrier case (m_case_wind_turbine) build and run before any
  !! real turbine physics exists. The actuator disc model and
  !! actuator line model provide their own turbine_model_t
  !! implementations alongside this one.
  use m_allocator, only: allocator_t
  use m_base_backend, only: base_backend_t
  use m_common, only: dp
  use m_field, only: field_t
  use m_mesh, only: mesh_t
  use m_io_session, only: reader_session_t, writer_session_t
  use m_turbine_model, only: turbine_model_t

  implicit none

  type, extends(turbine_model_t) :: turbine_dummy_t
  contains
    procedure :: init => init_dummy
    procedure :: update => update_dummy
    procedure :: project_forces => project_forces_dummy
    procedure :: write_output => write_output_dummy
    procedure :: setup_output => setup_output_dummy
    procedure :: write_checkpoint => write_checkpoint_dummy
    procedure :: read_checkpoint => read_checkpoint_dummy
    procedure :: finalise => finalise_dummy
  end type turbine_dummy_t

contains

  subroutine init_dummy(self, backend, mesh, host_allocator, dt)
    implicit none
    class(turbine_dummy_t), intent(inout) :: self
    class(base_backend_t), target, intent(in) :: backend
    type(mesh_t), target, intent(in) :: mesh
    type(allocator_t), target, intent(in) :: host_allocator
    real(dp), intent(in) :: dt
    ! no state to initialise
  end subroutine init_dummy

  subroutine update_dummy(self, t, dt)
    implicit none
    class(turbine_dummy_t), intent(inout) :: self
    real(dp), intent(in) :: t, dt
    ! no kinematics to advance
  end subroutine update_dummy

  subroutine project_forces_dummy(self, du, dv, dw, u, v, w)
    implicit none
    class(turbine_dummy_t), intent(inout) :: self
    class(field_t), intent(inout) :: du, dv, dw
    class(field_t), intent(in) :: u, v, w
    ! no momentum source added
  end subroutine project_forces_dummy

  subroutine write_output_dummy(self, iter, is_root)
    implicit none
    class(turbine_dummy_t), intent(inout) :: self
    integer, intent(in) :: iter
    logical, intent(in) :: is_root
    ! no diagnostics to write
  end subroutine write_output_dummy

  subroutine setup_output_dummy(self, is_root, append)
    class(turbine_dummy_t), intent(inout) :: self
    logical, intent(in) :: is_root, append
  end subroutine setup_output_dummy

  subroutine write_checkpoint_dummy(self, writer)
    class(turbine_dummy_t), intent(inout) :: self
    type(writer_session_t), intent(inout) :: writer
  end subroutine write_checkpoint_dummy

  subroutine read_checkpoint_dummy(self, reader)
    class(turbine_dummy_t), intent(inout) :: self
    type(reader_session_t), intent(inout) :: reader
  end subroutine read_checkpoint_dummy

  subroutine finalise_dummy(self)
    class(turbine_dummy_t), intent(inout) :: self
  end subroutine finalise_dummy

end module m_turbine_dummy