What on Earth are Kernels?
by Elliot Gindis
If you have taken an active interest in 3D CAD software and are learning what is “under the hood,” then you may have read or heard about kernels. What are they and what do farming and planting terms have to do with software? Well, as you may have already deduced, the word kernel is a metaphor for describing the heart of the software, a starting point from which everything else grows, the same as a kernel of corn. This analogy is quite accurate: A 3D modeling kernel is the computer code that is the “brains” of any 3D software package, such as CATIA, NX, SolidWorks, Inventor, and of course AutoCAD.
As it turns out, kernels are quite rare. This is because they are extremely difficult, expensive, and labor intensive to develop from scratch. As a result, while hundreds of 3D-capable CAD software applications are available, there are only a small handful of kernels. If you wanted to start a new CAD company and develop a competitor to any of the established products, then chances are good that you would simply purchase a kernel license and design your software around the kernel, not try to create your own. In many cases, this is indeed what happens in the industry.
Why would kernel developers license their kernels, as opposed to using them for just their own CAD programs? Well, for starters, they do use them in such a way, and most kernel developers have a popular 3D CAD program for sale. But, the licensing fee to “rent out” kernel code is substantial, so they do this as well to increase the revenue stream.
What customers get when they purchase the kernel is a large chunk of code made up of what are called classes and components – essentially mathematical functions that perform specific modeling tasks. The CAD company then writes its own code to interface with the kernel via numerous APIs (application programming interfaces) and essentially creates the new software around the kernel.
This new CAD software is unique, according to the design philosophy and talent of the CAD company, and may be different in how it operates compared to another company’s software that uses the same kernel. In essence, however, most modelers are essentially the same, and one can switch relatively easily from, say, CATIA to NX or Creo Elements (Pro/ENGINEER). All three of these software applications feature parametric modeling, part trees, dimension-driven design, and other hallmarks of solid modeling. The differences are chiefly in the interfaces, ease of use, extra features offered with each package, and of course price.
One notable exception is AutoCAD. The kernel it uses, ACIS, is made by Spatial Technologies. Its modeling methods are somewhat different than the other kernels on the market, giving AutoCAD a unique (and not necessarily the best) approach to 3D. The essential difference has to do with the purpose and goal of the ACIS kernel, which is to simply represent objects in 3D, not to analyze and design with them. Models created by ACIS lean more toward “pretty pictures” than engineering tools. This is not surprising, because that is exactly what is needed by AutoCAD design professionals – a representation of a 3D model in order to bring across an idea of a design. There is simply no need for highly sophisticated 3D operations found in the high-end solid modeling software and would be a waste of money to add it to AutoCAD, when most customers would never use it.
These other, more high-end, kernels include Parasolid (used by NX, SolidWorks, and SolidEdge), Granite (used by Creo Elements (Pro/ENGINEER)), and CAA (used by CATIA). Autodesk set out to develop its own 3D solid modeling kernel in recent years, and the fruit of that labor is in its Inventor software.