µic has been designed as a framework for highly customisable simulations of particulate reactions. The vector approach, which is a resolution-free method for representation of geometrical information, was implemented using object-oriented programming in Java. While the model was designed keeping in mind the special requirements for cement, the framework can be used to model a wide variety of particulate reactions.
For the design of any model, it is important to first identify the requirements from the model. Since models are by definition a simplification of the problem, the requirements from a model affect the simplifications and assumptions that can be justifiably made in order to satisfy these requirements. Some of the requirements from µic and the simplifications used in the model in the course of satisfying these requirements are discussed below.
Even as cement science continues to progress at a tremendous pace, many aspects of hydration are still not well understood. Since models generally involve large number of assumptions and simplifications, the capabilities of models are generally limited to the information available to the developer and newer findings can quickly render a model outdated and of little use. Additions to models due to both, the advances in science and the introduction of newer materials, would require regular extensive developments to the models, which are not always practically possible. Extensibility was therefore considered an essential feature during the design of µic. The model was designed to allow users to input and test their own ideas in simulations, making experimentation with the model possible. This unique feature of µic can make it an important tool for understanding cement chemistry.
As it would be unreasonable to assume that the model will not require future development, the model has been designed in a programmer-friendly manner, with object-oriented programming in Java. The programmes make the task of editing and development by different and multiple developers easier as the programmes are segmented into smaller modules, resulting in smaller sized, easier to maintain programmes. Java was chosen as the programming language as it is considered to strike the right balance between ease of learning and power. Being a modern language, Java contains all the necessary features and built-in libraries to support advanced development. Java is also known for encouraging better coding practices, resulting in easier-to-read codes. The syntax of Java is easier to learn, making it ideal also for researchers without much prior experience in programming. Furthermore, Java is a platform-independent language, and its compiled programmes can be executed on most operating systems and hardware platforms. Although many programmers question the speed of execution of Java programmes, the advantages of Java were considered to outweigh this limitation and Java was chosen as the language for the development of µic.
Particles of cement extend over a wide range of sizes, from over a hundred micrometers to just a fraction of a micrometre and particles of all sizes play an important role in the progress of hydration and the development of the microstructure. So, in order to correctly simulate the evolution of microstructure, it must be possible to represent particles of all sizes in the model. µic uses the vector approach in order to preserve the multi-scale nature of cement as it has the advantage of being relatively resolution-free. The vector approach is discussed in more detail later in this chapter.
It was considered important that problems of significant size be solved within reasonable amounts of time. Performance is an important requirement from the models, specially since the vector approach is known to be computationally expensive. The manner in which the information is usually stored in the vector approach makes the calculation of interactions difficult and time-consuming. The performance issued associated with the vector approach were dealt with, as an integral part of the design of the model.
As µic has been designed as an experimentation tool, easy accessibility is an important feature required from the model. Keeping this in mind, the model has been designed for use on normal desktop computers. This is an important requirement from the model since access to large work-stations is generally limited. In order to encourage a wider use of the model, emphasis was given to more advanced and efficient algorithms, rather than parallelization, to enhance the performance of the model. Simulations on larger work-stations and mainframes are still possible owing to the platform-independent nature of Java.
The main problem in modelling cement hydration arises from the complexity of the process and the fact that many aspects of hydration are not well understood. This means that during the design of the model, not only the information available currently, but also possible developments in the future have to be kept in mind. Not only is it, therefore, required that easy developments on the model be possible, but also that extensions may be added to the model at run-time to change the mechanisms of reaction, without the user having to change the structure of the programmes. This is why, the Cement Hydration tool-kit (CHT) was developed to provide a flexible framework for the simulations. Object-oriented programming was found to be indispensable for the development of the tool-kit.
The idea for this tool-kit was derived from commercial F.E.M. packages where users are given the flexibility to define the properties of materials, design the specimens and even specify behaviour laws as equations. This flexibility is currently not available in other microstructural models of cement and most models are limited by the knowledge of the developer. The existing models are based on fixed laws that control the microstructural development of cement, limiting the control of the user only to certain parameters. The CHT is designed to allow users to define materials with customised properties and reactions. Many of these features have been implemented as plugins. Plugins are programmes that can be compiled separately from the model and can be provided as inputs at execution time. The users can choose from a wide range of available plugins, or create their own plugins to control mechanisms of microstructural development. Schematics of the customisable elements are shown in the drawing below