Git Product home page Git Product logo

aaronjamesreynolds / gidiplus Goto Github PK

View Code? Open in Web Editor NEW

This project forked from llnl/gidiplus

0.0 0.0 0.0 16.1 MB

C++ libraries for accessing nuclear data from the Generalized Nuclear Database Structure (GNDS)

License: MIT License

Makefile 3.63% C++ 55.26% DIGITAL Command Language 0.04% Python 3.55% C 31.77% TeX 4.54% MATLAB 0.01% Mathematica 0.01% Logos 0.01% Shell 0.01% Roff 0.02% Cuda 1.16%

gidiplus's Introduction

GIDI+

GIDI+ is a collection of C++ libraries for accessing evaluated and processed nuclear data stored in the Generalized Nuclear Database Structure (GNDS). In addition to reading GNDS files, GIDI+ has functions to sum and collapse multi-group data as needed by deterministic transport codes, and to sample GNDS data as needed by Monte Carlo transport codes.

Dependency

GIDI+ requires the third party library pugixml version 1.8. If pugixml is not already present in the GIDI+ Misc directory, download it from https://pugixml.org/2016/11/24/pugixml-1.8-release.html and place it in the 'Misc' folder.

GIDI+ can also be configured to use HDF5 version 1.8 or greater. This option is useful for speeding up data load times in large processed GNDS files, where raw data can be split out and stored in HDF5 format in an 'externalFile'.

Installation

To clone the GIDI+ Git repository the following command is recommended:

git clone https://github.com/LLNL/gidiplus.git
  or, if you have an account on github with an SSH key:
git clone [email protected]:LLNL/gidiplus.git

If desired, obtain test datafiles from the 'Assets' list at https://github.com/LLNL/gidiplus/releases/tag/v3.22.23. Those files are not included in the repo to keep the size down. They should be unpacked into gidiplus/GIDI/Test/Data before running 'make check'.

Currently, GIDI+ uses the unix make command to build and puts needed header and library files into the include and lib directories, respecitively. Important targets in the Makefile are:

Target Description
default: Builds libgidiplus.a (and all other libraries) and puts them into the 'lib' directory. Puts all needed header files into the 'include' directory.
install: Copies the header files from the 'include' directory to '$(PREFIX)/include'. Copies all '.a' from the 'lib' directory to '$(PREFIX)/lib.'
check: Runs the tests in all the sub-libraries. This target requires that the test data have been installed.
realclean: Returns GIDI+ back to its initial state (i.e., removes all files created by the other targets).

Generally, to build or test GIDI+ one only needs to set the -std=c++11 option for the C++ compiler. For building, this would look like:

make -s CXXFLAGS="-std=c++11"

For running the tests, this would look like:

make -s CXXFLAGS="-std=c++11" check

One may specify the CC and CXX compilers and their flags when building. For example,

make default CC=g++ CXX=g++ CXXFLAGS="-std=c++11 -g -O3" CFLAGS="-std=gnu11 -g -O3"

To put the results into the path /path/to/my/builds, execute

make install CC=gcc CXX=g++ CXXFLAGS="-std=c++11 -g -O3" CFLAGS="-std=gnu11 -g -O3" PREFIX=/path/to/my/builds

If one is using mixed XML/HDF5 GNDS files, HDF5 must be included when building and linking. This is done by specifying the location of HDF5 with the HDF5_PATH macro. For example, if HDF5 is installed on the system, them the following may work:

make -s CXXFLAGS="-std=c++11" HDF5_PATH=/usr

On some systems, the default HDF5 library was compiled for 32-bit execution. To link in with a 64-bit library one also needs to specify the path to the 64-bit libraries. For example,

make -s CXXFLAGS="-std=c++11" HDF5_PATH=/usr HDF5_LIB=/usr/lib64

Comments for compiling on LLNL LC systems:

A set of bash scripts for building on LC systems can be found in the Scripts directory. These scripts first define some environment varibles before executing make.

Working with Git submodules

LLNL uses git submodules for internal development of GIDI+. While the version on github has submodules merged into a single repository, gidiplus_version.h still stores commit hashes for each submodule to identify commits and help with possible debugging.

License

GIDI+ is distributed under the terms of the MIT license.

All new contributions must be made under the MIT license.

See LICENSE, COPYRIGHT and NOTICE for details.

SPDX-License-Identifier: MIT

This package includes several components:
LLNL-CODE-778320 (GIDI+)

LLNL-CODE-770917 (GIDI)
LLNL-CODE-790397 (MCGIDI)
LLNL-CODE-771182 (statusMessageReporting)
LLNL-CODE-770377 (PoPI)
LLNL-CODE-770134 (numericalFunctions)

GIDI+ is a product of the Nuclear Data and Theory Group at Lawrence Livermore National Laboratory (LLNL).

This work was performed under the auspices of the U.S. Department of Energy by Lawrence Livermore National Laboratory under Contract DE-AC52-07NA27344.

gidiplus's People

Contributors

mattooca avatar mathnerd314 avatar

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.