Skip to content

Plasma arc welding

Vacuum plasma arc welding joins pressed Ti-6Al-4V compacts into a single consumable electrode rod for vacuum arc remelting. Each foreground flow below lists its governing equation and the sourced parameters that feed it; the electricity and argon flows scale with the weld length per unit mass, while the metal-input flows follow directly from the alloy composition.

Foreground Flows

acap_ti64.plasma_arc_welding.model.requirement_electricity

requirement_electricity(output_amount, *, welding_voltage, welding_current, vacuum_power, welding_speed, number_of_seams, electrode_diameter, ti64_density, ecoinvent)

Electricity exchange for welding output_amount kg of electrode.

Specific energy per kg of welded electrode, with weld length per unit mass l from auxiliary_weld_length_per_mass:

\[ E = \frac{V\,I + p_\mathrm{vac}}{v}\, l, \qquad l = \frac{4\,N_\mathrm{seams}}{\rho_\mathrm{Ti64}\,\pi\,D_\mathrm{electrode}^{2}} \]

The result is multiplied by output_amount and unit-converted to ecoinvent["unit"] (joule → kilowatt hour by default).

Returns:

Type Description
dict

{**ecoinvent, "amount": ...}.

Source code in src/acap_ti64/plasma_arc_welding/model.py
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
def requirement_electricity(output_amount, *,
                            welding_voltage, welding_current, vacuum_power,
                            welding_speed, number_of_seams, electrode_diameter,
                            ti64_density, ecoinvent):
    r"""Electricity exchange for welding ``output_amount`` kg of electrode.

    Specific energy per kg of welded electrode, with weld length per unit
    mass ``l`` from [`auxiliary_weld_length_per_mass`][acap_ti64.plasma_arc_welding.model.auxiliary_weld_length_per_mass]:

    \[ E = \frac{V\,I + p_\mathrm{vac}}{v}\, l, \qquad
       l = \frac{4\,N_\mathrm{seams}}{\rho_\mathrm{Ti64}\,\pi\,D_\mathrm{electrode}^{2}} \]

    The result is multiplied by ``output_amount`` and unit-converted to
    ``ecoinvent["unit"]`` (joule → kilowatt hour by default).

    Returns
    -------
    dict
        ``{**ecoinvent, "amount": ...}``.
    """
    l = auxiliary_weld_length_per_mass(number_of_seams, electrode_diameter, ti64_density)
    energy_J_per_kg = (welding_voltage * welding_current + vacuum_power) * (1.0 / welding_speed) * l
    amount = _dispatch.convert(energy_J_per_kg * output_amount, "joule", ecoinvent["unit"])
    return {**ecoinvent, "amount": amount}
Parameter Source(s) Symbol Unit Nominal value Distribution
Welding voltage CN109483030B V V 52.5 pooled, 3 sources (range 40–70)
Welding current CN109483030B I A 458.3 pooled, 3 sources (range 300–600)
Vacuum power (uncited) p_vac W 11000 uniform 2000–20000 (placeholder)
Welding speed CN109483030B v m/s 0.002972 pooled, 3 sources (range 0.001667–0.005)
Number of seams CN109483030B, CN107619942B N_seams dimensionless 5.4 pooled, 5 sources (range 4–6)
Electrode diameter CN109483030B D_electrode m 0.585 pooled, 3 sources (range 0.45–0.82)
Ti-6Al-4V density AZoM (2012) rho_Ti64 kg/m**3 4430 point 4430

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

acap_ti64.plasma_arc_welding.model.requirement_argon

requirement_argon(output_amount, *, argon_flow_rate, welding_speed, number_of_seams, electrode_diameter, ti64_density, ecoinvent)

Argon exchange for welding output_amount kg of electrode.

Continuous make-up flow during welding only (chamber back-fill is out of scope), with weld length per unit mass l from auxiliary_weld_length_per_mass:

\[ w_\mathrm{Ar} = \frac{r}{v}\, l \]

Returns an exchange dict.

Source code in src/acap_ti64/plasma_arc_welding/model.py
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
def requirement_argon(output_amount, *,
                      argon_flow_rate, welding_speed, number_of_seams,
                      electrode_diameter, ti64_density, ecoinvent):
    r"""Argon exchange for welding ``output_amount`` kg of electrode.

    Continuous make-up flow during welding only (chamber back-fill is out of
    scope), with weld length per unit mass ``l`` from
    [`auxiliary_weld_length_per_mass`][acap_ti64.plasma_arc_welding.model.auxiliary_weld_length_per_mass]:

    \[ w_\mathrm{Ar} = \frac{r}{v}\, l \]

    Returns an exchange dict.
    """
    l = auxiliary_weld_length_per_mass(number_of_seams, electrode_diameter, ti64_density)
    argon_kg_per_kg = argon_flow_rate * (1.0 / welding_speed) * l
    amount = _dispatch.convert(argon_kg_per_kg * output_amount, "kilogram", ecoinvent["unit"])
    return {**ecoinvent, "amount": amount}
Parameter Source(s) Symbol Unit Nominal value Distribution
Argon flow rate (uncited) r kg/s 3.500e-04 uniform 1.000e-04–6.000e-04 (placeholder)
Welding speed CN109483030B v m/s 0.002972 pooled, 3 sources (range 0.001667–0.005)
Number of seams CN109483030B, CN107619942B N_seams dimensionless 5.4 pooled, 5 sources (range 4–6)
Electrode diameter CN109483030B D_electrode m 0.585 pooled, 3 sources (range 0.45–0.82)
Ti-6Al-4V density AZoM (2012) rho_Ti64 kg/m**3 4430 point 4430

ecoinvent target: market for argon, liquid (kilogram; location varies by region).

acap_ti64.plasma_arc_welding.model.requirement_titanium_sponge

requirement_titanium_sponge(output_amount, *, ti_mass_fraction, ecoinvent)

Ti-sponge exchange for welding output_amount kg of electrode.

\[ m_\mathrm{Ti} = w_\mathrm{Ti}\, m \]
Source code in src/acap_ti64/plasma_arc_welding/model.py
112
113
114
115
116
117
118
def requirement_titanium_sponge(output_amount, *, ti_mass_fraction, ecoinvent):
    r"""Ti-sponge exchange for welding ``output_amount`` kg of electrode.

    \[ m_\mathrm{Ti} = w_\mathrm{Ti}\, m \]
    """
    amount = _dispatch.convert(ti_mass_fraction * output_amount, "kilogram", ecoinvent["unit"])
    return {**ecoinvent, "amount": amount}
Parameter Source(s) Symbol Unit Nominal value Distribution
Ti mass fraction AZoM (2012) w_Ti dimensionless 0.9 point 0.9

ecoinvent target: market for titanium sponge (kilogram; location varies by region).

acap_ti64.plasma_arc_welding.model.requirement_aluminum

requirement_aluminum(output_amount, *, al_mass_fraction, ecoinvent)

Aluminium-ingot exchange for welding output_amount kg of electrode.

\[ m_\mathrm{Al} = w_\mathrm{Al}\, m \]
Source code in src/acap_ti64/plasma_arc_welding/model.py
121
122
123
124
125
126
127
def requirement_aluminum(output_amount, *, al_mass_fraction, ecoinvent):
    r"""Aluminium-ingot exchange for welding ``output_amount`` kg of electrode.

    \[ m_\mathrm{Al} = w_\mathrm{Al}\, m \]
    """
    amount = _dispatch.convert(al_mass_fraction * output_amount, "kilogram", ecoinvent["unit"])
    return {**ecoinvent, "amount": amount}
Parameter Source(s) Symbol Unit Nominal value Distribution
Al mass fraction AZoM (2012) w_Al dimensionless 0.06 point 0.06

ecoinvent target: aluminium ingot, primary, to aluminium, wrought alloy market (kilogram; location varies by region).

acap_ti64.plasma_arc_welding.model.requirement_vanadium

requirement_vanadium(output_amount, *, v_mass_fraction, vanadium_gwp, ecoinvent)

Vanadium-attributable cradle-to-gate CO2 emission.

\[ m_{\mathrm{CO_2}} = w_\mathrm{V}\, m\, \mathrm{GWP}_\mathrm{V} \]

Ecoinvent does not carry a representative vanadium-metal activity, so the vanadium term is added as a direct fossil-CO2 biosphere flow sized by a literature cradle-to-gate GWP factor (Nuss & Eckelman 2014). The flow target in exchanges/*.yaml is Carbon dioxide, fossil with location: biosphere.

Returns:

Type Description
dict

{**ecoinvent, "amount": kg CO2 emitted to air per output_amount}.

Source code in src/acap_ti64/plasma_arc_welding/model.py
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
def requirement_vanadium(output_amount, *, v_mass_fraction, vanadium_gwp,
                         ecoinvent):
    r"""Vanadium-attributable cradle-to-gate CO2 emission.

    \[ m_{\mathrm{CO_2}} = w_\mathrm{V}\, m\, \mathrm{GWP}_\mathrm{V} \]

    Ecoinvent does not carry a representative vanadium-metal activity,
    so the vanadium term is added as a direct fossil-CO2 biosphere flow
    sized by a literature cradle-to-gate GWP factor
    (Nuss & Eckelman 2014). The flow target in ``exchanges/*.yaml`` is
    ``Carbon dioxide, fossil`` with ``location: biosphere``.

    Parameters
    ----------
    output_amount : float or numpy.ndarray
        Mass of welded electrode produced (kg).
    v_mass_fraction : float or numpy.ndarray
        Vanadium mass fraction of Ti-6Al-4V (dimensionless).
    vanadium_gwp : float or numpy.ndarray
        Cradle-to-gate GWP100 of pure vanadium metal (kg CO2-eq / kg V).
    ecoinvent : dict
        Biosphere target dict, ``{name, location, unit}``.

    Returns
    -------
    dict
        ``{**ecoinvent, "amount": kg CO2 emitted to air per output_amount}``.
    """
    co2_kg = v_mass_fraction * output_amount * vanadium_gwp
    amount = _dispatch.convert(co2_kg, "kilogram", ecoinvent["unit"])
    return {**ecoinvent, "amount": amount}
Parameter Source(s) Symbol Unit Nominal value Distribution
V mass fraction AZoM (2012) w_V dimensionless 0.04 point 0.04
Vanadium GWP factor Nuss & Eckelman (2014) GWP_V kg 36.2 uniform 19.4–53

ecoinvent target: Carbon dioxide, fossil (kilogram; location varies by region).

Auxiliary Functions

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

acap_ti64.plasma_arc_welding.model.auxiliary_weld_length_per_mass

auxiliary_weld_length_per_mass(N_seams, D_electrode, rho_Ti64)

Meters of weld per kilogram of Ti-6Al-4V processed.

\[ l = \frac{4\,N_\mathrm{seams}}{\rho_\mathrm{Ti64}\,\pi\,D_\mathrm{electrode}^{2}} \]

The electrode rod length cancels in the per-mass normalisation.

Parameters:

Name Type Description Default
N_seams float or ndarray
required
D_electrode float or ndarray

Electrode diameter (m).

required
rho_Ti64 float or ndarray

Bulk density of Ti-6Al-4V (kg/m^3).

required

Returns:

Type Description
float or ndarray

Weld length per kg of welded electrode (m/kg).

Source code in src/acap_ti64/plasma_arc_welding/model.py
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
def auxiliary_weld_length_per_mass(N_seams, D_electrode, rho_Ti64):
    r"""Meters of weld per kilogram of Ti-6Al-4V processed.

    \[ l = \frac{4\,N_\mathrm{seams}}{\rho_\mathrm{Ti64}\,\pi\,D_\mathrm{electrode}^{2}} \]

    The electrode rod length cancels in the per-mass normalisation.

    Parameters
    ----------
    N_seams : float or numpy.ndarray
    D_electrode : float or numpy.ndarray
        Electrode diameter (m).
    rho_Ti64 : float or numpy.ndarray
        Bulk density of Ti-6Al-4V (kg/m^3).

    Returns
    -------
    float or numpy.ndarray
        Weld length per kg of welded electrode (m/kg).
    """
    return 4.0 * N_seams / (rho_Ti64 * np.pi * D_electrode**2)