So what's the big deal about the geometry kernel anyway? Why do we even care about what kernel is under the covers of our favorite CAD tool? Should we care about it? Do you know how the geometry kernel can impact your ability to be effective in the design of your products? Strangely, the answer to these questions depends on many factors.
I know I am going to over simplify this, but here it goes anyway. In its purest form the CAD kernel is a geometry engine. It takes instructions, processes the instructions, and delivers results. The results are typically in the form of geometry. Every geometry kernel on the market can be unique in many different ways.
- The instructions or "functions" that the kernel will accept are very specific to the kernel. Also each function has a specific set of operatives or parameters that go with it. These of course have to be presented to the kernel in the appropriate format. There are no standards for kernel functions/instructions.
- Kernels can also define geometry in many different forms. Some kernels understand analytic geometry, some understand B-Splines, some understand NURBS, and so on. Some might understand all of the previous and know how to merge the different definitions. There are no standards as to how kernels mix and match these definitions.
- Geometry kernels can also work at different geometry resolutions (accuracy). Some kernels are more stable at very low resolution, while others work more effective at a higher resolution. Most kernels provide adjustable geometry resolution and the CAD system typically controls this, either through a setting or automatically. There is no standard geometry resolution for CAD geometry.
- Geometry kernels can also calculate the geometric results differently. Perhaps the easiest way to see this is with the corner "Round" or "Blend" function. Every kernel out there will calculate the vertex region differently - and it is very visible. There are no standards as to how a kernel calculates this type of geometry. Here are some examples from some of the more popular CAD tools on the market. Pay close attention to the differences in topology in these examples. Also note in these examples how the planar faces are effected differently. I can usually tell which CAD system was used to create a 3D model just by looking at the rounded corners. There are no standards for these types of calculations.
Those are some of the big differences. There are many more, especially in the area of freeform surface definition.
So, again, what does all this kernel stuff mean to the product development process?
When we are working with CAD we are typically creating two layers of information. The TOP layer is the feature definition including any import or non-ordered geometry, sketches, parameters and other modeling functions. This is the history tree, or some may call it the "design intent". On the BOTTOM layer is the resulting geometry. (Of course with direct modeling all you have is the bottom layer.) When moving CAD data from one kernel to another, both layers need to be considered.
Let’s consider the TOP layer first; it is actually the most complex. (And for you direct modeling people you don't need to be concerned with this layer. You can skip to the BOTTOM layer covered below). A parametric history-based CAD system is basically recording every function it sends to the kernel into the history tree. These kernel functions and their parameters are bundled into the "parametric feature" definition. For example; a sketch with an extrusion distance creates a primitive. Constraints control the size and position of the new primitive. Then a Boolean function is added to specify whether the primitive will be added or removed from the parent geometry. The Boolean function with the primitive and related parameters are passed to the kernel and the resulting geometry is processed and revealed. This kernel function is processed every time this "feature" is regenerated or reprocessed. The kernel function along with its required parameters is very specific to the kernel as discussed above. It is highly likely that another kernel will not understand this very specific function, and even if it did the geometrical results could be very different.
Moving this TOP layer from one kernel to another kernel is very much like taking a FORTRAN program and trying to compile it with a C compiler. It won't work. The functions and related parameters are just not compatible. As such these functions that are recorded in the history tree have to be translated to work on a different kernel. The CAD industry has made several attempts to make translators that will translate this TOP layer from one kernel to another - but we have had very limited success. By the way, this is also one of the reasons for slow progress on geometry kernels - we are too locked into this TOP layer. If we make too many changes to the kernel we may impact upward compatibility with previous version "history trees", i.e. “kernel functions”. There have been many examples of this problem over the history of CAD.
Moving the TOP layer from kernel to kernel may provide the highest risk to product development. This translation has to work perfect otherwise history/design intent can be lost. By the way, if you do get a complete and robust translation of this TOP layer from one kernel format to another, you don't need to be concerned with the BOTTOM layer. The geometry will be recreated for you when the translated TOP layer is processed by the receiving kernel.
Now let’s consider the BOTTOM layer, i.e. the geometry (and for you parametric modeling users that were able to get an accurate translation of the TOP layer, you can skip this section - unless your TOP layer has a lot of import or non-ordered geometry features in it). As I mentioned earlier, geometry kernels can create geometry in a variety of different forms and at a variety of different resolutions (accuracy). Although we have industry exchange standards for geometry (IGES, STEP), as mentioned above we don't have standards for geometry accuracy or definition. Translation of geometry from one kernel to another is not flawless. You most likely have experienced this imperfection if you have ever translated geometry through the STEP or IGES formats.
If you have experienced errors or gaps in translated geometry it could be a result of, for example, translating an analytic surface to a NURBS surface, or vice-versa. Or it could be a geometry accuracy problem. In some cases the translation issues may be related to the IGES or STEP processors within the CAD tool, but it’s also possible that the issues are due to big differences in the sending and receiving geometry kernels. We all likely know how poor geometry translations can impact the product development process. When moving CAD geometry from one kernel to another, you can expect some of this. Fortunately most modern CAD systems have tools to quickly resolve these geometry imperfections - don't they?
So how might a kernel change impact your product development process? Well, it depends. Will you be transferring the TOP layer or the BOTTOM layer with the kernel change? I hope you can begin to see the pro's and con's of each.Here are few final questions to ponder:
- What do you think happens if you use one geometry kernel for concept design, and another for detail design? Can you "round trip" without loosing data or degenerating the model?
- How robust is your TOP layer? Do you maintain strict modeling standards?
- What geometry accuracy does your geometry kernel run at? Does it make high quality geometry that other kernels can consume without error?
- Are your drawings associated to the TOP layer or the BOTTOM layer?
- How is "model-based" impacted when multiple geometry kernels are used in the product development process?
- What downstream functions are driven by the TOP layer versus the BOTTOM layer?