If the aim is to have perfect engineering accuracy, complete with round openings and at least G1 continuity across surfaces, I would do it with Rhino’s basic tools. The attached 3d model below is a quick example.
The circle profiles are made by placing couple of straight lines between the edges of the upper opening, then using the “Circle: 3 points” tool. Then the circle is extruded with “Extrude straight”.
The base is made by deleting some existing surfaces and replacing them with “Loft” surface between the thin profile surfaces. Then “Split edge” was used to split the loft surface so that eventual “Adjustable curve blend” could be built from the resulting split edges. Then, another curve blend is built from top view and adjusted to be 1/3 away from the upper edge of the profile surface. The latter is being split with the curve blend.
Once that’s done, “Blend surface” with AutoChain is used to fill the space between the base and the circle extrusion. Then “Rebuild surface UV” is used with Point count = 10 along the U direction, followed by the same command with Point count = 4 or 5 (your preference) along the V direction. 5 would let you have an extra row of control points that you can scale with “Scale 1D” to further adjust the middle of the blend surface. Then “Match surface” with Tangency is used to the bottom edge of the blend surface, and another “Match surface” with Tangency or Curvature for the upper edge of the blend surface. Once everything is joined together, use “Offset Surface” and open a beer.
Blend surface and offset.3dm (2.4 MB)