preparing for PGI compiler

This commit is contained in:
Martin Diehl 2019-04-03 16:24:15 +00:00
parent 43ead134d2
commit 453eb538f7
9 changed files with 67 additions and 10 deletions

View File

@ -36,6 +36,10 @@ add_library(IO OBJECT "IO.f90")
add_dependencies(IO DAMASK_INTERFACE)
list(APPEND OBJECTFILES $<TARGET_OBJECTS:IO>)
add_library(FUTURE OBJECT "future.f90")
add_dependencies(FUTURE IO)
list(APPEND OBJECTFILES $<TARGET_OBJECTS:FUTURE>)
add_library(NUMERICS OBJECT "numerics.f90")
add_dependencies(NUMERICS IO)
list(APPEND OBJECTFILES $<TARGET_OBJECTS:NUMERICS>)

View File

@ -42,6 +42,7 @@ module Lambert
pReal
use math, only: &
PI
use future
implicit none
private

View File

@ -18,6 +18,7 @@ module crystallite
FEsolving_execIP
use material, only: &
homogenization_Ngrains
use future
implicit none

46
src/future.f90 Normal file
View File

@ -0,0 +1,46 @@
!--------------------------------------------------------------------------------------------------
!> @author Martin Diehl, Max-Planck-Institut für Eisenforschung GmbH
!> @brief New fortran functions for compiler versions that do not support them
!--------------------------------------------------------------------------------------------------
module future
public
contains
#if defined(__GFORTRAN__) || __INTEL_COMPILER < 1800
!--------------------------------------------------------------------------------------------------
!> @brief substitute for the findloc intrinsic (only for integer, dimension(:) at the moment)
!--------------------------------------------------------------------------------------------------
function findloc(a,v)
integer, intent(in), dimension(:) :: a
integer, intent(in) :: v
integer :: i,j
integer, allocatable, dimension(:) :: findloc
allocate(findloc(count(a==v)))
j = 1
do i = 1, size(a)
if (a(i)==v) then
findloc(j) = i
j = j + 1
endif
enddo
end function findloc
#endif
#if defined(__PGI)
!--------------------------------------------------------------------------------------------------
!> @brief substitute for the norm2 intrinsic (only for real,dimension(3) at the moment)
!--------------------------------------------------------------------------------------------------
real(pReal) pure function norm2(v)
use prec, only: &
pReal
implicit none
real(pReal), intent(in), dimension(3) :: v
norm2 = sqrt(sum(v**2))
end function norm2
#endif
end module future

View File

@ -9,6 +9,7 @@
module lattice
use prec, only: &
pReal
use future
implicit none
private

View File

@ -8,6 +8,7 @@
module math
use prec, only: &
pReal
use future
implicit none
private

View File

@ -15,6 +15,7 @@ module mesh_base
pInt
use element, only: &
tElement
use future
implicit none

View File

@ -7,6 +7,7 @@
module plastic_nonlocal
use prec, only: &
pReal
use future
implicit none
private

View File

@ -36,6 +36,7 @@
module quaternions
use prec, only: &
pReal
use future
implicit none
public