diff --git a/code/include/fftw3.f b/code/include/fftw3.f deleted file mode 100644 index 03bacdf56..000000000 --- a/code/include/fftw3.f +++ /dev/null @@ -1,72 +0,0 @@ - INTEGER FFTW_R2HC - PARAMETER (FFTW_R2HC=0) - INTEGER FFTW_HC2R - PARAMETER (FFTW_HC2R=1) - INTEGER FFTW_DHT - PARAMETER (FFTW_DHT=2) - INTEGER FFTW_REDFT00 - PARAMETER (FFTW_REDFT00=3) - INTEGER FFTW_REDFT01 - PARAMETER (FFTW_REDFT01=4) - INTEGER FFTW_REDFT10 - PARAMETER (FFTW_REDFT10=5) - INTEGER FFTW_REDFT11 - PARAMETER (FFTW_REDFT11=6) - INTEGER FFTW_RODFT00 - PARAMETER (FFTW_RODFT00=7) - INTEGER FFTW_RODFT01 - PARAMETER (FFTW_RODFT01=8) - INTEGER FFTW_RODFT10 - PARAMETER (FFTW_RODFT10=9) - INTEGER FFTW_RODFT11 - PARAMETER (FFTW_RODFT11=10) - INTEGER FFTW_FORWARD - PARAMETER (FFTW_FORWARD=-1) - INTEGER FFTW_BACKWARD - PARAMETER (FFTW_BACKWARD=+1) - INTEGER FFTW_MEASURE - PARAMETER (FFTW_MEASURE=0) - INTEGER FFTW_DESTROY_INPUT - PARAMETER (FFTW_DESTROY_INPUT=1) - INTEGER FFTW_UNALIGNED - PARAMETER (FFTW_UNALIGNED=2) - INTEGER FFTW_CONSERVE_MEMORY - PARAMETER (FFTW_CONSERVE_MEMORY=4) - INTEGER FFTW_EXHAUSTIVE - PARAMETER (FFTW_EXHAUSTIVE=8) - INTEGER FFTW_PRESERVE_INPUT - PARAMETER (FFTW_PRESERVE_INPUT=16) - INTEGER FFTW_PATIENT - PARAMETER (FFTW_PATIENT=32) - INTEGER FFTW_ESTIMATE - PARAMETER (FFTW_ESTIMATE=64) - INTEGER FFTW_ESTIMATE_PATIENT - PARAMETER (FFTW_ESTIMATE_PATIENT=128) - INTEGER FFTW_BELIEVE_PCOST - PARAMETER (FFTW_BELIEVE_PCOST=256) - INTEGER FFTW_NO_DFT_R2HC - PARAMETER (FFTW_NO_DFT_R2HC=512) - INTEGER FFTW_NO_NONTHREADED - PARAMETER (FFTW_NO_NONTHREADED=1024) - INTEGER FFTW_NO_BUFFERING - PARAMETER (FFTW_NO_BUFFERING=2048) - INTEGER FFTW_NO_INDIRECT_OP - PARAMETER (FFTW_NO_INDIRECT_OP=4096) - INTEGER FFTW_ALLOW_LARGE_GENERIC - PARAMETER (FFTW_ALLOW_LARGE_GENERIC=8192) - INTEGER FFTW_NO_RANK_SPLITS - PARAMETER (FFTW_NO_RANK_SPLITS=16384) - INTEGER FFTW_NO_VRANK_SPLITS - PARAMETER (FFTW_NO_VRANK_SPLITS=32768) - INTEGER FFTW_NO_VRECURSE - PARAMETER (FFTW_NO_VRECURSE=65536) - INTEGER FFTW_NO_SIMD - PARAMETER (FFTW_NO_SIMD=131072) - INTEGER FFTW_NO_SLOW - PARAMETER (FFTW_NO_SLOW=262144) - INTEGER FFTW_NO_FIXED_RADIX_LARGE_N - PARAMETER (FFTW_NO_FIXED_RADIX_LARGE_N=524288) - INTEGER FFTW_ALLOW_PRUNING - PARAMETER (FFTW_ALLOW_PRUNING=1048576) - INTEGER FFTW_WISDOM_ONLY - PARAMETER (FFTW_WISDOM_ONLY=2097152) diff --git a/code/numerics.f90 b/code/numerics.f90 index fc1b4a9c4..4b39b026f 100644 --- a/code/numerics.f90 +++ b/code/numerics.f90 @@ -67,7 +67,9 @@ real(pReal) relevantStrain, & ! strain !* spectral parameters: err_div_tol, & ! error of divergence in fourier space err_stress_tol, & ! absolut stress error, will be computed from err_stress_tolrel (dont prescribe a value) - err_stress_tolrel ! factor to multiply with highest stress to get err_stress_tol + err_stress_tolrel, & ! factor to multiply with highest stress to get err_stress_tol + fftw_timelimit ! sets the timelimit of plan creation for FFTW, see manual on www.fftw.org +character(len=64) fftw_planner_flag ! sets the planig-rigor flag, see manual on www.fftw.org logical memory_efficient ! for fast execution (pre calculation of gamma_hat) integer(pInt) itmax , & ! maximum number of iterations @@ -162,10 +164,13 @@ subroutine numerics_init() volDiscrPow_RGC = 5.0 !* spectral parameters: - err_div_tol = 1.0e-4 ! 1.0e-4 proposed by Suquet - err_stress_tolrel = 0.01 ! relative tolerance for fullfillment of stress BC - itmax = 20_pInt ! Maximum iteration number - memory_efficient = .true. ! Precalculate Gamma-operator (81 double per point) + err_div_tol = 1.0e-4 ! 1.0e-4 proposed by Suquet + err_stress_tolrel = 0.01 ! relative tolerance for fullfillment of stress BC (1% of maximum stress) + itmax = 20_pInt ! Maximum iteration number + memory_efficient = .true. ! Precalculate Gamma-operator (81 double per point) + fftw_timelimit = -1.0_pReal ! no timelimit of plan creation for FFTW + fftw_planner_flag ='patient' + !* Random seeding parameters: added <<>> fixedSeed = 0_pInt @@ -278,6 +283,10 @@ subroutine numerics_init() itmax = IO_intValue(line,positions,2) case ('memory_efficient') memory_efficient = IO_intValue(line,positions,2) > 0_pInt + case ('fftw_timelimit') + fftw_timelimit = IO_floatValue(line,positions,2) + case ('fftw_planner_flag') + fftw_planner_flag = IO_stringValue(line,positions,2) !* Random seeding parameters case ('fixed_seed') @@ -340,10 +349,16 @@ subroutine numerics_init() write(6,*) !* spectral parameters - write(6,'(a24,x,e8.1)') 'err_div_tol: ',err_div_tol - write(6,'(a24,x,e8.1)') 'err_stress_tolrel: ',err_stress_tolrel - write(6,'(a24,x,i8)') 'itmax: ',itmax - write(6,'(a24,x,L8)') 'memory_efficient: ',memory_efficient + write(6,'(a24,x,e8.1)') 'err_div_tol: ',err_div_tol + write(6,'(a24,x,e8.1)') 'err_stress_tolrel: ',err_stress_tolrel + write(6,'(a24,x,i8)') 'itmax: ',itmax + write(6,'(a24,x,L8)') 'memory_efficient: ',memory_efficient + if(fftw_timelimit<0) then + write(6,'(a24,x,L8)') 'fftw_timelimit: ',.false. + else + write(6,'(a24,x,e8.1)') 'fftw_timelimit: ',fftw_timelimit + endif + write(6,'(a24,x,a)') 'fftw_planner_flag: ',trim(fftw_planner_flag) write(6,*) !* Random seeding parameters