Skip to content

Vacuum arc remelting (VAR)

Vacuum arc remelting refines the welded consumable electrode into an aerospace-grade ingot — the functional unit of this dataset (1 kg of ingot). The VAR step contributes arc electricity and crucible cooling water; it also pulls in the upstream welding and transport flows, scaled by the VAR mass yield (yield_var).

Foreground Flows

acap_ti64.var.model.requirement_var_electricity

requirement_var_electricity(output_amount, *, melt_voltage, melt_current, melt_rate, ecoinvent)

Arc electricity exchange for VAR remelting output_amount kg of ingot.

Specific arc energy per kg of ingot:

\[ E_\mathrm{spec} = \frac{V_\mathrm{var} \, I_\mathrm{var}}{\dot{m}_\mathrm{var}} \]

The result is multiplied by output_amount and unit-converted from joule to ecoinvent["unit"] (kilowatt hour by default). Auxiliary loads (vacuum pumps, cooling-water circulation) are NOT included here; add them as separate requirement_* functions when data permits.

Source code in src/acap_ti64/var/model.py
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
def requirement_var_electricity(output_amount, *,
                                melt_voltage, melt_current, melt_rate,
                                ecoinvent):
    r"""Arc electricity exchange for VAR remelting ``output_amount`` kg of ingot.

    Specific arc energy per kg of ingot:

    \[ E_\mathrm{spec} = \frac{V_\mathrm{var} \, I_\mathrm{var}}{\dot{m}_\mathrm{var}} \]

    The result is multiplied by ``output_amount`` and unit-converted
    from joule to ``ecoinvent["unit"]`` (kilowatt hour by default).
    Auxiliary loads (vacuum pumps, cooling-water circulation) are NOT
    included here; add them as separate ``requirement_*`` functions
    when data permits.
    """
    energy_J_per_kg = (melt_voltage * melt_current) / melt_rate
    amount = _dispatch.convert(energy_J_per_kg * output_amount,
                               "joule", ecoinvent["unit"])
    return {**ecoinvent, "amount": amount}
Parameter Source(s) Symbol Unit Nominal value Distribution
VAR melt voltage Patel & Fiore (2016), Karimi-Sibaki et al. (2020) V_var V 44.7 pooled, 2 sources (range 30.5–44.7)
VAR melt current Patel & Fiore (2016), Karimi-Sibaki et al. (2020), ALD Vacuum Technologies (n.d.) I_var A 33000 pooled, 3 sources (range 5000–48000)
VAR melt rate Patel & Fiore (2016), Karimi-Sibaki et al. (2020) m_dot_var kg/s 0.45 pooled, 2 sources (range 0.04833–0.45)

ecoinvent target: market for electricity, low voltage (kilowatt hour; location varies by region).

acap_ti64.var.model.requirement_var_cooling_water

requirement_var_cooling_water(output_amount, *, cooling_water_flow, melt_rate, ecoinvent)

Crucible cooling-water exchange per kg of ingot.

Make-up water per kg of ingot:

\[ m_\mathrm{cw} = \frac{\dot{m}_\mathrm{cw}}{\dot{m}_\mathrm{var}} \]

Closed-loop recirculation is excluded; only evaporative make-up is modelled.

Source code in src/acap_ti64/var/model.py
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
def requirement_var_cooling_water(output_amount, *,
                                  cooling_water_flow, melt_rate, ecoinvent):
    r"""Crucible cooling-water exchange per kg of ingot.

    Make-up water per kg of ingot:

    \[ m_\mathrm{cw} = \frac{\dot{m}_\mathrm{cw}}{\dot{m}_\mathrm{var}} \]

    Closed-loop recirculation is excluded; only evaporative make-up
    is modelled.
    """
    cw_kg_per_kg = cooling_water_flow / melt_rate
    amount = _dispatch.convert(cw_kg_per_kg * output_amount,
                               "kilogram", ecoinvent["unit"])
    return {**ecoinvent, "amount": amount}
Parameter Source(s) Symbol Unit Nominal value Distribution
VAR cooling water flow (uncited) m_dot_cw_var kg/s 2.75 uniform 0.5–5 (placeholder)
VAR melt rate Patel & Fiore (2016), Karimi-Sibaki et al. (2020) m_dot_var kg/s 0.45 pooled, 2 sources (range 0.04833–0.45)

ecoinvent target: market for tap water (kilogram; location varies by region).

Auxiliary Functions

Intermediate quantities used by the flow models above (diagnostics and cross-checks, not LCI outputs).

acap_ti64.var.model.auxiliary_electrode_mass

auxiliary_electrode_mass(electrode_diameter, electrode_length, ti64_density)

Mass of a cylindrical Ti-6Al-4V welded consumable electrode (kg).

\[ m_\mathrm{electrode} = \rho_\mathrm{Ti64}\,\pi\left(\tfrac{D_\mathrm{electrode}}{2}\right)^{2} L_\mathrm{electrode} \]

The welded rod that feeds the VAR furnace. Exposed for documentation and cross-checking against the :py:data:yield_var parameter; the per-kg LCI itself routes upstream scaling through yield_var.

Source code in src/acap_ti64/var/model.py
41
42
43
44
45
46
47
48
49
50
def auxiliary_electrode_mass(electrode_diameter, electrode_length, ti64_density):
    r"""Mass of a cylindrical Ti-6Al-4V welded consumable electrode (kg).

    \[ m_\mathrm{electrode} = \rho_\mathrm{Ti64}\,\pi\left(\tfrac{D_\mathrm{electrode}}{2}\right)^{2} L_\mathrm{electrode} \]

    The welded rod that feeds the VAR furnace. Exposed for documentation and
    cross-checking against the :py:data:`yield_var` parameter; the per-kg LCI
    itself routes upstream scaling through ``yield_var``.
    """
    return ti64_density * np.pi * (electrode_diameter / 2.0)**2 * electrode_length

acap_ti64.var.model.auxiliary_ingot_mass

auxiliary_ingot_mass(ingot_diameter, ingot_length, ti64_density)

Mass of a cylindrical Ti-6Al-4V VAR ingot (kg).

\[ m_\mathrm{ingot} = \rho_\mathrm{Ti64}\,\pi\left(\tfrac{D_\mathrm{ingot}}{2}\right)^{2} L_\mathrm{ingot} \]

See auxiliary_electrode_mass.

Source code in src/acap_ti64/var/model.py
53
54
55
56
57
58
59
60
def auxiliary_ingot_mass(ingot_diameter, ingot_length, ti64_density):
    r"""Mass of a cylindrical Ti-6Al-4V VAR ingot (kg).

    \[ m_\mathrm{ingot} = \rho_\mathrm{Ti64}\,\pi\left(\tfrac{D_\mathrm{ingot}}{2}\right)^{2} L_\mathrm{ingot} \]

    See [`auxiliary_electrode_mass`][acap_ti64.var.model.auxiliary_electrode_mass].
    """
    return ti64_density * np.pi * (ingot_diameter / 2.0)**2 * ingot_length

acap_ti64.var.model.auxiliary_var_yield

auxiliary_var_yield(electrode_diameter, electrode_length, ingot_diameter, ingot_length, ti64_density)

Geometric VAR mass yield.

\[ \mathrm{yield}_\mathrm{var} = \frac{m_\mathrm{ingot}}{m_\mathrm{electrode}} \]

Returns:

Type Description
float or ndarray

Should sit in roughly [0.85, 0.99] for sensible geometry; this is a diagnostic, NOT the value used by var for the per-kg-ingot upstream scaling.

Source code in src/acap_ti64/var/model.py
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
def auxiliary_var_yield(electrode_diameter, electrode_length,
                        ingot_diameter, ingot_length, ti64_density):
    r"""Geometric VAR mass yield.

    \[ \mathrm{yield}_\mathrm{var} = \frac{m_\mathrm{ingot}}{m_\mathrm{electrode}} \]

    Returns
    -------
    float or numpy.ndarray
        Should sit in roughly [0.85, 0.99] for sensible geometry; this
        is a diagnostic, NOT the value used by `var` for the
        per-kg-ingot upstream scaling.
    """
    m_e = auxiliary_electrode_mass(electrode_diameter, electrode_length, ti64_density)
    m_i = auxiliary_ingot_mass(ingot_diameter, ingot_length, ti64_density)
    return m_i / m_e