diff --git a/Golden_Repo/a/ADIOS2/ADIOS2-2.8.3-gompi-2022a.eb b/Golden_Repo/a/ADIOS2/ADIOS2-2.8.3-foss-2022a.eb similarity index 99% rename from Golden_Repo/a/ADIOS2/ADIOS2-2.8.3-gompi-2022a.eb rename to Golden_Repo/a/ADIOS2/ADIOS2-2.8.3-foss-2022a.eb index d919a7aac5c953a05f551d59f3a4216f7d20505d..d435796303cea7959ac8b3213328a4d1109f768d 100644 --- a/Golden_Repo/a/ADIOS2/ADIOS2-2.8.3-gompi-2022a.eb +++ b/Golden_Repo/a/ADIOS2/ADIOS2-2.8.3-foss-2022a.eb @@ -9,7 +9,7 @@ flexible way for scientists to describe the data in their code that may need to be written, read, or processed outside of the running simulation.""" -toolchain = {'name': 'gompi', 'version': '2022a'} +toolchain = {'name': 'foss', 'version': '2022a'} toolchainopts = {'pic': True, 'usempi': False} github_account = 'ornladios' diff --git a/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-foss-2022a.eb b/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-foss-2022a.eb new file mode 100644 index 0000000000000000000000000000000000000000..639db5be50e738c04e224e2b2576f2c0dee0dd7b --- /dev/null +++ b/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-foss-2022a.eb @@ -0,0 +1,60 @@ +easyblock = 'ConfigureMake' + +name = 'ARPACK-NG' + +version = '3.8.0' + +homepage = 'http://forge.scilab.org/index.php/p/arpack-ng/' + +description = """ARPACK-NG is a collection of Fortran77 subroutines designed to solve large scale eigenvalue problems. + +libarpack.a and libparpack.a have been installed in $EBROOTARPACKMINNG. + +In addition the variables ARPACK_ROOT, ARPACK_LIB, PARPACK_ROOT, and PARPACK_LIB are set. + +""" + +examples = 'Examples can be found in $ARPACK_ROOT/EXAMPLES' + +toolchain = {'name': 'foss', 'version': '2022a'} +toolchainopts = {'opt': True, 'optarch': True, 'pic': True, 'usempi': True} +source_urls = ['https://github.com/opencollab/arpack-ng/releases/tag/'] +sources = ["%(version)s.tar.gz"] + +patches = [ + 'ARPACK-NG-%(version)s-install-arpack-examples_gpsmkl.patch' +] + +checksums = [ + 'ada5aeb3878874383307239c9235b716a8a170c6d096a6625bfd529844df003d', # 3.8.0.tar.gz + # ARPACK-NG-3.8.0-install-arpack-examples_gpsmkl.patch + 'edf121fcaf5f2bf17c8395d5c4aae35d106eb3746b29561927f53ed6d3769707', +] + +builddependencies = [ + ('Autotools', '20220317'), + ('pkgconf', '1.8.0') +] + +preconfigopts = 'sh bootstrap &&' + +configopts = '--enable-mpi --with-pic --enable-static --with-blas="$LIBBLAS" --with-lapack="$LIBLAPACK"' + +postinstallcmds = [ + "cp -r EXAMPLES %(installdir)s/EXAMPLES", + "cp -r PARPACK/EXAMPLES/MPI %(installdir)s/EXAMPLES/PARPACK", +] + +sanity_check_paths = { + 'files': ["lib/libarpack.a", "lib/libarpack.%s" % SHLIB_EXT, "lib/libparpack.a", "lib/libparpack.%s" % SHLIB_EXT], + 'dirs': [] +} + +modextravars = { + 'ARPACK_ROOT': '%(installdir)s', + 'PARPACK_ROOT': '%(installdir)s', + 'ARPACK_LIB': '%(installdir)s/lib', + 'PARPACK_LIB': '%(installdir)s/lib' +} + +moduleclass = 'numlib' diff --git a/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-gcccoremkl-11.3.0-2022.1.0-nompi.eb b/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-gcccoremkl-11.3.0-2022.1.0-nompi.eb new file mode 100644 index 0000000000000000000000000000000000000000..5dbaa878d3512cbce6ca945aa68e9475c27ab265 --- /dev/null +++ b/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-gcccoremkl-11.3.0-2022.1.0-nompi.eb @@ -0,0 +1,44 @@ +easyblock = 'ConfigureMake' +name = 'ARPACK-NG' +version = '3.8.0' +versionsuffix = '-nompi' +homepage = 'http://forge.scilab.org/index.php/p/arpack-ng/' + +description = """ARPACK-NG is a collection of Fortran77 subroutines designed to solve large scale eigenvalue problems. + +libarpack.a has been installed in $EBROOTARPACKMINNG. + +""" + +toolchain = {'name': 'gcccoremkl', 'version': '11.3.0-2022.1.0'} + +toolchainopts = {'opt': True, 'optarch': True, 'pic': True} +source_urls = ['https://github.com/opencollab/arpack-ng/archive/'] +sources = ["%(version)s.tar.gz"] + +checksums = ['ada5aeb3878874383307239c9235b716a8a170c6d096a6625bfd529844df003d'] + +builddependencies = [ + ('binutils', '2.38'), + ('Autotools', '20220317'), + ('pkgconf', '1.8.0') +] + +# We hide it since this should be used just for Jupyter and the MPI version should be preferred for normal cases + +hidden = True + +preconfigopts = 'sh bootstrap &&' +configopts = '--with-pic --with-blas="$LIBBLAS" --with-lapack="$LIBLAPACK"' + +sanity_check_paths = { + 'files': ["lib/libarpack.%s" % SHLIB_EXT, ], + 'dirs': [] +} + +modextravars = { + 'ARPACK_ROOT': '%(installdir)s', + 'ARPACK_LIB': '%(installdir)s/lib', +} + +moduleclass = 'numlib' diff --git a/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-install-arpack-examples.patch b/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-install-arpack-examples.patch new file mode 100644 index 0000000000000000000000000000000000000000..8ec3b0762eea851e0e27c6c0f1c003a43ae8fefb --- /dev/null +++ b/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-install-arpack-examples.patch @@ -0,0 +1,538 @@ +--- arpack-ng-3.8.0/PARPACK_CHANGES 2021-06-30 09:57:39.220219000 +0200 ++++ arpack-ng-3.8.0-ok/PARPACK_CHANGES 2021-06-30 10:25:30.148960874 +0200 +@@ -334,4 +334,6 @@ + 36. 09/18/2016 p*apps.f and p*aitr.f contain condition to fetch machine epsilon. + When different p*aupd call use communicator with different number of CPU these + conditions cause deadlock. Variables inside conditions are moved to global +- to be reset each first iteration +\ No newline at end of file ++ to be reset each first iteration ++ ++ +--- arpack-ng-3.8.0/EXAMPLES/BAND/Makefile_band_intel 1970-01-01 01:00:00.000000000 +0100 ++++ arpack-ng-3.8.0-ok/EXAMPLES/BAND/Makefile_band_intel 2021-06-30 10:36:04.492823000 +0200 +@@ -0,0 +1,159 @@ ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++# ++CC = mpicc ++CFLAGS = -g -O2 ++CPP = mpicc -E ++CPPFLAGS = ++ ++F77 = mpif77 ++FFLAGS = -g -O2 ++F77LD = $(F77) ++FGREP = /bin/grep -F ++ ++LAPACK_LIBS = -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -liomp5 -lpthread ++ ++ARPACKLIB = -L$(ARPACK_LIB) -larpack ++ ++cnbdr1_OBJECTS = cnbdr1.o cnband.o ++cnbdr2_OBJECTS = cnbdr2.o cnband.o ++cnbdr3_OBJECTS = cnbdr3.o cnband.o ++cnbdr4_OBJECTS = cnbdr4.o cnband.o ++dnbdr1_OBJECTS = dnbdr1.o dnband.o ++dnbdr2_OBJECTS = dnbdr2.o dnband.o ++dnbdr3_OBJECTS = dnbdr3.o dnband.o ++dnbdr4_OBJECTS = dnbdr4.o dnband.o ++dnbdr5_OBJECTS = dnbdr5.o dnband.o ++dnbdr6_OBJECTS = dnbdr6.o dnband.o ++dsbdr1_OBJECTS = dsbdr1.o dsband.o ++dsbdr2_OBJECTS = dsbdr2.o dsband.o ++dsbdr3_OBJECTS = dsbdr3.o dsband.o ++dsbdr4_OBJECTS = dsbdr4.o dsband.o ++dsbdr5_OBJECTS = dsbdr5.o dsband.o ++dsbdr6_OBJECTS = dsbdr6.o dsband.o ++snbdr1_OBJECTS = snbdr1.o snband.o ++snbdr2_OBJECTS = snbdr2.o snband.o ++snbdr3_OBJECTS = snbdr3.o snband.o ++snbdr4_OBJECTS = snbdr4.o snband.o ++snbdr5_OBJECTS = snbdr5.o snband.o ++snbdr6_OBJECTS = snbdr6.o snband.o ++ssbdr1_OBJECTS = ssbdr1.o ssband.o ++ssbdr2_OBJECTS = ssbdr2.o ssband.o ++ssbdr3_OBJECTS = ssbdr3.o ssband.o ++ssbdr4_OBJECTS = ssbdr4.o ssband.o ++ssbdr5_OBJECTS = ssbdr5.o ssband.o ++ssbdr6_OBJECTS = ssbdr6.o ssband.o ++znbdr1_OBJECTS = znbdr1.o znband.o ++znbdr2_OBJECTS = znbdr2.o znband.o ++znbdr3_OBJECTS = znbdr3.o znband.o ++znbdr4_OBJECTS = znbdr4.o znband.o ++ ++all : cnbdr1 cnbdr2 cnbdr3 cnbdr4 \ ++ dnbdr1 dnbdr2 dnbdr3 dnbdr4 dnbdr5 dnbdr6 \ ++ dsbdr1 dsbdr2 dsbdr3 dsbdr4 dsbdr5 dsbdr6 \ ++ snbdr1 snbdr2 snbdr3 snbdr4 snbdr5 snbdr6 \ ++ ssbdr1 ssbdr2 ssbdr3 ssbdr4 ssbdr5 ssbdr6 \ ++ znbdr1 znbdr2 znbdr3 znbdr4 ++ ++.SUFFIXES: .f .o ++.f.o: ++ $(F77) -c -o $@ $< ++ ++cnbdr1 : $(cnbdr1_OBJECTS) ++ $(F77LD) -o $@ $(cnbdr1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++cnbdr2 : $(cnbdr2_OBJECTS) ++ $(F77LD) -o $@ $(cnbdr2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++cnbdr3 : $(cnbdr3_OBJECTS) ++ $(F77LD) -o $@ $(cnbdr3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++cnbdr4 : $(cnbdr4_OBJECTS) ++ $(F77LD) -o $@ $(cnbdr4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dnbdr1 : $(dnbdr1_OBJECTS) ++ $(F77LD) -o $@ $(dnbdr1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dnbdr2 : $(dnbdr2_OBJECTS) ++ $(F77LD) -o $@ $(dnbdr2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dnbdr3 : $(dnbdr3_OBJECTS) ++ $(F77LD) -o $@ $(dnbdr3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dnbdr4 : $(dnbdr4_OBJECTS) ++ $(F77LD) -o $@ $(dnbdr4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dnbdr5 : $(dnbdr5_OBJECTS) ++ $(F77LD) -o $@ $(dnbdr5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dnbdr6 : $(dnbdr6_OBJECTS) ++ $(F77LD) -o $@ $(dnbdr6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dsbdr1 : $(dsbdr1_OBJECTS) ++ $(F77LD) -o $@ $(dsbdr1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dsbdr2 : $(dsbdr2_OBJECTS) ++ $(F77LD) -o $@ $(dsbdr2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dsbdr3 : $(dsbdr3_OBJECTS) ++ $(F77LD) -o $@ $(dsbdr3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dsbdr4 : $(dsbdr4_OBJECTS) ++ $(F77LD) -o $@ $(dsbdr4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dsbdr5 : $(dsbdr5_OBJECTS) ++ $(F77LD) -o $@ $(dsbdr5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dsbdr6 : $(dsbdr6_OBJECTS) ++ $(F77LD) -o $@ $(dsbdr6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++snbdr1 : $(snbdr1_OBJECTS) ++ $(F77LD) -o $@ $(snbdr1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++snbdr2 : $(snbdr2_OBJECTS) ++ $(F77LD) -o $@ $(snbdr2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++snbdr3 : $(snbdr3_OBJECTS) ++ $(F77LD) -o $@ $(snbdr3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++snbdr4 : $(snbdr4_OBJECTS) ++ $(F77LD) -o $@ $(snbdr4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++snbdr5 : $(snbdr5_OBJECTS) ++ $(F77LD) -o $@ $(snbdr5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++snbdr6 : $(snbdr6_OBJECTS) ++ $(F77LD) -o $@ $(snbdr6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ssbdr1 : $(ssbdr1_OBJECTS) ++ $(F77LD) -o $@ $(ssbdr1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ssbdr2 : $(ssbdr2_OBJECTS) ++ $(F77LD) -o $@ $(ssbdr2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ssbdr3 : $(ssbdr3_OBJECTS) ++ $(F77LD) -o $@ $(ssbdr3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ssbdr4 : $(ssbdr4_OBJECTS) ++ $(F77LD) -o $@ $(ssbdr4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ssbdr5 : $(ssbdr5_OBJECTS) ++ $(F77LD) -o $@ $(ssbdr5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ssbdr6 : $(ssbdr6_OBJECTS) ++ $(F77LD) -o $@ $(ssbdr6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++znbdr1 : $(znbdr1_OBJECTS) ++ $(F77LD) -o $@ $(znbdr1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++znbdr2 : $(znbdr2_OBJECTS) ++ $(F77LD) -o $@ $(znbdr2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++znbdr3 : $(znbdr3_OBJECTS) ++ $(F77LD) -o $@ $(znbdr3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++znbdr4 : $(znbdr4_OBJECTS) ++ $(F77LD) -o $@ $(znbdr4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ +--- arpack-ng-3.8.0/EXAMPLES/COMPLEX/Makefile_complex_intel 1970-01-01 01:00:00.000000000 +0100 ++++ arpack-ng-3.8.0-ok/EXAMPLES/COMPLEX/Makefile_complex_intel 2021-06-30 10:36:04.496200000 +0200 +@@ -0,0 +1,59 @@ ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++# ++CC = mpicc ++CFLAGS = -g -O2 ++CPP = mpicc -E ++CPPFLAGS = ++ ++F77 = mpif77 ++FFLAGS = -g -O2 ++F77LD = $(F77) ++FGREP = /bin/grep -F ++ ++LAPACK_LIBS = -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -liomp5 -lpthread ++ ++ARPACKLIB = -L$(ARPACK_LIB) -larpack ++ ++cndrv1_OBJECTS = cndrv1.o ++cndrv2_OBJECTS = cndrv2.o ++cndrv3_OBJECTS = cndrv3.o ++cndrv4_OBJECTS = cndrv4.o ++zndrv1_OBJECTS = zndrv1.o ++zndrv2_OBJECTS = zndrv2.o ++zndrv3_OBJECTS = zndrv3.o ++zndrv4_OBJECTS = zndrv4.o ++ ++all : cndrv1 cndrv2 cndrv3 cndrv4 \ ++ zndrv1 zndrv2 zndrv3 zndrv4 ++ ++.SUFFIXES: .f .o ++.f.o: ++ $(F77) -c -o $@ $< ++ ++cndrv1 : $(cndrv1_OBJECTS) ++ $(F77LD) -o $@ $(cndrv1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++cndrv2 : $(cndrv2_OBJECTS) ++ $(F77LD) -o $@ $(cndrv2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++cndrv3 : $(cndrv3_OBJECTS) ++ $(F77LD) -o $@ $(cndrv3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++cndrv4 : $(cndrv4_OBJECTS) ++ $(F77LD) -o $@ $(cndrv4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++zndrv1 : $(zndrv1_OBJECTS) ++ $(F77LD) -o $@ $(zndrv1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++zndrv2 : $(zndrv2_OBJECTS) ++ $(F77LD) -o $@ $(zndrv2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++zndrv3 : $(zndrv3_OBJECTS) ++ $(F77LD) -o $@ $(zndrv3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++zndrv4 : $(zndrv4_OBJECTS) ++ $(F77LD) -o $@ $(zndrv4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ +--- arpack-ng-3.8.0/EXAMPLES/NONSYM/Makefile_nonsym_intel 1970-01-01 01:00:00.000000000 +0100 ++++ arpack-ng-3.8.0-ok/EXAMPLES/NONSYM/Makefile_nonsym_intel 2021-06-30 10:36:04.539153000 +0200 +@@ -0,0 +1,75 @@ ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++# ++CC = mpicc ++CFLAGS = -g -O2 ++CPP = mpicc -E ++CPPFLAGS = ++ ++F77 = mpif77 ++FFLAGS = -g -O2 ++F77LD = $(F77) ++FGREP = /bin/grep -F ++ ++LAPACK_LIBS = -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -liomp5 -lpthread ++ ++ARPACKLIB = -L$(ARPACK_LIB) -larpack ++ ++dndrv1_OBJECTS = dndrv1.o ++dndrv2_OBJECTS = dndrv2.o ++dndrv3_OBJECTS = dndrv3.o ++dndrv4_OBJECTS = dndrv4.o ++dndrv5_OBJECTS = dndrv5.o ++dndrv6_OBJECTS = dndrv6.o ++sndrv1_OBJECTS = sndrv1.o ++sndrv2_OBJECTS = sndrv2.o ++sndrv3_OBJECTS = sndrv3.o ++sndrv4_OBJECTS = sndrv4.o ++sndrv5_OBJECTS = sndrv5.o ++sndrv6_OBJECTS = sndrv6.o ++ ++all : dndrv1 dndrv2 dndrv3 dndrv4 dndrv5 dndrv6 \ ++ sndrv1 sndrv2 sndrv3 sndrv4 sndrv5 sndrv6 ++ ++.SUFFIXES: .f .o ++.f.o: ++ $(F77) -c -o $@ $< ++ ++dndrv1 : $(dndrv1_OBJECTS) ++ $(F77LD) -o $@ $(dndrv1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dndrv2 : $(dndrv2_OBJECTS) ++ $(F77LD) -o $@ $(dndrv2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dndrv3 : $(dndrv3_OBJECTS) ++ $(F77LD) -o $@ $(dndrv3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dndrv4 : $(dndrv4_OBJECTS) ++ $(F77LD) -o $@ $(dndrv4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dndrv5 : $(dndrv5_OBJECTS) ++ $(F77LD) -o $@ $(dndrv5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dndrv6 : $(dndrv6_OBJECTS) ++ $(F77LD) -o $@ $(dndrv6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++sndrv1 : $(sndrv1_OBJECTS) ++ $(F77LD) -o $@ $(sndrv1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++sndrv2 : $(sndrv2_OBJECTS) ++ $(F77LD) -o $@ $(sndrv2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++sndrv3 : $(sndrv3_OBJECTS) ++ $(F77LD) -o $@ $(sndrv3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++sndrv4 : $(sndrv4_OBJECTS) ++ $(F77LD) -o $@ $(sndrv4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++sndrv5 : $(sndrv5_OBJECTS) ++ $(F77LD) -o $@ $(sndrv5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++sndrv6 : $(sndrv6_OBJECTS) ++ $(F77LD) -o $@ $(sndrv6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ +--- arpack-ng-3.8.0/PARPACK/EXAMPLES/MPI/Makefile_parpack_intel 1970-01-01 01:00:00.000000000 +0100 ++++ arpack-ng-3.8.0-ok/PARPACK/EXAMPLES/MPI/Makefile_parpack_intel 2021-06-30 10:37:57.095101000 +0200 +@@ -0,0 +1,51 @@ ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++# ++CC = mpicc ++CFLAGS = -g -O2 ++CPP = mpicc -E ++CPPFLAGS = ++ ++F77 = mpif77 ++FFLAGS = -g -O2 ++F77LD = $(F77) ++FGREP = /bin/grep -F ++ ++LAPACK_LIBS = -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -liomp5 -lpthread ++ ++PARPACKLIB = -L$(ARPACK_LIB) -lparpack -larpack ++ ++pcndrv1_OBJECTS = pcndrv1.o ++pdndrv1_OBJECTS = pdndrv1.o ++pdndrv3_OBJECTS = pdndrv3.o ++psndrv1_OBJECTS = psndrv1.o ++psndrv3_OBJECTS = psndrv3.o ++pzndrv1_OBJECTS = pzndrv1.o ++ ++all : pcndrv1 pdndrv1 pdndrv3 \ ++ psndrv1 psndrv3 pzndrv1 ++ ++.SUFFIXES: .f .o ++.f.o: ++ $(F77) -c -o $@ $< ++ ++pcndrv1 : $(pcndrv1_OBJECTS) ++ $(F77LD) -o $@ $(pcndrv1_OBJECTS) $(PARPACKLIB) $(LAPACK_LIBS) ++ ++pdndrv1 : $(pdndrv1_OBJECTS) ++ $(F77LD) -o $@ $(pdndrv1_OBJECTS) $(PARPACKLIB) $(LAPACK_LIBS) ++ ++pdndrv3 : $(pdndrv3_OBJECTS) ++ $(F77LD) -o $@ $(pdndrv3_OBJECTS) $(PARPACKLIB) $(LAPACK_LIBS) ++ ++psndrv1 : $(psndrv1_OBJECTS) ++ $(F77LD) -o $@ $(psndrv1_OBJECTS) $(PARPACKLIB) $(LAPACK_LIBS) ++ ++psndrv3 : $(psndrv3_OBJECTS) ++ $(F77LD) -o $@ $(psndrv3_OBJECTS) $(PARPACKLIB) $(LAPACK_LIBS) ++ ++pzndrv1 : $(pzndrv1_OBJECTS) ++ $(F77LD) -o $@ $(pzndrv1_OBJECTS) $(PARPACKLIB) $(LAPACK_LIBS) ++ ++ +--- arpack-ng-3.8.0/EXAMPLES/SIMPLE/Makefile_simple_intel 1970-01-01 01:00:00.000000000 +0100 ++++ arpack-ng-3.8.0-ok/EXAMPLES/SIMPLE/Makefile_simple_intel 2021-06-30 10:36:04.541931000 +0200 +@@ -0,0 +1,51 @@ ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++# ++CC = mpicc ++CFLAGS = -g -O2 ++CPP = mpicc -E ++CPPFLAGS = ++ ++F77 = mpif77 ++FFLAGS = -g -O2 ++F77LD = $(F77) ++FGREP = /bin/grep -F ++ ++LAPACK_LIBS = -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -liomp5 -lpthread ++ ++ARPACKLIB = -L$(ARPACK_LIB) -larpack ++ ++cnsimp_OBJECTS = cnsimp.o ++dnsimp_OBJECTS = dnsimp.o ++dssimp_OBJECTS = dssimp.o ++snsimp_OBJECTS = snsimp.o ++sssimp_OBJECTS = sssimp.o ++znsimp_OBJECTS = znsimp.o ++ ++all : cnsimp dnsimp dssimp \ ++ snsimp sssimp znsimp ++ ++.SUFFIXES: .f .o ++.f.o: ++ $(F77) -c -o $@ $< ++ ++cnsimp : $(cnsimp_OBJECTS) ++ $(F77LD) -o $@ $(cnsimp_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dnsimp : $(dnsimp_OBJECTS) ++ $(F77LD) -o $@ $(dnsimp_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dssimp : $(dssimp_OBJECTS) ++ $(F77LD) -o $@ $(dssimp_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++snsimp : $(snsimp_OBJECTS) ++ $(F77LD) -o $@ $(snsimp_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++sssimp : $(sssimp_OBJECTS) ++ $(F77LD) -o $@ $(sssimp_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++znsimp : $(znsimp_OBJECTS) ++ $(F77LD) -o $@ $(znsimp_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ +--- arpack-ng-3.8.0/EXAMPLES/SVD/Makefile_svd_intel 1970-01-01 01:00:00.000000000 +0100 ++++ arpack-ng-3.8.0-ok/EXAMPLES/SVD/Makefile_svd_intel 2021-06-30 10:36:04.546102000 +0200 +@@ -0,0 +1,36 @@ ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++# ++CC = mpicc ++CFLAGS = -g -O2 ++CPP = mpicc -E ++CPPFLAGS = ++ ++F77 = mpif77 ++FFLAGS = -g -O2 ++F77LD = $(F77) ++FGREP = /bin/grep -F ++ ++LAPACK_LIBS = -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -liomp5 -lpthread ++ ++ARPACKLIB = -L$(ARPACK_LIB) -larpack ++ ++dsvd_OBJECTS = dsvd.o ++ssvd_OBJECTS = ssvd.o ++ ++all : dsvd \ ++ ssvd ++ ++.SUFFIXES: .f .o ++.f.o: ++ $(F77) -c -o $@ $< ++ ++ ++dsvd : $(dsvd_OBJECTS) ++ $(F77LD) -o $@ $(dsvd_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ssvd : $(ssvd_OBJECTS) ++ $(F77LD) -o $@ $(ssvd_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ +--- arpack-ng-3.8.0/EXAMPLES/SYM/Makefile_sym_intel 1970-01-01 01:00:00.000000000 +0100 ++++ arpack-ng-3.8.0-ok/EXAMPLES/SYM/Makefile_sym_intel 2021-06-30 10:36:04.549670000 +0200 +@@ -0,0 +1,75 @@ ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++# ++CC = mpicc ++CFLAGS = -g -O2 ++CPP = mpicc -E ++CPPFLAGS = ++ ++F77 = mpif77 ++FFLAGS = -g -O2 ++F77LD = $(F77) ++FGREP = /bin/grep -F ++ ++LAPACK_LIBS = -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -liomp5 -lpthread ++ ++ARPACKLIB = -L$(ARPACK_LIB) -larpack ++ ++dsdrv1_OBJECTS = dsdrv1.o ++dsdrv2_OBJECTS = dsdrv2.o ++dsdrv3_OBJECTS = dsdrv3.o ++dsdrv4_OBJECTS = dsdrv4.o ++dsdrv5_OBJECTS = dsdrv5.o ++dsdrv6_OBJECTS = dsdrv6.o ++ssdrv1_OBJECTS = ssdrv1.o ++ssdrv2_OBJECTS = ssdrv2.o ++ssdrv3_OBJECTS = ssdrv3.o ++ssdrv4_OBJECTS = ssdrv4.o ++ssdrv5_OBJECTS = ssdrv5.o ++ssdrv6_OBJECTS = ssdrv6.o ++ ++all : dsdrv1 dsdrv2 dsdrv3 dsdrv4 dsdrv5 dsdrv6 \ ++ ssdrv1 ssdrv2 ssdrv3 ssdrv4 ssdrv5 ssdrv6 ++ ++.SUFFIXES: .f .o ++.f.o: ++ $(F77) -c -o $@ $< ++ ++dsdrv1 : $(dsdrv1_OBJECTS) ++ $(F77LD) -o $@ $(dsdrv1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dsdrv2 : $(dsdrv2_OBJECTS) ++ $(F77LD) -o $@ $(dsdrv2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dsdrv3 : $(dsdrv3_OBJECTS) ++ $(F77LD) -o $@ $(dsdrv3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dsdrv4 : $(dsdrv4_OBJECTS) ++ $(F77LD) -o $@ $(dsdrv4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dsdrv5 : $(dsdrv5_OBJECTS) ++ $(F77LD) -o $@ $(dsdrv5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dsdrv6 : $(dsdrv6_OBJECTS) ++ $(F77LD) -o $@ $(dsdrv6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ssdrv1 : $(ssdrv1_OBJECTS) ++ $(F77LD) -o $@ $(ssdrv1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ssdrv2 : $(ssdrv2_OBJECTS) ++ $(F77LD) -o $@ $(ssdrv2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ssdrv3 : $(ssdrv3_OBJECTS) ++ $(F77LD) -o $@ $(ssdrv3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ssdrv4 : $(ssdrv4_OBJECTS) ++ $(F77LD) -o $@ $(ssdrv4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ssdrv5 : $(ssdrv5_OBJECTS) ++ $(F77LD) -o $@ $(ssdrv5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ssdrv6 : $(ssdrv6_OBJECTS) ++ $(F77LD) -o $@ $(ssdrv6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ diff --git a/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-install-arpack-examples_gpsmkl.patch b/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-install-arpack-examples_gpsmkl.patch new file mode 100644 index 0000000000000000000000000000000000000000..cb08b9ea9053080a2e005fe6cd8b7e318625133b --- /dev/null +++ b/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-install-arpack-examples_gpsmkl.patch @@ -0,0 +1,538 @@ +--- arpack-ng-3.8.0/PARPACK_CHANGES 2021-06-30 09:57:39.220219000 +0200 ++++ arpack-ng-3.8.0-ok/PARPACK_CHANGES 2021-06-30 10:25:30.148960874 +0200 +@@ -334,4 +334,6 @@ + 36. 09/18/2016 p*apps.f and p*aitr.f contain condition to fetch machine epsilon. + When different p*aupd call use communicator with different number of CPU these + conditions cause deadlock. Variables inside conditions are moved to global +- to be reset each first iteration +\ No newline at end of file ++ to be reset each first iteration ++ ++ +--- arpack-ng-3.8.0/EXAMPLES/BAND/Makefile_band 1970-01-01 01:00:00.000000000 +0100 ++++ arpack-ng-3.8.0-ok/EXAMPLES/BAND/Makefile_band 2021-06-30 10:36:04.461587000 +0200 +@@ -0,0 +1,159 @@ ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++# ++CC = mpicc ++CFLAGS = -g -O2 ++CPP = mpicc -E ++CPPFLAGS = ++ ++F77 = mpif77 ++FFLAGS = -g -O2 ++F77LD = $(F77) ++FGREP = /bin/grep -F ++ ++LAPACK_LIBS = -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lgomp -lpthread ++ ++ARPACKLIB = -L$(ARPACK_LIB) -larpack ++ ++cnbdr1_OBJECTS = cnbdr1.o cnband.o ++cnbdr2_OBJECTS = cnbdr2.o cnband.o ++cnbdr3_OBJECTS = cnbdr3.o cnband.o ++cnbdr4_OBJECTS = cnbdr4.o cnband.o ++dnbdr1_OBJECTS = dnbdr1.o dnband.o ++dnbdr2_OBJECTS = dnbdr2.o dnband.o ++dnbdr3_OBJECTS = dnbdr3.o dnband.o ++dnbdr4_OBJECTS = dnbdr4.o dnband.o ++dnbdr5_OBJECTS = dnbdr5.o dnband.o ++dnbdr6_OBJECTS = dnbdr6.o dnband.o ++dsbdr1_OBJECTS = dsbdr1.o dsband.o ++dsbdr2_OBJECTS = dsbdr2.o dsband.o ++dsbdr3_OBJECTS = dsbdr3.o dsband.o ++dsbdr4_OBJECTS = dsbdr4.o dsband.o ++dsbdr5_OBJECTS = dsbdr5.o dsband.o ++dsbdr6_OBJECTS = dsbdr6.o dsband.o ++snbdr1_OBJECTS = snbdr1.o snband.o ++snbdr2_OBJECTS = snbdr2.o snband.o ++snbdr3_OBJECTS = snbdr3.o snband.o ++snbdr4_OBJECTS = snbdr4.o snband.o ++snbdr5_OBJECTS = snbdr5.o snband.o ++snbdr6_OBJECTS = snbdr6.o snband.o ++ssbdr1_OBJECTS = ssbdr1.o ssband.o ++ssbdr2_OBJECTS = ssbdr2.o ssband.o ++ssbdr3_OBJECTS = ssbdr3.o ssband.o ++ssbdr4_OBJECTS = ssbdr4.o ssband.o ++ssbdr5_OBJECTS = ssbdr5.o ssband.o ++ssbdr6_OBJECTS = ssbdr6.o ssband.o ++znbdr1_OBJECTS = znbdr1.o znband.o ++znbdr2_OBJECTS = znbdr2.o znband.o ++znbdr3_OBJECTS = znbdr3.o znband.o ++znbdr4_OBJECTS = znbdr4.o znband.o ++ ++all : cnbdr1 cnbdr2 cnbdr3 cnbdr4 \ ++ dnbdr1 dnbdr2 dnbdr3 dnbdr4 dnbdr5 dnbdr6 \ ++ dsbdr1 dsbdr2 dsbdr3 dsbdr4 dsbdr5 dsbdr6 \ ++ snbdr1 snbdr2 snbdr3 snbdr4 snbdr5 snbdr6 \ ++ ssbdr1 ssbdr2 ssbdr3 ssbdr4 ssbdr5 ssbdr6 \ ++ znbdr1 znbdr2 znbdr3 znbdr4 ++ ++.SUFFIXES: .f .o ++.f.o: ++ $(F77) -c -o $@ $< ++ ++cnbdr1 : $(cnbdr1_OBJECTS) ++ $(F77LD) -o $@ $(cnbdr1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++cnbdr2 : $(cnbdr2_OBJECTS) ++ $(F77LD) -o $@ $(cnbdr2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++cnbdr3 : $(cnbdr3_OBJECTS) ++ $(F77LD) -o $@ $(cnbdr3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++cnbdr4 : $(cnbdr4_OBJECTS) ++ $(F77LD) -o $@ $(cnbdr4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dnbdr1 : $(dnbdr1_OBJECTS) ++ $(F77LD) -o $@ $(dnbdr1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dnbdr2 : $(dnbdr2_OBJECTS) ++ $(F77LD) -o $@ $(dnbdr2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dnbdr3 : $(dnbdr3_OBJECTS) ++ $(F77LD) -o $@ $(dnbdr3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dnbdr4 : $(dnbdr4_OBJECTS) ++ $(F77LD) -o $@ $(dnbdr4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dnbdr5 : $(dnbdr5_OBJECTS) ++ $(F77LD) -o $@ $(dnbdr5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dnbdr6 : $(dnbdr6_OBJECTS) ++ $(F77LD) -o $@ $(dnbdr6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dsbdr1 : $(dsbdr1_OBJECTS) ++ $(F77LD) -o $@ $(dsbdr1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dsbdr2 : $(dsbdr2_OBJECTS) ++ $(F77LD) -o $@ $(dsbdr2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dsbdr3 : $(dsbdr3_OBJECTS) ++ $(F77LD) -o $@ $(dsbdr3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dsbdr4 : $(dsbdr4_OBJECTS) ++ $(F77LD) -o $@ $(dsbdr4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dsbdr5 : $(dsbdr5_OBJECTS) ++ $(F77LD) -o $@ $(dsbdr5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dsbdr6 : $(dsbdr6_OBJECTS) ++ $(F77LD) -o $@ $(dsbdr6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++snbdr1 : $(snbdr1_OBJECTS) ++ $(F77LD) -o $@ $(snbdr1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++snbdr2 : $(snbdr2_OBJECTS) ++ $(F77LD) -o $@ $(snbdr2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++snbdr3 : $(snbdr3_OBJECTS) ++ $(F77LD) -o $@ $(snbdr3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++snbdr4 : $(snbdr4_OBJECTS) ++ $(F77LD) -o $@ $(snbdr4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++snbdr5 : $(snbdr5_OBJECTS) ++ $(F77LD) -o $@ $(snbdr5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++snbdr6 : $(snbdr6_OBJECTS) ++ $(F77LD) -o $@ $(snbdr6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ssbdr1 : $(ssbdr1_OBJECTS) ++ $(F77LD) -o $@ $(ssbdr1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ssbdr2 : $(ssbdr2_OBJECTS) ++ $(F77LD) -o $@ $(ssbdr2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ssbdr3 : $(ssbdr3_OBJECTS) ++ $(F77LD) -o $@ $(ssbdr3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ssbdr4 : $(ssbdr4_OBJECTS) ++ $(F77LD) -o $@ $(ssbdr4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ssbdr5 : $(ssbdr5_OBJECTS) ++ $(F77LD) -o $@ $(ssbdr5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ssbdr6 : $(ssbdr6_OBJECTS) ++ $(F77LD) -o $@ $(ssbdr6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++znbdr1 : $(znbdr1_OBJECTS) ++ $(F77LD) -o $@ $(znbdr1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++znbdr2 : $(znbdr2_OBJECTS) ++ $(F77LD) -o $@ $(znbdr2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++znbdr3 : $(znbdr3_OBJECTS) ++ $(F77LD) -o $@ $(znbdr3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++znbdr4 : $(znbdr4_OBJECTS) ++ $(F77LD) -o $@ $(znbdr4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ +--- arpack-ng-3.8.0/EXAMPLES/COMPLEX/Makefile_complex 1970-01-01 01:00:00.000000000 +0100 ++++ arpack-ng-3.8.0-ok/EXAMPLES/COMPLEX/Makefile_complex 2021-06-30 10:36:04.494505000 +0200 +@@ -0,0 +1,59 @@ ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++# ++CC = mpicc ++CFLAGS = -g -O2 ++CPP = mpicc -E ++CPPFLAGS = ++ ++F77 = mpif77 ++FFLAGS = -g -O2 ++F77LD = $(F77) ++FGREP = /bin/grep -F ++ ++LAPACK_LIBS = -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lgomp -lpthread ++ ++ARPACKLIB = -L$(ARPACK_LIB) -larpack ++ ++cndrv1_OBJECTS = cndrv1.o ++cndrv2_OBJECTS = cndrv2.o ++cndrv3_OBJECTS = cndrv3.o ++cndrv4_OBJECTS = cndrv4.o ++zndrv1_OBJECTS = zndrv1.o ++zndrv2_OBJECTS = zndrv2.o ++zndrv3_OBJECTS = zndrv3.o ++zndrv4_OBJECTS = zndrv4.o ++ ++all : cndrv1 cndrv2 cndrv3 cndrv4 \ ++ zndrv1 zndrv2 zndrv3 zndrv4 ++ ++.SUFFIXES: .f .o ++.f.o: ++ $(F77) -c -o $@ $< ++ ++cndrv1 : $(cndrv1_OBJECTS) ++ $(F77LD) -o $@ $(cndrv1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++cndrv2 : $(cndrv2_OBJECTS) ++ $(F77LD) -o $@ $(cndrv2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++cndrv3 : $(cndrv3_OBJECTS) ++ $(F77LD) -o $@ $(cndrv3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++cndrv4 : $(cndrv4_OBJECTS) ++ $(F77LD) -o $@ $(cndrv4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++zndrv1 : $(zndrv1_OBJECTS) ++ $(F77LD) -o $@ $(zndrv1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++zndrv2 : $(zndrv2_OBJECTS) ++ $(F77LD) -o $@ $(zndrv2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++zndrv3 : $(zndrv3_OBJECTS) ++ $(F77LD) -o $@ $(zndrv3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++zndrv4 : $(zndrv4_OBJECTS) ++ $(F77LD) -o $@ $(zndrv4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ +--- arpack-ng-3.8.0/EXAMPLES/NONSYM/Makefile_nonsym 1970-01-01 01:00:00.000000000 +0100 ++++ arpack-ng-3.8.0-ok/EXAMPLES/NONSYM/Makefile_nonsym 2021-06-30 10:36:04.498741000 +0200 +@@ -0,0 +1,75 @@ ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++# ++CC = mpicc ++CFLAGS = -g -O2 ++CPP = mpicc -E ++CPPFLAGS = ++ ++F77 = mpif77 ++FFLAGS = -g -O2 ++F77LD = $(F77) ++FGREP = /bin/grep -F ++ ++LAPACK_LIBS = -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lgomp -lpthread ++ ++ARPACKLIB = -L$(ARPACK_LIB) -larpack ++ ++dndrv1_OBJECTS = dndrv1.o ++dndrv2_OBJECTS = dndrv2.o ++dndrv3_OBJECTS = dndrv3.o ++dndrv4_OBJECTS = dndrv4.o ++dndrv5_OBJECTS = dndrv5.o ++dndrv6_OBJECTS = dndrv6.o ++sndrv1_OBJECTS = sndrv1.o ++sndrv2_OBJECTS = sndrv2.o ++sndrv3_OBJECTS = sndrv3.o ++sndrv4_OBJECTS = sndrv4.o ++sndrv5_OBJECTS = sndrv5.o ++sndrv6_OBJECTS = sndrv6.o ++ ++all : dndrv1 dndrv2 dndrv3 dndrv4 dndrv5 dndrv6 \ ++ sndrv1 sndrv2 sndrv3 sndrv4 sndrv5 sndrv6 ++ ++.SUFFIXES: .f .o ++.f.o: ++ $(F77) -c -o $@ $< ++ ++dndrv1 : $(dndrv1_OBJECTS) ++ $(F77LD) -o $@ $(dndrv1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dndrv2 : $(dndrv2_OBJECTS) ++ $(F77LD) -o $@ $(dndrv2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dndrv3 : $(dndrv3_OBJECTS) ++ $(F77LD) -o $@ $(dndrv3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dndrv4 : $(dndrv4_OBJECTS) ++ $(F77LD) -o $@ $(dndrv4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dndrv5 : $(dndrv5_OBJECTS) ++ $(F77LD) -o $@ $(dndrv5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dndrv6 : $(dndrv6_OBJECTS) ++ $(F77LD) -o $@ $(dndrv6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++sndrv1 : $(sndrv1_OBJECTS) ++ $(F77LD) -o $@ $(sndrv1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++sndrv2 : $(sndrv2_OBJECTS) ++ $(F77LD) -o $@ $(sndrv2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++sndrv3 : $(sndrv3_OBJECTS) ++ $(F77LD) -o $@ $(sndrv3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++sndrv4 : $(sndrv4_OBJECTS) ++ $(F77LD) -o $@ $(sndrv4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++sndrv5 : $(sndrv5_OBJECTS) ++ $(F77LD) -o $@ $(sndrv5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++sndrv6 : $(sndrv6_OBJECTS) ++ $(F77LD) -o $@ $(sndrv6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ +--- arpack-ng-3.8.0/PARPACK/EXAMPLES/MPI/Makefile_parpack 1970-01-01 01:00:00.000000000 +0100 ++++ arpack-ng-3.8.0-ok/PARPACK/EXAMPLES/MPI/Makefile_parpack 2021-06-30 10:37:57.093198000 +0200 +@@ -0,0 +1,51 @@ ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++# ++CC = mpicc ++CFLAGS = -g -O2 ++CPP = mpicc -E ++CPPFLAGS = ++ ++F77 = mpif77 ++FFLAGS = -g -O2 ++F77LD = $(F77) ++FGREP = /bin/grep -F ++ ++LAPACK_LIBS = -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lgomp -lpthread ++ ++PARPACKLIB = -L$(ARPACK_LIB) -lparpack -larpack ++ ++pcndrv1_OBJECTS = pcndrv1.o ++pdndrv1_OBJECTS = pdndrv1.o ++pdndrv3_OBJECTS = pdndrv3.o ++psndrv1_OBJECTS = psndrv1.o ++psndrv3_OBJECTS = psndrv3.o ++pzndrv1_OBJECTS = pzndrv1.o ++ ++all : pcndrv1 pdndrv1 pdndrv3 \ ++ psndrv1 psndrv3 pzndrv1 ++ ++.SUFFIXES: .f .o ++.f.o: ++ $(F77) -c -o $@ $< ++ ++pcndrv1 : $(pcndrv1_OBJECTS) ++ $(F77LD) -o $@ $(pcndrv1_OBJECTS) $(PARPACKLIB) $(LAPACK_LIBS) ++ ++pdndrv1 : $(pdndrv1_OBJECTS) ++ $(F77LD) -o $@ $(pdndrv1_OBJECTS) $(PARPACKLIB) $(LAPACK_LIBS) ++ ++pdndrv3 : $(pdndrv3_OBJECTS) ++ $(F77LD) -o $@ $(pdndrv3_OBJECTS) $(PARPACKLIB) $(LAPACK_LIBS) ++ ++psndrv1 : $(psndrv1_OBJECTS) ++ $(F77LD) -o $@ $(psndrv1_OBJECTS) $(PARPACKLIB) $(LAPACK_LIBS) ++ ++psndrv3 : $(psndrv3_OBJECTS) ++ $(F77LD) -o $@ $(psndrv3_OBJECTS) $(PARPACKLIB) $(LAPACK_LIBS) ++ ++pzndrv1 : $(pzndrv1_OBJECTS) ++ $(F77LD) -o $@ $(pzndrv1_OBJECTS) $(PARPACKLIB) $(LAPACK_LIBS) ++ ++ +--- arpack-ng-3.8.0/EXAMPLES/SIMPLE/Makefile_simple 1970-01-01 01:00:00.000000000 +0100 ++++ arpack-ng-3.8.0-ok/EXAMPLES/SIMPLE/Makefile_simple 2021-06-30 10:36:04.541054000 +0200 +@@ -0,0 +1,51 @@ ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++# ++CC = mpicc ++CFLAGS = -g -O2 ++CPP = mpicc -E ++CPPFLAGS = ++ ++F77 = mpif77 ++FFLAGS = -g -O2 ++F77LD = $(F77) ++FGREP = /bin/grep -F ++ ++LAPACK_LIBS = -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lgomp -lpthread ++ ++ARPACKLIB = -L$(ARPACK_LIB) -larpack ++ ++cnsimp_OBJECTS = cnsimp.o ++dnsimp_OBJECTS = dnsimp.o ++dssimp_OBJECTS = dssimp.o ++snsimp_OBJECTS = snsimp.o ++sssimp_OBJECTS = sssimp.o ++znsimp_OBJECTS = znsimp.o ++ ++all : cnsimp dnsimp dssimp \ ++ snsimp sssimp znsimp ++ ++.SUFFIXES: .f .o ++.f.o: ++ $(F77) -c -o $@ $< ++ ++cnsimp : $(cnsimp_OBJECTS) ++ $(F77LD) -o $@ $(cnsimp_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dnsimp : $(dnsimp_OBJECTS) ++ $(F77LD) -o $@ $(dnsimp_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dssimp : $(dssimp_OBJECTS) ++ $(F77LD) -o $@ $(dssimp_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++snsimp : $(snsimp_OBJECTS) ++ $(F77LD) -o $@ $(snsimp_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++sssimp : $(sssimp_OBJECTS) ++ $(F77LD) -o $@ $(sssimp_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++znsimp : $(znsimp_OBJECTS) ++ $(F77LD) -o $@ $(znsimp_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ +--- arpack-ng-3.8.0/EXAMPLES/SVD/Makefile_svd 1970-01-01 01:00:00.000000000 +0100 ++++ arpack-ng-3.8.0-ok/EXAMPLES/SVD/Makefile_svd 2021-06-30 10:36:04.545031000 +0200 +@@ -0,0 +1,36 @@ ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++# ++CC = mpicc ++CFLAGS = -g -O2 ++CPP = mpicc -E ++CPPFLAGS = ++ ++F77 = mpif77 ++FFLAGS = -g -O2 ++F77LD = $(F77) ++FGREP = /bin/grep -F ++ ++LAPACK_LIBS = -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lgomp -lpthread ++ ++ARPACKLIB = -L$(ARPACK_LIB) -larpack ++ ++dsvd_OBJECTS = dsvd.o ++ssvd_OBJECTS = ssvd.o ++ ++all : dsvd \ ++ ssvd ++ ++.SUFFIXES: .f .o ++.f.o: ++ $(F77) -c -o $@ $< ++ ++ ++dsvd : $(dsvd_OBJECTS) ++ $(F77LD) -o $@ $(dsvd_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ssvd : $(ssvd_OBJECTS) ++ $(F77LD) -o $@ $(ssvd_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ +--- arpack-ng-3.8.0/EXAMPLES/SYM/Makefile_sym 1970-01-01 01:00:00.000000000 +0100 ++++ arpack-ng-3.8.0-ok/EXAMPLES/SYM/Makefile_sym 2021-06-30 10:36:04.548174000 +0200 +@@ -0,0 +1,75 @@ ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++# ++CC = mpicc ++CFLAGS = -g -O2 ++CPP = mpicc -E ++CPPFLAGS = ++ ++F77 = mpif77 ++FFLAGS = -g -O2 ++F77LD = $(F77) ++FGREP = /bin/grep -F ++ ++LAPACK_LIBS = -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lgomp -lpthread ++ ++ARPACKLIB = -L$(ARPACK_LIB) -larpack ++ ++dsdrv1_OBJECTS = dsdrv1.o ++dsdrv2_OBJECTS = dsdrv2.o ++dsdrv3_OBJECTS = dsdrv3.o ++dsdrv4_OBJECTS = dsdrv4.o ++dsdrv5_OBJECTS = dsdrv5.o ++dsdrv6_OBJECTS = dsdrv6.o ++ssdrv1_OBJECTS = ssdrv1.o ++ssdrv2_OBJECTS = ssdrv2.o ++ssdrv3_OBJECTS = ssdrv3.o ++ssdrv4_OBJECTS = ssdrv4.o ++ssdrv5_OBJECTS = ssdrv5.o ++ssdrv6_OBJECTS = ssdrv6.o ++ ++all : dsdrv1 dsdrv2 dsdrv3 dsdrv4 dsdrv5 dsdrv6 \ ++ ssdrv1 ssdrv2 ssdrv3 ssdrv4 ssdrv5 ssdrv6 ++ ++.SUFFIXES: .f .o ++.f.o: ++ $(F77) -c -o $@ $< ++ ++dsdrv1 : $(dsdrv1_OBJECTS) ++ $(F77LD) -o $@ $(dsdrv1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dsdrv2 : $(dsdrv2_OBJECTS) ++ $(F77LD) -o $@ $(dsdrv2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dsdrv3 : $(dsdrv3_OBJECTS) ++ $(F77LD) -o $@ $(dsdrv3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dsdrv4 : $(dsdrv4_OBJECTS) ++ $(F77LD) -o $@ $(dsdrv4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dsdrv5 : $(dsdrv5_OBJECTS) ++ $(F77LD) -o $@ $(dsdrv5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++dsdrv6 : $(dsdrv6_OBJECTS) ++ $(F77LD) -o $@ $(dsdrv6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ssdrv1 : $(ssdrv1_OBJECTS) ++ $(F77LD) -o $@ $(ssdrv1_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ssdrv2 : $(ssdrv2_OBJECTS) ++ $(F77LD) -o $@ $(ssdrv2_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ssdrv3 : $(ssdrv3_OBJECTS) ++ $(F77LD) -o $@ $(ssdrv3_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ssdrv4 : $(ssdrv4_OBJECTS) ++ $(F77LD) -o $@ $(ssdrv4_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ssdrv5 : $(ssdrv5_OBJECTS) ++ $(F77LD) -o $@ $(ssdrv5_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ssdrv6 : $(ssdrv6_OBJECTS) ++ $(F77LD) -o $@ $(ssdrv6_OBJECTS) $(ARPACKLIB) $(LAPACK_LIBS) ++ ++ diff --git a/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-intel-para-2022a.eb b/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-intel-para-2022a.eb new file mode 100644 index 0000000000000000000000000000000000000000..eaa66876668de0ab0cc40e9b9f9847d02aca59ab --- /dev/null +++ b/Golden_Repo/a/ARPACK-NG/ARPACK-NG-3.8.0-intel-para-2022a.eb @@ -0,0 +1,62 @@ +easyblock = 'ConfigureMake' + +name = 'ARPACK-NG' + +version = '3.8.0' + +homepage = 'http://forge.scilab.org/index.php/p/arpack-ng/' + +description = """ARPACK-NG is a collection of Fortran77 subroutines designed to solve large scale eigenvalue problems. + +libarpack.a and libparpack.a have been installed in $EBROOTARPACKMINNG. + +In addition the variables ARPACK_ROOT, ARPACK_LIB, PARPACK_ROOT, and PARPACK_LIB are set. + +""" + +examples = 'Examples can be found in $ARPACK_ROOT/EXAMPLES' + +toolchain = {'name': 'intel-para', 'version': '2022a'} + +toolchainopts = {'opt': True, 'optarch': True, 'pic': True, 'usempi': True} + +source_urls = ['https://github.com/opencollab/arpack-ng/archive/'] + +sources = ["%(version)s.tar.gz"] + +patches = [ + 'ARPACK-NG-%(version)s-install-arpack-examples.patch' +] + +checksums = [ + 'ada5aeb3878874383307239c9235b716a8a170c6d096a6625bfd529844df003d', # 3.8.0.tar.gz + 'bd5a1d29d8ca0ac8ab87e2f78d06d4fd13ee8ae22ad9b12d36512f20eeb86f62', # ARPACK-NG-3.8.0-install-arpack-examples.patch +] + +builddependencies = [ + ('Autotools', '20220317'), + ('pkgconf', '1.8.0') +] + +preconfigopts = 'sh bootstrap &&' + +configopts = '--enable-mpi --with-pic --enable-static --with-blas="$LIBBLAS" --with-lapack="$LIBLAPACK"' + +postinstallcmds = [ + "cp -r EXAMPLES %(installdir)s/EXAMPLES", + "cp -r PARPACK/EXAMPLES/MPI %(installdir)s/EXAMPLES/PARPACK", +] + +sanity_check_paths = { + 'files': ["lib/libarpack.a", "lib/libarpack.%s" % SHLIB_EXT, "lib/libparpack.a", "lib/libparpack.%s" % SHLIB_EXT], + 'dirs': [] +} + +modextravars = { + 'ARPACK_ROOT': '%(installdir)s', + 'PARPACK_ROOT': '%(installdir)s', + 'ARPACK_LIB': '%(installdir)s/lib', + 'PARPACK_LIB': '%(installdir)s/lib' +} + +moduleclass = 'numlib' diff --git a/Golden_Repo/c/Catalyst/Catalyst-2.0.0-rc3-foss-2022a.eb b/Golden_Repo/c/Catalyst/Catalyst-2.0.0-rc3-foss-2022a.eb new file mode 100644 index 0000000000000000000000000000000000000000..21eaff1368daa7838ce3493da7863aa81997a027 --- /dev/null +++ b/Golden_Repo/c/Catalyst/Catalyst-2.0.0-rc3-foss-2022a.eb @@ -0,0 +1,41 @@ +easyblock = 'CMakeMake' + +name = 'Catalyst' +version = '2.0.0-rc3' + +homepage = "https://gitlab.kitware.com/paraview/catalyst/" +description = """ +Catalyst is an API specification developed for simulations +(and other scientific data producers) +to analyze and visualize data in situ. +""" + +toolchain = {'name': 'foss', 'version': '2022a'} +toolchainopts = {'pic': True, 'usempi': True} + +source_urls = [('https://gitlab.kitware.com/paraview/catalyst/-/archive/v%(version)s/')] +sources = [('catalyst-v%(version)s.tar.gz')] +checksums = ['8862bd0a4d0be2176b4272f9affda1ea4e5092087acbb99a2fe2621c33834e05'] + +builddependencies = [ + ('CMake', '3.23.1'), + ('pkgconf', '1.8.0'), +] + +dependencies = [] + +separate_build_dir = True + +# --- general settings --- # +configopts = '-DCMAKE_VERBOSE_MAKEFILE=ON ' +configopts += '-DCATALYST_BUILD_TOOLS=ON ' +configopts += '-DCATALYST_USE_MPI=ON ' + +# postinstallcmds = [] + +sanity_check_paths = { + 'files': ['lib/libcatalyst.so'], + 'dirs': ['include/', 'lib'], +} + +moduleclass = 'vis' diff --git a/Golden_Repo/c/Catalyst/Catalyst-2.0.0-rc3-gpsmkl-2022a.eb b/Golden_Repo/c/Catalyst/Catalyst-2.0.0-rc3-gpsmkl-2022a.eb new file mode 100644 index 0000000000000000000000000000000000000000..1dde871ba337a511525a8b718aefa3fefb6b9e36 --- /dev/null +++ b/Golden_Repo/c/Catalyst/Catalyst-2.0.0-rc3-gpsmkl-2022a.eb @@ -0,0 +1,41 @@ +easyblock = 'CMakeMake' + +name = 'Catalyst' +version = '2.0.0-rc3' + +homepage = "https://gitlab.kitware.com/paraview/catalyst/" +description = """ +Catalyst is an API specification developed for simulations +(and other scientific data producers) +to analyze and visualize data in situ. +""" + +toolchain = {'name': 'gpsmkl', 'version': '2022a'} +toolchainopts = {'pic': True, 'usempi': True} + +source_urls = [('https://gitlab.kitware.com/paraview/catalyst/-/archive/v%(version)s/')] +sources = [('catalyst-v%(version)s.tar.gz')] +checksums = ['8862bd0a4d0be2176b4272f9affda1ea4e5092087acbb99a2fe2621c33834e05'] + +builddependencies = [ + ('CMake', '3.23.1'), + ('pkgconf', '1.8.0'), +] + +dependencies = [] + +separate_build_dir = True + +# --- general settings --- # +configopts = '-DCMAKE_VERBOSE_MAKEFILE=ON ' +configopts += '-DCATALYST_BUILD_TOOLS=ON ' +configopts += '-DCATALYST_USE_MPI=ON ' + +# postinstallcmds = [] + +sanity_check_paths = { + 'files': ['lib/libcatalyst.so'], + 'dirs': ['include/', 'lib'], +} + +moduleclass = 'vis' diff --git a/Golden_Repo/h/h5py/h5py-3.7.0-gpsmpi-2022a.eb b/Golden_Repo/h/h5py/h5py-3.7.0-gpsmpi-2022a.eb new file mode 100644 index 0000000000000000000000000000000000000000..c615f7c6fd948d08b2d05eb1179a020164d5645c --- /dev/null +++ b/Golden_Repo/h/h5py/h5py-3.7.0-gpsmpi-2022a.eb @@ -0,0 +1,35 @@ +easyblock = 'PythonPackage' + +name = 'h5py' +version = '3.7.0' + +homepage = 'https://www.h5py.org/' +description = """HDF5 for Python (h5py) is a general-purpose Python interface to the Hierarchical Data Format library, + version 5. HDF5 is a versatile, mature scientific software library designed for the fast, flexible storage of enormous + amounts of data.""" + +toolchain = {'name': 'gpsmpi', 'version': '2022a'} +toolchainopts = {'usempi': True} + +sources = [SOURCE_TAR_GZ] +checksums = ['3fcf37884383c5da64846ab510190720027dca0768def34dd8dcb659dbe5cbf3'] + +builddependencies = [('pkgconfig', '1.5.5', '-python')] + +dependencies = [ + ('Python', '3.10.4'), + ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')), + ('HDF5', '1.12.2'), + ('mpi4py', '3.1.4'), +] + +use_pip = True +sanity_pip_check = True +download_dep_fail = True + +# h5py's setup.py will disable setup_requires if H5PY_SETUP_REQUIRES is set to 0 +# without this environment variable, pip will fetch the minimum numpy version h5py supports during install, +# even though SciPy-bundle provides a newer version that satisfies h5py's install_requires dependency. +preinstallopts = 'HDF5_MPI=ON HDF5_DIR="$EBROOTHDF5" H5PY_SETUP_REQUIRES=0 ' + +moduleclass = 'data' diff --git a/Golden_Repo/i/ITK/ITK-5.2.1-foss-2022a.eb b/Golden_Repo/i/ITK/ITK-5.2.1-foss-2022a.eb new file mode 100644 index 0000000000000000000000000000000000000000..7b3c4dc99f3a94e29e4733fec9ff81134f360776 --- /dev/null +++ b/Golden_Repo/i/ITK/ITK-5.2.1-foss-2022a.eb @@ -0,0 +1,80 @@ +easyblock = 'CMakeMake' + +name = 'ITK' +version = '5.2.1' + +homepage = 'https://itk.org' +description = """Insight Segmentation and Registration Toolkit (ITK) provides + an extensive suite of software tools for registering and segmenting + multidimensional imaging data.""" + +toolchain = {'name': 'foss', 'version': '2022a'} +toolchainopts = {'pic': True, 'cstd': 'c++11'} + +github_account = 'InsightSoftwareConsortium' +source_urls = [GITHUB_SOURCE] +sources = ['v%(version)s.tar.gz'] +checksums = ['6022b2b64624b8bcec3333fe48d5f74ff6ebceb3bdf98258ba7d7fbbc76b99ab'] + +builddependencies = [ + ('binutils', '2.38'), + ('CMake', '3.23.1'), + ('Bison', '3.8.2'), + ('Eigen', '3.4.0'), + ('pkgconf', '1.8.0'), + ('Perl', '5.34.1'), +] + +dependencies = [ + ('Python', '3.10.4'), + ('expat', '2.4.8'), + ('HDF5', '1.12.2'), + ('libjpeg-turbo', '2.1.3'), + ('libpng', '1.6.37'), + ('LibTIFF', '4.3.0'), + ('VTK', '9.2.5'), + ('zlib', '1.2.12'), + ('SWIG', '4.0.2',), + ('FFTW', '3.3.10'), + ('double-conversion', '3.2.0'), + ('tbb', '2021.5.0'), +] + +local_sys_deps = [ + 'EIGEN', 'EXPAT', 'HDF5', 'JPEG', 'PNG', 'TIFF', 'ZLIB', + 'FFTW', 'DOUBLECONVERSION', 'SWIG', +] +local_sys_cmake = ['-DITK_USE_SYSTEM_%s=ON' % d for d in local_sys_deps] + +configopts = "-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON " +configopts += '-DBUILD_SHARED_LIBS=ON -DBUILD_TESTING=OFF ' +configopts += '-DModule_ITKReview=ON -DModule_ITKVtkGlue=ON ' +configopts += '-DITK_WRAP_PYTHON:BOOL=ON ' +configopts += "-DSWIG_EXECUTABLE=${EBROOTSWIG}/bin/swig " +configopts += ' '.join(local_sys_cmake) + +configopts += "-DModule_SimpleITKFilters=ON " +configopts += '-DITK_LEGACY_REMOVE:BOOL=OFF ' # needed by SimpleITK +configopts += "-DITK_FORBID_DOWNLOADS=OFF " # needed by SimpleITK + +prebuildopts = "LC_ALL=C " + +preinstallopts = "export PYTHONPATH=%(installdir)s/lib/python%(pyshortver)s/site-packages:$PYTHONPATH && " + +modextrapaths = {'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages']} + +local_lib_names = ['ITKCommon', 'ITKIOHDF5', 'ITKIOJPEG', 'ITKIOPNG', 'ITKIOTIFF', + 'ITKReview', 'ITKVTK', 'ITKVtkGlue', 'itkSimpleITKFilters', + 'ITKFFT'] + +sanity_check_paths = { + 'files': ['bin/itkTestDriver'] + + ['lib/lib%s-%%(version_major)s.%%(version_minor)s.%s' % (l, SHLIB_EXT) for l in local_lib_names], + 'dirs': ['include/ITK-%(version_major_minor)s', + 'lib/python%(pyshortver)s/site-packages', + 'share'], +} + +sanity_check_commands = [('python', "-c 'import %(namelower)s'")] + +moduleclass = 'vis' diff --git a/Golden_Repo/i/ITK/ITK-5.2.1-gcccoremkl-11.3.0-2022.1.0-nompi.eb b/Golden_Repo/i/ITK/ITK-5.2.1-gcccoremkl-11.3.0-2022.1.0-nompi.eb new file mode 100644 index 0000000000000000000000000000000000000000..ebf6dcee36dbb91972048e43703ec97926bbc031 --- /dev/null +++ b/Golden_Repo/i/ITK/ITK-5.2.1-gcccoremkl-11.3.0-2022.1.0-nompi.eb @@ -0,0 +1,81 @@ +easyblock = 'CMakeMake' + +name = 'ITK' +version = '5.2.1' +versionsuffix = '-nompi' + +homepage = 'https://itk.org' +description = """Insight Segmentation and Registration Toolkit (ITK) provides + an extensive suite of software tools for registering and segmenting + multidimensional imaging data.""" + +toolchain = {'name': 'gcccoremkl', 'version': '11.3.0-2022.1.0'} +toolchainopts = {'pic': True, 'cstd': 'c++11'} + +github_account = 'InsightSoftwareConsortium' +source_urls = [GITHUB_SOURCE] +sources = ['v%(version)s.tar.gz'] +checksums = ['6022b2b64624b8bcec3333fe48d5f74ff6ebceb3bdf98258ba7d7fbbc76b99ab'] + +builddependencies = [ + ('binutils', '2.38'), + ('CMake', '3.23.1'), + ('Bison', '3.8.2'), + ('Eigen', '3.4.0'), + ('pkgconf', '1.8.0'), + ('Perl', '5.34.1'), +] + +dependencies = [ + ('Python', '3.10.4'), + ('expat', '2.4.8'), + ('HDF5', '1.12.2', '-serial'), + ('libjpeg-turbo', '2.1.3'), + ('libpng', '1.6.37'), + ('LibTIFF', '4.3.0'), + ('VTK', '9.2.5', '-nompi'), + ('zlib', '1.2.12'), + ('SWIG', '4.0.2',), + ('FFTW', '3.3.10'), + ('double-conversion', '3.2.0'), + ('tbb', '2021.5.0'), +] + +local_sys_deps = [ + 'EIGEN', 'EXPAT', 'HDF5', 'JPEG', 'PNG', 'TIFF', 'ZLIB', + 'FFTW', 'DOUBLECONVERSION', 'SWIG', +] +local_sys_cmake = ['-DITK_USE_SYSTEM_%s=ON' % d for d in local_sys_deps] + +configopts = "-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON " +configopts += '-DBUILD_SHARED_LIBS=ON -DBUILD_TESTING=OFF ' +configopts += '-DModule_ITKReview=ON -DModule_ITKVtkGlue=ON ' +configopts += '-DITK_WRAP_PYTHON:BOOL=ON ' +configopts += "-DSWIG_EXECUTABLE=${EBROOTSWIG}/bin/swig " +configopts += ' '.join(local_sys_cmake) + +configopts += "-DModule_SimpleITKFilters=ON " +configopts += '-DITK_LEGACY_REMOVE:BOOL=OFF ' # needed by SimpleITK +configopts += "-DITK_FORBID_DOWNLOADS=OFF " # needed by SimpleITK + +prebuildopts = "LC_ALL=C " + +preinstallopts = "export PYTHONPATH=%(installdir)s/lib/python%(pyshortver)s/site-packages:$PYTHONPATH && " + +modextrapaths = {'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages']} + +local_lib_names = ['ITKCommon', 'ITKIOHDF5', 'ITKIOJPEG', 'ITKIOPNG', 'ITKIOTIFF', + 'ITKReview', 'ITKVTK', 'ITKVtkGlue', 'itkSimpleITKFilters', + 'ITKFFT'] + +sanity_check_paths = { + 'files': ['bin/itkTestDriver'] + + ['lib/lib%s-%%(version_major)s.%%(version_minor)s.%s' % (l, SHLIB_EXT) for l in local_lib_names], + 'dirs': ['include/ITK-%(version_major_minor)s', + 'lib/python%(pyshortver)s/site-packages', + 'share'], +} + +sanity_check_commands = [('python', "-c 'import %(namelower)s'")] + +moduleclass = 'vis' diff --git a/Golden_Repo/i/ITK/ITK-5.2.1-gpsmkl-2022a.eb b/Golden_Repo/i/ITK/ITK-5.2.1-gpsmkl-2022a.eb new file mode 100644 index 0000000000000000000000000000000000000000..496993732ce4d387e1aa607390b5f13bc0c60dc4 --- /dev/null +++ b/Golden_Repo/i/ITK/ITK-5.2.1-gpsmkl-2022a.eb @@ -0,0 +1,80 @@ +easyblock = 'CMakeMake' + +name = 'ITK' +version = '5.2.1' + +homepage = 'https://itk.org' +description = """Insight Segmentation and Registration Toolkit (ITK) provides + an extensive suite of software tools for registering and segmenting + multidimensional imaging data.""" + +toolchain = {'name': 'gpsmkl', 'version': '2022a'} +toolchainopts = {'pic': True, 'cstd': 'c++11'} + +github_account = 'InsightSoftwareConsortium' +source_urls = [GITHUB_SOURCE] +sources = ['v%(version)s.tar.gz'] +checksums = ['6022b2b64624b8bcec3333fe48d5f74ff6ebceb3bdf98258ba7d7fbbc76b99ab'] + +builddependencies = [ + ('binutils', '2.38'), + ('CMake', '3.23.1'), + ('Bison', '3.8.2'), + ('Eigen', '3.4.0'), + ('pkgconf', '1.8.0'), + ('Perl', '5.34.1'), +] + +dependencies = [ + ('Python', '3.10.4'), + ('expat', '2.4.8'), + ('HDF5', '1.12.2'), + ('libjpeg-turbo', '2.1.3'), + ('libpng', '1.6.37'), + ('LibTIFF', '4.3.0'), + ('VTK', '9.2.5'), + ('zlib', '1.2.12'), + ('SWIG', '4.0.2',), + ('FFTW', '3.3.10'), + ('double-conversion', '3.2.0'), + ('tbb', '2021.5.0'), +] + +local_sys_deps = [ + 'EIGEN', 'EXPAT', 'HDF5', 'JPEG', 'PNG', 'TIFF', 'ZLIB', + 'FFTW', 'DOUBLECONVERSION', 'SWIG', +] +local_sys_cmake = ['-DITK_USE_SYSTEM_%s=ON' % d for d in local_sys_deps] + +configopts = "-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON " +configopts += '-DBUILD_SHARED_LIBS=ON -DBUILD_TESTING=OFF ' +configopts += '-DModule_ITKReview=ON -DModule_ITKVtkGlue=ON ' +configopts += '-DITK_WRAP_PYTHON:BOOL=ON ' +configopts += "-DSWIG_EXECUTABLE=${EBROOTSWIG}/bin/swig " +configopts += ' '.join(local_sys_cmake) + +configopts += "-DModule_SimpleITKFilters=ON " +configopts += '-DITK_LEGACY_REMOVE:BOOL=OFF ' # needed by SimpleITK +configopts += "-DITK_FORBID_DOWNLOADS=OFF " # needed by SimpleITK + +prebuildopts = "LC_ALL=C " + +preinstallopts = "export PYTHONPATH=%(installdir)s/lib/python%(pyshortver)s/site-packages:$PYTHONPATH && " + +modextrapaths = {'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages']} + +local_lib_names = ['ITKCommon', 'ITKIOHDF5', 'ITKIOJPEG', 'ITKIOPNG', 'ITKIOTIFF', + 'ITKReview', 'ITKVTK', 'ITKVtkGlue', 'itkSimpleITKFilters', + 'ITKFFT'] + +sanity_check_paths = { + 'files': ['bin/itkTestDriver'] + + ['lib/lib%s-%%(version_major)s.%%(version_minor)s.%s' % (l, SHLIB_EXT) for l in local_lib_names], + 'dirs': ['include/ITK-%(version_major_minor)s', + 'lib/python%(pyshortver)s/site-packages', + 'share'], +} + +sanity_check_commands = [('python', "-c 'import %(namelower)s'")] + +moduleclass = 'vis' diff --git a/Golden_Repo/j/Julia/Julia-1.8.5-gomkl-2023.eb b/Golden_Repo/j/Julia/Julia-1.8.5-foss-2022a.eb similarity index 99% rename from Golden_Repo/j/Julia/Julia-1.8.5-gomkl-2023.eb rename to Golden_Repo/j/Julia/Julia-1.8.5-foss-2022a.eb index 5f2e2da1bb20d98f34eff8228a3f59bf5f98d5ba..41916d88ea22e3221d26d2abef47c458b3769946 100644 --- a/Golden_Repo/j/Julia/Julia-1.8.5-gomkl-2023.eb +++ b/Golden_Repo/j/Julia/Julia-1.8.5-foss-2022a.eb @@ -6,7 +6,7 @@ description = """Julia was designed from the beginning for high performance. Julia programs compile to efficient native code for multiple platforms via LLVM """ -toolchain = {'name': 'gompi', 'version': '2022a'} +toolchain = {'name': 'foss', 'version': '2022a'} toolchainopts = {'usempi': False, 'pic': True} source_urls = ['https://github.com/JuliaLang/julia/releases/download/v%(version)s/'] diff --git a/Golden_Repo/j/Julia/Julia-1.8.5-gpsmkl-2022a.eb b/Golden_Repo/j/Julia/Julia-1.8.5-gpsmkl-2022a.eb new file mode 100644 index 0000000000000000000000000000000000000000..6f3a0f0b60af745c38f459f34e5fc46f8016d56d --- /dev/null +++ b/Golden_Repo/j/Julia/Julia-1.8.5-gpsmkl-2022a.eb @@ -0,0 +1,248 @@ +name = 'Julia' +version = '1.8.5' + +homepage = 'https://julialang.org/' +description = """Julia was designed from the beginning for high performance. +Julia programs compile to efficient native code for multiple platforms via LLVM +""" + +toolchain = {'name': 'gpsmkl', 'version': '2022a'} +toolchainopts = {'usempi': False, 'pic': True} + +source_urls = ['https://github.com/JuliaLang/julia/releases/download/v%(version)s/'] +sources = ['julia-%(version)s-full.tar.gz'] +checksums = ['35554080a4b4d3ce52ef220254306bd42ac0d88eff9eb85592a57d0663db5df2'] + +builddependencies = [ + ('binutils', '2.38'), + ('git', '2.36.0', '-nodocs'), + ('CMake', '3.23.1'), +] + +dependencies = [ + ('Python', '3.10.4'), + ('GMP', '6.2.1'), + ('CUDA', '11.7', '', SYSTEM), + ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')), + ('matplotlib', '3.5.2', '', ('gcccoremkl', '11.3.0-2022.1.0')), + # ('OpenGL', '2022a'), # build segfaults starting with version 1.8.1 + ('OpenSSL', '1.1', '', SYSTEM), +] + +skipsteps = ['configure'] +buildopts = " USE_SYSTEM_GMP=1 USE_INTEL_MKL=1 " +installopts = "prefix=%(installdir)s " + +arch_name = 'gpu' + +exts_defaultclass = 'JuliaPackage' +exts_list = [ + # General Purpose + ('PackageCompiler.jl', '2.1.4', { + 'source_tmpl': 'v%(version)s.tar.gz', + 'source_urls': ['https://github.com/JuliaLang/PackageCompiler.jl/archive/'], + 'checksums': ['2fd6f50003d995624374900e7e0220cd7cd8386a317e0070d2b4b9b9d61c5e88'], + }), + ('HTTP.jl', '1.7.4', { + 'source_tmpl': 'v1.7.4.tar.gz', + 'source_urls': ['https://github.com/JuliaWeb/HTTP.jl/archive/'], + 'checksums': ['95e4079f12983ad5008cca2505a5408b6f0146a9ed8f247361e090004030613d'], + }), + ('Parsers.jl', '2.5.1', { + 'source_tmpl': 'v2.5.1.tar.gz', + 'source_urls': ['https://github.com/JuliaData/Parsers.jl/archive/'], + 'checksums': ['72494acac42c7dff16e1a6ac1305f13001f3743e0021d158d097399f0567d926'], + }), + ('VersionParsing.jl', '1.3.0', { + 'source_tmpl': 'v1.3.0.tar.gz', + 'source_urls': ['https://github.com/JuliaInterop/VersionParsing.jl/archive/'], + 'checksums': ['f90fe419e1a40ef0eccfaaed1d1b7792d9115a059a82d0c23e3c04c944d0f8ca'], + }), + ('JSON.jl', '0.21.3', { + 'source_tmpl': 'v0.21.3.tar.gz', + 'source_urls': ['https://github.com/JuliaIO/JSON.jl/archive/'], + 'checksums': ['bd02a015da24b03f79d55967b29f5ceaba2477b559242576d74f02623bb1b6b1'], + }), + ('WebIO.jl', '0.8.20', { + 'source_tmpl': 'v0.8.20.tar.gz', + 'source_urls': ['https://github.com/JuliaGizmos/WebIO.jl/archive/'], + 'checksums': ['d8c45c0be367963539cf7bdf748d16b4f6065fa5113e353ad57872980fc56b39'], + }), + ('ProgressMeter.jl', '1.7.2', { + 'source_tmpl': 'v1.7.2.tar.gz', + 'source_urls': ['https://github.com/timholy/ProgressMeter.jl/archive/'], + 'checksums': ['3591ea33d0ad7576bbb7d430ba94a988274af6434fbd7f3d0dc7fc2655dc888c'], + }), + ('Conda.jl', '1.7.0', { + 'source_tmpl': 'v1.7.0.tar.gz', + 'source_urls': ['https://github.com/JuliaPy/Conda.jl/archive/'], + 'checksums': ['2077b1192e1cfa206caf441d9d91b0ca83aa935db89918f1fd69cd25c2415ced'], + }), + ('PyCall.jl', '1.95.1', { + 'source_tmpl': 'v1.95.1.tar.gz', + 'source_urls': ['https://github.com/JuliaPy/PyCall.jl/archive/'], + 'checksums': ['8746b3ecc54fd670e5983945bec205ff65cdb4b9e395a79f887cc28741b05e87'], + }), + ('LaTeXStrings.jl', '1.3.0', { + 'source_tmpl': 'v1.3.0.tar.gz', + 'source_urls': ['https://github.com/stevengj/LaTeXStrings.jl/archive/'], + 'checksums': ['f90fe419e1a40ef0eccfaaed1d1b7792d9115a059a82d0c23e3c04c944d0f8ca'], + }), + ('DocumentFormat.jl', '4.0.3', { + 'source_tmpl': 'v4.0.3.tar.gz', + 'source_urls': ['https://github.com/julia-vscode/DocumentFormat.jl/archive/'], + 'checksums': ['4a7131590fa07d16d8b4998ef7570f797148e7ed622a0fa431a6ca3fe52156ab'], + }), + # Data Science + ('CSV.jl', '0.10.9', { + 'source_tmpl': 'v0.10.9.tar.gz', + 'source_urls': ['https://github.com/JuliaData/CSV.jl/archive/'], + 'checksums': ['e0958f0bf04e2b32bc4040e74ce9eed1e5be3947c03f381be1003ac197304d84'], + }), + ('DataFrames.jl', '1.4.4', { + 'source_tmpl': 'v1.4.4.tar.gz', + 'source_urls': ['https://github.com/JuliaData/DataFrames.jl/archive/'], + 'checksums': ['365877a405d1ba3af23ff5258424870cce434a13b02df34c7d8a78568ef2b87a'], + }), + ('Arrow.jl', '2.4.3', { + 'source_tmpl': 'v2.4.3.tar.gz', + 'source_urls': ['https://github.com/JuliaData/Arrow.jl/archive/'], + 'checksums': ['d65a8c803f9ac664b3afc878f1eba2c7fe99d91601aebc3dc288784585be80a2'], + }), + ('OnlineStats.jl', '1.5.14', { + 'source_tmpl': 'v1.5.14.tar.gz', + 'source_urls': ['https://github.com/joshday/OnlineStats.jl/archive/'], + 'checksums': ['b1c725a3de6cfde25271753b7cc341d2f565bc6aa74ae76394f845cb0339dc42'], + }), + ('Query.jl', '1.0.0', { + 'source_tmpl': 'v1.0.0.tar.gz', + 'source_urls': ['https://github.com/queryverse/Query.jl/archive/'], + 'checksums': ['76c05e3ffc8f3c2ce2cd3f6824f40a107cdba6fc58c4ce42de2289132de988e0'], + }), + # Scientific Domains + ('GSL.jl', '1.0.1', { + 'source_tmpl': 'v1.0.1.tar.gz', + 'source_urls': ['https://github.com/JuliaMath/GSL.jl/archive/refs/tags/'], + 'checksums': ['91a5acbb752610c5989b9acef126f2231f612debb7ba6d1d4625c68d2af5776e'], + }), + ('DifferentialEquations.jl', '7.6.0', { + 'source_tmpl': 'v7.6.0.tar.gz', + 'source_urls': ['https://github.com/SciML/DifferentialEquations.jl/archive/'], + 'checksums': ['32df0e2b2811567f5d58f5b88831e6a6c3c15b4d2f0bae6bde0a11a98b4e49d8'], + }), + ('Distributions.jl', '0.25.80', { + 'source_tmpl': 'v0.25.80.tar.gz', + 'source_urls': ['https://github.com/JuliaStats/Distributions.jl/archive/'], + 'checksums': ['0f457839d969dd5f8a12ba96fb3a3a728387945d98504ba3e7131178ef8e9ef7'], + }), + ('Optim.jl', '1.7.4', { + 'source_tmpl': 'v1.7.4.tar.gz', + 'source_urls': ['https://github.com/JuliaNLSolvers/Optim.jl/archive/'], + 'checksums': ['95e4079f12983ad5008cca2505a5408b6f0146a9ed8f247361e090004030613d'], + }), + ('IterativeSolvers.jl', '0.9.2', { + 'source_tmpl': 'v0.9.2.tar.gz', + 'source_urls': ['https://github.com/JuliaLinearAlgebra/IterativeSolvers.jl/archive/'], + 'checksums': ['95fbfa39aa68e989ae6bad2f51ce0fe5635ba3f3375d0ea4d9422e77ff924a9b'], + }), + ('AbstractFFTs.jl', '1.2.1', { + 'source_tmpl': 'v1.2.1.tar.gz', + 'source_urls': ['https://github.com/JuliaMath/AbstractFFTs.jl/archive/'], + 'checksums': ['58abf90b037c618daeed89940c77ac129b5155b26429ac77643cc9c5db453363'], + }), + ('OrdinaryDiffEq.jl', '6.42.0', { + 'source_tmpl': 'v6.42.0.tar.gz', + 'source_urls': ['https://github.com/SciML/OrdinaryDiffEq.jl/archive/'], + 'checksums': ['22af73320fd7577e3e4557e10f2b7cb0f77c03556499699033c47c8f56cbe482'], + }), + ('SpecialFunctions.jl', '1.8.7', { + 'source_tmpl': 'v1.8.7.tar.gz', + 'source_urls': ['https://github.com/JuliaMath/SpecialFunctions.jl/archive/'], + 'checksums': ['3f2ecec0506fe47cfa5e436ac510e2a82d39f74fceaeb422572cf06d90f2096a'], + }), + ('JuMP.jl', '1.7.0', { + 'source_tmpl': 'v1.7.0.tar.gz', + 'source_urls': ['https://github.com/jump-dev/JuMP.jl/archive/'], + 'checksums': ['2077b1192e1cfa206caf441d9d91b0ca83aa935db89918f1fd69cd25c2415ced'], + }), + # Visualization + ('GR.jl', '0.71.5', { + 'source_tmpl': 'v0.71.5.tar.gz', + 'source_urls': ['https://github.com/jheinen/GR.jl/archive/'], + 'checksums': ['d2b096241d8dfd3e16b1abcf2c0dd5664db025c1eeadf11145b9934284b112b7'], + }), + ('PlotlyJS.jl', '0.18.10', { + 'source_tmpl': 'v0.18.10.tar.gz', + 'source_urls': ['https://github.com/JuliaPlots/PlotlyJS.jl/archive/'], + 'checksums': ['b574113676080c14634118ce3a5ceda7562224039a2fd0ea3ad8bc5938700a49'], + }), + ('PyPlot.jl', '2.11.0', { + 'source_tmpl': 'v2.11.0.tar.gz', + 'source_urls': ['https://github.com/JuliaPy/PyPlot.jl/archive/'], + 'checksums': ['10498f5b7bd958c5e0dae33aa2514048005e4f5b037d9a73a09cb4231259cc13'], + }), + ('Plots.jl', '1.38.4', { + 'source_tmpl': 'v1.38.4.tar.gz', + 'source_urls': ['https://github.com/JuliaPlots/Plots.jl/archive/'], + 'checksums': ['d37a748e531b9970d1b5e552e069f8778f22f2e0508368bbd74f76b20dc51b1e'], + }), + ('UnicodePlots.jl', '3.3.4', { + 'source_tmpl': 'v3.3.4.tar.gz', + 'source_urls': ['https://github.com/Evizero/UnicodePlots.jl/archive/'], + 'checksums': ['7280b26b83dd03eaee21398de40cb83674c5e42037cad75f6e821cb0322ae9fd'], + }), + ('StatsPlots.jl', '0.15.4', { + 'source_tmpl': 'v0.15.4.tar.gz', + 'source_urls': ['https://github.com/JuliaPlots/StatsPlots.jl/archive/'], + 'checksums': ['451076c4d352ab88c8d0010320315a2f3d26ef0cc16007c7d0eb49eaa1105777'], + }), + # MPI + ('MPI.jl', '0.20.8', { + 'mpi_path': '$EBROOTOPENMPI', + 'mpiexec': 'srun', + 'source_tmpl': 'v0.20.8.tar.gz', + 'source_urls': ['https://github.com/JuliaParallel/MPI.jl/archive/'], + 'checksums': ['f70a2710e4d1375be82f6838510980f6cb7d48caaad63ffecd2a296c39b80dba'], + }), + # CUDA + ('CUDA.jl', '4.0.0', { + 'source_tmpl': 'v4.0.0.tar.gz', + 'source_urls': ['https://github.com/JuliaGPU/CUDA.jl/archive/'], + 'checksums': ['64fa7fe158c8cd56841b7906a4f57c53dbaa225fe8688bf3087b7951854b591b'], + }), +] + +modextrapaths = { + 'LD_LIBRARY_PATH': 'lib/julia', +} + +modextravars = { + 'JULIA_MPICC': 'mpicc', + 'JULIA_MPIEXEC': 'srun', + # 'JULIA_MPIEXEC_ARGS': '', + 'JULIA_MPI_ABI': 'OpenMPI', + 'JULIA_MPI_BINARY': 'system', + 'JULIA_MPI_PATH': '$::env(EBROOTOPENMPI)', + 'JULIA_CUDA_USE_BINARYBUILDER': 'false', + # FYI: automaticall added by EB_Julia + # 'EBJULIA_STD_DEPOT_PATH': '%(installdir)s/local/share/julia:%(installdir)s/share/julia', + # 'EBJULIA_USER_DEPOT_PATH': '~/.julia/%(version)s/default-%(arch_name)', + # 'EBJULIA_ADMIN_DEPOT_PATH': '%(installdir)s/extensions', + # 'EBJULIA_STD_LOAD_PATH': '@stdlib', + # 'EBJULIA_USER_LOAD_PATH': '@:@#.#.#-default-%(arch_name)' + # 'EBJULIA_ADMIN_LOAD_PATH': '%(installdir)s/extensions/environments/%(version)s-default-%(arch_name)s/', + # 'EBEXTSLISTJULIA': '<list of extensions installed>' + # 'EBJULIA_ENV_NAME': '%(version)s-default-%(arch_name)s' + # 'JULIA_INSTALL_FOLDER': '%(installdir)s', + # 'JULIA_DEPOT_PATH': + # '~/.julia/%(version)s/default-gpu:%(installdir)s/local/share/julia:%(installdir)s/share/julia', + # 'JULIA_LOAD_PATH': '@:@#.#.#-default-gpu:@stdlib', + # 'JULIA_PROJECT': ''%(installdir)s/extensions/environments/%(version)s-default-%(arch_name)s/Project.toml', +} + +sanity_check_paths = { + 'files': ['bin/julia', 'include/julia/julia.h', 'lib/libjulia.so'], + 'dirs': ['bin', 'etc', 'include', 'lib', 'share'] +} + +moduleclass = 'lang' diff --git a/Golden_Repo/l/libspng/libspng-0.7.1-GCCcore-11.3.0.eb b/Golden_Repo/l/libspng/libspng-0.7.3-GCCcore-11.3.0.eb similarity index 100% rename from Golden_Repo/l/libspng/libspng-0.7.1-GCCcore-11.3.0.eb rename to Golden_Repo/l/libspng/libspng-0.7.3-GCCcore-11.3.0.eb diff --git a/Golden_Repo/m/METIS/METIS-5.1.0-intel-compilers-2022.1.0.eb b/Golden_Repo/m/METIS/METIS-5.1.0-intel-compilers-2022.1.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..49ea124c5874d1cb0a512e5e673145b872abe274 --- /dev/null +++ b/Golden_Repo/m/METIS/METIS-5.1.0-intel-compilers-2022.1.0.eb @@ -0,0 +1,26 @@ +name = 'METIS' +version = '5.1.0' + +homepage = 'http://glaros.dtc.umn.edu/gkhome/metis/metis/overview' +description = """METIS is a set of serial programs for partitioning graphs, partitioning finite element meshes, +and producing fill reducing orderings for sparse matrices. +The algorithms implemented in METIS are based on the multilevel recursive-bisection, +multilevel k-way, and multi-constraint partitioning schemes.""" + +toolchain = {'name': 'intel-compilers', 'version': '2022.1.0'} +toolchainopts = {'optarch': True, 'pic': True} + +source_urls = ['https://src.fedoraproject.org/repo/pkgs/metis/metis-5.1.0.tar.gz/5465e67079419a69e0116de24fce58fe'] +sources = [SOURCELOWER_TAR_GZ] +patches = ['METIS-5.1.0-use-doubles.patch'] +checksums = [ + {'metis-5.1.0.tar.gz': '76faebe03f6c963127dbb73c13eab58c9a3faeae48779f049066a21c087c5db2'}, + {'METIS-5.1.0-use-doubles.patch': '8e79f5970c0fb36394dd6338dd3160eb346dc00e38c37ac90303e1ee5eb4c53f'}, +] + +# we use 32bit for indices and 64bit for content +builddependencies = [('CMake', '3.23.1')] + +configopts = ['', 'shared=1'] + +moduleclass = 'math' diff --git a/Golden_Repo/o/OSPRay/OSPRay-2.10.0-gpsmpi-2022a.eb b/Golden_Repo/o/OSPRay/OSPRay-2.10.0-foss-2022a.eb similarity index 97% rename from Golden_Repo/o/OSPRay/OSPRay-2.10.0-gpsmpi-2022a.eb rename to Golden_Repo/o/OSPRay/OSPRay-2.10.0-foss-2022a.eb index 6bbcf51f06067df2b11156d1cdb1cf4c9fa6c372..265a1a78cc575ca864106a331887e34133ed4efa 100644 --- a/Golden_Repo/o/OSPRay/OSPRay-2.10.0-gpsmpi-2022a.eb +++ b/Golden_Repo/o/OSPRay/OSPRay-2.10.0-foss-2022a.eb @@ -9,7 +9,7 @@ OSPRay is an open source, scalable, and portable ray tracing engine for high-performance, high-fidelity visualization on Intel® Architecture CPUs. """ -toolchain = {'name': 'gpsmpi', 'version': '2022a'} +toolchain = {'name': 'foss', 'version': '2022a'} toolchainopts = {'pic': True} source_urls = ['https://github.com/ospray/OSPRay/archive/'] diff --git a/Golden_Repo/o/OSPRay/OSPRay-2.10.0-gpsmkl-2022a.eb b/Golden_Repo/o/OSPRay/OSPRay-2.10.0-gpsmkl-2022a.eb new file mode 100644 index 0000000000000000000000000000000000000000..74c85e8bb0fbe32af2ef28c3cbeb7d47bb1b3d54 --- /dev/null +++ b/Golden_Repo/o/OSPRay/OSPRay-2.10.0-gpsmkl-2022a.eb @@ -0,0 +1,65 @@ +easyblock = 'CMakeMake' + +name = 'OSPRay' +version = '2.10.0' + +homepage = 'http://www.ospray.org/' +description = """ +OSPRay is an open source, scalable, and portable ray tracing engine for +high-performance, high-fidelity visualization on Intel® Architecture CPUs. +""" + +toolchain = {'name': 'gpsmkl', 'version': '2022a'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/ospray/OSPRay/archive/'] +sources = ['v%(version)s.tar.gz'] + +checksums = ['bd478284f48d2cb775fc41a2855a9d9f5ea16c861abda0f8dc94e02ea7189cb8'] + +builddependencies = [ + ('ispc', '1.18.1', '', SYSTEM), + ('CMake', '3.23.1'), + ('Doxygen', '1.9.4') +] + +dependencies = [ + ('X11', '20220504'), + ('OpenGL', '2022a'), + ('freeglut', '3.4.0'), + ('Qt5', '5.15.5'), + ('tbb', '2021.5.0'), + ('Embree', '3.13.5'), + ('rkcommon', '1.10.0'), + ('openvkl', '1.3.1'), + ('OpenImageDenoise', '1.4.3', '', ('gcccoremkl', '11.3.0-2022.1.0')), +] + +separate_build_dir = True + +configopts = '-DCMAKE_VERBOSE_MAKEFILE=ON ' +configopts += '-DOSPRAY_INSTALL_DEPENDENCIES=OFF ' +configopts += '-DCMAKE_BUILD_TYPE=Release ' +configopts += '-DOSPRAY_BUILD_ISA=ALL ' +configopts += '-Dembree_DIR=$EBROOTEMBREE/lib64/cmake/embree-3.13.5 ' +configopts += '-DOSPRAY_ENABLE_APPS:BOOL=OFF ' +configopts += '-DOSPRAY_MODULE_DENOISER:BOOL=ON ' +configopts += '-DOSPRAY_MODULE_MPI:BOOL=True ' + +configopts += '-DOSPRAY_ENABLE_APPS:BOOL=OFF ' +configopts += '-DOSPRAY_ENABLE_APPS_BENCHMARK:BOOL=OFF ' +configopts += '-DOSPRAY_ENABLE_APPS_EXAMPLES:BOOL=OFF ' +configopts += '-DOSPRAY_ENABLE_APPS_TUTORIALS:BOOL=OFF ' +configopts += '-DOSPRAY_ENABLE_APPS_TESTING:BOOL=OFF ' + +sanity_check_paths = { + 'dirs': ['include/ospray/', + 'lib64/cmake/%(namelower)s-%(version)s', 'share/doc/OSPRay'], + 'files': ['include/ospray/version.h', + 'lib64/libospray.so', + 'share/doc/OSPRay/README.md'], +} + +modextrapaths = {'CMAKE_MODULE_PATH': ['lib64/cmake/ospray-%(version)s']} + +moduleclass = 'vis' diff --git a/Golden_Repo/o/OptiX/OptiX-6.5.0.eb b/Golden_Repo/o/OptiX/OptiX-6.5.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..6232d58d8cf24e397ff21ada5b873c4d69284119 --- /dev/null +++ b/Golden_Repo/o/OptiX/OptiX-6.5.0.eb @@ -0,0 +1,33 @@ +## +# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild +# Authors:: Stephane Thiell <sthiell@stanford.edu> +## +easyblock = 'Binary' + +name = 'OptiX' +version = '6.5.0' + +homepage = 'https://developer.nvidia.com/optix' +description = """OptiX is NVIDIA SDK for easy ray tracing performance. + It provides a simple framework for accessing the GPU’s massive ray tracing + power using state-of-the-art GPU algorithms.""" + +toolchain = SYSTEM + +# Registration required. Download links: +# https://developer.nvidia.com/designworks/optix/download +# https://developer.nvidia.com/designworks/optix/downloads/legacy +sources = ['NVIDIA-OptiX-SDK-%(version)s-linux64.sh'] +checksums = ['eca09e617a267e18403ecccc715c5bc3a88729b81589a828fcb696435100a62e'] + +install_cmd = "./" + sources[0] + " --skip-license --prefix=%(installdir)s" + +sanity_check_paths = { + 'files': ["include/optix.h", "include/optix_cuda.h", "lib64/liboptix.%s" % SHLIB_EXT, + "lib64/liboptixu.%s" % SHLIB_EXT], + 'dirs': [] +} + +modextravars = {'OPTIX_HOME': '%(installdir)s'} + +moduleclass = 'vis' diff --git a/Golden_Repo/o/OptiX/OptiX-7.5.0.eb b/Golden_Repo/o/OptiX/OptiX-7.5.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..70c877ef23023860365400587a7c3d3e357742a3 --- /dev/null +++ b/Golden_Repo/o/OptiX/OptiX-7.5.0.eb @@ -0,0 +1,31 @@ +## +# Author: Robert Mijakovic <robert.mijakovic@lxp.lu> +## +easyblock = 'Binary' + +name = 'OptiX' +version = '7.5.0' + +homepage = 'https://developer.nvidia.com/optix' +description = """OptiX is NVIDIA SDK for easy ray tracing performance. + It provides a simple framework for accessing the GPU’s massive ray tracing + power using state-of-the-art GPU algorithms.""" + +toolchain = SYSTEM + +# Registration required. Download links: +# https://developer.nvidia.com/designworks/optix/download +# https://developer.nvidia.com/designworks/optix/downloads/legacy +sources = ['NVIDIA-OptiX-SDK-%(version)s-linux64-x86_64.sh'] +checksums = ['ec8f80350870275e6536a4150a65976d7b391f605ef2c09616486569aa60b670'] + +install_cmd = "./" + sources[0] + " --skip-license --prefix=%(installdir)s" + +sanity_check_paths = { + 'files': ["include/optix.h", "include/optix_device.h"], + 'dirs': [] +} + +modextravars = {'OPTIX_HOME': '%(installdir)s'} + +moduleclass = 'vis' diff --git a/Golden_Repo/p/ParaView/ParaView-5.11.0-foss-2022a-EGL.eb b/Golden_Repo/p/ParaView/ParaView-5.11.0-foss-2022a-EGL.eb new file mode 100644 index 0000000000000000000000000000000000000000..0a299917aeb66a8cd7dcda34a6947015ed6d55d1 --- /dev/null +++ b/Golden_Repo/p/ParaView/ParaView-5.11.0-foss-2022a-EGL.eb @@ -0,0 +1,351 @@ +easyblock = 'CMakeMake' + +name = 'ParaView' +version = '5.11.0' +versionsuffix = '-EGL' + +homepage = "http://www.paraview.org" +description = "Paraview is a scientific parallel visualizer." + +toolchain = {'name': 'foss', 'version': '2022a'} +toolchainopts = {'pic': True, 'usempi': True} + +local_dwnlsfx_src = 'download.php?submit=Download&version=v%(version_major_minor)s&type=source&os=Sources&downloadFile=' +source_urls = [('http://www.paraview.org/paraview-downloads/%s' % + local_dwnlsfx_src)] +sources = [("ParaView-v%(version)s.tar.gz")] + +patches = [ + 'cdireader_update_issue5715.patch', + 'parflowreader_fix-nlohmann_merge6050.patch', +] + +checksums = [ + '68b1c6d15dd67ec442f964460c56212417e8af2a96763001f8548eb3cbc5ce87', + '064d6878409d9133ad56ce363503a000f7b4617d0c912fd81dd772994f6b5ac2', # cdireader patch + 'eb8b6967782bb47e81df129b0d8e192bbf31f11f815d0f53d1c5b4e53da95fd6', # parflowreader patch +] + +builddependencies = [ + ('CMake', '3.23.1'), + ('git', '2.36.0', '-nodocs'), + ('pkgconf', '1.8.0'), +] + +dependencies = [ + ('Python', '3.10.4'), + ('Boost', '1.79.0'), + ('X11', '20220504'), + ('bzip2', '1.0.8'), + ('HDF5', '1.12.2'), + ('ADIOS2', '2.8.3'), + ('FFmpeg', '4.4.2'), + ('Embree', '3.13.5'), + ('OSPRay', '2.10.0'), + ('libpng', '1.6.37'), + ('expat', '2.4.8'), + ('freetype', '2.12.1'), + ('libjpeg-turbo', '2.1.3'), + ('libxml2', '2.9.13'), + ('LibTIFF', '4.3.0'), + ('zlib', '1.2.12'), + ('netCDF', '4.9.0'), + ('netCDF-C++4', '4.3.1'), + ('netCDF-Fortran', '4.6.0'), + ('nlohmann_json', '3.10.5'), # for ParFlow plugin + ('libcdi', '2.1.1', '', ('gcccoremkl', '11.3.0-2022.1.0')), # for CDI plugin + ('mpi4py', '3.1.4'), + ('double-conversion', '3.2.0'), + ('Eigen', '3.4.0'), + ('Qt5', '5.15.5'), + ('SciPy-Stack', '2022a', '', ('gcccoremkl', '11.3.0-2022.1.0')), + ('OpenGL', '2022a'), + ('Catalyst', '2.0.0-rc3'), + ('ParaViewData', '5.11.0'), + ('VTKData', '9.2.5'), +] + +separate_build_dir = True + +# ensure we do not use a too advanced GL-version at config/build-time, which might not be available at run-time +preconfigopts = "export __EGL_VENDOR_LIBRARY_FILENAMES=${EBROOTOPENGL}/share/glvnd/egl_vendor.d/50_mesa.json && " +prebuildopts = "export __EGL_VENDOR_LIBRARY_FILENAMES=${EBROOTOPENGL}/share/glvnd/egl_vendor.d/50_mesa.json && " + +######################################################################################## +# check ParaView Superbuild options # +# https://gitlab.kitware.com/paraview/paraview-superbuild/tree/master # +# # +# check ParaView Spack options # +# https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/paraview/package.py +# # +# check ParaView Build documenation # +# https://gitlab.kitware.com/paraview/paraview/blob/master/Documentation/dev/build.md # +######################################################################################## + +local_buildsrc = '%(builddir)s/easybuild_obj' +local_installsrc = '%(installdir)s/debugsrc' + +# --- general settings --- # +configopts = '-DCMAKE_VERBOSE_MAKEFILE=ON ' +configopts += '-DCMAKE_CXX_FLAGS="-fdebug-prefix-map=%s=%s $CMAKE_CXX_FLAGS" ' % (local_buildsrc, local_installsrc) +configopts += '-DCMAKE_C_FLAGS="-fdebug-prefix-map=%s=%s $CMAKE_C_FLAGS" ' % (local_buildsrc, local_installsrc) +configopts += '-DCMAKE_CXX_STANDARD=11 ' +configopts += '-DPARAVIEW_BUILD_LEGACY_SILENT=ON ' + +# https://forum.openframeworks.cc/t/nvidia-drivers-pthreads-and-segfaults/2524 +# configopts += '-DCMAKE_CXX_FLAGS="-lpthread $CMAKE_CXX_FLAGS" ' +# configopts += '-DCMAKE_C_FLAGS="-lpthread $CMAKE_C_FLAGS" ' + +configopts += '-DPARAVIEW_BUILD_EDITION=CANONICAL ' +configopts += '-DPARAVIEW_BUILD_WITH_KITS=OFF ' +configopts += '-DPARAVIEW_USE_QT=OFF ' + +# --- tuning --- # +# better disable for now: https://discourse.paraview.org/t/array-dispatch-issues/10328 +# configopts += '-DVTK_BUILD_SCALED_SOA_ARRAYS=OFF ' +# configopts += '-DVTK_DISPATCH_SOA_ARRAYS=OFF ' +# configopts += '-DVTK_DISPATCH_TYPED_ARRAYS=OFF ' + +# --- web --- # +configopts += '-DPARAVIEW_ENABLE_WEB=ON ' +configopts += '-DPARAVIEW_USE_QTWEBENGINE=ON ' +configopts += '-DVTK_MODULE_ENABLE_ParaView_PVWebPython=YES ' + +# --- python --- # +configopts += '-DPARAVIEW_USE_PYTHON=ON ' +configopts += "-DPython3_EXECUTABLE=$EBROOTPYTHON/bin/python " + +configopts += '-DVTK_PYTHON_VERSION=3 ' +configopts += '-DVTK_NO_PYTHON_THREADS=OFF ' +# visibility depends on VTK_NO_PYTHON_THREADS=OFF +configopts += '-DVTK_PYTHON_FULL_THREADSAFE=OFF ' +# If you pass VTK_PYTHON_FULL_THREADSAFE to true, then each and every call to python will be protected with GIL, +# ensuring that you can have eg. other python interpreter in your application and still use python wrapping in vtk. + +# --- VTKm --- # +configopts += '-DPARAVIEW_USE_VTKM=ON ' +configopts += '-DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmCore=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmDataModel=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmFilters=YES ' +configopts += '-DVTKm_Vectorization=AVX2 ' +# configopts += '-DVTKm_ENABLE_KOKKOS=OFF ' +# configopts += '-DVTKm_ENABLE_TBB=OFF ' +# configopts += '-DVTKm_ENABLE_CUDA=ON ' +# configopts += '-DVTKm_ENABLE_LOGGING=ON ' + +# --- parallel (on-node) --- # +# https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/ +configopts += '-DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP ' +configopts += '-DVTK_MAX_THREADS=64 ' +configopts += '-DVTKm_ENABLE_OPENMP=ON ' + +# --- parallel (distributed) --- # +configopts += '-DMPIEXEC_MAX_NUMPROCS=24 ' +configopts += '-DPARAVIEW_USE_MPI=ON ' +configopts += '-DVTKm_ENABLE_MPI=ON ' + +# --- IO --- # +configopts += '-DXDMF_BUILD_MPI=ON ' +configopts += '-DPARAVIEW_ENABLE_XDMF3=ON ' +configopts += '-DPARAVIEW_ENABLE_ADIOS2=OFF ' # error: adios2.h not found +# configopts += '-DPARAVIEW_PLUGIN_ENABLE_AdiosReaderPixie=ON ' # req. ADIOS1 +# configopts += '-DPARAVIEW_PLUGIN_ENABLE_AdiosReaderStaging=ON ' # req. ADIOS1 +configopts += '-DVTKm_ENABLE_HDF5_IO=ON ' + +# --- large data --- # +configopts += '-DVTK_USE_64BIT_IDS=ON ' + +# --- rendering --- # + +# OpenGL (hardware) +# https://kitware.github.io/paraview-docs/latest/cxx/Offscreen.html +# If VTK_OPENGL_HAS_EGL or VTK_OPENGL_HAS_OSMESA is ON, the build supports headless rendering, +# otherwise VTK_USE_X must be ON and the build does not support headless, +# but can still support offscreen rendering. +# If VTK_USE_X is OFF, then either VTK_OPENGL_HAS_OSMESA or VTK_OPENGL_HAS_EGL must be ON. +# Then the build does not support onscreen rendering, but only headless rendering. +# If PARAVIEW_BUILD_QT_GUI is ON and VTK_USE_X is ON, while ParaView command line tools won't link against +# or use X calls, Qt will and hence an accessible X server is still needed to run the desktop client. +# If VTK_OPENGL_HAS_OSMESA is ON, and VTK_USE_X is ON, +# then all the OpenGL and OSMesa variables should point to the Mesa libraries. +# Likewise, if VTK_OPENGL_HAS_EGL is ON and VTK_USE_X is ON, then all the OpenGL and EGL variables +# should point to the system libraries providing both, typically the NVidia libraries. + +configopts += '-DOpenGL_GL_PREFERENCE=GLVND ' +configopts += '-DVTK_REPORT_OPENGL_ERRORS_IN_RELEASE_BUILDS=OFF ' + +configopts += "-DOPENGL_INCLUDE_DIR=${EBROOTOPENGL}/include " +configopts += "-DOPENGL_GLX_INCLUDE_DIR=${EBROOTOPENGL}/include " +configopts += "-DOPENGL_EGL_INCLUDE_DIR=${EBROOTOPENGL}/include " +# configopts += "-DOPENGL_xmesa_INCLUDE_DIR=IGNORE " + +configopts += "-DOPENGL_opengl_LIBRARY=${EBROOTOPENGL}/lib/libOpenGL.so.0 " +configopts += "-DOPENGL_gl_LIBRARY=${EBROOTOPENGL}/lib/libGL.so " +configopts += "-DOPENGL_glx_LIBRARY=${EBROOTOPENGL}/lib/libGLX.so.0 " +configopts += "-DOPENGL_glu_LIBRARY=${EBROOTOPENGL}/lib/libGLU.so " +configopts += "-DOPENGL_egl_LIBRARY=${EBROOTOPENGL}/lib/libEGL.so.1 " + +# OpenGL over X +# configopts += '-DVTK_USE_X=ON ' # OFF:headless rendering +# already considered by Qt (https://gitlab.kitware.com/lorensen/vtk/commit/b29f6db3f746d84f830c81e4212e48db192e4dbb) +# configopts += '-DVTK_DEFAULT_RENDER_WINDOW_OFFSCREEN=OFF ' +# configopts += '-DVTK_OPENGL_HAS_OSMESA=OFF ' # http://www.paraview.org/Wiki/ParaView_And_Mesa_3D + +# EGL (off-screen rendering with OpenGL, but without the need for X) +# call pvserver with –egl-device-index=0 or 1 and –disable-xdisplay-test +configopts += '-DVTK_OPENGL_HAS_EGL=ON ' +# http://www.paraview.org/Wiki/ParaView_And_Mesa_3D +configopts += '-DVTK_OPENGL_HAS_OSMESA=OFF ' +configopts += '-DVTK_USE_X=OFF ' +configopts += '-DVTK_DEFAULT_EGL_DEVICE_INDEX=0 ' +# configopts += '-DEGL_INCLUDE_DIR=${EBROOTOPENGL}/include/EGL/ ' # https://www.khronos.org/registry/EGL/ +# configopts += '-DEGL_LIBRARY=${EBROOTOPENGL}/lib/libEGL.so.1 ' +# configopts += '-DEGL_opengl_LIBRARY=${EBROOTOPENGL}/lib/libOpenGL.so.0 ' +# configopts += '-DEGL_gldispatch_LIBRARY=${EBROOTOPENGL}/lib/libGLdispatch.so.0 ' # <path_to_libGLdispatch.so.0> + +# OSMesa (software) +# With OSMesa the DISPLAY variable has no meaning and is not needed +# When ON, implies that ParaView can use OSMesa to support headless modes of operation. +# configopts += '-DVTK_OPENGL_HAS_OSMESA=ON ' # http://www.paraview.org/Wiki/ParaView_And_Mesa_3D +# configopts += '-DVTK_USE_X=OFF ' +# configopts += '-DVTK_DEFAULT_RENDER_WINDOW_OFFSCREEN=ON ' +# configopts += '-DOSMESA_INCLUDE_DIR=${EBROOTOPENGL}/include ' +# configopts += '-DOSMESA_LIBRARY=${EBROOTOPENGL}/lib/libOSMesa.so ' + +# Raytracing +configopts += '-DPARAVIEW_ENABLE_RAYTRACING=ON ' +configopts += '-DVTK_ENABLE_OSPRAY=ON ' +configopts += '-DVTK_ENABLE_VISRTX=OFF ' + +configopts += "-Dospray_DIR=${EBROOTOSPRAY} " +configopts += "-Dembree_DIR=${EBROOTEMBREE}/lib64/cmake/embree-3.13.5 " +configopts += '-DVTKOSPRAY_ENABLE_DENOISER=ON ' + +# configopts += '-DPARAVIEW_PLUGIN_ENABLE_pvNVIDIAIndeX=YES ' + +# --- extra features --- # +configopts += '-DPARAVIEW_PLUGIN_ENABLE_GeographicalMap=ON ' + +configopts += "-DFFMPEG_ROOT=$EBROOTFFMPEG " +configopts += '-DPARAVIEW_ENABLE_FFMPEG=ON ' +configopts += '-DVTK_MODULE_ENABLE_VTK_IOFFMPEG=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_IOVideo=YES ' + +configopts += '-DVTK_MODULE_ENABLE_VTK_DICOMParser=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersReebGraph=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersSMP=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersSelection=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersTopology=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersTexture=YES ' +# configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersStatisticsGnu=YES ' +# configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersMatlab=YES ' + +# --- coupling --- # +configopts += '-DPARAVIEW_ENABLE_CATALYST=ON ' +configopts += '-DVTK_MODULE_ENABLE_ParaView_InSitu=YES ' +# configopts += '-DVTK_MODULE_USE_EXTERNAL_ParaView_vtkcatalyst=ON ' +configopts += '-Dcatalyst_DIR=${EBROOTCATALYST}/lib64/cmake/catalyst-2.0/ ' + +# --- development & testing --- # +configopts += '-DPARAVIEW_INSTALL_DEVELOPMENT_FILES=ON ' +configopts += '-DPARAVIEW_BUILD_DEVELOPER_DOCUMENTATION=OFF ' +configopts += '-DPARAVIEW_ENABLE_EXAMPLES=OFF ' +configopts += '-DPARAVIEW_BUILD_TESTING=OFF ' +configopts += '-DPARAVIEW_BUILD_VTK_TESTING=OFF ' + +# --- external data --- # +# https://cmake.org/cmake/help/latest/module/ExternalData.html +# https://gitlab.kitware.com/vtk/vtk/blob/master/Documentation/dev/git/data.md +# configopts += '-DCTEST_TEST_TIMEOUT=10800 ' # unknown setting +# download inactivity, 0 = no timeout +configopts += '-DExternalData_TIMEOUT_INACTIVITY=10 ' +# download abs. time, 0 = no timeout +configopts += '-DExternalData_TIMEOUT_ABSOLUTE=60 ' +# Exclude test data download from default 'all' target. +configopts += '-DPARAVIEW_DATA_EXCLUDE_FROM_ALL=ON ' +# Local directory holding ExternalData objects in the layout %(algo)/%(hash). +configopts += '-DPARAVIEW_DATA_STORE=${EBROOTPARAVIEWDATA}/.ExternalData ' +configopts += '-DVTK_DATA_STORE=${EBROOTVTKDATA}/.ExternalData ' +# Local directory holding the real data files of ExternalData. +configopts += '-DExternalData_BINARY_ROOT=${EBROOTPARAVIEWDATA} ' +# we need to combine VTK and ParaView's External data files as there can only be one ExternalData_BINARY_ROOT + +# --- XDMF options --- # +configopts += '-DXDMF_USE_BZIP2=ON ' +configopts += '-DXDMF_USE_GZIP=ON ' + +# --- VTK external libraries --- # +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_expat=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_freetype=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_hdf5=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_jpeg=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_libxml2=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_mpi4py=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_netcdf=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_png=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_tiff=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_zlib=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_doubleconversion=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_eigen=ON ' + +# --- ParaView Extra-Reader --- # +configopts += '-DPARAVIEW_PLUGIN_ENABLE_CDIReader=ON ' +configopts += '-DPARAVIEW_PLUGIN_ENABLE_ParFlow=ON ' +configopts += '-DPARAVIEW_ENABLE_MOTIONFX=ON ' +# configopts += '-DPARAVIEW_ENABLE_FIDES=ON ' # req. ADIOS2 as dependency +# configopts += '-DPARAVIEW_ENABLE_GDAL=ON ' # req. GDAL as dependency +# configopts += '-DPARAVIEW_ENABLE_LAS=ON ' # req. LAS as dependency +# configopts += '-DPARAVIEW_ENABLE_PDAL=ON ' # req. PDAL as dependency +# configopts += '-DPARAVIEW_ENABLE_OPENVDB=ON ' # req. OpenVDB as dependency + +# https://gitlab.kitware.com/paraview/visitbridge/-/blob/master/databases/CMakeLists.txt +configopts += '-DPARAVIEW_ENABLE_VISITBRIDGE=ON ' +configopts += '-DVTK_MODULE_ENABLE_ParaView_IOVisItBridge=YES ' +# configopts += '-DVISIT_BUILD_READER_Boxlib3D=ON ' # req. external dependency +# configopts += '-DVISIT_BUILD_READER_Mili=ON ' # req. external dependency +# configopts += '-DVISIT_BUILD_READER_Silo=ON ' # req. external dependency +# https://gitlab.kitware.com/vtk/vtk/-/merge_requests/7503 +# configopts += '-DVISIT_BUILD_READER_Nek5000=ON ' # MR still open + +postinstallcmds = [ + 'python -m compileall %(installdir)s/lib64/python%(pyshortver)s/site-packages/', + # 'cp -a %s %s' % (local_buildsrc, local_installsrc), # copy source from build dir to install dir + # '', # move debug info to separate files: + # http://stackoverflow.com/questions/866721/how-to-generate-gcc-debug-symbol-outside-the-build-target + # '', # debugedit -i --base-dir=%(builddir)s/ParaView-v%(version)s --dest-dir= %(installdir)s/src <file.debug> + # # change path to source in debug info +] + +modextravars = { + 'PARAVIEW_VTK_DIR': '%(installdir)s/lib64/cmake/paraview-%(version_major_minor)/vtk', + # 'CUDA_VISIBLE_DEVICES': '0,1', + # OpenSWR fully supports OpenGL 3.0 and most of 3.3, but ParaView requires 3.3 -> clame to fully support 3.3 + 'MESA_GL_VERSION_OVERRIDE': '3.3', + 'MESA_GLSL_VERSION_OVERRIDE': '330', + # OpenMP will choose an optimum number of threads by default, which is usually the number of cores + # 'OMP_NUM_THREADS': '28', # fix number of threads used by paraview filters and parallel sections in the code + # threads used by ospray - details https://github.com/ospray/ospray/blob/release-2.0.x/ospray/api/Device.cpp#L88 + # unset => OSPRAY uses all hardware threads + # 'OSPRAY_THREADS': '14', # OSPRay < 2.0 + # 'OSPRAY_NUM_THREADS': '14', # OSPRay >= 2.0 + # When TBB is used for OSPRAY: tbb::task_scheduler_init::default_num_threads() is default if no OSPRAY_NUM_THREADS + # https://github.com/ospray/ospcommon/blob/master/ospcommon/tasking/detail/tasking_system_init.cpp#L47 + # https://www.threadingbuildingblocks.org/docs/doxygen/a00150.html + # more ospray definitions: https://www.ospray.org/documentation.html#environment-variables + # max. threads used by OpenSWR (limited by number of hardware threads) + 'KNOB_MAX_WORKER_THREADS': '65535', + # details in https://gitlab.version.fz-juelich.de/vis/vis-software/issues/14 + # more knob defs: https://github.com/mesa3d/mesa/blob/master/src/gallium/docs/source/drivers/openswr/knobs.rst + 'CATALYST_IMPLEMENTATION_NAME': 'paraview', + 'CATALYST_IMPLEMENTATION_PATHS': '%(installdir)s/lib64/catalyst', + # details in https://catalyst-in-situ.readthedocs.io/en/latest/for_simulation_developers.html#catalyst-initialize +} + +modextrapaths = { + 'PYTHONPATH': [ + 'lib64/python%(pyshortver)s/site-packages', + 'lib64/python%(pyshortver)s/site-packages/vtkmodules' # required by Trilinos Catalyst adapter + ], +} + +moduleclass = 'vis' diff --git a/Golden_Repo/p/ParaView/ParaView-5.11.0-foss-2022a.eb b/Golden_Repo/p/ParaView/ParaView-5.11.0-foss-2022a.eb new file mode 100644 index 0000000000000000000000000000000000000000..31ed6285da39e037542993f9a152cc2b3abcabdd --- /dev/null +++ b/Golden_Repo/p/ParaView/ParaView-5.11.0-foss-2022a.eb @@ -0,0 +1,350 @@ +easyblock = 'CMakeMake' + +name = 'ParaView' +version = '5.11.0' + +homepage = "http://www.paraview.org" +description = "Paraview is a scientific parallel visualizer." + +toolchain = {'name': 'foss', 'version': '2022a'} +toolchainopts = {'pic': True, 'usempi': True} + +local_dwnlsfx_src = 'download.php?submit=Download&version=v%(version_major_minor)s&type=source&os=Sources&downloadFile=' +source_urls = [('http://www.paraview.org/paraview-downloads/%s' % + local_dwnlsfx_src)] +sources = [("ParaView-v%(version)s.tar.gz")] + +patches = [ + 'cdireader_update_issue5715.patch', + 'parflowreader_fix-nlohmann_merge6050.patch', +] + +checksums = [ + '68b1c6d15dd67ec442f964460c56212417e8af2a96763001f8548eb3cbc5ce87', + '064d6878409d9133ad56ce363503a000f7b4617d0c912fd81dd772994f6b5ac2', # cdireader patch + 'eb8b6967782bb47e81df129b0d8e192bbf31f11f815d0f53d1c5b4e53da95fd6', # parflowreader patch +] + +builddependencies = [ + ('CMake', '3.23.1'), + ('git', '2.36.0', '-nodocs'), + ('pkgconf', '1.8.0'), +] + +dependencies = [ + ('Python', '3.10.4'), + ('Boost', '1.79.0'), + ('X11', '20220504'), + ('bzip2', '1.0.8'), + ('HDF5', '1.12.2'), + ('ADIOS2', '2.8.3'), + ('FFmpeg', '4.4.2'), + ('Embree', '3.13.5'), + ('OSPRay', '2.10.0'), + ('libpng', '1.6.37'), + ('expat', '2.4.8'), + ('freetype', '2.12.1'), + ('libjpeg-turbo', '2.1.3'), + ('libxml2', '2.9.13'), + ('LibTIFF', '4.3.0'), + ('zlib', '1.2.12'), + ('netCDF', '4.9.0'), + ('netCDF-C++4', '4.3.1'), + ('netCDF-Fortran', '4.6.0'), + ('nlohmann_json', '3.10.5'), # for ParFlow plugin + ('libcdi', '2.1.1', '', ('gcccoremkl', '11.3.0-2022.1.0')), # for CDI plugin + ('mpi4py', '3.1.4'), + ('double-conversion', '3.2.0'), + ('Eigen', '3.4.0'), + ('Qt5', '5.15.5'), + ('SciPy-Stack', '2022a', '', ('gcccoremkl', '11.3.0-2022.1.0')), + ('OpenGL', '2022a'), + ('Catalyst', '2.0.0-rc3'), + ('ParaViewData', '5.11.0'), + ('VTKData', '9.2.5'), +] + +separate_build_dir = True + +# ensure we do not use a too advanced GL-version at config/build-time, which might not be available at run-time +preconfigopts = "export __EGL_VENDOR_LIBRARY_FILENAMES=${EBROOTOPENGL}/share/glvnd/egl_vendor.d/50_mesa.json && " +prebuildopts = "export __EGL_VENDOR_LIBRARY_FILENAMES=${EBROOTOPENGL}/share/glvnd/egl_vendor.d/50_mesa.json && " + +######################################################################################## +# check ParaView Superbuild options # +# https://gitlab.kitware.com/paraview/paraview-superbuild/tree/master # +# # +# check ParaView Spack options # +# https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/paraview/package.py +# # +# check ParaView Build documenation # +# https://gitlab.kitware.com/paraview/paraview/blob/master/Documentation/dev/build.md # +######################################################################################## + +local_buildsrc = '%(builddir)s/easybuild_obj' +local_installsrc = '%(installdir)s/debugsrc' + +# --- general settings --- # +configopts = '-DCMAKE_VERBOSE_MAKEFILE=ON ' +configopts += '-DCMAKE_CXX_FLAGS="-fdebug-prefix-map=%s=%s $CMAKE_CXX_FLAGS" ' % (local_buildsrc, local_installsrc) +configopts += '-DCMAKE_C_FLAGS="-fdebug-prefix-map=%s=%s $CMAKE_C_FLAGS" ' % (local_buildsrc, local_installsrc) +configopts += '-DCMAKE_CXX_STANDARD=11 ' +configopts += '-DPARAVIEW_BUILD_LEGACY_SILENT=ON ' + +# https://forum.openframeworks.cc/t/nvidia-drivers-pthreads-and-segfaults/2524 +# configopts += '-DCMAKE_CXX_FLAGS="-lpthread $CMAKE_CXX_FLAGS" ' +# configopts += '-DCMAKE_C_FLAGS="-lpthread $CMAKE_C_FLAGS" ' + +configopts += '-DPARAVIEW_BUILD_EDITION=CANONICAL ' +configopts += '-DPARAVIEW_BUILD_WITH_KITS=OFF ' +configopts += '-DPARAVIEW_USE_QT=ON ' + +# --- tuning --- # +# better disable for now: https://discourse.paraview.org/t/array-dispatch-issues/10328 +# configopts += '-DVTK_BUILD_SCALED_SOA_ARRAYS=OFF ' +# configopts += '-DVTK_DISPATCH_SOA_ARRAYS=OFF ' +# configopts += '-DVTK_DISPATCH_TYPED_ARRAYS=OFF ' + +# --- web --- # +configopts += '-DPARAVIEW_ENABLE_WEB=ON ' +configopts += '-DPARAVIEW_USE_QTWEBENGINE=ON ' +configopts += '-DVTK_MODULE_ENABLE_ParaView_PVWebPython=YES ' + +# --- python --- # +configopts += '-DPARAVIEW_USE_PYTHON=ON ' +configopts += "-DPython3_EXECUTABLE=$EBROOTPYTHON/bin/python " + +configopts += '-DVTK_PYTHON_VERSION=3 ' +configopts += '-DVTK_NO_PYTHON_THREADS=OFF ' +# visibility depends on VTK_NO_PYTHON_THREADS=OFF +configopts += '-DVTK_PYTHON_FULL_THREADSAFE=OFF ' +# If you pass VTK_PYTHON_FULL_THREADSAFE to true, then each and every call to python will be protected with GIL, +# ensuring that you can have eg. other python interpreter in your application and still use python wrapping in vtk. + +# --- VTKm --- # +configopts += '-DPARAVIEW_USE_VTKM=ON ' +configopts += '-DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmCore=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmDataModel=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmFilters=YES ' +configopts += '-DVTKm_Vectorization=AVX2 ' +# configopts += '-DVTKm_ENABLE_KOKKOS=OFF ' +# configopts += '-DVTKm_ENABLE_TBB=OFF ' +# configopts += '-DVTKm_ENABLE_CUDA=ON ' +# configopts += '-DVTKm_ENABLE_LOGGING=ON ' + +# --- parallel (on-node) --- # +# https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/ +configopts += '-DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP ' +configopts += '-DVTK_MAX_THREADS=64 ' +configopts += '-DVTKm_ENABLE_OPENMP=ON ' + +# --- parallel (distributed) --- # +configopts += '-DMPIEXEC_MAX_NUMPROCS=24 ' +configopts += '-DPARAVIEW_USE_MPI=ON ' +configopts += '-DVTKm_ENABLE_MPI=ON ' + +# --- IO --- # +configopts += '-DXDMF_BUILD_MPI=ON ' +configopts += '-DPARAVIEW_ENABLE_XDMF3=ON ' +configopts += '-DPARAVIEW_ENABLE_ADIOS2=OFF ' # error: adios2.h not found +# configopts += '-DPARAVIEW_PLUGIN_ENABLE_AdiosReaderPixie=ON ' # req. ADIOS1 +# configopts += '-DPARAVIEW_PLUGIN_ENABLE_AdiosReaderStaging=ON ' # req. ADIOS1 +configopts += '-DVTKm_ENABLE_HDF5_IO=ON ' + +# --- large data --- # +configopts += '-DVTK_USE_64BIT_IDS=ON ' + +# --- rendering --- # + +# OpenGL (hardware) +# https://kitware.github.io/paraview-docs/latest/cxx/Offscreen.html +# If VTK_OPENGL_HAS_EGL or VTK_OPENGL_HAS_OSMESA is ON, the build supports headless rendering, +# otherwise VTK_USE_X must be ON and the build does not support headless, +# but can still support offscreen rendering. +# If VTK_USE_X is OFF, then either VTK_OPENGL_HAS_OSMESA or VTK_OPENGL_HAS_EGL must be ON. +# Then the build does not support onscreen rendering, but only headless rendering. +# If PARAVIEW_BUILD_QT_GUI is ON and VTK_USE_X is ON, while ParaView command line tools won't link against +# or use X calls, Qt will and hence an accessible X server is still needed to run the desktop client. +# If VTK_OPENGL_HAS_OSMESA is ON, and VTK_USE_X is ON, +# then all the OpenGL and OSMesa variables should point to the Mesa libraries. +# Likewise, if VTK_OPENGL_HAS_EGL is ON and VTK_USE_X is ON, then all the OpenGL and EGL variables +# should point to the system libraries providing both, typically the NVidia libraries. + +configopts += '-DOpenGL_GL_PREFERENCE=GLVND ' +configopts += '-DVTK_REPORT_OPENGL_ERRORS_IN_RELEASE_BUILDS=OFF ' + +configopts += "-DOPENGL_INCLUDE_DIR=${EBROOTOPENGL}/include " +configopts += "-DOPENGL_GLX_INCLUDE_DIR=${EBROOTOPENGL}/include " +configopts += "-DOPENGL_EGL_INCLUDE_DIR=${EBROOTOPENGL}/include " +# configopts += "-DOPENGL_xmesa_INCLUDE_DIR=IGNORE " + +configopts += "-DOPENGL_opengl_LIBRARY=${EBROOTOPENGL}/lib/libOpenGL.so.0 " +configopts += "-DOPENGL_gl_LIBRARY=${EBROOTOPENGL}/lib/libGL.so " +configopts += "-DOPENGL_glx_LIBRARY=${EBROOTOPENGL}/lib/libGLX.so.0 " +configopts += "-DOPENGL_glu_LIBRARY=${EBROOTOPENGL}/lib/libGLU.so " +configopts += "-DOPENGL_egl_LIBRARY=${EBROOTOPENGL}/lib/libEGL.so.1 " + +# OpenGL over X +configopts += '-DVTK_USE_X=ON ' # OFF:headless rendering +# already considered by Qt (https://gitlab.kitware.com/lorensen/vtk/commit/b29f6db3f746d84f830c81e4212e48db192e4dbb) +configopts += '-DVTK_DEFAULT_RENDER_WINDOW_OFFSCREEN=OFF ' +# http://www.paraview.org/Wiki/ParaView_And_Mesa_3D +configopts += '-DVTK_OPENGL_HAS_OSMESA=OFF ' + +# EGL (off-screen rendering with OpenGL, but without the need for X) +# call pvserver with –egl-device-index=0 or 1 and –disable-xdisplay-test +# configopts += '-DVTK_OPENGL_HAS_EGL=ON ' +# configopts += '-DVTK_OPENGL_HAS_OSMESA=OFF ' # http://www.paraview.org/Wiki/ParaView_And_Mesa_3D +# configopts += '-DVTK_USE_X=OFF ' +# configopts += '-DVTK_DEFAULT_EGL_DEVICE_INDEX=0 ' +# #configopts += '-DEGL_INCLUDE_DIR=${EBROOTOPENGL}/include/EGL/ ' # https://www.khronos.org/registry/EGL/ +# #configopts += '-DEGL_LIBRARY=${EBROOTOPENGL}/lib/libEGL.so.1 ' +# #configopts += '-DEGL_opengl_LIBRARY=${EBROOTOPENGL}/lib/libOpenGL.so.0 ' +# #configopts += '-DEGL_gldispatch_LIBRARY=${EBROOTOPENGL}/lib/libGLdispatch.so.0 ' # <path_to_libGLdispatch.so.0> + +# OSMesa (software) +# With OSMesa the DISPLAY variable has no meaning and is not needed +# When ON, implies that ParaView can use OSMesa to support headless modes of operation. +# configopts += '-DVTK_OPENGL_HAS_OSMESA=ON ' # http://www.paraview.org/Wiki/ParaView_And_Mesa_3D +# configopts += '-DVTK_USE_X=OFF ' +# configopts += '-DVTK_DEFAULT_RENDER_WINDOW_OFFSCREEN=ON ' +# configopts += '-DOSMESA_INCLUDE_DIR=${EBROOTOPENGL}/include ' +# configopts += '-DOSMESA_LIBRARY=${EBROOTOPENGL}/lib/libOSMesa.so ' + +# Raytracing +configopts += '-DPARAVIEW_ENABLE_RAYTRACING=ON ' +configopts += '-DVTK_ENABLE_OSPRAY=ON ' +configopts += '-DVTK_ENABLE_VISRTX=OFF ' + +configopts += "-Dospray_DIR=${EBROOTOSPRAY} " +configopts += "-Dembree_DIR=${EBROOTEMBREE}/lib64/cmake/embree-3.13.5 " +configopts += '-DVTKOSPRAY_ENABLE_DENOISER=ON ' + +# configopts += '-DPARAVIEW_PLUGIN_ENABLE_pvNVIDIAIndeX=YES ' + +# --- extra features --- # +configopts += '-DPARAVIEW_PLUGIN_ENABLE_GeographicalMap=ON ' + +configopts += "-DFFMPEG_ROOT=$EBROOTFFMPEG " +configopts += '-DPARAVIEW_ENABLE_FFMPEG=ON ' +configopts += '-DVTK_MODULE_ENABLE_VTK_IOFFMPEG=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_IOVideo=YES ' + +configopts += '-DVTK_MODULE_ENABLE_VTK_DICOMParser=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersReebGraph=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersSMP=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersSelection=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersTopology=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersTexture=YES ' +# configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersStatisticsGnu=YES ' +# configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersMatlab=YES ' + +# --- coupling --- # +configopts += '-DPARAVIEW_ENABLE_CATALYST=ON ' +configopts += '-DVTK_MODULE_ENABLE_ParaView_InSitu=YES ' +# configopts += '-DVTK_MODULE_USE_EXTERNAL_ParaView_vtkcatalyst=ON ' +configopts += '-Dcatalyst_DIR=${EBROOTCATALYST}/lib64/cmake/catalyst-2.0/ ' + +# --- development & testing --- # +configopts += '-DPARAVIEW_INSTALL_DEVELOPMENT_FILES=ON ' +configopts += '-DPARAVIEW_BUILD_DEVELOPER_DOCUMENTATION=OFF ' +configopts += '-DPARAVIEW_ENABLE_EXAMPLES=OFF ' +configopts += '-DPARAVIEW_BUILD_TESTING=OFF ' +configopts += '-DPARAVIEW_BUILD_VTK_TESTING=OFF ' + +# --- external data --- # +# https://cmake.org/cmake/help/latest/module/ExternalData.html +# https://gitlab.kitware.com/vtk/vtk/blob/master/Documentation/dev/git/data.md +# configopts += '-DCTEST_TEST_TIMEOUT=10800 ' # unknown setting +# download inactivity, 0 = no timeout +configopts += '-DExternalData_TIMEOUT_INACTIVITY=10 ' +# download abs. time, 0 = no timeout +configopts += '-DExternalData_TIMEOUT_ABSOLUTE=60 ' +# Exclude test data download from default 'all' target. +configopts += '-DPARAVIEW_DATA_EXCLUDE_FROM_ALL=ON ' +# Local directory holding ExternalData objects in the layout %(algo)/%(hash). +configopts += '-DPARAVIEW_DATA_STORE=${EBROOTPARAVIEWDATA}/.ExternalData ' +configopts += '-DVTK_DATA_STORE=${EBROOTVTKDATA}/.ExternalData ' +# Local directory holding the real data files of ExternalData. +configopts += '-DExternalData_BINARY_ROOT=${EBROOTPARAVIEWDATA} ' +# we need to combine VTK and ParaView's External data files as there can only be one ExternalData_BINARY_ROOT + +# --- XDMF options --- # +configopts += '-DXDMF_USE_BZIP2=ON ' +configopts += '-DXDMF_USE_GZIP=ON ' + +# --- VTK external libraries --- # +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_expat=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_freetype=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_hdf5=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_jpeg=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_libxml2=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_mpi4py=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_netcdf=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_png=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_tiff=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_zlib=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_doubleconversion=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_eigen=ON ' + +# --- ParaView Extra-Reader --- # +configopts += '-DPARAVIEW_PLUGIN_ENABLE_CDIReader=ON ' +configopts += '-DPARAVIEW_PLUGIN_ENABLE_ParFlow=ON ' +configopts += '-DPARAVIEW_ENABLE_MOTIONFX=ON ' +# configopts += '-DPARAVIEW_ENABLE_FIDES=ON ' # req. ADIOS2 as dependency +# configopts += '-DPARAVIEW_ENABLE_GDAL=ON ' # req. GDAL as dependency +# configopts += '-DPARAVIEW_ENABLE_LAS=ON ' # req. LAS as dependency +# configopts += '-DPARAVIEW_ENABLE_PDAL=ON ' # req. PDAL as dependency +# configopts += '-DPARAVIEW_ENABLE_OPENVDB=ON ' # req. OpenVDB as dependency + +# https://gitlab.kitware.com/paraview/visitbridge/-/blob/master/databases/CMakeLists.txt +configopts += '-DPARAVIEW_ENABLE_VISITBRIDGE=ON ' +configopts += '-DVTK_MODULE_ENABLE_ParaView_IOVisItBridge=YES ' +# configopts += '-DVISIT_BUILD_READER_Boxlib3D=ON ' # req. external dependency +# configopts += '-DVISIT_BUILD_READER_Mili=ON ' # req. external dependency +# configopts += '-DVISIT_BUILD_READER_Silo=ON ' # req. external dependency +# https://gitlab.kitware.com/vtk/vtk/-/merge_requests/7503 +# configopts += '-DVISIT_BUILD_READER_Nek5000=ON ' # MR still open + +postinstallcmds = [ + 'python -m compileall %(installdir)s/lib64/python%(pyshortver)s/site-packages/', + # 'cp -a %s %s' % (local_buildsrc, local_installsrc), # copy source from build dir to install dir + # '', # move debug info to separate files: + # http://stackoverflow.com/questions/866721/how-to-generate-gcc-debug-symbol-outside-the-build-target + # '', # debugedit -i --base-dir=%(builddir)s/ParaView-v%(version)s --dest-dir= %(installdir)s/src <file.debug> + # # change path to source in debug info +] + +modextravars = { + 'PARAVIEW_VTK_DIR': '%(installdir)s/lib64/cmake/paraview-%(version_major_minor)/vtk', + # 'CUDA_VISIBLE_DEVICES': '0,1', + # OpenSWR fully supports OpenGL 3.0 and most of 3.3, but ParaView requires 3.3 -> clame to fully support 3.3 + 'MESA_GL_VERSION_OVERRIDE': '3.3', + 'MESA_GLSL_VERSION_OVERRIDE': '330', + # OpenMP will choose an optimum number of threads by default, which is usually the number of cores + # 'OMP_NUM_THREADS': '28', # fix number of threads used by paraview filters and parallel sections in the code + # threads used by ospray - details https://github.com/ospray/ospray/blob/release-2.0.x/ospray/api/Device.cpp#L88 + # unset => OSPRAY uses all hardware threads + # 'OSPRAY_THREADS': '14', # OSPRay < 2.0 + # 'OSPRAY_NUM_THREADS': '14', # OSPRay >= 2.0 + # When TBB is used for OSPRAY: tbb::task_scheduler_init::default_num_threads() is default if no OSPRAY_NUM_THREADS + # https://github.com/ospray/ospcommon/blob/master/ospcommon/tasking/detail/tasking_system_init.cpp#L47 + # https://www.threadingbuildingblocks.org/docs/doxygen/a00150.html + # more ospray definitions: https://www.ospray.org/documentation.html#environment-variables + # max. threads used by OpenSWR (limited by number of hardware threads) + 'KNOB_MAX_WORKER_THREADS': '65535', + # details in https://gitlab.version.fz-juelich.de/vis/vis-software/issues/14 + # more knob defs: https://github.com/mesa3d/mesa/blob/master/src/gallium/docs/source/drivers/openswr/knobs.rst + 'CATALYST_IMPLEMENTATION_NAME': 'paraview', + 'CATALYST_IMPLEMENTATION_PATHS': '%(installdir)s/lib64/catalyst', + # details in https://catalyst-in-situ.readthedocs.io/en/latest/for_simulation_developers.html#catalyst-initialize +} + +modextrapaths = { + 'PYTHONPATH': [ + 'lib64/python%(pyshortver)s/site-packages', + 'lib64/python%(pyshortver)s/site-packages/vtkmodules' # required by Trilinos Catalyst adapter + ], +} + +moduleclass = 'vis' diff --git a/Golden_Repo/p/ParaView/ParaView-5.11.0-gpsmkl-2022a-EGL.eb b/Golden_Repo/p/ParaView/ParaView-5.11.0-gpsmkl-2022a-EGL.eb new file mode 100644 index 0000000000000000000000000000000000000000..12be5b994e8953b8d6347c7d2561ce86f0665dea --- /dev/null +++ b/Golden_Repo/p/ParaView/ParaView-5.11.0-gpsmkl-2022a-EGL.eb @@ -0,0 +1,351 @@ +easyblock = 'CMakeMake' + +name = 'ParaView' +version = '5.11.0' +versionsuffix = '-EGL' + +homepage = "http://www.paraview.org" +description = "Paraview is a scientific parallel visualizer." + +toolchain = {'name': 'gpsmkl', 'version': '2022a'} +toolchainopts = {'pic': True, 'usempi': True} + +local_dwnlsfx_src = 'download.php?submit=Download&version=v%(version_major_minor)s&type=source&os=Sources&downloadFile=' +source_urls = [('http://www.paraview.org/paraview-downloads/%s' % + local_dwnlsfx_src)] +sources = [("ParaView-v%(version)s.tar.gz")] + +patches = [ + 'cdireader_update_issue5715.patch', + 'parflowreader_fix-nlohmann_merge6050.patch', +] + +checksums = [ + '68b1c6d15dd67ec442f964460c56212417e8af2a96763001f8548eb3cbc5ce87', + '064d6878409d9133ad56ce363503a000f7b4617d0c912fd81dd772994f6b5ac2', # cdireader patch + 'eb8b6967782bb47e81df129b0d8e192bbf31f11f815d0f53d1c5b4e53da95fd6', # parflowreader patch +] + +builddependencies = [ + ('CMake', '3.23.1'), + ('git', '2.36.0', '-nodocs'), + ('pkgconf', '1.8.0'), +] + +dependencies = [ + ('Python', '3.10.4'), + ('Boost', '1.79.0'), + ('X11', '20220504'), + ('bzip2', '1.0.8'), + ('HDF5', '1.12.2'), + ('ADIOS2', '2.8.3'), + ('FFmpeg', '4.4.2'), + ('Embree', '3.13.5'), + ('OSPRay', '2.10.0'), + ('libpng', '1.6.37'), + ('expat', '2.4.8'), + ('freetype', '2.12.1'), + ('libjpeg-turbo', '2.1.3'), + ('libxml2', '2.9.13'), + ('LibTIFF', '4.3.0'), + ('zlib', '1.2.12'), + ('netCDF', '4.9.0'), + ('netCDF-C++4', '4.3.1'), + ('netCDF-Fortran', '4.6.0'), + ('nlohmann_json', '3.10.5'), # for ParFlow plugin + ('libcdi', '2.1.1', '', ('gcccoremkl', '11.3.0-2022.1.0')), # for CDI plugin + ('mpi4py', '3.1.4'), + ('double-conversion', '3.2.0'), + ('Eigen', '3.4.0'), + ('Qt5', '5.15.5'), + ('SciPy-Stack', '2022a', '', ('gcccoremkl', '11.3.0-2022.1.0')), + ('OpenGL', '2022a'), + ('Catalyst', '2.0.0-rc3'), + ('ParaViewData', '5.11.0'), + ('VTKData', '9.2.5'), +] + +separate_build_dir = True + +# ensure we do not use a too advanced GL-version at config/build-time, which might not be available at run-time +preconfigopts = "export __EGL_VENDOR_LIBRARY_FILENAMES=${EBROOTOPENGL}/share/glvnd/egl_vendor.d/50_mesa.json && " +prebuildopts = "export __EGL_VENDOR_LIBRARY_FILENAMES=${EBROOTOPENGL}/share/glvnd/egl_vendor.d/50_mesa.json && " + +######################################################################################## +# check ParaView Superbuild options # +# https://gitlab.kitware.com/paraview/paraview-superbuild/tree/master # +# # +# check ParaView Spack options # +# https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/paraview/package.py +# # +# check ParaView Build documenation # +# https://gitlab.kitware.com/paraview/paraview/blob/master/Documentation/dev/build.md # +######################################################################################## + +local_buildsrc = '%(builddir)s/easybuild_obj' +local_installsrc = '%(installdir)s/debugsrc' + +# --- general settings --- # +configopts = '-DCMAKE_VERBOSE_MAKEFILE=ON ' +configopts += '-DCMAKE_CXX_FLAGS="-fdebug-prefix-map=%s=%s $CMAKE_CXX_FLAGS" ' % (local_buildsrc, local_installsrc) +configopts += '-DCMAKE_C_FLAGS="-fdebug-prefix-map=%s=%s $CMAKE_C_FLAGS" ' % (local_buildsrc, local_installsrc) +configopts += '-DCMAKE_CXX_STANDARD=11 ' +configopts += '-DPARAVIEW_BUILD_LEGACY_SILENT=ON ' + +# https://forum.openframeworks.cc/t/nvidia-drivers-pthreads-and-segfaults/2524 +# configopts += '-DCMAKE_CXX_FLAGS="-lpthread $CMAKE_CXX_FLAGS" ' +# configopts += '-DCMAKE_C_FLAGS="-lpthread $CMAKE_C_FLAGS" ' + +configopts += '-DPARAVIEW_BUILD_EDITION=CANONICAL ' +configopts += '-DPARAVIEW_BUILD_WITH_KITS=OFF ' +configopts += '-DPARAVIEW_USE_QT=OFF ' + +# --- tuning --- # +# better disable for now: https://discourse.paraview.org/t/array-dispatch-issues/10328 +# configopts += '-DVTK_BUILD_SCALED_SOA_ARRAYS=OFF ' +# configopts += '-DVTK_DISPATCH_SOA_ARRAYS=OFF ' +# configopts += '-DVTK_DISPATCH_TYPED_ARRAYS=OFF ' + +# --- web --- # +configopts += '-DPARAVIEW_ENABLE_WEB=ON ' +configopts += '-DPARAVIEW_USE_QTWEBENGINE=ON ' +configopts += '-DVTK_MODULE_ENABLE_ParaView_PVWebPython=YES ' + +# --- python --- # +configopts += '-DPARAVIEW_USE_PYTHON=ON ' +configopts += "-DPython3_EXECUTABLE=$EBROOTPYTHON/bin/python " + +configopts += '-DVTK_PYTHON_VERSION=3 ' +configopts += '-DVTK_NO_PYTHON_THREADS=OFF ' +# visibility depends on VTK_NO_PYTHON_THREADS=OFF +configopts += '-DVTK_PYTHON_FULL_THREADSAFE=OFF ' +# If you pass VTK_PYTHON_FULL_THREADSAFE to true, then each and every call to python will be protected with GIL, +# ensuring that you can have eg. other python interpreter in your application and still use python wrapping in vtk. + +# --- VTKm --- # +configopts += '-DPARAVIEW_USE_VTKM=ON ' +configopts += '-DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmCore=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmDataModel=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmFilters=YES ' +configopts += '-DVTKm_Vectorization=AVX2 ' +# configopts += '-DVTKm_ENABLE_KOKKOS=OFF ' +# configopts += '-DVTKm_ENABLE_TBB=OFF ' +# configopts += '-DVTKm_ENABLE_CUDA=ON ' +# configopts += '-DVTKm_ENABLE_LOGGING=ON ' + +# --- parallel (on-node) --- # +# https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/ +configopts += '-DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP ' +configopts += '-DVTK_MAX_THREADS=64 ' +configopts += '-DVTKm_ENABLE_OPENMP=ON ' + +# --- parallel (distributed) --- # +configopts += '-DMPIEXEC_MAX_NUMPROCS=24 ' +configopts += '-DPARAVIEW_USE_MPI=ON ' +configopts += '-DVTKm_ENABLE_MPI=ON ' + +# --- IO --- # +configopts += '-DXDMF_BUILD_MPI=ON ' +configopts += '-DPARAVIEW_ENABLE_XDMF3=ON ' +configopts += '-DPARAVIEW_ENABLE_ADIOS2=OFF ' # error: adios2.h not found +# configopts += '-DPARAVIEW_PLUGIN_ENABLE_AdiosReaderPixie=ON ' # req. ADIOS1 +# configopts += '-DPARAVIEW_PLUGIN_ENABLE_AdiosReaderStaging=ON ' # req. ADIOS1 +configopts += '-DVTKm_ENABLE_HDF5_IO=ON ' + +# --- large data --- # +configopts += '-DVTK_USE_64BIT_IDS=ON ' + +# --- rendering --- # + +# OpenGL (hardware) +# https://kitware.github.io/paraview-docs/latest/cxx/Offscreen.html +# If VTK_OPENGL_HAS_EGL or VTK_OPENGL_HAS_OSMESA is ON, the build supports headless rendering, +# otherwise VTK_USE_X must be ON and the build does not support headless, +# but can still support offscreen rendering. +# If VTK_USE_X is OFF, then either VTK_OPENGL_HAS_OSMESA or VTK_OPENGL_HAS_EGL must be ON. +# Then the build does not support onscreen rendering, but only headless rendering. +# If PARAVIEW_BUILD_QT_GUI is ON and VTK_USE_X is ON, while ParaView command line tools won't link against +# or use X calls, Qt will and hence an accessible X server is still needed to run the desktop client. +# If VTK_OPENGL_HAS_OSMESA is ON, and VTK_USE_X is ON, +# then all the OpenGL and OSMesa variables should point to the Mesa libraries. +# Likewise, if VTK_OPENGL_HAS_EGL is ON and VTK_USE_X is ON, then all the OpenGL and EGL variables +# should point to the system libraries providing both, typically the NVidia libraries. + +configopts += '-DOpenGL_GL_PREFERENCE=GLVND ' +configopts += '-DVTK_REPORT_OPENGL_ERRORS_IN_RELEASE_BUILDS=OFF ' + +configopts += "-DOPENGL_INCLUDE_DIR=${EBROOTOPENGL}/include " +configopts += "-DOPENGL_GLX_INCLUDE_DIR=${EBROOTOPENGL}/include " +configopts += "-DOPENGL_EGL_INCLUDE_DIR=${EBROOTOPENGL}/include " +# configopts += "-DOPENGL_xmesa_INCLUDE_DIR=IGNORE " + +configopts += "-DOPENGL_opengl_LIBRARY=${EBROOTOPENGL}/lib/libOpenGL.so.0 " +configopts += "-DOPENGL_gl_LIBRARY=${EBROOTOPENGL}/lib/libGL.so " +configopts += "-DOPENGL_glx_LIBRARY=${EBROOTOPENGL}/lib/libGLX.so.0 " +configopts += "-DOPENGL_glu_LIBRARY=${EBROOTOPENGL}/lib/libGLU.so " +configopts += "-DOPENGL_egl_LIBRARY=${EBROOTOPENGL}/lib/libEGL.so.1 " + +# OpenGL over X +# configopts += '-DVTK_USE_X=ON ' # OFF:headless rendering +# already considered by Qt (https://gitlab.kitware.com/lorensen/vtk/commit/b29f6db3f746d84f830c81e4212e48db192e4dbb) +# configopts += '-DVTK_DEFAULT_RENDER_WINDOW_OFFSCREEN=OFF ' +# configopts += '-DVTK_OPENGL_HAS_OSMESA=OFF ' # http://www.paraview.org/Wiki/ParaView_And_Mesa_3D + +# EGL (off-screen rendering with OpenGL, but without the need for X) +# call pvserver with –egl-device-index=0 or 1 and –disable-xdisplay-test +configopts += '-DVTK_OPENGL_HAS_EGL=ON ' +# http://www.paraview.org/Wiki/ParaView_And_Mesa_3D +configopts += '-DVTK_OPENGL_HAS_OSMESA=OFF ' +configopts += '-DVTK_USE_X=OFF ' +configopts += '-DVTK_DEFAULT_EGL_DEVICE_INDEX=0 ' +# configopts += '-DEGL_INCLUDE_DIR=${EBROOTOPENGL}/include/EGL/ ' # https://www.khronos.org/registry/EGL/ +# configopts += '-DEGL_LIBRARY=${EBROOTOPENGL}/lib/libEGL.so.1 ' +# configopts += '-DEGL_opengl_LIBRARY=${EBROOTOPENGL}/lib/libOpenGL.so.0 ' +# configopts += '-DEGL_gldispatch_LIBRARY=${EBROOTOPENGL}/lib/libGLdispatch.so.0 ' # <path_to_libGLdispatch.so.0> + +# OSMesa (software) +# With OSMesa the DISPLAY variable has no meaning and is not needed +# When ON, implies that ParaView can use OSMesa to support headless modes of operation. +# configopts += '-DVTK_OPENGL_HAS_OSMESA=ON ' # http://www.paraview.org/Wiki/ParaView_And_Mesa_3D +# configopts += '-DVTK_USE_X=OFF ' +# configopts += '-DVTK_DEFAULT_RENDER_WINDOW_OFFSCREEN=ON ' +# configopts += '-DOSMESA_INCLUDE_DIR=${EBROOTOPENGL}/include ' +# configopts += '-DOSMESA_LIBRARY=${EBROOTOPENGL}/lib/libOSMesa.so ' + +# Raytracing +configopts += '-DPARAVIEW_ENABLE_RAYTRACING=ON ' +configopts += '-DVTK_ENABLE_OSPRAY=ON ' +configopts += '-DVTK_ENABLE_VISRTX=OFF ' + +configopts += "-Dospray_DIR=${EBROOTOSPRAY} " +configopts += "-Dembree_DIR=${EBROOTEMBREE}/lib64/cmake/embree-3.13.5 " +configopts += '-DVTKOSPRAY_ENABLE_DENOISER=ON ' + +# configopts += '-DPARAVIEW_PLUGIN_ENABLE_pvNVIDIAIndeX=YES ' + +# --- extra features --- # +configopts += '-DPARAVIEW_PLUGIN_ENABLE_GeographicalMap=ON ' + +configopts += "-DFFMPEG_ROOT=$EBROOTFFMPEG " +configopts += '-DPARAVIEW_ENABLE_FFMPEG=ON ' +configopts += '-DVTK_MODULE_ENABLE_VTK_IOFFMPEG=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_IOVideo=YES ' + +configopts += '-DVTK_MODULE_ENABLE_VTK_DICOMParser=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersReebGraph=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersSMP=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersSelection=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersTopology=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersTexture=YES ' +# configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersStatisticsGnu=YES ' +# configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersMatlab=YES ' + +# --- coupling --- # +configopts += '-DPARAVIEW_ENABLE_CATALYST=ON ' +configopts += '-DVTK_MODULE_ENABLE_ParaView_InSitu=YES ' +# configopts += '-DVTK_MODULE_USE_EXTERNAL_ParaView_vtkcatalyst=ON ' +configopts += '-Dcatalyst_DIR=${EBROOTCATALYST}/lib64/cmake/catalyst-2.0/ ' + +# --- development & testing --- # +configopts += '-DPARAVIEW_INSTALL_DEVELOPMENT_FILES=ON ' +configopts += '-DPARAVIEW_BUILD_DEVELOPER_DOCUMENTATION=OFF ' +configopts += '-DPARAVIEW_ENABLE_EXAMPLES=OFF ' +configopts += '-DPARAVIEW_BUILD_TESTING=OFF ' +configopts += '-DPARAVIEW_BUILD_VTK_TESTING=OFF ' + +# --- external data --- # +# https://cmake.org/cmake/help/latest/module/ExternalData.html +# https://gitlab.kitware.com/vtk/vtk/blob/master/Documentation/dev/git/data.md +# configopts += '-DCTEST_TEST_TIMEOUT=10800 ' # unknown setting +# download inactivity, 0 = no timeout +configopts += '-DExternalData_TIMEOUT_INACTIVITY=10 ' +# download abs. time, 0 = no timeout +configopts += '-DExternalData_TIMEOUT_ABSOLUTE=60 ' +# Exclude test data download from default 'all' target. +configopts += '-DPARAVIEW_DATA_EXCLUDE_FROM_ALL=ON ' +# Local directory holding ExternalData objects in the layout %(algo)/%(hash). +configopts += '-DPARAVIEW_DATA_STORE=${EBROOTPARAVIEWDATA}/.ExternalData ' +configopts += '-DVTK_DATA_STORE=${EBROOTVTKDATA}/.ExternalData ' +# Local directory holding the real data files of ExternalData. +configopts += '-DExternalData_BINARY_ROOT=${EBROOTPARAVIEWDATA} ' +# we need to combine VTK and ParaView's External data files as there can only be one ExternalData_BINARY_ROOT + +# --- XDMF options --- # +configopts += '-DXDMF_USE_BZIP2=ON ' +configopts += '-DXDMF_USE_GZIP=ON ' + +# --- VTK external libraries --- # +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_expat=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_freetype=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_hdf5=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_jpeg=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_libxml2=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_mpi4py=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_netcdf=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_png=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_tiff=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_zlib=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_doubleconversion=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_eigen=ON ' + +# --- ParaView Extra-Reader --- # +configopts += '-DPARAVIEW_PLUGIN_ENABLE_CDIReader=ON ' +configopts += '-DPARAVIEW_PLUGIN_ENABLE_ParFlow=ON ' +configopts += '-DPARAVIEW_ENABLE_MOTIONFX=ON ' +# configopts += '-DPARAVIEW_ENABLE_FIDES=ON ' # req. ADIOS2 as dependency +# configopts += '-DPARAVIEW_ENABLE_GDAL=ON ' # req. GDAL as dependency +# configopts += '-DPARAVIEW_ENABLE_LAS=ON ' # req. LAS as dependency +# configopts += '-DPARAVIEW_ENABLE_PDAL=ON ' # req. PDAL as dependency +# configopts += '-DPARAVIEW_ENABLE_OPENVDB=ON ' # req. OpenVDB as dependency + +# https://gitlab.kitware.com/paraview/visitbridge/-/blob/master/databases/CMakeLists.txt +configopts += '-DPARAVIEW_ENABLE_VISITBRIDGE=ON ' +configopts += '-DVTK_MODULE_ENABLE_ParaView_IOVisItBridge=YES ' +# configopts += '-DVISIT_BUILD_READER_Boxlib3D=ON ' # req. external dependency +# configopts += '-DVISIT_BUILD_READER_Mili=ON ' # req. external dependency +# configopts += '-DVISIT_BUILD_READER_Silo=ON ' # req. external dependency +# https://gitlab.kitware.com/vtk/vtk/-/merge_requests/7503 +# configopts += '-DVISIT_BUILD_READER_Nek5000=ON ' # MR still open + +postinstallcmds = [ + 'python -m compileall %(installdir)s/lib64/python%(pyshortver)s/site-packages/', + # 'cp -a %s %s' % (local_buildsrc, local_installsrc), # copy source from build dir to install dir + # '', # move debug info to separate files: + # http://stackoverflow.com/questions/866721/how-to-generate-gcc-debug-symbol-outside-the-build-target + # '', # debugedit -i --base-dir=%(builddir)s/ParaView-v%(version)s --dest-dir= %(installdir)s/src <file.debug> + # # change path to source in debug info +] + +modextravars = { + 'PARAVIEW_VTK_DIR': '%(installdir)s/lib64/cmake/paraview-%(version_major_minor)/vtk', + # 'CUDA_VISIBLE_DEVICES': '0,1', + # OpenSWR fully supports OpenGL 3.0 and most of 3.3, but ParaView requires 3.3 -> clame to fully support 3.3 + 'MESA_GL_VERSION_OVERRIDE': '3.3', + 'MESA_GLSL_VERSION_OVERRIDE': '330', + # OpenMP will choose an optimum number of threads by default, which is usually the number of cores + # 'OMP_NUM_THREADS': '28', # fix number of threads used by paraview filters and parallel sections in the code + # threads used by ospray - details https://github.com/ospray/ospray/blob/release-2.0.x/ospray/api/Device.cpp#L88 + # unset => OSPRAY uses all hardware threads + # 'OSPRAY_THREADS': '14', # OSPRay < 2.0 + # 'OSPRAY_NUM_THREADS': '14', # OSPRay >= 2.0 + # When TBB is used for OSPRAY: tbb::task_scheduler_init::default_num_threads() is default if no OSPRAY_NUM_THREADS + # https://github.com/ospray/ospcommon/blob/master/ospcommon/tasking/detail/tasking_system_init.cpp#L47 + # https://www.threadingbuildingblocks.org/docs/doxygen/a00150.html + # more ospray definitions: https://www.ospray.org/documentation.html#environment-variables + # max. threads used by OpenSWR (limited by number of hardware threads) + 'KNOB_MAX_WORKER_THREADS': '65535', + # details in https://gitlab.version.fz-juelich.de/vis/vis-software/issues/14 + # more knob defs: https://github.com/mesa3d/mesa/blob/master/src/gallium/docs/source/drivers/openswr/knobs.rst + 'CATALYST_IMPLEMENTATION_NAME': 'paraview', + 'CATALYST_IMPLEMENTATION_PATHS': '%(installdir)s/lib64/catalyst', + # details in https://catalyst-in-situ.readthedocs.io/en/latest/for_simulation_developers.html#catalyst-initialize +} + +modextrapaths = { + 'PYTHONPATH': [ + 'lib64/python%(pyshortver)s/site-packages', + 'lib64/python%(pyshortver)s/site-packages/vtkmodules' # required by Trilinos Catalyst adapter + ], +} + +moduleclass = 'vis' diff --git a/Golden_Repo/p/ParaView/ParaView-5.11.0-gpsmkl-2022a.eb b/Golden_Repo/p/ParaView/ParaView-5.11.0-gpsmkl-2022a.eb new file mode 100644 index 0000000000000000000000000000000000000000..680fbdd7e6f7f765ae92ecfa6e6f9bbe151f948e --- /dev/null +++ b/Golden_Repo/p/ParaView/ParaView-5.11.0-gpsmkl-2022a.eb @@ -0,0 +1,350 @@ +easyblock = 'CMakeMake' + +name = 'ParaView' +version = '5.11.0' + +homepage = "http://www.paraview.org" +description = "Paraview is a scientific parallel visualizer." + +toolchain = {'name': 'gpsmkl', 'version': '2022a'} +toolchainopts = {'pic': True, 'usempi': True} + +local_dwnlsfx_src = 'download.php?submit=Download&version=v%(version_major_minor)s&type=source&os=Sources&downloadFile=' +source_urls = [('http://www.paraview.org/paraview-downloads/%s' % + local_dwnlsfx_src)] +sources = [("ParaView-v%(version)s.tar.gz")] + +patches = [ + 'cdireader_update_issue5715.patch', + 'parflowreader_fix-nlohmann_merge6050.patch', +] + +checksums = [ + '68b1c6d15dd67ec442f964460c56212417e8af2a96763001f8548eb3cbc5ce87', + '064d6878409d9133ad56ce363503a000f7b4617d0c912fd81dd772994f6b5ac2', # cdireader patch + 'eb8b6967782bb47e81df129b0d8e192bbf31f11f815d0f53d1c5b4e53da95fd6', # parflowreader patch +] + +builddependencies = [ + ('CMake', '3.23.1'), + ('git', '2.36.0', '-nodocs'), + ('pkgconf', '1.8.0'), +] + +dependencies = [ + ('Python', '3.10.4'), + ('Boost', '1.79.0'), + ('X11', '20220504'), + ('bzip2', '1.0.8'), + ('HDF5', '1.12.2'), + ('ADIOS2', '2.8.3'), + ('FFmpeg', '4.4.2'), + ('Embree', '3.13.5'), + ('OSPRay', '2.10.0'), + ('libpng', '1.6.37'), + ('expat', '2.4.8'), + ('freetype', '2.12.1'), + ('libjpeg-turbo', '2.1.3'), + ('libxml2', '2.9.13'), + ('LibTIFF', '4.3.0'), + ('zlib', '1.2.12'), + ('netCDF', '4.9.0'), + ('netCDF-C++4', '4.3.1'), + ('netCDF-Fortran', '4.6.0'), + ('nlohmann_json', '3.10.5'), # for ParFlow plugin + ('libcdi', '2.1.1', '', ('gcccoremkl', '11.3.0-2022.1.0')), # for CDI plugin + ('mpi4py', '3.1.4'), + ('double-conversion', '3.2.0'), + ('Eigen', '3.4.0'), + ('Qt5', '5.15.5'), + ('SciPy-Stack', '2022a', '', ('gcccoremkl', '11.3.0-2022.1.0')), + ('OpenGL', '2022a'), + ('Catalyst', '2.0.0-rc3'), + ('ParaViewData', '5.11.0'), + ('VTKData', '9.2.5'), +] + +separate_build_dir = True + +# ensure we do not use a too advanced GL-version at config/build-time, which might not be available at run-time +preconfigopts = "export __EGL_VENDOR_LIBRARY_FILENAMES=${EBROOTOPENGL}/share/glvnd/egl_vendor.d/50_mesa.json && " +prebuildopts = "export __EGL_VENDOR_LIBRARY_FILENAMES=${EBROOTOPENGL}/share/glvnd/egl_vendor.d/50_mesa.json && " + +######################################################################################## +# check ParaView Superbuild options # +# https://gitlab.kitware.com/paraview/paraview-superbuild/tree/master # +# # +# check ParaView Spack options # +# https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/paraview/package.py +# # +# check ParaView Build documenation # +# https://gitlab.kitware.com/paraview/paraview/blob/master/Documentation/dev/build.md # +######################################################################################## + +local_buildsrc = '%(builddir)s/easybuild_obj' +local_installsrc = '%(installdir)s/debugsrc' + +# --- general settings --- # +configopts = '-DCMAKE_VERBOSE_MAKEFILE=ON ' +configopts += '-DCMAKE_CXX_FLAGS="-fdebug-prefix-map=%s=%s $CMAKE_CXX_FLAGS" ' % (local_buildsrc, local_installsrc) +configopts += '-DCMAKE_C_FLAGS="-fdebug-prefix-map=%s=%s $CMAKE_C_FLAGS" ' % (local_buildsrc, local_installsrc) +configopts += '-DCMAKE_CXX_STANDARD=11 ' +configopts += '-DPARAVIEW_BUILD_LEGACY_SILENT=ON ' + +# https://forum.openframeworks.cc/t/nvidia-drivers-pthreads-and-segfaults/2524 +# configopts += '-DCMAKE_CXX_FLAGS="-lpthread $CMAKE_CXX_FLAGS" ' +# configopts += '-DCMAKE_C_FLAGS="-lpthread $CMAKE_C_FLAGS" ' + +configopts += '-DPARAVIEW_BUILD_EDITION=CANONICAL ' +configopts += '-DPARAVIEW_BUILD_WITH_KITS=OFF ' +configopts += '-DPARAVIEW_USE_QT=ON ' + +# --- tuning --- # +# better disable for now: https://discourse.paraview.org/t/array-dispatch-issues/10328 +# configopts += '-DVTK_BUILD_SCALED_SOA_ARRAYS=OFF ' +# configopts += '-DVTK_DISPATCH_SOA_ARRAYS=OFF ' +# configopts += '-DVTK_DISPATCH_TYPED_ARRAYS=OFF ' + +# --- web --- # +configopts += '-DPARAVIEW_ENABLE_WEB=ON ' +configopts += '-DPARAVIEW_USE_QTWEBENGINE=ON ' +configopts += '-DVTK_MODULE_ENABLE_ParaView_PVWebPython=YES ' + +# --- python --- # +configopts += '-DPARAVIEW_USE_PYTHON=ON ' +configopts += "-DPython3_EXECUTABLE=$EBROOTPYTHON/bin/python " + +configopts += '-DVTK_PYTHON_VERSION=3 ' +configopts += '-DVTK_NO_PYTHON_THREADS=OFF ' +# visibility depends on VTK_NO_PYTHON_THREADS=OFF +configopts += '-DVTK_PYTHON_FULL_THREADSAFE=OFF ' +# If you pass VTK_PYTHON_FULL_THREADSAFE to true, then each and every call to python will be protected with GIL, +# ensuring that you can have eg. other python interpreter in your application and still use python wrapping in vtk. + +# --- VTKm --- # +configopts += '-DPARAVIEW_USE_VTKM=ON ' +configopts += '-DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmCore=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmDataModel=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmFilters=YES ' +configopts += '-DVTKm_Vectorization=AVX2 ' +# configopts += '-DVTKm_ENABLE_KOKKOS=OFF ' +# configopts += '-DVTKm_ENABLE_TBB=OFF ' +# configopts += '-DVTKm_ENABLE_CUDA=ON ' +# configopts += '-DVTKm_ENABLE_LOGGING=ON ' + +# --- parallel (on-node) --- # +# https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/ +configopts += '-DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP ' +configopts += '-DVTK_MAX_THREADS=64 ' +configopts += '-DVTKm_ENABLE_OPENMP=ON ' + +# --- parallel (distributed) --- # +configopts += '-DMPIEXEC_MAX_NUMPROCS=24 ' +configopts += '-DPARAVIEW_USE_MPI=ON ' +configopts += '-DVTKm_ENABLE_MPI=ON ' + +# --- IO --- # +configopts += '-DXDMF_BUILD_MPI=ON ' +configopts += '-DPARAVIEW_ENABLE_XDMF3=ON ' +configopts += '-DPARAVIEW_ENABLE_ADIOS2=OFF ' # error: adios2.h not found +# configopts += '-DPARAVIEW_PLUGIN_ENABLE_AdiosReaderPixie=ON ' # req. ADIOS1 +# configopts += '-DPARAVIEW_PLUGIN_ENABLE_AdiosReaderStaging=ON ' # req. ADIOS1 +configopts += '-DVTKm_ENABLE_HDF5_IO=ON ' + +# --- large data --- # +configopts += '-DVTK_USE_64BIT_IDS=ON ' + +# --- rendering --- # + +# OpenGL (hardware) +# https://kitware.github.io/paraview-docs/latest/cxx/Offscreen.html +# If VTK_OPENGL_HAS_EGL or VTK_OPENGL_HAS_OSMESA is ON, the build supports headless rendering, +# otherwise VTK_USE_X must be ON and the build does not support headless, +# but can still support offscreen rendering. +# If VTK_USE_X is OFF, then either VTK_OPENGL_HAS_OSMESA or VTK_OPENGL_HAS_EGL must be ON. +# Then the build does not support onscreen rendering, but only headless rendering. +# If PARAVIEW_BUILD_QT_GUI is ON and VTK_USE_X is ON, while ParaView command line tools won't link against +# or use X calls, Qt will and hence an accessible X server is still needed to run the desktop client. +# If VTK_OPENGL_HAS_OSMESA is ON, and VTK_USE_X is ON, +# then all the OpenGL and OSMesa variables should point to the Mesa libraries. +# Likewise, if VTK_OPENGL_HAS_EGL is ON and VTK_USE_X is ON, then all the OpenGL and EGL variables +# should point to the system libraries providing both, typically the NVidia libraries. + +configopts += '-DOpenGL_GL_PREFERENCE=GLVND ' +configopts += '-DVTK_REPORT_OPENGL_ERRORS_IN_RELEASE_BUILDS=OFF ' + +configopts += "-DOPENGL_INCLUDE_DIR=${EBROOTOPENGL}/include " +configopts += "-DOPENGL_GLX_INCLUDE_DIR=${EBROOTOPENGL}/include " +configopts += "-DOPENGL_EGL_INCLUDE_DIR=${EBROOTOPENGL}/include " +# configopts += "-DOPENGL_xmesa_INCLUDE_DIR=IGNORE " + +configopts += "-DOPENGL_opengl_LIBRARY=${EBROOTOPENGL}/lib/libOpenGL.so.0 " +configopts += "-DOPENGL_gl_LIBRARY=${EBROOTOPENGL}/lib/libGL.so " +configopts += "-DOPENGL_glx_LIBRARY=${EBROOTOPENGL}/lib/libGLX.so.0 " +configopts += "-DOPENGL_glu_LIBRARY=${EBROOTOPENGL}/lib/libGLU.so " +configopts += "-DOPENGL_egl_LIBRARY=${EBROOTOPENGL}/lib/libEGL.so.1 " + +# OpenGL over X +configopts += '-DVTK_USE_X=ON ' # OFF:headless rendering +# already considered by Qt (https://gitlab.kitware.com/lorensen/vtk/commit/b29f6db3f746d84f830c81e4212e48db192e4dbb) +configopts += '-DVTK_DEFAULT_RENDER_WINDOW_OFFSCREEN=OFF ' +# http://www.paraview.org/Wiki/ParaView_And_Mesa_3D +configopts += '-DVTK_OPENGL_HAS_OSMESA=OFF ' + +# EGL (off-screen rendering with OpenGL, but without the need for X) +# call pvserver with –egl-device-index=0 or 1 and –disable-xdisplay-test +# configopts += '-DVTK_OPENGL_HAS_EGL=ON ' +# configopts += '-DVTK_OPENGL_HAS_OSMESA=OFF ' # http://www.paraview.org/Wiki/ParaView_And_Mesa_3D +# configopts += '-DVTK_USE_X=OFF ' +# configopts += '-DVTK_DEFAULT_EGL_DEVICE_INDEX=0 ' +# #configopts += '-DEGL_INCLUDE_DIR=${EBROOTOPENGL}/include/EGL/ ' # https://www.khronos.org/registry/EGL/ +# #configopts += '-DEGL_LIBRARY=${EBROOTOPENGL}/lib/libEGL.so.1 ' +# #configopts += '-DEGL_opengl_LIBRARY=${EBROOTOPENGL}/lib/libOpenGL.so.0 ' +# #configopts += '-DEGL_gldispatch_LIBRARY=${EBROOTOPENGL}/lib/libGLdispatch.so.0 ' # <path_to_libGLdispatch.so.0> + +# OSMesa (software) +# With OSMesa the DISPLAY variable has no meaning and is not needed +# When ON, implies that ParaView can use OSMesa to support headless modes of operation. +# configopts += '-DVTK_OPENGL_HAS_OSMESA=ON ' # http://www.paraview.org/Wiki/ParaView_And_Mesa_3D +# configopts += '-DVTK_USE_X=OFF ' +# configopts += '-DVTK_DEFAULT_RENDER_WINDOW_OFFSCREEN=ON ' +# configopts += '-DOSMESA_INCLUDE_DIR=${EBROOTOPENGL}/include ' +# configopts += '-DOSMESA_LIBRARY=${EBROOTOPENGL}/lib/libOSMesa.so ' + +# Raytracing +configopts += '-DPARAVIEW_ENABLE_RAYTRACING=ON ' +configopts += '-DVTK_ENABLE_OSPRAY=ON ' +configopts += '-DVTK_ENABLE_VISRTX=OFF ' + +configopts += "-Dospray_DIR=${EBROOTOSPRAY} " +configopts += "-Dembree_DIR=${EBROOTEMBREE}/lib64/cmake/embree-3.13.5 " +configopts += '-DVTKOSPRAY_ENABLE_DENOISER=ON ' + +# configopts += '-DPARAVIEW_PLUGIN_ENABLE_pvNVIDIAIndeX=YES ' + +# --- extra features --- # +configopts += '-DPARAVIEW_PLUGIN_ENABLE_GeographicalMap=ON ' + +configopts += "-DFFMPEG_ROOT=$EBROOTFFMPEG " +configopts += '-DPARAVIEW_ENABLE_FFMPEG=ON ' +configopts += '-DVTK_MODULE_ENABLE_VTK_IOFFMPEG=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_IOVideo=YES ' + +configopts += '-DVTK_MODULE_ENABLE_VTK_DICOMParser=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersReebGraph=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersSMP=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersSelection=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersTopology=YES ' +configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersTexture=YES ' +# configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersStatisticsGnu=YES ' +# configopts += '-DVTK_MODULE_ENABLE_VTK_FiltersMatlab=YES ' + +# --- coupling --- # +configopts += '-DPARAVIEW_ENABLE_CATALYST=ON ' +configopts += '-DVTK_MODULE_ENABLE_ParaView_InSitu=YES ' +# configopts += '-DVTK_MODULE_USE_EXTERNAL_ParaView_vtkcatalyst=ON ' +configopts += '-Dcatalyst_DIR=${EBROOTCATALYST}/lib64/cmake/catalyst-2.0/ ' + +# --- development & testing --- # +configopts += '-DPARAVIEW_INSTALL_DEVELOPMENT_FILES=ON ' +configopts += '-DPARAVIEW_BUILD_DEVELOPER_DOCUMENTATION=OFF ' +configopts += '-DPARAVIEW_ENABLE_EXAMPLES=OFF ' +configopts += '-DPARAVIEW_BUILD_TESTING=OFF ' +configopts += '-DPARAVIEW_BUILD_VTK_TESTING=OFF ' + +# --- external data --- # +# https://cmake.org/cmake/help/latest/module/ExternalData.html +# https://gitlab.kitware.com/vtk/vtk/blob/master/Documentation/dev/git/data.md +# configopts += '-DCTEST_TEST_TIMEOUT=10800 ' # unknown setting +# download inactivity, 0 = no timeout +configopts += '-DExternalData_TIMEOUT_INACTIVITY=10 ' +# download abs. time, 0 = no timeout +configopts += '-DExternalData_TIMEOUT_ABSOLUTE=60 ' +# Exclude test data download from default 'all' target. +configopts += '-DPARAVIEW_DATA_EXCLUDE_FROM_ALL=ON ' +# Local directory holding ExternalData objects in the layout %(algo)/%(hash). +configopts += '-DPARAVIEW_DATA_STORE=${EBROOTPARAVIEWDATA}/.ExternalData ' +configopts += '-DVTK_DATA_STORE=${EBROOTVTKDATA}/.ExternalData ' +# Local directory holding the real data files of ExternalData. +configopts += '-DExternalData_BINARY_ROOT=${EBROOTPARAVIEWDATA} ' +# we need to combine VTK and ParaView's External data files as there can only be one ExternalData_BINARY_ROOT + +# --- XDMF options --- # +configopts += '-DXDMF_USE_BZIP2=ON ' +configopts += '-DXDMF_USE_GZIP=ON ' + +# --- VTK external libraries --- # +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_expat=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_freetype=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_hdf5=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_jpeg=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_libxml2=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_mpi4py=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_netcdf=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_png=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_tiff=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_zlib=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_doubleconversion=ON ' +configopts += '-DVTK_MODULE_USE_EXTERNAL_VTK_eigen=ON ' + +# --- ParaView Extra-Reader --- # +configopts += '-DPARAVIEW_PLUGIN_ENABLE_CDIReader=ON ' +configopts += '-DPARAVIEW_PLUGIN_ENABLE_ParFlow=ON ' +configopts += '-DPARAVIEW_ENABLE_MOTIONFX=ON ' +# configopts += '-DPARAVIEW_ENABLE_FIDES=ON ' # req. ADIOS2 as dependency +# configopts += '-DPARAVIEW_ENABLE_GDAL=ON ' # req. GDAL as dependency +# configopts += '-DPARAVIEW_ENABLE_LAS=ON ' # req. LAS as dependency +# configopts += '-DPARAVIEW_ENABLE_PDAL=ON ' # req. PDAL as dependency +# configopts += '-DPARAVIEW_ENABLE_OPENVDB=ON ' # req. OpenVDB as dependency + +# https://gitlab.kitware.com/paraview/visitbridge/-/blob/master/databases/CMakeLists.txt +configopts += '-DPARAVIEW_ENABLE_VISITBRIDGE=ON ' +configopts += '-DVTK_MODULE_ENABLE_ParaView_IOVisItBridge=YES ' +# configopts += '-DVISIT_BUILD_READER_Boxlib3D=ON ' # req. external dependency +# configopts += '-DVISIT_BUILD_READER_Mili=ON ' # req. external dependency +# configopts += '-DVISIT_BUILD_READER_Silo=ON ' # req. external dependency +# https://gitlab.kitware.com/vtk/vtk/-/merge_requests/7503 +# configopts += '-DVISIT_BUILD_READER_Nek5000=ON ' # MR still open + +postinstallcmds = [ + 'python -m compileall %(installdir)s/lib64/python%(pyshortver)s/site-packages/', + # 'cp -a %s %s' % (local_buildsrc, local_installsrc), # copy source from build dir to install dir + # '', # move debug info to separate files: + # http://stackoverflow.com/questions/866721/how-to-generate-gcc-debug-symbol-outside-the-build-target + # '', # debugedit -i --base-dir=%(builddir)s/ParaView-v%(version)s --dest-dir= %(installdir)s/src <file.debug> + # # change path to source in debug info +] + +modextravars = { + 'PARAVIEW_VTK_DIR': '%(installdir)s/lib64/cmake/paraview-%(version_major_minor)/vtk', + # 'CUDA_VISIBLE_DEVICES': '0,1', + # OpenSWR fully supports OpenGL 3.0 and most of 3.3, but ParaView requires 3.3 -> clame to fully support 3.3 + 'MESA_GL_VERSION_OVERRIDE': '3.3', + 'MESA_GLSL_VERSION_OVERRIDE': '330', + # OpenMP will choose an optimum number of threads by default, which is usually the number of cores + # 'OMP_NUM_THREADS': '28', # fix number of threads used by paraview filters and parallel sections in the code + # threads used by ospray - details https://github.com/ospray/ospray/blob/release-2.0.x/ospray/api/Device.cpp#L88 + # unset => OSPRAY uses all hardware threads + # 'OSPRAY_THREADS': '14', # OSPRay < 2.0 + # 'OSPRAY_NUM_THREADS': '14', # OSPRay >= 2.0 + # When TBB is used for OSPRAY: tbb::task_scheduler_init::default_num_threads() is default if no OSPRAY_NUM_THREADS + # https://github.com/ospray/ospcommon/blob/master/ospcommon/tasking/detail/tasking_system_init.cpp#L47 + # https://www.threadingbuildingblocks.org/docs/doxygen/a00150.html + # more ospray definitions: https://www.ospray.org/documentation.html#environment-variables + # max. threads used by OpenSWR (limited by number of hardware threads) + 'KNOB_MAX_WORKER_THREADS': '65535', + # details in https://gitlab.version.fz-juelich.de/vis/vis-software/issues/14 + # more knob defs: https://github.com/mesa3d/mesa/blob/master/src/gallium/docs/source/drivers/openswr/knobs.rst + 'CATALYST_IMPLEMENTATION_NAME': 'paraview', + 'CATALYST_IMPLEMENTATION_PATHS': '%(installdir)s/lib64/catalyst', + # details in https://catalyst-in-situ.readthedocs.io/en/latest/for_simulation_developers.html#catalyst-initialize +} + +modextrapaths = { + 'PYTHONPATH': [ + 'lib64/python%(pyshortver)s/site-packages', + 'lib64/python%(pyshortver)s/site-packages/vtkmodules' # required by Trilinos Catalyst adapter + ], +} + +moduleclass = 'vis' diff --git a/Golden_Repo/p/ParaView/cdireader_update_issue5715.patch b/Golden_Repo/p/ParaView/cdireader_update_issue5715.patch new file mode 100644 index 0000000000000000000000000000000000000000..102dab4802da16080a50703f159a3d51f1fd343a --- /dev/null +++ b/Golden_Repo/p/ParaView/cdireader_update_issue5715.patch @@ -0,0 +1,3165 @@ +From 26251ad52273fc9d3aad86faa7cb0f56d6ebbdef Mon Sep 17 00:00:00 2001 +From: Florian Ziemen <ziemen@dkrz.de> +Date: Fri, 22 Apr 2022 17:00:09 +0200 +Subject: [PATCH 1/5] Added support for multiple 2d levels in one file. + +CDI can assign different vertical axis id to 2d fields depending on +netcdf atrribues of the variable (level_type=abc). +We better accept that they all are 2d and merge them into one 2D thing. + +working towards support for multiple grids -- problems w/ ext grids. + +External grid files currently are trouble. + +Basically, the grid ids are diffent in the files, and we need to keep +track of that and of which file we are looking at. + +Will be solved by having the grid and the data open simultaneously in +commits to come. + +Starting to move file related things outside the main reader. + +Fixups for grid handling + +fixed a segfault in parallel mode on large grids + +double clon_vert[size2] is illegal in c++, as size2 is not known at +compile time. On DKRZ's levante it leads to a segfault when accessing this +for large (5km global) grids in parallel operation. + +Do not use BuildVarArrays for checking whether the variables are valid + +BuildVarArrays enables all variables in the SelectionStatus + +Caught a SetDimensions in statefile loading + +SetDimensinos gets called before setting the file name when loading a +state file. This gets rid of a warning message in that case. +--- + Plugins/CDIReader/Reader/CMakeLists.txt | 1 + + Plugins/CDIReader/Reader/DataSource.cxx | 56 +++ + Plugins/CDIReader/Reader/DataSource.h | 39 ++ + Plugins/CDIReader/Reader/vtkCDIReader.cxx | 572 +++++++++++----------- + Plugins/CDIReader/Reader/vtkCDIReader.h | 26 +- + 5 files changed, 417 insertions(+), 277 deletions(-) + create mode 100644 Plugins/CDIReader/Reader/DataSource.cxx + create mode 100644 Plugins/CDIReader/Reader/DataSource.h + +diff --git a/Plugins/CDIReader/Reader/CMakeLists.txt b/Plugins/CDIReader/Reader/CMakeLists.txt +index 274104664b..7a1a985fe0 100644 +--- a/Plugins/CDIReader/Reader/CMakeLists.txt ++++ b/Plugins/CDIReader/Reader/CMakeLists.txt +@@ -4,6 +4,7 @@ set(classes + set (sources + cdi_tools.cxx + projections.cxx ++ DataSource.cxx + ) + set (private_headers + cdi_tools.h +diff --git a/Plugins/CDIReader/Reader/DataSource.cxx b/Plugins/CDIReader/Reader/DataSource.cxx +new file mode 100644 +index 0000000000..4f5075bb58 +--- /dev/null ++++ b/Plugins/CDIReader/Reader/DataSource.cxx +@@ -0,0 +1,56 @@ ++//#include "cdi_tools.h" ++#include "DataSource.h" ++#include "cdi.h" ++ ++namespace DataSource ++{ ++ ++CDIObject::CDIObject(std::string newURI) ++{ ++ this->openURI(newURI); ++} ++ ++int CDIObject::openURI(std::string newURI) ++{ ++ this->setVoid(); ++ this->URI = newURI; ++ ++ // check if we got either *.Grib or *.nc data ++ std::string check = this->URI.substr((URI.size() - 4), this->URI.size()); ++ if (check == "grib" || check == ".grb") ++ { ++ this->type = GRIB; ++ } ++ else ++ { ++ this->type = NC; ++ } ++ ++ this->StreamID = streamOpenRead(this->URI.c_str()); ++ if (this->StreamID < 0) ++ { ++ this->setVoid(); ++ return 0; ++ } ++ ++ this->VListID = streamInqVlist(this->StreamID); ++ return 1; ++} ++ ++void CDIObject::setVoid() ++{ ++ if (this->StreamID > -1) ++ streamClose(this->StreamID); ++ ++ StreamID = -1; ++ VListID = -1; ++ type = VOID; ++} ++ ++CDIObject::~CDIObject() ++{ ++ URI = ""; ++ this->setVoid(); ++} ++ ++}; +diff --git a/Plugins/CDIReader/Reader/DataSource.h b/Plugins/CDIReader/Reader/DataSource.h +new file mode 100644 +index 0000000000..f3749f2f21 +--- /dev/null ++++ b/Plugins/CDIReader/Reader/DataSource.h +@@ -0,0 +1,39 @@ ++#ifndef CDI_DATA_SOURCE ++#define CDI_DATA_SOURCE ++ ++#include <string> ++ ++namespace DataSource ++{ ++class CDIObject ++{ ++ enum stype ++ { ++ VOID, ++ GRIB, ++ NC ++ }; ++ std::string URI; ++ int StreamID; ++ int VListID; ++ stype type; ++ ++public: ++ void setVoid(); ++ CDIObject(std::string URI); ++ CDIObject() ++ { ++ this->StreamID = -1; ++ this->setVoid(); ++ } ++ ~CDIObject(); ++ int openURI(std::string URI); ++ std::string getURI() const { return URI; } ++ int getStreamID() const { return StreamID; } ++ int getVListID() const { return VListID; } ++ stype getType() const { return type; } ++ bool isVoid() const { return this->type == VOID; } ++}; ++ ++}; ++#endif // CDI_DATA_SOURCE +diff --git a/Plugins/CDIReader/Reader/vtkCDIReader.cxx b/Plugins/CDIReader/Reader/vtkCDIReader.cxx +index 2a1916bb61..28bd568721 100644 +--- a/Plugins/CDIReader/Reader/vtkCDIReader.cxx ++++ b/Plugins/CDIReader/Reader/vtkCDIReader.cxx +@@ -57,6 +57,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + #include "vtksys/FStream.hxx" + #include "vtksys/SystemTools.hxx" + ++#include "DataSource.h" + #include "cdi_tools.h" + + #include <set> +@@ -176,8 +177,6 @@ vtkCDIReader::vtkCDIReader() + this->SetNumberOfInputPorts(0); + this->SetNumberOfOutputPorts(1); + +- this->StreamID = -1; +- this->VListID = -1; + this->VariableDimensions = vtkSmartPointer<vtkStringArray>::New(); + this->AllDimensions = vtkSmartPointer<vtkStringArray>::New(); + this->AllVariableArrayNames = vtkSmartPointer<vtkStringArray>::New(); +@@ -231,13 +230,6 @@ void vtkCDIReader::DestroyData() + vtkCDIReader::~vtkCDIReader() + { + vtkDebugMacro("Destructing vtkCDIReader..."); +- this->SetFileName(nullptr); +- +- if (this->StreamID >= 0) +- { +- streamClose(this->StreamID); +- this->StreamID = -1; +- } + + this->DestroyData(); + +@@ -307,9 +299,13 @@ int vtkCDIReader::RequestInformation( + + vtkDebugMacro("In vtkCDIReader::RequestInformation setting VerticalLevelRange"); + this->VerticalLevelRange[0] = 0; +- this->VerticalLevelRange[1] = this->MaximumNVertLevels - 1; ++ if (VerticalLevelRange[1] != this->MaximumNVertLevels - 1) ++ { ++ this->VerticalLevelRange[1] = this->MaximumNVertLevels - 1; ++ this->Modified(); ++ } + +- if (!this->BuildVarArrays()) ++ if (!this->GetVars()) + { + return 0; + } +@@ -334,9 +330,9 @@ vtkSmartPointer<vtkDoubleArray> vtkCDIReader::ReadTimeAxis() + if ((this->FileSeriesNumber == 0) && (!this->TimeSet)) + { + +- int taxisID = vlistInqTaxis(this->VListID); ++ int taxisID = vlistInqTaxis(this->DataFile.getVListID()); + int calendar = taxisInqCalendar(taxisID); +- streamInqTimestep(this->StreamID, 0); ++ streamInqTimestep(this->DataFile.getStreamID(), 0); + int vdate = taxisInqVdate(taxisID); + int vtime = taxisInqVtime(taxisID); + +@@ -371,9 +367,9 @@ vtkSmartPointer<vtkDoubleArray> vtkCDIReader::ReadTimeAxis() + int end = start + this->NumberOfTimeSteps; + for (int step = start; step < end; step++) + { +- int taxisID = vlistInqTaxis(this->VListID); ++ int taxisID = vlistInqTaxis(this->DataFile.getVListID()); + int calendar = taxisInqCalendar(taxisID); +- streamInqTimestep(this->StreamID, counter); ++ streamInqTimestep(this->DataFile.getStreamID(), counter); + int vdate = taxisInqVdate(taxisID); + int vtime = taxisInqVtime(taxisID); + double timevalue = date_to_julday(calendar, vdate); +@@ -629,7 +625,7 @@ int vtkCDIReader::RegenerateVariables() + this->NumberOfCellVars = 0; + this->NumberOfDomainVars = 0; + +- if (!this->GetDims()) ++ if (this->FileName.empty() || !this->GetDims()) + { + return 0; + } +@@ -769,9 +765,8 @@ void vtkCDIReader::SetDefaults() + this->DTime = 0; + this->FileSeriesNumber = 0; + this->NumberOfFiles = 1; +- this->NeedHorizontalGridFile = false; + this->NeedVerticalGridFile = false; +- ++ this->GridID = -1; + this->NumberOfProcesses = 1; + + this->BuildDomainArrays = false; +@@ -786,50 +781,14 @@ void vtkCDIReader::SetDefaults() + //---------------------------------------------------------------------------- + // Get dimensions of key NetCDF variables + //---------------------------------------------------------------------------- +-int vtkCDIReader::OpenFile() +-{ +- // check if we got either *.Grib or *.nc data +- std::string file = this->FileName; +- std::string check = file.substr((file.size() - 4), file.size()); +- if (check == "grib" || check == ".grb") +- { +- this->Grib = true; +- } +- else +- { +- this->Grib = false; +- } +- +- if (this->StreamID >= 0) +- { +- streamClose(this->StreamID); +- this->StreamID = -1; +- this->VListID = -1; +- } +- +- this->StreamID = streamOpenRead(this->FileNameGrid.c_str()); +- if (this->StreamID < 0) +- { +- return 0; +- } +- +- vtkDebugMacro("In vtkCDIReader::RequestInformation read file okay"); +- this->VListID = streamInqVlist(this->StreamID); +- +- int nvars = vlistNvars(this->VListID); +- char varname[CDI_MAX_NAME]; +- for (int varID = 0; varID < nvars; ++varID) +- { +- vlistInqVarName(this->VListID, varID, varname); +- } +- +- return 1; +-} + + //---------------------------------------------------------------------------- + void vtkCDIReader::GuessGridFile() + { +- std::string fallback = vtksys::SystemTools::GetParentDirectory(this->FileName) + "/grid.nc"; ++ std::string fallback = vtksys::SystemTools::GetParentDirectory(this->FileName); ++ if (fallback.empty()) ++ fallback = "."; ++ fallback += "/grid.nc"; + + std::string guess; + if (!this->Grib) +@@ -839,15 +798,22 @@ void vtkCDIReader::GuessGridFile() + { + if (vtksys::SystemTools::TestFileAccess(guess, vtksys::TEST_FILE_READ)) + { +- this->FileNameGrid = guess; +- return; ++ this->GridFile.openURI(guess); ++ if (this->GridFile.isVoid()) ++ { ++ vtkWarningMacro("Cannot handle grid file " ++ << guess << " indicated by grid_file_uri attribute in " << this->FileName ++ << " Trying fallback guess " << fallback); ++ } ++ else ++ return; + } + else +- vtkWarningMacro("Could not find grid file " ++ vtkWarningMacro("Cannot open grid file " + << guess << " indicated by grid_file_uri attribute in " << this->FileName + << " Trying fallback guess " << fallback); + } +- this->FileNameGrid = fallback; ++ this->GridFile.openURI(fallback); + } + + //---------------------------------------------------------------------------- +@@ -855,147 +821,132 @@ void vtkCDIReader::GuessGridFile() + //---------------------------------------------------------------------------- + int vtkCDIReader::GetDims() + { +- if (!this->FileName.empty()) ++ if (this->FileName.empty()) + { +- this->FileNameGrid = this->FileName; +- if (this->VListID < 0 || this->StreamID < 0) +- { +- if (!this->OpenFile()) +- { +- return 0; +- } +- } +- +- this->ReadHorizontalGridData(); +- if (this->NeedHorizontalGridFile) +- { +- // if there is no grid information in the data file, try opening +- // an additional grid file named grid.nc in the same directory to +- // read in the grid information +- if (this->StreamID >= 0) +- { +- streamClose(this->StreamID); +- this->StreamID = -1; +- this->VListID = -1; +- } ++ vtkErrorMacro("No file name provided. Cannot get dimensions"); ++ return 0; ++ } + +- char* directory = new char[strlen(this->FileName.c_str()) + 1]; +- strcpy(directory, this->FileName.c_str()); ++ DataFile.openURI(FileName); ++ if (DataFile.isVoid()) ++ { ++ vtkErrorMacro("GetDims: Could not open " << DataFile.getURI()); ++ return 0; ++ } + +- this->GuessGridFile(); +- if (!this->OpenFile()) +- { +- return 0; +- } +- if (!this->ReadHorizontalGridData()) +- { +- vtkErrorMacro("Couldn't open grid information in data nor in the grid file."); +- return 0; +- } ++ if (GridFile.isVoid()) ++ GridFile.openURI(FileName); ++ if (GridFile.isVoid()) ++ { ++ vtkErrorMacro("GetDims: Could not open horizontal grid file.\nTried " << GridFile.getURI()); ++ return 0; ++ } + +- this->FileNameGrid = this->FileName; +- if (!this->OpenFile()) +- { +- return 0; +- } ++ if (!this->ReadHorizontalGridData()) ++ { ++ this->GuessGridFile(); ++ if (!this->ReadHorizontalGridData()) ++ { ++ vtkErrorMacro("Could not get horizontal Grid. \nTried " << GridFile.getURI()); ++ return 0; + } ++ } + +- this->ReadVerticalGridData(); +- if (this->NeedVerticalGridFile) +- { +- // if there is no grid information in the data file, try opening +- // an additional grid file named grid.nc in the same directory to +- // read in the grid information +- if (this->StreamID >= 0) +- { +- streamClose(this->StreamID); +- this->StreamID = -1; +- this->VListID = -1; +- } ++ VGridFile.openURI(FileName); ++ int found = ReadVerticalGridData(); ++ if (!found) ++ { ++ VGridFile.openURI(GridFile.getURI()); ++ found = ReadVerticalGridData(); ++ } + +- char* directory = new char[strlen(this->FileName.c_str()) + 1]; +- strcpy(directory, this->FileName.c_str()); +- if (!this->OpenFile()) +- { +- return 0; +- } ++ if (!found) ++ { ++ vtkErrorMacro("Could not get Vertical grid"); ++ return 0; ++ } + +- if (!this->ReadVerticalGridData()) +- { +- vtkDebugMacro("Couldn't neither open grid information within the data netCDF file, nor " +- "in the grid.nc file."); +- vtkErrorMacro("Couldn't neither open grid information within the data netCDF file, nor " +- "in the grid.nc file."); +- return 0; +- } ++ this->FillGridDimensions(); + +- this->FileNameGrid = this->FileName; +- if (!this->OpenFile()) ++ try ++ { ++ if (this->DimensionSelection >= 0) ++ { ++ if (DimensionSelection >= DimensionSets.size()) + { ++ vtkErrorMacro("Trying to select inexistent dimensionset " ++ << DimensionSelection << " " << DimensionSets.size() << " are available."); + return 0; + } ++ for (int i = 0; i < Grids.size(); i++) ++ if (this->DimensionSets.at(this->DimensionSelection).GridSize == Grids.at(i).Size) ++ { ++ this->DimensionSets.at(this->DimensionSelection).GridID = Grids.at(i).GridID; ++ this->GridID = i; ++ } ++ this->ZAxisID = this->DimensionSets.at(this->DimensionSelection).ZAxisID; ++ vtkDebugMacro("NEW ZAxisID" << ZAxisID << " from " ++ << this->DimensionSets.at(this->DimensionSelection).ZAxisID); + } ++ } ++ catch (const std::out_of_range& oor) ++ { ++ vtkErrorMacro("Out of Range error in GetDims trying to set Grid and ZAxisID: " << oor.what()); ++ return 0; ++ } + +- if (this->DimensionSelection > 0) +- { +- vlistNgrids(this->VListID); +- int nzaxis = vlistNzaxis(this->VListID); +- +- this->GridID = vlistGrid(this->VListID, this->DimensionSelection / nzaxis); +- this->ZAxisID = vlistZaxis( +- this->VListID, this->DimensionSelection - (nzaxis * this->DimensionSelection / nzaxis)); +- } +- +- if (this->GridID != -1) +- { +- this->NumberOfCells = static_cast<int>(gridInqSize(this->GridID)); +- +- if (this->NumberOfPoints and +- this->NumberOfPoints != static_cast<int>(gridInqSize(this->GridID))) +- vtkDebugMacro("GetDims: Changing number of points from " +- << this->NumberOfPoints << " to " << static_cast<int>(gridInqSize(this->GridID))); +- this->NumberOfPoints = static_cast<int>(gridInqSize(this->GridID)); +- this->PointsPerCell = gridInqNvertex(this->GridID); +- } +- +- int ntsteps = 0; +- if (this->Grib) +- { +- while (streamInqTimestep(this->StreamID, ntsteps)) +- ntsteps++; +- } +- else ++ try ++ { ++ if (GridID != -1 && Grids.at(this->GridID).GridID != -1) + { +- ntsteps = vlistNtsteps(this->VListID); +- } +- this->NumberOfTimeSteps = ntsteps; ++ this->NumberOfCells = static_cast<int>(Grids.at(GridID).Size); + +- this->MaximumNVertLevels = 1; +- if (this->ZAxisID != -1) +- { +- this->MaximumNVertLevels = zaxisInqSize(this->ZAxisID); ++ if (this->NumberOfPoints and this->NumberOfPoints != this->NumberOfCells) ++ vtkDebugMacro("GetDims: Changing number of points from " << this->NumberOfPoints << " to " ++ << this->NumberOfCells); ++ this->NumberOfPoints = this->NumberOfCells; ++ this->PointsPerCell = Grids.at(this->GridID).PointsPerCell; ++ vtkDebugMacro("GetDims: Found PointsPerCell to be " << this->PointsPerCell << " for grid " ++ << this->GridID); + } ++ } ++ catch (const std::out_of_range& oor) ++ { ++ vtkErrorMacro("Out of Range error in GetDims trying to set NumberOfPoints " << oor.what()); ++ vtkErrorMacro("Grids.size " << Grids.size() << "\t GridID " << GridID); ++ return 0; ++ } + +- this->FillGridDimensions(); ++ int ntsteps = 0; ++ if (this->Grib) ++ { ++ while (streamInqTimestep(this->DataFile.getStreamID(), ntsteps)) ++ ntsteps++; + } + else + { +- vtkDebugMacro("No Filename yet set!"); ++ ntsteps = vlistNtsteps(this->DataFile.getVListID()); ++ } ++ this->NumberOfTimeSteps = ntsteps; ++ ++ this->MaximumNVertLevels = 1; ++ if (this->ZAxisID != -1) ++ { ++ this->MaximumNVertLevels = zaxisInqSize(this->ZAxisID); + } + + return 1; + } + +-//---------------------------------------------------------------------------- ++//--------------------------------------------------------------------------------------------------- + // Read Horizontal Grid Data +-//---------------------------------------------------------------------------- ++// Checks if there is at least one grid with >= 3 vertices, and if yes, sets GridID to this grid's ++// ID ++//--------------------------------------------------------------------------------------------------- + int vtkCDIReader::ReadHorizontalGridData() + { +- int vlistID_l = this->VListID; +- this->GridID = -1; +- this->ZAxisID = -1; +- this->SurfID = -1; +- ++ Grids.resize(0); ++ int vlistID_l = this->GridFile.getVListID(); + int ngrids = vlistNgrids(vlistID_l); + for (int i = 0; i < ngrids; ++i) + { +@@ -1004,17 +955,13 @@ int vtkCDIReader::ReadHorizontalGridData() + + if (nv >= 3) // ((nv == 3 || nv == 4)) // && gridInqType(gridID_l) == GRID_UNSTRUCTURED) + { +- this->GridID = gridID_l; +- break; ++ Grid grid{ .GridID = gridID_l, .Size = gridInqSize(gridID_l), .PointsPerCell = nv }; ++ Grids.push_back(grid); + } + } + +- if (this->GridID == -1) +- { +- this->NeedHorizontalGridFile = true; ++ if (Grids.size() == 0) + return 0; +- } +- + return 1; + } + +@@ -1024,37 +971,30 @@ int vtkCDIReader::ReadHorizontalGridData() + int vtkCDIReader::ReadVerticalGridData() + { + this->ZAxisID = -1; +- this->SurfID = -1; +- int nzaxis = vlistNzaxis(this->VListID); +- ++ int nzaxis = vlistNzaxis(this->VGridFile.getVListID()); ++ int found = 0; + for (int i = 0; i < nzaxis; ++i) + { +- int zaxisID_l = vlistZaxis(this->VListID, i); ++ int zaxisID_l = vlistZaxis(this->VGridFile.getVListID(), i); + if (zaxisInqSize(zaxisID_l) == 1 || zaxisInqType(zaxisID_l) == ZAXIS_SURFACE) + { +- this->SurfID = zaxisID_l; +- this->ZAxisID = zaxisID_l; +- break; ++ this->SurfIDs.insert(zaxisID_l); ++ ++ found = 1; + } + } + + for (int i = 0; i < nzaxis; ++i) + { +- int zaxisID_l = vlistZaxis(this->VListID, i); ++ int zaxisID_l = vlistZaxis(this->VGridFile.getVListID(), i); + if (zaxisInqSize(zaxisID_l) > 1) + { +- this->ZAxisID = zaxisID_l; ++ found = 1; + break; + } + } + +- if (this->ZAxisID == -1) +- { +- this->NeedVerticalGridFile = true; +- return 0; +- } +- +- return 1; ++ return found; + } + + //---------------------------------------------------------------------------- +@@ -1065,37 +1005,42 @@ int vtkCDIReader::GetVars() + int cellVarIndex = -1; + int pointVarIndex = -1; + int domainVarIndex = -1; ++ int numVars = vlistNvars(this->DataFile.getVListID()); ++ ++ vtkDebugMacro("Found " << numVars << " as Variables for VListID " << this->DataFile.getVListID()); + +- int numVars = vlistNvars(this->VListID); + for (int i = 0; i < numVars; i++) + { + int varID = i; + cdi_tools::CDIVar aVar; + +- aVar.StreamID = this->StreamID; ++ aVar.StreamID = this->DataFile.getStreamID(); + aVar.VarID = varID; +- aVar.GridID = vlistInqVarGrid(this->VListID, varID); +- aVar.ZAxisID = vlistInqVarZaxis(this->VListID, varID); ++ aVar.GridID = vlistInqVarGrid(this->DataFile.getVListID(), varID); ++ aVar.ZAxisID = vlistInqVarZaxis(this->DataFile.getVListID(), varID); + aVar.GridSize = static_cast<int>(gridInqSize(aVar.GridID)); + aVar.NLevel = zaxisInqSize(aVar.ZAxisID); + aVar.Type = 0; + aVar.ConstTime = 0; ++ vlistInqVarName(this->DataFile.getVListID(), varID, aVar.Name); ++ vtkDebugMacro("Processing variable " << i << '\t' << aVar.Name); + + // to do multiple grids: + // - Check how many grids are available + // - Check if all grids can be reconstructed, or if bnds are all zero + // - Reform gui to load either Cell, Point or Edge data + +- if (vlistInqVarTsteptype(this->VListID, varID) == TIME_CONSTANT) ++ if (vlistInqVarTsteptype(this->DataFile.getVListID(), varID) == TIME_CONSTANT) + { + aVar.ConstTime = 1; + } +- if (aVar.ZAxisID != this->ZAxisID && aVar.ZAxisID != this->SurfID) ++ if (aVar.ZAxisID != this->ZAxisID && SurfIDs.count(aVar.ZAxisID) == 0) ++ // We are handling a different 3D Axis. + { ++ vtkDebugMacro("Skipping " << aVar.Name << " as it has the wrong ZAxis " << aVar.ZAxisID); + continue; + } + +- vlistInqVarName(this->VListID, varID, aVar.Name); + aVar.Type = 2; + if (aVar.NLevel > 1) + { +@@ -1112,19 +1057,23 @@ int vtkCDIReader::GetVars() + } + else if ((aVar.GridSize < this->NumberOfCells) && (this->PointsPerCell == 3)) + { ++ vtkDebugMacro("Skipping " << aVar.Name << " as it has the wrong GridSize " << aVar.GridSize ++ << " != " << this->NumberOfCells); + if (this->NumberOfPoints and this->NumberOfPoints != aVar.GridSize) + { + vtkWarningMacro("Not adding " + << aVar.Name << " as point var, as it's size " << aVar.GridSize + << " does not correspond to our understanding of the correct size for 'the' point grid: " + << this->NumberOfPoints); +- break; ++ continue; + } + isPointData = true; + this->NumberOfPoints = aVar.GridSize; + } + else + { ++ vtkDebugMacro("Skipping " << aVar.Name << " as it has the wrong GridSize " << aVar.GridSize ++ << " != " << this->NumberOfCells); + continue; + } + +@@ -1240,7 +1189,7 @@ int vtkCDIReader::BuildVarArrays() + << " NumberOfPointVars: " << this->NumberOfPointVars); + if (this->NumberOfCellVars == 0) + { +- vtkErrorMacro("No cell variables found!"); ++ vtkDebugMacro("No cell variables found!"); + } + + for (int var = 0; var < this->NumberOfPointVars; var++) +@@ -1443,39 +1392,63 @@ int vtkCDIReader::ConstructGridGeometry() + CHECK_NEW(this->DepthVar); + + vtkDebugMacro("Start reading Vertices"); +- gridInqXboundsPart( +- this->GridID, (this->BeginCell * this->PointsPerCell), size, cLonVertices.data()); +- gridInqYboundsPart( +- this->GridID, (this->BeginCell * this->PointsPerCell), size, cLatVertices.data()); ++ try ++ { ++ gridInqXboundsPart(Grids.at(this->GridID).GridID, (this->BeginCell * this->PointsPerCell), size, ++ cLonVertices.data()); ++ gridInqYboundsPart(Grids.at(this->GridID).GridID, (this->BeginCell * this->PointsPerCell), size, ++ cLatVertices.data()); ++ } ++ catch (const std::out_of_range& oor) ++ { ++ vtkErrorMacro( ++ "Out of Range error trying to get the grid id for reading vertices: " << oor.what()); ++ return 0; ++ } + vtkDebugMacro("Done reading Vertices"); ++ vtkDebugMacro("Getting vertical axis" << this->ZAxisID << " expecting up to " ++ << this->MaximumNVertLevels << " levels."); + zaxisInqLevels(this->ZAxisID, this->DepthVar); ++ vtkDebugMacro("Got vertical axis" << this->ZAxisID); + char units[CDI_MAX_NAME]; + this->OrigConnections.resize(size); + int new_cells[2]; +- +- if (this->ProjectionMode != projection::CATALYST) ++ try + { +- gridInqXunits(this->GridID, units); +- if (strncmp(units, "degree", 6) == 0) ++ if (this->ProjectionMode != projection::CATALYST) + { +- for (int i = 0; i < size; i++) ++ gridInqXunits(Grids.at(this->GridID).GridID, units); ++ if (strncmp(units, "degree", 6) == 0) + { +- cLonVertices[i] = vtkMath::RadiansFromDegrees(cLonVertices[i]); ++ for (int i = 0; i < size; i++) ++ { ++ cLonVertices[i] = vtkMath::RadiansFromDegrees(cLonVertices[i]); ++ } + } +- } +- gridInqYunits(this->GridID, units); +- if (strncmp(units, "degree", 6) == 0) +- { +- for (int i = 0; i < size; i++) ++ gridInqYunits(Grids.at(this->GridID).GridID, units); ++ if (strncmp(units, "degree", 6) == 0) + { +- cLatVertices[i] = vtkMath::RadiansFromDegrees(cLatVertices[i]); ++ for (int i = 0; i < size; i++) ++ { ++ cLatVertices[i] = vtkMath::RadiansFromDegrees(cLatVertices[i]); ++ } + } + } + } ++ catch (const std::out_of_range& oor) ++ { ++ vtkErrorMacro("Out of Range error trying to get the grid id for getting the coordinate units " ++ "for projecting: " ++ << oor.what()); ++ return 0; ++ } + + // check for duplicates in the Point list and update the triangle list ++ vtkDebugMacro("Removing duplicates for clon/clat, size = " << size); ++ + this->RemoveDuplicates( + cLonVertices.data(), cLatVertices.data(), size, &this->OrigConnections[0], new_cells); ++ vtkDebugMacro("Removed duplicates for clon/clat"); + this->NumberLocalCells = new_cells[0] / this->PointsPerCell; + this->NumberLocalPoints = new_cells[1]; + if (this->NumberOfPoints and this->NumberOfPoints != new_cells[1]) +@@ -1524,31 +1497,43 @@ int vtkCDIReader::ConstructGridGeometry() + if (this->Piece == 0) + { + int new_cells2[2]; +- double clon_vert2[size2]; +- double clat_vert2[size2]; +- +- gridInqXboundsPart(this->GridID, 0, size2, clon_vert2); +- gridInqYboundsPart(this->GridID, 0, size2, clat_vert2); +- +- gridInqXunits(this->GridID, units); +- if (strncmp(units, "degree", 6) == 0) ++ std::vector<double> clon_vert2(size2); ++ std::vector<double> clat_vert2(size2); ++ try + { +- for (int i = 0; i < size2; i++) ++ gridInqXboundsPart(Grids.at(this->GridID).GridID, 0, size2, clon_vert2.data()); ++ gridInqYboundsPart(Grids.at(this->GridID).GridID, 0, size2, clat_vert2.data()); ++ ++ gridInqXunits(Grids.at(this->GridID).GridID, units); ++ if (strncmp(units, "degree", 6) == 0) + { +- clon_vert2[i] = vtkMath::RadiansFromDegrees(clon_vert2[i]); ++ for (int i = 0; i < size2; i++) ++ { ++ clon_vert2[i] = vtkMath::RadiansFromDegrees(clon_vert2[i]); ++ } + } +- } + +- gridInqYunits(this->GridID, units); +- if (strncmp(units, "degree", 6) == 0) +- { +- for (int i = 0; i < size2; i++) ++ gridInqYunits(Grids.at(this->GridID).GridID, units); ++ if (strncmp(units, "degree", 6) == 0) + { +- clat_vert2[i] = vtkMath::RadiansFromDegrees(clat_vert2[i]); ++ for (int i = 0; i < size2; i++) ++ { ++ clat_vert2[i] = vtkMath::RadiansFromDegrees(clat_vert2[i]); ++ } + } + } ++ catch (const std::out_of_range& oor) ++ { ++ vtkErrorMacro( ++ "Out of Range error trying to get the grid id for converting lat/lon in parallel: " ++ << oor.what()); ++ return 0; ++ } ++ ++ vtkDebugMacro("Removing duplicates for clon/clat2"); + +- this->RemoveDuplicates(clon_vert2, clat_vert2, size2, vertex_ids2.data(), new_cells2); ++ this->RemoveDuplicates( ++ clon_vert2.data(), clat_vert2.data(), size2, vertex_ids2.data(), new_cells2); + for (int i = 1; i < this->NumPieces; i++) + { + this->Controller->Send(vertex_ids2.data(), size2, i, 101); +@@ -1676,25 +1661,38 @@ int vtkCDIReader::LoadClonClatVars() + std::vector<double> cLon_l(this->NumberLocalCells); + std::vector<double> cLat_l(this->NumberLocalCells); + +- gridInqXvalsPart(this->GridID, this->BeginCell, this->NumberLocalCells, cLon_l.data()); +- gridInqYvalsPart(this->GridID, this->BeginCell, this->NumberLocalCells, cLat_l.data()); ++ gridInqXvalsPart( ++ Grids.at(this->GridID).GridID, this->BeginCell, this->NumberLocalCells, cLon_l.data()); ++ gridInqYvalsPart( ++ Grids.at(this->GridID).GridID, this->BeginCell, this->NumberLocalCells, cLat_l.data()); + + char units[CDI_MAX_NAME]; +- gridInqXunits(this->GridID, units); +- if (strncmp(units, "degree", 6) == 0) ++ ++ try + { +- for (int i = 0; i < this->NumberLocalCells; i++) ++ gridInqXunits(Grids.at(this->GridID).GridID, units); ++ if (strncmp(units, "degree", 6) == 0) ++ { ++ for (int i = 0; i < this->NumberLocalCells; i++) ++ { ++ cLon_l[i] = vtkMath::RadiansFromDegrees(cLon_l[i]); ++ } ++ } ++ gridInqYunits(Grids.at(this->GridID).GridID, units); ++ if (strncmp(units, "degree", 6) == 0) + { +- cLon_l[i] = vtkMath::RadiansFromDegrees(cLon_l[i]); ++ for (int i = 0; i < this->NumberLocalCells; i++) ++ { ++ cLat_l[i] = vtkMath::RadiansFromDegrees(cLat_l[i]); ++ } + } + } +- gridInqYunits(this->GridID, units); +- if (strncmp(units, "degree", 6) == 0) ++ catch (const std::out_of_range& oor) + { +- for (int i = 0; i < this->NumberLocalCells; i++) +- { +- cLat_l[i] = vtkMath::RadiansFromDegrees(cLat_l[i]); +- } ++ vtkErrorMacro( ++ "Out of Range error trying to get the grid id for converting lat/lon in LoadClonClatVars: " ++ << oor.what()); ++ return 0; + } + + if (this->ShowMultilayerView) +@@ -1823,7 +1821,7 @@ int vtkCDIReader::CheckForMaskData() + { + const double maskVal = this->UseCustomMaskValue + ? this->CustomMaskValue +- : vlistInqVarMissval(this->VListID, this->Internals->CellVars[mask_pos].VarID); ++ : vlistInqVarMissval(this->DataFile.getVListID(), this->Internals->CellVars[mask_pos].VarID); + + cdi_tools::CDIVar* cdiVar = &(this->Internals->CellVars[mask_pos]); + if (this->ShowMultilayerView) +@@ -1923,7 +1921,7 @@ bool vtkCDIReader::BuildDomainCellVars() + CHECK_NEW(this->DomainCellVar); + double val = 0; + int mask_pos = 0; +- int numVars = vlistNvars(this->VListID); ++ int numVars = vlistNvars(this->DataFile.getVListID()); + + for (int i = 0; i < numVars; i++) + { +@@ -2780,7 +2778,7 @@ int vtkCDIReader::LoadCellVarDataTemplate( + //------------------------------------------------------------------------------ + int vtkCDIReader::ReplaceFillWithNan(const int varID, vtkDataArray* dataArray) + { +- double miss = vlistInqVarMissval(this->VListID, varID); ++ double miss = vlistInqVarMissval(this->DataFile.getVListID(), varID); + + // NaN only available with float and double. + if (dataArray->GetDataType() == VTK_FLOAT) +@@ -3093,11 +3091,11 @@ int vtkCDIReader::LoadDomainVarData(int variableIndex) + //----------------------------------------------------------------------------- + int vtkCDIReader::FillGridDimensions() + { +- int ngrids = vlistNgrids(this->VListID); +- int nzaxis = vlistNzaxis(this->VListID); +- int nvars = vlistNvars(this->VListID); +- this->AllDimensions->SetNumberOfValues(0); +- this->VariableDimensions->SetNumberOfValues(ngrids * nzaxis); ++ this->DimensionSets.resize(0); ++ ++ int ngrids = vlistNgrids(this->DataFile.getVListID()); ++ int nzaxis = vlistNzaxis(this->DataFile.getVListID()); ++ int nvars = vlistNvars(this->DataFile.getVListID()); + char nameGridX[CDI_MAX_NAME]; + char nameGridY[CDI_MAX_NAME]; + char nameLev[CDI_MAX_NAME]; +@@ -3106,40 +3104,59 @@ int vtkCDIReader::FillGridDimensions() + + for (int k = 0; k < nvars; k++) + { +- int i = vlistInqVarGrid(this->VListID, k); +- int j = vlistInqVarZaxis(this->VListID, k); ++ int i = vlistInqVarGrid(this->DataFile.getVListID(), k); ++ int j = vlistInqVarZaxis(this->DataFile.getVListID(), k); + hits.insert(std::to_string(i) + "x" + std::to_string(j)); + // IDs are not 0 to n-1 but can be 30-ish for a file with 3 grids. + // they map to the gridID_l and zaxisID_l values below. + // Thus we need to a map to catch rather unpredictable values. + } +- ++ size_t counter = 0; + for (int i = 0; i < ngrids; ++i) + { + for (int j = 0; j < nzaxis; ++j) + { + std::string dimEncoding("("); +- int gridID_l = vlistGrid(this->VListID, i); ++ int gridID_l = vlistGrid(this->DataFile.getVListID(), i); + gridInqXname(gridID_l, nameGridX); + gridInqYname(gridID_l, nameGridY); + dimEncoding += nameGridX; + dimEncoding += ", "; + dimEncoding += nameGridY; + dimEncoding += ", "; +- int zaxisID_l = vlistZaxis(this->VListID, j); ++ int zaxisID_l = vlistZaxis(this->DataFile.getVListID(), j); + zaxisInqName(zaxisID_l, nameLev); + dimEncoding += nameLev; + dimEncoding += ")"; + + if (hits.count(std::to_string(gridID_l) + "x" + std::to_string(zaxisID_l)) == 0) + { ++ vtkDebugMacro("vtkCDIReader::FillGridDimensions: i, j, dimEncoding: " ++ << i << '\t' << j << "\t" << gridID_l << '\t' << zaxisID_l << "\t" << dimEncoding ++ << " - has no hits.\n"); + continue; // skip empty grid combinations + } ++ vtkDebugMacro("vtkCDIReader::FillGridDimensions: i, j, GridID, ZAxisID, dimEncoding: " ++ << i << '\t' << j << "\t" << gridID_l << '\t' << zaxisID_l << "\t" << dimEncoding ++ << " - has hits.\n"); + +- this->AllDimensions->InsertNextValue(dimEncoding); +- this->VariableDimensions->SetValue(i * nzaxis + j, dimEncoding.c_str()); ++ dimset ds{ .DimsetID = counter, ++ .GridID = -1, ++ .ZAxisID = zaxisID_l, ++ .GridSize = gridInqSize(gridID_l), ++ .NLevel = zaxisInqSize(zaxisID_l), ++ .label = dimEncoding }; ++ DimensionSets.push_back(ds); ++ counter++; + } + } ++ this->AllDimensions->SetNumberOfValues(0); ++ this->VariableDimensions->SetNumberOfValues(counter); ++ for (int i = 0; i < counter; i++) ++ { ++ this->AllDimensions->InsertNextValue(DimensionSets[i].label); ++ this->VariableDimensions->SetValue(i, DimensionSets[i].label.c_str()); ++ } + + return 1; + } +@@ -3149,6 +3166,7 @@ int vtkCDIReader::FillGridDimensions() + //----------------------------------------------------------------------------- + void vtkCDIReader::SetDimensions(const char* dimensions) + { ++ vtkDebugMacro("In SetDimensions"); + for (vtkIdType i = 0; i < this->VariableDimensions->GetNumberOfValues(); i++) + { + if (this->VariableDimensions->GetValue(i) == dimensions) +@@ -3172,7 +3190,10 @@ void vtkCDIReader::SetDimensions(const char* dimensions) + this->DestroyData(); + this->RegenerateVariables(); + if (this->GridReconstructed) ++ { + this->RegenerateGeometry(); ++ } ++ vtkDebugMacro("Out SetDimensions"); + } + + //---------------------------------------------------------------------------- +@@ -3319,18 +3340,13 @@ const char* vtkCDIReader::GetDomainArrayName(int index) + } + + //---------------------------------------------------------------------------- +-// Set to lat/lon (equidistant cylindrical) projection. ++// Load a new file. + //---------------------------------------------------------------------------- + void vtkCDIReader::SetFileName(const char* val) + { + if (this->FileName.empty() || val == nullptr || strcmp(this->FileName.c_str(), val) != 0) + { +- if (this->StreamID >= 0) +- { +- streamClose(this->StreamID); +- this->StreamID = -1; +- this->VListID = -1; +- } ++ this->DataFile.setVoid(); + this->Modified(); + if (val == nullptr) + { +@@ -3351,13 +3367,21 @@ void vtkCDIReader::SetVerticalLevel(int level) + { + if (this->VerticalLevelSelected != level) + { +- if (level < 0 || level > this->MaximumNVertLevels - 1) ++ if (level < 0) + { + vtkErrorMacro("Requested inexistent vertical level: " + << level << ".\nThe level must be the in range [ 0 ; " << this->MaximumNVertLevels - 1 + << " ]."); + return; + } ++ ++ if (level > this->MaximumNVertLevels - 1) ++ { ++ vtkWarningMacro("Requested inexistent vertical level: " ++ << level << ".\nThe level must be the in range [ 0 ; " << this->MaximumNVertLevels - 1 ++ << " ]. \nTriying with 0."); ++ level = 0; ++ } + this->VerticalLevelSelected = level; + this->Modified(); + vtkDebugMacro("Set VerticalLevelSelected to: " << level); +diff --git a/Plugins/CDIReader/Reader/vtkCDIReader.h b/Plugins/CDIReader/Reader/vtkCDIReader.h +index 0e1001694c..44f9073a97 100644 +--- a/Plugins/CDIReader/Reader/vtkCDIReader.h ++++ b/Plugins/CDIReader/Reader/vtkCDIReader.h +@@ -46,7 +46,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #include "projections.h" // for projection enum + ++#include "DataSource.h" + #include <memory> // for unique_ptr ++#include <unordered_set> + #include <vector> // for std::vector + + class vtkCallbackCommand; +@@ -54,6 +56,23 @@ class vtkDoubleArray; + class vtkFieldData; + class vtkMultiProcessController; + ++struct dimset ++{ ++ size_t DimsetID; ++ int GridID; ++ int ZAxisID; ++ size_t GridSize; ++ int NLevel; ++ std::string label; ++}; ++ ++struct Grid ++{ ++ int GridID; ++ size_t Size; ++ int PointsPerCell; ++}; ++ + /** + * + * @class vtkCDIReader +@@ -326,6 +345,8 @@ protected: + double Layer0OffsetRange[2]; + + int DimensionSelection; ++ std::vector<dimset> DimensionSets; ++ std::vector<Grid> Grids; + bool InvertZAxis; + bool AddCoordinateVars; + projection::Projection ProjectionMode; +@@ -370,11 +391,10 @@ protected: + int NumberOfDomainVars; + bool GridReconstructed; + +- int StreamID; +- int VListID; ++ DataSource::CDIObject DataFile, GridFile, VGridFile; + int GridID; + int ZAxisID; +- int SurfID; ++ std::unordered_set<int> SurfIDs; + + std::string TimeUnits; + std::string Calendar; +-- +GitLab + + +From 772c2460e34deeb47c3d716283299190f3d51e7a Mon Sep 17 00:00:00 2001 +From: Nils-Arne Dreier <dreier@dkrz.de> +Date: Wed, 2 Nov 2022 19:38:06 +0100 +Subject: [PATCH 2/5] clean up and formating + +including: +- move internal things to unnamed namespace in vtkCDIReader.cxx +- move structs to unnamed namespace +- captitalize struct name Dimset +- add missing braces +- add `this->` where appropriate +- no need to clear std::vector before they go out of scope +- explicit cast int to `size_t` to avoid narrowing conversion warning +- move variables which type is in unnamed namespace to Internals +- prevent crash if no grid file is available +- capitalize member variable `Type` +- fix warning `size()==0` -> `empty()` +- add some braces +--- + Plugins/CDIReader/Reader/CMakeLists.txt | 1 - + Plugins/CDIReader/Reader/DataSource.cxx | 56 ---- + Plugins/CDIReader/Reader/DataSource.h | 39 --- + Plugins/CDIReader/Reader/vtkCDIReader.cxx | 336 +++++++++++++++------- + Plugins/CDIReader/Reader/vtkCDIReader.h | 21 -- + 5 files changed, 239 insertions(+), 214 deletions(-) + delete mode 100644 Plugins/CDIReader/Reader/DataSource.cxx + delete mode 100644 Plugins/CDIReader/Reader/DataSource.h + +diff --git a/Plugins/CDIReader/Reader/CMakeLists.txt b/Plugins/CDIReader/Reader/CMakeLists.txt +index 7a1a985fe0..274104664b 100644 +--- a/Plugins/CDIReader/Reader/CMakeLists.txt ++++ b/Plugins/CDIReader/Reader/CMakeLists.txt +@@ -4,7 +4,6 @@ set(classes + set (sources + cdi_tools.cxx + projections.cxx +- DataSource.cxx + ) + set (private_headers + cdi_tools.h +diff --git a/Plugins/CDIReader/Reader/DataSource.cxx b/Plugins/CDIReader/Reader/DataSource.cxx +deleted file mode 100644 +index 4f5075bb58..0000000000 +--- a/Plugins/CDIReader/Reader/DataSource.cxx ++++ /dev/null +@@ -1,56 +0,0 @@ +-//#include "cdi_tools.h" +-#include "DataSource.h" +-#include "cdi.h" +- +-namespace DataSource +-{ +- +-CDIObject::CDIObject(std::string newURI) +-{ +- this->openURI(newURI); +-} +- +-int CDIObject::openURI(std::string newURI) +-{ +- this->setVoid(); +- this->URI = newURI; +- +- // check if we got either *.Grib or *.nc data +- std::string check = this->URI.substr((URI.size() - 4), this->URI.size()); +- if (check == "grib" || check == ".grb") +- { +- this->type = GRIB; +- } +- else +- { +- this->type = NC; +- } +- +- this->StreamID = streamOpenRead(this->URI.c_str()); +- if (this->StreamID < 0) +- { +- this->setVoid(); +- return 0; +- } +- +- this->VListID = streamInqVlist(this->StreamID); +- return 1; +-} +- +-void CDIObject::setVoid() +-{ +- if (this->StreamID > -1) +- streamClose(this->StreamID); +- +- StreamID = -1; +- VListID = -1; +- type = VOID; +-} +- +-CDIObject::~CDIObject() +-{ +- URI = ""; +- this->setVoid(); +-} +- +-}; +diff --git a/Plugins/CDIReader/Reader/DataSource.h b/Plugins/CDIReader/Reader/DataSource.h +deleted file mode 100644 +index f3749f2f21..0000000000 +--- a/Plugins/CDIReader/Reader/DataSource.h ++++ /dev/null +@@ -1,39 +0,0 @@ +-#ifndef CDI_DATA_SOURCE +-#define CDI_DATA_SOURCE +- +-#include <string> +- +-namespace DataSource +-{ +-class CDIObject +-{ +- enum stype +- { +- VOID, +- GRIB, +- NC +- }; +- std::string URI; +- int StreamID; +- int VListID; +- stype type; +- +-public: +- void setVoid(); +- CDIObject(std::string URI); +- CDIObject() +- { +- this->StreamID = -1; +- this->setVoid(); +- } +- ~CDIObject(); +- int openURI(std::string URI); +- std::string getURI() const { return URI; } +- int getStreamID() const { return StreamID; } +- int getVListID() const { return VListID; } +- stype getType() const { return type; } +- bool isVoid() const { return this->type == VOID; } +-}; +- +-}; +-#endif // CDI_DATA_SOURCE +diff --git a/Plugins/CDIReader/Reader/vtkCDIReader.cxx b/Plugins/CDIReader/Reader/vtkCDIReader.cxx +index 28bd568721..c44e81f6bb 100644 +--- a/Plugins/CDIReader/Reader/vtkCDIReader.cxx ++++ b/Plugins/CDIReader/Reader/vtkCDIReader.cxx +@@ -57,13 +57,79 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + #include "vtksys/FStream.hxx" + #include "vtksys/SystemTools.hxx" + +-#include "DataSource.h" + #include "cdi_tools.h" + + #include <set> + #include <sstream> + +-constexpr static int MAX_VARS = 100; ++namespace ++{ ++class CDIObject ++{ ++ enum stype ++ { ++ VOID, ++ GRIB, ++ NC ++ }; ++ std::string URI; ++ int StreamID; ++ int VListID; ++ stype Type; ++ ++public: ++ CDIObject(std::string URI) { this->openURI(URI); } ++ CDIObject() ++ { ++ this->StreamID = -1; ++ this->setVoid(); ++ } ++ ~CDIObject() { this->setVoid(); } ++ int openURI(std::string URI) ++ { ++ this->setVoid(); ++ this->URI = URI; ++ ++ // check if we got either *.Grib or *.nc data ++ std::string check = this->URI.substr((URI.size() - 4), this->URI.size()); ++ if (check == "grib" || check == ".grb") ++ { ++ this->Type = GRIB; ++ } ++ else ++ { ++ this->Type = NC; ++ } ++ ++ this->StreamID = streamOpenRead(this->URI.c_str()); ++ if (this->StreamID < 0) ++ { ++ this->setVoid(); ++ return 0; ++ } ++ ++ this->VListID = streamInqVlist(this->StreamID); ++ return 1; ++ } ++ ++ std::string getURI() const { return this->URI; } ++ int getStreamID() const { return this->StreamID; } ++ int getVListID() const { return this->VListID; } ++ stype getType() const { return this->Type; } ++ void setVoid() ++ { ++ if (this->StreamID > -1) ++ { ++ streamClose(this->StreamID); ++ } ++ ++ this->StreamID = -1; ++ this->VListID = -1; ++ this->Type = VOID; ++ } ++ ++ bool isVoid() const { return this->Type == VOID; } ++}; + + struct Point + { +@@ -77,6 +143,26 @@ struct PointWithIndex + int Idx; + }; + ++constexpr static int MAX_VARS = 100; ++ ++struct Dimset ++{ ++ size_t DimsetID; ++ int GridID; ++ int ZAxisID; ++ size_t GridSize; ++ int NLevel; ++ std::string label; ++}; ++ ++struct Grid ++{ ++ int GridID; ++ size_t Size; ++ int PointsPerCell; ++}; ++} ++ + //---------------------------------------------------------------------------- + // Internal class to avoid name pollution + //---------------------------------------------------------------------------- +@@ -106,6 +192,10 @@ public: + vtkSmartPointer<vtkIdTypeArray> PointsToSendToProcesses; + vtkSmartPointer<vtkIdTypeArray> PointsToSendToProcessesLengths; + vtkSmartPointer<vtkIdTypeArray> PointsToSendToProcessesOffsets; ++ ++ std::vector<Dimset> DimensionSets; ++ std::vector<Grid> Grids; ++ CDIObject DataFile, GridFile, VGridFile; + }; + + namespace +@@ -299,7 +389,7 @@ int vtkCDIReader::RequestInformation( + + vtkDebugMacro("In vtkCDIReader::RequestInformation setting VerticalLevelRange"); + this->VerticalLevelRange[0] = 0; +- if (VerticalLevelRange[1] != this->MaximumNVertLevels - 1) ++ if (this->VerticalLevelRange[1] != this->MaximumNVertLevels - 1) + { + this->VerticalLevelRange[1] = this->MaximumNVertLevels - 1; + this->Modified(); +@@ -330,9 +420,9 @@ vtkSmartPointer<vtkDoubleArray> vtkCDIReader::ReadTimeAxis() + if ((this->FileSeriesNumber == 0) && (!this->TimeSet)) + { + +- int taxisID = vlistInqTaxis(this->DataFile.getVListID()); ++ int taxisID = vlistInqTaxis(this->Internals->DataFile.getVListID()); + int calendar = taxisInqCalendar(taxisID); +- streamInqTimestep(this->DataFile.getStreamID(), 0); ++ streamInqTimestep(this->Internals->DataFile.getStreamID(), 0); + int vdate = taxisInqVdate(taxisID); + int vtime = taxisInqVtime(taxisID); + +@@ -345,7 +435,9 @@ vtkSmartPointer<vtkDoubleArray> vtkCDIReader::ReadTimeAxis() + if (!this->TimeSeriesTimeStepsAllSet) + { + if (this->TimeSeriesTimeSteps.size() < this->FileSeriesNumber + 1) ++ { + this->TimeSeriesTimeSteps.resize(this->FileSeriesNumber + 1); ++ } + this->TimeSeriesTimeSteps[this->FileSeriesNumber] = this->NumberOfTimeSteps; + } + +@@ -367,9 +459,9 @@ vtkSmartPointer<vtkDoubleArray> vtkCDIReader::ReadTimeAxis() + int end = start + this->NumberOfTimeSteps; + for (int step = start; step < end; step++) + { +- int taxisID = vlistInqTaxis(this->DataFile.getVListID()); ++ int taxisID = vlistInqTaxis(this->Internals->DataFile.getVListID()); + int calendar = taxisInqCalendar(taxisID); +- streamInqTimestep(this->DataFile.getStreamID(), counter); ++ streamInqTimestep(this->Internals->DataFile.getStreamID(), counter); + int vdate = taxisInqVdate(taxisID); + int vtime = taxisInqVtime(taxisID); + double timevalue = date_to_julday(calendar, vdate); +@@ -383,8 +475,10 @@ vtkSmartPointer<vtkDoubleArray> vtkCDIReader::ReadTimeAxis() + timeValues->InsertNextTuple1(timevalue); + if (!this->TimeSeriesTimeStepsAllSet) + { +- if (TimeSteps.size() < step + 1) +- TimeSteps.resize(step + 1); ++ if (this->TimeSteps.size() < step + 1) ++ { ++ this->TimeSteps.resize(step + 1); ++ } + this->TimeSteps[step] = timevalue; + } + } +@@ -438,7 +532,9 @@ int vtkCDIReader::GetTimeIndex(double dataTimeStep) + for (int step = start; step < end; step++) + { + if (this->TimeSteps[step] == dataTimeStep) ++ { + return (step - start); ++ } + } + return 0; + } +@@ -787,33 +883,41 @@ void vtkCDIReader::GuessGridFile() + { + std::string fallback = vtksys::SystemTools::GetParentDirectory(this->FileName); + if (fallback.empty()) ++ { + fallback = "."; ++ } + fallback += "/grid.nc"; + + std::string guess; + if (!this->Grib) ++ { + guess = cdi_tools::GuessGridFileFromUri(this->FileName); ++ } + + if (!guess.empty()) + { + if (vtksys::SystemTools::TestFileAccess(guess, vtksys::TEST_FILE_READ)) + { +- this->GridFile.openURI(guess); +- if (this->GridFile.isVoid()) ++ this->Internals->GridFile.openURI(guess); ++ if (this->Internals->GridFile.isVoid()) + { + vtkWarningMacro("Cannot handle grid file " + << guess << " indicated by grid_file_uri attribute in " << this->FileName + << " Trying fallback guess " << fallback); + } + else ++ { + return; ++ } + } + else ++ { + vtkWarningMacro("Cannot open grid file " + << guess << " indicated by grid_file_uri attribute in " << this->FileName + << " Trying fallback guess " << fallback); ++ } + } +- this->GridFile.openURI(fallback); ++ this->Internals->GridFile.openURI(fallback); + } + + //---------------------------------------------------------------------------- +@@ -827,18 +931,22 @@ int vtkCDIReader::GetDims() + return 0; + } + +- DataFile.openURI(FileName); +- if (DataFile.isVoid()) ++ this->Internals->DataFile.openURI(this->FileName); ++ if (this->Internals->DataFile.isVoid()) + { +- vtkErrorMacro("GetDims: Could not open " << DataFile.getURI()); ++ vtkErrorMacro("GetDims: Could not open " << this->Internals->DataFile.getURI()); + return 0; + } + +- if (GridFile.isVoid()) +- GridFile.openURI(FileName); +- if (GridFile.isVoid()) ++ if (this->Internals->GridFile.isVoid()) ++ { ++ this->Internals->GridFile.openURI(this->FileName); ++ } ++ ++ if (this->Internals->GridFile.isVoid()) + { +- vtkErrorMacro("GetDims: Could not open horizontal grid file.\nTried " << GridFile.getURI()); ++ vtkErrorMacro("GetDims: Could not open horizontal grid file.\nTried " ++ << this->Internals->GridFile.getURI()); + return 0; + } + +@@ -847,17 +955,18 @@ int vtkCDIReader::GetDims() + this->GuessGridFile(); + if (!this->ReadHorizontalGridData()) + { +- vtkErrorMacro("Could not get horizontal Grid. \nTried " << GridFile.getURI()); ++ vtkErrorMacro( ++ "Could not get horizontal Grid. \nTried " << this->Internals->GridFile.getURI()); + return 0; + } + } + +- VGridFile.openURI(FileName); +- int found = ReadVerticalGridData(); ++ this->Internals->VGridFile.openURI(this->FileName); ++ int found = this->ReadVerticalGridData(); + if (!found) + { +- VGridFile.openURI(GridFile.getURI()); +- found = ReadVerticalGridData(); ++ this->Internals->VGridFile.openURI(this->Internals->GridFile.getURI()); ++ found = this->ReadVerticalGridData(); + } + + if (!found) +@@ -872,21 +981,25 @@ int vtkCDIReader::GetDims() + { + if (this->DimensionSelection >= 0) + { +- if (DimensionSelection >= DimensionSets.size()) ++ if (this->DimensionSelection >= this->Internals->DimensionSets.size()) + { + vtkErrorMacro("Trying to select inexistent dimensionset " +- << DimensionSelection << " " << DimensionSets.size() << " are available."); ++ << this->DimensionSelection << " " << this->Internals->DimensionSets.size() ++ << " are available."); + return 0; + } +- for (int i = 0; i < Grids.size(); i++) +- if (this->DimensionSets.at(this->DimensionSelection).GridSize == Grids.at(i).Size) ++ for (int i = 0; i < this->Internals->Grids.size(); i++) ++ if (this->Internals->DimensionSets.at(this->DimensionSelection).GridSize == ++ this->Internals->Grids.at(i).Size) + { +- this->DimensionSets.at(this->DimensionSelection).GridID = Grids.at(i).GridID; ++ this->Internals->DimensionSets.at(this->DimensionSelection).GridID = ++ this->Internals->Grids.at(i).GridID; + this->GridID = i; + } +- this->ZAxisID = this->DimensionSets.at(this->DimensionSelection).ZAxisID; +- vtkDebugMacro("NEW ZAxisID" << ZAxisID << " from " +- << this->DimensionSets.at(this->DimensionSelection).ZAxisID); ++ this->ZAxisID = this->Internals->DimensionSets.at(this->DimensionSelection).ZAxisID; ++ vtkDebugMacro( ++ "NEW ZAxisID" << this->ZAxisID << " from " ++ << this->Internals->DimensionSets.at(this->DimensionSelection).ZAxisID); + } + } + catch (const std::out_of_range& oor) +@@ -897,15 +1010,17 @@ int vtkCDIReader::GetDims() + + try + { +- if (GridID != -1 && Grids.at(this->GridID).GridID != -1) ++ if (this->GridID != -1 && this->Internals->Grids.at(this->GridID).GridID != -1) + { +- this->NumberOfCells = static_cast<int>(Grids.at(GridID).Size); ++ this->NumberOfCells = static_cast<int>(this->Internals->Grids.at(GridID).Size); + + if (this->NumberOfPoints and this->NumberOfPoints != this->NumberOfCells) ++ { + vtkDebugMacro("GetDims: Changing number of points from " << this->NumberOfPoints << " to " + << this->NumberOfCells); ++ } + this->NumberOfPoints = this->NumberOfCells; +- this->PointsPerCell = Grids.at(this->GridID).PointsPerCell; ++ this->PointsPerCell = this->Internals->Grids.at(this->GridID).PointsPerCell; + vtkDebugMacro("GetDims: Found PointsPerCell to be " << this->PointsPerCell << " for grid " + << this->GridID); + } +@@ -913,19 +1028,21 @@ int vtkCDIReader::GetDims() + catch (const std::out_of_range& oor) + { + vtkErrorMacro("Out of Range error in GetDims trying to set NumberOfPoints " << oor.what()); +- vtkErrorMacro("Grids.size " << Grids.size() << "\t GridID " << GridID); ++ vtkErrorMacro("Grids.size " << this->Internals->Grids.size() << "\t GridID " << this->GridID); + return 0; + } + + int ntsteps = 0; + if (this->Grib) + { +- while (streamInqTimestep(this->DataFile.getStreamID(), ntsteps)) ++ while (streamInqTimestep(this->Internals->DataFile.getStreamID(), ntsteps)) ++ { + ntsteps++; ++ } + } + else + { +- ntsteps = vlistNtsteps(this->DataFile.getVListID()); ++ ntsteps = vlistNtsteps(this->Internals->DataFile.getVListID()); + } + this->NumberOfTimeSteps = ntsteps; + +@@ -945,8 +1062,13 @@ int vtkCDIReader::GetDims() + //--------------------------------------------------------------------------------------------------- + int vtkCDIReader::ReadHorizontalGridData() + { +- Grids.resize(0); +- int vlistID_l = this->GridFile.getVListID(); ++ this->Internals->Grids.resize(0); ++ int vlistID_l = this->Internals->GridFile.getVListID(); ++ if (vlistID_l == CDI_UNDEFID) ++ { ++ vtkErrorMacro("No VList found in Grid file."); ++ return 0; ++ } + int ngrids = vlistNgrids(vlistID_l); + for (int i = 0; i < ngrids; ++i) + { +@@ -955,13 +1077,17 @@ int vtkCDIReader::ReadHorizontalGridData() + + if (nv >= 3) // ((nv == 3 || nv == 4)) // && gridInqType(gridID_l) == GRID_UNSTRUCTURED) + { +- Grid grid{ .GridID = gridID_l, .Size = gridInqSize(gridID_l), .PointsPerCell = nv }; +- Grids.push_back(grid); ++ Grid grid{ ++ .GridID = gridID_l, .Size = static_cast<size_t>(gridInqSize(gridID_l)), .PointsPerCell = nv ++ }; ++ this->Internals->Grids.push_back(grid); + } + } + +- if (Grids.size() == 0) ++ if (this->Internals->Grids.empty()) ++ { + return 0; ++ } + return 1; + } + +@@ -971,11 +1097,11 @@ int vtkCDIReader::ReadHorizontalGridData() + int vtkCDIReader::ReadVerticalGridData() + { + this->ZAxisID = -1; +- int nzaxis = vlistNzaxis(this->VGridFile.getVListID()); ++ int nzaxis = vlistNzaxis(this->Internals->VGridFile.getVListID()); + int found = 0; + for (int i = 0; i < nzaxis; ++i) + { +- int zaxisID_l = vlistZaxis(this->VGridFile.getVListID(), i); ++ int zaxisID_l = vlistZaxis(this->Internals->VGridFile.getVListID(), i); + if (zaxisInqSize(zaxisID_l) == 1 || zaxisInqType(zaxisID_l) == ZAXIS_SURFACE) + { + this->SurfIDs.insert(zaxisID_l); +@@ -986,7 +1112,7 @@ int vtkCDIReader::ReadVerticalGridData() + + for (int i = 0; i < nzaxis; ++i) + { +- int zaxisID_l = vlistZaxis(this->VGridFile.getVListID(), i); ++ int zaxisID_l = vlistZaxis(this->Internals->VGridFile.getVListID(), i); + if (zaxisInqSize(zaxisID_l) > 1) + { + found = 1; +@@ -1005,24 +1131,25 @@ int vtkCDIReader::GetVars() + int cellVarIndex = -1; + int pointVarIndex = -1; + int domainVarIndex = -1; +- int numVars = vlistNvars(this->DataFile.getVListID()); ++ int numVars = vlistNvars(this->Internals->DataFile.getVListID()); + +- vtkDebugMacro("Found " << numVars << " as Variables for VListID " << this->DataFile.getVListID()); ++ vtkDebugMacro( ++ "Found " << numVars << " as Variables for VListID " << this->Internals->DataFile.getVListID()); + + for (int i = 0; i < numVars; i++) + { + int varID = i; + cdi_tools::CDIVar aVar; + +- aVar.StreamID = this->DataFile.getStreamID(); ++ aVar.StreamID = this->Internals->DataFile.getStreamID(); + aVar.VarID = varID; +- aVar.GridID = vlistInqVarGrid(this->DataFile.getVListID(), varID); +- aVar.ZAxisID = vlistInqVarZaxis(this->DataFile.getVListID(), varID); ++ aVar.GridID = vlistInqVarGrid(this->Internals->DataFile.getVListID(), varID); ++ aVar.ZAxisID = vlistInqVarZaxis(this->Internals->DataFile.getVListID(), varID); + aVar.GridSize = static_cast<int>(gridInqSize(aVar.GridID)); + aVar.NLevel = zaxisInqSize(aVar.ZAxisID); + aVar.Type = 0; + aVar.ConstTime = 0; +- vlistInqVarName(this->DataFile.getVListID(), varID, aVar.Name); ++ vlistInqVarName(this->Internals->DataFile.getVListID(), varID, aVar.Name); + vtkDebugMacro("Processing variable " << i << '\t' << aVar.Name); + + // to do multiple grids: +@@ -1030,11 +1157,11 @@ int vtkCDIReader::GetVars() + // - Check if all grids can be reconstructed, or if bnds are all zero + // - Reform gui to load either Cell, Point or Edge data + +- if (vlistInqVarTsteptype(this->DataFile.getVListID(), varID) == TIME_CONSTANT) ++ if (vlistInqVarTsteptype(this->Internals->DataFile.getVListID(), varID) == TIME_CONSTANT) + { + aVar.ConstTime = 1; + } +- if (aVar.ZAxisID != this->ZAxisID && SurfIDs.count(aVar.ZAxisID) == 0) ++ if (aVar.ZAxisID != this->ZAxisID && this->SurfIDs.count(aVar.ZAxisID) == 0) + // We are handling a different 3D Axis. + { + vtkDebugMacro("Skipping " << aVar.Name << " as it has the wrong ZAxis " << aVar.ZAxisID); +@@ -1180,7 +1307,7 @@ int vtkCDIReader::BuildVarArrays() + + if (!this->FileName.empty()) + { +- if (!GetVars()) ++ if (!this->GetVars()) + { + return 0; + } +@@ -1394,10 +1521,10 @@ int vtkCDIReader::ConstructGridGeometry() + vtkDebugMacro("Start reading Vertices"); + try + { +- gridInqXboundsPart(Grids.at(this->GridID).GridID, (this->BeginCell * this->PointsPerCell), size, +- cLonVertices.data()); +- gridInqYboundsPart(Grids.at(this->GridID).GridID, (this->BeginCell * this->PointsPerCell), size, +- cLatVertices.data()); ++ gridInqXboundsPart(Internals->Grids.at(this->GridID).GridID, ++ (this->BeginCell * this->PointsPerCell), size, cLonVertices.data()); ++ gridInqYboundsPart(Internals->Grids.at(this->GridID).GridID, ++ (this->BeginCell * this->PointsPerCell), size, cLatVertices.data()); + } + catch (const std::out_of_range& oor) + { +@@ -1417,7 +1544,7 @@ int vtkCDIReader::ConstructGridGeometry() + { + if (this->ProjectionMode != projection::CATALYST) + { +- gridInqXunits(Grids.at(this->GridID).GridID, units); ++ gridInqXunits(this->Internals->Grids.at(this->GridID).GridID, units); + if (strncmp(units, "degree", 6) == 0) + { + for (int i = 0; i < size; i++) +@@ -1425,7 +1552,7 @@ int vtkCDIReader::ConstructGridGeometry() + cLonVertices[i] = vtkMath::RadiansFromDegrees(cLonVertices[i]); + } + } +- gridInqYunits(Grids.at(this->GridID).GridID, units); ++ gridInqYunits(this->Internals->Grids.at(this->GridID).GridID, units); + if (strncmp(units, "degree", 6) == 0) + { + for (int i = 0; i < size; i++) +@@ -1452,8 +1579,10 @@ int vtkCDIReader::ConstructGridGeometry() + this->NumberLocalCells = new_cells[0] / this->PointsPerCell; + this->NumberLocalPoints = new_cells[1]; + if (this->NumberOfPoints and this->NumberOfPoints != new_cells[1]) ++ { + vtkDebugMacro("ConstructGridGeometry: Changing number of points from " + << this->NumberOfPoints << " to " << new_cells[1]); ++ } + + this->NumberOfPoints = new_cells[1]; + +@@ -1470,8 +1599,8 @@ int vtkCDIReader::ConstructGridGeometry() + // now get the individual coordinates out of the clon/clat vertices + for (int i = 0; i < this->NumberLocalPoints; i++) + { +- projection::longLatToCartesian( +- cLonVertices[i], cLatVertices[i], &PointX[i], &PointY[i], &PointZ[i], this->ProjectionMode); ++ projection::longLatToCartesian(cLonVertices[i], cLatVertices[i], &this->PointX[i], ++ &this->PointY[i], &this->PointZ[i], this->ProjectionMode); + } + + // mirror the mesh if needed +@@ -1501,10 +1630,12 @@ int vtkCDIReader::ConstructGridGeometry() + std::vector<double> clat_vert2(size2); + try + { +- gridInqXboundsPart(Grids.at(this->GridID).GridID, 0, size2, clon_vert2.data()); +- gridInqYboundsPart(Grids.at(this->GridID).GridID, 0, size2, clat_vert2.data()); ++ gridInqXboundsPart( ++ this->Internals->Grids.at(this->GridID).GridID, 0, size2, clon_vert2.data()); ++ gridInqYboundsPart( ++ this->Internals->Grids.at(this->GridID).GridID, 0, size2, clat_vert2.data()); + +- gridInqXunits(Grids.at(this->GridID).GridID, units); ++ gridInqXunits(this->Internals->Grids.at(this->GridID).GridID, units); + if (strncmp(units, "degree", 6) == 0) + { + for (int i = 0; i < size2; i++) +@@ -1513,7 +1644,7 @@ int vtkCDIReader::ConstructGridGeometry() + } + } + +- gridInqYunits(Grids.at(this->GridID).GridID, units); ++ gridInqYunits(this->Internals->Grids.at(this->GridID).GridID, units); + if (strncmp(units, "degree", 6) == 0) + { + for (int i = 0; i < size2; i++) +@@ -1556,8 +1687,6 @@ int vtkCDIReader::ConstructGridGeometry() + this->CurrentExtraPoint = this->NumberLocalPoints; + this->CurrentExtraCell = this->NumberLocalCells; + +- cLonVertices.clear(); +- cLatVertices.clear(); + vtkDebugMacro("Grid Reconstruction complete..."); + return 1; + } +@@ -1587,7 +1716,7 @@ int vtkCDIReader::AllocSphereGeometry() + { + vtkDebugMacro("In AllocSphereGeometry..."); + +- if (!GridReconstructed || this->ReconstructNew) ++ if (!this->GridReconstructed || this->ReconstructNew) + { + this->ConstructGridGeometry(); + } +@@ -1624,7 +1753,7 @@ int vtkCDIReader::AllocLatLonGeometry() + return 0; + } + +- if (!GridReconstructed || this->ReconstructNew) ++ if (!this->GridReconstructed || this->ReconstructNew) + { + this->ConstructGridGeometry(); + } +@@ -1661,16 +1790,16 @@ int vtkCDIReader::LoadClonClatVars() + std::vector<double> cLon_l(this->NumberLocalCells); + std::vector<double> cLat_l(this->NumberLocalCells); + +- gridInqXvalsPart( +- Grids.at(this->GridID).GridID, this->BeginCell, this->NumberLocalCells, cLon_l.data()); +- gridInqYvalsPart( +- Grids.at(this->GridID).GridID, this->BeginCell, this->NumberLocalCells, cLat_l.data()); ++ gridInqXvalsPart(this->Internals->Grids.at(this->GridID).GridID, this->BeginCell, ++ this->NumberLocalCells, cLon_l.data()); ++ gridInqYvalsPart(this->Internals->Grids.at(this->GridID).GridID, this->BeginCell, ++ this->NumberLocalCells, cLat_l.data()); + + char units[CDI_MAX_NAME]; + + try + { +- gridInqXunits(Grids.at(this->GridID).GridID, units); ++ gridInqXunits(this->Internals->Grids.at(this->GridID).GridID, units); + if (strncmp(units, "degree", 6) == 0) + { + for (int i = 0; i < this->NumberLocalCells; i++) +@@ -1678,7 +1807,7 @@ int vtkCDIReader::LoadClonClatVars() + cLon_l[i] = vtkMath::RadiansFromDegrees(cLon_l[i]); + } + } +- gridInqYunits(Grids.at(this->GridID).GridID, units); ++ gridInqYunits(this->Internals->Grids.at(this->GridID).GridID, units); + if (strncmp(units, "degree", 6) == 0) + { + for (int i = 0; i < this->NumberLocalCells; i++) +@@ -1821,7 +1950,8 @@ int vtkCDIReader::CheckForMaskData() + { + const double maskVal = this->UseCustomMaskValue + ? this->CustomMaskValue +- : vlistInqVarMissval(this->DataFile.getVListID(), this->Internals->CellVars[mask_pos].VarID); ++ : vlistInqVarMissval( ++ this->Internals->DataFile.getVListID(), this->Internals->CellVars[mask_pos].VarID); + + cdi_tools::CDIVar* cdiVar = &(this->Internals->CellVars[mask_pos]); + if (this->ShowMultilayerView) +@@ -1889,7 +2019,7 @@ int vtkCDIReader::AddMaskHalo() + { + int l = j * this->MaximumNVertLevels; + int k = this->MaximumNVertLevels * this->CellMap[j - this->NumberLocalCells]; +- this->CellMask[l + levelNum] = (CellMask[k + levelNum]); ++ this->CellMask[l + levelNum] = (this->CellMask[k + levelNum]); + } + } + } +@@ -1921,7 +2051,7 @@ bool vtkCDIReader::BuildDomainCellVars() + CHECK_NEW(this->DomainCellVar); + double val = 0; + int mask_pos = 0; +- int numVars = vlistNvars(this->DataFile.getVListID()); ++ int numVars = vlistNvars(this->Internals->DataFile.getVListID()); + + for (int i = 0; i < numVars; i++) + { +@@ -2156,7 +2286,7 @@ int vtkCDIReader::Wrap(int axis) + } + } + +- if (!ShowMultilayerView) ++ if (!this->ShowMultilayerView) + { + this->MaximumCells = static_cast<int>(this->CurrentExtraCell); + this->MaximumPoints = static_cast<int>(this->CurrentExtraPoint); +@@ -2284,8 +2414,10 @@ void vtkCDIReader::OutputPoints(bool init) + { + retval = projection::cartesianToSpherical(x, y, z, &rho, &phi, &theta); + if (!retval) ++ { + retval = projection::sphericalToCartesian( + rho + this->Layer0Offset * adjustedLayerThickness, phi, theta, &x, &y, &z); ++ } + } + } + +@@ -2480,9 +2612,13 @@ void vtkCDIReader::OutputCells(bool init) + polygon[k + this->PointsPerCell] = val; + } + if (cellType == VTK_POLYHEDRON) ++ { + this->InsertPolyhedron(polygon); ++ } + else ++ { + output->InsertNextCell(cellType, pointsPerPolygon, polygon.data()); ++ } + } + } + } +@@ -2568,7 +2704,9 @@ void vtkCDIReader::InsertPolyhedron(std::vector<vtkIdType> polygon) + int vtkCDIReader::LoadPointVarData(int variableIndex, double dTimeStep) + { + if (!(this->PointsPerCell == 3)) ++ { + return 0; ++ } + + this->PointDataSelected = variableIndex; + +@@ -2778,7 +2916,7 @@ int vtkCDIReader::LoadCellVarDataTemplate( + //------------------------------------------------------------------------------ + int vtkCDIReader::ReplaceFillWithNan(const int varID, vtkDataArray* dataArray) + { +- double miss = vlistInqVarMissval(this->DataFile.getVListID(), varID); ++ double miss = vlistInqVarMissval(this->Internals->DataFile.getVListID(), varID); + + // NaN only available with float and double. + if (dataArray->GetDataType() == VTK_FLOAT) +@@ -2914,7 +3052,7 @@ int vtkCDIReader::LoadPointVarDataTemplate( + } + + // layer below, which is repeated ... +- dataBlock[i++] = dataTmp[j + ((MaximumNVertLevels - 1) * this->NumberLocalPoints)]; ++ dataBlock[i++] = dataTmp[j + ((this->MaximumNVertLevels - 1) * this->NumberLocalPoints)]; + } + } + } +@@ -3091,11 +3229,11 @@ int vtkCDIReader::LoadDomainVarData(int variableIndex) + //----------------------------------------------------------------------------- + int vtkCDIReader::FillGridDimensions() + { +- this->DimensionSets.resize(0); ++ this->Internals->DimensionSets.resize(0); + +- int ngrids = vlistNgrids(this->DataFile.getVListID()); +- int nzaxis = vlistNzaxis(this->DataFile.getVListID()); +- int nvars = vlistNvars(this->DataFile.getVListID()); ++ int ngrids = vlistNgrids(this->Internals->DataFile.getVListID()); ++ int nzaxis = vlistNzaxis(this->Internals->DataFile.getVListID()); ++ int nvars = vlistNvars(this->Internals->DataFile.getVListID()); + char nameGridX[CDI_MAX_NAME]; + char nameGridY[CDI_MAX_NAME]; + char nameLev[CDI_MAX_NAME]; +@@ -3104,8 +3242,8 @@ int vtkCDIReader::FillGridDimensions() + + for (int k = 0; k < nvars; k++) + { +- int i = vlistInqVarGrid(this->DataFile.getVListID(), k); +- int j = vlistInqVarZaxis(this->DataFile.getVListID(), k); ++ int i = vlistInqVarGrid(this->Internals->DataFile.getVListID(), k); ++ int j = vlistInqVarZaxis(this->Internals->DataFile.getVListID(), k); + hits.insert(std::to_string(i) + "x" + std::to_string(j)); + // IDs are not 0 to n-1 but can be 30-ish for a file with 3 grids. + // they map to the gridID_l and zaxisID_l values below. +@@ -3117,14 +3255,14 @@ int vtkCDIReader::FillGridDimensions() + for (int j = 0; j < nzaxis; ++j) + { + std::string dimEncoding("("); +- int gridID_l = vlistGrid(this->DataFile.getVListID(), i); ++ int gridID_l = vlistGrid(this->Internals->DataFile.getVListID(), i); + gridInqXname(gridID_l, nameGridX); + gridInqYname(gridID_l, nameGridY); + dimEncoding += nameGridX; + dimEncoding += ", "; + dimEncoding += nameGridY; + dimEncoding += ", "; +- int zaxisID_l = vlistZaxis(this->DataFile.getVListID(), j); ++ int zaxisID_l = vlistZaxis(this->Internals->DataFile.getVListID(), j); + zaxisInqName(zaxisID_l, nameLev); + dimEncoding += nameLev; + dimEncoding += ")"; +@@ -3140,13 +3278,13 @@ int vtkCDIReader::FillGridDimensions() + << i << '\t' << j << "\t" << gridID_l << '\t' << zaxisID_l << "\t" << dimEncoding + << " - has hits.\n"); + +- dimset ds{ .DimsetID = counter, ++ Dimset ds{ .DimsetID = counter, + .GridID = -1, + .ZAxisID = zaxisID_l, +- .GridSize = gridInqSize(gridID_l), ++ .GridSize = static_cast<size_t>(gridInqSize(gridID_l)), + .NLevel = zaxisInqSize(zaxisID_l), + .label = dimEncoding }; +- DimensionSets.push_back(ds); ++ this->Internals->DimensionSets.push_back(ds); + counter++; + } + } +@@ -3154,8 +3292,8 @@ int vtkCDIReader::FillGridDimensions() + this->VariableDimensions->SetNumberOfValues(counter); + for (int i = 0; i < counter; i++) + { +- this->AllDimensions->InsertNextValue(DimensionSets[i].label); +- this->VariableDimensions->SetValue(i, DimensionSets[i].label.c_str()); ++ this->AllDimensions->InsertNextValue(this->Internals->DimensionSets[i].label); ++ this->VariableDimensions->SetValue(i, this->Internals->DimensionSets[i].label.c_str()); + } + + return 1; +@@ -3281,7 +3419,9 @@ void vtkCDIReader::SetMaskingVariable(const char* name) + void vtkCDIReader::SetUseCustomMaskValue(bool val) + { + if (val == this->UseCustomMaskValue) ++ { + return; ++ } + + this->UseCustomMaskValue = val; + +@@ -3301,7 +3441,9 @@ void vtkCDIReader::SetUseCustomMaskValue(bool val) + void vtkCDIReader::SetCustomMaskValue(double val) + { + if (val == this->CustomMaskValue) ++ { + return; ++ } + + this->CustomMaskValue = val; + +@@ -3346,7 +3488,7 @@ void vtkCDIReader::SetFileName(const char* val) + { + if (this->FileName.empty() || val == nullptr || strcmp(this->FileName.c_str(), val) != 0) + { +- this->DataFile.setVoid(); ++ this->Internals->DataFile.setVoid(); + this->Modified(); + if (val == nullptr) + { +diff --git a/Plugins/CDIReader/Reader/vtkCDIReader.h b/Plugins/CDIReader/Reader/vtkCDIReader.h +index 44f9073a97..fa90313d4d 100644 +--- a/Plugins/CDIReader/Reader/vtkCDIReader.h ++++ b/Plugins/CDIReader/Reader/vtkCDIReader.h +@@ -46,7 +46,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #include "projections.h" // for projection enum + +-#include "DataSource.h" + #include <memory> // for unique_ptr + #include <unordered_set> + #include <vector> // for std::vector +@@ -56,23 +55,6 @@ class vtkDoubleArray; + class vtkFieldData; + class vtkMultiProcessController; + +-struct dimset +-{ +- size_t DimsetID; +- int GridID; +- int ZAxisID; +- size_t GridSize; +- int NLevel; +- std::string label; +-}; +- +-struct Grid +-{ +- int GridID; +- size_t Size; +- int PointsPerCell; +-}; +- + /** + * + * @class vtkCDIReader +@@ -345,8 +327,6 @@ protected: + double Layer0OffsetRange[2]; + + int DimensionSelection; +- std::vector<dimset> DimensionSets; +- std::vector<Grid> Grids; + bool InvertZAxis; + bool AddCoordinateVars; + projection::Projection ProjectionMode; +@@ -391,7 +371,6 @@ protected: + int NumberOfDomainVars; + bool GridReconstructed; + +- DataSource::CDIObject DataFile, GridFile, VGridFile; + int GridID; + int ZAxisID; + std::unordered_set<int> SurfIDs; +-- +GitLab + + +From 751b0f14bdfbde85a79e6c06dda1aeff6e36e495 Mon Sep 17 00:00:00 2001 +From: Nils-Arne Dreier <dreier@dkrz.de> +Date: Mon, 21 Nov 2022 16:10:42 +0100 +Subject: [PATCH 3/5] store DimensionSelection as string instead of an index + +When the reader object is restored from a state file the +`VariableDimensions` is not initialized when `SetDimensions` is +called. We therefore need to store the actuall string representation +of the dimension. +--- + Plugins/CDIReader/Reader/vtkCDIReader.cxx | 63 ++++++++--------------- + Plugins/CDIReader/Reader/vtkCDIReader.h | 2 +- + 2 files changed, 23 insertions(+), 42 deletions(-) + +diff --git a/Plugins/CDIReader/Reader/vtkCDIReader.cxx b/Plugins/CDIReader/Reader/vtkCDIReader.cxx +index c44e81f6bb..763b6e6602 100644 +--- a/Plugins/CDIReader/Reader/vtkCDIReader.cxx ++++ b/Plugins/CDIReader/Reader/vtkCDIReader.cxx +@@ -193,7 +193,7 @@ public: + vtkSmartPointer<vtkIdTypeArray> PointsToSendToProcessesLengths; + vtkSmartPointer<vtkIdTypeArray> PointsToSendToProcessesOffsets; + +- std::vector<Dimset> DimensionSets; ++ std::map<std::string, Dimset> DimensionSets; + std::vector<Grid> Grids; + CDIObject DataFile, GridFile, VGridFile; + }; +@@ -828,7 +828,7 @@ void vtkCDIReader::SetDefaults() + this->HaveDomainVariable = false; + this->HaveDomainData = false; + +- this->DimensionSelection = 0; ++ this->DimensionSelection = ""; + this->InvertZAxis = false; + this->DoublePrecision = false; + this->ShowClonClat = false; +@@ -977,36 +977,20 @@ int vtkCDIReader::GetDims() + + this->FillGridDimensions(); + +- try ++ if (this->DimensionSelection.empty()) + { +- if (this->DimensionSelection >= 0) ++ // select first by default ++ this->DimensionSelection = this->Internals->DimensionSets.begin()->first; ++ } ++ for (int i = 0; i < this->Internals->Grids.size(); i++) ++ if (this->Internals->DimensionSets.at(this->DimensionSelection).GridSize == ++ this->Internals->Grids.at(i).Size) + { +- if (this->DimensionSelection >= this->Internals->DimensionSets.size()) +- { +- vtkErrorMacro("Trying to select inexistent dimensionset " +- << this->DimensionSelection << " " << this->Internals->DimensionSets.size() +- << " are available."); +- return 0; +- } +- for (int i = 0; i < this->Internals->Grids.size(); i++) +- if (this->Internals->DimensionSets.at(this->DimensionSelection).GridSize == +- this->Internals->Grids.at(i).Size) +- { +- this->Internals->DimensionSets.at(this->DimensionSelection).GridID = +- this->Internals->Grids.at(i).GridID; +- this->GridID = i; +- } +- this->ZAxisID = this->Internals->DimensionSets.at(this->DimensionSelection).ZAxisID; +- vtkDebugMacro( +- "NEW ZAxisID" << this->ZAxisID << " from " +- << this->Internals->DimensionSets.at(this->DimensionSelection).ZAxisID); ++ this->Internals->DimensionSets.at(this->DimensionSelection).GridID = ++ this->Internals->Grids.at(i).GridID; ++ this->GridID = i; + } +- } +- catch (const std::out_of_range& oor) +- { +- vtkErrorMacro("Out of Range error in GetDims trying to set Grid and ZAxisID: " << oor.what()); +- return 0; +- } ++ this->ZAxisID = this->Internals->DimensionSets.at(this->DimensionSelection).ZAxisID; + + try + { +@@ -3229,7 +3213,7 @@ int vtkCDIReader::LoadDomainVarData(int variableIndex) + //----------------------------------------------------------------------------- + int vtkCDIReader::FillGridDimensions() + { +- this->Internals->DimensionSets.resize(0); ++ this->Internals->DimensionSets.clear(); + + int ngrids = vlistNgrids(this->Internals->DataFile.getVListID()); + int nzaxis = vlistNzaxis(this->Internals->DataFile.getVListID()); +@@ -3284,16 +3268,19 @@ int vtkCDIReader::FillGridDimensions() + .GridSize = static_cast<size_t>(gridInqSize(gridID_l)), + .NLevel = zaxisInqSize(zaxisID_l), + .label = dimEncoding }; +- this->Internals->DimensionSets.push_back(ds); ++ this->Internals->DimensionSets[dimEncoding] = ds; + counter++; + } + } + this->AllDimensions->SetNumberOfValues(0); + this->VariableDimensions->SetNumberOfValues(counter); +- for (int i = 0; i < counter; i++) ++ ++ int i = 0; ++ for (const auto& label_diset_tuple : this->Internals->DimensionSets) + { +- this->AllDimensions->InsertNextValue(this->Internals->DimensionSets[i].label); +- this->VariableDimensions->SetValue(i, this->Internals->DimensionSets[i].label.c_str()); ++ this->AllDimensions->InsertNextValue(label_diset_tuple.first); ++ this->VariableDimensions->SetValue(i, label_diset_tuple.first.c_str()); ++ ++i; + } + + return 1; +@@ -3305,13 +3292,7 @@ int vtkCDIReader::FillGridDimensions() + void vtkCDIReader::SetDimensions(const char* dimensions) + { + vtkDebugMacro("In SetDimensions"); +- for (vtkIdType i = 0; i < this->VariableDimensions->GetNumberOfValues(); i++) +- { +- if (this->VariableDimensions->GetValue(i) == dimensions) +- { +- this->DimensionSelection = i; +- } +- } ++ this->DimensionSelection = dimensions; + + this->PointDataArraySelection->RemoveAllArrays(); + this->CellDataArraySelection->RemoveAllArrays(); +diff --git a/Plugins/CDIReader/Reader/vtkCDIReader.h b/Plugins/CDIReader/Reader/vtkCDIReader.h +index fa90313d4d..3bbee37929 100644 +--- a/Plugins/CDIReader/Reader/vtkCDIReader.h ++++ b/Plugins/CDIReader/Reader/vtkCDIReader.h +@@ -326,7 +326,7 @@ protected: + double Layer0Offset; + double Layer0OffsetRange[2]; + +- int DimensionSelection; ++ std::string DimensionSelection; + bool InvertZAxis; + bool AddCoordinateVars; + projection::Projection ProjectionMode; +-- +GitLab + + +From 622ba89edcd743d5603dbda519fb3c4bafe2c1cd Mon Sep 17 00:00:00 2001 +From: Nils-Arne Dreier <dreier@dkrz.de> +Date: Tue, 22 Nov 2022 08:08:36 +0100 +Subject: [PATCH 4/5] clean up variable initialization + +use `vtkNew` instead of `vtkSmartPointer` + +remove initialization of std containers + +add CDIDimensionsTest + +use SetValue instead of InsertNextValue + +minor formating fixes +--- + Plugins/CDIReader/Reader/vtkCDIReader.cxx | 115 ++--------- + Plugins/CDIReader/Reader/vtkCDIReader.h | 183 +++++++++--------- + .../CDIReader/Testing/CDIDimensionsTest.xml | 25 +++ + Plugins/CDIReader/Testing/CMakeLists.txt | 2 + + 4 files changed, 130 insertions(+), 195 deletions(-) + create mode 100644 Plugins/CDIReader/Testing/CDIDimensionsTest.xml + +diff --git a/Plugins/CDIReader/Reader/vtkCDIReader.cxx b/Plugins/CDIReader/Reader/vtkCDIReader.cxx +index 763b6e6602..7df87eff14 100644 +--- a/Plugins/CDIReader/Reader/vtkCDIReader.cxx ++++ b/Plugins/CDIReader/Reader/vtkCDIReader.cxx +@@ -41,7 +41,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + #include "vtkCellData.h" + #include "vtkCellType.h" + #include "vtkDataObject.h" +-#include "vtkDoubleArray.h" + #include "vtkDummyController.h" + #include "vtkFieldData.h" + #include "vtkFileSeriesReader.h" +@@ -262,18 +261,10 @@ vtkCDIReader::vtkCDIReader() + : Internals(new Internal()) + { + vtkDebugMacro("Starting to create vtkCDIReader..."); +- this->Initialized = false; + + this->SetNumberOfInputPorts(0); + this->SetNumberOfOutputPorts(1); + +- this->VariableDimensions = vtkSmartPointer<vtkStringArray>::New(); +- this->AllDimensions = vtkSmartPointer<vtkStringArray>::New(); +- this->AllVariableArrayNames = vtkSmartPointer<vtkStringArray>::New(); +- this->InfoRequested = false; +- this->DataRequested = false; +- this->HaveDomainData = false; +- + // Setup selection callback to modify this object when array selection changes + this->SelectionObserver->SetCallback(&vtkCDIReader::SelectionCallback); + this->SelectionObserver->SetClientData(this); +@@ -281,7 +272,6 @@ vtkCDIReader::vtkCDIReader() + this->PointDataArraySelection->AddObserver(vtkCommand::ModifiedEvent, this->SelectionObserver); + this->DomainDataArraySelection->AddObserver(vtkCommand::ModifiedEvent, this->SelectionObserver); + +- this->Controller = nullptr; + this->SetController(vtkMultiProcessController::GetGlobalController()); + if (!this->Controller) + { +@@ -289,8 +279,6 @@ vtkCDIReader::vtkCDIReader() + this->SetController(dummyController); + } + +- this->SetDefaults(); +- + vtkDebugMacro("MAX_VARS:" << MAX_VARS); + vtkDebugMacro("Created vtkCDIReader"); + } +@@ -802,78 +790,6 @@ int vtkCDIReader::RegenerateGeometry() + return 1; + } + +-//---------------------------------------------------------------------------- +-// Set defaults for various parameters and initialize some variables +-//---------------------------------------------------------------------------- +-void vtkCDIReader::SetDefaults() +-{ +- this->Grib = false; +- +- this->VerticalLevelRange[0] = 0; +- this->VerticalLevelRange[1] = 1; +- this->VerticalLevelSelected = 0; +- this->LayerThicknessRange[0] = 0; +- this->LayerThicknessRange[1] = 100; +- this->LayerThickness = 50; +- this->Bloat = 2.0; +- +- this->Layer0OffsetRange[0] = -50; +- this->Layer0OffsetRange[1] = 51; +- this->Layer0Offset = 1e-30; +- +- // this is hard coded for now but will change when data generation gets more mature +- this->PerformanceDataFile = "timer.atmo."; +- this->DomainVarName = "cell_owner"; +- this->DomainDimension = "domains"; +- this->HaveDomainVariable = false; +- this->HaveDomainData = false; +- +- this->DimensionSelection = ""; +- this->InvertZAxis = false; +- this->DoublePrecision = false; +- this->ShowClonClat = false; +- this->ProjectionMode = projection::SPHERICAL; +- this->ShowMultilayerView = false; +- this->ReconstructNew = false; +- this->CellDataSelected = 0; +- this->PointDataSelected = 0; +- this->MaskingVarname = ""; +- this->GotMask = false; +- this->AddCoordinateVars = false; +- this->NumberOfTimeSteps = 0; +- this->NumberOfAllTimeSteps = 0; +- this->TimeSeriesTimeSteps.reserve(5); +- this->TimeSteps.reserve(100 * 250 + 25); +- this->TimeSeriesTimeStepsAllSet = false; +- this->GridReconstructed = false; +- this->CustomMaskValue = 0.0; +- this->InvertMask = false; +- this->UseMask = false; +- this->UseCustomMaskValue = false; +- this->Decomposition = false; +- +- this->SkipGrid = false; +- +- this->BeginCell = 0; +- this->FirstDay = -1; +- this->TimeSet = false; +- +- this->DTime = 0; +- this->FileSeriesNumber = 0; +- this->NumberOfFiles = 1; +- this->NeedVerticalGridFile = false; +- this->GridID = -1; +- this->NumberOfProcesses = 1; +- +- this->BuildDomainArrays = false; +- this->MaximumNVertLevels = 0; +- this->MaximumPoints = 0; +- this->MaximumCells = 0; +- this->DepthVar = nullptr; +- +- this->NumberOfPoints = 0; +-} +- + //---------------------------------------------------------------------------- + // Get dimensions of key NetCDF variables + //---------------------------------------------------------------------------- +@@ -983,6 +899,7 @@ int vtkCDIReader::GetDims() + this->DimensionSelection = this->Internals->DimensionSets.begin()->first; + } + for (int i = 0; i < this->Internals->Grids.size(); i++) ++ { + if (this->Internals->DimensionSets.at(this->DimensionSelection).GridSize == + this->Internals->Grids.at(i).Size) + { +@@ -990,6 +907,7 @@ int vtkCDIReader::GetDims() + this->Internals->Grids.at(i).GridID; + this->GridID = i; + } ++ } + this->ZAxisID = this->Internals->DimensionSets.at(this->DimensionSelection).ZAxisID; + + try +@@ -1047,16 +965,16 @@ int vtkCDIReader::GetDims() + int vtkCDIReader::ReadHorizontalGridData() + { + this->Internals->Grids.resize(0); +- int vlistID_l = this->Internals->GridFile.getVListID(); +- if (vlistID_l == CDI_UNDEFID) ++ int vListID = this->Internals->GridFile.getVListID(); ++ if (vListID == CDI_UNDEFID) + { + vtkErrorMacro("No VList found in Grid file."); + return 0; + } +- int ngrids = vlistNgrids(vlistID_l); ++ int ngrids = vlistNgrids(vListID); + for (int i = 0; i < ngrids; ++i) + { +- int gridID_l = vlistGrid(vlistID_l, i); ++ int gridID_l = vlistGrid(vListID, i); + int nv = gridInqNvertex(gridID_l); + + if (nv >= 3) // ((nv == 3 || nv == 4)) // && gridInqType(gridID_l) == GRID_UNSTRUCTURED) +@@ -1499,8 +1417,7 @@ int vtkCDIReader::ConstructGridGeometry() + } + cLonVertices.resize(size); + cLatVertices.resize(size); +- this->DepthVar = new double[this->MaximumNVertLevels]; +- CHECK_NEW(this->DepthVar); ++ this->DepthVar.resize(this->MaximumNVertLevels); + + vtkDebugMacro("Start reading Vertices"); + try +@@ -1519,7 +1436,7 @@ int vtkCDIReader::ConstructGridGeometry() + vtkDebugMacro("Done reading Vertices"); + vtkDebugMacro("Getting vertical axis" << this->ZAxisID << " expecting up to " + << this->MaximumNVertLevels << " levels."); +- zaxisInqLevels(this->ZAxisID, this->DepthVar); ++ zaxisInqLevels(this->ZAxisID, this->DepthVar.data()); + vtkDebugMacro("Got vertical axis" << this->ZAxisID); + char units[CDI_MAX_NAME]; + this->OrigConnections.resize(size); +@@ -2030,9 +1947,8 @@ int vtkCDIReader::AddMaskHalo() + //---------------------------------------------------------------------------- + bool vtkCDIReader::BuildDomainCellVars() + { +- this->DomainCellVar = new double[this->NumberOfCells * this->NumberOfDomainVars]; ++ this->DomainCellVar.resize(this->NumberOfCells * this->NumberOfDomainVars); + std::vector<double> domainTMP(this->NumberOfCells); +- CHECK_NEW(this->DomainCellVar); + double val = 0; + int mask_pos = 0; + int numVars = vlistNvars(this->Internals->DataFile.getVListID()); +@@ -2058,7 +1974,7 @@ bool vtkCDIReader::BuildDomainCellVars() + val = this->DomainVarDataArray->GetArray(j)->GetComponent(domainTMP[k], 0l); + this->DomainCellVar[k + (j * this->NumberOfCells)] = val; + } +- domainVar->SetArray(this->DomainCellVar + (j * this->NumberOfCells), this->NumberLocalCells, 0, ++ domainVar->SetArray(&(this->DomainCellVar[j * this->NumberOfCells]), this->NumberLocalCells, 0, + vtkDoubleArray::VTK_DATA_ARRAY_FREE); + domainVar->SetName(this->Internals->DomainVars[j].c_str()); + this->Output->GetCellData()->AddArray(domainVar); +@@ -2364,7 +2280,7 @@ void vtkCDIReader::OutputPoints(bool init) + points->Allocate(this->MaximumPoints, this->MaximumPoints); + } + +- if (this->DepthVar == nullptr) ++ if (this->DepthVar.empty()) + { + vtkDebugMacro("OutputPoints: this->MaximumPoints: " + << this->MaximumPoints << " this->MaximumNVertLevels: " << this->MaximumNVertLevels +@@ -2507,7 +2423,7 @@ void vtkCDIReader::OutputCells(bool init) + << " ShowMultilayerView: " << this->ShowMultilayerView + << " CurrentExtraCell: " << this->CurrentExtraCell); + +- if (this->DepthVar == nullptr) ++ if (this->DepthVar.empty()) + { + vtkErrorMacro( + "File " << this->FileName << " OutputCells: this->MaximumCells: " << this->MaximumCells +@@ -2610,10 +2526,8 @@ void vtkCDIReader::OutputCells(bool init) + + if (this->AddCoordinateVars && this->ShowClonClat) + { +- this->ClonArray = vtkSmartPointer<vtkDoubleArray>::New(); + this->ClonArray->SetName("Center Longitude (CLON)"); + this->ClonArray->SetNumberOfTuples(this->NumberLocalCells * this->MaximumNVertLevels); +- this->ClatArray = vtkSmartPointer<vtkDoubleArray>::New(); + this->ClatArray->SetName("Center Latitude (CLAT)"); + this->ClatArray->SetNumberOfTuples(this->NumberLocalCells * this->MaximumNVertLevels); + if (this->ShowMultilayerView) +@@ -3132,7 +3046,6 @@ int vtkCDIReader::LoadDomainVarData(int variableIndex) + // the data available. Needs to be improved together with the modellers. + vtkDebugMacro("In vtkCDIReader::LoadDomainVarData"); + std::string variable = this->Internals->DomainVars[variableIndex]; +- this->DomainDataSelected = variableIndex; + + // Allocate data array for this variable + if (!this->DomainVarDataArray->HasArray(variable.c_str())) +@@ -3272,13 +3185,13 @@ int vtkCDIReader::FillGridDimensions() + counter++; + } + } +- this->AllDimensions->SetNumberOfValues(0); ++ this->AllDimensions->SetNumberOfValues(counter); + this->VariableDimensions->SetNumberOfValues(counter); + + int i = 0; + for (const auto& label_diset_tuple : this->Internals->DimensionSets) + { +- this->AllDimensions->InsertNextValue(label_diset_tuple.first); ++ this->AllDimensions->SetValue(i, label_diset_tuple.first); + this->VariableDimensions->SetValue(i, label_diset_tuple.first.c_str()); + ++i; + } +diff --git a/Plugins/CDIReader/Reader/vtkCDIReader.h b/Plugins/CDIReader/Reader/vtkCDIReader.h +index 3bbee37929..087fe35a54 100644 +--- a/Plugins/CDIReader/Reader/vtkCDIReader.h ++++ b/Plugins/CDIReader/Reader/vtkCDIReader.h +@@ -41,8 +41,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + #include "vtkUnstructuredGridAlgorithm.h" + + #include "vtkDataArraySelection.h" // for ivars +-#include "vtkSmartPointer.h" // for ivars +-#include "vtkStringArray.h" // for ivars ++#include "vtkDoubleArray.h" ++#include "vtkSmartPointer.h" // for ivars ++#include "vtkStringArray.h" // for ivars + + #include "projections.h" // for projection enum + +@@ -94,11 +95,11 @@ public: + vtkGetMacro(NumberOfCellVars, int); + vtkGetMacro(NumberOfPointVars, int); + +- vtkSmartPointer<vtkStringArray> VariableDimensions; +- vtkSmartPointer<vtkStringArray> AllDimensions; ++ vtkNew<vtkStringArray> VariableDimensions; ++ vtkNew<vtkStringArray> AllDimensions; + void SetDimensions(const char* dimensions); + vtkStringArray* GetAllVariableArrayNames(); +- vtkSmartPointer<vtkStringArray> AllVariableArrayNames; ++ vtkNew<vtkStringArray> AllVariableArrayNames; + vtkGetObjectMacro(AllDimensions, vtkStringArray); + vtkGetObjectMacro(VariableDimensions, vtkStringArray); + +@@ -200,7 +201,6 @@ protected: + + int OpenFile(); + void DestroyData(); +- void SetDefaults(); + int CheckForMaskData(); + int AddMaskHalo(); + int GetVars(); +@@ -259,54 +259,52 @@ protected: + int AddMirrorPointX(int index, double dividerX, double offset); + int AddMirrorPointY(int index, double dividerY, double offset); + +- vtkMultiProcessController* Controller; +- +- bool Initialized; +- +- int NumberOfProcesses; +- double CustomMaskValue; +- int BeginPoint, EndPoint, BeginCell, EndCell; +- int Piece, NumPieces; +- int NumberLocalCells; +- int NumberAllCells; +- int NumberLocalPoints; +- int NumberAllPoints; +- bool Decomposition; +- long FirstDay; +- int ModNumPoints; +- int ModNumCells; +- unsigned int CurrentExtraPoint; // current extra point +- unsigned int CurrentExtraCell; // current extra cell ++ vtkMultiProcessController* Controller = nullptr; ++ ++ bool Initialized = false; ++ ++ int NumberOfProcesses = 1; ++ double CustomMaskValue = 0.0; ++ int BeginPoint = 0, EndPoint = 0, BeginCell = 0, EndCell = 0; ++ int Piece = 0, NumPieces = 0; ++ int NumberLocalCells = 0; ++ int NumberAllCells = 0; ++ int NumberLocalPoints = 0; ++ int NumberAllPoints = 0; ++ bool Decomposition = false; ++ long FirstDay = -1; ++ int ModNumPoints = 0; ++ int ModNumCells = 0; ++ unsigned int CurrentExtraPoint = 0; // current extra point ++ unsigned int CurrentExtraCell = 0; // current extra cell + std::vector<unsigned int> CellMap; // maps from added cell to original cell # + std::vector<unsigned int> PointMap; // maps from added point to original point # + +- std::string FileName; +- std::string FileNameGrid; +- std::string FileNameGridSelect; +- std::string FileSeriesFirstName; +- std::string MaskingVarname; +- int NumberOfTimeSteps; +- int NumberOfAllTimeSteps; ++ std::string FileName = ""; ++ std::string FileSeriesFirstName = ""; ++ std::string MaskingVarname = ""; ++ int NumberOfTimeSteps = 0; ++ int NumberOfAllTimeSteps = 0; + std::vector<int> TimeSeriesTimeSteps; +- bool TimeSeriesTimeStepsAllSet; +- bool TimeSet; +- double DTime; ++ bool TimeSeriesTimeStepsAllSet = false; ++ bool TimeSet = false; ++ double DTime = 0; + std::vector<double> TimeSteps; +- int FileSeriesNumber; +- int NumberOfFiles; +- double Bloat; ++ int FileSeriesNumber = 0; ++ int NumberOfFiles = 1; ++ double Bloat = 2.0; + +- bool UseMask; +- bool InvertMask; +- bool GotMask; +- bool UseCustomMaskValue; ++ bool UseMask = false; ++ bool InvertMask = false; ++ bool GotMask = false; ++ bool UseCustomMaskValue = false; + +- bool SkipGrid; ++ bool SkipGrid = false; + + vtkNew<vtkCallbackCommand> SelectionObserver; +- bool InfoRequested; +- bool DataRequested; +- bool Grib; ++ bool InfoRequested = false; ++ bool DataRequested = false; ++ bool Grib = false; + + vtkNew<vtkDataArraySelection> CellDataArraySelection; + vtkNew<vtkDataArraySelection> PointDataArraySelection; +@@ -316,69 +314,66 @@ protected: + vtkNew<vtkFieldData> PointVarDataArray; + vtkNew<vtkFieldData> DomainVarDataArray; + +- int VerticalLevelSelected; +- int VerticalLevelRange[2]; +- int CellDataSelected; +- int PointDataSelected; +- int DomainDataSelected; +- int LayerThickness; +- int LayerThicknessRange[2]; +- double Layer0Offset; +- double Layer0OffsetRange[2]; +- +- std::string DimensionSelection; +- bool InvertZAxis; +- bool AddCoordinateVars; +- projection::Projection ProjectionMode; +- bool DoublePrecision; +- bool ShowClonClat; +- bool ShowMultilayerView; +- bool HaveDomainData; +- bool HaveDomainVariable; +- bool BuildDomainArrays; +- std::string DomainVarName; +- std::string DomainDimension; +- std::string PerformanceDataFile; +- +- int MaximumNVertLevels; +- int NumberOfCells; +- int NumberOfVertices; +- int NumberOfPoints; +- int NumberOfTriangles; +- int NumberOfDomains; +- int PointsPerCell; +- bool ReconstructNew; +- bool NeedHorizontalGridFile; +- bool NeedVerticalGridFile; +- bool WrapOn; ++ int VerticalLevelSelected = 0; ++ int VerticalLevelRange[2] = { 0, 1 }; ++ int CellDataSelected = 0; ++ int PointDataSelected = 0; ++ int LayerThickness = 50; ++ int LayerThicknessRange[2] = { 0, 100 }; ++ double Layer0Offset = 1e-30; ++ double Layer0OffsetRange[2] = { -50, 51 }; ++ ++ std::string DimensionSelection = ""; ++ bool InvertZAxis = false; ++ bool AddCoordinateVars = false; ++ projection::Projection ProjectionMode = projection::SPHERICAL; ++ bool DoublePrecision = false; ++ bool ShowClonClat = false; ++ bool ShowMultilayerView = false; ++ bool HaveDomainData = false; ++ bool HaveDomainVariable = false; ++ bool BuildDomainArrays = false; ++ ++ // this is hard coded for now but will change when data generation gets more mature ++ std::string DomainVarName = "cell_owner"; ++ std::string DomainDimension = "domains"; ++ std::string PerformanceDataFile = "timer.atmo."; ++ ++ int MaximumNVertLevels = 0; ++ int NumberOfCells = 0; ++ int NumberOfPoints = 0; ++ int NumberOfDomains = 0; ++ int PointsPerCell = 0; ++ bool ReconstructNew = false; ++ bool WrapOn = false; + + std::vector<double> CLon; + std::vector<double> CLat; +- double* DepthVar; ++ std::vector<double> DepthVar; + std::vector<double> PointX; + std::vector<double> PointY; + std::vector<double> PointZ; + std::vector<int> OrigConnections; + std::vector<int> ModConnections; + std::vector<bool> CellMask; +- double* DomainCellVar; +- int MaximumCells; +- int MaximumPoints; ++ std::vector<double> DomainCellVar; ++ int MaximumCells = 0; ++ int MaximumPoints = 0; + std::vector<int> VertexIds; + +- int NumberOfCellVars; +- int NumberOfPointVars; +- int NumberOfDomainVars; +- bool GridReconstructed; ++ int NumberOfCellVars = 0; ++ int NumberOfPointVars = 0; ++ int NumberOfDomainVars = 0; ++ bool GridReconstructed = false; + +- int GridID; +- int ZAxisID; ++ int GridID = -1; ++ int ZAxisID = -1; + std::unordered_set<int> SurfIDs; + +- std::string TimeUnits; +- std::string Calendar; +- vtkSmartPointer<vtkDoubleArray> ClonArray; +- vtkSmartPointer<vtkDoubleArray> ClatArray; ++ std::string TimeUnits = ""; ++ std::string Calendar = ""; ++ vtkNew<vtkDoubleArray> ClonArray; ++ vtkNew<vtkDoubleArray> ClatArray; + vtkNew<vtkUnstructuredGrid> Output; + + private: +diff --git a/Plugins/CDIReader/Testing/CDIDimensionsTest.xml b/Plugins/CDIReader/Testing/CDIDimensionsTest.xml +new file mode 100644 +index 0000000000..4b71e0824b +--- /dev/null ++++ b/Plugins/CDIReader/Testing/CDIDimensionsTest.xml +@@ -0,0 +1,25 @@ ++<?xml version="1.0" ?> ++<pqevents> ++ <pqevent object="pqClientMainWindow/MainControlsToolbar/actionOpenData" command="activate" arguments="" /> ++ <pqevent object="pqClientMainWindow/FileOpenDialog" command="filesSelected" arguments="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/NetCDF/edges.nc" /> ++ <pqevent object="pqClientMainWindow/pqSelectReaderDialog/okButton" command="activate" arguments="" /> ++ <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/Show3DSurface/CheckBox" command="set_boolean" arguments="true" /> ++ <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" /> ++ <pqevent object="pqClientMainWindow/variableToolbar/displayColor/Variables" command="activated" arguments="p_ice_Tsurf" /> ++ <pqevent object="pqClientMainWindow/cameraToolbar/actionIsometricView" command="activate" arguments="" /> ++ <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" /> ++ <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionTest_0.png" width="300" height="300" /> ++ ++ <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" /> ++ <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/Dimensions/ComboBox" command="activated" arguments="(clon, clat, depth_2)" /> ++ <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" /> ++ <pqevent object="pqClientMainWindow/cameraToolbar/actionIsometricView" command="activate" arguments="" /> ++ <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" /> ++ <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionTest_1.png" width="300" height="300" /> ++ ++ <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/Dimensions/ComboBox" command="activated" arguments="(elon, elat, depth)" /> ++ <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" /> ++ <pqevent object="pqClientMainWindow/variableToolbar/displayColor/Variables" command="activated" arguments="VN" /> ++ <pqevent object="pqClientMainWindow/cameraToolbar/actionIsometricView" command="activate" arguments="" /> ++ <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" /> ++</pqevents> +diff --git a/Plugins/CDIReader/Testing/CMakeLists.txt b/Plugins/CDIReader/Testing/CMakeLists.txt +index 1862dff5b2..7e3628e39d 100644 +--- a/Plugins/CDIReader/Testing/CMakeLists.txt ++++ b/Plugins/CDIReader/Testing/CMakeLists.txt +@@ -10,11 +10,13 @@ ExternalData_Expand_Arguments(ParaViewData _ + "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/NetCDF/fesom.nc}" + "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDISimpleRead.png,:}" + "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDIUseMask.png,:}" ++ "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDIDimensionsTest.png,:}" + ) + + set (xml_tests + CDISimpleRead.xml + CDIUseMask.xml ++ CDIDimensionsTest.xml + ) + + paraview_add_client_tests( +-- +GitLab + + +From b3d4bc3426d112567a0072cb8cffa7cf8b2aa42f Mon Sep 17 00:00:00 2001 +From: Mathieu Westphal <mathieu.westphal@kitware.com> +Date: Wed, 23 Nov 2022 13:55:04 +0100 +Subject: [PATCH 5/5] Adding testing data + +Add/fix baselines for testing in CDIReader plugin + +Fix tests +--- + Plugins/CDIReader/Testing/CDIDimensionsTest.xml | 4 ++-- + Plugins/CDIReader/Testing/CDISimpleRead.xml | 10 +++++----- + Plugins/CDIReader/Testing/CDIUseMask.xml | 12 ++++++------ + Plugins/CDIReader/Testing/CMakeLists.txt | 17 ++++++++++++++--- + .../Data/Baseline/CDIDimensionsTest.png.sha512 | 1 + + .../Baseline/CDIDimensionsTest_A.png.sha512 | 1 + + .../Baseline/CDIDimensionsTest_B.png.sha512 | 1 + + ..._0.png.sha512 => CDISimpleRead_A.png.sha512} | 0 + ..._1.png.sha512 => CDISimpleRead_B.png.sha512} | 0 + ..._2.png.sha512 => CDISimpleRead_C.png.sha512} | 0 + ..._3.png.sha512 => CDISimpleRead_D.png.sha512} | 0 + ..._4.png.sha512 => CDISimpleRead_E.png.sha512} | 0 + ...ask_0.png.sha512 => CDIUseMask_A.png.sha512} | 0 + ...ask_1.png.sha512 => CDIUseMask_B.png.sha512} | 0 + ...ask_2.png.sha512 => CDIUseMask_C.png.sha512} | 0 + ...ask_3.png.sha512 => CDIUseMask_D.png.sha512} | 0 + ...ask_4.png.sha512 => CDIUseMask_E.png.sha512} | 0 + ...ask_5.png.sha512 => CDIUseMask_F.png.sha512} | 0 + .../Testing/Data/NetCDF/edges.nc.sha512 | 1 + + 19 files changed, 31 insertions(+), 16 deletions(-) + create mode 100644 Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionsTest.png.sha512 + create mode 100644 Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionsTest_A.png.sha512 + create mode 100644 Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionsTest_B.png.sha512 + rename Plugins/CDIReader/Testing/Data/Baseline/{CDISimpleRead_0.png.sha512 => CDISimpleRead_A.png.sha512} (100%) + rename Plugins/CDIReader/Testing/Data/Baseline/{CDISimpleRead_1.png.sha512 => CDISimpleRead_B.png.sha512} (100%) + rename Plugins/CDIReader/Testing/Data/Baseline/{CDISimpleRead_2.png.sha512 => CDISimpleRead_C.png.sha512} (100%) + rename Plugins/CDIReader/Testing/Data/Baseline/{CDISimpleRead_3.png.sha512 => CDISimpleRead_D.png.sha512} (100%) + rename Plugins/CDIReader/Testing/Data/Baseline/{CDISimpleRead_4.png.sha512 => CDISimpleRead_E.png.sha512} (100%) + rename Plugins/CDIReader/Testing/Data/Baseline/{CDIUseMask_0.png.sha512 => CDIUseMask_A.png.sha512} (100%) + rename Plugins/CDIReader/Testing/Data/Baseline/{CDIUseMask_1.png.sha512 => CDIUseMask_B.png.sha512} (100%) + rename Plugins/CDIReader/Testing/Data/Baseline/{CDIUseMask_2.png.sha512 => CDIUseMask_C.png.sha512} (100%) + rename Plugins/CDIReader/Testing/Data/Baseline/{CDIUseMask_3.png.sha512 => CDIUseMask_D.png.sha512} (100%) + rename Plugins/CDIReader/Testing/Data/Baseline/{CDIUseMask_4.png.sha512 => CDIUseMask_E.png.sha512} (100%) + rename Plugins/CDIReader/Testing/Data/Baseline/{CDIUseMask_5.png.sha512 => CDIUseMask_F.png.sha512} (100%) + create mode 100644 Plugins/CDIReader/Testing/Data/NetCDF/edges.nc.sha512 + +diff --git a/Plugins/CDIReader/Testing/CDIDimensionsTest.xml b/Plugins/CDIReader/Testing/CDIDimensionsTest.xml +index 4b71e0824b..bdcb113c46 100644 +--- a/Plugins/CDIReader/Testing/CDIDimensionsTest.xml ++++ b/Plugins/CDIReader/Testing/CDIDimensionsTest.xml +@@ -8,14 +8,14 @@ + <pqevent object="pqClientMainWindow/variableToolbar/displayColor/Variables" command="activated" arguments="p_ice_Tsurf" /> + <pqevent object="pqClientMainWindow/cameraToolbar/actionIsometricView" command="activate" arguments="" /> + <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" /> +- <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionTest_0.png" width="300" height="300" /> ++ <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionsTest_A.png" width="300" height="300" /> + + <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" /> + <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/Dimensions/ComboBox" command="activated" arguments="(clon, clat, depth_2)" /> + <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" /> + <pqevent object="pqClientMainWindow/cameraToolbar/actionIsometricView" command="activate" arguments="" /> + <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" /> +- <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionTest_1.png" width="300" height="300" /> ++ <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionsTest_B.png" width="300" height="300" /> + + <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/Dimensions/ComboBox" command="activated" arguments="(elon, elat, depth)" /> + <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" /> +diff --git a/Plugins/CDIReader/Testing/CDISimpleRead.xml b/Plugins/CDIReader/Testing/CDISimpleRead.xml +index 3f787a306b..564721e3f5 100644 +--- a/Plugins/CDIReader/Testing/CDISimpleRead.xml ++++ b/Plugins/CDIReader/Testing/CDISimpleRead.xml +@@ -16,27 +16,27 @@ + <pqevent object="pqClientMainWindow/variableToolbar/actionScalarBarVisibility" command="set_boolean" arguments="false" /> + + <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" /> +- <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_0.png" width="300" height="300" /> ++ <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_A.png" width="300" height="300" /> + + <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/SetProjection/ComboBox" command="activated" arguments="Spherical Projection" /> + <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" /> + <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" /> +- <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_1.png" width="300" height="300" /> ++ <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_B.png" width="300" height="300" /> + + <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/SetProjection/ComboBox" command="activated" arguments="Cassini Projection" /> + <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" /> + <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" /> +- <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_2.png" width="300" height="300" /> ++ <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_C.png" width="300" height="300" /> + + <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/SetProjection/ComboBox" command="activated" arguments="Mollweide Projection" /> + <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" /> + <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" /> +- <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_3.png" width="300" height="300" /> ++ <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_D.png" width="300" height="300" /> + + <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/SetProjection/ComboBox" command="activated" arguments="Catalyst (no scaling)" /> + <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" /> + <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" /> +- <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_4.png" width="300" height="300" /> ++ <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_E.png" width="300" height="300" /> + + <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/SetProjection/ComboBox" command="activated" arguments="Spilhouse Projection" /> + <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" /> +diff --git a/Plugins/CDIReader/Testing/CDIUseMask.xml b/Plugins/CDIReader/Testing/CDIUseMask.xml +index f140573c29..b39e4929da 100644 +--- a/Plugins/CDIReader/Testing/CDIUseMask.xml ++++ b/Plugins/CDIReader/Testing/CDIUseMask.xml +@@ -11,31 +11,31 @@ + <pqevent object="pqClientMainWindow/variableToolbar/displayColor/Variables" command="activated" arguments="thetao" /> + <pqevent object="pqClientMainWindow/cameraToolbar/actionNegativeY" command="activate" arguments="" /> + <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" /> +- <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_0.png" width="300" height="300" /> ++ <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_A.png" width="300" height="300" /> + + <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/SetProjection/ComboBox" command="activated" arguments="Spherical Projection" /> + <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" /> + <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" /> +- <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_1.png" width="300" height="300" /> ++ <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_B.png" width="300" height="300" /> + + <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/SetProjection/ComboBox" command="activated" arguments="Cassini Projection" /> + <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" /> + <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" /> +- <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_2.png" width="300" height="300" /> ++ <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_C.png" width="300" height="300" /> + + <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/SetProjection/ComboBox" command="activated" arguments="Mollweide Projection" /> + <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" /> + <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" /> +- <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_3.png" width="300" height="300" /> ++ <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_D.png" width="300" height="300" /> + + <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/SetProjection/ComboBox" command="activated" arguments="Catalyst (no scaling)" /> + <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" /> + <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" /> +- <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_4.png" width="300" height="300" /> ++ <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_E.png" width="300" height="300" /> + + <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/ProxyPanel/SetProjection/ComboBox" command="activated" arguments="Spilhouse Projection" /> + <pqevent object="pqClientMainWindow/propertiesDock/propertiesPanel/Accept" command="activate" arguments="" /> + <pqevent object="pqClientMainWindow/cameraToolbar/actionResetCamera" command="activate" arguments="" /> +- <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_5.png" width="300" height="300" /> ++ <pqcompareview object="pqClientMainWindow/centralwidget/MultiViewWidget/CoreWidget/qt_tabwidget_stackedwidget/MultiViewWidget1/Container/Frame.0/CentralWidgetFrame/Viewport" baseline="$PARAVIEW_DATA_ROOT/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_F.png" width="300" height="300" /> + + </pqevents> +diff --git a/Plugins/CDIReader/Testing/CMakeLists.txt b/Plugins/CDIReader/Testing/CMakeLists.txt +index 7e3628e39d..e31c515f2b 100644 +--- a/Plugins/CDIReader/Testing/CMakeLists.txt ++++ b/Plugins/CDIReader/Testing/CMakeLists.txt +@@ -6,11 +6,22 @@ endif() + + set(_paraview_add_tests_default_test_data_target ParaViewData) + ExternalData_Expand_Arguments(ParaViewData _ ++ "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/NetCDF/edges.nc}" + "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/NetCDF/ts.nc}" + "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/NetCDF/fesom.nc}" +- "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDISimpleRead.png,:}" +- "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDIUseMask.png,:}" +- "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDIDimensionsTest.png,:}" ++ "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDISimpleRead_A.png,:}" ++ "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDISimpleRead_B.png,:}" ++ "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDISimpleRead_C.png,:}" ++ "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDISimpleRead_D.png,:}" ++ "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDISimpleRead_E.png,:}" ++ "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDIUseMask_A.png,:}" ++ "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDIUseMask_B.png,:}" ++ "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDIUseMask_C.png,:}" ++ "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDIUseMask_D.png,:}" ++ "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDIUseMask_E.png,:}" ++ "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDIUseMask_F.png,:}" ++ "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDIDimensionsTest_A.png,:}" ++ "DATA{${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline/CDIDimensionsTest_B.png,:}" + ) + + set (xml_tests +diff --git a/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionsTest.png.sha512 b/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionsTest.png.sha512 +new file mode 100644 +index 0000000000..9b8b47efa6 +--- /dev/null ++++ b/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionsTest.png.sha512 +@@ -0,0 +1 @@ ++11c6513595364e3e3dec4e21f4711745deb4cccf8a0f6d3cf6343a4241cf8bbbbdd21e3390b7313e499fd3669f828548e3e88b0f262cb188735809efbd076e06 +diff --git a/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionsTest_A.png.sha512 b/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionsTest_A.png.sha512 +new file mode 100644 +index 0000000000..2b763c05e8 +--- /dev/null ++++ b/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionsTest_A.png.sha512 +@@ -0,0 +1 @@ ++2b8c39ffbb41b22699a3ec4e84c29ee9dc701171dc31367919b027559c1785a73c772351e0a6fca60781f1aad45c41f0cb3be8f9f165c06c9b9c9ac2ead7877c +diff --git a/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionsTest_B.png.sha512 b/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionsTest_B.png.sha512 +new file mode 100644 +index 0000000000..55a1a41256 +--- /dev/null ++++ b/Plugins/CDIReader/Testing/Data/Baseline/CDIDimensionsTest_B.png.sha512 +@@ -0,0 +1 @@ ++a82a7f285150826a49c95253cd7b4ddbe83f138673b7979e00f3e7a137c8f6860a1847e7f5337722ef48cdf94c05654fa1d35b626b82edaf0d7f221d1f515324 +diff --git a/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_0.png.sha512 b/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_A.png.sha512 +similarity index 100% +rename from Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_0.png.sha512 +rename to Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_A.png.sha512 +diff --git a/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_1.png.sha512 b/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_B.png.sha512 +similarity index 100% +rename from Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_1.png.sha512 +rename to Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_B.png.sha512 +diff --git a/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_2.png.sha512 b/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_C.png.sha512 +similarity index 100% +rename from Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_2.png.sha512 +rename to Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_C.png.sha512 +diff --git a/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_3.png.sha512 b/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_D.png.sha512 +similarity index 100% +rename from Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_3.png.sha512 +rename to Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_D.png.sha512 +diff --git a/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_4.png.sha512 b/Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_E.png.sha512 +similarity index 100% +rename from Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_4.png.sha512 +rename to Plugins/CDIReader/Testing/Data/Baseline/CDISimpleRead_E.png.sha512 +diff --git a/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_0.png.sha512 b/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_A.png.sha512 +similarity index 100% +rename from Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_0.png.sha512 +rename to Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_A.png.sha512 +diff --git a/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_1.png.sha512 b/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_B.png.sha512 +similarity index 100% +rename from Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_1.png.sha512 +rename to Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_B.png.sha512 +diff --git a/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_2.png.sha512 b/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_C.png.sha512 +similarity index 100% +rename from Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_2.png.sha512 +rename to Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_C.png.sha512 +diff --git a/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_3.png.sha512 b/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_D.png.sha512 +similarity index 100% +rename from Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_3.png.sha512 +rename to Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_D.png.sha512 +diff --git a/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_4.png.sha512 b/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_E.png.sha512 +similarity index 100% +rename from Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_4.png.sha512 +rename to Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_E.png.sha512 +diff --git a/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_5.png.sha512 b/Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_F.png.sha512 +similarity index 100% +rename from Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_5.png.sha512 +rename to Plugins/CDIReader/Testing/Data/Baseline/CDIUseMask_F.png.sha512 +diff --git a/Plugins/CDIReader/Testing/Data/NetCDF/edges.nc.sha512 b/Plugins/CDIReader/Testing/Data/NetCDF/edges.nc.sha512 +new file mode 100644 +index 0000000000..4b3e624b62 +--- /dev/null ++++ b/Plugins/CDIReader/Testing/Data/NetCDF/edges.nc.sha512 +@@ -0,0 +1 @@ ++eb097c55f8df99e7f0be7b387de6c8970ba8255b6c633d3f2c4247ad5a8fe67238db8a98ff6322d4c03133a7c424832f1873f3e219734cdff517e731f60b60b6 +-- +GitLab + diff --git a/Golden_Repo/p/ParaView/parflowreader_fix-nlohmann_merge6050.patch b/Golden_Repo/p/ParaView/parflowreader_fix-nlohmann_merge6050.patch new file mode 100644 index 0000000000000000000000000000000000000000..05b0a99a23f1b7cc4c1ebfcac1477f722d5a92af --- /dev/null +++ b/Golden_Repo/p/ParaView/parflowreader_fix-nlohmann_merge6050.patch @@ -0,0 +1,160 @@ +From 1a32dd6fc394a75b6898b1d692157826ed235015 Mon Sep 17 00:00:00 2001 +From: David Thompson <david.thompson@kitware.com> +Date: Sat, 3 Dec 2022 01:08:56 -0500 +Subject: [PATCH 1/2] Make the ParFlow Plugin work with modern nlohmann::json. + +The previous version worked with nlohmann::json v3.6.1 but +is broken using v3.11.2. Rather than attempt to throw internal +nlohmann::json exception types, throw standard C++ exceptions +for our errors. +--- + Plugins/ParFlow/IO/vtkVectorJSON.h | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/Plugins/ParFlow/IO/vtkVectorJSON.h b/Plugins/ParFlow/IO/vtkVectorJSON.h +index 8e4d23c7e4..fb7fb5ecdb 100644 +--- a/Plugins/ParFlow/IO/vtkVectorJSON.h ++++ b/Plugins/ParFlow/IO/vtkVectorJSON.h +@@ -6,6 +6,8 @@ + + #include "nlohmann/json.hpp" // for json + ++#include <stdexcept> ++ + /// Convert a vtkVector (or any vtkTuple) into a json::array. + template <typename T, int S> + void to_json(nlohmann::json& j, const vtkTuple<T, S>& vec) +@@ -19,12 +21,11 @@ void from_json(const nlohmann::json& j, vtkTuple<T, S>& vec) + { + if (!j.is_array()) + { +- throw nlohmann::detail::type_error::create( +- 302, "type must be array, but is " + std::string(j.type_name())); ++ throw std::invalid_argument("type must be array, but is " + std::string(j.type_name())); + } + if (static_cast<int>(j.size()) != vec.GetSize()) + { +- throw nlohmann::detail::type_error::create(302, "array sizes do not match"); ++ throw std::invalid_argument("array sizes do not match"); + } + int ii = 0; + for (auto it = j.begin(); it != j.end(); ++it, ++ii) +-- +GitLab + + +From e7a0cb1c336fae38c41987e20ee2834eca034ae9 Mon Sep 17 00:00:00 2001 +From: David Thompson <david.thompson@kitware.com> +Date: Sat, 3 Dec 2022 01:28:27 -0500 +Subject: [PATCH 2/2] Switch the ParFlow plugin to VTK's nlohmann::json. + +Using this version allows us to enable the plugin by +default since it doesn't add any external dependencies. +--- + CMakeLists.txt | 2 +- + Plugins/ParFlow/IO/CMakeLists.txt | 7 ------- + Plugins/ParFlow/IO/vtk.module | 1 + + Plugins/ParFlow/IO/vtkParFlowMetaReader.cxx | 7 ++++++- + Plugins/ParFlow/IO/vtkParFlowMetaReader.h | 5 +++++ + Plugins/ParFlow/IO/vtkVectorJSON.h | 5 +++++ + 6 files changed, 18 insertions(+), 9 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 2674a59e83..e28ee1a594 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -312,7 +312,7 @@ set(paraview_default_plugins + PacMan + PanoramicProjectionView + ParametricSurfaces +- # ParFlow - Because of dependency to nlohmann_json ++ ParFlow + SaveStateAndScreenshot + SLACTools + StreamLinesRepresentation +diff --git a/Plugins/ParFlow/IO/CMakeLists.txt b/Plugins/ParFlow/IO/CMakeLists.txt +index ddafa4e6ab..733fd6cfc4 100644 +--- a/Plugins/ParFlow/IO/CMakeLists.txt ++++ b/Plugins/ParFlow/IO/CMakeLists.txt +@@ -7,17 +7,10 @@ set(private_headers + vtkVectorJSON.h + ) + +-vtk_module_find_package( +- PACKAGE nlohmann_json) +- + vtk_module_add_module(ParFlow::IO + CLASSES ${classes} + PRIVATE_HEADERS ${private_headers} + ) +-vtk_module_link(ParFlow::IO +- PUBLIC nlohmann_json::nlohmann_json +-) +- + paraview_add_server_manager_xmls( + XMLS ParFlowIO.xml + ) +diff --git a/Plugins/ParFlow/IO/vtk.module b/Plugins/ParFlow/IO/vtk.module +index ea43242296..2caca0ba91 100644 +--- a/Plugins/ParFlow/IO/vtk.module ++++ b/Plugins/ParFlow/IO/vtk.module +@@ -8,3 +8,4 @@ DEPENDS + VTK::CommonDataModel + VTK::CommonExecutionModel + VTK::ParallelCore ++ VTK::nlohmannjson +diff --git a/Plugins/ParFlow/IO/vtkParFlowMetaReader.cxx b/Plugins/ParFlow/IO/vtkParFlowMetaReader.cxx +index ba33a5eb77..06805bdf7d 100644 +--- a/Plugins/ParFlow/IO/vtkParFlowMetaReader.cxx ++++ b/Plugins/ParFlow/IO/vtkParFlowMetaReader.cxx +@@ -25,7 +25,12 @@ + #include "vtksys/FStream.hxx" + #include "vtksys/SystemTools.hxx" + +-#include "nlohmann/json.hpp" ++#if 0 ++#include "nlohmann/json.hpp" // for json bits ++#else ++#include "vtk_nlohmannjson.h" // Use VTK's mangled version ++#include VTK_NLOHMANN_JSON(json.hpp) // Use VTK's mangled version ++#endif + + #include <algorithm> + #include <cmath> +diff --git a/Plugins/ParFlow/IO/vtkParFlowMetaReader.h b/Plugins/ParFlow/IO/vtkParFlowMetaReader.h +index 3fc07ca58c..ace47939ee 100644 +--- a/Plugins/ParFlow/IO/vtkParFlowMetaReader.h ++++ b/Plugins/ParFlow/IO/vtkParFlowMetaReader.h +@@ -8,7 +8,12 @@ + #include "vtkSmartPointer.h" // for ivars + #include "vtkVector.h" // for vtkVector* + ++#if 0 + #include "nlohmann/json.hpp" // for json bits ++#else ++#include "vtk_nlohmannjson.h" // Use VTK's mangled version ++#include VTK_NLOHMANN_JSON(json.hpp) // Use VTK's mangled version ++#endif + + #include <map> // for std::map + #include <set> // for std::set +diff --git a/Plugins/ParFlow/IO/vtkVectorJSON.h b/Plugins/ParFlow/IO/vtkVectorJSON.h +index fb7fb5ecdb..57b39e94a1 100644 +--- a/Plugins/ParFlow/IO/vtkVectorJSON.h ++++ b/Plugins/ParFlow/IO/vtkVectorJSON.h +@@ -4,7 +4,12 @@ + + #include "vtkVector.h" + ++#if 0 + #include "nlohmann/json.hpp" // for json ++#else ++#include "vtk_nlohmannjson.h" // Use VTK's mangled version ++#include VTK_NLOHMANN_JSON(json.hpp) // Use VTK's mangled version ++#endif + + #include <stdexcept> + +-- +GitLab + diff --git a/Golden_Repo/p/ParaViewPlugin-Nek5000/ParaViewPlugin-Nek5000-20230208-foss-2022a-EGL.eb b/Golden_Repo/p/ParaViewPlugin-Nek5000/ParaViewPlugin-Nek5000-20230208-foss-2022a-EGL.eb new file mode 100644 index 0000000000000000000000000000000000000000..b2cfe635ec66e7a3471162c6e2dd5250a6393fc8 --- /dev/null +++ b/Golden_Repo/p/ParaViewPlugin-Nek5000/ParaViewPlugin-Nek5000-20230208-foss-2022a-EGL.eb @@ -0,0 +1,34 @@ +easyblock = 'CMakeMake' + +name = 'ParaViewPlugin-Nek5000' +version = '20230208' +versionsuffix = '-EGL' + +homepage = "http://www.paraview.org" +description = "Plugin for ParaView. Paraview is a scientific parallel visualizer." + +toolchain = {'name': 'foss', 'version': '2022a'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/jfavre/ParaViewNek5000Plugin/archive/'] +sources = ['bade61018d40d5ad83c1b64f3babaed2bdbe1986.tar.gz'] +checksums = ['c5ad5471299cce305adacfa2748026354628d2cc6b5321a48214a0461f2597ff'] + +builddependencies = [ + ('CMake', '3.23.1'), +] + +dependencies = [ + ('ParaView', '5.11.0', '-EGL'), +] + +separate_build_dir = True + +modextrapaths = {'PV_PLUGIN_PATH': './lib/paraview-5.11/plugins/pvNek5000Reader/'} + +sanity_check_paths = { + 'files': ['include/vtkNek5000Reader.h', 'lib/paraview-5.11/plugins/pvNek5000Reader/libNek5000Reader.so'], + 'dirs': ['include', 'lib', 'lib/paraview-5.11/plugins/pvNek5000Reader'] +} + +moduleclass = 'vis' diff --git a/Golden_Repo/p/ParaViewPlugin-Nek5000/ParaViewPlugin-Nek5000-20230208-foss-2022a.eb b/Golden_Repo/p/ParaViewPlugin-Nek5000/ParaViewPlugin-Nek5000-20230208-foss-2022a.eb new file mode 100644 index 0000000000000000000000000000000000000000..a4f75618a95e8ffb5470afa138ba660ec48e7356 --- /dev/null +++ b/Golden_Repo/p/ParaViewPlugin-Nek5000/ParaViewPlugin-Nek5000-20230208-foss-2022a.eb @@ -0,0 +1,33 @@ +easyblock = 'CMakeMake' + +name = 'ParaViewPlugin-Nek5000' +version = '20230208' + +homepage = "http://www.paraview.org" +description = "Plugin for ParaView. Paraview is a scientific parallel visualizer." + +toolchain = {'name': 'foss', 'version': '2022a'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/jfavre/ParaViewNek5000Plugin/archive/'] +sources = ['bade61018d40d5ad83c1b64f3babaed2bdbe1986.tar.gz'] +checksums = ['c5ad5471299cce305adacfa2748026354628d2cc6b5321a48214a0461f2597ff'] + +builddependencies = [ + ('CMake', '3.23.1'), +] + +dependencies = [ + ('ParaView', '5.11.0'), +] + +separate_build_dir = True + +modextrapaths = {'PV_PLUGIN_PATH': './lib/paraview-5.11/plugins/pvNek5000Reader/'} + +sanity_check_paths = { + 'files': ['include/vtkNek5000Reader.h', 'lib/paraview-5.11/plugins/pvNek5000Reader/libNek5000Reader.so'], + 'dirs': ['include', 'lib', 'lib/paraview-5.11/plugins/pvNek5000Reader'] +} + +moduleclass = 'vis' diff --git a/Golden_Repo/p/ParaViewPlugin-Nek5000/ParaViewPlugin-Nek5000-20230208-gpsmkl-2022a-EGL.eb b/Golden_Repo/p/ParaViewPlugin-Nek5000/ParaViewPlugin-Nek5000-20230208-gpsmkl-2022a-EGL.eb new file mode 100644 index 0000000000000000000000000000000000000000..fd4b649192f3c574d77ec61716d40486b2567aea --- /dev/null +++ b/Golden_Repo/p/ParaViewPlugin-Nek5000/ParaViewPlugin-Nek5000-20230208-gpsmkl-2022a-EGL.eb @@ -0,0 +1,34 @@ +easyblock = 'CMakeMake' + +name = 'ParaViewPlugin-Nek5000' +version = '20230208' +versionsuffix = '-EGL' + +homepage = "http://www.paraview.org" +description = "Plugin for ParaView. Paraview is a scientific parallel visualizer." + +toolchain = {'name': 'gpsmkl', 'version': '2022a'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/jfavre/ParaViewNek5000Plugin/archive/'] +sources = ['bade61018d40d5ad83c1b64f3babaed2bdbe1986.tar.gz'] +checksums = ['c5ad5471299cce305adacfa2748026354628d2cc6b5321a48214a0461f2597ff'] + +builddependencies = [ + ('CMake', '3.23.1'), +] + +dependencies = [ + ('ParaView', '5.11.0', '-EGL'), +] + +separate_build_dir = True + +modextrapaths = {'PV_PLUGIN_PATH': './lib/paraview-5.11/plugins/pvNek5000Reader/'} + +sanity_check_paths = { + 'files': ['include/vtkNek5000Reader.h', 'lib/paraview-5.11/plugins/pvNek5000Reader/libNek5000Reader.so'], + 'dirs': ['include', 'lib', 'lib/paraview-5.11/plugins/pvNek5000Reader'] +} + +moduleclass = 'vis' diff --git a/Golden_Repo/p/ParaViewPlugin-Nek5000/ParaViewPlugin-Nek5000-20230208-gpsmkl-2022a.eb b/Golden_Repo/p/ParaViewPlugin-Nek5000/ParaViewPlugin-Nek5000-20230208-gpsmkl-2022a.eb new file mode 100644 index 0000000000000000000000000000000000000000..75d2cbfecb39fb8fea46a5a1daba62a00a1d3235 --- /dev/null +++ b/Golden_Repo/p/ParaViewPlugin-Nek5000/ParaViewPlugin-Nek5000-20230208-gpsmkl-2022a.eb @@ -0,0 +1,33 @@ +easyblock = 'CMakeMake' + +name = 'ParaViewPlugin-Nek5000' +version = '20230208' + +homepage = "http://www.paraview.org" +description = "Plugin for ParaView. Paraview is a scientific parallel visualizer." + +toolchain = {'name': 'gpsmkl', 'version': '2022a'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/jfavre/ParaViewNek5000Plugin/archive/'] +sources = ['bade61018d40d5ad83c1b64f3babaed2bdbe1986.tar.gz'] +checksums = ['c5ad5471299cce305adacfa2748026354628d2cc6b5321a48214a0461f2597ff'] + +builddependencies = [ + ('CMake', '3.23.1'), +] + +dependencies = [ + ('ParaView', '5.11.0'), +] + +separate_build_dir = True + +modextrapaths = {'PV_PLUGIN_PATH': './lib/paraview-5.11/plugins/pvNek5000Reader/'} + +sanity_check_paths = { + 'files': ['include/vtkNek5000Reader.h', 'lib/paraview-5.11/plugins/pvNek5000Reader/libNek5000Reader.so'], + 'dirs': ['include', 'lib', 'lib/paraview-5.11/plugins/pvNek5000Reader'] +} + +moduleclass = 'vis' diff --git a/Golden_Repo/p/PySCF/PySCF-2.1.1-GCC-11.2.0.eb b/Golden_Repo/p/PySCF/PySCF-2.1.1-GCC-11.3.0.eb similarity index 100% rename from Golden_Repo/p/PySCF/PySCF-2.1.1-GCC-11.2.0.eb rename to Golden_Repo/p/PySCF/PySCF-2.1.1-GCC-11.3.0.eb diff --git a/Golden_Repo/p/psmpi/psmpi-5.8.0-1-GCC-11.3.0.eb b/Golden_Repo/p/psmpi/psmpi-5.8.0-1-GCC-11.3.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..79dbaeab0a1d58d2396480a8235c2deb750cdb49 --- /dev/null +++ b/Golden_Repo/p/psmpi/psmpi-5.8.0-1-GCC-11.3.0.eb @@ -0,0 +1,42 @@ +name = 'psmpi' +version = '5.8.0-1' + +homepage = 'https://github.com/ParaStation/psmpi2' +description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation, +based on MPICH v3. It provides extra low level communication libraries and integration with +various batch systems for tighter process control. +""" + +toolchain = {'name': 'GCC', 'version': '11.3.0'} + +sources = [SOURCE_TAR_GZ] +source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/'] +checksums = [ + # psmpi-5.8.0-1.tar.gz + 'bcebb42f68e062d4cf957c1ec12a8e2e50051265d38715854bafc34855ed3029', + # psmpi-5.5.0-1_ime.patch + 'c2418b9511560dca197242508de9c7b6b117122912b6d3a4aa18398834f465ff', +] + +dependencies = [ + ('pscom', '5.6-default'), + # needed due to the inclusion of hwloc + ('libxml2', '2.9.13'), + # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed + ('CUDA', '11.7', '', SYSTEM) +] + +patches = [ + 'psmpi-5.5.0-1_ime.patch' +] + +mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio' + +preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && ' +preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && ' + +threaded = False + +cuda = True + +moduleclass = 'mpi' diff --git a/Golden_Repo/p/psmpi/psmpi-5.8.0-1-NVHPC-22.11.eb b/Golden_Repo/p/psmpi/psmpi-5.8.0-1-NVHPC-22.11.eb new file mode 100644 index 0000000000000000000000000000000000000000..7b3584281e90504462332b299909a7ee2ebc2c49 --- /dev/null +++ b/Golden_Repo/p/psmpi/psmpi-5.8.0-1-NVHPC-22.11.eb @@ -0,0 +1,42 @@ +name = 'psmpi' +version = '5.8.0-1' + +homepage = 'https://github.com/ParaStation/psmpi2' +description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation, +based on MPICH v3. It provides extra low level communication libraries and integration with +various batch systems for tighter process control. +""" + +toolchain = {'name': 'NVHPC', 'version': '22.11'} + +sources = [SOURCE_TAR_GZ] +source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/'] +checksums = [ + # psmpi-5.8.0-1.tar.gz + 'bcebb42f68e062d4cf957c1ec12a8e2e50051265d38715854bafc34855ed3029', + # psmpi-5.5.0-1_ime.patch + 'c2418b9511560dca197242508de9c7b6b117122912b6d3a4aa18398834f465ff', +] + +dependencies = [ + ('pscom', '5.6-default'), + # needed due to the inclusion of hwloc + ('libxml2', '2.9.13'), + # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed + ('CUDA', '11.7', '', SYSTEM) +] + +patches = [ + 'psmpi-5.5.0-1_ime.patch' +] + +mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio' + +preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && ' +preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && ' + +threaded = False + +cuda = True + +moduleclass = 'mpi' diff --git a/Golden_Repo/p/psmpi/psmpi-5.8.0-1-intel-compilers-2022.1.0.eb b/Golden_Repo/p/psmpi/psmpi-5.8.0-1-intel-compilers-2022.1.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..b2aa8e9048ed8c6cf5e11dfc594df2879418fc18 --- /dev/null +++ b/Golden_Repo/p/psmpi/psmpi-5.8.0-1-intel-compilers-2022.1.0.eb @@ -0,0 +1,42 @@ +name = 'psmpi' +version = '5.8.0-1' + +homepage = 'https://github.com/ParaStation/psmpi2' +description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation, +based on MPICH v3. It provides extra low level communication libraries and integration with +various batch systems for tighter process control. +""" + +toolchain = {'name': 'intel-compilers', 'version': '2022.1.0'} + +sources = [SOURCE_TAR_GZ] +source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/'] +checksums = [ + # psmpi-5.8.0-1.tar.gz + 'bcebb42f68e062d4cf957c1ec12a8e2e50051265d38715854bafc34855ed3029', + # psmpi-5.5.0-1_ime.patch + 'c2418b9511560dca197242508de9c7b6b117122912b6d3a4aa18398834f465ff', +] + +dependencies = [ + ('pscom', '5.6-default'), + # needed due to the inclusion of hwloc + ('libxml2', '2.9.13'), + # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed + ('CUDA', '11.7', '', SYSTEM) +] + +patches = [ + 'psmpi-5.5.0-1_ime.patch' +] + +mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio' + +preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && ' +preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && ' + +threaded = False + +cuda = True + +moduleclass = 'mpi' diff --git a/Golden_Repo/q/Qiskit-juqcs/Qiskit-juqcs-0.5.0-gpsmkl-2022a.eb b/Golden_Repo/q/Qiskit-juqcs/Qiskit-juqcs-0.5.0-gpsmkl-2022a.eb new file mode 100644 index 0000000000000000000000000000000000000000..7f567c04e8b5b1e73f4ab1872ec6f2cc4f61e9d4 --- /dev/null +++ b/Golden_Repo/q/Qiskit-juqcs/Qiskit-juqcs-0.5.0-gpsmkl-2022a.eb @@ -0,0 +1,39 @@ +easyblock = 'PythonBundle' + +name = 'Qiskit-juqcs' +version = '0.5.0' + +homepage = 'https://jugit.fz-juelich.de/qip/juniq-platform/qiskit-juqcs/' +description = """Qiskit provider for JUQCS (Juelich Universal Quantum Computer Simulator).""" + +toolchain = {'name': 'gpsmkl', 'version': '2022a'} +toolchainopts = {'pic': True} + +dependencies = [ + ('Python', '3.10.4'), + ('Qiskit', '0.41.0'), +] + +exts_default_options = { + 'source_urls': [PYPI_SOURCE], + 'use_pip': True, + 'sanity_pip_check': True, + 'download_dep_fail': True, + 'use_pip_for_deps': False, +} + +exts_list = [ + ('PyJWT', '2.6.0', { + 'modulename': 'jwt', + 'checksums': ['69285c7e31fc44f68a1feb309e948e0df53259d579295e6cfe2b1792329f05fd'], + }), + ('pyunicore', '0.14.1', { + 'checksums': ['7efd4784d55ef02c4da4431232b54505814666577165c0f320c922ed2b32af01'], + }), + ('qiskit-juqcs', version, { + 'modulename': False, + 'checksums': ['6d8800986d5924e2e07635a315d15bfbc48297649604c83a4ec282ea7d6ba737'], + }), +] + +moduleclass = 'quantum' diff --git a/Golden_Repo/q/Qiskit/Qiskit-0.41.0-gpsmkl-2022a.eb b/Golden_Repo/q/Qiskit/Qiskit-0.41.0-gpsmkl-2022a.eb new file mode 100644 index 0000000000000000000000000000000000000000..d594c9ef997065e3874f5c576612915ed3caa93f --- /dev/null +++ b/Golden_Repo/q/Qiskit/Qiskit-0.41.0-gpsmkl-2022a.eb @@ -0,0 +1,153 @@ +easyblock = 'PythonBundle' + +name = 'Qiskit' +version = '0.41.0' + +homepage = 'https://qiskit.org' +description = """Qiskit is an open-source framework for working with noisy quantum computers + at the level of pulses, circuits, and algorithms.""" + +toolchain = {'name': 'gpsmkl', 'version': '2022a'} +toolchainopts = {'pic': True} + +builddependencies = [ + ('binutils', '2.38'), + ('CMake', '3.23.1'), + ('Ninja', '1.10.2'), + ('pkgconf', '1.8.0'), + ('pybind11', '2.9.2'), # for aer + ('Rust', '1.60.0'), # for retworkx +] + +dependencies = [ + ('Python', '3.10.4'), + ('SciPy-Stack', '2022a', '', ('gcccoremkl', '11.3.0-2022.1.0')), + ('scikit-build', '0.15.0'), # for aer + ('scikit-learn', '1.1.2', '', ('gcccoremkl', '11.3.0-2022.1.0')), + ('CVXOPT', '1.3.0'), + ('h5py', '3.7.0'), + ('PySCF', '2.1.1'), + ('SymEngine-python', '0.9.2', '', ('GCC', '11.3.0')), + ('numba', '0.56.4', '-CUDA-11.7', ('gcccoremkl', '11.3.0-2022.1.0')), + ('nlohmann_json', '3.10.5'), # for qiskit-aer + ('spdlog', '1.11.0'), + ('muparserx', '4.0.11'), # for qiskit-aer + ('networkx', '2.8.4', '', ('gcccoremkl', '11.3.0-2022.1.0')), +] + +local_common_opts = { + 'req_py_majver': '3', + 'req_py_minver': '0' +} + +# qiskit-aer must not use CONAN to install dependencies +modextravars = {'DISABLE_CONAN': 'YES'} + +exts_default_options = { + 'source_urls': [PYPI_SOURCE], + 'use_pip': True, + # DISABLED: because 'pip check' does not find pyscf (not installed with pip) + 'sanity_pip_check': True, + 'download_dep_fail': True, + 'use_pip_for_deps': False, +} + +exts_list = [ + ('dill', '0.3.5.1', { + 'checksums': ['d75e41f3eff1eee599d738e76ba8f4ad98ea229db8b085318aa2b3333a208c86'], + }), + ('ntlm-auth', '1.5.0', { + 'checksums': ['c9667d361dc09f6b3750283d503c689070ff7d89f2f6ff0d38088d5436ff8543'], + }), + ('retworkx', '0.11.0', { + 'checksums': ['a4c2a5ad3f8402493d41ad20ad91a03777ea214a3636c290272bbfaf36161161'], + }), + ('stevedore', '4.1.1', { + 'checksums': ['7f8aeb6e3f90f96832c301bff21a7eb5eefbe894c88c506483d355565d88cc1a'], + }), + ('rustworkx', '0.12.1', { + 'checksums': ['13a19a2f64dff086b3bffffb294c4630100ecbc13634b4995d9d36a481ae130e'], + }), + ('websockets', '10.4', { + 'checksums': ['eef610b23933c54d5d921c92578ae5f89813438fded840c2e9809d378dc765d3'], + }), + ('websocket-client', '1.3.3', { + 'checksums': ['d58c5f284d6a9bf8379dab423259fe8f85b70d5fa5d2916d5791a84594b122b1'], + 'modulename': False, + }), + ('requests_ntlm', '1.1.0', { + 'checksums': ['9189c92e8c61ae91402a64b972c4802b2457ce6a799d658256ebf084d5c7eb71'], + }), + ('fastdtw', '0.3.4', { + 'checksums': ['2350fa6ec36bcad186eaf81f46eff35181baf04e324f522de8aeb43d0243f64f'], + }), + ('inflection', '0.5.1', { + 'checksums': ['1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417'], + }), + ('beautifulsoup4', '4.11.1', { + 'checksums': ['ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693'], + 'modulename': 'bs4', + }), + ('pytz', '2022.7.1', { + 'checksums': ['01a0681c4b9684a28304615eba55d1ab31ae00bf68ec157ec3708a8182dbbcd0'], + }), + ('multitasking', '0.0.11', { + 'checksums': ['4d6bc3cc65f9b2dca72fb5a787850a88dae8f620c2b36ae9b55248e51bcd6026'], + }), + ('frozendict', '2.3.4', { + 'checksums': ['15b4b18346259392b0d27598f240e9390fafbff882137a9c48a1e0104fb17f78'], + }), + ('Nasdaq_Data_Link', '1.0.4', { + 'source_tmpl': '%(name)s-%(version)s-py2.py3-none-any.whl', + 'checksums': ['214a620551da1c7521476839fb96f932234d4d78e7ba44310722709ca37b0691'], + 'modulename': False, + }), + ('docplex', '2.25.236', { + 'checksums': ['256914b4c0113a4e1c78f32ea20c7d76dc8efe286fe890270e75cfad50fe510f'], + }), + ('yfinance', '0.2.9', { + 'checksums': ['449f9d54ff7868bdbb2d25b628a97d21fdd05e293a0f9975bba7aaa9984d08e6'], + }), + ('qiskit-nature', '0.5.2', { + 'modulename': 'qiskit_nature', + 'checksums': ['1786e1e825c450ae0ae4971246b0ca717bc5285696c3d342313f5cb125ce4202'], + }), + ('qiskit-optimization', '0.5.0', { + 'modulename': 'qiskit_optimization', + 'checksums': ['4804831e590a7159c2bd2be71750cde0c95a3b06e14a4843346e2ebcc7231e01'], + }), + ('qiskit-finance', '0.3.4', { + 'modulename': 'qiskit_finance', + 'checksums': ['b22fc7e0f23837ee659d1dbe974f3d69ec0d291e51486a2ad81dcf17b4ad8a4f'], + }), + ('qiskit-machine-learning', '0.5.0', { + 'modulename': 'qiskit_machine_learning', + 'checksums': ['c332e9d3ea658b2d24b401e5264b239f1093378952a70ba46c73a69a3ce7c727'], + }), + ('qiskit-terra', '0.23.1', { + 'modulename': 'qiskit.qobj', + 'patches': ['qiskit-terra-0.18.3_fix-qiskit-version-env.patch'], + 'checksums': [ + {'qiskit-terra-0.23.1.tar.gz': '71dfb4510b2f1fdb7589b412e8304d928534fa2eece66a65b3f841baf5412afb'}, + {'qiskit-terra-0.18.3_fix-qiskit-version-env.patch': + '1296cc650a7d4d2d908a6a5de6b4ce52106748464a54d47744a4648494f4c24e'}, + ], + }), + ('qiskit-ignis', '0.7.1', { + 'modulename': 'qiskit.ignis', + 'checksums': ['71efb17933717c0b8161a291ebd4f8d4fe8d7dfd1fdc66fa23a0b6d14fd10cf3'], + }), + ('qiskit-aer', '0.11.2', { + 'modulename': 'qiskit.providers.aer', + 'checksums': ['1bc1d3b46f7fc8976084a900cb9a2a80e8b25df6e59a88fd11136f24e1297fc1'], + }), + ('qiskit-ibmq-provider', '0.20.0', { + 'modulename': 'qiskit.providers.ibmq', + 'checksums': ['758938ce13a09f53ada9f4852891d7ca7ba98fddab6b9850417bbcb0efc26c2e'], + }), + ('qiskit', version, { + 'checksums': ['fa613d0312061a654b9b69e21374bac2dc04bb6df872b52370975d6dd51d7d81'], + }), +] + +moduleclass = 'quantum' diff --git a/Golden_Repo/v/VMD/VMD-1.9.3_plugins.patch b/Golden_Repo/v/VMD/VMD-1.9.3_plugins.patch new file mode 100644 index 0000000000000000000000000000000000000000..f4cf63549263fd9462ccfefa556b6508369e9a25 --- /dev/null +++ b/Golden_Repo/v/VMD/VMD-1.9.3_plugins.patch @@ -0,0 +1,29 @@ +Fix hard coded compiler, flags and tcl lib version for plugins + +Ake Sandgren, 20190823 +--- plugins/Make-arch.orig 2016-10-21 23:34:39.000000000 +0200 ++++ plugins/Make-arch 2019-08-23 10:45:51.403545042 +0200 +@@ -337,17 +337,17 @@ + "ARCH = LINUXAMD64" \ + "COPTO = -fPIC -m64 -o " \ + "LOPTO = -fPIC -m64 -lstdc++ -o " \ +- "CC = gcc" \ +- "CXX = g++" \ ++ "CC = $(CC)" \ ++ "CXX = $(CXX)" \ + "DEF = -D" \ +- "CCFLAGS = -m64 -O2 -fPIC -Wall" \ +- "CXXFLAGS = -m64 -O2 -fPIC -Wall" \ +- "TCLLDFLAGS = -ltcl8.5 -ldl" \ ++ "CCFLAGS = $(CFLAGS)" \ ++ "CXXFLAGS = $(CXXFLAGS)" \ ++ "TCLLDFLAGS = $(TCLLDFLAGS)" \ + "NETCDFLDFLAGS = -lnetcdf " \ + "AR = ar" \ + "NM = nm -p" \ + "RANLIB = touch" \ +- "SHLD = gcc -shared" ++ "SHLD = $(CC) -shared" + + LINUXCARMA: + $(MAKE) dynlibs staticlibs bins \ diff --git a/Golden_Repo/v/VMD/VMD-1.9.3_stride_MAX_AT_IN_RES.patch b/Golden_Repo/v/VMD/VMD-1.9.3_stride_MAX_AT_IN_RES.patch new file mode 100644 index 0000000000000000000000000000000000000000..9011384eff52af2075f6d7977d0b0de7e5bad400 --- /dev/null +++ b/Golden_Repo/v/VMD/VMD-1.9.3_stride_MAX_AT_IN_RES.patch @@ -0,0 +1,15 @@ +Increase number of atoms allowed per residues as per stride README from VMD + +Åke Sandgren, 2017-05-02 +diff -ru vmd-1.9.3.orig/lib/stride/stride.h vmd-1.9.3/lib/stride/stride.h +--- vmd-1.9.3.orig/lib/stride/stride.h 2017-05-02 13:47:26.484463970 +0200 ++++ vmd-1.9.3/lib/stride/stride.h 2017-05-02 13:47:43.748279797 +0200 +@@ -40,7 +40,7 @@ + #define MAX_BOND 100 + #define MAX_ASSIGN 500 + #define MAX_INFO 1000 +-#define MAX_AT_IN_RES 75 ++#define MAX_AT_IN_RES 100 + #define MAX_AT_IN_HETERORES 200 + #define MAXRESDNR 6 + #define MAXRESACC 6 diff --git a/Golden_Repo/v/VMD/VMD-1.9.3_stride_Makefile.patch b/Golden_Repo/v/VMD/VMD-1.9.3_stride_Makefile.patch new file mode 100644 index 0000000000000000000000000000000000000000..036430db8ffe77867d6e4ebf20fc57e422ff95f3 --- /dev/null +++ b/Golden_Repo/v/VMD/VMD-1.9.3_stride_Makefile.patch @@ -0,0 +1,37 @@ +Make stride use CC, CFLAGS and LDFLAGS from EB. + +Åke Sandgren, 2017-05-02 +diff -ru vmd-1.9.3.orig/lib/stride/Makefile vmd-1.9.3/lib/stride/Makefile +--- vmd-1.9.3.orig/lib/stride/Makefile 2003-04-08 14:03:14.000000000 +0200 ++++ vmd-1.9.3/lib/stride/Makefile 2017-05-02 13:46:01.973365383 +0200 +@@ -1,13 +1,14 @@ + #FLAGS = -lm -L/usr/pub/lib -lefence -o + #CC = cc -O2 -fullwarn -TENV:large_GOT + #CC = cc -g -Wall +-CC = gcc -O2 # at least for SunOS ++#CC = gcc -O2 # at least for SunOS + #CC = cc -g + + #CC = cc -O2 -fullwarn + + #CC = cc -O2 +-FLAGS = -lm -o ++#FLAGS = -lm -o ++LIBS = -lm + + SOURCE = stride.c splitstr.c rdpdb.c initchn.c geometry.c thr2one.c one2thr.c filename.c tolostr.c strutil.c place_h.c hbenergy.c memory.c helix.c sheet.c rdmap.c phipsi.c command.c molscr.c die.c hydrbond.c mergepat.c fillasn.c escape.c p_jrnl.c p_rem.c p_atom.c p_helix.c p_sheet.c p_turn.c p_ssbond.c p_expdta.c p_model.c p_compnd.c report.c nsc.c area.c ssbond.c chk_res.c chk_atom.c turn.c pdbasn.c dssp.c outseq.c chkchain.c elem.c measure.c asngener.c p_endmdl.c stred.c contact_order.c contact_map.c + +@@ -15,12 +16,9 @@ + + BINDIR = . + +-.c.o: +- $(CC) -c $< -o $@ +- + + stride : $(OBJECT) +- $(CC) $(OBJECT) $(FLAGS) $(BINDIR)/stride${ARCH} ++ $(CC) $(LDFLAGS) $(OBJECT) $(LIBS) -o stride + + $(OBJECT) : stride.h protot.h + diff --git a/Golden_Repo/v/VMD/VMD-1.9.3_surf_Makefile.patch b/Golden_Repo/v/VMD/VMD-1.9.3_surf_Makefile.patch new file mode 100644 index 0000000000000000000000000000000000000000..93f430a64a158b7c7ca07cfee06a7e00b5251307 --- /dev/null +++ b/Golden_Repo/v/VMD/VMD-1.9.3_surf_Makefile.patch @@ -0,0 +1,112 @@ +Fix surf Makefile. +Use CC, CFLAGS, etc from EB. +Drop bad make depend lines. + +Åke Sandgren, 2017-05-02 +diff -ru vmd-1.9.3.orig/lib/surf/Makefile vmd-1.9.3/lib/surf/Makefile +--- vmd-1.9.3.orig/lib/surf/Makefile 1994-03-22 16:44:20.000000000 +0100 ++++ vmd-1.9.3/lib/surf/Makefile 2017-05-02 13:41:51.911991381 +0200 +@@ -1,12 +1,7 @@ + # Compilation flags +-#CC = cc +-CC = cc + INCLUDE = -I. +-#LINCLUDE = -lcurses -ltermcap -lm +-LINCLUDE = -lm +-OPT_CFLAGS = -O2 $(FLAGS) $(INCLUDE) +-#CFLAGS = -g $(FLAGS) $(INCLUDE) +-CFLAGS = -O2 $(FLAGS) $(INCLUDE) ++LIBS = -lm ++CFLAGS = $(OPT) $(INCLUDE) + + # These are the user object files in the application + SRCS = surf.c io.c compute.c dual.c utils.c lp.c chull.c tessel_cases.c \ +@@ -18,7 +13,7 @@ + + # make objects + surf: $(OBJS) Makefile +- $(CC) $(CFLAGS) $(OBJS) -o surf $(LINCLUDE) ++ $(CC) $(LDFLAGS) $(OBJS) -o surf $(LIBS) + + lint: + lint $(INCLUDE) $(SRCS) +@@ -30,9 +25,6 @@ + tar -cvf surf.tar README *.[hc] Makefile + compress surf.tar + +-.c.o: +- $(CC) $(CFLAGS) -c $*.c +- + + # make depend makes the proper include file dependencies. You _could_ run + # it on a sun4, but there's a bug in the SunOS version of sed that causes +@@ -61,48 +53,3 @@ + @ echo ' ' >> Makefile + + # DO NOT DELETE THIS LINE -- make depend depends on it. +- +- +-# DO NOT DELETE THIS LINE -- make depend depends on it. +- +-surf.o: surf.h /usr/include/stdio.h /usr/include/math.h /usr/include/stdlib.h +-surf.o: /usr/include/sgidefs.h /usr/include/string.h /usr/include/sys/time.h +-surf.o: linalg.h +-io.o: surf.h /usr/include/stdio.h /usr/include/math.h /usr/include/stdlib.h +-io.o: /usr/include/sgidefs.h /usr/include/string.h /usr/include/sys/time.h +-io.o: linalg.h +-compute.o: surf.h /usr/include/stdio.h /usr/include/math.h +-compute.o: /usr/include/stdlib.h /usr/include/sgidefs.h /usr/include/string.h +-compute.o: /usr/include/sys/time.h linalg.h chull.h dual.h +-dual.o: surf.h /usr/include/stdio.h /usr/include/math.h /usr/include/stdlib.h +-dual.o: /usr/include/sgidefs.h /usr/include/string.h /usr/include/sys/time.h +-dual.o: linalg.h dual.h chull.h +-utils.o: surf.h /usr/include/stdio.h /usr/include/math.h +-utils.o: /usr/include/stdlib.h /usr/include/sgidefs.h /usr/include/string.h +-utils.o: /usr/include/sys/time.h linalg.h +-lp.o: surf.h /usr/include/stdio.h /usr/include/math.h /usr/include/stdlib.h +-lp.o: /usr/include/sgidefs.h /usr/include/string.h /usr/include/sys/time.h +-lp.o: linalg.h +-chull.o: surf.h /usr/include/stdio.h /usr/include/math.h +-chull.o: /usr/include/stdlib.h /usr/include/sgidefs.h /usr/include/string.h +-chull.o: /usr/include/sys/time.h linalg.h chull.h +-tessel_cases.o: surf.h /usr/include/stdio.h /usr/include/math.h +-tessel_cases.o: /usr/include/stdlib.h /usr/include/sgidefs.h +-tessel_cases.o: /usr/include/string.h /usr/include/sys/time.h linalg.h dual.h +-tessel_patches.o: surf.h /usr/include/stdio.h /usr/include/math.h +-tessel_patches.o: /usr/include/stdlib.h /usr/include/sgidefs.h +-tessel_patches.o: /usr/include/string.h /usr/include/sys/time.h linalg.h +-tessel_convex.o: surf.h /usr/include/stdio.h /usr/include/math.h +-tessel_convex.o: /usr/include/stdlib.h /usr/include/sgidefs.h +-tessel_convex.o: /usr/include/string.h /usr/include/sys/time.h linalg.h +-tessel_concave.o: surf.h /usr/include/stdio.h /usr/include/math.h +-tessel_concave.o: /usr/include/stdlib.h /usr/include/sgidefs.h +-tessel_concave.o: /usr/include/string.h /usr/include/sys/time.h linalg.h +-tessel_torus.o: surf.h /usr/include/stdio.h /usr/include/math.h +-tessel_torus.o: /usr/include/stdlib.h /usr/include/sgidefs.h +-tessel_torus.o: /usr/include/string.h /usr/include/sys/time.h linalg.h +- +-# DEPENDENCIES MUST END AT END OF FILE +-# IF YOU PUT STUFF HERE IT WILL GO AWAY +-# see make depend above +- +diff -ru vmd-1.9.3.orig/lib/surf/surf.c vmd-1.9.3/lib/surf/surf.c +--- vmd-1.9.3.orig/lib/surf/surf.c 1994-03-21 10:33:00.000000000 +0100 ++++ vmd-1.9.3/lib/surf/surf.c 2017-05-02 13:41:51.911991381 +0200 +@@ -7,7 +7,7 @@ + #define EXTERN + #include "surf.h" + +-void ++int + main(ac,av) + int ac; + char* av[]; +@@ -56,6 +56,8 @@ + if (Write_Option == 2) output_dataset(); + + if (Write_Option) end_output_dataset(); ++ ++ return(0); + } + + diff --git a/Golden_Repo/v/VMD/VMD-1.9.3_surf_bad_printfs.patch b/Golden_Repo/v/VMD/VMD-1.9.3_surf_bad_printfs.patch new file mode 100644 index 0000000000000000000000000000000000000000..9b9db3889bf08c48fb6a469303e1db1423d2b734 --- /dev/null +++ b/Golden_Repo/v/VMD/VMD-1.9.3_surf_bad_printfs.patch @@ -0,0 +1,74 @@ +Fix some bad printfs in surf. + +Åke Sandgren, 2017-05-02 +diff -ru vmd-1.9.3.orig/lib/surf/chull.c vmd-1.9.3/lib/surf/chull.c +--- vmd-1.9.3.orig/lib/surf/chull.c 1994-03-19 06:50:54.000000000 +0100 ++++ vmd-1.9.3/lib/surf/chull.c 2017-05-02 13:44:07.046582827 +0200 +@@ -378,7 +378,7 @@ + print_out( v ) + struct tvertex *v; + { +- fprintf( stderr, "\nAdding vertex %6x :\n", v ); ++ fprintf( stderr, "\nAdding vertex %6p :\n", v ); + print_verts(); + print_edges(); + print_fs(); +@@ -398,11 +398,11 @@ + temp = vertices; + fprintf (stderr, "Vertex List\n"); + if (vertices) do { +- fprintf(stderr," addr %6x\t", vertices ); ++ fprintf(stderr," addr %6p\t", vertices ); + fprintf(stderr,"(%g,%g,%g)",vertices->v[X], + vertices->v[Y], vertices->v[Z] ); + fprintf(stderr," active:%3d", vertices->active ); +- fprintf(stderr," duplicate:%5x", vertices->duplicate ); ++ fprintf(stderr," duplicate:%5p", vertices->duplicate ); + fprintf(stderr," mark:%2d\n", vertices->mark ); + vertices = vertices->next; + } while ( vertices != temp ); +@@ -424,13 +424,13 @@ + temp = edges; + fprintf (stderr, "Edge List\n"); + if (edges) do { +- fprintf( stderr, " addr: %6x\t", edges ); ++ fprintf( stderr, " addr: %6p\t", edges ); + fprintf( stderr, "adj: "); + for (i=0; i<3; ++i) +- fprintf( stderr, "%6x", edges->adjface[i] ); ++ fprintf( stderr, "%6p", edges->adjface[i] ); + fprintf( stderr, " endpts:"); + for (i=0; i<2; ++i) +- fprintf( stderr, "%8x", edges->endpts[i]); ++ fprintf( stderr, "%8p", edges->endpts[i]); + fprintf( stderr, " del:%3d\n", edges->deleted ); + edges = edges->next; + } while (edges != temp ); +@@ -452,13 +452,13 @@ + temp = faces; + fprintf (stderr, "Face List\n"); + if (faces) do { +- fprintf(stderr, " addr: %6x\t", faces ); ++ fprintf(stderr, " addr: %6p\t", faces ); + fprintf(stderr, " edges:"); + for( i=0; i<3; ++i ) +- fprintf(stderr, "%6x", faces->edg[i] ); ++ fprintf(stderr, "%6p", faces->edg[i] ); + fprintf(stderr, " vert:"); + for ( i=0; i<3; ++i) +- fprintf(stderr, "%6x", faces->vert[i] ); ++ fprintf(stderr, "%6p", faces->vert[i] ); + fprintf(stderr, " vis: %d\n", faces->visible ); + faces= faces->next; + } while ( faces != temp ); +@@ -552,8 +552,8 @@ + temp_v = temp_v->next; + } while ( temp_v != vertices ); + do { +- printf("3%5d%6d%6d\n", temp_f->vert[0]->vnum, +- temp_f->vert[1]->vnum, temp_f->vert[2]->vnum ); ++ printf("3%5d%6d%6d\n", temp_f->vert[0]->vnum[0], ++ temp_f->vert[1]->vnum[0], temp_f->vert[2]->vnum[0] ); + temp_f = temp_f->next; + } while ( temp_f != faces ); + } diff --git a/Golden_Repo/v/VMD/VMD-1.9.4a51_extra_colors.patch b/Golden_Repo/v/VMD/VMD-1.9.4a51_extra_colors.patch new file mode 100644 index 0000000000000000000000000000000000000000..26e9ba954dbbbb816975a947d97c4d1a69ca1f95 --- /dev/null +++ b/Golden_Repo/v/VMD/VMD-1.9.4a51_extra_colors.patch @@ -0,0 +1,46 @@ +Add some additional colors, e.g. to allow for color blind compatible rendering. +Bob Dröge, 2020-06-23 +--- src/Scene.C.orig 2020-06-23 09:37:41.000000000 +0200 ++++ src/Scene.C 2020-06-23 09:40:59.000000000 +0200 +@@ -63,7 +63,10 @@ + ,"yellow2", "yellow3", "green2", "green3", + "cyan2", "cyan3", "blue2", "blue3", + "violet", "violet2", "magenta", "magenta2", +- "red2", "red3", "orange2", "orange3" ++ "red2", "red3", "orange2", "orange3", ++ "matisse", "flamenco", "forest_green", "punch", ++ "wisteria", "spicy_mix", "orchid", "gray2", ++ "lime_pie", "java" + #endif + + }; +@@ -89,7 +92,17 @@ + 0.27f, 0.00f, 0.98f, 0.45f, 0.00f, 0.90f, // violet + 0.90f, 0.00f, 0.90f, 1.00f, 0.00f, 0.66f, // magenta + 0.98f, 0.00f, 0.23f, 0.81f, 0.00f, 0.00f, // red +- 0.89f, 0.35f, 0.00f, 0.96f, 0.72f, 0.00f // orange ++ 0.89f, 0.35f, 0.00f, 0.96f, 0.72f, 0.00f, // orange ++ 0.1f, 0.5f, 0.7f, // MPL1, matisse ++ 1.0f, 0.5f, 0.1f, // MPL2, flamenco ++ 0.2f, 0.6f, 0.2f, // MPL3, forest green ++ 0.8f, 0.2f, 0.2f, // MPL4, punch ++ 0.6f, 0.4f, 0.7f, // MPL5, wisteria ++ 0.5f, 0.3f, 0.3f, // MPL6, spicy mix ++ 0.9f, 0.5f, 0.8f, // MPL7, orchid ++ 0.5f, 0.5f, 0.5f, // MPL8, gray ++ 0.7f, 0.7f, 0.1f, // MPL9, key lime pie ++ 0.1f, 0.7f, 0.8f // MPL10, java + #endif + + }; +--- src/Scene.h.orig 2020-06-23 09:37:45.000000000 +0200 ++++ src/Scene.h 2020-06-23 09:42:21.000000000 +0200 +@@ -37,7 +37,7 @@ + #define DISP_LIGHTS 4 + + // total number of colors defined here +-#define REGCLRS 33 ++#define REGCLRS 43 + #define EXTRACLRS 1 + #define VISCLRS (REGCLRS - EXTRACLRS) + #define MAPCLRS 1024 diff --git a/Golden_Repo/v/VMD/VMD-1.9.4a57-gcccoremkl-11.3.0-2022.1.0.eb b/Golden_Repo/v/VMD/VMD-1.9.4a57-gcccoremkl-11.3.0-2022.1.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..e10877f760359227728ec9262448704d50ab4cc1 --- /dev/null +++ b/Golden_Repo/v/VMD/VMD-1.9.4a57-gcccoremkl-11.3.0-2022.1.0.eb @@ -0,0 +1,73 @@ +## +# Author: Robert Mijakovic <robert.mijakovic@lxp.lu> +## +name = 'VMD' +version = '1.9.4a57' + +homepage = 'https://www.ks.uiuc.edu/Research/vmd' +description = """VMD is a molecular visualization program for displaying, animating, and analyzing large biomolecular + systems using 3-D graphics and built-in scripting.""" + +toolchain = {'name': 'gcccoremkl', 'version': '11.3.0-2022.1.0'} + +source_urls = [ + 'https://www.ks.uiuc.edu/Research/vmd/vmd-1.9.4/files/alpha/', + 'https://www.ks.uiuc.edu/Research/vmd/vmd-%(version)s/files/final', + 'http://webclu.bio.wzw.tum.de/stride/' +] +sources = [ + 'vmd-%(version)s.src.tar.gz', + {'filename': 'stride.tar.gz', 'extract_cmd': "tar -C vmd-%(version)s/lib/stride -xf %s"}, +] +patches = [ + ('VMD-1.9.3_plugins.patch'), + ('VMD-1.9.3_surf_Makefile.patch', 'vmd-%(version)s'), + ('VMD-1.9.3_surf_bad_printfs.patch', 'vmd-%(version)s'), + ('VMD-1.9.3_stride_Makefile.patch', 'vmd-%(version)s'), + ('VMD-1.9.3_stride_MAX_AT_IN_RES.patch', 'vmd-%(version)s'), + ('VMD-1.9.4a57_configure.patch', 'vmd-%(version)s'), + ('VMD-1.9.4a51_extra_colors.patch', 'vmd-%(version)s'), +] +checksums = [ + 'de278d0c5d969336d89068e0806fb50aaa0cb0f546ba985d840b279357860679', # vmd-1.9.4a57.src.tar.gz + '51a8bc2988bb184bd08216124f61725225bb1a6f563bdf8cd35154cb5d621c1a', # stride.tar.gz + '85760d6ae838e2b09801e34b36b484532383f7aaf2e8634b3ef808002a92baa3', # VMD-1.9.3_plugins.patch + 'd5cfa88064b7cffbc75accd69707d4e45fda974e8127de9ab606fdad501bd68a', # VMD-1.9.3_surf_Makefile.patch + 'f3c2a8c155e38db8e644cee6a01f6beaea5988e72ac74cde26b71670b151cc34', # VMD-1.9.3_surf_bad_printfs.patch + 'eb194ac0d8c086b73f87b29f7d732687f902431b1cdfa139c090401fefdee51e', # VMD-1.9.3_stride_Makefile.patch + 'eff1ca00cec637a6c8a156b2fb038e078d1835ba0eb15a571ed820bca5a866d9', # VMD-1.9.3_stride_MAX_AT_IN_RES.patch + 'ad22b02f0261bb94768e084b42c74c1c6cd4d2a3428f4f22534565e232f2d237', # VMD-1.9.4a51_configure.patch + '253eba282b570eb00e4764f46f77fd5ca898d10360d5707dd50ad1f14615af80', # VMD-1.9.4a51_extra_colors.patch +] + +builddependencies = [ + ('binutils', '2.38'), +] + +dependencies = [ + ('tcsh', '6.24.01'), + ('Tcl', '8.6.12'), + ('Tk', '8.6.12'), + ('FLTK', '1.3.8'), + ('Python', '3.10.4'), + ('SciPy-bundle', '2022.05'), + ('Tkinter', '%(pyver)s'), + ('X11', '20220504'), + ('fontconfig', '2.14.0'), + ('OpenGL', '2022a'), + ('netCDF', '4.9.0', '-serial'), + ('FFmpeg', '4.4.2'), + ('ImageMagick', '7.1.0-37'), + ('ACTC', '1.1'), + ('OptiX', '6.5.0', '', SYSTEM), + ('zlib', '1.2.12'), + ('libpng', '1.6.37'), + ('POV-Ray', '3.7.0.10'), + ('CUDA', '11.7', '', SYSTEM), +] + +postinstallcmds = [ + 'sed -i "s%#!/bin/csh%#!$EBROOTTCSH/bin/tcsh%g" %(installdir)s/bin/vmd ', +] + +moduleclass = 'vis' diff --git a/Golden_Repo/v/VMD/VMD-1.9.4a57_configure.patch b/Golden_Repo/v/VMD/VMD-1.9.4a57_configure.patch new file mode 100644 index 0000000000000000000000000000000000000000..42c726a4c397fb84f660782dd9d69b83ccfa911c --- /dev/null +++ b/Golden_Repo/v/VMD/VMD-1.9.4a57_configure.patch @@ -0,0 +1,179 @@ +diff -Naur vmd-1.9.4a57.orig/configure vmd-1.9.4a57/configure +--- vmd-1.9.4a57.orig/configure 2022-04-27 08:21:11.000000000 +0200 ++++ vmd-1.9.4a57/configure 2023-02-06 22:04:22.188887855 +0100 +@@ -498,17 +498,16 @@ + + $arch_cc = "cc"; + $arch_ccpp = "CC"; +-$arch_nvcc = "/usr/local/cuda-10.2/bin/nvcc"; ++$arch_nvcc = "$ENV{'EBROOTCUDA'}/bin/nvcc"; + $arch_nvccflags = "-lineinfo --ptxas-options=-v " . +- "-gencode arch=compute_30,code=compute_30 " . +- "-gencode arch=compute_30,code=sm_35 " . +- "-gencode arch=compute_30,code=sm_37 " . + "-gencode arch=compute_50,code=compute_50 " . + "-gencode arch=compute_50,code=sm_50 " . + "-gencode arch=compute_60,code=compute_60 " . + "-gencode arch=compute_60,code=sm_60 " . + "-gencode arch=compute_70,code=compute_70 " . + "-gencode arch=compute_70,code=sm_70 " . ++ "-gencode arch=compute_75,code=sm_75 " . ++ "-gencode arch=compute_80,code=sm_80 " . + "--ftz=true "; + # "-gencode arch=compute_75,code=sm_75 " . + $arch_gcc = "gcc"; +@@ -634,17 +633,17 @@ + # location of Mesa library and include files; basically does the same + # as OpenGL. This is based on the default instructions from the Mesa + # README; the include files should by default be in /usr/local/include/GL. +-$mesa_dir = "$vmd_library_dir/Mesa"; ++$mesa_dir = $ENV{'EBROOTMESA'}; + $mesa_include = "-I$mesa_dir/include"; + $mesa_library = "-L$mesa_dir/lib_$config_arch"; + #$mesa_libs = "-lMesaGL -lMesaGLU"; +-$mesa_libs = "-lMesaGL"; ++$mesa_libs = "-lGL -lGLU"; + $mesa_defines = "-DUSELINEAXES -DVMDMESA -DVMDOPENGL"; + @mesa_cc = (); + @mesa_cu = (); +-@mesa_ccpp = @opengl_ccpp; +-@mesa_h = @opengl_h; +-@mesa_extra = @opengl_extra; ++@mesa_ccpp = (); ++@mesa_h = (); ++@mesa_extra = (); + + + # +@@ -720,10 +719,10 @@ + + ################ FLTK GUI + $fltk_defines = "-DVMDGUI -DVMDFLTK"; +-$fltk_dir = "$vmd_library_dir/fltk"; ++$fltk_dir = $ENV{'EBROOTFLTK'}; + $fltk_include = "-I$fltk_dir/include"; + $fltk_library = "-L$fltk_dir/$config_arch"; +-$fltk_libs = "-lfltk -lX11"; ++$fltk_libs = "-lfltk -lX11 -lXfixes -lXcursor -lXinerama"; + #@fltk_cc = ('forms_ui.c'); + @fltk_cu = (); + @fltk_ccpp = ( 'ColorFltkMenu.C', +@@ -765,7 +764,6 @@ + $stock_tcl_include_dir=$ENV{"TCL_INCLUDE_DIR"} || "$vmd_library_dir/tcl/include"; + $stock_tcl_library_dir=$ENV{"TCL_LIBRARY_DIR"} || "$vmd_library_dir/tcl/lib_$config_arch"; + +- + # location of Tk (for TK option) + #$stock_tk_include_dir=$ENV{"TK_INCLUDE_DIR"} || "/usr/local/include"; + #$stock_tk_library_dir=$ENV{"TK_LIBRARY_DIR"} || "/usr/local/lib"; +@@ -783,8 +781,8 @@ + if ($config_tk) { $tcl_include .= " -I$stock_tk_include_dir"; } + $tcl_library = "-L$stock_tcl_library_dir"; + if ($config_tk) { $tcl_library .= " -L$stock_tk_library_dir"; } +-$tcl_libs = "-ltcl8.5"; +-if ($config_tk) { $tcl_libs = "-ltk8.5 -lX11 " . $tcl_libs; } ++$tcl_libs = "-ltcl8.6"; ++if ($config_tk) { $tcl_libs = "-ltk8.6 -lX11 " . $tcl_libs; } + + @tcl_cc = (); + @tcl_cu = (); +@@ -1006,7 +1004,7 @@ + # This option enables the use of CUDA GPU acceleration functions. + ####################### + $cuda_defines = "-DVMDCUDA -DMSMPOT_CUDA"; +-$cuda_dir = "/usr/local/cuda-10.2"; ++$cuda_dir = "$ENV{'CUDA_HOME'}"; + $cuda_include = ""; + $cuda_library = ""; + $cuda_libs = "-Wl,-rpath -Wl,\$\$ORIGIN/ -lcudart_static -lrt"; +@@ -1215,7 +1213,7 @@ + # $liboptix_dir = "/usr/local/encap/NVIDIA-OptiX-SDK-5.0.1-linux64"; + # $liboptix_dir = "/usr/local/encap/NVIDIA-OptiX-SDK-5.1.0-linux64"; + # $liboptix_dir = "/usr/local/encap/NVIDIA-OptiX-SDK-6.0.0-linux64"; +-$liboptix_dir = "/usr/local/encap/NVIDIA-OptiX-SDK-6.5.0-linux64"; ++$liboptix_dir = "$ENV{'EBROOTOPTIX'}"; + # $liboptix_dir = "/usr/local/encap/NVIDIA-OptiX-SDK-7.0.0-linux64"; + + # NCSA Blue Waters +@@ -1370,7 +1368,7 @@ + die "LIBPNG option requires ZLIB!"; + } + $libpng_defines = "-DVMDLIBPNG"; +-$libpng_dir = "/Projects/vmd/vmd/lib/libpng"; ++$libpng_dir = "$ENV{'EBROOTLIBPNG'}"; + $libpng_include = "-I$libpng_dir/include"; + $libpng_library = "-L$libpng_dir/lib_$config_arch"; + $libpng_libs = "-lpng16"; +@@ -1398,7 +1396,7 @@ + # OPTIONAL COMPONENT: Data compresssion library + # This may be commented out if not required. + $zlib_defines = "-DVMDZLIB"; +-$zlib_dir = "/Projects/vmd/vmd/lib/zlib"; ++$zlib_dir = "$ENV{'EBROOTZLIB'}"; + $zlib_include = "-I$zlib_dir/include"; + $zlib_library = "-L$zlib_dir/lib_$config_arch"; + $zlib_libs = "-lz"; +@@ -1589,7 +1587,7 @@ + # primitives. + ####################### + $actc_defines = "-DVMDACTC"; +-$actc_dir = "$vmd_library_dir/actc"; ++$actc_dir = "$ENV{'EBROOTACTC'}"; + $actc_include = "-I$actc_dir/include"; + $actc_library = "-L$actc_dir/lib_$config_arch"; + $actc_libs = "-lactc"; +@@ -1604,7 +1602,7 @@ + # OPTIONAL COMPONENT: NetCDF I/O Library (Used by cdfplugin) + ####################### + $netcdf_defines = ""; +-$netcdf_dir = "$vmd_library_dir/netcdf"; ++$netcdf_dir = "$ENV{'EBROOTNETCDF'}"; + $netcdf_include = "-I$netcdf_dir/include"; + $netcdf_library = "-L$netcdf_dir/lib_$config_arch"; + $netcdf_libs = "-lnetcdf"; +@@ -1662,7 +1660,7 @@ + $stock_python_library_dir=$ENV{"PYTHON_LIBRARY_DIR"} || "$conda_root/lib/python3.7/config-3.7m-x86_64-linux-gnu"; + $stock_numpy_include_dir=$ENV{"NUMPY_INCLUDE_DIR"} || "$conda_root/lib/python3.7/site-packages/numpy/core/include/numpy"; + $stock_numpy_library_dir=$ENV{"NUMPY_LIBRARY_DIR"} || "$conda_root/lib/python-3.7/site-packages/numpy/core/include"; +- $python_libs = "-fno-lto -lpython3.7m -lpthread"; ++ $python_libs = "$ENV{'PYTHON_LIBRARIES'}" || "-fno-lto -lpython3.7m -lpthread"; + } else { + # $stock_python_include_dir=$ENV{"PYTHON_INCLUDE_DIR"} || "/usr/local/include"; + # $stock_python_library_dir=$ENV{"PYTHON_LIBRARY_DIR"} || "/usr/local/lib"; +@@ -1673,7 +1671,7 @@ + # $stock_numpy_library_dir=$ENV{"NUMPY_LIBRARY_DIR"} || "/usr/local/lib"; + $stock_numpy_include_dir=$ENV{"NUMPY_INCLUDE_DIR"} || "$vmd_library_dir/numpy/lib_$config_arch/include"; + $stock_numpy_library_dir=$ENV{"NUMPY_LIBRARY_DIR"} || "$vmd_library_dir/python/lib_$config_arch/lib/python2.5/site-packages/numpy/core/include"; +- $python_libs = "-lpython2.5 -lpthread"; ++ $python_libs = "$ENV{'PYTHON_LIBRARIES'}" || "-lpython2.5 -lpthread"; + } + + $python_defines = "-DVMDPYTHON"; +@@ -2593,7 +2591,7 @@ + + if ($config_cuda) { + $arch_nvccflags .= " --machine 64 -O3 $cuda_include"; +- $cuda_library = "-L/usr/local/cuda-10.2/lib64"; ++ $cuda_library = "-L/$ENV{'EBROOTCUDA'}/lib64"; + } + + $arch_lex = "flex"; # has problems with vendor lex +@@ -2603,7 +2601,7 @@ + # they likely serve no useful purpose going forward. + if (!$config_opengl_dispatch) { + $opengl_dep_libs = "-L/usr/X11R6/lib64 -lGL -lX11"; +- $mesa_libs = "-lMesaGL -L/usr/X11R6/lib64 -lXext -lX11"; ++ $mesa_libs = "-lGL -lGLU -L/usr/X11R6/lib64 -lXext -lX11"; + } + + # this is to make tcl happy +@@ -3789,8 +3787,7 @@ + + .cu.ptx: + \$(ECHO) "Compiling " \$< " --> " \$*.ptx " ..."; \\ +- \$(NVCC) \$(DEFINES) --use_fast_math $liboptix_include -gencode arch=compute_50,code=compute_50 -ptx \$< $arch_coptout$vmd_arch_dir/\$\@ +- ++ \$(NVCC) \$(DEFINES) --use_fast_math $liboptix_include -gencode arch=compute_80,code=compute_80 -ptx \$< $arch_coptout$vmd_arch_dir/\$\@ + .y.o: + + .l.o: diff --git a/Golden_Repo/v/VTK/VTK-9.2.5-foss-2022a.eb b/Golden_Repo/v/VTK/VTK-9.2.5-foss-2022a.eb new file mode 100644 index 0000000000000000000000000000000000000000..8b48eb2a3b4fcc8815d576df04ed2795271493e8 --- /dev/null +++ b/Golden_Repo/v/VTK/VTK-9.2.5-foss-2022a.eb @@ -0,0 +1,187 @@ +easyblock = 'CMakeMake' + +name = 'VTK' +version = '9.2.5' + +homepage = 'http://www.vtk.org' +description = """The Visualization Toolkit (VTK) is an open-source, freely available software system for + 3D computer graphics, image processing and visualization. VTK consists of a C++ class library and several + interpreted interface layers including Tcl/Tk, Java, and Python. VTK supports a wide variety of visualization + algorithms including: scalar, vector, tensor, texture, and volumetric methods; and advanced modeling techniques + such as: implicit modeling, polygon reduction, mesh smoothing, cutting, contouring, and Delaunay triangulation.""" + +toolchain = {'name': 'foss', 'version': '2022a'} +toolchainopts = {'pic': True, 'usempi': True} + +source_urls = ['https://www.vtk.org/files/release/%(version_major_minor)s'] +sources = [ + SOURCE_TAR_GZ, + '%(name)sData-%(version)s.tar.gz', +] +patches = [('vtk-version.egg-info', '.')] +checksums = [ + '128d601baa980e98ee034207974b33fb38d2c98ab9cf4a5756efdb09ed6c0949', # VTK-9.2.5.tar.gz + '8a812f96346b3a38ff0fc3b1a1a372f3727a71ebf450c02d659a75dbe1113515', # VTKData-9.2.5.tar.gz + '787b82415ae7a4a1f815b4db0e25f7abc809a05fc85d7d219627f3a7e5d3867b', # vtk-version.egg-info +] + +builddependencies = [ + ('CMake', '3.23.1'), +] + +dependencies = [ + ('Python', '3.10.4'), + ('HDF5', '1.12.2',), + ('SciPy-Stack', '2022a', '', ('gcccoremkl', '11.3.0-2022.1.0')), + ('mpi4py', '3.1.4'), + ('libxc', '5.2.3'), + ('netCDF', '4.9.0',), + ('X11', '20220504'), + ('OpenGL', '2022a'), +] + +separate_build_dir = True + +configopts = "-DCMAKE_INSTALL_LIBDIR=lib " + +configopts += "-DVTK_USE_SYSTEM_MPI4PY=ON " +configopts += "-DVTK_USE_SYSTEM_LZMA=ON " +configopts += "-DVTK_USE_SYSTEM_HDF5=ON " +configopts += "-DVTK_USE_SYSTEM_NETCDF=ON " + +configopts += "-DBUILD_SHARED_LIBS=ON " +configopts += "-DBUILD_TESTING=OFF " + +configopts += "-DVTK_USE_MPI=ON " +configopts += "-DVTK_SMP_IMPLEMENTATION_TYPE=OPENMP " +configopts += "-DVTK_Group_MPI:BOOL=ON " +configopts += "-DVTK_Group_Web:BOOL=ON " + +configopts += '-DOpenGL_GL_PREFERENCE=GLVND ' # "GLVND" or "LEGACY" +configopts += "-DOPENGL_EGL_INCLUDE_DIR=$EBROOTOPENGL/include " +configopts += "-DOPENGL_GLX_INCLUDE_DIR=$EBROOTOPENGL/include " +configopts += "-DOPENGL_INCLUDE_DIR=$EBROOTOPENGL/include " +configopts += "-DOPENGL_egl_LIBRARY=$EBROOTOPENGL/lib/libEGL.so.1 " +configopts += "-DOPENGL_glx_LIBRARY=$EBROOTOPENGL/lib/libGLX.so.0 " +configopts += "-DOPENGL_opengl_LIBRARY=$EBROOTOPENGL/lib/libOpenGL.so.0 " +configopts += "-DOPENGL_glu_LIBRARY=$EBROOTOPENGL/lib/libGLU.so " + +configopts += "-DVTK_WRAP_PYTHON=ON " +configopts += "-DVTK_PYTHON_OPTIONAL_LINK=OFF " +configopts += "-DPYTHON_EXECUTABLE:PATH=$EBROOTPYTHON/bin/python%(pyshortver)s " +configopts += "-DPYTHON_INCLUDE_DIR:PATH=$EBROOTPYTHON/include/python%(pyshortver)s " +configopts += "-DPYTHON_LIBRARY:PATH=$EBROOTPYTHON/lib/libpython%%(pyshortver)s.%s " % SHLIB_EXT + +configopts += "-DHDF5_INCLUDE_DIRS=$EBROOTHDF5/include " + +configopts += "-DModule_vtkAcceleratorsVTKm:BOOL=ON " +# configopts += "-DModule_vtkDomainsMicroscopy:BOOL=OFF " +# configopts += "-DModule_vtkDomainsParallelChemistry:BOOL=OFF " +# configopts += "-DModule_vtkFiltersOpenTurns:BOOL=OFF " +# configopts += "-DModule_vtkFiltersParallelDIY2:BOOL=OFF " +# configopts += "-DModule_vtkFiltersParallelFlowPaths:BOOL=OFF " +configopts += "-DModule_vtkFiltersParallelGeometry:BOOL=ON " +configopts += "-DModule_vtkFiltersParallelMPI:BOOL=ON " +configopts += "-DModule_vtkFiltersParallelStatistics:BOOL=ON " +# configopts += "-DModule_vtkFiltersParallelVerdict:BOOL=OFF " +# configopts += "-DModule_vtkFiltersReebGraph:BOOL=OFF " +# configopts += "-DModule_vtkGUISupportQt:BOOL=OFF " +# configopts += "-DModule_vtkGUISupportQtOpenGL:BOOL=OFF " +# configopts += "-DModule_vtkGUISupportQtSQL:BOOL=OFF " +# configopts += "-DModule_vtkGUISupportQtWebkit:BOOL=OFF " +# configopts += "-DModule_vtkGeovisGDAL:BOOL=OFF " +# configopts += "-DModule_vtkIOADIOS:BOOL=OFF " +# configopts += "-DModule_vtkIOFFMPEG:BOOL=OFF " +# configopts += "-DModule_vtkIOGDAL:BOOL=OFF " +# configopts += "-DModule_vtkIOGeoJSON:BOOL=OFF " +# configopts += "-DModule_vtkIOLAS:BOOL=OFF " +# configopts += "-DModule_vtkIOMPIImage:BOOL=ON " +# configopts += "-DModule_vtkIOMPIParallel:BOOL=ON " +# configopts += "-DModule_vtkIOMotionFX:BOOL=OFF " +# configopts += "-DModule_vtkIOMySQL:BOOL=OFF " +# configopts += "-DModule_vtkIOODBC:BOOL=OFF " +# configopts += "-DModule_vtkIOPDAL:BOOL=OFF " +# configopts += "-DModule_vtkIOParallelExodus:BOOL=OFF " +# configopts += "-DModule_vtkIOParallelLSDyna:BOOL=OFF " +# configopts += "-DModule_vtkIOParallelNetCDF:BOOL=OFF " +# configopts += "-DModule_vtkIOParallelXdmf3:BOOL=OFF " +# configopts += "-DModule_vtkIOPostgreSQL:BOOL=OFF " +# configopts += "-DModule_vtkIOTRUCHAS:BOOL=OFF " +# configopts += "-DModule_vtkIOVPIC:BOOL=OFF " +# configopts += "-DModule_vtkIOXdmf2:BOOL=OFF " +# configopts += "-DModule_vtkIOXdmf3:BOOL=OFF " +# configopts += "-DModule_vtkImagingOpenGL2:BOOL=OFF " +# configopts += "-DModule_vtkInfovisBoost:BOOL=OFF " +# configopts += "-DModule_vtkInfovisBoostGraphAlg:BOOL=OFF +configopts += "-DModule_vtkParallelMPI:BOOL=ON " +configopts += "-DModule_vtkPython:BOOL=ON " +# configopts += "-DModule_vtkPythonInterpreter:BOOL=OFF " +# configopts += "-DModule_vtkRenderingExternal:BOOL=OFF " +# configopts += "-DModule_vtkRenderingFreeTypeFontConfig:BOOL=OFF " +# configopts += "-DModule_vtkRenderingLICOpenGL2:BOOL=OFF " +# configopts += "-DModule_vtkRenderingMatplotlib:BOOL=OFF " +# configopts += "-DModule_vtkRenderingOSPRay:BOOL=OFF " +# configopts += "-DModule_vtkRenderingOpenVR:BOOL=OFF " +# configopts += "-DModule_vtkRenderingOptiX:BOOL=OFF " +configopts += "-DModule_vtkRenderingParallel:BOOL=ON " +configopts += "-DModule_vtkRenderingParallelLIC:BOOL=ON " +# configopts += "-DModule_vtkRenderingQt:BOOL=OFF " +# configopts += "-DModule_vtkRenderingSceneGraph:BOOL=OFF " +# configopts += "-DModule_vtkRenderingTk:BOOL=OFF " +# configopts += "-DModule_vtkRenderingVolumeAMR:BOOL=OFF " +# configopts += "-DModule_vtkTclTk:BOOL=OFF " +# configopts += "-DModule_vtkTestingCore:BOOL=OFF " +# configopts += "-DModule_vtkTestingGenericBridge:BOOL=OFF " +# configopts += "-DModule_vtkTestingIOSQL:BOOL=OFF " +# configopts += "-DModule_vtkTestingRendering:BOOL=OFF " +# configopts += "-DModule_vtkUtilitiesBenchmarks:BOOL=OFF " +# configopts += "-DModule_vtkUtilitiesEncodeString:BOOL=OFF " +# configopts += "-DModule_vtkVPIC:BOOL=OFF " +configopts += "-DModule_vtkVTKm:BOOL=ON " +# configopts += "-DModule_vtkViewsGeovis:BOOL=OFF " +# configopts += "-DModule_vtkViewsQt:BOOL=OFF " +# configopts += "-DModule_vtkWebCore:BOOL=OFF " +# configopts += "-DModule_vtkWebGLExporter:BOOL=OFF " +# configopts += "-DModule_vtkWebPython:BOOL=OFF " +# configopts += "-DModule_vtkWrappingJava:BOOL=OFF " +# configopts += "-DModule_vtkWrappingPythonCore:BOOL=OFF " +# configopts += "-DModule_vtkWrappingTools:BOOL=OFF " +# configopts += "-DModule_vtkdiy2:BOOL=OFF " +# configopts += "-DModule_vtkkissfft:BOOL=OFF " +configopts += "-DModule_vtkmpi4py:BOOL=ON " +# configopts += "-DModule_vtkpegtl:BOOL=OFF " +# configopts += "-DModule_vtkxdmf2:BOOL=OFF " +# configopts += "-DModule_vtkxdmf3:BOOL=OFF " +# configopts += "-DModule_vtkzfp:BOOL=OFF " + +preinstallopts = "export PYTHONPATH=%(installdir)s/lib/python%(pyshortver)s/site-packages:$PYTHONPATH && " + +# Install a egg-info file so VTK is more python friendly, required for mayavi +local_egg_info_src = '%(builddir)s/VTK-%(version)s/vtk-version.egg-info' +local_egg_info_dest = '%(installdir)s/lib/python%(pyshortver)s/site-packages/vtk-%(version)s.egg-info' +postinstallcmds = [ + 'sed "s/#VTK_VERSION#/%%(version)s/" %s > %s' % (local_egg_info_src, local_egg_info_dest), +] + +modextrapaths = {'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages']} + +local_vtk_exec = ['vtk%s-%%(version_major_minor)s' % x + for x in ['WrapJava', 'ParseJava', 'WrapPythonInit', 'WrapPython', 'WrapHierarchy']] +local_vtk_exec += ['vtkpython'] +local_vtk_libs = ['CommonCore', 'IONetCDF', 'ParallelCore', 'RenderingOpenGL2'] + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in local_vtk_exec] + ['include/vtk-%(version_major_minor)s/vtkMPI.h'] + + ['lib/libvtk%s-%%(version_major_minor)s.%s' % (l, SHLIB_EXT) for l in local_vtk_libs], + 'dirs': ['lib/python%(pyshortver)s/site-packages/', 'include/vtk-%(version_major_minor)s'], +} + +sanity_check_commands = [ + "python -c 'import %(namelower)s'", + "python -c 'import pkg_resources; pkg_resources.get_distribution(\"vtk\")'", + # make sure that VTK Python libraries link to libpython (controlled via DVTK_PYTHON_OPTIONAL_LINK=OFF), + # see https://gitlab.kitware.com/vtk/vtk/-/issues/17881 + "ldd $EBROOTVTK/lib/libvtkPythonContext2D-%%(version_major_minor)s.%s | grep /libpython" % SHLIB_EXT, +] + +moduleclass = 'vis' diff --git a/Golden_Repo/v/VTK/VTK-9.2.5-gpsmpi-2022a.eb b/Golden_Repo/v/VTK/VTK-9.2.5-gpsmkl-2022a.eb similarity index 98% rename from Golden_Repo/v/VTK/VTK-9.2.5-gpsmpi-2022a.eb rename to Golden_Repo/v/VTK/VTK-9.2.5-gpsmkl-2022a.eb index 2afb89cd458dee3b364c96ba27e987f6881933f6..801c5d4ffe646e49e9acc55eb4533769ec624cf0 100644 --- a/Golden_Repo/v/VTK/VTK-9.2.5-gpsmpi-2022a.eb +++ b/Golden_Repo/v/VTK/VTK-9.2.5-gpsmkl-2022a.eb @@ -11,7 +11,7 @@ description = """The Visualization Toolkit (VTK) is an open-source, freely avail such as: implicit modeling, polygon reduction, mesh smoothing, cutting, contouring, and Delaunay triangulation.""" -toolchain = {'name': 'gpsmpi', 'version': '2022a'} +toolchain = {'name': 'gpsmkl', 'version': '2022a'} toolchainopts = {'pic': True, 'usempi': True} source_urls = ['https://www.vtk.org/files/release/%(version_major_minor)s'] @@ -32,11 +32,11 @@ builddependencies = [ dependencies = [ ('Python', '3.10.4'), - ('HDF5', '1.12.2', '-serial'), + ('HDF5', '1.12.2',), ('SciPy-Stack', '2022a', '', ('gcccoremkl', '11.3.0-2022.1.0')), ('mpi4py', '3.1.4'), ('libxc', '5.2.3'), - ('netCDF', '4.9.0', '-serial'), + ('netCDF', '4.9.0',), ('X11', '20220504'), ('OpenGL', '2022a'), ] diff --git a/Golden_Repo/x/xpra/xpra-4.4.3-GCCcore-11.3.0.eb b/Golden_Repo/x/xpra/xpra-4.4.3-GCCcore-11.3.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..8dd309ac345e83215a4db2541474a5d8778b54a5 --- /dev/null +++ b/Golden_Repo/x/xpra/xpra-4.4.3-GCCcore-11.3.0.eb @@ -0,0 +1,187 @@ +easyblock = 'Bundle' + +name = 'xpra' +version = '4.4.3' + +homepage = "http://www.xpra.org" +description = """Xpra is an open-source multi-platform persistent remote display server and client +for forwarding applications and desktop screens. +""" + +toolchain = {'name': 'GCCcore', 'version': '11.3.0'} +toolchainopts = {'pic': True} + +builddependencies = [ + ('binutils', '2.38'), + ('pkgconf', '1.8.0'), + ('Brotli', '1.0.9'), + ('uglifyjs', '3.17.4'), + ('CMake', '3.23.1'), + ('Meson', '0.62.1'), + ('scikit-build', '0.15.0'), # for patchelf +] + +dependencies = [ + ('Python', '3.10.4'), + ('X11', '20220504'), + ('OpenGL', '2022a'), + ('SciPy-Stack', '2022a', '', ('gcccoremkl', '11.3.0-2022.1.0')), + ('PyCairo', '1.23.0'), + ('PyGObject', '3.42.2'), + ('Pandoc', '2.19.2', '', SYSTEM), + ('GTK+', '3.24.34'), + ('rencode', '1.0.5'), + ('lz4', '1.9.3'), + ('yuicompressor', '2.4.8'), + ('x264', '20220620'), + ('x265', '3.5'), + ('libvpx', '1.12.0'), + ('FFmpeg', '4.4.2'), + ('GStreamer', '1.20.2'), + ('libwebp', '1.2.4'), + ('libpng', '1.6.37'), + ('libspng', '0.7.3'), + ('libjpeg-turbo', '2.1.3'), + ('zlib', '1.2.12'), + ('LibTIFF', '4.3.0'), + ('nvidia-Video_Codec_SDK', '11.1.5', '', SYSTEM), + ('freetype', '2.12.1'), + ('libyuv', '20210428'), + ('DBus', '1.14.0'), + ('XServer', '21.1.6'), + ('CUDA', '11.7', '', SYSTEM), +] + +prebuildopts = 'export CFLAGS="-Wno-error=unused-function" && ' + +# this is a bundle of Python packages +exts_defaultclass = 'PythonPackage' +exts_default_options = { + 'use_pip': True, + 'source_urls': [PYPI_SOURCE], + 'sanity_pip_check': True, + 'use_pip_for_deps': False, + 'download_dep_fail': True, +} + +exts_list = [ + ('pyinotify', '0.9.6', { + 'checksums': ['9c998a5d7606ca835065cdabc013ae6c66eb9ea76a00a1e3bc6e0cfe2b4f71f4'], + }), + ('pyproject-metadata', '0.7.1', { + 'checksums': ['0a94f18b108b9b21f3a26a3d541f056c34edcb17dc872a144a15618fed7aef67'], + }), + ('meson', '1.0.0', { + 'modulename': False, + 'checksums': ['aa50a4ba4557c25e7d48446abfde857957dcdf58385fffbe670ba0e8efacce05'], + }), + ('meson_python', '0.12.0', { + 'modulename': 'mesonpy', + 'checksums': ['8cb159a8093a2e73cfa897f8092ec93b74e3842f94dff7fde381c6fe0e0b064d'], + }), + ('patchelf', '0.17.2.0', { + 'modulename': False, + 'checksums': ['dedf987a83d7f6d6f5512269e57f5feeec36719bd59567173b6d9beabe019efe'], + }), + ('dbus-python', '1.3.2', { + 'modulename': 'dbus', + 'checksums': ['ad67819308618b5069537be237f8e68ca1c7fcc95ee4a121fe6845b1418248f8'], + }), + ('pyxdg', '0.28', { + 'modulename': 'xdg', + 'checksums': ['3267bb3074e934df202af2ee0868575484108581e6f3cb006af1da35395e88b4'], + }), + ('python-uinput', '0.11.2', { + 'modulename': 'uinput', + 'checksums': ['99392b676c77b5795b86b7d75274db33fe754fd1e06fb3d58b167c797dc47f0c'], + }), + ('ifaddr', '0.2.0', { + 'checksums': ['cc0cbfcaabf765d44595825fb96a99bb12c79716b73b44330ea38ee2b0c4aed4'], + }), + ('async-timeout', '4.0.2', { + 'checksums': ['2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15'], + }), + ('zeroconf', '0.47.1', { + 'checksums': ['65ab91068f8fafe00856b63756c72296b69682709681e96e8bb5d101345d5011'], + }), + (name, version, { + 'modulename': False, + 'buildopts': "--without-strict --with-nvenc --with-enc_x264 --with-enc_x265 --with-Xdummy", + 'installopts': "--with-tests --without-service", + 'source_tmpl': 'v%(version)s.tar.gz', + 'source_urls': ['https://github.com/Xpra-org/%(name)s/archive/'], + 'patches': ['xpra-4.4.3-use_Xorg_on_PATH_first.patch'], + 'use_pip': False, + 'checksums': [ + 'fc394c5b346791cc941c8917bbdd44bb26be76a021e497fa6f661e62cc4dd57a', + 'ff1e8984f367ebcc90b56d2c1b87012a7ce53fe4f68686cf042e5bbce16be198', + ], + }), + ('xpra-html5', '6.1', { + 'modulename': False, + 'skipsteps': [ + 'configure', + 'build', + 'install', + ], + 'source_tmpl': 'v%(version)s.tar.gz', + 'source_urls': ['https://github.com/Xpra-org/%(name)s/archive/'], + 'use_pip': False, + 'checksums': ['298f85bdd99f075c9d58dcfb904d117283c8034b5f5d24f494d50433ed998ec0'], + }), +] + +postinstallcmds = [ + ( + # installing xpra-html5 + 'pushd %(builddir)s/xprahtml5/xpra-html5-6.1 && ' + './setup.py install %(installdir)s /share/xpra/www /etc/xpra/html5-client && ' + 'popd' + ), + # set specific configurations + ( + # set xpra default configs + 'cp -a %(builddir)s/xpra/xpra-4.4.3/build/etc %(installdir)s && ' + # initialize script that can modify the environment of the server + 'touch %(installdir)s/etc/xpra/server.env && ' + "sed -i 's!^source =.*!source = %(installdir)s/etc/xpra/server.env!' " + " %(installdir)s/etc/xpra/conf.d/60_server.conf" + ), + # make Xpra randomly choose a GPU for acceleration if present + 'mv %(installdir)s/bin/xpra %(installdir)s/bin/xpra.orig', + 'head -1 %(installdir)s/bin/xpra.orig > %(installdir)s/bin/xpra', + ( + '{ cat >> %(installdir)s/bin/xpra; } << \'EOF\'\n' + 'from os import environ \n' + 'if not \'CUDA_VISIBLE_DEVICES\' in environ: \n' + ' try: \n' + ' from pycuda import driver \n' + ' driver.init() \n' + ' num_gpus = driver.Device.count() \n' + ' except: \n' + ' num_gpus = 0 \n' + '\n' + ' if num_gpus > 0: \n' + ' from random import randint \n' + ' active_gpuid=randint(0,num_gpus-1) \n' + ' environ[\'CUDA_VISIBLE_DEVICES\'] = str(active_gpuid) \n' + 'EOF' + ), + 'tail -n +2 %(installdir)s/bin/xpra.orig >> %(installdir)s/bin/xpra', + 'chmod +x %(installdir)s/bin/xpra', +] + +modextravars = { + 'XPRA_SYSTEM_CONF_DIRS': '%(installdir)s/etc/xpra', + # 'XPRA_XORG_BIN': '%(installdir)s/bin/xpra', # fails if defined at install time. Added patch instead. +} +modextrapaths = { + 'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_paths = { + 'files': ['bin/xpra'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +moduleclass = 'vis' diff --git a/Golden_Repo/x/xpra/xpra-4.4.3-use_Xorg_on_PATH_first.patch b/Golden_Repo/x/xpra/xpra-4.4.3-use_Xorg_on_PATH_first.patch new file mode 100644 index 0000000000000000000000000000000000000000..5b9bd50cbd49041765a9758ca2f9dafd0a4e00a8 --- /dev/null +++ b/Golden_Repo/x/xpra/xpra-4.4.3-use_Xorg_on_PATH_first.patch @@ -0,0 +1,29 @@ +diff -Naur xpra-4.4.3.orig/xpra/scripts/config.py xpra-4.4.3/xpra/scripts/config.py +--- xpra-4.4.3.orig/xpra/scripts/config.py 2022-11-27 15:21:57.000000000 +0100 ++++ xpra-4.4.3/xpra/scripts/config.py 2023-02-08 00:44:55.979689272 +0100 +@@ -69,6 +69,13 @@ + xorg = os.environ.get("XPRA_XORG_BIN") + if xorg: + return xorg ++ ++ #look for it in $PATH: ++ for x in os.environ.get("PATH").split(os.pathsep): # pragma: no cover ++ xorg = os.path.join(x, "Xorg") ++ if os.path.isfile(xorg): ++ return xorg ++ + # Detect Xorg Binary + if is_arm() and is_Debian() and os.path.exists("/usr/bin/Xorg"): + #Raspbian breaks if we use a different binary.. +@@ -82,11 +89,6 @@ + ): + if os.path.exists(p): + return p +- #look for it in $PATH: +- for x in os.environ.get("PATH").split(os.pathsep): # pragma: no cover +- xorg = os.path.join(x, "Xorg") +- if os.path.isfile(xorg): +- return xorg + return None + + diff --git a/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-GCC-11.3.0.eb b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-GCC-11.3.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..d09949c276b2ed038b208ef39fdc78402cd78385 --- /dev/null +++ b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-GCC-11.3.0.eb @@ -0,0 +1,38 @@ +name = 'psmpi' +version = '5.8.0-1' + +homepage = 'https://github.com/ParaStation/psmpi2' +description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation, +based on MPICH v3. It provides extra low level communication libraries and integration with +various batch systems for tighter process control. +""" + +toolchain = {'name': 'GCC', 'version': '11.3.0'} + +sources = [SOURCE_TAR_GZ] +source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/'] +checksums = [ + # psmpi-5.8.0-1.tar.gz + 'bcebb42f68e062d4cf957c1ec12a8e2e50051265d38715854bafc34855ed3029', +] + +dependencies = [ + ('pscom', '5.6-default'), + # needed due to the inclusion of hwloc + ('libxml2', '2.9.13'), + # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed + ('CUDA', '11.7', '', SYSTEM) +] + +# We don't have IME in HDFML so we skip this +# mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio' +# +# preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && ' +# preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && ' +mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio' + +threaded = False + +cuda = True + +moduleclass = 'mpi' diff --git a/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-NVHPC-22.11.eb b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-NVHPC-22.11.eb new file mode 100644 index 0000000000000000000000000000000000000000..3ad1f7e18ab2003ce0e739013275f9219d200eb1 --- /dev/null +++ b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-NVHPC-22.11.eb @@ -0,0 +1,38 @@ +name = 'psmpi' +version = '5.8.0-1' + +homepage = 'https://github.com/ParaStation/psmpi2' +description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation, +based on MPICH v3. It provides extra low level communication libraries and integration with +various batch systems for tighter process control. +""" + +toolchain = {'name': 'NVHPC', 'version': '22.11'} + +sources = [SOURCE_TAR_GZ] +source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/'] +checksums = [ + # psmpi-5.8.0-1.tar.gz + 'bcebb42f68e062d4cf957c1ec12a8e2e50051265d38715854bafc34855ed3029', +] + +dependencies = [ + ('pscom', '5.6-default'), + # needed due to the inclusion of hwloc + ('libxml2', '2.9.13'), + # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed + ('CUDA', '11.7', '', SYSTEM) +] + +# We don't have IME in HDFML so we skip this +# mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio' +# +# preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && ' +# preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && ' +mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio' + +threaded = False + +cuda = True + +moduleclass = 'mpi' diff --git a/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-intel-compilers-2022.1.0.eb b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-intel-compilers-2022.1.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..aee0894cfdf2ba22bf704646a34d8da1b8d3a8dc --- /dev/null +++ b/Overlays/hdfml_overlay/p/psmpi/psmpi-5.8.0-1-intel-compilers-2022.1.0.eb @@ -0,0 +1,38 @@ +name = 'psmpi' +version = '5.8.0-1' + +homepage = 'https://github.com/ParaStation/psmpi2' +description = """ParaStation MPI is an open source high-performance MPI 3.0 implementation, +based on MPICH v3. It provides extra low level communication libraries and integration with +various batch systems for tighter process control. +""" + +toolchain = {'name': 'intel-compilers', 'version': '2022.1.0'} + +sources = [SOURCE_TAR_GZ] +source_urls = ['https://gitlab.jsc.fz-juelich.de/ParTec/psmpi/uploads/762714c8eec01fe59239a52798a70e1c/'] +checksums = [ + # psmpi-5.8.0-1.tar.gz + 'bcebb42f68e062d4cf957c1ec12a8e2e50051265d38715854bafc34855ed3029', +] + +dependencies = [ + ('pscom', '5.6-default'), + # needed due to the inclusion of hwloc + ('libxml2', '2.9.13'), + # Including CUDA here to trigger the hook to add the gpu property, and because it is actually needed + ('CUDA', '11.7', '', SYSTEM) +] + +# We don't have IME in HDFML so we skip this +# mpich_opts = '--enable-static --with-file-system=ime+ufs+gpfs --enable-romio' +# +# preconfigopts = 'export CFLAGS="-I/opt/ddn/ime/include $CFLAGS" && ' +# preconfigopts += 'export LDFLAGS="$LDFLAGS -L/opt/ddn/ime/lib -lim_client" && ' +mpich_opts = '--enable-static --with-file-system=ufs+gpfs --enable-romio' + +threaded = False + +cuda = True + +moduleclass = 'mpi' diff --git a/acls.yml b/acls.yml index b61a429f0e770daaa852cfd76ee8f10527d40f29..69c078016c9e6e3496fbfef0485584377be32831 100644 --- a/acls.yml +++ b/acls.yml @@ -83,6 +83,9 @@ software: - name: 'ceres-solver' owner: 'goebbert1' base: True + - name: 'Catalyst' + owner: 'goebbert1' + mpi: True - name: 'Cirq' owner: 'goebbert1' base: True @@ -1152,7 +1155,7 @@ software: base: True mpi: True - name: 'h5py' - owner: ['griessbach1', 'strube1'] + owner: ['griessbach1', 'strube1', 'goebbert1'] base: True mpi: True - name: 'Eigen'