diff --git a/src/DAMASK_interface.f90 b/src/DAMASK_interface.f90 index 46ecd4da0..4c3258556 100644 --- a/src/DAMASK_interface.f90 +++ b/src/DAMASK_interface.f90 @@ -101,8 +101,8 @@ subroutine DAMASK_interface_init #endif print*, achar(27)//'[0m' - print'(a)', ' Roters et al., Computational Materials Science 158:420–478, 2019' - print'(a)', ' https://doi.org/10.1016/j.commatsci.2018.04.030' + print*, 'Roters et al., Computational Materials Science 158:420–478, 2019' + print*, 'https://doi.org/10.1016/j.commatsci.2018.04.030' print'(/,a)', ' Version: '//DAMASKVERSION diff --git a/src/constitutive_plastic_nonlocal.f90 b/src/constitutive_plastic_nonlocal.f90 index c96301691..9eef17719 100644 --- a/src/constitutive_plastic_nonlocal.f90 +++ b/src/constitutive_plastic_nonlocal.f90 @@ -199,7 +199,7 @@ module function plastic_nonlocal_init() result(myPlasticity) print*, 'https://doi.org/10.1016/j.actamat.2014.03.012'//IO_EOL print*, 'Kords, Dissertation RWTH Aachen, 2014' - print*, 'http://publications.rwth-aachen.de/record/229993'//IO_EOL + print*, 'http://publications.rwth-aachen.de/record/229993' allocate(param(Ninstance)) allocate(state(Ninstance)) diff --git a/src/grid/DAMASK_grid.f90 b/src/grid/DAMASK_grid.f90 index a5001de44..341210afc 100644 --- a/src/grid/DAMASK_grid.f90 +++ b/src/grid/DAMASK_grid.f90 @@ -99,10 +99,10 @@ program DAMASK_grid ! init DAMASK (all modules) call CPFEM_initAll - write(6,'(/,a)') ' <<<+- DAMASK_spectral init -+>>>'; flush(6) + print'(/,a)', ' <<<+- DAMASK_spectral init -+>>>'; flush(6) - write(6,'(/,a)') ' Shanthraj et al., Handbook of Mechanics of Materials, 2019' - write(6,'(a)') ' https://doi.org/10.1007/978-981-10-6855-3_80' + print*, 'Shanthraj et al., Handbook of Mechanics of Materials, 2019' + print*, 'https://doi.org/10.1007/978-981-10-6855-3_80' !-------------------------------------------------------------------------------------------------- ! initialize field solver information @@ -263,19 +263,19 @@ program DAMASK_grid reportAndCheck: if (worldrank == 0) then write (loadcase_string, '(i0)' ) currentLoadCase - write(6,'(/,1x,a,i0)') 'load case: ', currentLoadCase + print'(/,a,i0)', ' load case: ', currentLoadCase if (.not. newLoadCase%followFormerTrajectory) & - write(6,'(2x,a)') 'drop guessing along trajectory' + print*, ' drop guessing along trajectory' if (newLoadCase%deformation%myType == 'l') then do j = 1, 3 if (any(newLoadCase%deformation%maskLogical(j,1:3) .eqv. .true.) .and. & any(newLoadCase%deformation%maskLogical(j,1:3) .eqv. .false.)) errorID = 832 ! each row should be either fully or not at all defined enddo - write(6,'(2x,a)') 'velocity gradient:' + print*, ' velocity gradient:' else if (newLoadCase%deformation%myType == 'f') then - write(6,'(2x,a)') 'deformation gradient at end of load case:' + print*, ' deformation gradient at end of load case:' else - write(6,'(2x,a)') 'deformation gradient rate:' + print*, ' deformation gradient rate:' endif do i = 1, 3; do j = 1, 3 if(newLoadCase%deformation%maskLogical(i,j)) then @@ -289,7 +289,7 @@ program DAMASK_grid newLoadCase%deformation%maskLogical)) errorID = 831 ! exclusive or masking only if (any(newLoadCase%stress%maskLogical .and. transpose(newLoadCase%stress%maskLogical) & .and. (math_I3<1))) errorID = 838 ! no rotation is allowed by stress BC - write(6,'(2x,a)') 'stress / GPa:' + print*, ' stress / GPa:' do i = 1, 3; do j = 1, 3 if(newLoadCase%stress%maskLogical(i,j)) then write(6,'(2x,f12.7)',advance='no') newLoadCase%stress%values(i,j)*1e-9_pReal @@ -305,14 +305,14 @@ program DAMASK_grid write(6,'(2x,a,/,3(3(3x,f12.7,1x)/))',advance='no') 'rotation of loadframe:',& transpose(newLoadCase%rot%asMatrix()) if (newLoadCase%time < 0.0_pReal) errorID = 834 ! negative time increment - write(6,'(2x,a,f0.3)') 'time: ', newLoadCase%time + print'(a,f0.3)', ' time: ', newLoadCase%time if (newLoadCase%incs < 1) errorID = 835 ! non-positive incs count - write(6,'(2x,a,i0)') 'increments: ', newLoadCase%incs + print'(a,i0)', ' increments: ', newLoadCase%incs if (newLoadCase%outputfrequency < 1) errorID = 836 ! non-positive result frequency - write(6,'(2x,a,i0)') 'output frequency: ', newLoadCase%outputfrequency + print'(a,i0)', ' output frequency: ', newLoadCase%outputfrequency if (newLoadCase%restartfrequency < 1) errorID = 839 ! non-positive restart frequency if (newLoadCase%restartfrequency < huge(0)) & - write(6,'(2x,a,i0)') 'restart frequency: ', newLoadCase%restartfrequency + print'(a,i0)', ' restart frequency: ', newLoadCase%restartfrequency if (errorID > 0) call IO_error(error_ID = errorID, ext_msg = loadcase_string) ! exit with error message endif reportAndCheck loadCases = [loadCases,newLoadCase] ! load case is ok, append it @@ -397,8 +397,8 @@ program DAMASK_grid !-------------------------------------------------------------------------------------------------- ! report begin of new step - write(6,'(/,a)') ' ###########################################################################' - write(6,'(1x,a,es12.5,6(a,i0))') & + print'(/,a)', ' ###########################################################################' + print'(1x,a,es12.5,6(a,i0))', & 'Time', time, & 's: Increment ', inc,'/',loadCases(currentLoadCase)%incs,& '-', stepFraction,'/',subStepFactor**cutBackLevel,& @@ -475,7 +475,7 @@ program DAMASK_grid cutBackLevel = cutBackLevel + 1 time = time - timeinc ! rewind time timeinc = timeinc/real(subStepFactor,pReal) ! cut timestep - write(6,'(/,a)') ' cutting back ' + print'(/,a)', ' cutting back ' else ! no more options to continue call IO_warning(850) if (worldrank == 0) close(statUnit) @@ -487,13 +487,13 @@ program DAMASK_grid cutBackLevel = max(0, cutBackLevel - 1) ! try half number of subincs next inc if (all(solres(:)%converged)) then - write(6,'(/,a,i0,a)') ' increment ', totalIncsCounter, ' converged' + print'(/,a,i0,a)', ' increment ', totalIncsCounter, ' converged' else - write(6,'(/,a,i0,a)') ' increment ', totalIncsCounter, ' NOT converged' + print'(/,a,i0,a)', ' increment ', totalIncsCounter, ' NOT converged' endif; flush(6) if (mod(inc,loadCases(currentLoadCase)%outputFrequency) == 0) then ! at output frequency - write(6,'(1/,a)') ' ... writing results to file ......................................' + print'(1/,a)', ' ... writing results to file ......................................' flush(6) call CPFEM_results(totalIncsCounter,time) endif @@ -510,7 +510,7 @@ program DAMASK_grid !-------------------------------------------------------------------------------------------------- ! report summary of whole calculation - write(6,'(/,a)') ' ###########################################################################' + print'(/,a)', ' ###########################################################################' if (worldrank == 0) close(statUnit) call quit(0) ! no complains ;) diff --git a/src/grid/discretization_grid.f90 b/src/grid/discretization_grid.f90 index 276dd566f..576aaea60 100644 --- a/src/grid/discretization_grid.f90 +++ b/src/grid/discretization_grid.f90 @@ -65,7 +65,7 @@ subroutine discretization_grid_init(restart) integer(C_INTPTR_T) :: & devNull, z, z_offset - write(6,'(/,a)') ' <<<+- discretization_grid init -+>>>'; flush(6) + print'(/,a)', ' <<<+- discretization_grid init -+>>>'; flush(6) if(index(interface_geomFile,'.vtr') /= 0) then call readVTR(grid,geomSize,origin,microstructureAt) diff --git a/src/grid/grid_damage_spectral.f90 b/src/grid/grid_damage_spectral.f90 index f0d65a4a6..2a0754c66 100644 --- a/src/grid/grid_damage_spectral.f90 +++ b/src/grid/grid_damage_spectral.f90 @@ -22,42 +22,38 @@ module grid_damage_spectral implicit none private - type, private :: tNumerics + type :: tNumerics integer :: & - itmax !< max number of iterations + itmax !< maximum number of iterations real(pReal) :: & residualStiffness, & !< non-zero residual damage eps_damage_atol, & !< absolute tolerance for damage evolution eps_damage_rtol !< relative tolerance for damage evolution end type tNumerics - type(tNumerics), private :: num -!-------------------------------------------------------------------------------------------------- -! derived types - type(tSolutionParams), private :: params + type(tNumerics) :: num + type(tSolutionParams) :: params !-------------------------------------------------------------------------------------------------- ! PETSc data - SNES, private :: damage_snes - Vec, private :: solution_vec - PetscInt, private :: xstart, xend, ystart, yend, zstart, zend - real(pReal), private, dimension(:,:,:), allocatable :: & + SNES :: damage_snes + Vec :: solution_vec + PetscInt :: xstart, xend, ystart, yend, zstart, zend + real(pReal), dimension(:,:,:), allocatable :: & phi_current, & !< field of current damage phi_lastInc, & !< field of previous damage phi_stagInc !< field of staggered damage !-------------------------------------------------------------------------------------------------- ! reference diffusion tensor, mobility etc. - integer, private :: totalIter = 0 !< total iteration in current increment - real(pReal), dimension(3,3), private :: K_ref - real(pReal), private :: mu_ref + integer :: totalIter = 0 !< total iteration in current increment + real(pReal), dimension(3,3) :: K_ref + real(pReal) :: mu_ref public :: & grid_damage_spectral_init, & grid_damage_spectral_solution, & grid_damage_spectral_forward - private :: & - formResidual contains @@ -77,10 +73,10 @@ subroutine grid_damage_spectral_init character(len=pStringLen) :: & snes_type - write(6,'(/,a)') ' <<<+- grid_spectral_damage init -+>>>' + print'(/,a)', ' <<<+- grid_spectral_damage init -+>>>' - write(6,'(/,a)') ' Shanthraj et al., Handbook of Mechanics of Materials, 2019' - write(6,'(a)') ' https://doi.org/10.1007/978-981-10-6855-3_80' + print*, 'Shanthraj et al., Handbook of Mechanics of Materials, 2019' + print*, 'https://doi.org/10.1007/978-981-10-6855-3_80' !------------------------------------------------------------------------------------------------- ! read numerical parameters and do sanity checks @@ -152,8 +148,6 @@ subroutine grid_damage_spectral_init allocate(phi_stagInc(grid(1),grid(2),grid3), source=1.0_pReal) call VecSet(solution_vec,1.0_pReal,ierr); CHKERRQ(ierr) -!-------------------------------------------------------------------------------------------------- -! damage reference diffusion update call updateReference end subroutine grid_damage_spectral_init @@ -210,10 +204,10 @@ function grid_damage_spectral_solution(timeinc,timeinc_old) result(solution) call VecMin(solution_vec,devNull,phi_min,ierr); CHKERRQ(ierr) call VecMax(solution_vec,devNull,phi_max,ierr); CHKERRQ(ierr) if (solution%converged) & - write(6,'(/,a)') ' ... nonlocal damage converged .....................................' + print'(/,a)', ' ... nonlocal damage converged .....................................' write(6,'(/,a,f8.6,2x,f8.6,2x,e11.4,/)',advance='no') ' Minimum|Maximum|Delta Damage = ',& phi_min, phi_max, stagNorm - write(6,'(/,a)') ' ===========================================================================' + print'(/,a)', ' ===========================================================================' flush(6) end function grid_damage_spectral_solution diff --git a/src/grid/grid_mech_FEM.f90 b/src/grid/grid_mech_FEM.f90 index 748692b3c..3923e1898 100644 --- a/src/grid/grid_mech_FEM.f90 +++ b/src/grid/grid_mech_FEM.f90 @@ -122,7 +122,7 @@ subroutine grid_mech_FEM_init PetscScalar, pointer, dimension(:,:,:,:) :: & u_current,u_lastInc - write(6,'(/,a)') ' <<<+- grid_mech_FEM init -+>>>'; flush(6) + print'(/,a)', ' <<<+- grid_mech_FEM init -+>>>'; flush(6) !----------------------------------------------------------------------------------------------- ! debugging options @@ -130,13 +130,12 @@ subroutine grid_mech_FEM_init debugRotation = debug_grid%contains('rotation') !------------------------------------------------------------------------------------------------- -! read numerical parameter and do sanity checks +! read numerical parameters and do sanity checks num_grid => config_numerics%get('grid',defaultVal=emptyDict) num%eps_div_atol = num_grid%get_asFloat ('eps_div_atol', defaultVal=1.0e-4_pReal) num%eps_div_rtol = num_grid%get_asFloat ('eps_div_rtol', defaultVal=5.0e-4_pReal) num%eps_stress_atol = num_grid%get_asFloat ('eps_stress_atol', defaultVal=1.0e3_pReal) num%eps_stress_rtol = num_grid%get_asFloat ('eps_stress_rtol', defaultVal=0.01_pReal) - num%itmin = num_grid%get_asInt ('itmin',defaultVal=1) num%itmax = num_grid%get_asInt ('itmax',defaultVal=250) @@ -225,7 +224,7 @@ subroutine grid_mech_FEM_init !-------------------------------------------------------------------------------------------------- ! init fields restartRead: if (interface_restartInc > 0) then - write(6,'(/,a,i0,a)') ' reading restart data of increment ', interface_restartInc, ' from file' + print'(/,a,i0,a)', ' reading restart data of increment ', interface_restartInc, ' from file' write(fileName,'(a,a,i0,a)') trim(getSolverJobName()),'_',worldrank,'.hdf5' fileHandle = HDF5_openFile(fileName) @@ -254,7 +253,7 @@ subroutine grid_mech_FEM_init CHKERRQ(ierr) restartRead2: if (interface_restartInc > 0) then - write(6,'(/,a,i0,a)') ' reading more restart data of increment ', interface_restartInc, ' from file' + print'(a,i0,a)', ' reading more restart data of increment ', interface_restartInc, ' from file' call HDF5_read(groupHandle,C_volAvg, 'C_volAvg') call HDF5_read(groupHandle,C_volAvgLastInc,'C_volAvgLastInc') @@ -304,11 +303,11 @@ function grid_mech_FEM_solution(incInfoIn,timeinc,timeinc_old,stress_BC,rotation !-------------------------------------------------------------------------------------------------- ! solve BVP - call SNESsolve(mech_snes,PETSC_NULL_VEC,solution_current,ierr);CHKERRQ(ierr) + call SNESsolve(mech_snes,PETSC_NULL_VEC,solution_current,ierr); CHKERRQ(ierr) !-------------------------------------------------------------------------------------------------- ! check convergence - call SNESGetConvergedReason(mech_snes,reason,ierr);CHKERRQ(ierr) + call SNESGetConvergedReason(mech_snes,reason,ierr); CHKERRQ(ierr) solution%converged = reason > 0 solution%iterationsNeeded = totalIter @@ -353,7 +352,7 @@ subroutine grid_mech_FEM_forward(cutBack,guess,timeinc,timeinc_old,loadCaseTime, F_aimDot = merge(stress_BC%maskFloat*(F_aim-F_aim_lastInc)/timeinc_old, 0.0_pReal, guess) F_aim_lastInc = F_aim - !-------------------------------------------------------------------------------------------------- + !----------------------------------------------------------------------------------------------- ! calculate rate for aim if (deformation_BC%myType=='l') then ! calculate F_aimDot from given L and current F F_aimDot = & @@ -414,7 +413,7 @@ subroutine grid_mech_FEM_restartWrite call DMDAVecGetArrayF90(mech_grid,solution_current,u_current,ierr); CHKERRQ(ierr) call DMDAVecGetArrayF90(mech_grid,solution_lastInc,u_lastInc,ierr); CHKERRQ(ierr) - write(6,'(a)') ' writing solver data required for restart to file'; flush(6) + print*, 'writing solver data required for restart to file'; flush(6) write(fileName,'(a,a,i0,a)') trim(getSolverJobName()),'_',worldrank,'.hdf5' fileHandle = HDF5_openFile(fileName,'w') @@ -476,12 +475,12 @@ subroutine converged(snes_local,PETScIter,devNull1,devNull2,fnorm,reason,dummy,i !-------------------------------------------------------------------------------------------------- ! report - write(6,'(1/,a)') ' ... reporting .............................................................' - write(6,'(1/,a,f12.2,a,es8.2,a,es9.2,a)') ' error divergence = ', & + print'(1/,a)', ' ... reporting .............................................................' + print'(1/,a,f12.2,a,es8.2,a,es9.2,a)', ' error divergence = ', & err_div/divTol, ' (',err_div,' / m, tol = ',divTol,')' - write(6,'(a,f12.2,a,es8.2,a,es9.2,a)') ' error stress BC = ', & + print'(a,f12.2,a,es8.2,a,es9.2,a)', ' error stress BC = ', & err_BC/BCTol, ' (',err_BC, ' Pa, tol = ',BCTol,')' - write(6,'(/,a)') ' ===========================================================================' + print'(/,a)', ' ===========================================================================' flush(6) end subroutine converged @@ -516,7 +515,7 @@ subroutine formResidual(da_local,x_local, & ! begin of new iteration newIteration: if (totalIter <= PETScIter) then totalIter = totalIter + 1 - write(6,'(1x,a,3(a,i0))') trim(incInfo), ' @ Iteration ', num%itmin, '≤',totalIter+1, '≤', num%itmax + print'(1x,a,3(a,i0))', trim(incInfo), ' @ Iteration ', num%itmin, '≤',totalIter+1, '≤', num%itmax if (debugRotation) & write(6,'(/,a,/,3(3(f12.7,1x)/))',advance='no') & ' deformation gradient aim (lab) =', transpose(params%rotation_BC%rotate(F_aim,active=.true.)) @@ -541,7 +540,7 @@ subroutine formResidual(da_local,x_local, & !-------------------------------------------------------------------------------------------------- ! evaluate constitutive response - call Utilities_constitutiveResponse(P_current,& + call utilities_constitutiveResponse(P_current,& P_av,C_volAvg,devNull, & F,params%timeinc,params%rotation_BC) call MPI_Allreduce(MPI_IN_PLACE,terminallyIll,1,MPI_LOGICAL,MPI_LOR,PETSC_COMM_WORLD,ierr) diff --git a/src/grid/grid_mech_spectral_basic.f90 b/src/grid/grid_mech_spectral_basic.f90 index 9d301b30f..14d317c73 100644 --- a/src/grid/grid_mech_spectral_basic.f90 +++ b/src/grid/grid_mech_spectral_basic.f90 @@ -42,8 +42,7 @@ module grid_mech_spectral_basic type(tNumerics) :: num ! numerics parameters. Better name? - logical, private:: & - debugRotation + logical, private :: debugRotation !-------------------------------------------------------------------------------------------------- ! PETSc data @@ -110,13 +109,13 @@ subroutine grid_mech_spectral_basic_init character(len=pStringLen) :: & fileName - write(6,'(/,a)') ' <<<+- grid_mech_spectral_basic init -+>>>'; flush(6) + print'(/,a)', ' <<<+- grid_mech_spectral_basic init -+>>>'; flush(6) - 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' + print*, 'Eisenlohr et al., International Journal of Plasticity 46:37–53, 2013' + print*, 'https://doi.org/10.1016/j.ijplas.2012.09.012'//IO_EOL - write(6,'(/,a)') ' Shanthraj et al., International Journal of Plasticity 66:31–45, 2015' - write(6,'(a)') ' https://doi.org/10.1016/j.ijplas.2014.02.006' + print*, 'Shanthraj et al., International Journal of Plasticity 66:31–45, 2015' + print*, 'https://doi.org/10.1016/j.ijplas.2014.02.006' !------------------------------------------------------------------------------------------------- ! debugging options @@ -132,7 +131,6 @@ subroutine grid_mech_spectral_basic_init num%eps_div_rtol = num_grid%get_asFloat ('eps_div_rtol', defaultVal=5.0e-4_pReal) num%eps_stress_atol = num_grid%get_asFloat ('eps_stress_atol',defaultVal=1.0e3_pReal) num%eps_stress_rtol = num_grid%get_asFloat ('eps_stress_rtol',defaultVal=0.01_pReal) - num%itmin = num_grid%get_asInt ('itmin',defaultVal=1) num%itmax = num_grid%get_asInt ('itmax',defaultVal=250) @@ -186,7 +184,7 @@ subroutine grid_mech_spectral_basic_init call DMDAVecGetArrayF90(da,solution_vec,F,ierr); CHKERRQ(ierr) ! places pointer on PETSc data restartRead: if (interface_restartInc > 0) then - write(6,'(/,a,i0,a)') ' reading restart data of increment ', interface_restartInc, ' from file' + print'(/,a,i0,a)', ' reading restart data of increment ', interface_restartInc, ' from file' write(fileName,'(a,a,i0,a)') trim(getSolverJobName()),'_',worldrank,'.hdf5' fileHandle = HDF5_openFile(fileName) @@ -211,7 +209,7 @@ subroutine grid_mech_spectral_basic_init call DMDAVecRestoreArrayF90(da,solution_vec,F,ierr); CHKERRQ(ierr) ! deassociate pointer restartRead2: if (interface_restartInc > 0) then - write(6,'(/,a,i0,a)') ' reading more restart data of increment ', interface_restartInc, ' from file' + print'(a,i0,a)', ' reading more restart data of increment ', interface_restartInc, ' from file' call HDF5_read(groupHandle,C_volAvg, 'C_volAvg') call HDF5_read(groupHandle,C_volAvgLastInc,'C_volAvgLastInc') @@ -377,7 +375,7 @@ subroutine grid_mech_spectral_basic_restartWrite call DMDAVecGetArrayF90(da,solution_vec,F,ierr); CHKERRQ(ierr) - write(6,'(a)') ' writing solver data required for restart to file'; flush(6) + print'(a)', ' writing solver data required for restart to file'; flush(6) write(fileName,'(a,a,i0,a)') trim(getSolverJobName()),'_',worldrank,'.hdf5' fileHandle = HDF5_openFile(fileName,'w') @@ -437,12 +435,12 @@ subroutine converged(snes_local,PETScIter,devNull1,devNull2,devNull3,reason,dumm !-------------------------------------------------------------------------------------------------- ! report - write(6,'(1/,a)') ' ... reporting .............................................................' - write(6,'(1/,a,f12.2,a,es8.2,a,es9.2,a)') ' error divergence = ', & + print'(1/,a)', ' ... reporting .............................................................' + print'(1/,a,f12.2,a,es8.2,a,es9.2,a)', ' error divergence = ', & err_div/divTol, ' (',err_div,' / m, tol = ',divTol,')' - write(6,'(a,f12.2,a,es8.2,a,es9.2,a)') ' error stress BC = ', & + print'(a,f12.2,a,es8.2,a,es9.2,a)', ' error stress BC = ', & err_BC/BCTol, ' (',err_BC, ' Pa, tol = ',BCTol,')' - write(6,'(/,a)') ' ===========================================================================' + print'(/,a)', ' ===========================================================================' flush(6) end subroutine converged @@ -475,7 +473,7 @@ subroutine formResidual(in, F, & ! begin of new iteration newIteration: if (totalIter <= PETScIter) then totalIter = totalIter + 1 - write(6,'(1x,a,3(a,i0))') trim(incInfo), ' @ Iteration ', num%itmin, '≤',totalIter, '≤', num%itmax + print'(1x,a,3(a,i0))', trim(incInfo), ' @ Iteration ', num%itmin, '≤',totalIter, '≤', num%itmax if (debugRotation) & write(6,'(/,a,/,3(3(f12.7,1x)/))',advance='no') & ' deformation gradient aim (lab) =', transpose(params%rotation_BC%rotate(F_aim,active=.true.)) diff --git a/src/grid/grid_mech_spectral_polarisation.f90 b/src/grid/grid_mech_spectral_polarisation.f90 index 5414d02a8..f83ebed75 100644 --- a/src/grid/grid_mech_spectral_polarisation.f90 +++ b/src/grid/grid_mech_spectral_polarisation.f90 @@ -123,10 +123,10 @@ subroutine grid_mech_spectral_polarisation_init character(len=pStringLen) :: & fileName - write(6,'(/,a)') ' <<<+- grid_mech_spectral_polarisation init -+>>>'; flush(6) + print'(/,a)', ' <<<+- grid_mech_spectral_polarisation init -+>>>'; flush(6) - write(6,'(/,a)') ' Shanthraj et al., International Journal of Plasticity 66:31–45, 2015' - write(6,'(a)') ' https://doi.org/10.1016/j.ijplas.2014.02.006' + print*, 'Shanthraj et al., International Journal of Plasticity 66:31–45, 2015' + print*, 'https://doi.org/10.1016/j.ijplas.2014.02.006' !------------------------------------------------------------------------------------------------ ! debugging options @@ -134,9 +134,8 @@ subroutine grid_mech_spectral_polarisation_init debugRotation = debug_grid%contains('rotation') !------------------------------------------------------------------------------------------------- -! read numerical parameters +! read numerical parameters and do sanity checks num_grid => config_numerics%get('grid',defaultVal=emptyDict) - num%update_gamma = num_grid%get_asBool ('update_gamma', defaultVal=.false.) num%eps_div_atol = num_grid%get_asFloat ('eps_div_atol', defaultVal=1.0e-4_pReal) num%eps_div_rtol = num_grid%get_asFloat ('eps_div_rtol', defaultVal=5.0e-4_pReal) @@ -207,7 +206,7 @@ subroutine grid_mech_spectral_polarisation_init F_tau => FandF_tau(9:17,:,:,:) restartRead: if (interface_restartInc > 0) then - write(6,'(/,a,i0,a)') ' reading restart data of increment ', interface_restartInc, ' from file' + print'(/,a,i0,a)', ' reading restart data of increment ', interface_restartInc, ' from file' write(fileName,'(a,a,i0,a)') trim(getSolverJobName()),'_',worldrank,'.hdf5' fileHandle = HDF5_openFile(fileName) @@ -236,7 +235,7 @@ subroutine grid_mech_spectral_polarisation_init call DMDAVecRestoreArrayF90(da,solution_vec,FandF_tau,ierr); CHKERRQ(ierr) ! deassociate pointer restartRead2: if (interface_restartInc > 0) then - write(6,'(/,a,i0,a)') ' reading more restart data of increment ', interface_restartInc, ' from file' + print'(a,i0,a)', ' reading more restart data of increment ', interface_restartInc, ' from file' call HDF5_read(groupHandle,C_volAvg, 'C_volAvg') call HDF5_read(groupHandle,C_volAvgLastInc,'C_volAvgLastInc') @@ -434,7 +433,7 @@ subroutine grid_mech_spectral_polarisation_restartWrite F => FandF_tau(0: 8,:,:,:) F_tau => FandF_tau(9:17,:,:,:) - write(6,'(a)') ' writing solver data required for restart to file'; flush(6) + print*, 'writing solver data required for restart to file'; flush(6) write(fileName,'(a,a,i0,a)') trim(getSolverJobName()),'_',worldrank,'.hdf5' fileHandle = HDF5_openFile(fileName,'w') @@ -498,14 +497,14 @@ subroutine converged(snes_local,PETScIter,devNull1,devNull2,devNull3,reason,dumm !-------------------------------------------------------------------------------------------------- ! report - write(6,'(1/,a)') ' ... reporting .............................................................' - write(6,'(1/,a,f12.2,a,es8.2,a,es9.2,a)') ' error divergence = ', & + print'(1/,a)', ' ... reporting .............................................................' + print'(1/,a,f12.2,a,es8.2,a,es9.2,a)', ' error divergence = ', & err_div/divTol, ' (',err_div, ' / m, tol = ',divTol,')' - write(6, '(a,f12.2,a,es8.2,a,es9.2,a)') ' error curl = ', & + print '(a,f12.2,a,es8.2,a,es9.2,a)', ' error curl = ', & err_curl/curlTol,' (',err_curl,' -, tol = ',curlTol,')' - write(6, '(a,f12.2,a,es8.2,a,es9.2,a)') ' error BC = ', & + print '(a,f12.2,a,es8.2,a,es9.2,a)', ' error stress BC = ', & err_BC/BCTol, ' (',err_BC, ' Pa, tol = ',BCTol,')' - write(6,'(/,a)') ' ===========================================================================' + print'(/,a)', ' ===========================================================================' flush(6) end subroutine converged @@ -558,7 +557,7 @@ subroutine formResidual(in, FandF_tau, & ! begin of new iteration newIteration: if (totalIter <= PETScIter) then totalIter = totalIter + 1 - write(6,'(1x,a,3(a,i0))') trim(incInfo), ' @ Iteration ', num%itmin, '≤',totalIter, '≤', num%itmax + print'(1x,a,3(a,i0))', trim(incInfo), ' @ Iteration ', num%itmin, '≤',totalIter, '≤', num%itmax if(debugRotation) & write(6,'(/,a,/,3(3(f12.7,1x)/))',advance='no') & ' deformation gradient aim (lab) =', transpose(params%rotation_BC%rotate(F_aim,active=.true.)) diff --git a/src/grid/grid_thermal_spectral.f90 b/src/grid/grid_thermal_spectral.f90 index 5456f40eb..eeff8c9d6 100644 --- a/src/grid/grid_thermal_spectral.f90 +++ b/src/grid/grid_thermal_spectral.f90 @@ -23,20 +23,17 @@ module grid_thermal_spectral implicit none private -!-------------------------------------------------------------------------------------------------- -! derived types - type(tSolutionParams) :: params - type :: tNumerics integer :: & - itmax !< maximum number of iterations + itmax !< maximum number of iterations real(pReal) :: & - eps_thermal_atol, & !< absolute tolerance for thermal equilibrium - eps_thermal_rtol !< relative tolerance for thermal equilibrium + eps_thermal_atol, & !< absolute tolerance for thermal equilibrium + eps_thermal_rtol !< relative tolerance for thermal equilibrium end type tNumerics type(tNumerics) :: num + type(tSolutionParams) :: params !-------------------------------------------------------------------------------------------------- ! PETSc data SNES :: thermal_snes @@ -74,13 +71,13 @@ subroutine grid_thermal_spectral_init class(tNode), pointer :: & num_grid - write(6,'(/,a)') ' <<<+- grid_thermal_spectral init -+>>>' + print'(/,a)', ' <<<+- grid_thermal_spectral init -+>>>' - write(6,'(/,a)') ' Shanthraj et al., Handbook of Mechanics of Materials, 2019' - write(6,'(a)') ' https://doi.org/10.1007/978-981-10-6855-3_80' + print*, 'Shanthraj et al., Handbook of Mechanics of Materials, 2019' + print*, 'https://doi.org/10.1007/978-981-10-6855-3_80' !------------------------------------------------------------------------------------------------- -! read numerical parameter and do sanity checks +! read numerical parameters and do sanity checks num_grid => config_numerics%get('grid',defaultVal=emptyDict) num%itmax = num_grid%get_asInt ('itmax', defaultVal=250) num%eps_thermal_atol = num_grid%get_asFloat ('eps_thermal_atol',defaultVal=1.0e-2_pReal) @@ -94,8 +91,7 @@ subroutine grid_thermal_spectral_init ! set default and user defined options for PETSc call PETScOptionsInsertString(PETSC_NULL_OPTIONS,'-thermal_snes_type ngmres',ierr) CHKERRQ(ierr) - call PETScOptionsInsertString(PETSC_NULL_OPTIONS,& - num_grid%get_asString('petsc_options',defaultVal=''),ierr) + call PETScOptionsInsertString(PETSC_NULL_OPTIONS,num_grid%get_asString('petsc_options',defaultVal=''),ierr) CHKERRQ(ierr) !-------------------------------------------------------------------------------------------------- @@ -110,7 +106,7 @@ subroutine grid_thermal_spectral_init DMDA_STENCIL_BOX, & ! Moore (26) neighborhood around central point grid(1),grid(2),grid(3), & ! global grid 1, 1, worldsize, & - 1, 0, & ! #dof (thermal phase field), ghost boundary width (domain overlap) + 1, 0, & ! #dof (T field), ghost boundary width (domain overlap) [grid(1)],[grid(2)],localK, & ! local grid thermal_grid,ierr) ! handle, error CHKERRQ(ierr) @@ -159,8 +155,6 @@ function grid_thermal_spectral_solution(timeinc,timeinc_old) result(solution) timeinc_old !< increment in time of last increment integer :: i, j, k, cell type(tSolutionState) :: solution - class(tNode), pointer :: & - num_grid PetscInt :: devNull PetscReal :: T_min, T_max, stagNorm, solnNorm @@ -204,10 +198,10 @@ function grid_thermal_spectral_solution(timeinc,timeinc_old) result(solution) call VecMin(solution_vec,devNull,T_min,ierr); CHKERRQ(ierr) call VecMax(solution_vec,devNull,T_max,ierr); CHKERRQ(ierr) if (solution%converged) & - write(6,'(/,a)') ' ... thermal conduction converged ..................................' + print'(/,a)', ' ... thermal conduction converged ..................................' write(6,'(/,a,f8.4,2x,f8.4,2x,f8.4,/)',advance='no') ' Minimum|Maximum|Delta Temperature / K = ',& T_min, T_max, stagNorm - write(6,'(/,a)') ' ===========================================================================' + print'(/,a)', ' ===========================================================================' flush(6) end function grid_thermal_spectral_solution diff --git a/src/grid/spectral_utilities.f90 b/src/grid/spectral_utilities.f90 index 1dc66a23f..764e8adb6 100644 --- a/src/grid/spectral_utilities.f90 +++ b/src/grid/spectral_utilities.f90 @@ -208,7 +208,7 @@ subroutine spectral_utilities_init debugPETSc = debug_grid%contains('petsc') - if(debugPETSc) write(6,'(3(/,a),/)') & + if(debugPETSc) print'(3(/,a),/)', & ' Initializing PETSc with debug options: ', & trim(PETScDebug), & ' add more using the PETSc_Options keyword in numerics.yaml '; flush(6) @@ -280,7 +280,7 @@ subroutine spectral_utilities_init if (pReal /= C_DOUBLE .or. kind(1) /= C_INT) error stop 'C and Fortran datatypes do not match' call fftw_set_timelimit(num_grid%get_asFloat('fftw_timelimit',defaultVal=-1.0_pReal)) - if (debugGeneral) write(6,'(/,a)') ' FFTW initialized'; flush(6) + print*, 'FFTW initialized'; flush(6) !-------------------------------------------------------------------------------------------------- ! MPI allocation @@ -506,7 +506,7 @@ subroutine utilities_fourierGammaConvolution(fieldAim) logical :: err - write(6,'(/,a)') ' ... doing gamma convolution ...............................................' + print'(/,a)', ' ... doing gamma convolution ...............................................' flush(6) !-------------------------------------------------------------------------------------------------- @@ -576,7 +576,7 @@ real(pReal) function utilities_divergenceRMS() integer :: i, j, k, ierr complex(pReal), dimension(3) :: rescaledGeom - write(6,'(/,a)') ' ... calculating divergence ................................................' + print'(/,a)', ' ... calculating divergence ................................................' flush(6) rescaledGeom = cmplx(geomSize/scaledGeomSize,0.0_pReal) @@ -620,7 +620,7 @@ real(pReal) function utilities_curlRMS() complex(pReal), dimension(3,3) :: curl_fourier complex(pReal), dimension(3) :: rescaledGeom - write(6,'(/,a)') ' ... calculating curl ......................................................' + print'(/,a)', ' ... calculating curl ......................................................' flush(6) rescaledGeom = cmplx(geomSize/scaledGeomSize,0.0_pReal) @@ -822,7 +822,7 @@ subroutine utilities_constitutiveResponse(P,P_av,C_volAvg,C_minmaxAvg,& real(pReal) :: dPdF_norm_max, dPdF_norm_min real(pReal), dimension(2) :: valueAndRank !< pair of min/max norm of dPdF to synchronize min/max of dPdF - write(6,'(/,a)') ' ... evaluating constitutive response ......................................' + print'(/,a)', ' ... evaluating constitutive response ......................................' flush(6) materialpoint_F = reshape(F,[3,3,1,product(grid(1:2))*grid3]) ! set materialpoint target F to estimated field @@ -1095,7 +1095,7 @@ subroutine utilities_saveReferenceStiffness fileUnit,ierr if (worldrank == 0) then - write(6,'(a)') ' writing reference stiffness data required for restart to file'; flush(6) + print'(a)', ' writing reference stiffness data required for restart to file'; flush(6) open(newunit=fileUnit, file=getSolverJobName()//'.C_ref',& status='replace',access='stream',action='write',iostat=ierr) if(ierr /=0) call IO_error(100,ext_msg='could not open file '//getSolverJobName()//'.C_ref') diff --git a/src/marc/discretization_marc.f90 b/src/marc/discretization_marc.f90 index b2f5f8905..30d1bd9fc 100644 --- a/src/marc/discretization_marc.f90 +++ b/src/marc/discretization_marc.f90 @@ -70,7 +70,7 @@ subroutine discretization_marc_init class(tNode), pointer :: & num_commercialFEM - write(6,'(/,a)') ' <<<+- discretization_marc init -+>>>'; flush(6) + print'(/,a)', ' <<<+- discretization_marc init -+>>>'; flush(6) !--------------------------------------------------------------------------------- ! read debug parameters diff --git a/src/mesh/DAMASK_mesh.f90 b/src/mesh/DAMASK_mesh.f90 index 2fefe73a9..0ba56bef3 100644 --- a/src/mesh/DAMASK_mesh.f90 +++ b/src/mesh/DAMASK_mesh.f90 @@ -78,7 +78,7 @@ program DAMASK_mesh !-------------------------------------------------------------------------------------------------- ! init DAMASK (all modules) call CPFEM_initAll - write(6,'(/,a)') ' <<<+- DAMASK_FEM init -+>>>'; flush(6) + print'(/,a)', ' <<<+- DAMASK_mesh init -+>>>'; flush(6) !--------------------------------------------------------------------- ! reading field information from numerics file and do sanity checks @@ -208,30 +208,30 @@ program DAMASK_mesh errorID = 0 checkLoadcases: do currentLoadCase = 1, size(loadCases) write (loadcase_string, '(i0)' ) currentLoadCase - write(6,'(1x,a,i6)') 'load case: ', currentLoadCase + print'(a,i0)', ' load case: ', currentLoadCase if (.not. loadCases(currentLoadCase)%followFormerTrajectory) & - write(6,'(2x,a)') 'drop guessing along trajectory' + print'(a)', ' drop guessing along trajectory' do field = 1, nActiveFields select case (loadCases(currentLoadCase)%fieldBC(field)%ID) case(FIELD_MECH_ID) - write(6,'(2x,a)') 'Field '//trim(FIELD_MECH_label) + print'(a)', ' Field '//trim(FIELD_MECH_label) end select do faceSet = 1, mesh_Nboundaries do component = 1, loadCases(currentLoadCase)%fieldBC(field)%nComponents if (loadCases(currentLoadCase)%fieldBC(field)%componentBC(component)%Mask(faceSet)) & - write(6,'(4x,a,i2,a,i2,a,f12.7)') 'Face ', mesh_boundaries(faceSet), & + print'(a,i2,a,i2,a,f12.7)', ' Face ', mesh_boundaries(faceSet), & ' Component ', component, & ' Value ', loadCases(currentLoadCase)%fieldBC(field)% & componentBC(component)%Value(faceSet) enddo enddo enddo - write(6,'(2x,a,f12.6)') 'time: ', loadCases(currentLoadCase)%time + print'(a,f12.6)', ' time: ', loadCases(currentLoadCase)%time if (loadCases(currentLoadCase)%incs < 1) errorID = 835 ! non-positive incs count - write(6,'(2x,a,i5)') 'increments: ', loadCases(currentLoadCase)%incs + print'(a,i5)', ' increments: ', loadCases(currentLoadCase)%incs if (loadCases(currentLoadCase)%outputfrequency < 1) errorID = 836 ! non-positive result frequency - write(6,'(2x,a,i5)') 'output frequency: ', & + print'(a,i5)', ' output frequency: ', & loadCases(currentLoadCase)%outputfrequency if (errorID > 0) call IO_error(error_ID = errorID, ext_msg = loadcase_string) ! exit with error message enddo checkLoadcases @@ -290,8 +290,8 @@ program DAMASK_mesh !-------------------------------------------------------------------------------------------------- ! report begin of new step - write(6,'(/,a)') ' ###########################################################################' - write(6,'(1x,a,es12.5,6(a,i0))')& + print'(/,a)', ' ###########################################################################' + print'(1x,a,es12.5,6(a,i0))',& 'Time', time, & 's: Increment ', inc, '/', loadCases(currentLoadCase)%incs,& '-', stepFraction, '/', subStepFactor**cutBackLevel,& @@ -338,7 +338,7 @@ program DAMASK_mesh cutBack = .False. if(.not. all(solres(:)%converged .and. solres(:)%stagConverged)) then ! no solution found if (cutBackLevel < maxCutBack) then ! do cut back - write(6,'(/,a)') ' cut back detected' + print'(/,a)', ' cut back detected' cutBack = .True. stepFraction = (stepFraction - 1) * subStepFactor ! adjust to new denominator cutBackLevel = cutBackLevel + 1 @@ -360,13 +360,13 @@ program DAMASK_mesh cutBackLevel = max(0, cutBackLevel - 1) ! try half number of subincs next inc if (all(solres(:)%converged)) then - write(6,'(/,a,i0,a)') ' increment ', totalIncsCounter, ' converged' + print'(/,a,i0,a)', ' increment ', totalIncsCounter, ' converged' else - write(6,'(/,a,i0,a)') ' increment ', totalIncsCounter, ' NOT converged' + print'(/,a,i0,a)', ' increment ', totalIncsCounter, ' NOT converged' endif; flush(6) if (mod(inc,loadCases(currentLoadCase)%outputFrequency) == 0) then ! at output frequency - write(6,'(1/,a)') ' ... writing results to file ......................................' + print'(/,a)', ' ... writing results to file ......................................' call CPFEM_results(totalIncsCounter,time) endif @@ -378,7 +378,7 @@ program DAMASK_mesh !-------------------------------------------------------------------------------------------------- ! report summary of whole calculation - write(6,'(/,a)') ' ###########################################################################' + print'(/,a)', ' ###########################################################################' if (worldrank == 0) close(statUnit) call quit(0) ! no complains ;) diff --git a/src/mesh/FEM_quadrature.f90 b/src/mesh/FEM_quadrature.f90 index 65b0bc6fe..4cc5e5468 100644 --- a/src/mesh/FEM_quadrature.f90 +++ b/src/mesh/FEM_quadrature.f90 @@ -37,7 +37,7 @@ contains !-------------------------------------------------------------------------------------------------- subroutine FEM_quadrature_init - write(6,'(/,a)') ' <<<+- FEM_quadrature init -+>>>'; flush(6) + print'(/,a)', ' <<<+- FEM_quadrature init -+>>>'; flush(6) !-------------------------------------------------------------------------------------------------- ! 2D linear diff --git a/src/mesh/FEM_utilities.f90 b/src/mesh/FEM_utilities.f90 index 551a863b6..1e154e533 100644 --- a/src/mesh/FEM_utilities.f90 +++ b/src/mesh/FEM_utilities.f90 @@ -110,7 +110,7 @@ subroutine FEM_utilities_init PetscErrorCode :: ierr - write(6,'(/,a)') ' <<<+- FEM_utilities init -+>>>' + print'(/,a)', ' <<<+- FEM_utilities init -+>>>' num_mesh => config_numerics%get('mesh',defaultVal=emptyDict) structOrder = num_mesh%get_asInt('structOrder', defaultVal = 2) @@ -118,7 +118,7 @@ subroutine FEM_utilities_init debug_mesh => config_debug%get('mesh',defaultVal=emptyList) debugPETSc = debug_mesh%contains('petsc') - if(debugPETSc) write(6,'(3(/,a),/)') & + if(debugPETSc) print'(3(/,a),/)', & ' Initializing PETSc with debug options: ', & trim(PETScDebug), & ' add more using the PETSc_Options keyword in numerics.yaml ' @@ -158,7 +158,7 @@ subroutine utilities_constitutiveResponse(timeinc,P_av,forwardData) PetscErrorCode :: ierr - write(6,'(/,a)') ' ... evaluating constitutive response ......................................' + print'(/,a)', ' ... evaluating constitutive response ......................................' call materialpoint_stressAndItsTangent(.true.,timeinc) ! calculate P field diff --git a/src/mesh/discretization_mesh.f90 b/src/mesh/discretization_mesh.f90 index 54854ce68..b57a4b332 100644 --- a/src/mesh/discretization_mesh.f90 +++ b/src/mesh/discretization_mesh.f90 @@ -83,7 +83,7 @@ subroutine discretization_mesh_init(restart) num_mesh integer :: integrationOrder !< order of quadrature rule required - write(6,'(/,a)') ' <<<+- discretization_mesh init -+>>>' + print'(/,a)', ' <<<+- discretization_mesh init -+>>>' !-------------------------------------------------------------------------------- ! read numerics parameter diff --git a/src/mesh/mesh_mech_FEM.f90 b/src/mesh/mesh_mech_FEM.f90 index 546897c5b..6c8d4667d 100644 --- a/src/mesh/mesh_mech_FEM.f90 +++ b/src/mesh/mesh_mech_FEM.f90 @@ -110,7 +110,7 @@ subroutine FEM_mech_init(fieldBC) class(tNode), pointer :: & num_mesh - write(6,'(/,a)') ' <<<+- FEM_mech init -+>>>'; flush(6) + print'(/,a)', ' <<<+- FEM_mech init -+>>>'; flush(6) !----------------------------------------------------------------------------- ! read numerical parametes and do sanity checks @@ -318,7 +318,7 @@ type(tSolutionState) function FEM_mech_solution( & CHKERRQ(ierr) endif - write(6,'(/,a)') ' ===========================================================================' + print'(/,a)', ' ===========================================================================' flush(6) end function FEM_mech_solution @@ -679,7 +679,7 @@ subroutine FEM_mech_converged(snes_local,PETScIter,xnorm,snorm,fnorm,reason,dumm call SNESConvergedDefault(snes_local,PETScIter,xnorm,snorm,fnorm/divTol,reason,dummy,ierr) CHKERRQ(ierr) if (terminallyIll) reason = SNES_DIVERGED_FUNCTION_DOMAIN - write(6,'(1/,1x,a,a,i0,a,i0,f0.3)') trim(incInfo), & + print'(/,1x,a,a,i0,a,i0,f0.3)', trim(incInfo), & ' @ Iteration ',PETScIter,' mechanical residual norm = ', & int(fnorm/divTol),fnorm/divTol-int(fnorm/divTol) write(6,'(/,a,/,3(3(2x,f12.4,1x)/))',advance='no') ' Piola--Kirchhoff stress / MPa =',&