Giter Club home page Giter Club logo

sandialabs / seacas Goto Github PK

View Code? Open in Web Editor NEW
129.0 9.0 75.0 364.61 MB

The Sandia Engineering Analysis Code Access System (SEACAS) is a suite of preprocessing, postprocessing, translation, and utility applications supporting finite element analysis software using the Exodus database file format.

License: Other

CMake 4.78% Fortran 19.60% C 46.16% C++ 8.59% Makefile 1.88% Perl 0.02% Shell 0.90% TeX 3.00% Python 11.14% HTML 3.53% Yacc 0.07% M4 0.16% Pascal 0.01% Lex 0.07% Roff 0.03% MATLAB 0.05% SWIG 0.02% Assembly 0.01% NASL 0.01% POV-Ray SDL 0.01%
snl-applications snl-science-libs snl-comp-science-libs scr-10 scr-126 scr-127 scr-59 scr-69 scr-70 scr-75 scr-76 scr-90 scr-91 scr-92 scr-93 scr-532 scr-638 scr-864 scr-869 scr-870

seacas's Introduction

SEACAS [Documentation] [Wiki]

Codacy Badge Analysis Status Spack Version Appveyor Build SEACAS Docker Exodus Docker Github Actions -- CI Serial Github Actions -- CI Variants Github Actions -- CI Intel Github Actions -- CI MSYS2

Get the sources

git clone https://github.com/sandialabs/seacas.git

This will create a directory that will be referred to as seacas in the instructions that follow. You can rename this directory to any other name you desire. Set an environment variable pointing to this location by doing:

cd seacas && export ACCESS=`pwd`

Build instructions

Automatically download and build dependencies (Third-Party Libraries)

There are a few externally developed third-party libraries (TPL) that are required (or optional) to build SEACAS: HDF5, NetCDF, CGNS, MatIO, Kokkos, and (if MPI set) PnetCDF libraries. You can build the libraries using the install-tpl.sh script, or you can install them manually as detailed in TPL-Manual-Install.md.

  • The script requires bash and wget, which you may need to install.
  • To use the script, simply type bash ./install-tpl.sh.
  • The default behavior can be modified via a few environment variables:
Variable Values Default Description
INSTALL_PATH path to install pwd Root of install path; default is current location
COMPILER clang, gnu, intel, ibm nvidia gnu What compiler should be used for non-parallel build. Must have C++-17 capability.
MPI YES, NO NO If YES, then build parallel capability
FORCE YES, NO NO Force downloading and building even if lib is already installed.
BUILD YES, NO YES Should TPLs be built and installed.
DOWNLOAD YES, NO YES Should TPLs be downloaded.
USE_PROXY YES, NO NO Sandia specific -- use proxy when downloading tar files
DEBUG YES, NO NO Build debug executable; default is optimized
SHARED YES, NO YES Build shared libraries if YES, archive (.a) if NO
CRAY YES, NO YES Is this a Cray system (special parallel options)
NEEDS_ZLIB YES, NO NO If system does not have zlib installed, download and install it (HDF5 compression).
USE_ZLIB_NG YES, NO NO Should the improved zlib-ng library be used to provide ZLIB capability
NEEDS_SZIP YES, NO NO If system does not have szip installed, download and install it (HDF5 compression).
USE_64BIT_INT YES, NO NO In CGNS, enable 64-bit integers
CGNS YES, NO YES Should CGNS TPL be built.
MATIO YES, NO YES Should matio TPL be built.
METIS YES, NO NO Should metis TPL be built (parallel decomposition).
PARMETIS YES, NO NO Should parmetis TPL be built (parallel decomposition).
ADIOS2 YES, NO NO Should adios2 TPL be built.
CATALYST2 YES, NO NO Should catalyst 2 TPL be built.
KOKKOS YES, NO NO Should Kokkos TPL be built.
GNU_PARALLEL YES, NO YES Should GNU parallel script be built.
FMT YES, NO YES Should Lib::FMT TPL be built.
CATCH2 YES, NO YES Should Catch2 be built (used for testing).
H5VERSION V114, V110, V18 V114 Use HDF5-1.14.X, HDF5-1.10.X or HDF5-1.8.X
H5CPP YES, NO NO Should the HDF5 C++ library be built/installed
BB YES, NO NO Enable Burst Buffer support in PnetCDF
JOBS {count} 2 Number of "jobs" used for simultaneous compiles
SUDO "" or sudo "" If need to be superuser to install
  • NOTE: The DOWNLOAD and BUILD options can be used to download all TPL source; move to a system with no outside internet access and then build/install the TPLs.
  • The arguments can either be set in the environment as: export COMPILER=gnu, or passed on the script invocation line: COMPILER=gnu ./install-tpl.sh

Configure, Build, and Install SEACAS

At this time, you should have all external TPL libraries built and installed into ${ACCESS}/lib and ${ACCESS}/include. You are now ready to configure the SEACAS CMake build.

  • cd $ACCESS
  • mkdir build
  • cd build
  • edit the ${ACCESS}/cmake-config file and adjust compilers and other settings as needed.
  • enter the command ../cmake-config and cmake should configure everything for the build.
  • make && make install
  • If everything works, your applications should be in ${ACCESS}/bin
  • To install in a different location, do INSTALL_PATH={path_to_install} ../cmake-config
  • The default behavior can be modified via a few environment variables:
Variable Values Default Description
INSTALL_PATH path to install pwd Root of install path; default is current location
BUILDDIR {dir} pwd/build Directory to do config and build
COMPILER clang, gnu, intel, ibm gnu What compiler should be used for non-parallel build
SHARED YES, NO YES Build and use shared libraries is YES
APPLICATIONS YES, NO YES Should all SEACAS applications be built (see cmake-config)
LEGACY YES, NO YES Should the legacy SEACAS applications be built (see cmake-config)
FORTRAN YES, NO YES Should fortran libraries and applications be built (see cmake-config)
ZOLTAN YES, NO YES Should zoltan library and nem_slice be built
BUILD_TYPE debug, release release what type of build
MODERN YES, NO NO Use "modern" CMake configuration files for netCDF and HDF5
DEBUG -none- If specified, then do a debug build. Can't be used with BUILD_TYPE
HAVE_X11 YES, NO YES Does the system have X11 libraries and include files; used for blot, fastq
THREADSAFE YES, NO NO Compile a thread-safe IOSS and Exodus library
USE_SRUN YES, NO NO If MPI enabled, then use srun instead of mpiexec to run parallel tests
DOXYGEN YES, NO NO Run doxygen on several packages during build to generate documentation
OMIT_DEPRECATED YES, NO NO Should the deprecated code be omitted; NO will enable deprecated code
EXTRA_WARNINGS YES, NO NO Build with extra warnings enabled; see list in cmake-config
SANITIZER many NO If not NO, build using specified sanitizer; see list in cmake-config
GENERATOR many "Unix Makefiles" what generator should CMake use; see cmake doc
  • The arguments can either be set in the environment as: export COMPILER=gnu, or passed on the script invocation line: COMPILER=gnu ./install-tpl.sh

Parallel Build

For some areas of use, a parallel version of SEACAS is required. This will build a "parallel-aware" version of the exodus library and a parallel version of the Ioss library.

The only modification to the serial build described above is to make sure that the mpicc parallel C compiler is in your path and to add the MPI=YES argument to the install-tpl.sh script invocation when building the TPLs. For example:

   MPI=YES ./install-tpl.sh

This will download all requested libraries and build them with parallel capability enabled (if applicable). You can then continue with the steps outlined in the previous section.

Testing

There are a few unit tests for zoltan, exodus, ioss, and aprepro that can be run via make test or ctest if you configured with -D Seacas_ENABLE_TESTS=YES.

There is also a system-level test that just verifies that the applications can read and write exodus files correctly. This test runs off of the installed applications. To run do:

  • make install
  • cd ../SEACAS-Test
  • make clean; make

This will run through several of the SEACAS applications creating a mesh (exodus file) and then performing various manipulations on the mesh. If the test runs successfully, there is some hope that everything has built and is running correctly.

Exodus

If you only want the exodus library, then follow most of the above instructions with the following exceptions:

  • Clone entire source tree as above. (There used to be a zip file, but difficult to keep up-to-date)
  • You only need the netcdf and optionally hdf5 libraries
  • Use the cmake-exodus file instead of cmake-config.
  • This will build, by default, a shared exodus library and also install the exodus.py and exomerge.py Python interfaces.

Trilinos

Although SEACAS is included in Trilinos (https://github.com/trilinos/Trilinos), it is also possible to use the SEACAS code from this repository to override the possibly older SEACAS code in Trilinos. The steps are to directly pull SEACAS from github under Trilinos and then build SEACAS under Trilinos with that version using SEACAS_SOURCE_DIR_OVERRIDE. Here is how you do it:

cd Trilinos/
git clone https://github.com/sandialabs/seacas.git
cd BUILD/
cmake -DSEACAS_SOURCE_DIR_OVERRIDE:STRING=seacas/packages/seacas -DTrilinos_ENABLE_SEACAS [other options] ..

SPACK

The SPACK package manager (https://spack.io/) can be used to install SEACAS and all dependent third-party libraries. SEACAS is a supported package in SPACK as of December 2018.

git clone https://github.com/spack/spack.git
. spack/share/spack/setup-env.sh
spack install seacas~mpi   # Serial build (most common)

Docker

An Ubuntu-based Docker image, with SEACAS built and installed, is available on Docker Hub.

docker pull mrbuche/seacas

SEACAS is located in /seacas when running the container. There is also a similar image available on Docker Hub with only Exodus built and installed.

docker pull mrbuche/exodus

CMake Example Usage

A simple example of using the SEACAS Exodus library in your external project. Here is the CMakeLists.txt file:

project(ExodusCMakeExample VERSION 1.0 LANGUAGES C Fortran)
cmake_minimum_required(VERSION 3.1...3.26)

#### C ####
find_package(SEACASExodus CONFIG)
add_executable(ExodusWriteC ExodusWrite.c)
target_link_libraries(ExodusWriteC PRIVATE SEACASExodus::all_libs)

#### FORTRAN #####
IF ("${CMAKE_Fortran_COMPILER_ID}" MATCHES "GNU")
  SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fcray-pointer -fdefault-real-8 -fdefault-integer-8 -fno-range-check")
ELSEIF ("${CMAKE_Fortran_COMPILER_ID}" MATCHES "XL")
  SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -qintsize=8 -qrealsize=8")
ELSEIF ("${CMAKE_Fortran_COMPILER_ID}" MATCHES "Cray")
  SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -sdefault64")
ELSE()
  SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -r8 -i8")
ENDIF()

find_package(SEACASExodus_for CONFIG)
add_executable(ExodusReadFor ExodusRead.f)
target_link_libraries(ExodusReadFor PRIVATE SEACASExodus_for::all_libs)

A similar CMakeLists.txt file for using the IOSS library would be something like:

cmake_minimum_required(VERSION 3.1...3.26)
project(IossCMakeExample VERSION 1.0 LANGUAGES CXX)

#### C++ IOSS ####
find_package(SEACASIoss CONFIG)
add_executable(IossExample IossExample.C)
target_link_libraries(IossExample PRIVATE SEACASIoss::all_libs)

The cmake-use-example directory contains Exodus example files in the exodus subdirectory and Ioss example files in the ioss subdirectory. These provide short examples of how to build and link a program with the Exodus and/or Ioss libraries.

To use this, copy the contents of the directory to your own filespace and modify the contents as needed.

To configure and build, you would do something like:

  mkdir build; cd build
  CMAKE_PREFIX_PATH={path_to_root_of_seacas_install} cmake ..
  make

And you would then get an executable (ExodusWriteC and ExodusReadFor for Exodus, IossExample for Ioss) compiled and linked against the Exodus and/or Ioss libraries.

Required Software

The SEACAS system requires that there be some libraries and applications already existing on the chosen system prior to building SEACAS and its required Third-Party Liberaries.

These include:

  • The git application is used to access the SEACAS and TPL git repositories

  • CMake is used to generate the build system.

  • C, C++, and (optionally) Fortran compilers. The C compiler must support the C11 standard and C++ must support C+++17. GNU, Clang, Intel, Cray, compilers are supported and tested regularly.

  • For parallel capability, an MPI library is needed. We have used openmpi, mpich, mvapich, intel, and cray MPI libraries. It is recommended to use as current an MPI library as possible.

  • Automake is used to configure some of the TPL builds

  • wget is needed to download some of the TPL library source code.

  • python is required to use the exodus.py and exomerge.py Python interfaces to Exodus databases. Python3 is recommended.

  • To use the blot and fastq applications, an X11 development environment is needed.

  • Flex and Bison are optional if you are developing new capabilities in aprepro.

  • M4 is needed to build the netCDF library.

Mac

On a mac system, I use the brew system which provides all of the applications listed above. The X11 system I use is XQuartz. The Mac also requires Xcode

Linux

On an ubuntu system, the following is used to set up the basic packages needed to compile SEACAS:

apt install -y libaec-dev zlib1g-dev automake autoconf \
libcurl4-openssl-dev libjpeg-dev wget curl bzip2 m4 flex bison cmake \
libzip-dev openmpi-bin libopenmpi-dev \

Windows

On windows, I have used the following packages for MINGW64:

git mingw-w64-x86_64-toolchain make mingw-w64-x86_64-hdf5 \
mingw-w64-x86_64-cgns mingw-w64-x86_64-netcdf mingw-w64-x86_64-zlib \
mingw-w64-x86_64-gcc-fortran mingw-w64-x86_64-gcc-libgfortran \
mingw-w64-x86_64-cmake mingw-w64-x86_64-fmt

There is also a Visual Studio build performed at each commit to the SEACAS git repository. See the file .appveyor.yml for more details.

License

SEACAS is licensed under the Modified BSD License. See the LICENSE file for details.

The following externally-developed software routines are used in some of the SEACAS applications and are under a separate license:

Routine Where Used License
getline packages/seacas/libraries/aprepro_lib/apr_getline_int.c MIT
getline packages/seacas/libraries/suplib_c/getline.c BSD
GetLongOpt packages/seacas/libraries/suplib_cpp/GetLongOpt.C public domain
adler hash packages/seacas/libraries/suplib_c/adler.c zlib
MurmurHash packages/seacas/libraries/ioss/src/Ioss_FaceGenerator.C public domain
json include file packages/seacas/libraries/ioss/src/visualization/ MIT
Tessil Hash packages/seacas/libraries/ioss/src/hash MIT
pdqsort packages/seacas/libraries/ioss/src Zlib License

Contact information

Greg Sjaardema ([email protected], [email protected])

seacas's People

Contributors

3rav avatar bartlettroscoe avatar bourdin avatar clintonstimpson avatar cquammen avatar gdsjaar avatar github-actions[bot] avatar gjtempl avatar gsjaardema avatar ibaned avatar jbcarleton avatar jschueller avatar jspanchu avatar mathstuf avatar mrbuche avatar mvlopri avatar npe9 avatar nschloe avatar raovgarimella avatar scottnlevy avatar seanm avatar sebrowne avatar spyridon97 avatar tbeu avatar tjfulle avatar tjotaha avatar tkordenbrock avatar tokusanya avatar utkarshayachit avatar wortiz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

seacas's Issues

GEN3D: extrude 9-node quad mesh to 27-node hexes

Greg,

Okay, good to know.. I would need this capability at the start of Q3 (this
year) in support of my VVUQ project. I may have alternative paths in
Percept, however, let me check on that... I think that Percept might promote
a mesh from P1 to P2. We certainly support arbitrary promotion in Nalu now
(P1->P12-ish) however, that is internal to the code and for my VV study I
want a pure quadratic hex mesh.

Best,

Stefan

library bundling

I see that SEACAS is bundling a bunch of TPLs. This is probably to make it easier for new users to get started with SEACAS.

However, version bundling has serious downsides:

  • upstream fixes don't automatically make it to SEACAS,
  • SEACAS installations will conflict with upstream installations,
  • bundled software will get tweaked without getting the patches upstream, leading to an unupdatable mess.

I personally just bumped in number 2 with a Trilinos installation; Zoltan is conflicting here.
There are more elaborate texts on this.

Of course, we still want to make it easy for newcomers to get started with SEACAS. That's why I prepare a PPA, too.

There has to be the possibility to depend on system-installed libraries though, and I'd suggest to make it the default. Then, if anyone pulls

-DBUILD_BUNDLED_TPLS:BOOL=ON

he or she gets it all.

mpi headers installed?

When checking the output of

make install

I see that MPI files are installed by SEACAS:

-rw-r--r-- root/root      8165 2015-10-31 10:37 ./usr/include/mpi.h
-rw-r--r-- root/root       882 2015-10-31 10:37 ./usr/include/mpi_config.h
-rw-r--r-- root/root      7855 2015-10-31 10:37 ./usr/include/mpi_implementation.h
-rw-r--r-- root/root     21197 2015-10-31 10:37 ./usr/include/mpi_profile.h
-rw-r--r-- root/root     20831 2015-10-31 10:37 ./usr/include/mpi_prototypes.h

This should be fixed. If those aren't actually MPI files, they should at least be prefixed with seacas_ or seacas/.

Ioss_Section.h:10:3: error: ‘signals’ does not name a type

[ 96%] Built target Zoltan_exampleBLOCK
[ 96%] Building CXX object src/libraries/ioss/src/CMakeFiles/Ioss.dir/Ioss_Section.C.o
In file included from /home/nschloe/software/seacas/source-upstream/src/libraries/ioss/src/Ioss_Section.C:1:0:
/home/nschloe/software/seacas/source-upstream/src/libraries/ioss/src/Ioss_Section.h:6:1: error: expected class-name before ‘{’ token
 {
 ^
/home/nschloe/software/seacas/source-upstream/src/libraries/ioss/src/Ioss_Section.h:10:3: error: ‘signals’ does not name a type
   signals:
   ^
make[2]: *** [src/libraries/ioss/src/CMakeFiles/Ioss.dir/Ioss_Section.C.o] Error 1
make[1]: *** [src/libraries/ioss/src/CMakeFiles/Ioss.dir/all] Error 2
make: *** [all] Error 2

CMake Error: -D must be followed with VAR=VALUE

Thrown error:

../cmake-config
CMake Error: -D must be followed with VAR=VALUE.
CMake Error: Problem processing arguments. Aborting.

../cmake-config: line 133: -D: command not found

Relevant line in cmake-config:

131:  -D TPL_ENABLE_MPI:BOOL=${MPI} \
132:  -D TPL_ENABLE_Pamgen:BOOL=OFF \
133:  -D 
134:  -D TPL_ENABLE_Pthread:BOOL=${THREADSAFE_IO_LIBS} \

EJOIN: Capability to mirror mesh

Add reflect/mirror {x|y|z} option to ejoin.

Should work with offset -- need to specify order of operation -- mirror followed by offset.

Investigate how to specify for more than two input meshes.
Investigate how to handle results variables.

Don't need extra var sets in Dependencies.cmake when using TRIBITS_PACKAGE_DEFINE_DEPENDENCIES()

@gdsjaar,

FYI:

When using the macro TRIBITS_PACKAGE_DEFINE_DEPENDENCIES() in a Dependencies.cmake file, you don't need to set dependency vars anymore. They all get set in the macro arguments and those that are empty are set to "" automatically. For example, see TribitsExampleProject/with_subpackages/cmake/Dependencies.cmake which shows:

TRIBITS_PACKAGE_DEFINE_DEPENDENCIES(
  SUBPACKAGES_DIRS_CLASSIFICATIONS_OPTREQS
    A   a   PT  REQUIRED
    B   b   ST  OPTIONAL
    C   c   ST  OPTIONAL
  )

Therefore, in the file seacas/cmake/Dependencies.cmake, you don't need to set the vars:

SET(LIB_REQUIRED_DEP_PACKAGES)
SET(LIB_OPTIONAL_DEP_PACKAGES)
SET(TEST_REQUIRED_DEP_PACKAGES)
SET(TEST_OPTIONAL_DEP_PACKAGES)
SET(LIB_REQUIRED_DEP_TPLS)
SET(LIB_OPTIONAL_DEP_TPLS MPI)
SET(TEST_REQUIRED_DEP_TPLS)
SET(TEST_OPTIONAL_DEP_TPLS)

They get set to empty "" by the macro TRIBITS_PACKAGE_DEFINE_DEPENDENCIES() automatically. This just removes clutter and avoids mistakes (that can be hidden by clutter).

Hope this is helpful.

make the decomp scirpt in the build directory executable

When the configure_file command generates the decomp script in the build directory it does not have an executable permission set. If this did, then panzer, Drekar and other apps could avoid having to install seacas separately during testing. I will submit a pull request with this change shortly.

Error when building without CGNS

TPL_ENABLE_CGNS might not be turning on the right defines

I get the following error when trying to build without CGNS (and without MATIO)

In file included from /home/wortiz/projects/goma/libraries/seacas/packages/seacas/libraries/ioss/src/Ioss_DatabaseIO.C:42:
/home/wortiz/projects/goma/libraries/seacas/packages/seacas/libraries/ioss/src/Ioss_StructuredBlock.h:46:10: fatal error: 
      'cgnstypes.h' file not found
#include <cgnstypes.h>
         ^~~~~~~~~~~~~
1 error generated.
packages/seacas/libraries/ioss/src/CMakeFiles/Ioss.dir/build.make:158: recipe for target 'packages/seacas/libraries/ioss/src/CMakeFiles/Ioss.dir/Ioss_DatabaseIO.C.o' failed
make[2]: *** [packages/seacas/libraries/ioss/src/CMakeFiles/Ioss.dir/Ioss_DatabaseIO.C.o] Error 1
CMakeFiles/Makefile2:4520: recipe for target 'packages/seacas/libraries/ioss/src/CMakeFiles/Ioss.dir/all' failed

But my cmake was configured with CGNS off:

$ cmake -LA -N .. |grep TPL_ENABLE_CGNS
TPL_ENABLE_CGNS:BOOL=OFF

Changes to cmake-config:

$ git diff
diff --git a/cmake-config b/cmake-config
index a811b6c..36aff94 100755
--- a/cmake-config
+++ b/cmake-config
@@ -31,8 +31,8 @@ INSTALL_PATH=${ACCESS}
 ### subdirectories of the specified paths.
 ### For example, netcdf.h should be in ${NETCDF_PATH}/include
 HAVE_NETCDF=ON
-HAVE_MATIO=ON
-HAVE_CGNS=ON
+HAVE_MATIO=OFF
+HAVE_CGNS=OFF
 
 NETCDF_PATH=${ACCESS}
 MATIO_PATH=${ACCESS}

The NetCDF found in does not have the correct NC_MAX_DIMS, NC_MAX_VARS and NC_MAX_VAR_DIMS

I'm now getting

Getting information for all enabled TPLs ...

Processing enabled TPL: Netcdf (enabled explicitly, disable with -DTPL_ENABLE_Netcdf=OFF)
-- NetCDF include file /usr/include/netcdf.h will be searched for define values
CMake Warning at cmake/modules/FindNetCDF.cmake:147 (message):
  The NetCDF found in does not have the correct NC_MAX_DIMS, NC_MAX_VARS and
  NC_MAX_VAR_DIMS

  It may not be compatible with other TPL libraries such MOAB and ExodusII

and I have no idea what this wants to say. I'm running on a default NetCDF 4.1.3. Perhaps too old?

heavy documentation

Right now, SEACAS's documentation is almost than half as heavy as the actual packages,

$ du -sh *
[...]
28M doc
[...]
58M packages
[...]

This is mostly due to the presence of some scanned files, e.g., FASTQ.pdf at 11MB. Several files exceed 1MB. It'd be probably be worthwhile considering moving those files to another place (e.g., github pages) and linking it from the README.

cmake_minimum_required

I see in CMakeLists.txt

cmake_minimum_required(VERSION 3.0)

Is this actually required? I just tested with 2.8.12 and it seems all fine.

license missing?

I can't find a LICENSE file in the main directory. Also, the README.md should state under which license SEACAS is published.

NetCDF / HDF5 instructions

Hi Greg,
I built the exodus library so I can export an exodus file from a special-purpose meshing code.
I have a small suggestion for the netcdf build instructions here:
https://github.com/gsjaardema/seacas#exodus

The netcdf instructions talk about setting C and LD FLAGS with respect to HDF5_ROOT, but I couldn’t find any mention of what HDF5_ROOT should be.
Eventually I figured out it should be the same as ACCESS.

Also, FYI, this might be helpful to some.
I had an old version of hdf5 install somewhere on my machine that netcdf was finding and using, but it wasn’t compatible because it didn’t define 'H5LT_FILE_IMAGE_DONT_COPY' and the like. The configure step would succeed without complaint but then I’d get the following compile error.

libtool: compile: gcc -DHAVE_CONFIG_H -I. -I.. -I../include -MT libnetcdf4_la-nc4file.lo -MD -MP -MF .deps/libnetcdf4_la-nc4file.Tpo -c nc4file.c -fno-common -DPIC -o .libs/libnetcdf4_la-nc4file.o
nc4file.c:2321:30: warning: implicit declaration of function
'H5LTopen_file_image' is invalid in C99 [-Wimplicit-function-declaration]
if((nc4_info->hdfid = H5LTopen_file_image(meminfo->memory,meminfo->size,
^
nc4file.c:2322:4: error: use of undeclared identifier
'H5LT_FILE_IMAGE_DONT_COPY'
H5LT_FILE_IMAGE_DONT_COPY|H5LT_FILE_IMAGE_DONT_RELEASE
^
nc4file.c:2322:30: error: use of undeclared identifier
'H5LT_FILE_IMAGE_DONT_RELEASE'
H5LT_FILE_IMAGE_DONT_COPY|H5LT_FILE_IMAGE_DONT_RELEASE
^
1 warning and 2 errors generated.
make[2]: *** [libnetcdf4_la-nc4file.lo] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

... samitch

EJOIN: ability to merge blocks and sets

Good afternoon Greg,

I was curious if ejoin block/set merging was serviced in SEACAS? I recall talking about this late last August.

I still have work arounds, but thought it wouldn’t hurt to ask.

Thanks,
Steve Gomez

Fortran build warning / remark

.../seacas/libraries/supes/fre_fld/ffistr.f(283): remark #8577: The scale factor (k) and number of fractional digits (d) do not have the allowed combination of either -d < k <= 0 or 0 < k < d+2. Expect asterisks as output.

no hdf5

In the set of all enabled and disables packages and TPLs, I don't see HDF5:

Enabling all parent packages that have at least one subpackage enabled ...


Final set of enabled packages:  Zoltan IOSS Supes Aprepro_lib Chaco SVDI 6

Final set of enabled SE packages:  Zoltan IOSSIoss IOSSIogn IOSSIohb IOSSIotr IOSSIonit IOSSIoMain IOSSIoUtest IOSS Supes Aprepro_lib Chaco SVDI 13

Final set of non-enabled packages:  Exodus Exodus_for Nemesis Suplib Mapvarlib PLT Algebra Aprepro Blot Conex Conjoin Ejoin Epu Ex1ex2v2 Ex2ex1v2 Exo2mat Exo_format Exodiff Exomatlab Exotec2 Exotxt Fastq Gen3D Genshell Gjoin Grepos Grope Mapvar Mapvar-kd Mat2exo Nemslice Nemspread Numbers Txtexo 34

Final set of non-enabled SE packages:  Exodus Exodus_for Nemesis IOSSIoex IOSSIofx IOSSIopx IOSSIoexo_fac IOSSIocgns IOSSIopg Suplib Mapvarlib PLT Algebra Aprepro Blot Conex Conjoin Ejoin Epu Ex1ex2v2 Ex2ex1v2 Exo2mat Exo_format Exodiff Exomatlab Exotec2 Exotxt Fastq Gen3D Genshell Gjoin Grepos Grope Mapvar Mapvar-kd Mat2exo Nemslice Nemspread Numbers Txtexo 40

Final set of enabled TPLs:  X11 1

Final set of non-enabled TPLs:  Zlib Pnetcdf Netcdf CGNS METIS ParMETIS Pamgen Matio 8

Setting up export dependencies for all enabled SE packages ...

Intentional?

gjoin seg fault after deleting lots of blocks

Greg,

I am currently running gjoin in effort to remove the majority of my FEA blocks in order to perform a sub analysis, but I am currently receving a “Program received signal SIGSEGV: Segmentation fault – invalid memory reference” error and was hoping that you might be able to provide some insight. I have tried running this on my blad in as well as the cee-compute007 (with more memory). I have attached the python script used to create the gjoin command file in addition to the associated command file. I have given you the mesh on chama if necessary using the below commands.

give gdsjaar tsl_g2a_asm_qsdv_negy.g
take spgomez tsl_g2a_asm_qsdv_negy.g

Thanks,
Steve

cmake-config has no closing string literal

In the cmake-config file, starting on line 101, there is an open string literal without a closing string literal:

if [ "HAVE_DATA_WAREHOUSE" == "ON" ]
then
    DW_SYMBOLS="-DSEACASIoss_ENABLE_DataWarehouse=${HAVE_DATAWAREHOUSE} \
                -DTPL_ENABLE_DataWarehouse:BOOL=${HAVE_DATAWAREHOUSE}   \
                -DDataWarehouse_LIBRARY_DIRS:PATH=${DataWarehouse_PATH}/lib     \
                -DDataWarehouse_INCLUDE_DIRS:PATH=${DataWarehouse_PATH}/include \
fi

Note that DW_SYMBOLS=" has no closing ". Bash throws an error and quits compilation.

nem_spread questions

It appears that nem_spread is configurable through a text file, but not through command line. This always creates a hassle for me since I use nem_spread from a script, and in there I have to open a file, write to it, call nem_spread, and delete the file.

It'd be a lot more convenient if it was fully configurable through command line.

(Besides, how do I tune it to spit out out files like test.e.2.0, not test.par.2.0?)

seacas install error

hi,
My compiler is gcc4.7. I installed seacas software according to the installation manual step by step ,When I execute make&makeinstall command, there are the following errors:
../packages/seacas/libraries/aprepro_lib/apr_util.cc: In function ?. oid SEAMS::math_error(const SEAMS::Aprepro&,const char*)?.:178:9error:?.ath_errhandling?. was not declared in this scope
How can I solve it?Looking forward to reply. thanks.

BUILD_SHARED_LIBS not fully respected

When configuring with

cmake  \
  -DBUILD_SHARED_LIBS:BOOL=ON \
  -DSEACASProj_ENABLE_ALL_PACKAGES:BOOL=ON \
  -DTPL_ENABLE_MPI:BOOL=OFF \
  ../source-upstream/

not all libraries are built dynamically. Check out

[ 37%] Linking C static library libexodus.a
[ 55%] Linking C static library libchaco.a
[ 55%] Linking C shared library libsuplib_c.so
[ 57%] Linking Fortran shared library libsupes.so

versioning scheme

SEACAS's versioning scheme set the SEACAS_VERSION string incorrectly. It is really composed of major and minor version. Compare Trilinos:

SET(Trilinos_VERSION 12.5)
SET(Trilinos_MAJOR_VERSION 12)
SET(Trilinos_MAJOR_MINOR_VERSION 120500)
SET(Trilinos_VERSION_STRING "12.5 (Dev)")

Besides, a YEAR.MONTH scheme seems to be in place. This is probably to immediately recognize if a version is outdated or not.

However, this approach has flaws. One obvious shortcoming is that you cannot make two releases shortly after one another. More importantly, though, SEACAS is missing out on the semantic meaning of major and minor versions. Typically, a major version change indicates an API change, a minor version indicates that functionality has been added in a backwards-compatible way.

SEACASIoss optionally uses but does not declare a TPL dependency on ParMETIS

While working on trilinos/Trilinos#158, I noticed that SEACAS optionally uses ParMETIS but is not properly declaring its dependence on the TriBITS TPL ParMETIS. You can see this by looking at:

$ cd Trilinos/packages/seacas/
$  find . -name CMakeLists.txt -exec grep -nHi parmetis {} \;
./libraries/ioss/src/CMakeLists.txt:16:IF (${PROJECT_NAME}_ENABLE_ParMETIS)
./libraries/ioss/src/CMakeLists.txt:17:  SET(PARMETIS_LIB "parmetis")
./libraries/ioss/src/CMakeLists.txt:19:  ADD_DEFINITIONS(-DNO_PARMETIS_SUPPORT)
./libraries/ioss/src/CMakeLists.txt:41:  ${PARMETIS_LIB}
./libraries/ioss/src/cgns/CMakeLists.txt:12:IF (${PROJECT_NAME}_ENABLE_ParMETIS)
./libraries/ioss/src/cgns/CMakeLists.txt:13:  SET(PARMETIS_LIB "parmetis")
./libraries/ioss/src/cgns/CMakeLists.txt:15:  ADD_DEFINITIONS(-DNO_PARMETIS_SUPPORT)
./libraries/ioss/src/exo_par/CMakeLists.txt:11:IF (${PROJECT_NAME}_ENABLE_ParMETIS)
./libraries/ioss/src/exo_par/CMakeLists.txt:12:  SET(PARMETIS_LIB "parmetis")
./libraries/ioss/src/exo_par/CMakeLists.txt:14:  ADD_DEFINITIONS(-DNO_PARMETIS_SUPPORT)
./libraries/ioss/src/exo_par/CMakeLists.txt:31:  DEPLIBS Ioss Ioex ${PARMETIS_LIB}

There are a few problems with this approach:

  1. The SEACASIoss CMakeLists.txt files have to manually pull in the ParMETIS libs. If you list the TPL dependence in Dependencies.cmake, then those libs will be included automatically when the TPL is enabled.
  2. SEACASIoss assumes the library name is "parametis" but that may not always be the case on every system. Letting the TriBITS TPL system handle this allows the user to point to whatever libraries that need to that supply ParMETIS.
  3. A user can't disable support for just ParMETIS in SEACAS if there is some problem on some platform. For example, other Trilinos packages also optionally use ParMETIS like Zoltan, Zoltan2, Amesos, Amesos2, ML and ShyLU. Let's say that there is some problem building SEACAS with the certain version of ParMETIS installed on some platform but the other packages build with this version of ParMETIS just fine. In this case, the user may not need to use ParMETIS with SEACAS but they do need ParMETIS with a subset of these other packages. By having SEACAS properly declare an optional dependency on ParMETIS, the user can configure with -DSEACASIoss_ENABLE_ParMETIS=OFF and then they can still build and do what they need. With the current setup of SEACASIoss, they can't do that.

To fix this:

  1. List ParaMETIS in the file seacas/libraries/ioss/cmake/Dependencies.cmake in the list LIB_OPTIONAL_LIBS
  2. Remove the CMakeList.txt code that directly adds the library "parametis"

For more documentation on optional TPLs, see:

snapshotting into Trilinos

Now that SEACAS is on GitHub, we can think about how to make it easy to snapshot this repo into Trilinos. @bartlettroscoe has something in place for TriBits and I think this is working pretty smooth. The general storyline would be the following:

  • Create a base TriBITS project called SEACASProj or something, and then have the base directory organized like:

    seacas/
      ProjectName.cmake   # SET(PROJECT_NAME SEACASProj)
      PackagesList.cmake  # List two packages, Zoltan, and SEACAS
      TPLsList.camke      # Same as now
      packages/
        seacas/           # Main source for the SEACAS pacakge
        zoltan/           # Snapshot of Zoltan/ dir from Trilinos
      TPL/                # Only externally built TPLs
        cgns/
        …
        serial_mpi/        
      …
    

    The rest of the directories would be the same.

  • With this layout, the directory seacas/packages/seacas/ would be directly snapshotted into Trilinos like:

    $ export SEACAS_PROJ=???
    $ cd Trilinos/package/seacas/
    $ ../../cmake/tribits/python_utils/shapshot-dir.py --orig-dir=$SEACUS_PROJ/packages/seacus/
  • Then run the checkin-test.py script to push.

Bonus Level

If we want to allow for local changes to SEACAS in Trilinos, we should snapshot to a branch and them merge like:

$ cd Trilinos/package/seacas/
$ git checkout --track origin/seacas-github-snapshot
$ ./snapshot_seacas.sh
$ git push   # to origin/seacas-github-snapshot
$ git checkout master
$ git merge --no-ff seacas

That will allow for local urgent changes to seacas/ in the Trilinos ‘master’ branch to not get overwritten by the snapshot. The process for moving changes from Trilinos/packages/secacas/ to seacas/packages/seacas/ would require using git format-patch and git am and it would be more fragile because there is no root commit to resolve merge conflicts.

This is about the exactly same workflow used for TriBITS. It is the same in that a subdir from a separate repo is snapshotted into a directory under Trilinos. That part is exactly the same.

We can also test changes before the snapshot into Trilinos with:

    -DSEACAS_SOURCE_DIR=$SEACAS_PROJ/packages/seacas

src/doc-source/exodus/old/

The folder

src/doc-source/exodus/old/

contains apparently obsolete files, and also some binaries. Yikes! Those files will be in Git history for all time, so if they are actually obsolete, they could as well be git rmed.

MPI + serial NetCDF: fatal error: netcdf_par.h: No such file or directory

When

-D TPL_ENABLE_Netcdf:BOOL=ON \

and a serial installation of NetCDF is found and MPI is turned on, the build fails with

[ 77%] Building C object src/libraries/exodus/cbind/CMakeFiles/exodus.dir/src/ex_create_par.c.o
cd /home/nschloe/software/seacas/build/src/libraries/exodus/cbind && /usr/bin/mpicc  -DNOT_NETCDF4 -Dexodus_EXPORTS -pedantic -Wall -Wno-long-long -std=c99 -fPIC -I/home/nschloe/software/seacas/build -I/home/nschloe/software/seacas/source-upstream/src/libraries/exodus/cbind/include -I/home/nschloe/software/seacas/build/src/libraries/exodus/cbind/include    -o CMakeFiles/exodus.dir/src/ex_create_par.c.o   -c /home/nschloe/software/seacas/source-upstream/src/libraries/exodus/cbind/src/ex_create_par.c
/home/nschloe/software/seacas/source-upstream/src/libraries/exodus/cbind/src/ex_create_par.c:130:24: fatal error: netcdf_par.h: No such file or directory
 #include "netcdf_par.h"
                        ^
compilation terminated.

This should probably be intercepted at configure stage.

Bring back exodus tar files

I'm dismayed to find the Exodus release tar files have been purged from sourceforge. Are these archived somewhere else? I'd be looking for the last one made, I suppose. The seacas package is way too big to be including as a distributed TPL when all that is wanted is exodus.

Errors due to missing "-lcurl" linker flag

I think SEACAS depends on curl, but does not automatically add -lcurl during compilation. For instance, I was getting the following errors

Linking Fortran executable gen3d
../../libraries/exodus/libexodus.so.12.9: undefined reference to `curl_easy_perform'
../../libraries/exodus/libexodus.so.12.9: undefined reference to `curl_easy_getinfo'
../../libraries/exodus/libexodus.so.12.9: undefined reference to `curl_easy_init'
../../libraries/exodus/libexodus.so.12.9: undefined reference to `curl_easy_strerror'
../../libraries/exodus/libexodus.so.12.9: undefined reference to `curl_version_info'
../../libraries/exodus/libexodus.so.12.9: undefined reference to `curl_easy_cleanup'
../../libraries/exodus/libexodus.so.12.9: undefined reference to `curl_easy_setopt'
collect2: error: ld returned 1 exit status

I have a proper /usr/lib64/libcurl.so but it was not picked up because of the missing -lcurl for executable linking.

The current workaround for me is to add the following to my CMake configuration:

-D CMAKE_EXE_LINKER_FLAGS="-lcurl"

Exodus-Matlab Idea / Question -- Cell Arrays

Gregory,

I have a feature / implementation idea for the exo2mat and mat2exo functions. My idea revolves around how to implement variables what have their index in their name (e.g. blkXX, gvarXX, nvarXX, evarXX, ssfacXX etc)

If I want to loop through my variables I currently do one of two things:

clear
load('sample_output_matlab.mat');  %nnvars = 15
  1. This method uses the eval function to create a temporary variable for me to operate on. Of course, while the eval function does the job, it is clunky to use in this manner and can’t be compiled (always interpreted). http://www.mathworks.com/help/matlab/matlab_prog/string-evaluation.html
%% Method 2
for ii = 1:nnvars
    varData = eval(['nvar' sprintf('%02d',ii) ';'])
end
  1. What I prefer to do is to transfer all the pertinent variables to cell arrays.
%% Method 3
% Convert nvarXX into an indexable cell array
NVAR = cell(nnvars,1);
for ii = 1:nnvars
    NVAR{ii} = eval(['nvar' sprintf('%02d',ii) ';'])
    eval(['clear nvar' sprintf('%02d',ii)])
end
% Can loop through variables serially
for ii = 1:nnvars
    varData = NVAR{ii};
end
% Can loop through variables in parallel
parfor ii = 1:nnvars
    varData = NVAR{ii};
end

In the workspace this would look like this:
image

As opposed to this:
image

In addition to functionality, I like that it cleans up my workspace (Condenses hundreds of nvars, evars, gvars, ssfacs, ssnodes, sselems, blks etc into fewer variable icons)

Would it be possible to have exo2mat generate cell-arrays for the relevant variables? And could mat2exo convert .mat files with cell arrays? Maybe through a command line flag?

(I think it’s still good to list variables in the current manner, as I think it’s more accessible for “light-users” of Matlab who may not be accustomed to cell arrays.)

Best Regards,
G------ V-----

how to enable all packages?

Perhaps @bartlettroscoe can help out here: I'm trying to enable all SEACAS packages, I tried

  -DSEACASProj_ENABLE_ALL_PACKAGES:BOOL=ON \
  -DSEACASProj_ENABLE_ALL_OPTIONAL_PACKAGES:BOOL=ON \
  -DSEACASProj_ENABLE_SECONDARY_TESTED_CODE:BOOL=ON \

With this, however, I'm still getting

Final set of non-enabled SE packages:  SEACASSVDI SEACASPLT SEACASBlot SEACASFastq 4

I'm not even sure if I need all of the parameters above.

gen3d - mirroring does not work for wedge elements with sidesets

Greg,
Revisiting our gen3d discussion from November…

As we work to set up our Trinity open science runs, it turns out that our workflow would benefit by having mirroring as an option for our extrusions of wedge elements (or alternatively the option to extrude in the +z direction). I did try mirroring and it mangles the side sets on the extruded mesh. This is not urgent since we do have a workaround, but I wanted to document the behavior since you will probably want to provide mirroring for this use case at some point.

Matt

exodus.py: script-with-language-extension, executable-not-elf-or-script

The file

usr/bin/exodus.py

triggers two Debian warnings:

The first states that for executables, it should not matter for the user in which language it is written. That's why you won't find any *.* files in /usr/bin of your usual Linux installation.
The second is related to that, and can be fixed by adding the appropriate shebang to the top of the file, i.e.,

#!/usr/bin/env python

error: unknown type name ‘ZOLTAN_ID_PTR’

I'm getting build errors of the kind

In file included from /home/nschloe/software/seacas/source-upstream/packages/zoltan/src/tpls/parmetis_interface.h:53:0,
                 from /home/nschloe/software/seacas/source-upstream/packages/zoltan/src/tpls/parmetis_interface.c:52:
/home/nschloe/software/seacas/source-upstream/packages/zoltan/src/tpls/third_library_const.h:249:31: error: unknown type name ‘ZOLTAN_ID_PTR’

for a while now. One configuration to reproduce the error:

cmake  \
  -DBUILD_SHARED_LIBS:BOOL=ON \
  -DSEACASProj_ENABLE_ALL_PACKAGES:BOOL=ON \
  -DSEACASProj_ENABLE_ALL_OPTIONAL_PACKAGES:BOOL=ON \
  -DSEACASProj_ENABLE_SECONDARY_TESTED_CODE:BOOL=ON \
  -DSEACASProj_ENABLE_TESTS:BOOL=ON \
  -DSEACASProj_USE_GNUINSTALLDIRS:BOOL=ON \
  -DHDF5_ROOT:PATH=/usr \
  \
  -DTPL_ENABLE_CGNS:BOOL=ON \
  -DTPL_ENABLE_Matio:BOOL=ON \
  -DTPL_ENABLE_METIS:BOOL=ON \
  -DTPL_ENABLE_ParMETIS:BOOL=ON \
  -DTPL_ENABLE_Netcdf:BOOL=ON \
  -DTPL_ENABLE_MPI:BOOL=OFF \
  -DTPL_ENABLE_Pamgen:BOOL=OFF \
  -DTPL_ENABLE_X11:BOOL=OFF \
  -DTPL_ENABLE_Zlib:BOOL=ON \
  \
  ../source-upstream/

(Can probably be shortened.)

Undefined symbols for architecture x86_64: "_ex_create_int", referenced from: _main in main.oError when trying the ex_create function

Below is a simple main function to test the ex_create_int api function from the exodus libarary, howver I got the error , and it is really strange i "_ex_create_int" undefined symbols, I am suspecting it is this underscore in front of ex_create_int is giving me problem , I also try the other function ex_open , ex_close , and all these giving me the similar message .

#include
#include "exodusII.h"
using namespace std;

int main() {

float version;
int CPU_word_size = sizeof(float);
int IO_word_size = 8;
int exoid= ex_create("./test.exo",
EX_CLOBBER,
&CPU_word_size,
&IO_word_size);
}

Error Message :
g++ main.o -o output -fopenmp
Undefined symbols for architecture x86_64:
"_ex_create_int", referenced from:
_main in main.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
make: *** [output] Error 1

Exodus fails to build

I was directed here from https://sourceforge.net/projects/exodusii/, which says

As of 2016-02-08, this project may now be found at https://github.com/gsjaardema/seacas.git.

However, when I tried to build exodus as before:

cd packages/seacas/libraries/exodus
mkdir -p _build
cd _build
(
export CPPFLAGS="-I${CMAKE_DIR}/include -I${CURL_DIR}/include -I${HDF5_DIR}/include -I${MPI_DIR}/include -I${NETCDF4_DIR}/include -I${OPENSSL_DIR}/include -I${PATCHELF_DIR}/include -I${PYTHON_DIR}/include -I${TRILINOS_DIR}/include -I${ZLIB_DIR}/include"
export LDFLAGS="-L${CMAKE_DIR}/lib -Wl,-rpath=${CMAKE_DIR}/lib -L${CURL_DIR}/lib -Wl,-rpath=${CURL_DIR}/lib -L${HDF5_DIR}/lib -Wl,-rpath=${HDF5_DIR}/lib -L${MPI_DIR}/lib -Wl,-rpath=${MPI_DIR}/lib -L${NETCDF4_DIR}/lib -Wl,-rpath=${NETCDF4_DIR}/lib -L${OPENSSL_DIR}/lib -Wl,-rpath=${OPENSSL_DIR}/lib -L${PATCHELF_DIR}/lib -Wl,-rpath=${PATCHELF_DIR}/lib -L${PYTHON_DIR}/lib -Wl,-rpath=${PYTHON_DIR}/lib -L${TRILINOS_DIR}/lib -Wl,-rpath=${TRILINOS_DIR}/lib -L${ZLIB_DIR}/lib -Wl,-rpath=${ZLIB_DIR}/lib"
${CMAKE} -DCMAKE_INSTALL_PREFIX:PATH="${ARTIFACT}" \
  -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON \
  -DCMAKE_INSTALL_RPATH:STRING="${ARTIFACT}/lib" \
  -DCMAKE_INSTALL_RPATH_USE_LINK_PATH:BOOL=ON \
  -DCMAKE_BUILD_TYPE:STRING=Release \
  -DCMAKE_PREFIX_PATH="${CMAKE_DIR};${CURL_DIR};${HDF5_DIR};${MPI_DIR};${NETCDF4_DIR};${OPENSSL_DIR};${PATCHELF_DIR};${PYTHON_DIR};${TRILINOS_DIR};${ZLIB_DIR}" \
  -D BUILD_SHARED=ON -D NETCDF_SO_ROOT:PATH="${NETCDF4_DIR}/lib" -D PYTHON_INSTALL:PATH="${ARTIFACT}/lib/python2.7/site-packages" \
  ..
)
${CMAKE} --build . -- -j ${HASHDIST_CPU_COUNT}
make install

it fails to build now:

[exodus] -- The C compiler identification is GNU 5.3.1
[exodus] -- The CXX compiler identification is GNU 5.3.1
[exodus] -- Check for working C compiler: /usr/bin/cc
[exodus] -- Check for working C compiler: /usr/bin/cc -- works
[exodus] -- Detecting C compiler ABI info
[exodus] -- Detecting C compiler ABI info - done
[exodus] -- Detecting C compile features
[exodus] -- Detecting C compile features - done
[exodus] -- Check for working CXX compiler: /usr/bin/c++
[exodus] -- Check for working CXX compiler: /usr/bin/c++ -- works
[exodus] -- Detecting CXX compiler ABI info
[exodus] -- Detecting CXX compiler ABI info - done
[exodus] -- Detecting CXX compile features
[exodus] -- Detecting CXX compile features - done
[exodus] CMake Error at CMakeLists.txt:1 (INCLUDE):
[exodus]   include could not find load file:
[exodus] 
[exodus]     TribitsSubPackageMacros
[exodus] 
[exodus] 
[exodus] CMake Error at CMakeLists.txt:2 (INCLUDE):
[exodus]   include could not find load file:
[exodus] 
[exodus]     TribitsLibraryMacros
[exodus] 
[exodus] 
[exodus] CMake Error at CMakeLists.txt:3 (TRIBITS_SUBPACKAGE):
[exodus]   Unknown CMake command "TRIBITS_SUBPACKAGE".
[exodus] 
[exodus] 
[exodus] CMake Warning (dev) in CMakeLists.txt:
[exodus]   No cmake_minimum_required command is present.  A line of code such as
[exodus] 
[exodus]     cmake_minimum_required(VERSION 3.4)
[exodus] 
[exodus]   should be added at the top of the file.  The version specified may be lower
[exodus]   if you wish to support older CMake versions for this project.  For more
[exodus]   information run "cmake --help-policy CMP0000".
[exodus] This warning is for project developers.  Use -Wno-dev to suppress it.
[exodus] 
[exodus] -- Configuring incomplete, errors occurred!
[exodus] See also "/home/certik/.hashdist/tmp/exodus-c7scl5mgwd6o/packages/seacas/libraries/exodus/_build/CMakeFiles/CMakeOutput.log".

I tested the commit 2bceb5e. Note that the file http://downloads.sourceforge.net/project/exodusii/exodus-6.09.tar.gz used to work just fine with the above procedure, but it's gone now...

The cmake error is caused by the fact that this line:

https://github.com/gsjaardema/seacas/blob/9dc57a31536194216c36167714450781a8b95db8/packages/seacas/libraries/exodus/CMakeLists.txt#L1

assumes that the CMakeLists.txt is part of some larger project which includes the TribitsSubPackageMacros macro. This line in the README:

https://github.com/gsjaardema/seacas/blob/9dc57a31536194216c36167714450781a8b95db8/packages/seacas/libraries/exodus/README#L29

suggests that it is possible to use cmake to build exodus. Is that still possible? If exodus can't be build as a standalone library anymore, then I think that's a major problem.

Add nodal variable to exodus file with exodus.py

I'm trying to add a nodal variable to an exodus file that has pre-existing nodal variables with the exodus python wrapper.

It appears that the "set_node_variable_number" function can only succeed when no nodal variable files exist in the file.

The traceback follows:
File "/home/acochrane/goma/TPL_exp/seacas/lib/exodus.py", line 4956, in add_variables exo.set_node_variable_number(n_vars)
File "/home/acochrane/goma/TPL_exp/seacas/lib/exodus.py", line 905, in set_node_variable_number self.__ex_put_variable_param(ndType, number)
File "/home/acochrane/goma/TPL_exp/seacas/lib/exodus.py", line 4337, in __ex_put_variable_param raise Exception, ("ERROR: ex_put_variable_param had problems. This can only be called once per varType.")
Exception: ERROR: ex_put_variable_param had problems. This can only be called once per varType.

Intermediate solution is to:

  1. create a new file with the resulting number of variables
  2. copy the old variables in
  3. copy the new variable in

Beam sideset in exodus

There have been no requests for this until today. It wouldn’t take too long to implement with side 1 being nodes 1 to 2 and side 2 being nodes 2 to 1. I think that the Ioss already does this since you could already store this in exodus, you just couldn’t get it to give you the nodes or node count…

I will add as an enhancement request on the SEACAS github site. You could have Joel Miller add a trac enhancement if you want to track it internally.

..Greg

Greg,
I don't think the exodus manual has a definition for a sideset on a beam. Is that supported? Is it in the works?
-Garth

test failures

When building SEACAS with

cmake  \
  -D SEACAS_ENABLE_ALL_PACKAGES:BOOL=ON \
  -D SEACAS_ENABLE_TESTS:BOOL=ON \
  -D BUILD_SHARED_LIBS:BOOL=ON \
  -D TPL_ENABLE_CGNS:BOOL=OFF \
  -D TPL_ENABLE_Matio:BOOL=ON \
  -D TPL_ENABLE_METIS:BOOL=ON \
  -D TPL_ENABLE_ParMETIS:BOOL=ON \
  -D TPL_ENABLE_Netcdf:BOOL=ON \
  -D TPL_ENABLE_MPI:BOOL=OFF \
  -D TPL_ENABLE_Pamgen:BOOL=OFF \
  -D TPL_ENABLE_X11:BOOL=OFF \
  -D TPL_ENABLE_Zlib:BOOL=ON \
  ../source-nschloe/

I get a bunch of failing tests:

$ ctest
[...]
The following tests FAILED:
      5 - Zoltan_ch_bug_parmetis_serial (Failed)
     13 - Zoltan_ch_ewgt_parmetis_serial (Failed)
     15 - Zoltan_ch_grid20x19_parmetis_serial (Failed)
     17 - Zoltan_ch_hammond_parmetis_serial (Failed)
     23 - Zoltan_ch_nograph_parmetis_serial (Failed)
     25 - Zoltan_ch_onedbug_parmetis_serial (Failed)
     29 - Zoltan_ch_simple_parmetis_serial (Failed)
     33 - Zoltan_ch_vwgt_parmetis_serial (Failed)
     35 - Zoltan_ch_vwgt2_parmetis_serial (Failed)
     49 - Zoltan_problemGRAPH (OTHER_FAULT)

See https://launchpadlibrarian.net/223760348/buildlog_ubuntu-xenial-amd64.seacas_15.10~201510301340-xenial1_BUILDING.txt.gz for more details.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.