Skip to content

Commit

Permalink
Prepare for the release of draco-7_1_0.
Browse files Browse the repository at this point in the history
  • Loading branch information
KineticTheory committed Feb 23, 2019
1 parent a93b533 commit 9713f2f
Show file tree
Hide file tree
Showing 19 changed files with 360 additions and 158 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

cmake_minimum_required(VERSION 3.11.0 FATAL_ERROR)
project( Draco
VERSION 7.0
VERSION 7.1
DESCRIPTION "An object-oriented component library supporting radiation transport applications."
LANGUAGES CXX C )

Expand Down
335 changes: 260 additions & 75 deletions ChangeLog

Large diffs are not rendered by default.

96 changes: 57 additions & 39 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,12 @@ Draco
[![Latest Version](https://img.shields.io/github/release/lanl/draco.svg?style=flat-square)](https://github.com/lanl/Draco/releases)
[![PyPI](https://img.shields.io/pypi/l/Django.svg)](https://github.com/lanl/Draco/blob/develop/LICENSE.md)

Draco is an object-oriented component library geared towards
numerically intensive, radiation (particle) transport applications
built for parallel computing hardware. It consists of
semi-independent packages and a robust build system. The packages in
draco provide a set of components that can be used by multiple clients
to build transport codes. The build system can also be extracted for
use in clients.
Draco is an object-oriented component library geared towards numerically
intensive, radiation (particle) transport applications built for parallel
computing hardware. It consists of semi-independent packages and a robust build
system. The packages in draco provide a set of components that can be used by
multiple clients to build transport codes. The build system can also be
extracted for use in clients.

To clone draco:

Expand All @@ -26,47 +25,63 @@ the [Style Guide](https://github.com/lanl/Draco/wiki/Style-Guide).
Synopsis of Active Draco Packages
---------------------------------

* RTT_Format_Reader - mesh container and services
* c4 - Communications library that wraps MPI
* cdi - Get access to material data
* The Common Data Interface specifies an common abstraction for objects and libraries that return material data (opacities, atomic cross sections, equation-of-state data, etc.)
* c4 - A communications library for message passing interfaces (MPI).
* For builds without MPI, all communication commnds will be no-op functions
(`DRACO_C4={MPI;SCALAR}`).
* cdi - Access to material data. The Common Data Interface (CDI) specifies a
common abstraction for objects and libraries that return material data
(opacities, atomic cross sections, equation-of-state data, etc.)
* cdi_analytic - Analytic models for physical data
* cdi_eospac - Equation-of-State data
* This class wraps the EOSPAC6 libraries. The interface inherits from CDI/EOS.hh and can be used as a stand alone component or as a plug-in to CDI. To make the component available you must set in your environment or in the CMakeCache.txt the variable EOSPAC_LIB_DIR to the path to libeospac.a
* These classes wrap the EOSPAC6 libraries that read sesame files; Commonly
used to access gray opacity data and heat capacities.
(`EOSPAC_LIB_DIR=<path>`).
* cdi_ipcress - Gray and multigroup opacities
* The classes in this component will read and parse opacity values from an IPCRESS file produced by TOPS. The component presents this data through various accessors. The interface inherits from CDI/Opacity.hh and can be used as a stand alone component or as a plug-in to CDI.
* The classes in this component will read and parse opacity values from an
IPCRESS file produced by TOPS.
* compton - Provides access to Compton scattering models and data as provided
by the CSK library.
* device - Wrapper for heterogeneous device communication
* The classes in this component provide access to DaCS and CUDA calls for use on heterogeneous architecture platforms (Roadrunner or GPU machines).
* diagnostics - CPP macros that are activated at compile time that can provide additional diagnostic verbosity during calculations.
* ds++ - Basic services
* Array containers, assertion and Design-by-Contract, Ffle system information, path manipulation, unit test system, etc.
* fit - Least squares fit
* The classes in this component provide access to DaCS (deprecated) and CUDA
calls for use on heterogeneous architecture platforms (GPU machines).
* diagnostics - CPP macros that are activated at compile time that can provide
additional diagnostic verbosity during calculations.
* ds++ - Basic services and data structures library.
* Array containers, assertion and Design-by-Contract, access to low level OS
functions, file and path manipulation, unit test system, etc.
* fit - Least squares fitting routines.
* fpe_trap - Catch IEEE floating point exceptions
* FortranCheck - Test Fortran compatibility and interoperability
* The examples in this component will demonstrate if the Fortran compiler is working; if Fortran/C interlanguage linking/running is working and sample ISO_C_BINDING calls.
* lapack_wrap - BLAS and LAPACK functionality for C++
* linear - linear equations
* Routines to solve small systems of linear equations.
* meshReaders - Read RTT format mesh files.
* lapack_wrap - C++ wrapper for BLAS and LAPACK.
* linear - direct solvers for small linear systems of equations.
* mesh - Encapsulate mesh definition and accessors.
* mesh_element - Provide a description of unstructured mesh. Used by meshReaders and RTT_Format_Reader.
* min - Optimizaiton routines. Find the minimum of a function.
* mesh_element - defines fundamental mesh element types used by mesh,
meshReaders and RTT_Format_Reader.
* meshReaders - Read RTT format mesh files.
* min - Optimization routines. Find the minimum of a function.
* norms - Calculate norms for data sets.
* ode - Ordinary differential equation solvers.
* parser - Lexical file parser.
* plot2d - Generate GNU plot 2-dimensional plots.
* quadrature - Get access to quadrature data
* Provides a creator class to generate quadrature objects. Quadrature objects encapsulate discrete ordinates angular differencing methods and data. Also provide service functions that are commonly used.
* ode - Ordinary differential equation solvers (e.g.: Runge-Kutta).
* parser - Lexical file/input parser.
* plot2d - C++ interface to XMGrace 2-dimensional plotting.
* quadrature - access to angular integration functions and related data.
* rng - A random number generator component
* The primary set of functions provided by this component were derived from Random123 (https://www.deshawresearch.com/downloads/download_random123.cgi) random number library. A few additional random number generators are also provided.
* roots - Root solvers
* The primary set of functions provided by this component were derived from
Random123 (https://www.deshawresearch.com/downloads/download_random123.cgi)
random number library. A few additional random number generators are also
provided.
* roots - Root finding algorithms
* RTT_Format_Reader - meshReaders implementation for RTT format mesh files or
input-streams.
* shared_lib - Dynamically load/unload shared object libraries via dl load
* special_functions - Specialized math functions like factorial and Dirac delta.
* timestep - An object-oriented class that encapsulates a time step controller.
* traits - A traits class used by viz.
* units:
* Provides units standardization for Draco. Contains Units class for representing arbitrary systems and converting quantities to SI units.
* viz - Generates Ensight files for data vizualization.
* units - Provides encapsulated unit systems, functions to convert between unit
systems and physical constants.
* VendorChecks - A testing component to ensure that discovered and used vendor
libraries behave as expected.
* viz - Generates Ensight files for data visualization.

Authors
----------------
Expand All @@ -75,12 +90,15 @@ Many thanks go to Draco's [contributors](https://github.com/lanl/Draco/graphs/co
Draco was originally written by staff from Los Alamos's [CCS-2 Computational Physics and Methods Group](http://www.lanl.gov/org/padste/adtsc/computer-computational-statistical-sciences/computational-physics-methods/index.php):

> *CCS-2 Draco Team:* Kelly G. Thompson, Kent G. Budge, Ryan T. Wollaeger,
> James S. Warsa, Alex R. Long, Kendra P. Keady, Jae H. Chang,
> Matt A. Cleveland, Andrew T. Till, Tim Kelley, and Kris C. Garrett.
> James S. Warsa, Alex R. Long, Kendra P. Keady, Jae H. Chang,
> Matt A. Cleveland, Andrew T. Till, and Tim Kelley.
> *Prior Contributers:* Jeff D. Densmore, Gabriel M. Rockefeller,
> Allan B. Wollaber, Rob B. Lowrie, Lori A. Pritchett-Sheats,
> Paul W. Talbot, and Katherine J. Wang.
> *Prior Contributers:* Gabriel M. Rockefeller, Allan B. Wollaber,
> Lori A. Pritchett-Sheats, Rob B. Lowrie, Paul W. Talbot, Katherine J. Wang,
> Peter Ahrens, Daniel Holladay, Jeff D. Densmore, Massimiliano Rosa,
> Todd J. Urbatsch, Jeff Furnish, John McGhee, Kris C. Garrett, Mike Buksas,
> Nick Myers, Paul Henning, Randy Roberts, Seth Johnson, Todd Adams, and
> Tom Evans.
Release
----------------
Expand Down
6 changes: 4 additions & 2 deletions regression/ccscs2-crontab
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,11 @@

05 00 * * 0-6 /scratch/regress/draco/regression/regression-master.sh -r -b Release -d Nightly -p \"draco jayenne core trt npt\"

00 02 * * 0-6 /scratch/regress/draco/regression/regression-master.sh -a -r -b Debug -d Nightly -p \"draco jayenne core trt npt\" -e coverage
00 02 * * 0-6 /scratch/regress/draco/regression/regression-master.sh -r -b Debug -d Nightly -p \"draco jayenne core trt npt\"

30 04 * * 0-6 /scratch/regress/draco/regression/regression-master.sh -r -b Debug -d Nightly -p \"draco jayenne core trt npt\" -e valgrind
00 04 * * 0-6 /scratch/regress/draco/regression/regression-master.sh -a -r -b Debug -d Nightly -p \"draco jayenne core trt npt\" -e coverage

30 05 * * 0-6 /scratch/regress/draco/regression/regression-master.sh -r -b Debug -d Nightly -p \"draco jayenne core trt npt\" -e valgrind

# | | | | | |
# | | | | | +- command
Expand Down
2 changes: 1 addition & 1 deletion regression/scripts/cray-env.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ fi
case $ddir in

#------------------------------------------------------------------------------#
draco-7_0_0 )
draco-7_0_0 | draco-7_1_0)
function intel1802env()
{
if [[ ${CRAY_CPU_TARGET} == mic-knl ]]; then
Expand Down
2 changes: 1 addition & 1 deletion regression/scripts/cts-env.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
case $ddir in

#------------------------------------------------------------------------------#
draco-6_25_0 | draco-7_0_0 )
draco-6_25_0 | draco-7_0_0 | draco-7_1_0)
function intel1802env()
{
export VENDOR_DIR=/usr/projects/draco/vendors
Expand Down
2 changes: 1 addition & 1 deletion regression/scripts/release_cray.sh
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

# Draco install directory name (/usr/projects/draco/draco-NN_NN_NN)
export package=draco
ddir=draco-7_0_0
ddir=draco-7_1_0
pdir=$ddir

# environment (use draco modules)
Expand Down
2 changes: 1 addition & 1 deletion regression/scripts/release_cts.sh
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

# Draco install directory name (/usr/projects/draco/draco-NN_NN_NN)
export package=draco
ddir=draco-7_0_0
ddir=draco-7_1_0
pdir=$ddir

# release for each environment listed
Expand Down
6 changes: 3 additions & 3 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,9 @@ if( NOT DEFINED ENV{APPVEYOR} )
if( HAVE_Fortran )
add_dir_if_exists( FortranChecks )
endif()
if( NOT DEFINED ENV{TRAVIS} )
add_dir_if_exists( cdi_eospac ) # needs parser, ode, cdi
endif()
endif()

# Level 4
Expand All @@ -84,9 +87,6 @@ message( STATUS "Configuring Level 4 packages --" )
add_dir_if_exists( special_functions ) # needs roots, units, GSL
add_dir_if_exists( cdi_analytic ) # needs parser, roots, ode, cdi
add_dir_if_exists( RTT_Format_Reader) # needs meshReaders
if( NOT DEFINED ENV{APPVEYOR} AND NOT DEFINED ENV{TRAVIS} )
add_dir_if_exists( cdi_eospac ) # needs parser, ode, cdi
endif()

# Level 5
message(" ")
Expand Down
3 changes: 1 addition & 2 deletions src/RTT_Format_Reader/test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,9 @@ file( GLOB mesh_input_files *.mesh.in )
# Build Unit tests
# ---------------------------------------------------------------------------- #

set(test_deps Lib_RTT_Format_Reader Lib_mesh_element Lib_dsxx )
add_scalar_tests(
SOURCES "${test_sources}"
DEPS "${test_deps}" )
DEPS "Lib_RTT_Format_Reader" )

# ---------------------------------------------------------------------------- #
# Copy input files to test directory (binary_dir)
Expand Down
3 changes: 1 addition & 2 deletions src/c4/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ add_component_library(
target_include_directories( Lib_c4
PUBLIC $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}> )

# xthi binary
# xthi, ythi binaries
if( NOT APPLE )
add_subdirectory( bin )
endif()
Expand All @@ -72,7 +72,6 @@ endif()
# ---------------------------------------------------------------------------- #
# Autodoc
# ---------------------------------------------------------------------------- #

process_autodoc_pages()

#------------------------------------------------------------------------------#
Expand Down
4 changes: 2 additions & 2 deletions src/c4/Termination_Detector.hh
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ namespace rtt_c4 {
* in advance how much work must be done on each processor. One example of an
* indeterminate algorithm is traversal of a directed graph that may have
* cycles. A processor performing such a sweep cannot know in advance whether
* all of its nodes will be visited by the traversal, which makes the
* traversal indeterminate.
* all of its nodes will be visited by the traversal, which makes the traversal
* indeterminate.
*
* The code is used as follows: Every time a processor is able to make
* progress on the computation (as measured in arbitrary units of work) the
Expand Down
5 changes: 1 addition & 4 deletions src/c4/test/tstTermination_Detector.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,7 @@
* \author Kent Budge
* \date Tue Sep 21 11:45:44 2004
* \note Copyright (C) 2016-2019 Triad National Security, LLC.
* All rights reserved.
*/
//---------------------------------------------------------------------------//

* All rights reserved. */
//---------------------------------------------------------------------------//

#include "c4/ParallelUnitTest.hh"
Expand Down
2 changes: 1 addition & 1 deletion src/compton/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ if( TARGET COMPTON::compton )

add_component_library(
TARGET Lib_compton
TARGET_DEPS "Lib_c4;Lib_dsxx;COMPTON::compton"
TARGET_DEPS "Lib_c4;COMPTON::compton"
LIBRARY_NAME compton
SOURCES "${sources}"
HEADERS "${headers}" )
Expand Down
28 changes: 14 additions & 14 deletions src/ds++/Release.cc
Original file line number Diff line number Diff line change
Expand Up @@ -102,28 +102,28 @@ const std::string author_list(bool const use_doxygen_formatting) {
mmdevs current_developers;
// not totally fair... KT got credit for LOC when svn repository was converted
// to git.
current_developers.insert(fomdev(228253, "Kelly G. Thompson"));
current_developers.insert(fomdev(12695, "Kent G. Budge"));
current_developers.insert(fomdev(3464, "Ryan T. Wollaeger"));
current_developers.insert(fomdev(2993, "James S. Warsa"));
current_developers.insert(fomdev(2626, "Alex R. Long"));
current_developers.insert(fomdev(1261, "Kendra P. Keady"));
current_developers.insert(fomdev(206531, "Kelly G. Thompson"));
current_developers.insert(fomdev(13729, "Kent G. Budge"));
current_developers.insert(fomdev(3445, "Ryan T. Wollaeger"));
current_developers.insert(fomdev(2851, "James S. Warsa"));
current_developers.insert(fomdev(2788, "Alex R. Long"));
current_developers.insert(fomdev(1260, "Kendra P. Keady"));
current_developers.insert(fomdev(398, "Jae H. Chang"));
current_developers.insert(fomdev(241, "Matt A. Cleveland"));
current_developers.insert(fomdev(120, "Andrew T. Till"));
current_developers.insert(fomdev(61, "Tim Kelley"));
current_developers.insert(fomdev(243, "Matt A. Cleveland"));
current_developers.insert(fomdev(179, "Andrew T. Till"));
current_developers.insert(fomdev(60, "Tim Kelley"));

mmdevs prior_developers;

prior_developers.insert(fomdev(4868, "Jeff D. Densmore"));
prior_developers.insert(fomdev(4057, "Gabriel M. Rockefeller"));
prior_developers.insert(fomdev(2278, "Allan B. Wollaber"));
prior_developers.insert(fomdev(1450, "Rob B. Lowrie"));
prior_developers.insert(fomdev(4037, "Gabriel M. Rockefeller"));
prior_developers.insert(fomdev(2237, "Allan B. Wollaber"));
prior_developers.insert(fomdev(995, "Lori A. Pritchett-Sheats"));
prior_developers.insert(fomdev(308, "Paul W. Talbot"));
prior_developers.insert(fomdev(528, "Rob B. Lowrie"));
prior_developers.insert(fomdev(307, "Paul W. Talbot"));
prior_developers.insert(fomdev(262, "Katherine J. Wang"));
prior_developers.insert(fomdev(78, "Peter Ahrens"));
prior_developers.insert(fomdev(25, "Daniel Holladay"));
prior_developers.insert(fomdev(19, "Jeff D. Densmore"));
prior_developers.insert(fomdev(9, "Massimiliano Rosa"));
prior_developers.insert(fomdev(7, "Todd J. Urbatsch"));

Expand Down
2 changes: 1 addition & 1 deletion src/meshReaders/test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ file( GLOB mesh_input_files *.mesh.in )

add_scalar_tests(
SOURCES "${test_sources}"
DEPS "Lib_meshReaders;Lib_dsxx" )
DEPS "Lib_meshReaders" )

# ---------------------------------------------------------------------------- #
# Copy mesh files to test directory (binary_dir)
Expand Down
2 changes: 1 addition & 1 deletion src/min/test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ file( GLOB input_files *.inp )

add_scalar_tests(
SOURCES "${test_sources}"
DEPS "Lib_min;Lib_linear;Lib_dsxx" )
DEPS "Lib_min;Lib_linear" )

# ---------------------------------------------------------------------------- #
# Copy input files to test directory (binary_dir)
Expand Down
3 changes: 2 additions & 1 deletion src/norms/test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ file( GLOB test_sources *.cc )
add_parallel_tests(
SOURCES "${test_sources}"
PE_LIST "1;2"
DEPS "Lib_norms;${MPI_CXX_LIBRARIES};${PAPI_LIBRARY}" )
# DEPS "Lib_norms;${MPI_CXX_LIBRARIES};${PAPI_LIBRARY}" )
DEPS "Lib_norms;${PAPI_LIBRARY}" )

#------------------------------------------------------------------------------#
# End norms/test/CMakeLists.txt
Expand Down
13 changes: 7 additions & 6 deletions src/quadrature/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ file( GLOB f90sources *.f90 )

add_component_library(
TARGET Lib_quadrature
TARGET_DEPS "Lib_special_functions;Lib_parser;Lib_mesh_element;GSL::gsl"
TARGET_DEPS "Lib_special_functions;Lib_parser;Lib_mesh_element"
LIBRARY_NAME ${PROJECT_NAME}
SOURCES "${sources}"
HEADERS "${headers};${f90sources}"
Expand All @@ -44,17 +44,18 @@ if( BUILD_TESTING )
add_subdirectory( test )

if( HAVE_Fortran )
# For Unix, this will simply run add_subdirectory(ftest). For MVSE or
# XCode, an ExternalProject will be created that uses an alternate gfortran
# via Makefiles to generate the library external to the main project.
# For Unix, this will simply run add_subdirectory(ftest). For MVSE or XCode,
# an ExternalProject will be created that uses an alternate gfortran via
# Makefiles to generate the library external to the main project.
include(CMakeAddFortranSubdirectory)

# CMake does not support storing a list of lists when sending data to a
# macro. Because Draco_TPL_INCLUDE_DIRS is a list and we want to stuff it
# into the list build_system_state, recode Draco_TPL_INCLUDE_DIRS by
# replacing semicolons with triple underscores. The list will be
# reconstructed in the subdirectory's CMakeLists.txt.
string( REGEX REPLACE ";" "___" tmp "${Draco_TPL_INCLUDE_DIRS};${MPI_Fortran_INCLUDE_PATH}")
string( REGEX REPLACE ";" "___" tmp
"${Draco_TPL_INCLUDE_DIRS};${MPI_Fortran_INCLUDE_PATH}")

# The alternate build system (Makefiles if we are Apple/OSX or Linux/Ninja)
# will need some of the current build system parameters:
Expand All @@ -80,7 +81,7 @@ if( BUILD_TESTING )
# Creates target named 'quadrature_ftest_build'
ARCHIVE_DIR ftest # .lib location relative to root binary tree
RUNTIME_DIR ftest # .dll location relative to root binary tree
LIBRARIES rtt_quadrature_ftest # Sub project will create a library with this name.
LIBRARIES rtt_quadrature_ftest # new library will have this name.
# --> librtt_FC_f90.dll.
TARGET_NAMES Lib_quadrature_ftest
DEPENDS "Lib_quadrature_test;Lib_quadrature;Lib_dsxx"
Expand Down

0 comments on commit 9713f2f

Please sign in to comment.