Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Add solid components to the duct

On this page, we will add an insulating block to a heated duct, make it conducting and powered, then add an insulating inlet step. Each change answers a different modeling question: where can air flow, where can heat flow, and how do components reshape both paths?

This page is part of Design a complete electronics cooling solution.

Choose how to start:

For the focused procedure and placement rules, see Add a cuboid component.

1. Add an insulating block

Rectangular duct with a floating insulating block A transparent three-dimensional rectangular duct showing air entering and leaving, a fixed-temperature lower wall, and an insulating cuboid suspended in the airflow. Insulating block Inlet Outlet Fixed-temperature wall x y z

Open solid-components.json and add this cuboid_components array at the top level, alongside domain and fluid_properties. The starting request already has dry_run set to true:

"cuboid_components": [
  {
    "tag": "block",
    "bbox": {
      "origin": [0.04, 0.005, 0.006],
      "size": [0.02, 0.01, 0.008]
    },
    "thermal_model": "insulating"
  }
]

Compare the edit with the completed insulating-component.json, then submit solid-components.json:

curl -i -X POST \
  https://api.vanellus.tech/simulations \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $VANELLUS_API_KEY" \
  --data-binary @solid-components.json

Download and inspect fluid.vtu and solid.vtu. The block should occupy a cavity in the fluid without touching the duct walls.

How to read these views: the solid geometry is always shown in full, but only the back half of the fluid field is displayed. The front half is cut away along the duct center plane so the solid and the flow immediately around it remain visible. This is only a visualization cutaway: the simulation still uses the complete fluid domain marked by the white box. Open Display and uncheck Fluid to inspect the unobscured solid.

The first interactive reference applies this cutaway to the dry-run fluid mesh. To reproduce that view locally, follow the optional ParaView workflow.

Cutaway dry-run fluid mesh around a centered solid block.
The back half of the fluid mesh surrounds the complete solid; hide the fluid to inspect every solid face.

Set dry_run to false and submit the request again. The validated case finishes with residual_converged after 22 iterations.

Inspect speed and temperature with a viewer that supports field data. We should see faster flow around the block and a wake behind it. The fluid warms around the obstruction, but the insulating block has no solved temperature and should remain neutral. The field selector in the reference result shows both patterns. Blue arrowed streamlines trace the flow through the complete duct; uncheck Streamlines under Display to hide them.

Conducting and insulating domains explains why insulating and conducting solids produce different temperature fields.

Fluid cutaway around a neutral insulating block, colored by speed.
Switch fields without changing the view: the block diverts the airflow but does not conduct heat.

2. Make the block conducting and powered

Three-dimensional duct with a powered conducting block A transparent three-dimensional duct showing the same suspended cuboid as the insulating case, now modeled as a powered conducting solid above a fixed-temperature lower wall. Inlet Outlet 1 W conducting block Fixed-temperature wall x y z

In the same working file, replace "thermal_model": "insulating" with:

"thermal_model": {
  "conducting": {
    "conductivity": 0.5,
    "density": 2700.0,
    "specific_heat_capacity": 900.0,
    "power": 1.0
  }
}

Compare the request with conducting-component.json. Set dry_run to false, submit it, and download the result. The validated case finishes with residual_converged after 32 iterations.

Inspect the fluid and solid temperatures using one shared range in a viewer that supports it. The block should be hottest in its interior and cooler at its surfaces. The interactive result below provides the same comparison without requiring any viewer setup.

Powered conducting block and fluid cutaway colored by temperature.
The powered block reaches about 84 °C and creates a warm downstream wake; switch to speed to verify that the flow is unchanged.

Compare this result with the insulating case. Changing thermal_model determines whether the component participates in the thermal solve. The geometry still obstructs the flow, but the conducting block now has a solved internal temperature gradient and transfers its 1 W load into the surrounding air. Also note that the lower fixed temperature boundary still heats up the flow, but the conducting block now dominates.

Conducting and insulating domains explains when component temperatures are solved.

3. Add an inlet step

Three-dimensional duct with an inlet step and conducting block A transparent three-dimensional duct showing an insulating lower step spanning the complete inlet width and a powered conducting block suspended downstream. Inlet Outlet Insulating inlet step spans full width 1 W conducting block x y z

Continue with the conducting-block request and make these changes:

  1. Remove the fixed-temperature lower-wall condition.
  2. Replace the full-face inlet with the rectangle below.
  3. Replace cuboid_components with the following two-component array.

The rectangular inlet leaves the lower 8 mm for the insulating step:

Select a boundary region covers the coordinate order and mesh controls for full, rectangular, and other shapes of boundary regions.

{
  "boundary": {
    "rectangle": {
      "center": [0.01, 0.014],
      "size": [0.02, 0.012],
      "side": "x_min"
    }
  },
  "condition": {
    "velocity_inlet": {
      "speed": 0.5,
      "temperature": 20.0
    }
  }
}

Use this component array:

"cuboid_components": [
  {
    "tag": "inlet_step",
    "bbox": {
      "origin": [0.0, 0.0, 0.0],
      "size": [0.02, 0.02, 0.008]
    },
    "thermal_model": "insulating"
  },
  {
    "tag": "block",
    "bbox": {
      "origin": [0.04, 0.005, 0.006],
      "size": [0.02, 0.01, 0.008]
    },
    "thermal_model": {
      "conducting": {
        "conductivity": 0.5,
        "density": 2700.0,
        "specific_heat_capacity": 900.0,
        "power": 1.0
      }
    }
  }
]

Compare the request with multiple-components.json, then submit a dry run. Confirm that:

  • the inlet contains fluid only above the step;
  • the two solids do not overlap; and
  • an open fluid path remains to the outlet.

Use the controls in Configure the mesh if a component, clearance, or boundary patch is represented poorly.

Set dry_run to false and submit the request again. The validated case finishes with residual_converged after 31 iterations.

Inspect speed and temperature in the downloaded fields with a compatible viewer. As above, the interactive result keeps only the back half of the fluid field around the complete solids. The streamlines make it possible to match the accelerated path with the thermal wake.

Fluid passing over an inlet step and around a powered block, colored by speed.
Air enters above the neutral step, expands, and passes around the powered block; temperature reveals the resulting downstream wake.

The residual history for this run is shown below.

This preview shows a subset of the rows and columns in iteration_info.csv.

iterationresidual_pressureresidual_x_velocityresidual_y_velocityresidual_z_velocity
11100
20.223729370.50264720.384854560.40365815
300.01104060750.00382498880.00682337680.0058525684
310.0099277770.00330084660.00538097370.004752265

What we learned

We:

  • added and positioned insulating and conducting cuboids;
  • checked component placement with dry runs;
  • inspected speed and temperature results; and
  • restricted an inlet around a solid component.

We can now separate three roles in an electronics model: insulating geometry shapes the flow, conducting geometry carries heat, and boundary regions determine where the fluid enters. Next, we will model a chip with a compact thermal model and replace the generic powered block with an engineering junction-temperature prediction.