git: 45cc1f7d41df - main - science/sirius: New port: Domain specific library for electronic structure calculations

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Sat, 27 Aug 2022 04:25:55 UTC
The branch main has been updated by yuri:

URL: https://cgit.FreeBSD.org/ports/commit/?id=45cc1f7d41df6548b27553e528461021710a31a9

commit 45cc1f7d41df6548b27553e528461021710a31a9
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2022-08-27 04:25:01 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2022-08-27 04:25:42 +0000

    science/sirius: New port: Domain specific library for electronic structure calculations
---
 science/Makefile         |   1 +
 science/sirius/Makefile  |  50 +++++++++++++++
 science/sirius/distinfo  |   5 ++
 science/sirius/pkg-descr |   9 +++
 science/sirius/pkg-plist | 164 +++++++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 229 insertions(+)

diff --git a/science/Makefile b/science/Makefile
index 2931e21eec3c..a67584509e4d 100644
--- a/science/Makefile
+++ b/science/Makefile
@@ -429,6 +429,7 @@
     SUBDIR += simlib
     SUBDIR += simple-dftd3
     SUBDIR += simsmith
+    SUBDIR += sirius
     SUBDIR += smoldyn
     SUBDIR += sparta
     SUBDIR += spglib
diff --git a/science/sirius/Makefile b/science/sirius/Makefile
new file mode 100644
index 000000000000..d0f518121fdb
--- /dev/null
+++ b/science/sirius/Makefile
@@ -0,0 +1,50 @@
+PORTNAME=	sirius
+DISTVERSIONPREFIX=	v
+DISTVERSION=	7.3.2
+CATEGORIES=	science
+PKGNAMESUFFIX=	-quantum-chemistry # other software also has the name "sirius"
+
+PATCH_SITES=	https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/
+PATCHFILES=	c45ef15637958885b1b299c09ec1bf9376e50ecc.patch:-p1 # https://github.com/electronic-structure/SIRIUS/pull/757
+
+MAINTAINER=	yuri@FreeBSD.org
+COMMENT=	Domain specific library for electronic structure calculations
+
+LICENSE=	BSD2CLAUSE
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+LIB_DEPENDS=	libcosta.so:math/costa \
+		libgsl.so:math/gsl \
+		libhdf5.so:science/hdf5 \
+		libopenblas.so:math/openblas \
+		libscalapack.so:math/scalapack \
+		libspfft.so:math/spfft \
+		libspla.so:math/spla \
+		libsymspg.so:science/spglib \
+		libxc.so:science/libxc
+
+USES=		cmake:testing compiler:c++14-lang eigen:3,test fortran pkgconfig
+USE_LDCONFIG=	yes
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	electronic-structure
+GH_PROJECT=	SIRIUS
+
+OPTIONS_DEFINE=		NLCGLIB
+OPTIONS_SINGLE=		MPI
+OPTIONS_SINGLE_MPI=	MPICH OPENMPI
+OPTIONS_DEFAULT=	MPICH # NLCGLIB
+
+NLCGLIB_DESC=		Enable nlcglib
+NLCGLIB_CMAKE_BOOL=	USE_NLCGLIB
+NLCGLIB_LIB_DEPENDS=	libnlcglib.so:science/nlcglib \
+			libkokkoscore.so:devel/kokkos
+NLCGLIB_BROKEN=		build breaks, see https://github.com/electronic-structure/SIRIUS/issues/759
+
+MPICH_USES=		mpi:mpich
+
+OPENMPI_USES=		mpi:openmpi
+
+# many tests fail, see https://github.com/electronic-structure/SIRIUS/issues/760
+
+.include <bsd.port.mk>
diff --git a/science/sirius/distinfo b/science/sirius/distinfo
new file mode 100644
index 000000000000..5ad19bfbde49
--- /dev/null
+++ b/science/sirius/distinfo
@@ -0,0 +1,5 @@
+TIMESTAMP = 1661540097
+SHA256 (electronic-structure-SIRIUS-v7.3.2_GH0.tar.gz) = a256508de6b344345c295ad8642dbb260c4753cd87cc3dd192605c33542955d7
+SIZE (electronic-structure-SIRIUS-v7.3.2_GH0.tar.gz) = 60638490
+SHA256 (c45ef15637958885b1b299c09ec1bf9376e50ecc.patch) = fe5ba232dea3d3b809e991f4d036ee13fbd108b7bee39595ffea82c8a648796d
+SIZE (c45ef15637958885b1b299c09ec1bf9376e50ecc.patch) = 501
diff --git a/science/sirius/pkg-descr b/science/sirius/pkg-descr
new file mode 100644
index 000000000000..5a3468ee0c9f
--- /dev/null
+++ b/science/sirius/pkg-descr
@@ -0,0 +1,9 @@
+SIRIUS is a domain specific library for electronic structure calculations. It
+implements pseudopotential plane wave (PP-PW) and full potential linearized
+augmented plane wave (FP-LAPW) methods and is designed for GPU acceleration of
+popular community codes such as Exciting, Elk and Quantum ESPRESSO. SIRIUS is
+written in C++14 with MPI, OpenMP and CUDA/ROCm programming models. SIRIUS is
+organised as a collection of classes that abstract away the different building
+blocks of DFT self-consistency cycle.
+
+WWW: https://github.com/electronic-structure/SIRIUS
diff --git a/science/sirius/pkg-plist b/science/sirius/pkg-plist
new file mode 100644
index 000000000000..95ea42754ada
--- /dev/null
+++ b/science/sirius/pkg-plist
@@ -0,0 +1,164 @@
+bin/atom
+bin/hydrogen
+bin/sirius.scf
+bin/unit_cell_tools
+bin/upf1_to_json.py
+bin/upf2_to_json.py
+bin/upf_to_json
+bin/upf_to_json.py
+include/sirius/input_schema.hpp
+include/sirius/sirius.mod
+include/sirius/src/SDDK/dmatrix.hpp
+include/sirius/src/SDDK/fft.hpp
+include/sirius/src/SDDK/fft3d_grid.hpp
+include/sirius/src/SDDK/geometry3d.hpp
+include/sirius/src/SDDK/gvec.hpp
+include/sirius/src/SDDK/hdf5_tree.hpp
+include/sirius/src/SDDK/matrix_storage.hpp
+include/sirius/src/SDDK/memory.hpp
+include/sirius/src/SDDK/omp.hpp
+include/sirius/src/SDDK/serialize_mdarray.hpp
+include/sirius/src/SDDK/serializer.hpp
+include/sirius/src/SDDK/splindex.hpp
+include/sirius/src/SDDK/type_definition.hpp
+include/sirius/src/SDDK/wave_functions.hpp
+include/sirius/src/SDDK/wf_inner.hpp
+include/sirius/src/SDDK/wf_ortho.hpp
+include/sirius/src/SDDK/wf_trans.hpp
+include/sirius/src/_header_file_template.hpp
+include/sirius/src/api/error_codes.hpp
+include/sirius/src/band/band.hpp
+include/sirius/src/band/davidson.hpp
+include/sirius/src/band/residuals.hpp
+include/sirius/src/beta_projectors/beta_projectors.hpp
+include/sirius/src/beta_projectors/beta_projectors_base.hpp
+include/sirius/src/beta_projectors/beta_projectors_gradient.hpp
+include/sirius/src/beta_projectors/beta_projectors_strain_deriv.hpp
+include/sirius/src/constants.hpp
+include/sirius/src/context/config.hpp
+include/sirius/src/context/simulation_context.hpp
+include/sirius/src/context/simulation_parameters.hpp
+include/sirius/src/density/augmentation_operator.hpp
+include/sirius/src/density/density.hpp
+include/sirius/src/density/occupation_matrix.hpp
+include/sirius/src/density/paw_density.hpp
+include/sirius/src/dft/dft_ground_state.hpp
+include/sirius/src/dft/energy.hpp
+include/sirius/src/dft/smearing.hpp
+include/sirius/src/function3d/field4d.hpp
+include/sirius/src/function3d/periodic_function.hpp
+include/sirius/src/function3d/smooth_periodic_function.hpp
+include/sirius/src/function3d/spheric_function.hpp
+include/sirius/src/geometry/force.hpp
+include/sirius/src/geometry/non_local_functor.hpp
+include/sirius/src/geometry/stress.hpp
+include/sirius/src/geometry/wavefunction_strain_deriv.hpp
+include/sirius/src/gpu/acc.hpp
+include/sirius/src/gpu/acc_blas.hpp
+include/sirius/src/gpu/acc_blas_api.hpp
+include/sirius/src/gpu/acc_runtime.hpp
+include/sirius/src/gpu/cuda_common.hpp
+include/sirius/src/gpu/cuda_timer.hpp
+include/sirius/src/gpu/cusolver.hpp
+include/sirius/src/gpu/fft_kernels.hpp
+include/sirius/src/gpu/magma.hpp
+include/sirius/src/gpu/magma_threadsetting.h
+include/sirius/src/hamiltonian/hamiltonian.hpp
+include/sirius/src/hamiltonian/local_operator.hpp
+include/sirius/src/hamiltonian/non_local_operator.hpp
+include/sirius/src/hubbard/hubbard.hpp
+include/sirius/src/hubbard/hubbard_matrix.hpp
+include/sirius/src/k_point/k_point.hpp
+include/sirius/src/k_point/k_point_set.hpp
+include/sirius/src/lapw/matching_coefficients.hpp
+include/sirius/src/linalg/blacs_grid.hpp
+include/sirius/src/linalg/blas_lapack.h
+include/sirius/src/linalg/eigenproblem.hpp
+include/sirius/src/linalg/eigensolver.hpp
+include/sirius/src/linalg/elpa.hpp
+include/sirius/src/linalg/inverse_sqrt.hpp
+include/sirius/src/linalg/linalg.hpp
+include/sirius/src/linalg/linalg_base.hpp
+include/sirius/src/linalg/linalg_spla.hpp
+include/sirius/src/linalg/scalapack.h
+include/sirius/src/mixer/anderson_mixer.hpp
+include/sirius/src/mixer/anderson_stable_mixer.hpp
+include/sirius/src/mixer/broyden2_mixer.hpp
+include/sirius/src/mixer/linear_mixer.hpp
+include/sirius/src/mixer/mixer.hpp
+include/sirius/src/mixer/mixer_factory.hpp
+include/sirius/src/mixer/mixer_functions.hpp
+include/sirius/src/mpi/communicator.hpp
+include/sirius/src/mpi/mpi_grid.hpp
+include/sirius/src/multi_cg/multi_cg.hpp
+include/sirius/src/nlcglib/adaptor.hpp
+include/sirius/src/nlcglib/apply_hamiltonian.hpp
+include/sirius/src/potential/potential.hpp
+include/sirius/src/potential/xc_functional.hpp
+include/sirius/src/potential/xc_functional_base.hpp
+include/sirius/src/pseudopotential_hmatrix.hpp
+include/sirius/src/radial/radial_grid.hpp
+include/sirius/src/radial/radial_integrals.hpp
+include/sirius/src/radial/radial_solver.hpp
+include/sirius/src/radial/spline.hpp
+include/sirius/src/sht/gaunt.hpp
+include/sirius/src/sht/lebedev_grids.hpp
+include/sirius/src/sht/sht.hpp
+include/sirius/src/sirius.hpp
+include/sirius/src/sirius_version.hpp
+include/sirius/src/specfunc/sbessel.hpp
+include/sirius/src/specfunc/specfunc.hpp
+include/sirius/src/symmetry/check_gvec.hpp
+include/sirius/src/symmetry/crystal_symmetry.hpp
+include/sirius/src/symmetry/get_irreducible_reciprocal_mesh.hpp
+include/sirius/src/symmetry/lattice.hpp
+include/sirius/src/symmetry/rotation.hpp
+include/sirius/src/symmetry/symmetrize.hpp
+include/sirius/src/testing.hpp
+include/sirius/src/typedefs.hpp
+include/sirius/src/unit_cell/atom.hpp
+include/sirius/src/unit_cell/atom_symmetry_class.hpp
+include/sirius/src/unit_cell/atom_type.hpp
+include/sirius/src/unit_cell/atom_type_base.hpp
+include/sirius/src/unit_cell/atomic_data.hpp
+include/sirius/src/unit_cell/basis_functions_index.hpp
+include/sirius/src/unit_cell/free_atom.hpp
+include/sirius/src/unit_cell/hubbard_orbitals_descriptor.hpp
+include/sirius/src/unit_cell/radial_functions_index.hpp
+include/sirius/src/unit_cell/unit_cell.hpp
+include/sirius/src/utils/any_ptr.hpp
+include/sirius/src/utils/cmd_args.hpp
+include/sirius/src/utils/env.hpp
+include/sirius/src/utils/filesystem.hpp
+include/sirius/src/utils/json.hpp
+include/sirius/src/utils/nlohmann_json.hpp
+include/sirius/src/utils/nvtx_profiler.hpp
+include/sirius/src/utils/power.hpp
+include/sirius/src/utils/profiler.hpp
+include/sirius/src/utils/rt_graph.hpp
+include/sirius/src/utils/rte.hpp
+include/sirius/src/utils/utils.hpp
+include/sirius/version.hpp
+lib/cmake/sirius/cudalibs_target.cmake
+lib/cmake/sirius/hdf5_target.cmake
+lib/cmake/sirius/modules/FindCRAY_LIBSCI.cmake
+lib/cmake/sirius/modules/FindElpa.cmake
+lib/cmake/sirius/modules/FindFFTW.cmake
+lib/cmake/sirius/modules/FindFilesystem.cmake
+lib/cmake/sirius/modules/FindHIP.cmake
+lib/cmake/sirius/modules/FindHIP/run_hipcc.cmake
+lib/cmake/sirius/modules/FindHIP/run_make2cmake.cmake
+lib/cmake/sirius/modules/FindLibSPG.cmake
+lib/cmake/sirius/modules/FindLibVDWXC.cmake
+lib/cmake/sirius/modules/FindLibXC.cmake
+lib/cmake/sirius/modules/FindMAGMA.cmake
+lib/cmake/sirius/modules/FindMKL.cmake
+lib/cmake/sirius/modules/FindPython2.cmake
+lib/cmake/sirius/modules/FindPythonSupport.cmake
+lib/cmake/sirius/modules/FindSCALAPACK.cmake
+lib/cmake/sirius/modules/Findmpi4py.cmake
+lib/cmake/sirius/modules/GitSubmodule.cmake
+lib/cmake/sirius/siriusConfig.cmake
+lib/cmake/sirius/siriusTargets-%%CMAKE_BUILD_TYPE%%.cmake
+lib/cmake/sirius/siriusTargets.cmake
+lib/libsirius.so