Reusable, backend-agnostic Atmospheric Boundary Layer driver.
Ported from Incompact3d's Case-ABL.f90 (itype=10). The driver owns the
ABL physics and is owned by a case; it never uses m_solver/m_base_case,
taking fields/mesh/coords in (same pattern as m_ibm).
The neutral rough-wall model is configured here and evaluated as part of the LES SGS divergence, where it can replace the bottom-plane SGS flux without overwriting other momentum terms.
| Type | Intent | Optional | 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 | ||
| type(abl_config_t), | intent(in) | :: | cfg |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| class(base_backend_t), | public, | pointer | :: | backend | => | null() | |
| class(mesh_t), | public, | pointer | :: | mesh | => | null() | |
| type(allocator_t), | public, | pointer | :: | host_allocator | => | null() | |
| type(abl_config_t), | public | :: | cfg | ||||
| class(field_t), | public, | pointer | :: | damp_coeff | => | null() |
| private function init (backend, mesh, host_allocator, cfg) |
| procedure, public :: initialise | |
| procedure, public :: apply_forcing | |
| procedure, public :: configure_wall_boundary_correction | |
| procedure, public :: apply_damping | |
| procedure, public :: build_damping |