Actuator Line Model (ALM) turbine forcing (iturbine = 1).
Ported from Incompact3d's actuator line model (G. Deskos, 2015-2017;
acl_*.f90, airfoils.f90). Each blade (and the optional tower) is a
line of actuator elements; the blade-element loads computed from the
airfoil polars (m_alm_turbine, m_alm_element) are projected back onto
the flow as a momentum source.
Once per time step, on the first substage:
1. the fluid velocity at every element centre is
interpolated trilinearly from the grid,
2. the element forces follow from the polars,
3. they are smeared onto the grid with an isotropic Gaussian kernel,
truncated at ,
4. the rotors are advanced to the next time step.
The same sources are projected onto the momentum RHS at every substage
of the step, as Incompact3d adds its force field. The sampling
and the projection run on the backend; the blade bookkeeping is
replicated on every rank.
Turbines are described by Incompact3d .turb files (see m_alm_turbine).
The standalone actuator lines of Incompact3d (NActuatorlines) are not
ported. Only uniform grids are supported.
Kernel truncation radius in units of epsilon (Incompact3d's
dist2_max = 100 epsilon^2)
module~~m_alm~~UsesGraph
module~m_alm
m_alm
m_mpi
m_mpi
module~m_alm->m_mpi
module~m_allocator
m_allocator
module~m_alm->module~m_allocator
module~m_alm_controller
m_alm_controller
module~m_alm->module~m_alm_controller
module~m_alm_element
m_alm_element
module~m_alm->module~m_alm_element
module~m_alm_output
m_alm_output
module~m_alm->module~m_alm_output
module~m_alm_turbine
m_alm_turbine
module~m_alm->module~m_alm_turbine
module~m_base_backend
m_base_backend
module~m_alm->module~m_base_backend
module~m_common
m_common
module~m_alm->module~m_common
module~m_field
m_field
module~m_alm->module~m_field
module~m_io_session
m_io_session
module~m_alm->module~m_io_session
module~m_logger
m_logger
module~m_alm->module~m_logger
module~m_mesh
m_mesh
module~m_alm->module~m_mesh
module~m_scalar_series
m_scalar_series
module~m_alm->module~m_scalar_series
module~m_turbine_model
m_turbine_model
module~m_alm->module~m_turbine_model
module~m_allocator->module~m_common
module~m_allocator->module~m_field
module~m_alm_controller->module~m_common
module~m_alm_controller->module~m_logger
module~m_alm_element->module~m_common
module~m_alm_airfoil
m_alm_airfoil
module~m_alm_element->module~m_alm_airfoil
module~m_alm_output->module~m_alm_element
module~m_alm_output->module~m_common
module~m_alm_output->module~m_logger
module~m_alm_turbine->module~m_alm_controller
module~m_alm_turbine->module~m_alm_element
module~m_alm_turbine->module~m_common
module~m_alm_turbine->module~m_logger
module~m_alm_turbine->module~m_alm_airfoil
module~m_base_backend->m_mpi
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_logger
module~m_base_backend->module~m_mesh
iso_c_binding
iso_c_binding
module~m_base_backend->iso_c_binding
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_common->m_mpi
module~m_common->module~m_logger
module~m_field->module~m_common
module~m_field->iso_c_binding
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
m_io_backend
module~m_io_session->module~m_io_backend
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->m_mpi
module~m_mesh->module~m_common
module~m_mesh->module~m_field
module~m_mesh->module~m_logger
module~m_mesh_content
m_mesh_content
module~m_mesh->module~m_mesh_content
module~m_scalar_series->module~m_common
module~m_scalar_series->module~m_logger
module~m_turbine_model->module~m_allocator
module~m_turbine_model->module~m_base_backend
module~m_turbine_model->module~m_common
module~m_turbine_model->module~m_field
module~m_turbine_model->module~m_mesh
module~m_checkpoint_state
m_checkpoint_state
module~m_turbine_model->module~m_checkpoint_state
module~m_alm_airfoil->module~m_common
module~m_alm_airfoil->module~m_logger
module~m_checkpoint_state->module~m_io_session
module~m_io_backend->module~m_base_backend
module~m_io_backend->module~m_common
module~m_io_backend->module~m_field
module~m_io_backend->module~m_logger
module~m_io_backend->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
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_logger
module~m_poisson_fft->module~m_mesh
module~m_poisson_fft->module~m_tdsops
module~m_tdsops->module~m_common
module~m_tdsops->module~m_logger
Nodes of different colours represent the following:
Graph Key
Module
Module
Submodule
Submodule
Subroutine
Subroutine
Function
Function
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
module~~m_alm~~UsedByGraph
module~m_alm
m_alm
module~m_turbine_setup
m_turbine_setup
module~m_turbine_setup->module~m_alm
module~m_case_abl
m_case_abl
module~m_case_abl->module~m_turbine_setup
module~m_case_wind_turbine
m_case_wind_turbine
module~m_case_wind_turbine->module~m_turbine_setup
module~m_case_factory
m_case_factory
module~m_case_factory->module~m_case_abl
module~m_case_factory->module~m_case_wind_turbine
module~m_memcheck_build
m_memcheck_build
module~m_memcheck_build->module~m_case_abl
module~m_memcheck_build->module~m_case_factory
program~x3d2_memcheck
x3d2_memcheck
program~x3d2_memcheck->module~m_memcheck_build
program~xcompact
xcompact
program~xcompact->module~m_case_factory
Nodes of different colours represent the following:
Graph Key
Module
Module
Submodule
Submodule
Subroutine
Subroutine
Function
Function
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Derived Types
Components
Type
Visibility Attributes
Name
Initial
character(len=256),
public,
allocatable
::
turbine_files (:)
real(kind=dp),
public
::
rho_air
=
1._dp
real(kind=dp),
public
::
eps_factor
=
2._dp
kernel width in cell sizes
real(kind=dp),
public
::
nu
=
0._dp
kinematic viscosity (element Re)
real(kind=dp),
public
::
u_inflow
=
0._dp
initial reference speed (NREL mode)
integer,
public
::
stats_start
=
1
integer,
public
::
stats_freq
=
1
integer,
public
::
n_turb
=
0
type(turbine_t ),
public,
allocatable
::
turbine (:)
integer,
public
::
n_src
=
0
actuator points over all turbines
integer,
public
::
n_tower_elem
=
0
real(kind=dp),
public
::
eps
real(kind=dp),
public
::
r_cut
real(kind=dp),
public
::
prefactor
real(kind=dp),
public
::
dt
real(kind=dp),
public
::
ctime
=
0._dp
rotor time, as Incompact3d's ctime
real(kind=dp),
public
::
last_update_time
=
-huge(1._dp)
integer,
public
::
current_iter
=
0
logical,
public
::
new_step
=
.true.
integer,
public
::
sample_count
=
0
real(kind=dp),
public,
allocatable
::
thrust_mean (:)
Sources of the current step: positions and acceleration coefficients
real(kind=dp),
public,
allocatable
::
torque_mean (:)
Sources of the current step: positions and acceleration coefficients
real(kind=dp),
public,
allocatable
::
power_mean (:)
Sources of the current step: positions and acceleration coefficients
real(kind=dp),
public,
allocatable
::
src_points (:,:)
real(kind=dp),
public,
allocatable
::
src_coeffs (:,:)
type(scalar_series_t ),
public,
allocatable
::
perf (:)
class(base_backend_t ),
public,
pointer
::
backend
=>
null()
type(mesh_t ),
public,
pointer
::
mesh
=>
null()
type(allocator_t ),
public,
pointer
::
host_allocator
=>
null()
Type-Bound Procedures
procedure, public ::
init => init_alm
procedure, public ::
update => update_alm
procedure, public ::
project_forces => project_forces_alm
procedure, public ::
write_output => write_output_alm
procedure, public ::
setup_output => setup_output_alm
procedure, public ::
write_checkpoint => write_checkpoint_alm
procedure, public ::
read_checkpoint => read_checkpoint_alm
procedure, public ::
finalise => finalise_alm
procedure, public ::
gather_points
procedure, public ::
sample_velocity