Features

  • 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 GitCmake 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.

    1. Unit-testing: One of the most important features of any large-scale software is unit-testing. Unit Testing is a level of software quality control where individual units/components of a software are tested. The purpose is to validate that each unit of the software performs as designed. The Software Hub development team has created a built-in unit-testing tool using “Google Test” toolkits to facilitate the unit-testing of implemented codes by researchers and students. Each modules, class and method should be completely tested before merging with the baseline codes by the developers for quarantined stability.
    2. Integration-testing: Integration is done when a module is unit-tested to ensure correct integration with other modules, and backward compatibility. Developers will create a preset input files for a given scenario, and expected output file to test integration of the implemented code with the platform.
  • In designing a software, a mockup, 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.

  • SoftwareHub does natively support a growing number of software and tools that facilitate the integration of research codes into the platform. Developers can enjoy a uniform interface for variety of tools and libraries such as file handlers for different industry standard file formats like binary, HDF5, CSV (will be supported in the future), linear algebra libraries like Blaze, Eigen++, Petsc, Lapack, Armadillo, different data decomposing algorithms such as METIS, PARMETIS, etc. Users can directly import their input data from Abaqus, Gid Mesh, Simmetrix to the platform, and use predefined tools such as Tecplot, and Paraview for visualization of their simulations. Software Hub team is actively growing the number of supported software, and tools to make the platform more engaging for a wider audience.


  • 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).

JHU Software Hub