Line data Source code
1 : !-------------------------------------------------------------------------------- 2 : ! Copyright (c) 2016 Peter Grünberg Institut, Forschungszentrum Jülich, Germany 3 : ! This file is part of FLEUR and available as free software under the conditions 4 : ! of the MIT license as expressed in the LICENSE file in more detail. 5 : !-------------------------------------------------------------------------------- 6 : 7 : MODULE m_utility 8 : USE m_juDFT 9 : IMPLICIT NONE 10 : 11 : CONTAINS 12 : 13 : 14 160 : SUBROUTINE getComputerArchitectures(architectures, numArchitectures) 15 : IMPLICIT NONE 16 : INTEGER , INTENT(OUT) :: numArchitectures 17 : CHARACTER(LEN=*), INTENT(OUT) :: architectures(11) 18 160 : numArchitectures = 0 19 1920 : architectures = '' 20 : #ifdef CPP_AIX 21 : numArchitectures = numArchitectures + 1 22 : architectures(numArchitectures) = 'AIX' 23 : #endif 24 160 : END SUBROUTINE getComputerArchitectures 25 : 26 80 : SUBROUTINE getPrecision(precisionString) 27 : IMPLICIT NONE 28 : CHARACTER(LEN=*), INTENT(OUT) :: precisionString 29 : 30 : REAL :: dummy 31 : INTEGER :: realLength 32 : 33 80 : dummy = 0.0 34 80 : realLength = STORAGE_SIZE(dummy) 35 : 36 : IF(realLength.EQ.64) THEN 37 80 : precisionString = 'DOUBLE' 38 : ELSE IF (realLength.EQ.32) THEN 39 : ! precisionString = 'SINGLE' 40 : CALL juDFT_error("You compiled with single precision, this is most probably wrong!",calledby ="dimens") 41 : ELSE 42 : WRITE(*,*) 'real length: ', realLength 43 : CALL juDFT_error("You compiled with unknown precision, this is most probably wrong!",calledby ="dimens") 44 : END IF 45 : 46 80 : END SUBROUTINE getPrecision 47 : 48 80 : SUBROUTINE getTargetStructureProperties(specifiers, numSpecifiers) 49 : IMPLICIT NONE 50 : INTEGER , INTENT(OUT) :: numSpecifiers 51 : CHARACTER(LEN=*), INTENT(OUT) :: specifiers(11) 52 80 : numSpecifiers = 0 53 960 : specifiers = '' 54 80 : END SUBROUTINE getTargetStructureProperties 55 : 56 160 : SUBROUTINE getAdditionalCompilationFlags(flags, numFlags) 57 : IMPLICIT NONE 58 : INTEGER , INTENT(OUT) :: numFlags 59 : CHARACTER(LEN=*), INTENT(OUT) :: flags(11) 60 : numFlags = 0 61 1920 : flags = '' 62 : #ifdef CPP_MPI 63 160 : numFlags = numFlags + 1 64 160 : flags(numFlags) = 'CPP_MPI' 65 : #endif 66 : #ifdef CPP_HDF 67 160 : numFlags = numFlags + 1 68 160 : flags(numFlags) = 'CPP_HDF' 69 : #endif 70 : #ifdef CPP_WANN 71 160 : numFlags = numFlags + 1 72 160 : flags(numFlags) = 'CPP_WANN' 73 : #endif 74 : #ifdef CPP_NOSPMVEC 75 : numFlags = numFlags + 1 76 : flags(numFlags) = '+NOSPMVEC' 77 : #endif 78 : #ifdef CPP_IRAPPROX 79 : numFlags = numFlags + 1 80 : flags(numFlags) = '+IRAPPROX' 81 : #endif 82 160 : END SUBROUTINE getAdditionalCompilationFlags 83 : 84 : END MODULE m_utility