| Module | Source File | Description |
|---|---|---|
| m_abl | abl.f90 | Reusable, backend-agnostic Atmospheric Boundary Layer driver. |
| m_abl_diagnostics | diagnostics.f90 | Horizontal/time profile diagnostics for the neutral ABL validation. |
| m_adm | adm.f90 | Actuator Disc Model (ADM) turbine forcing (iturbine = 2). |
| m_allocator | allocator.f90 | |
| m_alm | alm.f90 | Actuator Line Model (ALM) turbine forcing (iturbine = 1). |
| m_alm_airfoil | alm_airfoil.f90 | Static airfoil polars for the actuator line model (ALM). |
| m_alm_controller | alm_controller.f90 | Variable-speed generator-torque controller and PI collective blade-pitch controller of the NREL offshore 5 MW baseline turbine, as written by J. Jonkman (NREL/NWTC) for the IEA Annex XXIII OC3 studies (DISCON). |
| m_alm_element | alm_element.f90 | Actuator lines for the actuator line model (ALM): blade-element geometry, rigid-body kinematics and aerodynamic loads. |
| m_alm_output | alm_output.f90 | Per-element load output of the actuator line model (ALM). |
| m_alm_turbine | alm_turbine.f90 | Horizontal-axis wind turbines for the actuator line model (ALM). |
| m_backend_setup | setup.f90 | Creates the backend and allocators for the backend this build targets, so that the solver driver (xcompact.f90) needs no backend-specific code. |
| m_base_backend | backend.f90 | |
| m_base_case | base_case.f90 | Provides the base case for running a simulation. New cases are implemented by extending this to specify the initial and boundary conditions, forcing terms and case-specific postprocessing and analysis. |
| m_case_abl | abl.f90 | |
| m_case_channel | channel.f90 | |
| m_case_cylinder | cylinder.f90 | |
| m_case_factory | case_factory.f90 | Flow case dispatch shared by xcompact and x3d2-memcheck. |
| m_case_generic | generic.f90 | An example case set up to run and sustain a freestream flow. This is a good place to start for adding a new flow case. |
| m_case_tgv | tgv.f90 | |
| m_case_wind_turbine | wind_turbine.f90 | Case for wind-turbine simulations (the |
| m_checkpoint_manager | checkpoint_manager.f90 | for restart capabilities. |
| m_checkpoint_state | checkpoint_state.f90 | Interface for case- or model-specific state stored in solver checkpoints. |
| m_common | common.f90 | |
| m_config | config.f90 | Contains all the namelist configurations used in x3d2 |
| m_cuda_allocator | allocator.f90 | |
| m_cuda_backend | backend.f90 | |
| m_cuda_common | common.f90 | |
| m_cuda_errors | errors.f90 | CUDA and cuFFT counterparts of m_logger's check_mpi: turn a failed return code into a report naming the operation, the rank and the error, followed by an abort of the whole run. |
| m_cuda_exec_dist | exec_dist.f90 | |
| m_cuda_exec_thom | exec_thom.f90 | |
| m_cuda_kernels_dist | distributed.f90 | |
| m_cuda_kernels_fieldops | fieldops.f90 | |
| m_cuda_kernels_reorder | reorder.f90 | |
| m_cuda_kernels_thom | thomas.f90 | |
| m_cuda_memcheck_device | memcheck_device.f90 | The CUDA device of x3d2-memcheck: the FFT plan probe and the memory readings. |
| m_cuda_poisson_fft | poisson_fft.f90 | create_fft_plan is deliberately public: the static memory estimator (m_cuda_memcheck_device, src/backend/cuda/memcheck_device.f90) calls it standalone (plan only, no mesh/case/fields) to capture the real cuFFT/cuFFTMp workspace size via its worksize out-argument, instead of duplicating cufftMakePlan3D's call sequence a second time. |
| m_cuda_sendrecv | sendrecv.f90 | |
| m_cuda_spectral | spectral_processing.f90 | |
| m_cuda_tdsops | tdsops.f90 | |
| m_decomp | decomp_2decompfft.f90 | Parallel decomposition provided by 2decomp&FFT |
| m_decomp | decomp_dummy.f90 | Dummy implementation of the decomposition to be linked against when 2decomp&fft isn't available. |
| m_exec_thom | exec_thom.f90 | |
| m_field | field.f90 | |
| m_ibm | ibm.f90 | This module implements the IBM capabilities. |
| m_inflow_planes | inflow_planes.f90 | Time-indexed y-z velocity planes for precursor-successor inflow. |
| m_io_backend | io.f90 | Provides a dummy, non-functional I/O backend for when an I/O backend |
| m_io_backend | io.f90 | Provides ADIOS2-specific implementation of the I/O backend interface |
| m_io_base | io_base.f90 | Provides the abstract base types and interfaces for the session-based |
| m_io_field_utils | io_field_utils.f90 | Provides common utilities and helper routines for field I/O |
| m_io_manager | io_manager.f90 | Provides a high-level manager that orchestrates all checkpoint, snapshot, and statistics operations. |
| m_io_session | io_session.f90 | Provides high-level, session-based user interface for all I/O |
| m_les | les.f90 | Shared physics for explicit eddy-viscosity LES models. |
| m_logger | logger.f90 | Single point for x3d2 to report progress, warnings and errors, and to stop the run when something goes wrong. |
| m_memcheck_build | build.f90 | The real build of x3d2-memcheck (--build): the real case build, its measurement and the measured report. |
| m_memcheck_context | context.f90 | Run state of x3d2-memcheck, passed explicitly to every routine. |
| m_memcheck_estimate | estimate.f90 | The per-GPU memory estimate of x3d2-memcheck. |
| m_memcheck_report | report.f90 | Printed report of x3d2-memcheck: header, tables and verdict lines. |
| m_memory_estimate | memory_estimate.f90 | Static (no-run) GPU memory footprint formulas for the CUDA backend. |
| m_mesh | mesh.f90 | |
| m_mesh_content | mesh_content.f90 | |
| m_monitoring | monitoring.f90 | Computes and logs global scalar monitoring quantities to a file. |
| m_nvtx | nvtx.f90 | NVTX ranges for profiling I/O with Nsight Systems. |
| m_omp_backend | backend.f90 | |
| m_omp_common | common.f90 | |
| m_omp_exec_dist | exec_dist.f90 | |
| m_omp_kernels_dist | distributed.f90 | |
| m_omp_kernels_thom | thomas.f90 | |
| m_omp_poisson_fft | poisson_fft.f90 | |
| m_omp_sendrecv | sendrecv.f90 | |
| m_omp_spectral | spectral_processing.f90 | |
| m_omptgt_allocator | allocator.f90 | |
| m_omptgt_backend | backend.f90 | |
| m_omptgt_common | common.f90 | Constants and device-memory helpers shared by the OpenMP target backend. |
| m_omptgt_device_info | device_info.f90 | Peak memory clock and bus width of an OpenMP target device, read from the vendor runtime. |
| m_omptgt_exec_dist | exec_dist.f90 | Drivers of the distributed compact solves for the OpenMP target backend, following cuda/exec_dist.f90. Fields are (SZ, n, n_groups) device arrays and only the first n_groups groups are processed. |
| m_omptgt_exec_thom | exec_thom.f90 | |
| m_omptgt_kernels_dist | distributed.f90 | Distributed compact-scheme kernels for the OpenMP target backend, following cuda/kernels/distributed.f90. |
| m_omptgt_kernels_fieldops | fieldops.f90 | Field operation kernels for the OpenMP target backend, following cuda/kernels/fieldops.f90 and the sum/reorder kernels of cuda/kernels/reorder.f90. |
| m_omptgt_kernels_thom | thomas.f90 | Thomas algorithm kernels for the OpenMP target backend, following
cuda/kernels/thomas.f90. See m_omptgt_kernels_dist for the offload
pattern: one |
| m_omptgt_sendrecv | sendrecv.f90 | Halo exchange of device buffers for the OpenMP target backend, following cuda/sendrecv.f90. |
| m_omptgt_tdsops | tdsops.f90 | OpenMP target extension of the tridiagonal solver operators. |
| m_ordering | ordering.f90 | "Application storage" stores spatial data with a directionality for better cache locality This set of functions converts indices from this application storage (_dir) to cartesian indices (_ijk) |
| m_poisson_fft | poisson_fft.f90 | |
| m_postprocess | postprocess.f90 | Computation of derived fields for snapshot output. |
| m_scalar_series | scalar_series.f90 | Root-only writer for named scalar time series. When .false., init opens no file and write_step writes nothing. |
| m_snapshot_manager | snapshot_manager.f90 | Manages the creation of simulation snapshots for post-processing |
| m_solver | solver.f90 | |
| m_stats | stats.f90 | Online accumulation of flow field statistics. |
| m_tdsops | tdsops.f90 | |
| m_tdsops_setup | tdsops_setup.f90 | |
| m_time_integrator | time_integrator.f90 | |
| m_turbine_dummy | turbine_dummy.f90 | Dummy (no-op) turbine model. |
| m_turbine_model | turbine_model.f90 | Abstract interface for turbine forcing models (actuator disc, actuator line) |
| m_turbine_setup | turbine_setup.f90 | Turbine set-up and tear-down shared by the cases that carry turbines
(wind_turbine and abl). This is the only place the |
| m_vector_calculus | vector_calculus.f90 |