OpenNN is an open source class library written in C++ which implements neural networks. The library has been designed to learn from both data sets and mathematical models. Big data and data mining applications, such as function regression, pattern recognition and time series prediction are applications which learn from data sets. Some learning tasks learning from mathematical models are optimal control and optimal shape design. Finally, inverse problems are a type of applications which learn from both data sets and mathematical models. The package comes with unit testing, many examples and extensive documentation. In summary, OpenNN provides an effective framework for the research and development of neural networks algorithms and applications. This open neural networks library was formerly known as Flood.