def METHOD_NAME(build_unit):
    m = build_unit
    optarg = {"tol": 1e-7, "max_iter": 40}
    solver.options = optarg
    # solve model
    results = solver.solve(m, tee=True)
    # Check for optimal solution
    assert check_optimal_termination(results)
    assert degrees_of_freedom(m) == 0
    assert pytest.approx(434.650, abs=1e-3) == value(
        m.fs.unit.side_1_outlet.temperature[0]
    )
    assert pytest.approx(522.135, abs=1e-3) == value(
        m.fs.unit.side_2_outlet.temperature[0]
    )
    assert pytest.approx(642.115, abs=1e-3) == value(
        m.fs.unit.side_3_outlet.temperature[0]
    )
    # energy balance
    assert pytest.approx(0, abs=1e-3) == value(
        m.fs.unit.side_1.properties_in[0].flow_mol
        * m.fs.unit.side_1.properties_in[0].enth_mol
        - m.fs.unit.side_1.properties_out[0].flow_mol
        * m.fs.unit.side_1.properties_out[0].enth_mol
        + m.fs.unit.heat_duty_side_1[0]
    )
    assert pytest.approx(0, abs=1e-3) == value(
        +m.fs.unit.side_2.properties_in[0].flow_mol
        * m.fs.unit.side_2.properties_in[0].enth_mol
        - m.fs.unit.side_2.properties_out[0].flow_mol
        * m.fs.unit.side_2.properties_out[0].enth_mol
        + m.fs.unit.heat_duty_side_2[0]
    )
    assert pytest.approx(0, abs=1e-3) == value(
        +m.fs.unit.side_3.properties_in[0].flow_mol
        * m.fs.unit.side_3.properties_in[0].enth_mol
        - m.fs.unit.side_3.properties_out[0].flow_mol
        * m.fs.unit.side_3.properties_out[0].enth_mol
        + m.fs.unit.heat_duty_side_3[0]
    )
    # pressure drop
    assert pytest.approx(-1000.0, abs=1e-3) == value(m.fs.unit.deltaP_side_1[0])