Code indexing in gitaly is broken and leads to code not being visible to the user. We work on the issue with highest priority.

Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • OPAL/src
  • zheng_d/src
  • ext-rogers_c/src
  • ext-wang_c/src
  • cortes_c/src
  • ext-calvo_p/src
  • ext-edelen_a/src
  • albajacas_a/src
  • kraus/src
  • snuverink_j/OPAL-src
  • adelmann/src
  • muralikrishnan/src
  • wyssling_t/src
  • gsell/src
  • ext-piot_p/src
  • OPAL/opal-src-4-opalx-debug
  • winkle_m/src
17 results
Show changes
Commits on Source (2636)
Showing
with 564 additions and 1492 deletions
---
Language: Cpp
BasedOnStyle: Google
AccessModifierOffset: -4
AlignAfterOpenBracket: AlwaysBreak
AlignConsecutiveAssignments: true
AllowShortFunctionsOnASingleLine: None
AllowShortIfStatementsOnASingleLine: Never
AllowShortLambdasOnASingleLine: Empty
AllowShortLoopsOnASingleLine: false
BreakBeforeBinaryOperators: NonAssignment
ColumnLimit: 100
DerivePointerAlignment: false
IndentWidth: 4
IncludeBlocks: Preserve
IndentGotoLabels: false
NamespaceIndentation: All
...
(
(nil . (
(indent-tabs-mode . nil)
(require-final-newline . nil)
)
)
(cmake-mode . (
(cmake-tab-width . 4)
)
)
(c-mode . (
(c-basic-offset . 4)
)
)
(c++-mode . (
(c-basic-offset . 4)
)
)
)
This diff is collapsed.
......@@ -2,7 +2,10 @@
*~
*.o
*.a
*.so
*.aux
__pycache__
optimizer/Tests/*.exe
build
CMakeCache.txt
CMakeFiles
......@@ -15,6 +18,7 @@ src/OPALrevision.h
src/opal
tests/tools/gtest
tests/opal_unit_tests
tests/OpalSourcePath.h
doc/user_guide/opal_user_guide.bcf
doc/user_guide/opal_user_guide.idx
doc/user_guide/opal_user_guide.lof
......@@ -24,4 +28,4 @@ doc/user_guide/opal_user_guide.out
doc/user_guide/opal_user_guide.pdf
doc/user_guide/opal_user_guide.run.xml
doc/user_guide/opal_user_guide.synctex.gz
doc/user_guide/opal_user_guide.toc
\ No newline at end of file
doc/user_guide/opal_user_guide.toc
### Summary
(Summarize the bug encountered concisely)
### Steps to reproduce
(How one can reproduce the issue - this is very important)
### What is the current *bug* behavior?
(What actually happens)
### What is the expected *correct* behavior?
(What you should see instead)
### Relevant logs and/or screenshots
(Paste any relevant logs - please use code blocks (```) to format console output,
logs, and code as it's very hard to read otherwise.)
### Possible fixes
(If you can, link to the line of code that might be responsible for the problem)
/label ~Bug
### Summary
(Summarize the feature request concisely)
/label ~"Feature request"
\ No newline at end of file
**source code and binary**
* [ ] create branch YEAR.N
* [ ] create issue "Release version YEAR.N" and merge request
* [ ] update version string in Doxyfile
* [ ] update the version string in CMakeLists.txt and commit
* [ ] wait for approval of MR and merge
* [ ] tag version YEAR.N.0
* [ ] upload source tar-ball to `/afs/psi.ch/project/amas/webhosting/Downloads/OPAL/src`
* [ ] compile new binary for Linux
* [ ] upload Linux binary package to `/afs/psi.ch/project/amas/webhosting/Downloads/OPAL/package/`
* [ ] compile new binary for macOS
* [ ] upload macOS binary package to `/afs/psi.ch/project/amas/webhosting/Downloads/OPAL/package/`
**manual/documentation**
* [ ] setup a new branch for the new version of the manual
* [ ] fix version, branches and links in `Manual.attributes`
* [ ] clone repository into `/afs/psi.ch/project/amas/webhosting/opal/Documentation/x.y` and checkout new branch (`git clone https://gitlab.psi.ch/OPAL/documentation/manual.git`)
* [ ] add links to the binaries in the wiki
* [ ] update https://gitlab.psi.ch/OPAL/src/wikis/For-Developers/Compile-OPAL
* [ ] compile the change log/release notes and publish it in the wiki: https://gitlab.psi.ch/OPAL/src/wikis/ReleaseNotes
* [ ] review the file `src/addToDoxygenMainPage.h`
* [ ] build Doxygen documentation
* [ ] update https://gitlab.psi.ch/OPAL/src/wikis/home
* [ ] update https://gitlab.psi.ch/OPAL/src/wikis/regression-tests
**tracker**
* [ ] new milestone for `OPAL x.(y+1)`
* [ ] update labels and milestones in issues
**regression-tests**
* [ ] create new branch x.y
* [ ] setup the regression-tests to run the new version on opalrunner.psi.ch
**varia**
* [ ] PSI module
* [ ] write e-mail to mailing list
### What does this MR do?
### Does this MR meet the acceptance criteria?
* [ ] [Coding style guidelines](https://gitlab.psi.ch/OPAL/src/wikis/For-Developers/CodingStyle)
* [ ] [Change to Release Notes](https://gitlab.psi.ch/OPAL/src/wikis/ReleaseNotes/ReleaseNotes)
/label ~Bug
### What does this MR do?
### Does this MR meet the acceptance criteria?
* [ ] [Coding style guidelines](https://gitlab.psi.ch/OPAL/src/wikis/For-Developers/CodingStyle)
* [ ] [Change to Release Notes](https://gitlab.psi.ch/OPAL/src/wikis/ReleaseNotes/ReleaseNotes)
* [ ] Documentation added
/label ~"Feature request"
set et ts=4 sw=4 sts=4
\ No newline at end of file
This diff is collapsed.
#
# Find GSL includes and library
# Find GSL includes and libraries
#
# GSL
# It can be found at:
# http://amas.web.psi.ch/tools/GSL/index.html
# The FindGSL module shipped with CMake has some drawbacks. To be
# able to find GSL, the CMake variable GSL_ROOT_DIR *must* be set.
# The environment variable C_INCLUDE_PATH and LIBRARY_PATH are
# *not* taken into account.
#
# The following variables will be set if GSL is found:
#
# GSL_INCLUDE_DIR where to find GSL include files
# GSL_LIBRARY GSL library to link against.
# GSL_CBLAS_LIBRARY GSL CBlas library to link against
# GSL_LIBRARIES GSL libraries required for linking
# GSL_FOUND set to True if GSL was found
#
# GSL_INCLUDE_DIR - where to find ippl.h
# GSL_LIBRARY - qualified libraries to link against.
# GSL_FOUND - do not attempt to use if "no" or undefined.
FIND_PATH(GSL_INCLUDE_DIR gsl/gsl_fft.h
HINTS $ENV{GSL_INCLUDE_PATH} $ENV{GSL_INCLUDE_DIR} $ENV{GSL_PREFIX}/include $ENV{GSL_DIR}/include $ENV{GSL}/include
PATHS ENV CPP_INCLUDE_PATH
)
if( DEFINED ENV{GSL_ROOT_DIR} )
set( GSL_ROOT_DIR $ENV{GSL_ROOT_DIR} )
elseif( DEFINED ENV{GSL_DIR} )
set( GSL_ROOT_DIR $ENV{GSL_DIR} )
elseif( DEFINED ENV{GSL_HOME} )
set( GSL_ROOT_DIR $ENV{GSL_HOME} )
elseif( DEFINED ENV{GSL_PREFIX} )
set( GSL_ROOT_DIR $ENV{GSL_PREFIX} )
elseif( DEFINED ENV{GSL} )
set( GSL_ROOT_DIR $ENV{GSL} )
else()
set( GSL_ROOT_DIR "/usr" )
endif()
FIND_LIBRARY(GSL_LIBRARY gsl
HINTS $ENV{GSL_LIBRARY_PATH} $ENV{GSL_LIBRARY_DIR} $ENV{GSL_PREFIX}/lib $ENV{GSL_DIR}/lib $ENV{GSL}/lib
PATHS ENV LIBRARY_PATH
)
find_path( GSL_INCLUDE_DIR gsl/gsl_fft.h
HINTS ${GSL_ROOT_DIR}/include $ENV{GSL_INCLUDE_PATH} $ENV{GSL_INCLUDE_DIR}
PATHS ENV C_INCLUDE_PATH
)
FIND_LIBRARY(GSL_LIBRARY_CBLAS gslcblas
HINTS $ENV{GSL_LIBRARY_PATH} $ENV{GSL_LIBRARY_DIR} $ENV{GSL_PREFIX}/lib $ENV{GSL_DIR}/lib $ENV{GSL}/lib
PATHS ENV LIBRARY_PATH
)
find_library( GSL_LIBRARY gsl
HINTS ${GSL_ROOT_DIR}/lib $ENV{GSL_LIBRARY_PATH} $ENV{GSL_LIBRARY_DIR}
PATHS ENV LIBRARY_PATH
)
set( GSL_LIBRARY
${GSL_LIBRARY}
${GSL_LIBRARY_CBLAS}
)
find_library (GSL_CBLAS_LIBRARY gslcblas
HINTS ${GSL_ROOT_DIR}/lib $ENV{GSL_LIBRARY_PATH} $ENV{GSL_LIBRARY_DIR}
PATHS ENV LIBRARY_PATH
)
IF(GSL_INCLUDE_DIR AND GSL_LIBRARY)
SET( GSL_FOUND "YES" )
ENDIF(GSL_INCLUDE_DIR AND GSL_LIBRARY)
if( GSL_INCLUDE_DIR AND GSL_LIBRARY AND GSL_CBLAS_LIBRARY)
set( GSL_FOUND "YES" )
set( GSL_LIBRARIES ${GSL_LIBRARY},${GSL_CBLAS_LIBRARY} )
endif()
IF (GSL_FOUND)
IF (NOT GSL_FIND_QUIETLY)
MESSAGE(STATUS "Found GSL libraries: ${GSL_LIBRARY}")
MESSAGE(STATUS "Found GSL include dir: ${GSL_INCLUDE_DIR}")
ENDIF (NOT GSL_FIND_QUIETLY)
ELSE (GSL_FOUND)
IF (GSL_FIND_REQUIRED)
MESSAGE(FATAL_ERROR "Could not find GSL!")
ENDIF (GSL_FIND_REQUIRED)
ENDIF (GSL_FOUND)
if( GSL_FOUND )
if( NOT GSL_FIND_QUIETLY )
message( STATUS "Found GSL libraries: ${GSL_LIBRARY}")
message( STATUS "Found GSL include dir: ${GSL_INCLUDE_DIR}")
endif()
else()
if( GSL_FIND_REQUIRED )
message( FATAL_ERROR "Could not find GSL!" )
endif()
endif()
#
# Find gtest Google Test includes and library
#
# gtest
# It can be found at:
# http://amas.web.psi.ch/tools/GSL/index.html
#
# GTEST_INCLUDE_DIRS - where to find gtest/gtest.h
# GTEST_INCLUDE_DIR - where to find gtest/gtest.h
# GTEST_LIBRARY - libgtest.a path
# GTEST_MAIN_LIBRARY - libgtest_main.a path
# GTEST_FOUND - do not attempt to use if "no" or undefined.
FIND_PATH(GTEST_INCLUDE_DIRS gtest/gtest.h
HINTS $ENV{GTEST_INCLUDE_PATH} $ENV{GTEST_INCLUDE_DIRS} $ENV{GTEST_PREFIX}/include $ENV{GTEST_ROOT}/include ${PROJECT_SOURCE_DIR}/tests/tools/gtest/include
FIND_PATH(GTEST_INCLUDE_DIR gtest/gtest.h
HINTS $ENV{GTEST_INCLUDE_PATH} $ENV{GTEST_INCLUDE_DIR} $ENV{GTEST_PREFIX}/include $ENV{GTEST_ROOT}/include ${PROJECT_SOURCE_DIR}/tests/tools/gtest/include
PATHS ENV CPP_INCLUDE_PATH
)
......@@ -30,14 +26,26 @@ set( GTEST_BOTH_LIBRARIES
${GTEST_LIBRARY_MAIN}
)
IF(GTEST_INCLUDE_DIRS AND GTEST_LIBRARY AND GTEST_LIBRARY_MAIN)
set (GTEST_INCLUDE_DIRS
${GTEST_INCLUDE_DIR}
)
set (GTEST_MAIN_LIBRARIES
${GTEST_LIBRARY_MAIN}
)
set (GTEST_LIBRARIES
${GTEST_LIBRARY}
)
IF(GTEST_INCLUDE_DIR AND GTEST_LIBRARY AND GTEST_LIBRARY_MAIN)
SET( GTEST_FOUND "YES" )
ENDIF(GTEST_INCLUDE_DIRS AND GTEST_LIBRARY AND GTEST_LIBRARY_MAIN)
ENDIF()
IF (GTEST_FOUND)
IF (NOT GTEST_FIND_QUIETLY)
MESSAGE(STATUS "Found gtest libraries: ${GTEST_BOTH_LIBRARIES}")
MESSAGE(STATUS "Found gtest include dir: ${GTEST_INCLUDE_DIRS}")
MESSAGE(STATUS "Found gtest include dir: ${GTEST_INCLUDE_DIR}")
ENDIF (NOT GTEST_FIND_QUIETLY)
ELSE (GTEST_FOUND)
IF (GTest_FIND_REQUIRED)
......
......@@ -43,9 +43,3 @@ IF (HAVE_API2_FUNCTIONS)
ELSE (HAVE_API2_FUNCTIONS)
MESSAGE (ERROR "H5hut >= 2 required")
ENDIF (HAVE_API2_FUNCTIONS)
# Local Variables:
# mode:cmake
# cmake-tab-width: 4
# indent-tabs-mode:nil
# End:
#
# Find HDF5 includes and library
#
# HDF5
# It can be found at:
# http://amas.web.psi.ch/tools/HDF5/index.html
#
# HDF5_INCLUDE_DIR - where to find hdf5.h
# HDF5_LIBRARY - qualified libraries to link against.
# HDF5_FOUND - do not attempt to use if "no" or undefined.
SET(CMAKE_FIND_LIBRARY_SUFFIXES .lib .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
FIND_PATH(HDF5_INCLUDE_DIR hdf5.h
HINTS $ENV{HDF5_INCLUDE_PATH} $ENV{HDF5_INCLUDE_DIR} $ENV{HDF5_PREFIX}/include $ENV{HDF5_DIR}/include $ENV{HDF5}/include
PATHS ENV C_INCLUDE_PATH
)
FIND_LIBRARY(HDF5_LIBRARY libhdf5.a
HINTS $ENV{HDF5_LIBRARY_PATH} $ENV{HDF5_LIBRARY_DIR} $ENV{HDF5_PREFIX}/lib $ENV{HDF5_DIR}/lib $ENV{HDF5}/lib
PATHS ENV LIBRARY_PATH
)
IF(HDF5_INCLUDE_DIR AND HDF5_LIBRARY)
SET( HDF5_FOUND "YES" )
ENDIF(HDF5_INCLUDE_DIR AND HDF5_LIBRARY)
IF (HDF5_FOUND)
IF (NOT HDF5_FIND_QUIETLY)
MESSAGE(STATUS "Found HDF5 library: ${HDF5_LIBRARY}")
MESSAGE(STATUS "Found HDF5 include dir: ${HDF5_INCLUDE_DIR}")
ENDIF (NOT HDF5_FIND_QUIETLY)
ELSE (HDF5_FOUND)
IF (HDF5_FIND_REQUIRED)
MESSAGE(FATAL_ERROR "Could not find HDF5!")
ENDIF (HDF5_FIND_REQUIRED)
ENDIF (HDF5_FOUND)
#
# Find MITHRA package
# https://github.com/aryafallahi/mithra
#
# MITHRA_INCLUDE_DIR
# MITHRA_LIBRARY_DIR
# MITHRA_FOUND
find_path (MITHRA_INCLUDE_DIR mithra/classes.h
HINTS $ENV{MITHRA_INCLUDE_DIR} $ENV{MITHRA_INCLUDE_PATH} $ENV{MITHRA_PREFIX}/include $ENV{MITHRA}/include
)
find_path (MITHRA_LIBRARY_DIR libmithra.a
HINTS $ENV{MITHRA_LIBRARY_DIR} $ENV{MITHRA_LIBRARY_PATH} $ENV{MITHRA_PREFIX}/lib $ENV{MITHRA}/lib
)
if (MITHRA_INCLUDE_DIR AND MITHRA_LIBRARY_DIR)
set (MITHRA_FOUND "YES")
endif ()
if (MITHRA_FOUND)
if (NOT MITHRA_FIND_QUIETLY)
message (STATUS "Found MITHRA include dir: ${MITHRA_INCLUDE_DIR}")
message (STATUS "Found MITHRA library dir: ${MITHRA_LIBRARY_DIR}")
endif ()
else (MITHRA_FOUND)
if (MITHRA_FIND_REQUIRED)
if (NOT MITHRA_INCLUDE_DIR)
message (WARNING
"MITHRA include directory was not found! "
"Make sure that MITHRA is compiled and that "
"the directory mithra/include/mithra has been automatically created. "
"Also make sure that at least one of the following "
"environment variables is set: "
"MITHRA_INCLUDE_DIR, MITHRA_INCLUDE_PATH, MITHRA_PREFIX, or MITHRA.")
endif ()
if (NOT MITHRA_LIBRARY_DIR)
message (WARNING
"MITHRA library was not found! "
"Make sure that MITHRA is compiled and that "
"the directory mithra/lib has been automatically created. "
"Also make sure that at least one of the following "
"environment variables is set: "
"MITHRA_LIBRARY_DIR, MITHRA_LIBRARY_PATH, MITHRA_PREFIX, or MITHRA.")
endif ()
message (STATUS "MITHRA can be downloaded and compiled from https://github.com/aryafallahi/mithra.git")
message (FATAL_ERROR "Could not find MITHRA!")
endif (MITHRA_FIND_REQUIRED)
endif (MITHRA_FOUND)
File mode changed from 100755 to 100644
......@@ -38,7 +38,7 @@ PROJECT_NAME = "OPAL (Object Oriented Parallel Accelerator Library)"
# could be handy for archiving the generated documentation or if some version
# control system is used.
PROJECT_NUMBER = "2.0.0"
PROJECT_NUMBER = "2024.2"
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
......@@ -51,7 +51,7 @@ PROJECT_BRIEF = "OPAL"
# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo
# to the output directory.
PROJECT_LOGO =
PROJECT_LOGO =
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
# into which the generated documentation will be written. If a relative path is
......@@ -764,10 +764,9 @@ WARN_LOGFILE =
# spaces.
# Note: If this tag is empty the current directory is searched.
INPUT = ./src \
./src/Classic \
./ippl/src \
./opt-pilot
INPUT = @CMAKE_SOURCE_DIR@/src \
@CMAKE_SOURCE_DIR@/ippl/src \
@CMAKE_SOURCE_DIR@/optimizer
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
......@@ -787,15 +786,8 @@ INPUT_ENCODING = UTF-8
# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
# *.qsf, *.as and *.js.
FILE_PATTERNS = *.c \
*.cpp \
*.cc \
*.h \
*.hh \
*.H \
*.f90 \
*.hpp
FILE_PATTERNS = *.c* \
*.h*
# The RECURSIVE tag can be used to specify whether or not subdirectories should
# be searched for input files as well.
......@@ -1417,7 +1409,7 @@ EXT_LINKS_IN_WINDOW = NO
# Minimum value: 8, maximum value: 50, default value: 10.
# This tag requires that the tag GENERATE_HTML is set to YES.
FORMULA_FONTSIZE = 10
FORMULA_FONTSIZE = 15
# Use the FORMULA_TRANPARENT tag to determine whether or not the images
# generated for formulas are transparent PNGs. Transparent PNGs are not
......@@ -1439,7 +1431,7 @@ FORMULA_TRANSPARENT = YES
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
USE_MATHJAX = NO
USE_MATHJAX = YES
# When MathJax is enabled you can set the default output format to be used for
# the MathJax output. See the MathJax site (see:
......@@ -1469,7 +1461,7 @@ MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
# This tag requires that the tag USE_MATHJAX is set to YES.
MATHJAX_EXTENSIONS =
MATHJAX_EXTENSIONS = AMSmath AMSsymbols
# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
# of code that will be used on startup of the MathJax code. See the MathJax site
......@@ -1625,7 +1617,8 @@ PAPER_TYPE = a4wide
# This tag requires that the tag GENERATE_LATEX is set to YES.
EXTRA_PACKAGES = amsfonts, \
amssymb
amssymb, \
amsmath
# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
# generated LaTeX document. The header should contain everything until the first
......@@ -1675,7 +1668,7 @@ PDF_HYPERLINKS = YES
# The default value is: YES.
# This tag requires that the tag GENERATE_LATEX is set to YES.
USE_PDFLATEX = NO
USE_PDFLATEX = YES
# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
# command to the generated LaTeX files. This will instruct LaTeX to keep running
......@@ -2328,4 +2321,4 @@ GENERATE_LEGEND = YES
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_CLEANUP = YES
\ No newline at end of file
DOT_CLEANUP = YES
LICENSES/OPAL/LICENSE
\ No newline at end of file
AMReX Copyright (c) 2017, The Regents of the University of California,
through Lawrence Berkeley National Laboratory and the Alliance for
Sustainable Energy, LLC., through National Renewable Energy Laboratory
(subject to receipt of any required approvals from the U.S. Dept. of
Energy). All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
(1) Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
(2) Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
(3) Neither the name of the University of California, Lawrence
Berkeley National Laboratory, Alliance for Sustainable Energy, LLC.,
National Renewable Energy Laboratory, U.S. Dept. of Energy nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
You are under no obligation whatsoever to provide any bug fixes,
patches, or upgrades to the features, functionality or performance of
the source code ("Enhancements") to anyone; however, if you choose to
make your Enhancements available either publicly, or directly to
Lawrence Berkeley National Laboratory or National Renewable Energy
Laboratory, without imposing a separate written license agreement for
such Enhancements, then you hereby grant the following license: a
non-exclusive, royalty-free perpetual license to install, use, modify,
prepare derivative works, incorporate into other computer software,
distribute, and sublicense such enhancements or derivative works
thereof, in binary and source code form.