diff --git a/CMakeLists.txt b/CMakeLists.txt index 495e55f85..d23245f52 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -105,9 +105,9 @@ set (CMAKE_C_COMPILER "${PETSC_MPICC}") # Now start to care about DAMASK # DAMASK solver defines project to build -if (DAMASK_SOLVER STREQUAL "SPECTRAL") +if (DAMASK_SOLVER STREQUAL "GRID") project (DAMASK_spectral Fortran C) - add_definitions (-DSpectral) + add_definitions (-DGrid) message ("Building Spectral Solver\n") elseif (DAMASK_SOLVER STREQUAL "FEM") project (DAMASK_FEM Fortran C) diff --git a/Makefile b/Makefile index cd2690cc7..aa28228ae 100644 --- a/Makefile +++ b/Makefile @@ -6,17 +6,17 @@ SHELL = /bin/sh all: spectral FEM processing .PHONY: spectral -spectral: build/spectral - @(cd build/spectral;make -j4 --no-print-directory -ws all install;) +spectral: build/grid + @(cd build/grid;make -j4 --no-print-directory -ws all install;) .PHONY: FEM FEM: build/FEM @(cd build/FEM; make -j4 --no-print-directory -ws all install;) -.PHONY: build/spectral -build/spectral: - @mkdir -p build/spectral - @(cd build/spectral; cmake -Wno-dev -DDAMASK_SOLVER=SPECTRAL -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DBUILDCMD_POST=${BUILDCMD_POST} -DBUILDCMD_PRE=${BUILDCMD_PRE} -DOPTIMIZATION=${OPTIMIZATION} -DOPENMP=${OPENMP} ../../;) +.PHONY: build/grid +build/grid: + @mkdir -p build/grid + @(cd build/grid; cmake -Wno-dev -DDAMASK_SOLVER=GRID -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DBUILDCMD_POST=${BUILDCMD_POST} -DBUILDCMD_PRE=${BUILDCMD_PRE} -DOPTIMIZATION=${OPTIMIZATION} -DOPENMP=${OPENMP} ../../;) .PHONY: build/FEM build/FEM: diff --git a/src/FEsolving.f90 b/src/FEsolving.f90 index d63617135..8780d2712 100644 --- a/src/FEsolving.f90 +++ b/src/FEsolving.f90 @@ -72,7 +72,7 @@ subroutine FE_init modelName = getSolverJobName() -#if defined(Spectral) || defined(FEM) +#if defined(Grid) || defined(FEM) restartInc = interface_RestartInc if(restartInc < 0_pInt) then diff --git a/src/numerics.f90 b/src/numerics.f90 index 15d1def91..b081cafcf 100644 --- a/src/numerics.f90 +++ b/src/numerics.f90 @@ -77,7 +77,7 @@ module numerics !-------------------------------------------------------------------------------------------------- ! spectral parameters: -#ifdef Spectral +#ifdef Grid real(pReal), protected, public :: & err_div_tolAbs = 1.0e-4_pReal, & !< absolute tolerance for equilibrium err_div_tolRel = 5.0e-4_pReal, & !< relative tolerance for equilibrium @@ -318,7 +318,7 @@ subroutine numerics_init !-------------------------------------------------------------------------------------------------- ! spectral parameters -#ifdef Spectral +#ifdef Grid case ('err_div_tolabs') err_div_tolAbs = IO_floatValue(line,chunkPos,2_pInt) case ('err_div_tolrel') @@ -376,8 +376,6 @@ subroutine numerics_init 'bbarstabilisation') call IO_warning(40_pInt,ext_msg=tag) #endif - case default ! found unknown keyword - call IO_error(300_pInt,ext_msg=tag) end select enddo @@ -386,7 +384,7 @@ subroutine numerics_init flush(6) endif fileExists -#ifdef Spectral +#ifdef Grid select case(IO_lc(fftw_plan_mode)) ! setting parameters for the plan creation of FFTW. Basically a translation from fftw3.f case('estimate','fftw_estimate') ! ordered from slow execution (but fast plan creation) to fast execution fftw_planner_flag = 64_pInt @@ -475,7 +473,7 @@ subroutine numerics_init !-------------------------------------------------------------------------------------------------- ! spectral parameters -#ifdef Spectral +#ifdef Grid write(6,'(a24,1x,L8)') ' continueCalculation: ',continueCalculation write(6,'(a24,1x,L8)') ' memory_efficient: ',memory_efficient write(6,'(a24,1x,i8)') ' divergence_correction: ',divergence_correction @@ -560,7 +558,7 @@ subroutine numerics_init if (err_thermal_tolrel <= 0.0_pReal) call IO_error(301_pInt,ext_msg='err_thermal_tolrel') if (err_damage_tolabs <= 0.0_pReal) call IO_error(301_pInt,ext_msg='err_damage_tolabs') if (err_damage_tolrel <= 0.0_pReal) call IO_error(301_pInt,ext_msg='err_damage_tolrel') -#ifdef Spectral +#ifdef Grid if (divergence_correction < 0_pInt .or. & divergence_correction > 2_pInt) call IO_error(301_pInt,ext_msg='divergence_correction') if (update_gamma .and. & diff --git a/src/plastic_nonlocal.f90 b/src/plastic_nonlocal.f90 index d0bcb9812..f0b28d711 100644 --- a/src/plastic_nonlocal.f90 +++ b/src/plastic_nonlocal.f90 @@ -282,13 +282,13 @@ subroutine plastic_nonlocal_init character(len=65536), dimension(:), allocatable :: outputs integer :: NofMyPhase - write(6,'(/,a)') ' <<<+- constitutive_'//PLASTICITY_NONLOCAL_label//' init -+>>>' + write(6,'(/,a)') ' <<<+- constitutive_'//PLASTICITY_NONLOCAL_label//' init -+>>>' - write(6,'(/,a)') ' Reuber et al., Acta Materialia 71:333–348, 2014' - write(6,'(a)') ' https://doi.org/10.1016/j.actamat.2014.03.012' + write(6,'(/,a)') ' Reuber et al., Acta Materialia 71:333–348, 2014' + write(6,'(a)') ' https://doi.org/10.1016/j.actamat.2014.03.012' - write(6,'(/,a)') ' Kords, Dissertation RWTH Aachen, 2014' - write(6,'(a)') ' http://publications.rwth-aachen.de/record/229993' + write(6,'(/,a)') ' Kords, Dissertation RWTH Aachen, 2014' + write(6,'(a)') ' http://publications.rwth-aachen.de/record/229993' maxNinstances = count(phase_plasticity == PLASTICITY_NONLOCAL_ID) if (iand(debug_level(debug_constitutive),debug_levelBasic) /= 0) & diff --git a/src/spectral_utilities.f90 b/src/spectral_utilities.f90 index ea145bcca..3478aff76 100644 --- a/src/spectral_utilities.f90 +++ b/src/spectral_utilities.f90 @@ -101,6 +101,17 @@ module spectral_utilities real(pReal) :: timeinc real(pReal) :: timeincOld end type tSolutionParams + + type, private :: tNumerics + real(pReal) :: & + spectral_derivative, & + fftw_planner_flag, & + fftw_timelimit, & + memory_efficient, & + petsc_defaultOptions, & + petsc_options, & + divergence_correction + end type tNumerics enum, bind(c) enumerator :: DERIVATIVE_CONTINUOUS_ID, & @@ -190,10 +201,13 @@ subroutine utilities_init() integer(C_INTPTR_T) :: alloc_local, local_K, local_K_offset integer(C_INTPTR_T), parameter :: & scalarSize = 1_C_INTPTR_T, & - vecSize = 3_C_INTPTR_T, & + vecSize = 3_C_INTPTR_T, & tensorSize = 9_C_INTPTR_T write(6,'(/,a)') ' <<<+- spectral_utilities init -+>>>' + + write(6,'(/,a)') ' Diehl, Diploma Thesis TU München, 2010' + write(6,'(a)') ' https://doi.org/10.13140/2.1.3234.3840' write(6,'(/,a)') ' Eisenlohr et al., International Journal of Plasticity 46:37–53, 2013' write(6,'(a)') ' https://doi.org/10.1016/j.ijplas.2012.09.012'