Software can be compiled and linked from source code on different operating systems having supported the programming language and compilation platform. This is usually a task for the skilled program developers; and typical users, and developers in academic environment lack the required skills to create a portable source platform. Lack of portability of research codes usually is a result of having the platform set for using a single platform external library, not handling difference of compilers on different operating systems, or designing the code for a specific hardware. Hence, running these codes on another platform requires times, and resources from the user to setup a similar environment as the development environment to compile the code. Software Hub, on the other hand, uses an easy to setup plug-and-play system using Autoconf tools that allows users to plug their existing libraries into the platform or download the necessary library for their platform of choice from Software Cloud repository. The installation script can scan the system for compatible hardware, and possible libraries to inform users from missing dependencies. Developers of Software hub were able to reduce the number of external dependent libraries needed on the system to only Git, Cmake and a choice of C/C++ compilers (Intel, Gnu, Clang). The code is actively tested on Mac, Linux and Win10 platforms to give users the maximum flexibility in choosing their desired platform.
Usability, or the ease of use, is the degree to which a software can be used by users to achieve their objectives with effectiveness, efficiency, and satisfaction in the context of use. Software Hub creates a user-friendly environment in which users can interact with code and customize the behavior of the software using a text script/XML command file. Commands which are defined by the development team and external developers are required to define a representative keyword using a preset pattern for their user callable classes. At compile time, the code reads and generates the necessary files required for calling the modules from the input file.
One of the most important aspects for creating a user-friendly environment, is the level of the flexibility the platform creates for reading and writing data provided by the user. So, Software comes with support for a variety of different data formats, such as text file, binary files, HDF5, and CSV (more will be added).
Software Hub creates an easy interface for restructuring input files from the input commands without the need for users to reformat their input manually.
To control the quality and compatibility of any large-scale software, three types of tests should be performed on the codes at different stages during development. These tests are unit-testing, integration testing, and scenario testing. “Software HUB” creates a user-friendly environment to ensure the stability and quality of the codes.
In designing a software, a mock–up, a scale or full-size model of a design, is used for demonstration, design evaluation, and testing of a major unit without implementing the behavior. Essentially, a mock-up is a prototype that provides at least part of the functionality of a system and enables testing of a design. Software Hub development team has built-in mocking-up tools using “Google Mock” toolkits. The mockers will allows developers to test different parts of the codes in different scenarios without implementing the modules.
For instance, developers can test behaviors of a material in presence of different loading by creating solution mockers without running the simulations.
One of the unique features of the Software Hub is the ability to run multi-system/multi-universe simulations. Users can define multiple systems, i.e. finite element, discrete dislocation dynamics (to be added), molecular dynamics (to be added), to run a synchronized concurrent simulation. The systems can be synchronized through an easy to use synchronization interface, allowing transfer of data from one system, to another. This feature is designed in particular to satisfy the need for multiscale (Hierarchical or Concurrent) simulations. Users and developers can also use the platform to run multi-physics/multi-mesh simulations.
High performance and scalability are the most critical features of any code trying to model large scale physics-based material simulations. To achieve an optimum performance, Software Hub uses state of the art optimization techniques such as vectorization of loops (MMX, SSE, AVX), small object optimization, and memory alignment to maximum the performance. Software Hub also supports a built-in benchmarking tool, via Google benchmark toolsets, to facilitate benchmarking of the performance for the developers. Software Hub also benefits from parallel computing utilizing message passing methods (MPI), and multi-thread computing (OpenMp) with future supports for CUDA acceleration on supported hardware (will be added in near future).