Skip to the content.

Structure of GX-common and GX-TimeFrequency

In this section, we focus on the components of the library which are ready to use, i.e., the GX-common and GX-TimeFrequency components. GX-common provides functionality for all library components, such as error handling and unit conversion utilities. GX-TimeFrequency provides an API directory for the time-frequency transformations, a source directory, and a test directory with scripts for verifying the implementation. The relevant directory tree section is:

  |- CMakeLists.txt
  |- developers.md
  |- Doxyfile
  |- GX-common
  |  |- CMakeLists.txt
  |  |- src
  |  |  |- constants.f90
  |  |  |- error_handling.f90
  |  |  |- kinds.f90
  |  |  |- lapack_interfaces.f90
  |  |  |- unit_conversion.f90
  |- GX-TimeFrequency
  |  |- api
  |  |  |- api_utilities.f90
  |  |  |- gx_minimax.f90
  |  |- CITATION.cff
  |  |- CMakeLists.txt
  |  |- LICENSE.txt
  |  |- README.md
  |  |- src
  |  |  |- gx_common.h
  |  |  |- minimax_grids.F90
  |  |  |- minimax_omega.F90
  |  |  |- minimax_tau.F90
  |  |  |- minimax_utils.F90
  |  |- test
  |  |  |- conftest.py
  |  |  |- test_gx_minimax_grid.f90
  |  |  |- test_gx_minimax_grid.py
  |  |  |- test_gx_tabulate_minimax.py
  |  |- utilities
  |  |  |- gx_tabulate_minimax.F90
  |- LICENSE.txt
  |- README.md

The time and frequency grids \(\{\tau_k(R)\}_{k=1}^n\), \(\{\omega_j(R)\}_{j=1}^n\) and the integration weights \(\{\gamma_k(R)\}_{k=1}^n\), \(\{\sigma_j(R)\}_{j=1}^n\) are tabulated (hard coded) in the module minimax_tau.f90 and minimax_omega.f90 for various ranges \(R\) of interest for solids and molecules. The module minimax_grids.f90 calculates the weights \(\{\delta_{kj}\}_{k,j=1}^n\), \(\{\eta_{jk}\}_{k,j=1}^n\), \(\{\lambda_{kj}\}_{k,j=1}^n\) of cosine and sine transforms during the runtime of the program. ‘minimax_grids.f90’ also provides the duality error \(\Delta_{\text{CT}}\). minimax_utils.f90 contains auxiliary procedures and data structures for the main minimax routines.