diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 99c309419..da30d837a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -48,30 +48,29 @@ variables: # Names of module files to load # =============================================================================================== # ++++++++++++ Compiler +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - IntelCompiler17_8: "Compiler/Intel/17.8 Libraries/IMKL/2017" - IntelCompiler18_4: "Compiler/Intel/18.4 Libraries/IMKL/2018" - GNUCompiler8_2: "Compiler/GNU/8.2" + IntelCompiler19_1: "Compiler/Intel/19.1.2 Libraries/IMKL/2020" + GNUCompiler10: "Compiler/GNU/10" # ------------ Defaults ---------------------------------------------- - IntelCompiler: "$IntelCompiler18_4" - GNUCompiler: "$GNUCompiler8_2" + IntelCompiler: "$IntelCompiler19_1" + GNUCompiler: "$GNUCompiler10" # ++++++++++++ MPI ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - IMPI2018Intel18_4: "MPI/Intel/18.4/IntelMPI/2018" - MPICH3_3GNU8_2: "MPI/GNU/8.2/MPICH/3.3" + IMPI2020Intel19_1: "MPI/Intel/19.1.2/IntelMPI/2019" + OMPI4_0GNU10: "MPI/GNU/10/OpenMPI/4.0.5" # ------------ Defaults ---------------------------------------------- - MPICH_Intel: "$IMPI2018Intel18_4" - MPICH_GNU: "$MPICH3_3GNU8_2" + MPI_Intel: "$IMPI2020Intel19_1" + MPI_GNU: "$OMPI4_0GNU10" # ++++++++++++ PETSc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - PETSc3_10_3IMPI2018Intel18_4: "Libraries/PETSc/3.10.3/Intel-18.4-IntelMPI-2018" - PETSc3_10_3MPICH3_3GNU8_2: "Libraries/PETSc/3.10.3/GNU-8.2-MPICH-3.3" + PETSc3_14_0IMPI2020Intel19_1: "Libraries/PETSc/3.14.0/Intel-19.1.2-IntelMPI-2019" + PETSc3_14_0OMPI4_0GNU10: "Libraries/PETSc/3.14.0/GNU-10-OpenMPI-4.0.5" # ------------ Defaults ---------------------------------------------- - PETSc_MPICH_Intel: "$PETSc3_10_3IMPI2018Intel18_4" - PETSc_MPICH_GNU: "$PETSc3_10_3MPICH3_3GNU8_2" + PETSc_Intel: "$PETSc3_14_0IMPI2020Intel19_1" + PETSc_GNU: "$PETSc3_14_0OMPI4_0GNU10" # ++++++++++++ commercial FEM ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - MSC2019_1: "FEM/MSC/2019.1" + MSC2020: "FEM/MSC/2020" # ------------ Defaults ---------------------------------------------- - MSC: "$MSC2019_1" - IntelMarc: "$IntelCompiler17_8" - HDF5Marc: "HDF5/1.10.5/Intel-17.8" + MSC: "$MSC2020" + IntelMarc: "$IntelCompiler19_1" + HDF5Marc: "HDF5/1.12.0/Intel-19.1.2" ################################################################################################### checkout: @@ -181,7 +180,7 @@ Post_OrientationAverageMisorientation: compile_grid_Intel: stage: compile script: - - module load $IntelCompiler $MPICH_Intel $PETSc_MPICH_Intel + - module load $IntelCompiler $MPI_Intel $PETSc_Intel - cd pytest - pytest -k 'compile and grid' --basetemp=${TESTROOT}/compile_grid_Intel except: @@ -191,7 +190,7 @@ compile_grid_Intel: compile_mesh_Intel: stage: compile script: - - module load $IntelCompiler $MPICH_Intel $PETSc_MPICH_Intel + - module load $IntelCompiler $MPI_Intel $PETSc_Intel - cd pytest - pytest -k 'compile and mesh' --basetemp=${TESTROOT}/compile_mesh_Intel except: @@ -201,7 +200,7 @@ compile_mesh_Intel: compile_grid_GNU: stage: compile script: - - module load $GNUCompiler $MPICH_GNU $PETSc_MPICH_GNU + - module load $GNUCompiler $MPI_GNU $PETSc_GNU - cd pytest - pytest -k 'compile and grid' --basetemp=${TESTROOT}/compile_grid_GNU except: @@ -211,7 +210,7 @@ compile_grid_GNU: compile_mesh_GNU: stage: compile script: - - module load $GNUCompiler $MPICH_GNU $PETSc_MPICH_GNU + - module load $GNUCompiler $MPI_GNU $PETSc_GNU - cd pytest - pytest -k 'compile and mesh' --basetemp=${TESTROOT}/compile_mesh_GNU except: @@ -231,7 +230,7 @@ compile_MARC: setup_grid: stage: compile script: - - module load $IntelCompiler $MPICH_Intel $PETSc_MPICH_Intel + - module load $IntelCompiler $MPI_Intel $PETSc_Intel - BUILD_DIR=$(mktemp -d) - cd ${BUILD_DIR} - cmake -DDAMASK_SOLVER=GRID -DCMAKE_INSTALL_PREFIX=${DAMASKROOT} ${DAMASKROOT} @@ -243,7 +242,7 @@ setup_grid: setup_mesh: stage: compile script: - - module load $IntelCompiler $MPICH_Intel $PETSc_MPICH_Intel + - module load $IntelCompiler $MPI_Intel $PETSc_Intel - BUILD_DIR=$(mktemp -d) - cd ${BUILD_DIR} - cmake -DDAMASK_SOLVER=MESH -DCMAKE_INSTALL_PREFIX=${DAMASKROOT} ${DAMASKROOT} @@ -256,7 +255,7 @@ setup_mesh: Pytest_grid: stage: grid script: - - module load $IntelCompiler $MPICH_Intel $PETSc_MPICH_Intel + - module load $IntelCompiler $MPI_Intel $PETSc_Intel - cd pytest - pytest -k 'not compile' --basetemp=${TESTROOT}/fortran -v except: @@ -342,7 +341,7 @@ Marc_elementLib: SpectralRuntime: stage: performance script: - - module load $IntelCompiler $MPICH_Intel $PETSc_MPICH_Intel + - module load $IntelCompiler $MPI_Intel $PETSc_Intel - cd $DAMASKROOT - make clean grid processing OPTIMIZATION=AGGRESSIVE - cd $LOCAL_HOME/performance # location of old results diff --git a/PRIVATE b/PRIVATE index 803cf6bd6..73cb2f633 160000 --- a/PRIVATE +++ b/PRIVATE @@ -1 +1 @@ -Subproject commit 803cf6bd65655159cb2f9a5de81d008ab75e061c +Subproject commit 73cb2f63397dfb8551fa5d8cb444eb89b2d3712a diff --git a/env/CONFIG b/env/CONFIG index 5d92af7fa..52057526a 100644 --- a/env/CONFIG +++ b/env/CONFIG @@ -2,4 +2,4 @@ set DAMASK_NUM_THREADS = 4 set MSC_ROOT = /opt/msc -set MSC_VERSION = 2019.1 +set MSC_VERSION = 2020 diff --git a/python/damask/_result.py b/python/damask/_result.py index a3ea3c3bb..917d75b68 100644 --- a/python/damask/_result.py +++ b/python/damask/_result.py @@ -7,6 +7,7 @@ import xml.etree.ElementTree as ET import xml.dom.minidom from pathlib import Path from functools import partial +from collections import defaultdict import h5py import numpy as np @@ -1239,6 +1240,8 @@ class Result: delta.text="{} {} {}".format(*(self.size/self.grid)) + type_map = defaultdict(lambda:'Matrix', ( ((),'Scalar'), ((3,),'Vector'), ((3,3),'Tensor')) ) + with h5py.File(self.fname,'r') as f: attributes.append(ET.SubElement(grid, 'Attribute')) attributes[-1].attrib={'Name': 'u / m', @@ -1259,14 +1262,14 @@ class Result: shape = f[name].shape[1:] dtype = f[name].dtype - if (shape not in [(), (3,), (3,3)]) or dtype != np.float64: continue + if dtype != np.float64: continue prec = f[name].dtype.itemsize unit = f[name].attrs['Unit'] if h5py3 else f[name].attrs['Unit'].decode() attributes.append(ET.SubElement(grid, 'Attribute')) attributes[-1].attrib={'Name': name.split('/',2)[2]+f' / {unit}', - 'Center': 'Cell', - 'AttributeType': {():'Scalar',(3):'Vector',(3,3):'Tensor'}[shape]} + 'Center': 'Cell', + 'AttributeType': type_map[shape]} data_items.append(ET.SubElement(attributes[-1], 'DataItem')) data_items[-1].attrib={'Format': 'HDF', 'NumberType': 'Float', diff --git a/src/grid/spectral_utilities.f90 b/src/grid/spectral_utilities.f90 index c7277a9d0..1e1608d7c 100644 --- a/src/grid/spectral_utilities.f90 +++ b/src/grid/spectral_utilities.f90 @@ -5,6 +5,7 @@ !-------------------------------------------------------------------------------------------------- module spectral_utilities use, intrinsic :: iso_c_binding + #include use PETScSys @@ -14,6 +15,7 @@ module spectral_utilities use math use rotations use IO + use config use discretization_grid use discretization use homogenization diff --git a/src/math.f90 b/src/math.f90 index 1fc9bd7eb..8005b5406 100644 --- a/src/math.f90 +++ b/src/math.f90 @@ -17,8 +17,8 @@ module math #if __INTEL_COMPILER >= 1900 ! do not make use associated entities available to other modules private :: & - prec, & - IO + IO, & + config #endif real(pReal), parameter :: PI = acos(-1.0_pReal) !< ratio of a circle's circumference to its diameter diff --git a/src/mesh/FEM_utilities.f90 b/src/mesh/FEM_utilities.f90 index 4c958ee2e..118735e89 100644 --- a/src/mesh/FEM_utilities.f90 +++ b/src/mesh/FEM_utilities.f90 @@ -12,11 +12,11 @@ module FEM_utilities use PETScis use prec - use FEsolving - use homogenization use config use math + use IO use discretization_mesh + use homogenization implicit none private diff --git a/src/parallelization.f90 b/src/parallelization.f90 index b7d7c50a8..11a3574ec 100644 --- a/src/parallelization.f90 +++ b/src/parallelization.f90 @@ -50,7 +50,11 @@ subroutine parallelization_init if (threadLevel