diff --git a/code/DAMASK_spectral_interface.f90 b/code/DAMASK_spectral_interface.f90 index 5c5f5b480..18d471e92 100644 --- a/code/DAMASK_spectral_interface.f90 +++ b/code/DAMASK_spectral_interface.f90 @@ -353,7 +353,7 @@ character(len=1024) function getLoadCaseFile(loadCaseParameter) cwd integer :: posExt, posSep character :: pathSep - + getLoadCaseFile = loadcaseParameter pathSep = getPathSep() posExt = scan(getLoadCaseFile,'.',back=.true.) diff --git a/code/IO.f90 b/code/IO.f90 index c732382e7..35e14650b 100644 --- a/code/IO.f90 +++ b/code/IO.f90 @@ -91,9 +91,6 @@ module IO abaqus_assembleInputFile #endif - external :: & - quit - contains @@ -364,8 +361,8 @@ end subroutine IO_open_logFile !-------------------------------------------------------------------------------------------------- -!> @brief opens FEM log file for writing to given unit. File is named after solver job name and -!! located in current working directory +!> @brief opens ASCII file to given unit for writing. File is named after solver job name plus +!! given extension and located in current working directory !-------------------------------------------------------------------------------------------------- subroutine IO_write_jobFile(fileUnit,ext) use DAMASK_interface, only: & @@ -1395,6 +1392,7 @@ function IO_continuousIntValues(fileUnit,maxN,lookupName,lookupMap,lookupMaxN) !> @brief returns format string for integer values without leading zeros !-------------------------------------------------------------------------------------------------- pure function IO_intOut(intToPrint) + implicit none character(len=16) :: N_Digits character(len=34) :: IO_intOut @@ -1410,6 +1408,7 @@ end function IO_intOut !> @brief returns time stamp !-------------------------------------------------------------------------------------------------- function IO_timeStamp() + implicit none character(len=10) :: IO_timeStamp integer(pInt), dimension(8) :: values @@ -1425,11 +1424,13 @@ end function IO_timeStamp !> in ABAQUS either time step is reduced or execution terminated !-------------------------------------------------------------------------------------------------- subroutine IO_error(error_ID,el,ip,g,ext_msg) + implicit none integer(pInt), intent(in) :: error_ID integer(pInt), optional, intent(in) :: el,ip,g character(len=*), optional, intent(in) :: ext_msg + external :: quit character(len=1024) :: msg character(len=1024) :: formatString diff --git a/code/math.f90 b/code/math.f90 index dc6ad933e..a31fd57da 100644 --- a/code/math.f90 +++ b/code/math.f90 @@ -446,7 +446,7 @@ pure function math_range(N) integer(pInt) :: i integer(pInt), dimension(N) :: math_range - forall (i=1_pInt:N) math_range(i) = i + math_range = [(i,i=1_pInt,N)] end function math_range diff --git a/code/mesh.f90 b/code/mesh.f90 index bab8a0d6a..1d3808cd2 100644 --- a/code/mesh.f90 +++ b/code/mesh.f90 @@ -87,19 +87,22 @@ module mesh integer(pInt), dimension(2), private :: & mesh_maxValStateVar = 0_pInt +#ifndef Spectral character(len=64), dimension(:), allocatable, private :: & mesh_nameElemSet, & !< names of elementSet mesh_nameMaterial, & !< names of material in solid section mesh_mapMaterial !< name of elementSet for material - + integer(pInt), dimension(:,:), allocatable, private :: & - mesh_cellnodeParent, & !< cellnode's parent element ID, cellnode's intra-element ID mesh_mapElemSet !< list of elements in elementSet - +#endif + integer(pInt), dimension(:,:), allocatable, private :: & + mesh_cellnodeParent !< cellnode's parent element ID, cellnode's intra-element ID + integer(pInt), dimension(:,:), allocatable, target, private :: & mesh_mapFEtoCPelem, & !< [sorted FEid, corresponding CPid] mesh_mapFEtoCPnode !< [sorted FEid, corresponding CPid] - + integer(pInt),dimension(:,:,:), allocatable, private :: & mesh_cell !< cell connectivity for each element,ip/cell @@ -3697,8 +3700,8 @@ subroutine mesh_build_ipAreas real(pReal), dimension (3,FE_maxNcellnodesPerCellface) :: nodePos, normals real(pReal), dimension(3) :: normal - allocate(mesh_ipArea(mesh_maxNipNeighbors,mesh_maxNips,mesh_NcpElems)); mesh_ipArea = 0.0_pReal - allocate(mesh_ipAreaNormal(3_pInt,mesh_maxNipNeighbors,mesh_maxNips,mesh_NcpElems)); mesh_ipAreaNormal = 0.0_pReal + allocate(mesh_ipArea(mesh_maxNipNeighbors,mesh_maxNips,mesh_NcpElems), source=0.0_pReal) + allocate(mesh_ipAreaNormal(3_pInt,mesh_maxNipNeighbors,mesh_maxNips,mesh_NcpElems), source=0.0_pReal) !$OMP PARALLEL DO PRIVATE(t,g,c,nodePos,normal,normals) do e = 1_pInt,mesh_NcpElems ! loop over cpElems @@ -3898,7 +3901,7 @@ end subroutine mesh_build_sharedElems !-------------------------------------------------------------------------------------------------- -!> @brief build up of IP neighborhood, allocate globals '_ipNeighborhood' +!> @brief build up of IP neighborhood, allocate globals '_ipNeighborhood' !-------------------------------------------------------------------------------------------------- subroutine mesh_build_ipNeighborhood use math, only: & @@ -5125,14 +5128,18 @@ subroutine mesh_write_cellGeom title=trim(getSolverJobName())//' cell mesh', & filename = trim(getSolverWorkingDirectoryName())//trim(getSolverJobName())//'_ipbased.vtk', & mesh_topology = 'UNSTRUCTURED_GRID') + !ToDo: check error here error=VTK_geo(NN = int(mesh_Ncellnodes,I4P), & X = mesh_cellnode(1,1:mesh_Ncellnodes), & Y = mesh_cellnode(2,1:mesh_Ncellnodes), & Z = mesh_cellnode(3,1:mesh_Ncellnodes)) + !ToDo: check error here error=VTK_con(NC = int(mesh_Ncells,I4P), & connect = cellconnection(1:j), & + !ToDo: check error here cell_type = celltype) error=VTK_end() + !ToDo: check error here end subroutine mesh_write_cellGeom @@ -5173,14 +5180,18 @@ subroutine mesh_write_elemGeom title=trim(getSolverJobName())//' element mesh', & filename = trim(getSolverWorkingDirectoryName())//trim(getSolverJobName())//'_nodebased.vtk', & mesh_topology = 'UNSTRUCTURED_GRID') + !ToDo: check error here error=VTK_geo(NN = int(mesh_Nnodes,I4P), & X = mesh_node0(1,1:mesh_Nnodes), & Y = mesh_node0(2,1:mesh_Nnodes), & Z = mesh_node0(3,1:mesh_Nnodes)) + !ToDo: check error here error=VTK_con(NC = int(mesh_Nelems,I4P), & connect = elementconnection(1:i), & cell_type = elemtype) + !ToDo: check error here error =VTK_end() + !ToDo: check error here end subroutine mesh_write_elemGeom