I am working with legacy physical codes and I develop new ones based on the output of them. They all use their own internal normalization of variables (for example all distances are divided by the physical size of the simulation box) which leads to a mess... The goal, I think, is to have all variables near ~1. On the contrary, my code uses the international system of units to clarify this mess. Since I use floating point double precision, I do not have any problem of denormalization... But my colleagues continue to repeat to me that one should normalize its variables ... without being able to explain me the reasons.

Is it a legacy practice, or there are still excellent reasons to do this ?

  • $\begingroup$ As an aside I wanted to say that it really matters. When working with properties that vary by orders of magnitude in say CGS this can be problematic. Fluid permeability of solids varies by 15 orders of magnitude in CGS, which can get quite silly for numerical methods if you don't consider this ahead of time. On the other side, there are a ton of problems that can addressed w/o any of these considerations, for example a balloon flight-simulator is a reasonably complex problem that can be addressed without concern. $\endgroup$
    – meawoppl
    Oct 10, 2014 at 0:36

1 Answer 1


This question is very closely related to (and possibly a duplicate of) Is variable scaling essential when solving some PDE problems numerically?.

There are still good practical reasons to nondimensionalize equations, if possible:

  • It reduces the number of independent parameters for parametric studies (which was one of the original reasons for nondimensionalization in the first place), which is important for uncertainty quantification. The fewer parameters you have, the less expensive uncertainty quantification will be.
  • It's equivalent to preconditioning your equations. For affine transformations of variables (only one variable per transformation, so there is no coupling), it amounts to diagonal preconditioning, which helps with convergence of iterative methods, and it's usually cheap to do it yourself analytically while manipulating the equations on pen and paper (or using your favorite computer algebra system).
  • It gives you insight into the equations. If you know which terms are dominant, and which terms aren't, you can sometimes develop reasonable right preconditioners by dropping non-dominant coupling terms. For an example that could have been deduced due to appropriate scaling (instead, they appeal directly to physical arguments), see Jacobian-free Newton-Krylov methods: a survey of approaches and applications, Section 3.4.1.
  • If you know all of your dependent variables are of order 1, it gives you a natural point of reference for error tolerances of numerical methods. Otherwise, if you know characteristic scales for your variables, you'd need to adjust your error tolerances accordingly.
  • For independent variables, it can be helpful when generating meshes. For instance, I have been modeling microscale devices, and some mesh generators (e.g., the built-in mesh generator in FEniCS/DOLFIN 1.3) will return errors if I use standard metric dimensions, like $10^{-6}$ for the edges of a square domain. If I nondimensionalize, I am meshing a unit square, and those numerical issues go away.
  • It's sometimes necessary to avoid singularities in simulations. (See Preconditioning and the Limit to the Incompressible Flow equations.)
  • $\begingroup$ Your comment on Fenics, is that a reasonable design decision or just an error? $\endgroup$
    – Kirill
    Oct 9, 2014 at 0:17
  • $\begingroup$ Not being an expert on mesh generators, I have no idea. They were using CGAL for meshing in that version, but I believe the upcoming version (1.5) will use something different. $\endgroup$ Oct 9, 2014 at 0:33
  • $\begingroup$ I would claim that it's a bug. There are many places where you have internal checks that verify that some residual is small, a diameter of a cell is large enough, etc. In deal.II, we have all of these be relative to some other dimension (e.g., the norm of the vector, the diameter of the mesh, etc). You can always scale things in ways to ensure that tolerances are relative, not absolute. $\endgroup$ Oct 10, 2014 at 23:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.