We present a list of programing tips and tricks. With these tips users can increase their productivity on the computer programming and make their overall computer experience a lot more enjoyable. This section will grow over time as new entries are added and current entries updated. We will cover a wide range of topics in C++ programming applied to scientific programming. You are welcome to bring your own suggestions
This page is an on-going work in progress and will be updated periodically, stay tuned.

Programming Physical Algorithm That Simulates Dam-Break Wave

Introduction  DamBreak++ wave simulator is a programming environment designed to accelerate the prototyping phase in the validation of numerical algorithms on the so-called Dam Break problem. The software architecture is based on an Object-Oriented framework with a layer of abstract types by which it is possible to extend user applications. A particularly attractive feature is the […]

Refactoring Legacy Code Using Object-Oriented Numeric

Introduction The migration project of the numerical library to modern C++20 is completed, and I am working on the validation of the physics algorithms. I started the rafctoring of legacy code, and I want to share a design or a prototype.   The original version of the code was written with the C-function approach; the new […]

Scientific Modern C++ Features for Scientific Programmer

Scientific Modern C++ Scientific Modern C++ is the application of Modern C++ new programming techniques in developing scientific software applications. Scientific Modern C++ added new features (language upgrade) and many of these newly introduced features can be applied in the development of scientific applications. Scientific application demands efficiency and flexibility, and the new features of […]

“Modern C++ Scientific Data Type Use case “

Scientific Data Type(scalar field) Our scientific programming environment supports many scientific data types such as scalar field, vector field, tensor and so on, usual mathematical types used in scientific programming. Recently I started to refactor scalar field using Modern C++20 features (particularly ‘Range’ library). I thought it would be a good example to show how […]

Scientific Programming Using Modern C++ Features

Scientific Programming Modern C++ Scientific programming using Modern C++ requires a new way of thinking about programming, at first sight it may often be more abstract and more difficult to understand than conventional codes. Adopting these new features means not only learning a whole programming style but learning new unfamiliar features as well. I’m currently […]

Some Thoughts About Modern C++ in Scientific Programming

Perfect forwarding (Modern C++) In the refactoring project I’m currently working, I prototype many implementations and lately I’ve been testing the use of perfect forwarding (Modern C++ feature) in our scientific programming environment. The reason is that some of the legacy code I started from used functions with different signatures. As the name perfect forwarding […]

The 4 Most Important Skills for a Software Developer

I don’t remember where I took that from, but I think it’s worth sharing. I have been developing software for almost 25 years and this is what I think that’s the 4 most important skills for a software developer. Software development is 100% about solving problems If you can quickly adapt to the rapidly changing […]

An Example of a C++ class Implementation Of Euler Angles

C++ has many features which make this language very attractive for scientific programming, and one of them is the operator overload functionality. I present an example taken from our programming environment (math3D library) that use this to represent a rotation class (Euler angles).

Basic Things worth Knowing About Bind Adapter

C++11 added a new adapter called bind (bind1st and bind2nd are now deprecated since C++11). I give some hands-on examples of everyday life usage as a scientific programmer of this adapter.

Creating Pair of Objects Using Boost Range and Lambda

We present a little example of the use of boost range and the lambda expression, supported by C++11, that show manipulating range is made easy and don’t need extra programming of function for simple task.