Skip to main content

Piston Bowl Modeling

This tutorial gives you an overview on how to model piston bowls in CAESES.

!Piston bowl model

The workflow is typically divided into the following main steps:

!workflow

Piston Bowl Contour

!Piston bowl definition

We assume that we create the sketch of the bowl contour in the X,Z-plane, so that X corresponds to the radius and Z to the direction of the movement of the piston. Note that we usually model things in millimeters.

Main Dimensions

Let's introduce some main dimensions, which we will need in later steps.

  • Create a scope via Model > CAD > Scope and set the name to "01_mainDimensions" and make it your working scope.
  • Create the parameters:
    • boreRadius: 68.5
    • CR: 15.925
    • numberOfNozzles: 6
    • squish: 4.221
    • stroke: 165.1

Center

We will start modeling from the center. Here we create a circle with a certain start angle to define the slope angle. Create parameters for centerDepth(5), centerCircleRadius(5) and slopeAngle(20), the parameter values are shown in parentheses.

  • Create a scope via Model > CAD > Scope and set the name to "02_center" and make it your working scope.
  • Create the Design Variables:
    • centerDepth: 5
    • centerCircleRadius: 5
    • slopeAngle: 20
  • Create a circle in a plane via Model > CAD > Curves > Arcs > Ellipse based on a Center and Plane and set the name to centerCircle.

!step1

Set the arguments of the circle as (the paths of the parameter are not shown completely in the following expressions):

  • Center: [0,0,-squish-centerDepth-centerCircleRadius]
  • Radius: centerCircleRadius
  • Plane: Y - (Z,X)
  • Start Angle: 90- centerSlopeAngle
  • End Angle: 90

Slope

In order to create a linear slope, we can simply extend centerCircle:

  • Select the curve centerCircle
  • Add a new Post Processing Operation via add new operation > More > Extension.
    • Activate Tangent Continuous.
    • Set the start value to boreRadius*2.
    • Activate Absolute Extension.

!step2

Lip Circle

For this bowl contour topology a key feature is the lip where the spray impinges the bowl.

  • Create a scope via Model > CAD > Scope and set the name to "03_lip" and make it your working scope.

  • Create the Design Variable:

    • lipCircleRadius: 2
    • lipRadius: 45
    • lipDepth: 6
    • bowlAngle: 10
    • stepAngle: 45
  • Create a circle in a plane via Model > CAD > Curves > Arcs > Ellipse based on a Center and Plane and set the name to lipCircle.

    • Center: [lipRadius+LipCircleRadius,0,-LipDepth-Squish]
    • Radius: lipCircleRadius
    • Plane: Y - (Z,X)
    • Start Angle: 180 - stepAngle
    • End Angle: 180 + bowlAngle

Now let's create a line which is tangential to the lipCircle on the bowl side.

  • Create a line via Model > CAD > Curves > Curve Based > Tangent Line and set the name to "tangentLine".
  • Set the Position to 1 and the Distance 1 to boreRadius.

!Tangent Line

Bowl Circle

Now it's getting interesting: We need to create the bowl circle between the two tangential lines. We could simply use a circular fillet for this, but this method would not work if the radius is too large. As an alternative we came up with a feature to create a fillet with the maximum fillet radius between two lines. This method makes the geometry really robust during a variation.

  • Create a scope via Model > CAD > Scope and set the name to "04_bowl" and make it your working scope.
  • Select the two tangent lines centerCircle and tangentLine in this order.
  • Create the fillet via Model > CAD > Curves > Arcs > Maximum Circle between 2 Lines. Rename the feature to bowl.
  • Set the plane: Y - (Z,X)
  • Change the Index to 3.
  • Set the Radius Factor to 0.9.
  • Create a Design Variable for the Radius Factor via right click and rename it to radiusFactor.

The Radius Factor controls the size of the fillet relative to the maximum possible fillet radius.

!Bowl

Step

We can create the upper step by simply extending the lipCircle

  • Make the scope 03_lip your working scope again.
  • Select the curve lipCircle.
  • Add a new operation via add new operation > More > Extension.
    • Activate Tangent Continuous.
    • Set the start value to boreRadius.
    • Activate Absolute Extension.

!Step Extension

Now we want to trim this curve at the squish z-position.

  • Make sure the curve lipCircle is still selected.
  • Add a new operation via add new operation > Trimming > Trim by Principal Axis.
  • Set arguments:
    • Axis: Z
    • Elevation: -squish
    • Curve to Keep: 2
  • Hide the centerCircle and the tangentLine.

!Step Trimmed

Top

  • Create a scope via Model > CAD > Scope and set the name to "05_top" and make it your working scope.
  • Create a new point via Model > CAD > Points > Curve Based > Position on Curve and set the name to "pEdge"
  • Drag the curve lipCircle from the scope 03_lip into the Curve field, set Tp to 0.
  • Create a new Point via Model > CAD > Points > 3D Point and set the name to "pBore".
  • Set the coordinates to:
    • X Coordinate: boreRadius
    • Z Coordinate: -squish
  • Select pEdge and pBore.
  • Create a line via Model > CAD > Curves > Line and set the name to top.

!Top

Combine

Now we just have to combine our single curves to one curve.

  • Create a scope via Model > CAD > Scope and set the name to "06_combinedContour" and make it your working scope.
  • Select bowl, lipCircle and top in this order
  • Create a poly curve via Model > CAD > Curves > Curve Based > Poly and set the name to "bowlProfile"
  • Activate Auto-Orientation
  • Make the other scopes invisible.

!Bowl Profile

Piston Bowl Volume Adjustment

An important constraint during a variation of the bowl contour is a constant volume or compression ratio. To achieve this we need a free design variable which is automatically adjusted by a design engine to achieve a certain target volume or compression ratio. This free design variable should have a large influence on the piston bowl volume. Typical design variables for this topology are the bowl radius or the edge radius. In our case we choose the parameter slopeAngle as free design variable.

  • Select the Design Variable Slope Angle and set the lower and upper bounds [10,40].

Compression Ratio Calculation

The volume is calculated using the feature definition "pistonBowl_volumeCalculation", which can be downloaded here:

Load Feature
  • Drag and drop the downloaded feature definition into the CAESES GUI
  • Create a scope via Model > CAD > Scope and set the name to "07_CR_Calculation" and make it your working scope.
  • Switch the tab to Model > Features.
  • Right click on the feature definition pistonBowl_CRCalculation and select Create Feature
  • Switch back to the tab Model > CAD.
  • Rename the new feature instance to "calcCR" and set these arguments:
    • Curve: bowlProfile
    • Stroke: stroke
    • CR Target: CR
    • Profile includes squish translation: activate (check the box), since we included the squish parameter in all Z-coordinates
    • Volume Head: 0, since we have a flat fire deck

!Calculate CR

The feature will calculate the volume, CR and the difference to the target.

  • Create a parameter via Model > CAD > Parameters > Parameter and set the name to "objective_CR".
  • Create a parameter via Model > CAD > Parameters > Parameter and set the name to "CR_current".
  • Select objective_CR and set the expression to calcCR:CRDiff_squared from the feature calcCR. This parameter is the objective for the volume adjustment. It should be zero if there is no difference between target and current volume.

!Calculate CR Parameter

tip

Click on the + icon next to a feature instance in the object tree to expand all accessible attributes.

Compression Ratio Adjustment

Now we can create a design engine for the volume adjustment.

  • Create a new Design Engine Optimize > Optimization > Single Objective Optimization > Brent and set the name to "CRadjustment"

This design engine is a simple gradient based single objective algorithm, which can vary one design variable.

  • Set the slopeAngle as the design variable.
note

You can see that the lower and upper bounds are automatically set, since we already set the bounds at the design variable.

Note that the bounds set in the design engine are not updated automatically, if you change the bounds directly at the design variable. To update the design engine with the new bounds set at the design variable click on the left button below the design engine table.

!update bounds of design engine

  • Set the parameter objective_CR as an evaluation and set the objective to min for a minimization

Now we have to decide how many iterations we need to minimize the objective parameter.

  • Set the number of iterations to 20

Since we don't want to create a design table for each volume adjustment, we need to deactivate the design creation:

  • Click on the general tab of the design engine to show more options. Here deactivate the toggle Variant Creation.
  • Here also activate the option Keep up to Date, which will trigger this engine automatically if the geometry is updated.

!CR Adjustment

Now we can test if the adjustment works properly.

  • Go back to Model > CAD
  • Change for example the Design Variable centerDepth to 4.
  • Now select the parameter objective_CR and check if the value is close to 0.

If it is not close to 0, you may have to open up the bounds of the design variable inside the Brent design engine or increase the number of iterations.

Piston Bowl Exports

There are several ways to export the geometry to different software:

  • Export the bowl spline as a text file
  • Export a solid sector of the geometry
  • Export a solid as full 360° geometry

Export as Bowl Spline

With this method we need the feature "pistonBowl_profileExport", which writes the x and z coordinates into a file. You can download the feature here:

Load Feature

Set the arguments as:

  • InputCurve: bowlProfile
  • Filename: getInputDir() + "/bowlspline.dat"
  • Scaling: 1/1000

When we want to use this feature inside the software connector, we can drag the feature definition into the Input Geometry field and set the arguments as above:

!Software Connector with Contour Export

Export as Sector Solid

For this method we can use the feature definition "pistonBowl_solidSegment", which you can download here:

Load Feature

Set the arguments as:

  • Profile: bowlProfile
  • Scaling: 1/1000
  • Arc: Set the arc angle depending on the number of nozzle holes
  • Squish: 0 since we already included the squish in the profile
Converge connection

If Converge is used as a solver, set the boundary ID's according to the CONVERGE setup.

!Sector

Here you can see how to set up an export to CONVERGE inside the software connector:

!Sector

In this case you only have to drag the feature segment to the Input Geometry tab of the software connector and set the filename and export type.

Piston Bowl Variation

Before we start our CFD calculation we always check if the geometry works in the defined design space. This is easily possible by setting up a Sobol design engine, where we set our design variables.

  • Select the parameters: bowlAngle, centerDepth, lipCircleRadius, lipDepth, lipRadius, stepAngle

Now set the bounds for the design variables by a click on the edit symbol next to the design variable value. Then set the bounds like shown in this table:

Design VariableDefault ValueLower BoundUpper Bound
bowlAngle10-2020
centerDepth538
lipCircleRadius213
lipDepth6310
lipRadius454350
stepAngle452060

!Design Variables

  • Next, create a Sobol design engine via Optimize > Optimization > Design Space Exploration > Sobol

  • Set the number of variants to 20.

  • Create a new Screenshots Collection.

  • Use all design variables which we set up, but not centerSlopeAngle, since this will be adjusted by the design engine CR_adjustment.

  • Set the parameter CR_current as an evaluation to see if the target CR was achieved

Here is an example of the setup and the design variable bounds for this case:

!Variation with Sobol

After the Sobol run has finished we can check the parameter CR_current to see if the target compression ratio was achieved. We can also have a look into the design viewer to check feasibility of the designs.

Software Connection

In this step we will connect CAESES with CONVERGE:

  • Create a Software Connector: Connections > Software Connector
  • Drag and drop the segment which you want to export into the upper left window of the Software Connector
  • Set the filename to surface.dat
  • Set the Export type to CONVERGE

Software Connector

Next add the CONVERGE Input files to the upper right window of the Software Connector:

  • Set the maximum number of Running Instances: This value will define how many designs are calculated parallel next to each other during a variation. 0 means that it uses the default value from the CAESES preferences.

Software Connector

Add template results files to the lower right part of the Software Connector:

  • Click on the Plus button next to Results Values
  • Add for instance the emissions.out file
  • After added to the Software Connector, double click on the file, to access it
  • Create a new value, by clicking on the Plus button
  • Rename the value to "NOx"
  • Put the line number to -1. This means it will use the last entry of the column
  • Set the Column to 2
  • Click on the blue parameter button next to NOx to create a new parameter for the NOx value

Software Connector

Test the connection by selecting the Runner and clicking on the run button. You can see the status in the Task Monitor after the computation has finished: you should have a value called eval_NOx in the parameter for NOx.

tip

If you want to trigger the software connection inside a variation e.g. a Sobol, then you just have to add the parameter eval_NOx to the evaluation of the design engine.


Final Setup

CAESES Project File

If you want to take a look at the finalized parametric model you can find the resulting CAESES project file piston-bowl-modeling.cdb here:

Load Final Model