Importing 1D Data as Table and Specifying the Boundary Conditions

The exhaust manifold of this tutorial is part of a four-stroke four cylinder engine. Within one engine cycle the crankshaft completes two revolutions (720 deg). Mass flows and temperatures passing through exhaust runners and the pressure at the manifold outlet are time-dependent (crank angle dependent) quantities. These quantities are obtained from a 1D engine block simulation for one engine cycle.

The time dependent temperature and mass flow of the 4 exhaust runners are plotted as follows:




  1. To import the boundary conditions table:
    1. Right-click the Tools > Tables node and select New Table > File Table.
    2. In the dialog select 1D_table.csv from the heatTransferAndRadiation folder of the downloaded tutorial files and click Open.
  2. Create a report that returns the current time for the fluid solution:
    1. Right-click the Reports node and select New > System > Physics Continuum Physical Time.
    2. Rename the Physics Continuum Physical Time 1 node to Physical Time Fluid(s).
    3. Select the report Physical Time Fluid(s) and set the properties as follows:
      Property Setting
      Unit s
      Physics Continuum Physics Fluid
To apply boundary conditions that interpolate the 1D table, you use the interpolateTablePeriodic function. The function is set to interpolate values based on the relative time elapsed within the current fluid engine cycle, irrespective of how many engine cycles have already been completed.
  1. Expand the Regions > Exhaust Gas > Boundaries node and multi-select the nodes, runner01, runner02, runner03, runner04, and outlet. Right-click one of the nodes and select Edit.
  2. Within the Multiple Objects dialog, click Expand/Contract Tree followed by Expand/Contract Values. For each boundary, keep the Method for the following [physics values] as Constant and assign their values as shown in the table:
    Boundary Physics Values Node Properties Setting
    runner01 Mass Flow Rate Value interpolateTablePeriodic(@Table("1D_table"),"time", LINEAR, "MassFlowRunner01[kg/s]",${PhysicalTimeFluid(s)Report}, ${FluidCycleLength(s)})
    Total Temperature Value interpolateTablePeriodic(@Table("1D_table"),"time", LINEAR, "TemperatureRunner01[k]",${PhysicalTimeFluid(s)Report}, ${FluidCycleLength(s)})
    runner02 Mass Flow Rate Value interpolateTablePeriodic(@Table("1D_table"),"time", LINEAR, "MassFlowRunner02[kg/s]",${PhysicalTimeFluid(s)Report}, ${FluidCycleLength(s)})
    Total Temperature Value interpolateTablePeriodic(@Table("1D_table"),"time", LINEAR, "TemperatureRunner02[k]",${PhysicalTimeFluid(s)Report}, ${FluidCycleLength(s)})
    runner03 Mass Flow Rate Value interpolateTablePeriodic(@Table("1D_table"),"time", LINEAR, "MassFlowRunner03[kg/s]",${PhysicalTimeFluid(s)Report}, ${FluidCycleLength(s)})
    Total Temperature Value interpolateTablePeriodic(@Table("1D_table"),"time", LINEAR, "TemperatureRunner03[k]",${PhysicalTimeFluid(s)Report}, ${FluidCycleLength(s)})
    runner04 Mass Flow Rate Value interpolateTablePeriodic(@Table("1D_table"),"time", LINEAR, "MassFlowRunner04[kg/s]",${PhysicalTimeFluid(s)Report}, ${FluidCycleLength(s)})
    Total Temperature Value interpolateTablePeriodic(@Table("1D_table"),"time", LINEAR, "TemperatureRunner04[k]",${PhysicalTimeFluid(s)Report}, ${FluidCycleLength(s)})
    outlet Pressure Value interpolateTablePeriodic(@Table("1D_table"),"time", LINEAR, "OutletPressure[Pa]",${PhysicalTimeFluid(s)Report}, ${FluidCycleLength(s)})
    Static Temperature Value interpolateTablePeriodic(@Table("1D_table"),"time", LINEAR, "OutletTemperature[k]",${PhysicalTimeFluid(s)Report}, ${FluidCycleLength(s)})