Skip to content

3D Induction Heating Application

All the files necessary to reproduce the results can be obtained via downloading this zip file.

Hint

If you are not familiar with coupled magnetic thermal problems, consider visiting our tutorial on Induction Heating first.

Problem and setup description

The problem is really similar to the tutorial Induction Heating but here we focus on applying openCFS in a "real world scenario" by simulating a 3D setup used for parameter identification of rod material (in the region V_probe). The application consists of one primary coil (V_coil_middle) which is driven by a prescribed source current density and two secondary coils (V_coil_top and V_coil_bottom) which are open and where the induced voltage is evaluated.

In general, the setup is depicted in the following figure:

Temperature Dependence

In order to have the ability to perform parameter studies regarding the sensitivity of the probe permeability w.r.t. the induced voltages in the secondary coils, the mesh is defined to be fully parametrized using the coreform cubit journal file model.jou.

################################################################################################
# DEFINITION OF ALL VARIABLES                                                                                                                                                                                                       #
################################################################################################
# coil top
#{N_top = 5000}                       # number of turns of top coil
#{d_wire_top = 0.5e-3}                # diameter of wire of top coil
#{l_top = 100e-3}                     # length of top coil

# coil middle
#{N_middle = 1000}                     # number of turns of middle coil
#{d_wire_middle = 1e-3}                # diameter of wire of middle coil
#{l_middle = 100e-3}                   # length of middle coil

# coil bottom
#{N_bottom = 5000}                       # number of turns of bottom coil
#{d_wire_bottom = 0.5e-3}                # diameter of wire of bottom coil
#{l_bottom = 100e-3}                     # length of bottom coil

# Probe cylinder (diameter x length) and intermiediate layer
#{d_probe = 22e-3}                               # diameter of the probe
#{h_probe = 300e-3}                              # height of probe
#{d_inter = 2e-3}                                # thickness of the intermediate layer as radius from the center of the cyinder probe

# Core regarding lengths
#{l_limb_probe_coil = 100e-3}                                   # distance from probe to coil
#{l_limb_coil_end = 25e-3}                                      # distance from end of coil until yoke of the core begin
#{l_limb_top = l_limb_probe_coil + l_top + l_limb_coil_end}     # full length of limb on the top
#{l_yoke_end_coil = 30e-3}                                      # distance from end of the yoke to the beginning of the coil
#{l_yoke_coil_end = 30e-3}                                      # distance from the end of the coil to the other end of he yoke
#{l_yoke = l_yoke_end_coil + l_bottom + l_yoke_coil_end}        # full length of the yoke
#{l_limb_bottom = l_limb_top}                                   # full length of the bottom limb, must equal the length of the top limb!

# Core regarding cross sections
#{h_limb_top = 22e-3}
#{b_limb_top = 22e-3}
#{h_yoke = 22e-3}
#{b_yoke = 22e-3}
#{h_limb_bottom = 22e-3}
#{b_limb_bottom = 22e-3}

# air cube around the setup
#{c_h = 3}                                           # coeffiecent for the far edge regarding the height
#{c_b = 6}                                           # coeffiecent for the far edge regarding the width
#{c_l = 3}                                           # coeffiecent for the far edge regarding the length
#{h_air = h_probe*c_h}                               # height air
#{b_air = b_limb_top* c_b}                           # width air
#{l_air = ((d_probe/2)+ l_limb_top + b_yoke)*c_l}    # length air

Defining the problem in openCFS

In the simulation xml files we follow two different approaches described in described in MagHeatPDE:

  • magnetics in frequency-domain - transient heat: linear magnetics - linear heat: This means we can only use constant (no saturation BH curve, no temperature dependency) magnetic permeability, otherwise we would need to switch to a transient magnetics - transient heat setup or use multiharmonic magnetics. This is carried out using the harmonicSim.xmlsimulation file.
  • transient nonlinear magnetics: pure transient simulation of the magnetic problem to identify local saturation behavior. In this case, the core and the probe are supposed to be made of 50CrMo4 steel with the saturation curves at room temperature provided in bh25.fnc. This is carried out using the transientSim.xmlsimulation file.

In both cases, we use two precompute steps for describing the source current direction in the primary coil as described in our Coils tutorial:

<!--
     ===========================================================================
                Calculate the current direction with ElecConduction PDE
                Coil part 1
     ===========================================================================
-->

<sequenceStep index="1">
    <analysis>
        <static />
    </analysis>
    <pdeList>
        <elecConduction>
            <regionList>
                <region name="V_coil_middle1" polyId="H1" />
            </regionList>
            <bcsAndLoads>
                <potential name="S_coil_middle1" value="1" />
                <potential name="S_coil_middle2" value="0" />
            </bcsAndLoads>
            <storeResults>
                ...
            </storeResults>
        </elecConduction>
    </pdeList>
</sequenceStep>

<!--
     ===========================================================================
                Calculate the current direction with ElecConduction PDE
                Coil part 2
     ===========================================================================
-->

<sequenceStep index="2">
    <analysis>
        <static />
    </analysis>
    <pdeList>
        <elecConduction>
            <regionList>
                <region name="V_coil_middle2" polyId="H1" />
            </regionList>
            <bcsAndLoads>
                <potential name="S_coil_middle1" value="0" />
                <potential name="S_coil_middle2" value="1" />
            </bcsAndLoads>
            <storeResults>
                ...
            </storeResults>
        </elecConduction>
    </pdeList>
</sequenceStep>

These current density directions ar then read and scaled in the magnetic simulation

<coilList>
  <coil id="coil_Q1">
      <source type="current" value="100" />
      <part id="Q1">
          <regionList>
              <region name="V_coil_middle1" />
          </regionList>
          <direction>
              <external normalise="no">
                  <sequenceStep index="1">
                      <quantity name="elecCurrentDensity" pdeName="elecConduction" />
                      <timeFreqMapping>
                          <constant />
                      </timeFreqMapping>
                  </sequenceStep>
              </external>
          </direction>
          <wireCrossSection area="1e-2" />
      </part>
      <part id="Q2">
          <regionList>
              <region name="V_coil_middle2" />
          </regionList>
          <direction>
              <external normalise="no">
                  <sequenceStep index="2">
                      <quantity name="elecCurrentDensity" pdeName="elecConduction" />
                      <timeFreqMapping>
                          <constant />
                      </timeFreqMapping>
                  </sequenceStep>
              </external>
          </direction>
          <wireCrossSection area="1e-2" />
      </part>
  </coil>
</coilList>

Visualization ParaView

In this application description, we only have a very brief look at both results because all the other results can be obtained in a straight forward way like in the other induction heating application example or in the description of InductionHeating.

Let us just briefly discuss the nonlinear transient result at timestep 9, displayed in the following figure

Temperature Dependence

First of all, we can observe a flux concentration at the tips of the yoke close to the probe as well as in the inside of the 90 degree corners. This means that the material is not fully saturated because if it was, these spikes would "flatten out" due to the decreased permeability and the flux would tend to flow in the remaining non-saturated parts, still having higher permeability.

Looking at the result from the harmonicSim.xml simulation, we can clearly see the rise of the temperature in the rod region, based on the induced Joule losses.

Temperature Dependence