backends_mod.F90 Source File


Files dependent on this one

sourcefile~~backends_mod.f90~~AfferentGraph sourcefile~backends_mod.f90 backends_mod.F90 sourcefile~dealloc_resol_mod.f90 dealloc_resol_mod.F90 sourcefile~dealloc_resol_mod.f90->sourcefile~backends_mod.f90 sourcefile~resols_mod.f90 resols_mod.F90 sourcefile~dealloc_resol_mod.f90->sourcefile~resols_mod.f90 sourcefile~set_resol_mod.f90 set_resol_mod.F90 sourcefile~dealloc_resol_mod.f90->sourcefile~set_resol_mod.f90 sourcefile~dealloc_resol_mod.f90~2 dealloc_resol_mod.F90 sourcefile~dealloc_resol_mod.f90~2->sourcefile~backends_mod.f90 sourcefile~dealloc_resol_mod.f90~2->sourcefile~resols_mod.f90 sourcefile~dealloc_resol_mod.f90~2->sourcefile~set_resol_mod.f90 sourcefile~resols_mod.f90->sourcefile~backends_mod.f90 sourcefile~set_resol_mod.f90->sourcefile~backends_mod.f90 sourcefile~set_resol_mod.f90->sourcefile~resols_mod.f90 sourcefile~set_resol_mod.f90~2 set_resol_mod.F90 sourcefile~set_resol_mod.f90~2->sourcefile~backends_mod.f90 sourcefile~set_resol_mod.f90~2->sourcefile~resols_mod.f90 sourcefile~setup_trans.f90 setup_trans.F90 sourcefile~setup_trans.f90->sourcefile~backends_mod.f90 sourcefile~setup_trans.f90->sourcefile~dealloc_resol_mod.f90 sourcefile~setup_trans.f90->sourcefile~resols_mod.f90 sourcefile~setup_trans.f90->sourcefile~set_resol_mod.f90 sourcefile~setup_trans.f90~2 setup_trans.F90 sourcefile~setup_trans.f90~2->sourcefile~backends_mod.f90 sourcefile~setup_trans.f90~2->sourcefile~dealloc_resol_mod.f90 sourcefile~setup_trans.f90~2->sourcefile~resols_mod.f90 sourcefile~setup_trans.f90~2->sourcefile~set_resol_mod.f90 sourcefile~trans_end.f90 trans_end.F90 sourcefile~trans_end.f90->sourcefile~backends_mod.f90 sourcefile~trans_end.f90->sourcefile~resols_mod.f90 sourcefile~dir_trans.f90 dir_trans.F90 sourcefile~dir_trans.f90->sourcefile~set_resol_mod.f90 sourcefile~dir_trans.f90~2 dir_trans.F90 sourcefile~dir_trans.f90~2->sourcefile~set_resol_mod.f90 sourcefile~dir_transad.f90 dir_transad.F90 sourcefile~dir_transad.f90->sourcefile~set_resol_mod.f90 sourcefile~dir_transad.f90~2 dir_transad.F90 sourcefile~dir_transad.f90~2->sourcefile~set_resol_mod.f90 sourcefile~dist_grid.f90 dist_grid.F90 sourcefile~dist_grid.f90->sourcefile~set_resol_mod.f90 sourcefile~dist_grid.f90~2 dist_grid.F90 sourcefile~dist_grid.f90~2->sourcefile~set_resol_mod.f90 sourcefile~dist_spec.f90 dist_spec.F90 sourcefile~dist_spec.f90->sourcefile~set_resol_mod.f90 sourcefile~dist_spec.f90~2 dist_spec.F90 sourcefile~dist_spec.f90~2->sourcefile~set_resol_mod.f90 sourcefile~etrans_end.f90 etrans_end.F90 sourcefile~etrans_end.f90->sourcefile~resols_mod.f90 sourcefile~etrans_end.f90~2 etrans_end.F90 sourcefile~etrans_end.f90~2->sourcefile~resols_mod.f90 sourcefile~gath_grid.f90 gath_grid.F90 sourcefile~gath_grid.f90->sourcefile~set_resol_mod.f90 sourcefile~gath_grid.f90~2 gath_grid.F90 sourcefile~gath_grid.f90~2->sourcefile~set_resol_mod.f90 sourcefile~gath_spec.f90 gath_spec.F90 sourcefile~gath_spec.f90->sourcefile~set_resol_mod.f90 sourcefile~gath_spec.f90~2 gath_spec.F90 sourcefile~gath_spec.f90~2->sourcefile~set_resol_mod.f90 sourcefile~gpnorm_trans.f90 gpnorm_trans.F90 sourcefile~gpnorm_trans.f90->sourcefile~set_resol_mod.f90 sourcefile~gpnorm_trans.f90~2 gpnorm_trans.F90 sourcefile~gpnorm_trans.f90~2->sourcefile~set_resol_mod.f90 sourcefile~gpnorm_transad.f90 gpnorm_transad.F90 sourcefile~gpnorm_transad.f90->sourcefile~set_resol_mod.f90 sourcefile~gpnorm_transtl.f90 gpnorm_transtl.F90 sourcefile~gpnorm_transtl.f90->sourcefile~set_resol_mod.f90 sourcefile~inv_trans.f90 inv_trans.F90 sourcefile~inv_trans.f90->sourcefile~set_resol_mod.f90 sourcefile~inv_trans.f90~2 inv_trans.F90 sourcefile~inv_trans.f90~2->sourcefile~set_resol_mod.f90 sourcefile~inv_transad.f90 inv_transad.F90 sourcefile~inv_transad.f90->sourcefile~set_resol_mod.f90 sourcefile~inv_transad.f90~2 inv_transad.F90 sourcefile~inv_transad.f90~2->sourcefile~set_resol_mod.f90 sourcefile~setup_trans0.f90 setup_trans0.F90 sourcefile~setup_trans0.f90->sourcefile~resols_mod.f90 sourcefile~specnorm.f90 specnorm.F90 sourcefile~specnorm.f90->sourcefile~set_resol_mod.f90 sourcefile~specnorm.f90~2 specnorm.F90 sourcefile~specnorm.f90~2->sourcefile~set_resol_mod.f90 sourcefile~trans_inq.f90 trans_inq.F90 sourcefile~trans_inq.f90->sourcefile~set_resol_mod.f90 sourcefile~trans_inq.f90~2 trans_inq.F90 sourcefile~trans_inq.f90~2->sourcefile~set_resol_mod.f90 sourcefile~trans_pnm.f90 trans_pnm.F90 sourcefile~trans_pnm.f90->sourcefile~set_resol_mod.f90 sourcefile~trans_pnm.f90~2 trans_pnm.F90 sourcefile~trans_pnm.f90~2->sourcefile~set_resol_mod.f90 sourcefile~trans_release.f90 trans_release.F90 sourcefile~trans_release.f90->sourcefile~resols_mod.f90 sourcefile~vordiv_to_uv.f90 vordiv_to_uv.F90 sourcefile~vordiv_to_uv.f90->sourcefile~set_resol_mod.f90 sourcefile~vordiv_to_uv.f90~2 vordiv_to_uv.F90 sourcefile~vordiv_to_uv.f90~2->sourcefile~set_resol_mod.f90

Source Code

! (C) Copyright 2026- ECMWF.
! 
! This software is licensed under the terms of the Apache Licence Version 2.0
! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
! In applying this licence, ECMWF does not waive the privileges and immunities
! granted to it by virtue of its status as an intergovernmental organisation
! nor does it submit to any jurisdiction.

MODULE BACKENDS_MOD

USE EC_PARKIND, ONLY: JPIM

IMPLICIT NONE

! Integer parameters to identify the backend type for which a deallocator is defined
INTEGER(KIND=JPIM), PARAMETER :: JP_UNINITIALISED = -1
INTEGER(KIND=JPIM), PARAMETER :: JP_BACKEND_CPU_SP = 1
INTEGER(KIND=JPIM), PARAMETER :: JP_BACKEND_CPU_DP = 2
INTEGER(KIND=JPIM), PARAMETER :: JP_BACKEND_GPU_SP = 3
INTEGER(KIND=JPIM), PARAMETER :: JP_BACKEND_GPU_DP = 4

! Currently there are 4 backends supported for global transforms
! Note: etrans currently still uses its own ETRANS_END finalise subroutine
INTEGER(KIND=JPIM), PARAMETER :: JP_N_BACKENDS = 4

! All final teardown subroutines must look like this
ABSTRACT INTERFACE
  SUBROUTINE BACKEND_TEARDOWN
  END SUBROUTINE BACKEND_TEARDOWN
END INTERFACE

TYPE :: BACKEND
  LOGICAL :: ENABLED = .FALSE.
  PROCEDURE(BACKEND_TEARDOWN), POINTER, NOPASS :: TEARDOWN => NULL()
END TYPE

TYPE(BACKEND) :: Y_BACKENDS(JP_N_BACKENDS)

END MODULE BACKENDS_MOD