Search NASA⌕ Search

SEARCH · Search NASA

Results for “Programming Language”

Search indexed NASA NTRS and DOE OSTI research on propulsion, heat transfer, battery materials and energy systems. Follow report and document links to the original sources.

Quote a phrase for an exact phrase match. Source license links do not imply unrestricted reuse.

At least 343 records · Page 19

Evaluation of CHO Benchmarks on the Arria 10 FPGA using Intel FPGA SDK for OpenCL

The OpenCL standard is an open programming model for accelerating algorithms on heterogeneous computing system. OpenCL extends the C-based programming language for developing portable codes on different platforms such as CPU, Graphics processing units (GPUs), Digital Signal Processors (DSPs) and Field Programmable Gate Arrays (FPGAs). The Intel FPGA SDK for OpenCL is a suite of tools that allows developers to abstract away the complex FPGA-based development flow for a high-level software development flow. Users can focus on the design of hardware-accelerated kernel functions in OpenCL and then direct the tools to generate the low-level FPGA implementations. The approach makes the FPGA-based development more accessible to software users as the needs for hybrid computing using CPUs and FPGAs are increasing. It can also significantly reduce the hardware development time as users can evaluate different ideas with high-level language without deep FPGA domain knowledge. Benchmarking of OpenCL-based framework is an effective way for analyzing the performance of system by studying the execution of the benchmark applications. CHO is a suite of benchmark applications that provides support for OpenCL [1]. The authors presented CHO as an OpenCL port of the CHStone benchmark. Using Altera OpenCL (AOCL) compiler to synthesize the benchmark applications, they listed the resource usage and performance of each kernel that can be successfully synthesized by the compiler. In this report, we evaluate the resource usage and performance of the CHO benchmark applications using the Intel FPGA SDK for OpenCL and Nallatech 385A FPGA board that features an Arria 10 FPGA device. The focus of the report is to have a better understanding of the resource usage and performance of the kernel implementations using Arria-10 FPGA devices compared to Stratix-5 FPGA devices. In addition, we also gain knowledge about the limitations of the current compiler when it fails to synthesize a benchmark application.

97 MATHEMATICS AND COMPUTING↗

Fragment Impact Toolkit (FIT)

The Fragment Impact Toolkit (FIT) is a software package used for probabilistic consequence evaluation of fragmenting sources. The typical use case for FIT is to simulate an exploding shell and evaluate the consequence on nearby objects. FIT is written in the programming language Python and is designed as a collection of interacting software modules. Each module has a function that interacts with the other modules to produce desired results.

97 MATHEMATICS AND COMPUTING↗

Solutions for Digital Video Transmission Technology Final Report CRADA No. TC02068.0

This Project aimed at development of software for seismic data processing based on the Geotool code developed by the American company Multimax., Inc. The Geotool code was written in early 90-es for the UNIX platform. Under Project# 2821, functions of the old Geotool code were transferred into a commercial version for the Microsoft XP and Vista platform with addition of new capabilities on visualization and data processing. The developed new version of the Geotool+ was implemented using the up-to-date tool Microsoft Visual Studio 2005 and uses capabilities of the .NET platform. C++ was selected as the main programming language for the Geotool+. The two-year Project was extended by six months and funding levels increased from 600,000 to $670,000. All tasks were successfully completed and all deliverables were met for the project even though both the industrial partner and LLNL principal investigator left the project before its final report.

58 GEOSCIENCES↗

Sensor Placement Optimization using Chama

Continuous or regularly scheduled monitoring has the potential to quickly identify changes in the environment. However, even with low - cost sensors, only a limited number of sensors can be deployed. The physical placement of these sensors, along with the sensor technology and operating conditions, can have a large impact on the performance of a monitoring strategy. Chama is an open source Python package which includes mixed - integer, stochastic programming formulations to determine sensor locations and technology that maximize monitoring effectiveness. The methods in Chama are general and can be applied to a wide range of applications. Chama is currently being used to design sensor networks to monitor airborne pollutants and to monitor water quality in water distribution systems. The following documentation includes installation instructions and examples, description of software features, and software license. The software is intended to be used by regulatory agencies, industry, and the research community. It is assumed that the reader is familiar with the Python Programming Language. References are included for addit ional background on software components. Online documentation, hosted at http://chama.readthedocs.io/, will be updated as new features are added. The online version includes API documentation .

47 OTHER INSTRUMENTATION↗

Status Report on the High-Temperature Steam Electrolysis Plant Model Developed in the Modelica Framework (FY17)

This report has been prepared as part of an effort to design and build a modeling and simulation (M&S) framework to assess the economic viability of a nuclear-renewable hybrid energy system (N-R HES). In order to facilitate dynamic M&S of such an integrated system, research groups in multiple national laboratories have been developing various subsystems as dynamic physics-based components using the Modelica programming language. In fiscal year 2015 (FY15), Idaho National Laboratory (INL) performed a dynamic analysis of two region-specific N-R HES configurations, including the gas-to-liquid (natural gas to Fischer-Tropsch synthetic fuel) and brackish water reverse osmosis desalination plants as industrial processes. In FY16, INL developed two additional subsystems in the Modelica framework: (1) a high-temperature steam electrolysis (HTSE) plant as a high priority industrial plant to be integrated with a light water reactor (LWR) within an N-R HES and (2) a gas turbine power plant as a secondary energy supply. In FY17, five new components (i.e., a feedwater pump, a multi-stage compression system, a sweep-gas turbine, flow control valves, and pressure control valves) have been incorporated into the HTSE system proposed in FY16, aiming to better realistically characterize all key components of concern. Special attention has been given to the controller settings based on process models (i.e., direct synthesis method), aiming to improve process dynamics and controllability. A dynamic performance analysis of the improved LWR/HTSE integration case was carried out to evaluate the technical feasibility (load-following capability) and safety of such a system operating under highly variable conditions requiring flexible output. The analysis (evaluated in terms of the step response) clearly shows that the FY17 model resulted in superior output responses with much smaller settling times and less oscillatory behavior in response to disturbances in the electric load than those observed with the FY16 model. Simulation results involving several case studies show that the suggested control scheme could maintain the controlled variables (including the steam utilization factor, cathode stream inlet composition, and temperatures and pressures of the process streams at various locations) within desired limits under various plant operating conditions. The results also indicate that the proposed HTSE plant could provide operational flexibility to participate in energy management at the utility scale by dynamically optimizing the use of excess plant capacity within an N-R HES.

08 HYDROGEN↗

Data Processor 3 QASPR Project

The following discussion contains a high-level description of methods used to implement software for data processing. It describes the required directory structures and file handling required to use Excel's Visual Basic for Applications programming language and how to identify shot, test and capture types to appropriately process data. It also describes how to interface with the software.

97 MATHEMATICS AND COMPUTING↗

PLATO (Parallel Load Assignment Tool): A Parallel Workload Partitioner for Particle-based Methods

A key first step in many large-scale high-performance scientific computing applications is the distribution of the computational domain across all participating processors of a parallel computing platform such as a shared memory machine, cluster or a tightly-coupled supercomputer. The primary goal of such a partitioning step is to ensure that the computational work performed by each process remains load-balanced throughout the execution of the parallel application. In this project, a general-purpose parallel partitioning tool, code-named PLATO, was designed and implemented. PLATO assumes that the workload is a set of points in an n-dimensional metric space. These points are abstractions of computational units that may represent point-like computational units such as celestial objects in astrophysics, atoms in materials sciences and molecules in biology/chemistry, or may represent more abstract computational units such as grid points in finite difference methods, grid elements in finite element methods or n-dimensional points in the feature space of a host of other applications. PLATO supports several key and useful capabilities, namely: (a) multiple load partitioning strategies, (b) support for arbitrary user-defined processor topology, (c) pre-fetching data from neighboring processors based on user-defined parameters, and (d) support for arbitrary number and types of attributes associated with each point in the computational domain. PLATO is implemented in the C programming language using Message Passing Interface (MPI) for inter-processor communications and its parallel performance tested on up to 48 processors of a shared memory machine. This report includes a detailed performance study of PLATO using parallel speedup and iso-efficiency as the two main metrics of parallel performance. In addition, a user manual and DOXYGEN generated code documentation have been included for completeness.

97 MATHEMATICS AND COMPUTING↗

Water Network Tool for Resilience Version 0.1

Water utilities are vulnerable to a wide variety of human-caused and natural disasters. These disruptive events can result in loss of water service, contaminated water, pipe breaks, and failed equipment. Furthermore, long term changes in water supply and customer demand can have a large impact on the operating conditions of the network. The ability to maintain drinking water service during and following these types of events is critical. Simulation and analysis tools can help water utilities explore how their network will respond to disruptive events and plan effective mitigation strategies. The U.S. Environmental Protection Agency and Sandia National Laboratories are developing new software tools to meet this need. The Water Network Tool for Resilience (WNTR, pronounced winter) is a Python package designed to help water utilities investigate resilience of water distribution systems over a wide range of hazardous scenarios and to evaluate resilience-enhancing actions. The following documentation includes installation instructions and examples, description of software features, and software license. It is assumed that the reader is familiar with the Python Programming Language.

42 ENGINEERING↗

MATLAB Reference [Slides]

These slides are intended to be used as a reference for the MATLAB programming language and development environment.

97 MATHEMATICS AND COMPUTING↗

Advanced Energy System Design (AESD): Technical Manual for the Records API

The Records API (application program interface) for Advanced Energy System Design (AESD) enables software that serves multidimensional record-oriented data to interoperate with software than uses such data. In the context of the Records API, multidimensional data records are simply tuples of real numbers, integers, and character strings, where each data value is tagged by a variable name, according to a pre-defined schema, and each record is assigned a unique integer identifier. Conceptually, these records are isomorphic to rows in a relational database, JSON objects, or key-value maps. Records servers might supply static datasets, sensor measurements that periodically update as new telemetry become available, or the results of simulations as the simulations generate new output. Records client software might display or analyze the data, but in the case of simulations the client request the creation of new ensembles for specified input parameters. It is also possible to chain records clients and servers together so that a client consuming data from a server might transform that data and serve it to further clients. This minimalist API avoids imposing burdensome metadata, structural, or implementation requirements on developers by relying on open-source technologies that is readily available for common programming languages. In particular, the API has been designed to place the smallest possible burden on services that provide data. This document defines the message format for the Records API, a transport mechanism for communicating the data, and semantics for interpreting it. The message format is specified as Google Protocol Buffers and the transport mechanism uses WebSockets. We discuss three major use cases for serving and consuming records data: (i) static data, (ii) dynamically augmented data, (iii) on-demand simulations, (iv) with filters, and (v) with bookmarks. Separate implementations of the API exist in C++, Haskell, JavaScript, Python, and R.

97 MATHEMATICS AND COMPUTING↗

Status Report on the Component Models Developed in the Modelica Framework: Reverse Osmosis Desalination Plant & Thermal Energy Storage

This report has been prepared as part of an effort to design and build a Modeling and Simulation (M&S) framework to assess the economic viability of a Nuclear-Renewable Hybrid Energy System (N-R HES). In order to facilitate dynamic M&S of such an integrated system, research groups in multiple national laboratories and universities have been developing various subsystems as dynamic physics-based components using the Modelica programming language. In Fiscal Years (FYs) 2015, Idaho National Laboratory (INL) performed a dynamic analysis of two region-specific N-R HES configurations, including the gas-to-liquid (natural gas to Fischer-Tropsch synthetic fuel) and brackish water Reverse Osmosis (RO) desalination plants as industrial processes. In FYs 2016–2017, INL developed two additional subsystems in the Modelica framework: (1) a high-temperature steam electrolysis plant as a high priority industrial plant to be integrated with a light water reactor within an N-R HES and (2) a gas turbine power plant as a secondary energy supply. In FY 2018, the RO desalination system model developed in FY 2015 has been updated such that the model is compatible with the most recent version of the ThermoPower library. Special attention has been given to the controller settings based on process models, aiming to improve process dynamics and controllability. A dynamic performance analysis of the updated RO desalination plant was carried out to evaluate the technical feasibility (load-following capability) of such a system operating under highly variable conditions requiring flexible output. Simulation results involving several case studies show that the suggested control scheme could maintain the controlled variables (including the variable electrical load and RO feed pressure) within desired limits under various plant operating conditions. The results also indicate that the proposed RO plant could provide operational flexibility to participate in energy management at the utility scale by dynamically optimizing the use of excess plant capacity within an N-R HES. For a small-scale energy storage system, a sensible Thermal Energy Storage (TES) model has been developed in the Modelica Framework in FY 2018.

25 ENERGY STORAGE↗

A simple json format for storing and exchanging code calculation and experimental results

Calculation codes and code systems give their results in a plethora of different formats and/or files. For instance, MCNP gives a user the MCNP specific output file, the mctal file, the ptrac file, etc. while PARTISN has a PARTISN specific output file and a number of binary files with various kinds of information about the calculation. However, the results we are interested in are always the same. These can be single values such as the effective multiplication factor k eff or the effective delayed neutron fraction β eff . It can be histogram data (such as particle spectra, reaction rates, sensitivity profiles, etc.) or even pointwise data (for example the nuclide composition as a function of time, etc.). It is also worthwhile to note that this would also apply to experimental data that we may wish to compare with as well. Calculation and experimental results can basically be split into two components: attributes (or metadata) and the actual result itself. Attributes represent information about the result that are not necessarily required for its’ interpretation but that are still good to have. Often, these attributes are what we will want to filter results on. This means that these attributes are often the answer to specific questions we may have about the result. The following is a non exhaustive list of such basic questions: what type of result is it: e.g. the effective multiplication factor k eff , the effective delayed neutron fraction β eff , etc.; which case does it relate to: e.g. a specific ICSBEP case such as PU-MET-FAST-001-001; which code and version produced this result: e.g. MCNP 6.2, etc.; which nuclear data library was used to obtain the result: e.g. ENDF/B-VIII.0 or JEFF 3.3; which nuclide and reaction does it apply to (for reaction rates and sensitivity profiles); which volume in the geometry was it calculated in? The second component of the calculation or experimental result is the actual numerical data of the result. It is this data that we want to compare, exchange, plot, interpret, etc. It consists of values with optional uncertainties and units. It also includes the underlying structure (if any structure is required to interpret the result). Depending on the type of result, it may be a single value (e.g. the effective multiplication factor), an array of values (e.g. a reaction rate or particle spectrum) or even a multidimensional array. In order to exchange results between different organisations, for instance for benchmarking, people often resort to spreadsheets or custom text files that need to be filled out. While this approach works well if little information is to be exchanged, it can become cumbersome when dealing with large amounts of data (like for instance particle spectra for thousands of cases). In addition, such an approach does not always capture the metadata we may be interested in to allow for automated processing of these files. The purpose of this report is to propose a standardised json structure to store any type of result and present an associated python interface to interact with these results directly. For such a structure to be useful, it must fulfill a specific set of functional requirements that we try to meet with this proposal. The format must allow for the calculation result to stand by itself. This means that we should not have to look in multiple places to be able to understand it. For example, if the result relates to a particle spectrum, the group structure in which the result is given should be stored with it. The format should be code agnostic. This means that we do not need to know where it came from to understand it. The format should be result type agnostic. This means that the format must be generic enough so that we can even use it for results we have not thought of yet. The format should be relatively easy to interact with through different scripting or programming languages (i.e. the machine interface) while still providing a clean structure that can be used directly by any human.

97 MATHEMATICS AND COMPUTING↗

Performance Monitoring using Pecos (V.0.1)

Advances in sensor technology have rapidly increased our ability to monitor natural and human-made physical systems. In many cases, it is critical to process the resulting large volumes of data on a regular schedule and alert system operators when the system has changed. Automated quality control and performance monitoring can allow system operators to quickly detect performance issues. Pecos is an open source python package designed to address this need. Pecos includes built-in functionality to monitor performance of time series data. The software can be used to automatically run a series of quality control tests and generate customized reports which include performance metrics, test results, and graphics. The software was developed specifically for solar photovoltaic system monitoring, and is intended to be used by industry and the research community. The software can easily be customized for other applications. The following Pecos documentation includes installation instructions and examples, description of software features, and software license. It is assumed that the reader is familiar with the Python Programming Language. References are included for additional background on software components.

47 OTHER INSTRUMENTATION↗

CRADA Final Report: Open Microgrid Platform

Current microgrid control technology is mostly proprietary, expensive, and inflexible. An open-source, vendor-neutral, publish-subscribe controller will significantly lower the barrier to entry for new technologies and market entrants: inverter, battery, and load control manufacturers; cloud and services providers; and energy aggregators. An OpenFMB controller can significantly reduce the acquisition, integration, and ongoing operating and maintenance costs and increase revenue opportunities for energy producers and consumers. It allows distributed energy resource (DER) owners to replace individual DER components as richer-function, lower-cost devices become available or to incorporate new forecast and optimization algorithms as they are developed. A standard, secure, full-function DER field controller will also provide a low-cost means for grid operators to effectively manage the variability and uncertainty of solar photovoltaics (PV). Under the terms of this CRADA, ORNL has worked with Open Energy Solutions (OES) to advance the transition of ORNL’s existing open-source microgrid controller into a platform geared toward mainstream implementation. Using a more prevalent and memory-safe programming language, Rust, OES has converted ORNL’s current generation on-grid optimization into an application more suitable for industry use. The results of the ported optimization were analyzed by inputting the same arguments in both the current-generation and next-generation optimizers and verifying that the results were equivalent.

24 POWER TRANSMISSION AND DISTRIBUTION↗

The GABLE Report: Garbled Autonomous Bots Leveraging Ethereum

Simple but mission-critical internet-based applications that require extremely high reliability and availability could potentially benefit from running on robust public programmable blockchain platforms such as Ethereum. Unfortunately, program code running on such blockchains is ordinarily publicly viewable, rendering these platforms unsuitable for applications requiring strict privacy of application code, data, and results. However, might it be possible to encode an application's business logic and data for these platforms in such a way that it becomes impossible for unauthorized parties to infer any meaningful information whatsoever about the semantics of the data, and the operations being performed on that data? In this report, we describe GABLE (Garbled Autonomous Bots Leveraging Ethereum), a system concept developed at Sandia that achieves this security goal in a limited, but still useful range of circumstances. GABLE, uses simple but effective algorithms to permit secure private execution of garbled state machines (and more efficient garbled circuits) on public computing resources. We give an example working implementation for garbled state machines, written using the Python and Solidity programming languages, and outline how our methods can be extended to support a more powerful garbled universal circuit model of computation. The capability embodied by the GABLE, system has significant potential applications, a few of which we discuss in this report.

97 MATHEMATICS AND COMPUTING↗

CpRad User's Manual

This is the reference manual for users of the C programming language based proton Radiography simulation package CpRad, pronounced "see p-rad." These simulations are developed and maintained by Los Alamos National Laboratory personnel. Currently there are threaded versions, versions written for MPI, as well as versions that use GPUs. The fundamentals of our proton radiography model are well described in a review. The ray tracing in CpRad also includes the incident angle of the protons based on position in the field of view due to the matching conditions.

73 NUCLEAR PHYSICS AND RADIATION PHYSICS↗

Reimagining Codesign for Advanced Scientific Computing: Report for the ASCR Workshop on Reimagining Codesign

In March 2021, the U.S. Department of Energy’s Advanced Scientific Computing Research program convened the Workshop on Reimagining Codesign. The workshop, also known as ReCoDe, was organized around discussions on eight topic areas: (1) codesign for traditional high-performance computing workloads; (2) codesign of memory/storage systems; (3) codesign of machine learning, neuromorphic, quantum, and other non-von Neumann accelerators; (4) codesign for edge computing and processing at experimental instruments; (5) codesign for security and privacy; (6) hardware design tools and open-source hardware for high-productivity codesign; (7) tools, software stack, and programming languages for high-productivity codesign; and (8) quantitative tools and data collection for modeling and simulation for codesign. The panels identified four Priority Research Directions from these deliberations: (1) breakthrough computing capabilities with targeted heterogeneity and rapid design; (2) software and applications that embrace radical architecture diversity; (3) engineered security and integrity, from transistors to applications; and (4) design with data-rich processes.

97 MATHEMATICS AND COMPUTING↗

Rattlesnake User's Manual

Rattlesnake is a combined-environments, multiple input/multiple output control system for dynamic excitation of structures under test. It provides capabilities to control multiple responses on the part using multiple exciters using various control strategies. Rattlesnake is written in the Python programming language to facilitate multiple input/multiple output vibration research by allowing users to prescribe custom control laws to the controller. Rattlesnake can target multiple hardware devices, or even perform synthetic control to simulate a test virtually. Rattlesnake has been used to execute control problems with up to 200 response channels and 12 drives. This document describes the functionality, architecture, and usage of the Rattlesnake controller to perform combined environments testing.

97 MATHEMATICS AND COMPUTING↗