The C3D geometric kernel adds a new operation that constructs median shells, thin-walled shells between faces. In this note, we give an overview of the new function we think will be useful to developers of CAE (computer-aided engineering) software.

## Where Median Shells Are Used

When calculating thin-walled structures, CAE programs need to construct median shells based on the bodies of 3D models. According to the theory of shells and plates, if a characteristic dimension (say, thickness) of a body is significantly less than the other two dimensions (height and width), then the constitutive relations of continuum mechanics can be significantly simplified. In effect, the three-dimensional problem is reduced to a two-dimensional one. For CAE, wall thicknesses are reduced to shells.

Structures in a variety of fields can be presented in the form of shells. Examples include machine hulls in mechanical engineering; overlaps and walls in construction; fuselages and load-bearing surfaces in aircraft construction; and hulls and other elements of ship structures in shipbuilding.

## Features of Our Algorithm

Our new algorithm constructs median shells based on pairs of equidistant faces of bodies. The user begins by specifying the pairs manually, or else by searching for them automatically. In the second step, the user sets the minimum and maximum values of the distance between faces -- the desired thickness range; the minimum thickness is 0. The construction algorithm takes the selected faces of the median shell, and then reaches out to other faces; if this is not possible, then they must be mutual trimmed.

Figure 1 shows the original model with parts of different thicknesses (on the left), and the result of constructing the median shell to the right.

The position of median shells relative to parent faces can be controlled using the median shell offset parameter. It varies from 0 to 1. By default, it is 0.5, which means that the median shell is constructed equidistant between the original faces. Figure 2 shows different results of the offset parameter.

There are structures whose equidistant pairs of faces are connected to each other through fillet faces. Such cases are handled with the fillet flag. Figure 3 illustrates constructing the median shell with different values of the fillet flag.

Figure 3. Initial model (left) and the result of the median shell constructed with different processing of fillets: without processing (center) and with the average fillet radius (right)

The shell thickness value can be recorded as an attribute attached to the resulting median shell.

## Coding Example

This code fragment initializes the median shell object:

// 1. Select the base solid. SolidSPtr baseSolid( ::SelectSolid() ); // 2. Fill operation parameters. MbSNameMaker snameMaker( (SimpleName)ct_MedianShell, MbSNameMaker::i_SideNone, 0 ); // An object defining names generation in the operation. std::vector<IndicesPair> facePairs; // Empty, auto search of median faces will be performed. MedianShellValues params; params.dmin = 1.0; // The minimal distance. params.dmax = 5.0; // The maximal distance. params.filletType = MedianShellValues::FilletType::tf_none; // Type of fillet radius calculation between faces of median shell. MbMedianShellParams opParams( facePairs, params, snameMaker ); MbMedianShellResults results; // The operation results. // 3. Perform the median shell operation. MbResultType res = ::MedianShell( *baseSolid, cm_Copy, opParams, results ); // 4. Obtain operation result. if ( results._solid != nullptr ) TestVariables::viewManager->AddObject( Style(), results._solid );

You can find more details about the new MedianShell function and its parameters in our documentation at this link. We also have a short video demonstrating the capabilities of the median shell (carried out with our test application): https://youtu.be/BU8K0lOK6k4.

## Future Enhancements

This tool was developed at the request by one of our customers, and so we continue to develop the function. For instance, we will soon make available the ability to construct median shells from pairs of flat faces that are not equidistant. We also plan to have median shells for NURBS surfaces and profiles, such as I-beams.

To access the median shell construction operation, please send us a request to test the C3D kernel.