merged precision info into the file prec.f90 and removed prec_single.f90
precision information is now parsed as a makro, defined by the compiler, eg. -DFLOAT=8 for 8 byte long floats or -- in case no values is given -- for the FEM wrapper by the interface files. Please don't forget to run setup_code.py !!!!!!!!!!! abaqus_v6.env is adjusted to specify the standard precision (float=8, int=4) and got some extra compilation options, some deprecated warning supressors are removed Optional Marc modification will follow that allow automatic selection of suitable precision
This commit is contained in:
parent
bb25d1fee6
commit
73349d02f5
|
@ -37,9 +37,18 @@
|
|||
!
|
||||
!********************************************************************
|
||||
|
||||
#include "prec.f90"
|
||||
#ifndef INT
|
||||
#define INT 4
|
||||
#endif
|
||||
|
||||
#ifndef FLOAT
|
||||
#define FLOAT 8
|
||||
#endif
|
||||
|
||||
#define Abaqus
|
||||
|
||||
#include "prec.f90"
|
||||
|
||||
module DAMASK_interface
|
||||
|
||||
implicit none
|
||||
|
@ -134,7 +143,7 @@ subroutine vumat (jblock, ndir, nshr, nstatev, nfieldv, nprops, lanneal, &
|
|||
stressNew(*), stateNew(*), &
|
||||
enerInternNew(*), enerInelasNew(*)
|
||||
|
||||
character*80 cmname
|
||||
character(80) cmname
|
||||
|
||||
|
||||
call vumatXtrArg ( jblock(1), &
|
||||
|
@ -193,7 +202,7 @@ subroutine vumat (jblock, ndir, nshr, nstatev, nfieldv, nprops, lanneal, &
|
|||
dimension enerInelasNew(nblock),stateNew(nblock,nstatev),enerInternNew(nblock)
|
||||
dimension nElement(nblock),nMatPoint(nblock)
|
||||
|
||||
character*80 cmname
|
||||
character(80) cmname
|
||||
real(pReal), dimension (3,3) :: pstress ! not used, but needed for call of cpfem_general
|
||||
real(pReal), dimension (3,3,3,3) :: dPdF ! not used, but needed for call of cpfem_general
|
||||
! local variables
|
||||
|
@ -213,7 +222,7 @@ subroutine vumat (jblock, ndir, nshr, nstatev, nfieldv, nprops, lanneal, &
|
|||
|
||||
if (iand(debug_level(debug_abaqus),debug_levelBasic) /= 0) then
|
||||
!$OMP CRITICAL (write2out)
|
||||
write(6,'(i8,x,i2,x,a)') nElement(n),nMatPoint(n),'first call special case..!'; call flush(6)
|
||||
write(6,'(i8,1x,i2,1x,a)') nElement(n),nMatPoint(n),'first call special case..!'; call flush(6)
|
||||
!$OMP END CRITICAL (write2out)
|
||||
endif
|
||||
|
||||
|
@ -222,7 +231,7 @@ subroutine vumat (jblock, ndir, nshr, nstatev, nfieldv, nprops, lanneal, &
|
|||
|
||||
if (iand(debug_level(debug_abaqus),debug_levelBasic) /= 0) then
|
||||
!$OMP CRITICAL (write2out)
|
||||
write (6,'(i8,x,i2,x,a)') nElement(n),nMatPoint(n),'lastIncConverged + outdated'; call flush(6)
|
||||
write (6,'(i8,1x,i2,1x,a)') nElement(n),nMatPoint(n),'lastIncConverged + outdated'; call flush(6)
|
||||
!$OMP END CRITICAL (write2out)
|
||||
endif
|
||||
|
||||
|
@ -244,7 +253,7 @@ subroutine vumat (jblock, ndir, nshr, nstatev, nfieldv, nprops, lanneal, &
|
|||
|
||||
if (iand(debug_level(debug_abaqus),debug_levelBasic) /= 0) then
|
||||
!$OMP CRITICAL (write2out)
|
||||
write(6,'(a16,x,i2,x,a,i8,x,i5,a)') 'computationMode',computationMode,'(',nElement(n),nMatPoint(n),')'; call flush(6)
|
||||
write(6,'(a16,1x,i2,1x,a,i8,1x,i5,a)') 'computationMode',computationMode,'(',nElement(n),nMatPoint(n),')'; call flush(6)
|
||||
!$OMP END CRITICAL (write2out)
|
||||
endif
|
||||
|
||||
|
|
|
@ -37,9 +37,17 @@
|
|||
!
|
||||
!********************************************************************
|
||||
|
||||
#include "prec.f90"
|
||||
#ifndef INT
|
||||
#define INT 4
|
||||
#endif
|
||||
|
||||
#ifndef FLOAT
|
||||
#define FLOAT 8
|
||||
#endif
|
||||
|
||||
#define Abaqus
|
||||
|
||||
#include "prec.f90"
|
||||
|
||||
module DAMASK_interface
|
||||
|
||||
|
@ -146,7 +154,7 @@ subroutine UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,&
|
|||
|
||||
|
||||
implicit none
|
||||
CHARACTER*80 CMNAME
|
||||
CHARACTER(80) CMNAME
|
||||
integer(pInt) ndi, nshr, ntens, nstatv, nprops, noel, npt,&
|
||||
kslay, kspt, kstep, kinc
|
||||
real(pReal) STRESS(NTENS),STATEV(NSTATV),&
|
||||
|
@ -185,7 +193,7 @@ subroutine UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,&
|
|||
lastMode = .false. ! pretend last step was collection
|
||||
calcMode = .false. ! pretend last step was collection
|
||||
!$OMP CRITICAL (write2out)
|
||||
write (6,'(i8,x,i2,x,a)') noel,npt,'<< UMAT >> start of analysis..!'; call flush(6)
|
||||
write (6,'(i8,1x,i2,1x,a)') noel,npt,'<< UMAT >> start of analysis..!'; call flush(6)
|
||||
!$OMP END CRITICAL (write2out)
|
||||
else if (kinc - theInc > 1) then ! >> restart of broken analysis <<
|
||||
lastIncConverged = .false. ! no Jacobian backup
|
||||
|
@ -193,7 +201,7 @@ subroutine UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,&
|
|||
lastMode = .true. ! pretend last step was calculation
|
||||
calcMode = .true. ! pretend last step was calculation
|
||||
!$OMP CRITICAL (write2out)
|
||||
write (6,'(i8,x,i2,x,a)') noel,npt,'<< UMAT >> restart of analysis..!'; call flush(6)
|
||||
write (6,'(i8,1x,i2,1x,a)') noel,npt,'<< UMAT >> restart of analysis..!'; call flush(6)
|
||||
!$OMP END CRITICAL (write2out)
|
||||
else ! >> just the next inc <<
|
||||
lastIncConverged = .true. ! request Jacobian backup
|
||||
|
@ -201,7 +209,7 @@ subroutine UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,&
|
|||
lastMode = .true. ! assure last step was calculation
|
||||
calcMode = .true. ! assure last step was calculation
|
||||
!$OMP CRITICAL (write2out)
|
||||
write (6,'(i8,x,i2,x,a)') noel,npt,'<< UMAT >> new increment..!'; call flush(6)
|
||||
write (6,'(i8,1x,i2,1x,a)') noel,npt,'<< UMAT >> new increment..!'; call flush(6)
|
||||
!$OMP END CRITICAL (write2out)
|
||||
endif
|
||||
|
||||
|
@ -212,7 +220,7 @@ subroutine UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,&
|
|||
cycleCounter = -1 ! first calc step increments this to cycle = 0
|
||||
calcMode = .true. ! pretend last step was calculation
|
||||
!$OMP CRITICAL (write2out)
|
||||
write(6,'(i8,x,i2,x,a)') noel,npt,'<< UMAT >> cutback detected..!'; call flush(6)
|
||||
write(6,'(i8,1x,i2,1x,a)') noel,npt,'<< UMAT >> cutback detected..!'; call flush(6)
|
||||
!$OMP END CRITICAL (write2out)
|
||||
|
||||
endif ! convergence treatment end
|
||||
|
@ -220,7 +228,7 @@ subroutine UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,&
|
|||
calcMode(npt,cp_en) = .not. calcMode(npt,cp_en) ! ping pong (calc <--> collect)
|
||||
|
||||
if ( calcMode(npt,cp_en) ) then ! now calc
|
||||
if ( lastMode /= calcMode(npt,cp_en) ) then ! first after ping pong
|
||||
if ( lastMode .neqv. calcMode(npt,cp_en) ) then ! first after ping pong
|
||||
call debug_reset() ! resets debugging
|
||||
outdatedFFN1 = .false.
|
||||
cycleCounter = cycleCounter + 1
|
||||
|
@ -232,7 +240,7 @@ subroutine UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,&
|
|||
computationMode = 2 ! plain calc
|
||||
endif
|
||||
else ! now collect
|
||||
if ( lastMode /= calcMode(npt,cp_en) .and. &
|
||||
if ( lastMode .neqv. calcMode(npt,cp_en) .and. &
|
||||
.not. terminallyIll) then
|
||||
call debug_info() ! first after ping pong reports debugging
|
||||
endif
|
||||
|
@ -254,7 +262,7 @@ subroutine UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,&
|
|||
|
||||
if (iand(debug_level(debug_abaqus),debug_levelBasic) /= 0) then
|
||||
!$OMP CRITICAL (write2out)
|
||||
write(6,'(a16,x,i2,x,a,i8,a,i8,x,i5,a)') 'computationMode',computationMode,'(',cp_en,':',noel,npt,')'; call flush(6)
|
||||
write(6,'(a16,1x,i2,1x,a,i8,a,i8,1x,i5,a)') 'computationMode',computationMode,'(',cp_en,':',noel,npt,')'; call flush(6)
|
||||
!$OMP END CRITICAL (write2out)
|
||||
endif
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
! Copyright 2011 Max-Planck-Institut für Eisenforschung GmbH
|
||||
!
|
||||
! This file is part of DAMASK,
|
||||
! the Düsseldorf Advanced MAterial Simulation Kit.
|
||||
! the Düsseldorf Advanced Material Simulation Kit.
|
||||
!
|
||||
! DAMASK is free software: you can redistribute it and/or modify
|
||||
! it under the terms of the GNU General Public License as published by
|
||||
|
@ -54,10 +54,19 @@
|
|||
! - concom: lovl, ncycle, inc, incsub
|
||||
! - creeps: timinc
|
||||
!********************************************************************
|
||||
!
|
||||
#include "prec.f90"
|
||||
|
||||
#ifndef INT
|
||||
#define INT 4
|
||||
#endif
|
||||
|
||||
#ifndef FLOAT
|
||||
#define FLOAT 8
|
||||
#endif
|
||||
|
||||
#define Marc
|
||||
|
||||
#include "prec.f90"
|
||||
|
||||
module DAMASK_interface
|
||||
use prec, only: pInt
|
||||
|
||||
|
|
|
@ -194,13 +194,8 @@ endif
|
|||
# pointers: Checking for certain disassociated or uninitialized pointers or unallocated allocatable objects.
|
||||
# uninit: Checking for uninitialized variables.
|
||||
#-heap-arrays: should not be done for OpenMP, but set "ulimit -s unlimited" on shell. Probably it helps also to unlimit other limits
|
||||
#
|
||||
#OPTIONS FOR TYPE DEBUGGING
|
||||
#-real-size 32: set precision to one of those 32/64/128 (= 4/8/16 bytes) for standard real (=8 for pReal)
|
||||
#-integer-size 16: set precision to one of those 16/32/64 (= 2/4/8 bytes) for standard integer (=4 for pInt)
|
||||
###################################################################################################
|
||||
|
||||
|
||||
COMPILE_OPTIONS_gfortran :=-xf95-cpp-input
|
||||
ifneq "$(FASTBUILD)" "YES"
|
||||
COMPILE_OPTIONS_gfortran :=$(COMPILE_OPTIONS_gfortran)\
|
||||
|
@ -263,14 +258,18 @@ endif
|
|||
#
|
||||
#OPTIONS FOR DEGUBBING DURING RUNTIME
|
||||
#-fcheck-bounds: check if an array index is too small (<1) or too large!
|
||||
#
|
||||
#OPTIONS FOR TYPE DEBUGGING
|
||||
#-fdefault-real-8: set precision to 8 bytes for standard real (=8 for pReal). Will set size of double to 16 bytes as long as -fdefault-double-8 is not set
|
||||
#-fdefault-integer-8: set precision to 8 bytes for standard integer (=4 for pInt)
|
||||
##################################################################################################
|
||||
|
||||
COMPILE =$(OPENMP_FLAG_$(F90)) $(COMPILE_OPTIONS_$(F90)) $(STANDARD_CHECK_$(F90)) $(OPTIMIZATION_$(OPTI)_$(F90)) $(INCLUDE_DIRS) -DSpectral
|
||||
COMPILE_MAXOPTI =$(OPENMP_FLAG_$(F90)) $(COMPILE_OPTIONS_$(F90)) $(STANDARD_CHECK_$(F90)) $(OPTIMIZATION_$(MAXOPTI)_$(F90)) $(INCLUDE_DIRS) -DSpectral
|
||||
PRECISION_ifort :=-real-size 64 -integer-size 32 -DFLOAT=8 -DINT=4
|
||||
#-real-size 32: set precision to one of those 32/64/128 (= 4/8/16 bytes) for standard real (=8 for pReal)
|
||||
#-integer-size 16: set precision to one of those 16/32/64 (= 2/4/8 bytes) for standard integer (=4 for pInt)
|
||||
PRECISION_gfortran :=-fdefault-real-8 -fdefault-integer-4 -DFLOAT=8 -DINT=4
|
||||
#-fdefault-real-8: set precision to 8 bytes for standard real (=8 for pReal). Will set size of double to 16 bytes as long as -fdefault-double-8 is not set
|
||||
#-fdefault-integer-8: set precision to 8 bytes for standard integer (=4 for pInt)
|
||||
|
||||
###################################################################################################
|
||||
COMPILE =$(OPENMP_FLAG_$(F90)) $(COMPILE_OPTIONS_$(F90)) $(STANDARD_CHECK_$(F90)) $(OPTIMIZATION_$(OPTI)_$(F90)) $(INCLUDE_DIRS) $(PRECISION_$(F90)) -DSpectral
|
||||
COMPILE_MAXOPTI =$(OPENMP_FLAG_$(F90)) $(COMPILE_OPTIONS_$(F90)) $(STANDARD_CHECK_$(F90)) $(OPTIMIZATION_$(MAXOPTI)_$(F90)) $(INCLUDE_DIRS) $(PRECISION_$(F90)) -DSpectral
|
||||
###################################################################################################
|
||||
COMPILED_FILES = prec.o DAMASK_spectral_interface.o IO.o numerics.o debug.o math.o \
|
||||
FEsolving.o mesh.o material.o lattice.o \
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
! Copyright 2011 Max-Planck-Institut für Eisenforschung GmbH
|
||||
!
|
||||
! This file is part of DAMASK,
|
||||
! the Düsseldorf Advanced MAterial Simulation Kit.
|
||||
! the Düsseldorf Advanced Material Simulation Kit.
|
||||
!
|
||||
! DAMASK is free software: you can redistribute it and/or modify
|
||||
! it under the terms of the GNU General Public License as published by
|
||||
|
@ -23,10 +23,10 @@
|
|||
!> @author Philip Eisenlohr, Max-Planck-Institut für Eisenforschung GmbH
|
||||
!> @author Christoph Kords, Max-Planck-Institut für Eisenforschung GmbH
|
||||
!> @author Martin Diehl, Max-Planck-Institut für Eisenforschung GmbH
|
||||
!> @brief setting precision for real and int type, using double precision for real
|
||||
!> @brief setting precision for real and int type depending on makros "FLOAT" and "INT"
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
#ifdef __INTEL_COMPILER
|
||||
#if __INTEL_COMPILER<1200
|
||||
#if __INTEL_COMPILER<1100
|
||||
#define LEGACY_COMPILER
|
||||
#endif
|
||||
#endif
|
||||
|
@ -34,24 +34,35 @@
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
module prec
|
||||
|
||||
|
||||
implicit none
|
||||
private
|
||||
|
||||
integer, parameter, public :: pReal = selected_real_kind(15,300) !< floating point number with 15 significant digits, up to 1e+-300 (double precision)
|
||||
integer, parameter, public :: pInt = selected_int_kind(9) !< integer representation with at least up to +- 1e9 (32 bit)
|
||||
integer, parameter, public :: pLongInt = selected_int_kind(12) !< integer representation with at least up to +- 1e12 (64 bit)
|
||||
#if (FLOAT==4)
|
||||
integer, parameter, public :: pReal = 4 !< floating point single precition (was selected_real_kind(6,37), number with 6 significant digits, up to 1e+-37)
|
||||
#ifdef LEGACY_COMPILER
|
||||
real(pReal), parameter, public :: DAMASK_NaN = Z'7F800001' !< quiet NaN for single precision (from http://www.hpc.unimelb.edu.au/doc/f90lrm/dfum_035.html, copy can be found in documentation/Code/Fortran)
|
||||
#else
|
||||
real(pReal), parameter, public :: DAMASK_NaN = real(Z'7F800001', pReal) !< quiet NaN for single precision (from http://www.hpc.unimelb.edu.au/doc/f90lrm/dfum_035.html, copy can be found in documentation/Code/Fortran)
|
||||
#endif
|
||||
#elif (FLOAT==8)
|
||||
integer, parameter, public :: pReal = 8 !< floating point double precision (was selected_real_kind(15,300), number with 15 significant digits, up to 1e+-300)
|
||||
#ifdef LEGACY_COMPILER
|
||||
real(pReal), parameter, public :: DAMASK_NaN = Z'7FF8000000000000' !< quiet NaN for double precision (from http://www.hpc.unimelb.edu.au/doc/f90lrm/dfum_035.html, copy can be found in documentation/Code/Fortran)
|
||||
#else
|
||||
real(pReal), parameter, public :: DAMASK_NaN = real(Z'7FF8000000000000', pReal) !< quiet NaN for double precision (from http://www.hpc.unimelb.edu.au/doc/f90lrm/dfum_035.html, copy can be found in documentation/Code/Fortran)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if (INT==4)
|
||||
integer, parameter, public :: pInt = 4 !< integer representation 32 bit (was selected_int_kind(9), number with at least up to +- 1e9)
|
||||
#elif (INT==8)
|
||||
integer, parameter, public :: pInt = 8 !< integer representation 64 bit (was selected_int_kind(12), number with at least up to +- 1e12)
|
||||
#endif
|
||||
|
||||
integer, parameter, public :: pLongInt = 8 !< integer representation 64 bit (was selected_int_kind(12), number with at least up to +- 1e12)
|
||||
real(pReal), parameter, public :: tol_math_check = 1.0e-8_pReal
|
||||
real(pReal), parameter, public :: tol_gravityNodePos = 1.0e-100_pReal
|
||||
|
||||
! NaN is precision dependent
|
||||
! from http://www.hpc.unimelb.edu.au/doc/f90lrm/dfum_035.html
|
||||
! copy can be found in documentation/Code/Fortran
|
||||
#ifdef LEGACY_COMPILER
|
||||
real(pReal), parameter, public :: DAMASK_NaN = Z'7FF8000000000000' !< when using old compiler without standard check
|
||||
#else
|
||||
real(pReal), parameter, public :: DAMASK_NaN = real(Z'7FF8000000000000', pReal) !< quiet NaN for double precision
|
||||
#endif
|
||||
|
||||
type, public :: p_vec
|
||||
real(pReal), dimension(:), pointer :: p
|
||||
|
@ -60,6 +71,7 @@ module prec
|
|||
public :: prec_init
|
||||
|
||||
contains
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief reporting precision and checking if DAMASK_NaN is set correctly
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
|
@ -82,8 +94,8 @@ subroutine prec_init
|
|||
write(6,'(a,i3)') ' Bytes for pLongInt: ',pLongInt
|
||||
write(6,'(a,e10.3)') ' NaN: ', DAMASK_NaN
|
||||
write(6,'(a,l3)') ' NaN /= NaN: ',DAMASK_NaN/=DAMASK_NaN
|
||||
if (DAMASK_NaN == DAMASK_NaN) call quit(9000)
|
||||
write(6,*)
|
||||
if (DAMASK_NaN == DAMASK_NaN) call quit(9000)
|
||||
!$OMP END CRITICAL (write2out)
|
||||
|
||||
end subroutine prec_init
|
||||
|
|
|
@ -1,82 +0,0 @@
|
|||
! Copyright 2011 Max-Planck-Institut für Eisenforschung GmbH
|
||||
!
|
||||
! This file is part of DAMASK,
|
||||
! the Düsseldorf Advanced MAterial Simulation Kit.
|
||||
!
|
||||
! DAMASK is free software: you can redistribute it and/or modify
|
||||
! it under the terms of the GNU General Public License as published by
|
||||
! the Free Software Foundation, either version 3 of the License, or
|
||||
! (at your option) any later version.
|
||||
!
|
||||
! DAMASK is distributed in the hope that it will be useful,
|
||||
! but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
! GNU General Public License for more details.
|
||||
!
|
||||
! You should have received a copy of the GNU General Public License
|
||||
! along with DAMASK. If not, see <http://www.gnu.org/licenses/>.
|
||||
!
|
||||
!##############################################################
|
||||
!* $Id$
|
||||
!##############################################################
|
||||
#ifdef __INTEL_COMPILER
|
||||
#if __INTEL_COMPILER<1200
|
||||
#define LEGACY_COMPILER
|
||||
#endif
|
||||
#endif
|
||||
|
||||
module prec
|
||||
!##############################################################
|
||||
|
||||
implicit none
|
||||
private
|
||||
! *** Precision of real and integer variables ***
|
||||
integer, parameter, public :: pReal = selected_real_kind(6,37) ! 6 significant digits, up to 1e+-37
|
||||
integer, parameter, public :: pInt = selected_int_kind(9) ! up to +- 1e9
|
||||
integer, parameter, public :: pLongInt = 4 ! should be 64bit
|
||||
real(pReal), parameter, public :: tol_math_check = 1.0e-5_pReal
|
||||
real(pReal), parameter, public :: tol_gravityNodePos = 1.0e-36_pReal
|
||||
|
||||
! NaN is precision dependent
|
||||
! from http://www.hpc.unimelb.edu.au/doc/f90lrm/dfum_035.html
|
||||
! copy can be found in documentation/Code/Fortran
|
||||
#ifdef LEGACY_COMPILER
|
||||
real(pReal), parameter, public :: DAMASK_NaN = Z'7F800001'
|
||||
#else
|
||||
real(pReal), parameter, public :: DAMASK_NaN = real(Z'7F800001', pReal)
|
||||
#endif
|
||||
|
||||
type, public :: p_vec
|
||||
real(pReal), dimension(:), pointer :: p
|
||||
end type p_vec
|
||||
|
||||
public :: prec_init
|
||||
|
||||
contains
|
||||
|
||||
subroutine prec_init
|
||||
use, intrinsic :: iso_fortran_env ! to get compiler_version and compiler_options (at least for gfortran 4.6 at the moment)
|
||||
|
||||
implicit none
|
||||
|
||||
!$OMP CRITICAL (write2out)
|
||||
#ifndef LEGACY_COMPILER
|
||||
open (6, encoding='UTF-8')
|
||||
#endif
|
||||
|
||||
write(6,*)
|
||||
write(6,*) '<<<+- prec_single init -+>>>'
|
||||
write(6,*) '$Id$'
|
||||
#include "compilation_info.f90"
|
||||
write(6,'(a,i3)') ' Bytes for pReal: ',pReal
|
||||
write(6,'(a,i3)') ' Bytes for pInt: ',pInt
|
||||
write(6,'(a,i3)') ' Bytes for pLongInt: ',pLongInt
|
||||
write(6,'(a,e10.3)') ' NaN: ', DAMASK_NaN
|
||||
write(6,'(a,l3)') ' NaN /= NaN: ',DAMASK_NaN/=DAMASK_NaN
|
||||
if (DAMASK_NaN == DAMASK_NaN) call quit(9000)
|
||||
write(6,*)
|
||||
!$OMP END CRITICAL (write2out)
|
||||
|
||||
end subroutine prec_init
|
||||
|
||||
end module prec
|
|
@ -21,11 +21,15 @@ fortCmd = "ifort"
|
|||
# "-fpp" use FORTRAN preprocessor on source code
|
||||
# "-openmp" build with openMP support
|
||||
|
||||
#compile_fortran = (fortCmd + " -c -fPIC -auto -w90 -w95 " +
|
||||
# "-WB -I%I -free -O3 -fpp -openmp")
|
||||
#compile_fortran = (fortCmd + " -c -fPIC -auto" +
|
||||
# "-WB -I%I -free -O3 -fpp -openmp " +
|
||||
# "-implicitnone -assume byterecl " +
|
||||
# "-real-size 64 -integer-size 32 -DFLOAT=8 -DINT=4")
|
||||
|
||||
compile_fortran = (fortCmd + " -c -fPIC -auto -mP2OPT_hpo_vec_divbyzero=F -w90 -w95 " +
|
||||
"-WB -I%I -free -O3 -fpp -openmp")
|
||||
compile_fortran = (fortCmd + " -c -fPIC -auto -mP2OPT_hpo_vec_divbyzero=F " +
|
||||
"-WB -I%I -free -O3 -fpp -openmp "+
|
||||
"-implicitnone -assume byterecl " +
|
||||
"-real-size 64 -integer-size 32 -DFLOAT=8 -DINT=4")
|
||||
|
||||
# Do not use parts in input file
|
||||
cae_no_parts_input_file=ON
|
||||
|
|
|
@ -49,11 +49,11 @@ if options.compiler not in compilers:
|
|||
parser.error('compiler switch "--F90" has to be one out of: %s'%(', '.join(compilers)))
|
||||
|
||||
f2py_compiler = {
|
||||
'gfortran': 'gnu95 --f90flags="-fno-range-check -xf95-cpp-input -std=f2008 -fall-intrinsics -DSpectral -I${DAMASK_ROOT}/lib"',
|
||||
'gnu95': 'gnu95 --f90flags="-fno-range-check -xf95-cpp-input -std=f2008 -fall-intrinsics -DSpectral -I${DAMASK_ROOT}/lib"',
|
||||
'intel32': 'intel --f90flags="-fpp -stand f03 -diag-disable 5268 -assume byterecl -DSpectral -I${DAMASK_ROOT}/lib"',
|
||||
'intel': 'intelem --f90flags="-fpp -stand f03 -diag-disable 5268 -assume byterecl -DSpectral -I${DAMASK_ROOT}/lib"',
|
||||
'ifort': 'intelem --f90flags="-fpp -stand f03 -diag-disable 5268 -assume byterecl -DSpectral -I${DAMASK_ROOT}/lib"',
|
||||
'gfortran': 'gnu95 --f90flags="-fno-range-check -xf95-cpp-input -std=f2008 -fall-intrinsics -DSpectral -fdefault-real-8 -fdefault-integer-4 -DFLOAT=8 -DINT=4 -I${DAMASK_ROOT}/lib"',
|
||||
'gnu95': 'gnu95 --f90flags="-fno-range-check -xf95-cpp-input -std=f2008 -fall-intrinsics -DSpectral -fdefault-real-8 -fdefault-integer-4 -DFLOAT=8 -DINT=4 -I${DAMASK_ROOT}/lib"',
|
||||
'intel32': 'intel --f90flags="-fpp -stand f03 -diag-disable 5268 -assume byterecl -DSpectral -real-size 64 -integer-size 32 -DFLOAT=8 -DINT=4 -I${DAMASK_ROOT}/lib"',
|
||||
'intel': 'intelem --f90flags="-fpp -stand f03 -diag-disable 5268 -assume byterecl -DSpectral -real-size 64 -integer-size 32 -DFLOAT=8 -DINT=4 -I${DAMASK_ROOT}/lib"',
|
||||
'ifort': 'intelem --f90flags="-fpp -stand f03 -diag-disable 5268 -assume byterecl -DSpectral -real-size 64 -integer-size 32 -DFLOAT=8 -DINT=4 -I${DAMASK_ROOT}/lib"',
|
||||
}[options.compiler]
|
||||
compiler = {
|
||||
'gfortran': 'gfortran',
|
||||
|
|
Loading…
Reference in New Issue