git: 565a8a434c26 - main - science/serac: New port: High order nonlinear thermomechanical simulation code

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Mon, 05 Sep 2022 08:16:03 UTC
The branch main has been updated by yuri:

URL: https://cgit.FreeBSD.org/ports/commit/?id=565a8a434c2616ec558255f4d548d269bcd973b3

commit 565a8a434c2616ec558255f4d548d269bcd973b3
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2022-09-05 08:14:44 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2022-09-05 08:15:51 +0000

    science/serac: New port: High order nonlinear thermomechanical simulation code
---
 science/Makefile                                   |  1 +
 science/serac/Makefile                             | 52 ++++++++++++
 science/serac/distinfo                             |  9 ++
 ...serac_infrastructure_tests_serac__profiling.cpp | 10 +++
 ...ch-src_serac_numerics_functional_functional.hpp | 11 +++
 science/serac/pkg-descr                            |  7 ++
 science/serac/pkg-plist                            | 99 ++++++++++++++++++++++
 7 files changed, 189 insertions(+)

diff --git a/science/Makefile b/science/Makefile
index f41ec7bd287d..fd58073dc13c 100644
--- a/science/Makefile
+++ b/science/Makefile
@@ -417,6 +417,7 @@
     SUBDIR += rubygem-ruby-netcdf
     SUBDIR += scidavis
     SUBDIR += segyio
+    SUBDIR += serac
     SUBDIR += shelxle
     SUBDIR += siconos
     SUBDIR += siesta
diff --git a/science/serac/Makefile b/science/serac/Makefile
new file mode 100644
index 000000000000..aa6870216062
--- /dev/null
+++ b/science/serac/Makefile
@@ -0,0 +1,52 @@
+PORTNAME=	serac
+PORTVERSION=	g20220823
+CATEGORIES=	science
+
+MAINTAINER=	yuri@FreeBSD.org
+COMMENT=	High order nonlinear thermomechanical simulation code
+
+LICENSE=	BSD3CLAUSE
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+LIB_DEPENDS=	libaxom.so:science/axom \
+		libconduit.so:science/conduit \
+		libhdf5.so:science/hdf5 \
+		libHYPRE.so:science/hypre \
+		libmfem.so:math/mfem \
+		libsiloh5.so:science/silo
+
+USES=		cmake:testing compiler:c++17-lang
+USE_LDCONFIG=	yes
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	LLNL
+GH_TAGNAME=	07b8ef1
+GH_TUPLE=	LLNL:blt:49971b88e631aba76a9990c7702ceee47a7c3216:LLNL_blt/cmake/blt \
+		LLNL:uberenv:2cd030dd8fa9ff381900bfbe12fe1eea44a57bb5:LLNL_uberenv/scripts/uberenv \
+		LLNL:serac_tests:2fee9739eadeb218e99f7f5549e0800df81ca757:LLNL_serac_tests/tests
+
+CMAKE_TESTING_ON=	ENABLE_TESTS # tests fail to compile, see https://github.com/LLNL/serac/issues/786
+
+CMAKE_ON=	BUILD_SHARED_LIBS
+CMAKE_OFF=	ENABLE_TESTS
+CMAKE_ARGS=	-DAXOM_DIR=${LOCALBASE} \
+		-DCONDUIT_DIR=${LOCALBASE} \
+		-DMFEM_DIR=${LOCALBASE}
+
+OPTIONS_SINGLE=		MPI
+OPTIONS_SINGLE_MPI=	MPICH OPENMPI
+OPTIONS_DEFAULT=	MPICH
+OPTIONS_SUB=		yes
+
+MPICH_USES=		mpi:mpich
+MPICH_CMAKE_ON=		-DENABLE_MPI=ON \
+			-DMPI_C_COMPILER=${MPICC} \
+			-DMPI_CXX_COMPILER=${MPICXX}
+
+OPENMPI_USES=		mpi:openmpi
+OPENMPI_CMAKE_ON=	-DENABLE_MPI=ON \
+			-DMPI_C_COMPILER=${MPICC} \
+			-DMPI_CXX_COMPILER=${MPICXX}
+OPENMPI_BROKEN=		mixes OpenMPI and MPICH when both are installed, see https://github.com/LLNL/serac/issues/787
+
+.include <bsd.port.mk>
diff --git a/science/serac/distinfo b/science/serac/distinfo
new file mode 100644
index 000000000000..ab991e9f6eb8
--- /dev/null
+++ b/science/serac/distinfo
@@ -0,0 +1,9 @@
+TIMESTAMP = 1662358186
+SHA256 (LLNL-serac-g20220823-07b8ef1_GH0.tar.gz) = 687bfc578b6b1ba30d13ac973977f2cd31c92baa7539dbabd2d71c7b99759a51
+SIZE (LLNL-serac-g20220823-07b8ef1_GH0.tar.gz) = 5513337
+SHA256 (LLNL-blt-49971b88e631aba76a9990c7702ceee47a7c3216_GH0.tar.gz) = 456a70fa20ab6859fa7dad80646bd3e5ba39e195f31fe00519beea21622c3c61
+SIZE (LLNL-blt-49971b88e631aba76a9990c7702ceee47a7c3216_GH0.tar.gz) = 1216333
+SHA256 (LLNL-uberenv-2cd030dd8fa9ff381900bfbe12fe1eea44a57bb5_GH0.tar.gz) = 939b597b84afffc1210c61d0fb3a9705696c398d871eda83ccef3bd68381eaf7
+SIZE (LLNL-uberenv-2cd030dd8fa9ff381900bfbe12fe1eea44a57bb5_GH0.tar.gz) = 25837
+SHA256 (LLNL-serac_tests-2fee9739eadeb218e99f7f5549e0800df81ca757_GH0.tar.gz) = 0bcd3ad11b117da20362b8b6187e5ff16100a7058a200230fff7758c4d93cd14
+SIZE (LLNL-serac_tests-2fee9739eadeb218e99f7f5549e0800df81ca757_GH0.tar.gz) = 17539
diff --git a/science/serac/files/patch-src_serac_infrastructure_tests_serac__profiling.cpp b/science/serac/files/patch-src_serac_infrastructure_tests_serac__profiling.cpp
new file mode 100644
index 000000000000..5878566711fb
--- /dev/null
+++ b/science/serac/files/patch-src_serac_infrastructure_tests_serac__profiling.cpp
@@ -0,0 +1,10 @@
+--- src/serac/infrastructure/tests/serac_profiling.cpp.orig	2022-09-05 06:58:55 UTC
++++ src/serac/infrastructure/tests/serac_profiling.cpp
+@@ -4,6 +4,7 @@
+ //
+ // SPDX-License-Identifier: (BSD-3-Clause)
+ 
++#include <array>
+ #include <cstring>
+ #include <exception>
+ 
diff --git a/science/serac/files/patch-src_serac_numerics_functional_functional.hpp b/science/serac/files/patch-src_serac_numerics_functional_functional.hpp
new file mode 100644
index 000000000000..4cae7b80f6f3
--- /dev/null
+++ b/science/serac/files/patch-src_serac_numerics_functional_functional.hpp
@@ -0,0 +1,11 @@
+--- src/serac/numerics/functional/functional.hpp.orig	2022-09-05 06:55:45 UTC
++++ src/serac/numerics/functional/functional.hpp
+@@ -23,6 +23,8 @@
+ #include "serac/numerics/functional/boundary_integral.hpp"
+ #include "serac/numerics/functional/dof_numbering.hpp"
+ 
++#include <array>
++
+ namespace serac {
+ 
+ template <int i>
diff --git a/science/serac/pkg-descr b/science/serac/pkg-descr
new file mode 100644
index 000000000000..1c47ed569d54
--- /dev/null
+++ b/science/serac/pkg-descr
@@ -0,0 +1,7 @@
+Serac is a 3D implicit nonlinear thermal-structural simulation code. Its primary
+purpose is to investigate multiphysics abstraction strategies and implicit
+finite element-based algorithm development for emerging computing architectures.
+It also serves as a proxy-app for LLNL's Smith code and heavily leverages the
+MFEM finite element library.
+
+WWW: https://github.com/LLNL/serac
diff --git a/science/serac/pkg-plist b/science/serac/pkg-plist
new file mode 100644
index 000000000000..830d25fe8601
--- /dev/null
+++ b/science/serac/pkg-plist
@@ -0,0 +1,99 @@
+bin/serac
+examples/serac/simple_conduction/conduction.lua
+examples/serac/simple_conduction/with_input_file.cpp
+examples/serac/simple_conduction/without_input_file.cpp
+examples/serac/using-with-cmake/CMakeLists.txt
+examples/serac/using-with-cmake/host-config.cmake
+examples/serac/using-with-cmake/serac_example.cpp
+include/serac/infrastructure/about.hpp
+include/serac/infrastructure/accelerator.hpp
+include/serac/infrastructure/cli.hpp
+include/serac/infrastructure/git_sha.hpp
+include/serac/infrastructure/initialize.hpp
+include/serac/infrastructure/input.hpp
+include/serac/infrastructure/logger.hpp
+include/serac/infrastructure/output.hpp
+include/serac/infrastructure/profiling.hpp
+include/serac/infrastructure/terminator.hpp
+include/serac/infrastructure/variant.hpp
+include/serac/mesh/mesh_utils.hpp
+include/serac/mesh/mesh_utils_base.hpp
+include/serac/numerics/equation_solver.hpp
+include/serac/numerics/expr_template_impl.hpp
+include/serac/numerics/expr_template_ops.hpp
+include/serac/numerics/functional/boundary_integral.hpp
+include/serac/numerics/functional/boundary_integral_kernels.hpp
+include/serac/numerics/functional/detail/hexahedron_H1.inl
+include/serac/numerics/functional/detail/hexahedron_Hcurl.inl
+include/serac/numerics/functional/detail/hexahedron_L2.inl
+include/serac/numerics/functional/detail/metaprogramming.hpp
+include/serac/numerics/functional/detail/qoi.inl
+include/serac/numerics/functional/detail/quadrilateral_H1.inl
+include/serac/numerics/functional/detail/quadrilateral_Hcurl.inl
+include/serac/numerics/functional/detail/quadrilateral_L2.inl
+include/serac/numerics/functional/detail/segment_H1.inl
+include/serac/numerics/functional/detail/segment_Hcurl.inl
+include/serac/numerics/functional/detail/segment_L2.inl
+include/serac/numerics/functional/dof_numbering.hpp
+include/serac/numerics/functional/domain_integral.hpp
+include/serac/numerics/functional/domain_integral_kernels.hpp
+include/serac/numerics/functional/dual.hpp
+include/serac/numerics/functional/evector_view.hpp
+include/serac/numerics/functional/finite_element.hpp
+include/serac/numerics/functional/functional.hpp
+include/serac/numerics/functional/functional_qoi.inl
+include/serac/numerics/functional/integral_utilities.hpp
+include/serac/numerics/functional/isotropic_tensor.hpp
+include/serac/numerics/functional/polynomials.hpp
+include/serac/numerics/functional/quadrature.hpp
+include/serac/numerics/functional/tensor.hpp
+include/serac/numerics/functional/tuple.hpp
+include/serac/numerics/functional/tuple_arithmetic.hpp
+include/serac/numerics/odes.hpp
+include/serac/numerics/quadrature_data.hpp
+include/serac/numerics/solver_config.hpp
+include/serac/numerics/stdfunction_operator.hpp
+include/serac/numerics/vector_expression.hpp
+include/serac/physics/base_physics.hpp
+include/serac/physics/boundary_conditions/boundary_condition.hpp
+include/serac/physics/boundary_conditions/boundary_condition_helper.hpp
+include/serac/physics/boundary_conditions/boundary_condition_manager.hpp
+include/serac/physics/coefficients/coefficient_extensions.hpp
+include/serac/physics/coefficients/loading_functions.hpp
+include/serac/physics/coefficients/sensitivity_coefficients.hpp
+include/serac/physics/integrators/displacement_hyperelastic_integrator.hpp
+include/serac/physics/integrators/nonlinear_reaction_integrator.hpp
+include/serac/physics/integrators/traction_integrator.hpp
+include/serac/physics/integrators/wrapper_integrator.hpp
+include/serac/physics/materials/functional_material_utils.hpp
+include/serac/physics/materials/hyperelastic_material.hpp
+include/serac/physics/materials/parameterized_solid_functional_material.hpp
+include/serac/physics/materials/parameterized_thermal_functional_material.hpp
+include/serac/physics/materials/solid_functional_material.hpp
+include/serac/physics/materials/solid_utils.hpp
+include/serac/physics/materials/thermal_expansion_material.hpp
+include/serac/physics/materials/thermal_functional_material.hpp
+include/serac/physics/solid.hpp
+include/serac/physics/solid_functional.hpp
+include/serac/physics/state/finite_element_dual.hpp
+include/serac/physics/state/finite_element_state.hpp
+include/serac/physics/state/finite_element_vector.hpp
+include/serac/physics/state/state_manager.hpp
+include/serac/physics/thermal_conduction.hpp
+include/serac/physics/thermal_conduction_functional.hpp
+include/serac/physics/thermal_mechanics_functional.hpp
+include/serac/physics/thermal_solid.hpp
+include/serac/serac_config.hpp
+lib/cmake/serac-config-version.cmake
+lib/cmake/serac-config.cmake
+lib/cmake/serac-targets-%%CMAKE_BUILD_TYPE%%.cmake
+lib/cmake/serac-targets.cmake
+lib/libserac_boundary_conditions.so
+lib/libserac_coefficients.so
+lib/libserac_infrastructure.so
+lib/libserac_mesh.so
+lib/libserac_numerics.so
+lib/libserac_physics.so
+lib/libserac_physics_integrators.so
+lib/libserac_physics_materials.so
+lib/libserac_state.so