Beispiel #1
0
def S002_EC3(conn):
    # Report and results manager
    rp = reports.Report(conn)

    # Setting up parts
    bolt = bolts.EuroBolt(conn.bolts['MAIN'], rp)
    bolt_group = bolts.ShearBoltArray(conn.bolt_arrays['MAIN'], bolt, rp)
    sls_forces = loads.ForcesSet(conn.forces['SLS'], rp)
    uls_forces = loads.ForcesSet(conn.forces['ULS'], rp)

    # Rotated forces to check plates and bolts
    rot_sls = sls_forces.rot90(2, 1, "SIDE_SLS", rp)
    rot_uls = uls_forces.rot90(2, 1, "SIDE_ULS", rp)

    bracing_profile = steel.Profile(conn.profiles['ARRIVING'], rp)
    landing_profile = steel.Profile(conn.profiles['LANDING'], rp)
    cover_plates = steel.BoltedPlate(conn.plates['COVER_PLATE'], rp)
    in_pipe_plate = steel.WeldedBoltedPlate(conn.plates['INPIPE_PLATE'], rp)
    in_pipe_plate.locked_edges = ['e1_main']
    pipe_stiffener = steel.WeldedPlate(conn.plates['PIPE_STIFFENER'], rp)

    # Solving bolts
    if all([bolt_group.check(rot_sls, rot_uls, rp),
            bracing_profile.check(rp), landing_profile.check(rp),
            cover_plates.check(bolt_group, rot_uls, rp),
            in_pipe_plate.check(bolt_group, rot_uls, rp),
            pipe_stiffener.check(rot_uls, rp)]):
        rp.set_safe()
    else:
        rp.set_unsafe()

    return rp
Beispiel #2
0
def S099_EC3(parts):
    # Report and results manager
    rp = reports.Report(parts['calc'])

    # Setting up parts
    bolt = bolts.EuroBolt(parts['main_bolt'], rp)
    bolt_group = bolts.ShearTensionBoltArray(
        parts['main_bolt_array'], bolt, rp)
    sls_forces = loads.ForcesSet(parts['sls_force'], rp)
    uls_forces = loads.ForcesSet(parts['uls_force'], rp)

    beam_profile = steel.Profile(parts['beam_profile'], rp)
    column_profile = steel.Profile(parts['column_profile'], rp)
    end_plate = steel.BoltedPlate(parts['end_plate'], rp)
    position = steel.SectionPosition(parts['main_position'], rp)
    position.profile = beam_profile
    position.bolt_array = bolt_group

    # set the conected plate so the snug front plate solver can work
    bolt_group.connected_plate = end_plate

    # Solving bolts

    if all([bolt_group.check(sls_forces, uls_forces, rp),
            beam_profile.check(rp), column_profile.check(rp),
            end_plate.check(bolt_group, uls_forces, rp),
            end_plate.check_collisions_legacy(bolt_group, beam_profile, position, rp),
            end_plate.check_t_stubs_legacy(
                bolt_group, uls_forces, beam_profile, position, rp)]):
        rp.set_safe()
    else:
        rp.set_unsafe()

    return rp
Beispiel #3
0
def S003_EC3(conn):
    # Report and results manager
    rp = reports.Report(conn)

    # Setting up parts
    bolt = bolts.EuroBolt(conn.bolts['MAIN'], rp)
    bolt_group = bolts.ShearBoltArray(conn.bolt_arrays['MAIN'], bolt, rp)
    sls_forces = loads.ForcesSet(conn.forces['SLS'], rp)
    uls_forces = loads.ForcesSet(conn.forces['ULS'], rp)

    # Rotated forces to check plates and bolts
    rot_sls = sls_forces.rot90(2, 1, "SIDE_SLS", rp)
    rot_uls = uls_forces.rot90(2, 1, "SIDE_ULS", rp)

    bracing_profile = steel.Profile(conn.profiles['ARRIVING'], rp)
    landing_profile = steel.Profile(conn.profiles['LANDING'], rp)
    gusset_plate = steel.BoltedPlate(conn.plates['GUSSET_PLATE'], rp)
    gusset_plate.locked_edges = ['e1_main']
    bracing_profile.bolt_the_web(bolt_group, gusset_plate, rp)

    if all([
            bolt_group.check(rot_sls, rot_uls, rp),
            bracing_profile.check(rp),
            landing_profile.check(rp),
            bracing_profile.bolted_web.check(rot_uls, rp),
            gusset_plate.check(bolt_group, rot_uls, rp)
    ]):
        rp.set_safe()
    else:
        rp.set_unsafe()

    return rp
Beispiel #4
0
def P003_EC3(parts):
    # Report and results manager
    rp = reports.Report(parts['calc'])
    # Setting up parts
    bolt = bolts.EuroBolt(parts['main_bolt'], rp)
    bolt_group = bolts.ShearBoltArray(parts['main_bolt_array'], bolt, rp)
    sls_forces = loads.ForcesSet(parts['sls_force'], rp)
    uls_forces = loads.ForcesSet(parts['uls_force'], rp)
    profile = steel.Profile(parts['main_profile'], rp)
    position = steel.SectionPosition(parts['main_position'], rp)
    position.profile = profile
    position.bolt_array = bolt_group
    plate = steel.BoltedPlate(parts['end_plate'], rp)
    # set the conected plate so the snug front plate solver can work
    bolt_group.connected_plate = plate

    # Solving bolts
    if bolt_group.check(sls_forces, uls_forces, rp) and\
            plate.check(bolt_group, uls_forces, rp) and\
            plate.check_collisions_legacy(bolt_group, profile, position, rp):
        rp.set_safe()
    else:
        rp.set_unsafe()

    return rp
Beispiel #5
0
def S009_EC3(conn):
    # Report and results manager
    rp = reports.Report(conn)

    # Setting up parts
    bolt = bolts.EuroBolt(conn.bolts['MAIN'], rp)
    bolt_group = bolts.ShearTensionBoltArray(conn.bolt_arrays['MAIN'], bolt,
                                             rp)
    sls_forces = loads.ForcesSet(conn.forces['SLS'], rp)
    uls_forces = loads.ForcesSet(conn.forces['ULS'], rp)

    beam_2 = steel.Profile(conn.profiles['ARRIVING'], rp)
    beam_1 = steel.Profile(conn.profiles['LANDING'], rp)
    end_plate = steel.BoltedPlate(conn.plates['END_PLATE'], rp)

    # set the conected plate so the snug front plate solver can work
    bolt_group.connected_plate = end_plate

    # Solving bolts

    if all([
            bolt_group.check(sls_forces, uls_forces, rp),
            beam_1.check(rp),
            beam_2.check(rp),
            end_plate.check(bolt_group, uls_forces, rp),
            end_plate.check_collisions(bolt_group, beam_2, rp),
            end_plate.check_collisions(bolt_group, beam_1, rp),
            end_plate.check_t_stubs(bolt_group, uls_forces, beam_2, rp),
            end_plate.check_t_stubs(bolt_group, uls_forces, beam_1, rp),
    ]):
        rp.set_safe()
    else:
        rp.set_unsafe()

    return rp
Beispiel #6
0
 def web_setup(self):
     self.web_bolt = bolts.EuroBolt(self.conn.bolts['WEB'], self.rp)
     self.web_bolt_group = bolts.ShearTensionBoltArray(
         self.conn.bolt_arrays['WEB'], self.web_bolt, self.rp)
     self.web_cover_plate = steel.BoltedPlate(
         self.conn.plates['WEB_COVER_PLATE'], self.rp)
     self.beam_1.bolt_the_web(
         self.web_bolt_group, self.web_cover_plate, self.rp)
     self.beam_2.bolt_the_web(
         self.web_bolt_group, self.web_cover_plate, self.rp)
     self.web_ecc = self.web_bolt_group.p2_sum() / 2 +\
         self.web_cover_plate.e2_other + self.joint_gap
Beispiel #7
0
 def flange_setup(self):
     self.flange_bolt = bolts.EuroBolt(self.conn.bolts['FLANGE'], self.rp)
     self.flange_bolt_group = bolts.ShearTensionBoltArray(
         self.conn.bolt_arrays['FLANGE'], self.flange_bolt, self.rp)
     self.flange_cover_plate = steel.BoltedPlate(
         self.conn.plates['FLANGE_COVER_PLATE'], self.rp)
     self.bottom_column.bolt_the_flange(self.flange_bolt_group,
                                        self.flange_cover_plate, self.rp)
     self.top_column.bolt_the_flange(self.flange_bolt_group,
                                     self.flange_cover_plate, self.rp)
     self.flange_ecc = self.flange_bolt_group.p2_sum() / 2 +\
         self.flange_cover_plate.e2_other + self.joint_gap
Beispiel #8
0
def S005_EC3(parts):
    # Report and results manager
    rp = reports.Report(parts['calc'])

    # Setting up parts
    bolt = bolts.EuroBolt(parts['main_bolt'], rp)
    bolt_array = bolts.ShearTensionBoltArray(parts['main_bolt_array'], bolt,
                                             rp)
    sls_forces = loads.ForcesSet(parts['sls_force'], rp)
    uls_forces = loads.ForcesSet(parts['uls_force'], rp)

    # Now, computing the resultant forces

    beam_profile = steel.Profile(parts['beam_profile'], rp)
    landing_profile = steel.Profile(parts['landing_profile'], rp)
    end_plate = steel.BoltedPlate(parts['end_plate'], rp)
    position = steel.SectionPosition(parts['main_position'], rp)
    position.profile = beam_profile
    position.bolt_array = bolt_array

    # set the conected plate so the snug front plate solver can work
    bolt_array.connected_plate = end_plate

    # If frontplate connected to U Beam Web:
    if parts['main_extra_data'].U_beam_position in ['ANY', 'WEB']\
            and parts['landing_profile'].profile_type == "U"\
            and not parts['main_extra_data'].dont_check_U_web:
        U_bolted_web = steel.BoltedWeb(landing_profile, bolt_array,
                                       parts['end_plate'], rp)
        U_bolted_web_checked = U_bolted_web.check(uls_forces, rp)
    else:
        U_bolted_web_checked = True  # Not needed OBVIAMENTE

    if all([
            U_bolted_web_checked,
            bolt_array.check(sls_forces, uls_forces, rp),
            beam_profile.check(rp),
            landing_profile.check(rp),
            end_plate.check(bolt_array, uls_forces, rp),
            end_plate.check_collisions_legacy(bolt_array, beam_profile,
                                              position, rp),
            end_plate.check_t_stubs_legacy(bolt_array, uls_forces,
                                           beam_profile, position, rp)
    ]):
        rp.set_safe()
    else:
        rp.set_unsafe()

    return rp
Beispiel #9
0
def P001_EC3(conn):
    # Report and results manager
    rp = reports.Report(conn)
    # Setting up parts
    bolt = bolts.EuroBolt(conn.bolts['MAIN'], rp)
    bolt_group = bolts.ShearBoltArray(conn.bolt_arrays['MAIN'], bolt, rp)
    sls_forces = loads.ForcesSet(conn.forces['SLS'], rp)
    uls_forces = loads.ForcesSet(conn.forces['ULS'], rp)

    # Solving bolts
    if bolt_group.check(sls_forces, uls_forces, rp):
        rp.set_safe()
    else:
        rp.set_unsafe()
    return rp
Beispiel #10
0
def P001_EC3(parts):
    # Report and results manager
    rp = reports.Report(parts['calc'])
    # Setting up parts
    bolt = bolts.EuroBolt(parts['main_bolt'], rp)
    bolt_group = bolts.ShearBoltArray(parts['main_bolt_array'], bolt, rp)
    sls_forces = loads.ForcesSet(parts['sls_force'], rp)
    uls_forces = loads.ForcesSet(parts['uls_force'], rp)

    # Solving bolts
    if bolt_group.check(sls_forces, uls_forces, rp):
        rp.set_safe()
    else:
        rp.set_unsafe()

    return rp
Beispiel #11
0
def S009_EC3(parts):
    # Report and results manager
    rp = reports.Report(parts['calc'])

    # Setting up parts
    bolt = bolts.EuroBolt(parts['main_bolt'], rp)
    bolt_array = bolts.ShearTensionBoltArray(parts['main_bolt_array'], bolt,
                                             rp)
    sls_forces = loads.ForcesSet(parts['sls_force'], rp)
    uls_forces = loads.ForcesSet(parts['uls_force'], rp)

    beam_1 = steel.Profile(parts['beam_1_profile'], rp)
    beam_2 = steel.Profile(parts['beam_2_profile'], rp)
    end_plate = steel.BoltedPlate(parts['end_plate'], rp)

    side_gap = parts['main_extra_data'].side_gap
    # g1 = plate.h / 2 - beam.h / 2 - side_gap
    beam1_g1 = end_plate.length.magnitude / 2 - \
        beam_1.mat_db_profile.h / 2 - side_gap
    position1 = steel.SectionPosition.from_g1(beam1_g1, rp)
    position1.profile = beam_1
    position1.bolt_array = bolt_array
    beam2_g1 = end_plate.length.magnitude / 2 - \
        beam_2.mat_db_profile.h / 2 - side_gap
    position2 = steel.SectionPosition.from_g1(beam2_g1, rp)
    position2.profile = beam_2
    position2.bolt_array = bolt_array

    # set the conected plate so the snug front plate solver can work
    bolt_array.connected_plate = end_plate

    if all([
            bolt_array.check(sls_forces, uls_forces, rp),
            end_plate.check(bolt_array, uls_forces, rp),
            end_plate.check_collisions_legacy(bolt_array, beam_1, position1,
                                              rp),
            end_plate.check_collisions_legacy(bolt_array, beam_2, position2,
                                              rp),
            end_plate.check_t_stubs_legacy(bolt_array, uls_forces, beam_1,
                                           position1, rp),
            end_plate.check_t_stubs_legacy(bolt_array, uls_forces, beam_2,
                                           position2, rp)
    ]):
        rp.set_safe()
    else:
        rp.set_unsafe()
    return rp
Beispiel #12
0
def P002_EC3(conn):
    # Report and results manager
    rp = reports.Report(conn)
    # Setting up parts
    bolt = bolts.EuroBolt(conn.bolts['MAIN'], rp)
    bolt_group = bolts.TensionBoltArray(conn.bolt_arrays['MAIN'], bolt, rp)
    sls_forces = loads.ForcesSet(conn.forces['SLS'], rp)
    uls_forces = loads.ForcesSet(conn.forces['ULS'], rp)
    plate = steel.DummyBoltedPlate(conn.plates['END_PLATE'], rp)
    bolt_group.connected_plate = plate

    # Solving bolts
    if bolt_group.check(sls_forces, uls_forces, rp):
        rp.set_safe()
    else:
        rp.set_unsafe()
    return rp
Beispiel #13
0
def S003_EC3(parts):
    # Report and results manager
    rp = reports.Report(parts['calc'])

    # Setting up parts
    bolt = bolts.EuroBolt(parts['main_bolt'], rp)
    bolt_group = bolts.ShearBoltArray(parts['main_bolt_array'], bolt, rp)
    sls_forces = loads.ForcesSet(parts['sls_force'], rp)
    uls_forces = loads.ForcesSet(parts['uls_force'], rp)

    # Rotated forces to check plates and bolts
    rot_sls = sls_forces.rot90(2, 1, "SIDE_SLS", rp)
    rot_uls = uls_forces.rot90(2, 1, "SIDE_ULS", rp)

    bracing_profile = steel.Profile(parts['bracing_profile'], rp)
    landing_profile = steel.Profile(parts['landing_profile'], rp)
    gusset_plate = steel.BoltedPlate(parts['gusset_plate'], rp)

    bracing_profile.bolt_the_web(bolt_group, gusset_plate, rp)

    # e_dict needed to be passed to the web block tearing function.
    # e_dict = {
    #     "e1_main": gusset_plate.e1_main,
    #     "e2_main": gusset_plate.e2_main,
    #     "e1_other": gusset_plate.e1_other,
    #     "e2_other": gusset_plate.e1_other,
    # }

    # in_pipe_plate = steel.WeldedBoltedPlate(parts['in_pipe_plate'],
    #                                         rp, e_dict=e_dict)

    # Solving bolts

    if all([
            bolt_group.check(rot_sls, rot_uls, rp),
            # bracing_profile.check(rp), landing_profile.check(rp),
            bracing_profile.bolted_web.check(rot_uls, rp),
            gusset_plate.check(bolt_group, rot_uls, rp)
    ]):
        rp.set_safe()
    else:
        rp.set_unsafe()

    return rp
Beispiel #14
0
def S002_EC3(parts):
    # Report and results manager
    rp = reports.Report(parts['calc'])

    # Setting up parts
    bolt = bolts.EuroBolt(parts['main_bolt'], rp)
    bolt_group = bolts.ShearBoltArray(parts['main_bolt_array'], bolt, rp)
    sls_forces = loads.ForcesSet(parts['sls_force'], rp)
    uls_forces = loads.ForcesSet(parts['uls_force'], rp)

    # Rotated forces to check plates and bolts
    rot_sls = sls_forces.rot90(2, 1, "SIDE_SLS", rp)
    rot_uls = uls_forces.rot90(2, 1, "SIDE_ULS", rp)

    bracing_profile = steel.Profile(parts['bracing_profile'], rp)
    landing_profile = steel.Profile(parts['landing_profile'], rp)
    cover_plates = steel.BoltedPlate(parts['cover_plate'], rp)
    e_dict = {
        "e1_main": cover_plates.e1_main,
        "e2_main": cover_plates.e2_main,
        "e1_other": cover_plates.e1_other,
        "e2_other": cover_plates.e1_other,
    }
    in_pipe_plate = steel.WeldedBoltedPlate(parts['inpipe_plate'],
                                            rp,
                                            e_dict=e_dict)
    pipe_stiff = steel.WeldedPlate(parts['stiffener_plate'], rp)

    # Solving bolts

    if all([
            bolt_group.check(rot_sls, rot_uls, rp),
            bracing_profile.check(rp),
            landing_profile.check(rp),
            cover_plates.check(bolt_group, rot_uls, rp),
            in_pipe_plate.check(bolt_group, rot_uls, rp),
            pipe_stiff.check(rot_uls, rp)
    ]):
        rp.set_safe()
    else:
        rp.set_unsafe()

    return rp
Beispiel #15
0
def P002_EC3(parts):
    # Report and results manager
    rp = reports.Report(parts['calc'])
    # Setting up parts
    bolt = bolts.EuroBolt(parts['main_bolt'], rp)
    bolt_group = bolts.TensionBoltArray(parts['main_bolt_array'], bolt, rp)
    sls_forces = loads.ForcesSet(parts['sls_force'], rp)
    uls_forces = loads.ForcesSet(parts['uls_force'], rp)

    plate = steel.DummyBoltedPlate(parts['end_plate'], rp)
    # set the conected plate so the snug front plate solver can work
    bolt_group.connected_plate = plate

    # Solving bolts
    if bolt_group.check(sls_forces, uls_forces, rp):
        rp.set_safe()
    else:
        rp.set_unsafe()

    return rp
Beispiel #16
0
def S005_EC3(conn):
    # Report and results manager
    rp = reports.Report(conn)

    # Setting up parts
    bolt = bolts.EuroBolt(conn.bolts['MAIN'], rp)
    bolt_group = bolts.ShearTensionBoltArray(conn.bolt_arrays['MAIN'], bolt,
                                             rp)
    sls_forces = loads.ForcesSet(conn.forces['SLS'], rp)
    uls_forces = loads.ForcesSet(conn.forces['ULS'], rp)

    beam_profile = steel.Profile(conn.profiles['ARRIVING'], rp)
    landing_profile = steel.Profile(conn.profiles['LANDING'], rp)
    end_plate = steel.BoltedPlate(conn.plates['END_PLATE'], rp)

    # set the conected plate so the snug front plate solver can work
    bolt_group.connected_plate = end_plate
    # If frontplate connected to U Beam Web:
    if conn.profiles['LANDING']['section_orientation'] in ['ANY', 'WEB']\
            and conn.profiles['LANDING']['profile_type'] == "U"\
            and not landing_profile.mat_db_profile.is_any_reference:
        U_bolted_web = steel.BoltedWeb(landing_profile, bolt_group,
                                       conn.plates['END_PLATE'], rp)
        U_bolted_web_checked = U_bolted_web.check(uls_forces, rp)
    else:
        U_bolted_web_checked = True  # Not needed OBVIAMENTE

    if all([
            U_bolted_web_checked,
            bolt_group.check(sls_forces, uls_forces, rp),
            beam_profile.check(rp),
            landing_profile.check(rp),
            end_plate.check(bolt_group, uls_forces, rp),
            end_plate.check_collisions(bolt_group, beam_profile, rp),
            end_plate.check_t_stubs(bolt_group, uls_forces, beam_profile, rp)
    ]):
        rp.set_safe()
    else:
        rp.set_unsafe()

    return rp
Beispiel #17
0
def S004_EC3(conn):
    # Report and results manager
    rp = reports.Report(conn)

    # Setting up parts
    bolt = bolts.EuroBolt(conn.bolts['MAIN'], rp)
    bolt_group = bolts.ShearTensionBoltArray(conn.bolt_arrays['MAIN'], bolt,
                                             rp)
    sls_forces = loads.ForcesSet(conn.forces['SLS'], rp)
    uls_forces = loads.ForcesSet(conn.forces['ULS'], rp)
    bracs_forces = loads.ExtraBracingForces(
        conn.extra_data['arriving_bracings'], rp)

    # Now, computing the resultant forces
    sls_forces = bracs_forces.sum_to_this_sls(sls_forces, rp)
    uls_forces = bracs_forces.sum_to_this_uls(uls_forces, rp)

    beam_profile = steel.Profile(conn.profiles['ARRIVING'], rp)
    column_profile = steel.Profile(conn.profiles['LANDING'], rp)
    end_plate = steel.BoltedPlate(conn.plates['END_PLATE'], rp)

    # set the conected plate so the snug front plate solver can work
    bolt_group.connected_plate = end_plate

    # Solving bolts

    if all([
            bolt_group.check(sls_forces, uls_forces, rp),
            beam_profile.check(rp),
            column_profile.check(rp),
            end_plate.check(bolt_group, uls_forces, rp),
            end_plate.check_collisions(bolt_group, beam_profile, rp),
            end_plate.check_t_stubs(bolt_group, uls_forces, beam_profile, rp)
    ]):
        rp.set_safe()
    else:
        rp.set_unsafe()

    return rp
Beispiel #18
0
def P004_EC3(conn):
    # Report and results manager
    rp = reports.Report(conn)
    # Setting up parts
    bolt = bolts.EuroBolt(conn.bolts['MAIN'], rp)
    bolt_group = bolts.TensionBoltArray(conn.bolt_arrays['MAIN'], bolt, rp)
    sls_forces = loads.ForcesSet(conn.forces['SLS'], rp)
    uls_forces = loads.ForcesSet(conn.forces['ULS'], rp)
    profile = steel.Profile(conn.profiles['MAIN'], rp)
    plate = steel.BoltedPlate(conn.plates['END_PLATE'], rp)
    # set the conected plate so the snug front plate solver can work
    bolt_group.connected_plate = plate

    # Solving bolts
    if bolt_group.check(sls_forces, uls_forces, rp) and\
            plate.check(bolt_group, uls_forces, rp) and\
            plate.check_collisions(bolt_group, profile, rp) and\
            plate.check_t_stubs(bolt_group, uls_forces, profile, rp):
        rp.set_safe()
    else:
        rp.set_unsafe()

    return rp
Beispiel #19
0
def S007_EC3(parts):
    # Report and results manager
    rp = reports.Report(parts['calc'])

    # Setting up parts
    bolt = bolts.EuroBolt(parts['main_bolt'], rp)
    bolt_array = bolts.ShearTensionBoltArray(parts['main_bolt_array'], bolt,
                                             rp)
    sls_forces = loads.ForcesSet(parts['sls_force'], rp)
    uls_forces = loads.ForcesSet(parts['uls_force'], rp)

    bottom_column = steel.Profile(parts['bottom_column_profile'], rp)
    top_column = steel.Profile(parts['top_column_profile'], rp)
    end_plate = steel.BoltedPlate(parts['end_plate'], rp)
    position = steel.SectionPosition(parts['main_position'], rp)
    position.profile = top_column
    position.bolt_array = bolt_array
    zero_position = steel.SectionPosition.centered()

    # set the conected plate so the snug front plate solver can work
    bolt_array.connected_plate = end_plate

    if all([
            bolt_array.check(sls_forces, uls_forces, rp),
            # bottom_column.check(rp), top_column.check(rp),  # NOT NEEDED
            end_plate.check(bolt_array, uls_forces, rp),
            end_plate.check_collisions_legacy(bolt_array, top_column, position,
                                              rp),
            end_plate.check_collisions_legacy(bolt_array, bottom_column,
                                              zero_position, rp),
            end_plate.check_t_stubs_legacy(bolt_array, uls_forces,
                                           bottom_column, position, rp)
    ]):
        rp.set_safe()
    else:
        rp.set_unsafe()
    return rp
Beispiel #20
0
def S006_EC3(conn):
    """ Main S006_EC3 Solver """

    # Report and results manager
    rp = reports.Report(conn)

    # LOS BOLTS DEL ALMA DEL LANDING PROFILE EN EL CASO DE CLIP SE SUPONEN =s
    # HAY QUE PENSAR QUE SE HACE. SE CALCULA TAMBIEN??? F**K!

    # Setting up common parts
    bolt = bolts.EuroBolt(conn.bolts['MAIN'], rp)
    bolt_group = bolts.ShearTensionBoltArray(conn.bolt_arrays['MAIN'], bolt,
                                             rp)
    sls_forces = loads.ForcesSet(conn.forces['SLS'], rp)
    uls_forces = loads.ForcesSet(conn.forces['ULS'], rp)
    beam_profile = steel.Profile(conn.profiles['ARRIVING'], rp)
    landing_profile = steel.Profile(conn.profiles['LANDING'], rp)

    # -LA- OBJECTS:
    #    - Beam web * +rp
    #    - Lateral bolts  * +rp
    #    - Lateral forces *
    #    - Clip Angle * +rp
    #    - Frontal bolts * +rp
    #    - Frontal forces *
    #    - Landing web * +rp
    if conn.extra_data['angles'] is "LA":
        bolted_web = steel.BoltedWeb(beam_profile, bolt_group,
                                     conn.plates['DUMMY_PLATE'], rp)
        bolted_angle = steel.BoltedClipAngle(conn.profiles['CLIP_ANGLE'],
                                             conn.plates['DUMMY_PLATE'], rp)
        # FORCES
        lat_uls_forces = uls_forces.rot90(2, 3, "SIDE_ULS", None)
        lat_sls_forces = sls_forces.rot90(2, 3, "SIDE_SLS", None)
        ec1 = bolted_angle.dist_bolts_to_plate(bolt_group)
        ec2 = Q(D(0), 'mm')
        # ec3 = - ec1 asumes a simmetrical boltedclipangle...
        # let's see what happens with time but this is a f*****g problem
        ec3 = -ec1
        front_uls_forces = uls_forces.from_eccentricity(
            ec1, ec2, ec3, "FRONT_ULS", None)
        front_sls_forces = sls_forces.from_eccentricity(
            ec1, ec2, ec3, "FRONT_SLS", None)

        # BOLT ARRAYS (SAME BOLT ARRAY TO BE CHECKED WITH BOTH FORCES)
        # WHY? BECAUSE L ANGLE PROFILE IS SUPOSED SYMMETRICAL !!!!
        bolt_group.connected_plate = bolted_angle
        lat_bolt_group = bolt_group
        front_bolt_group = bolt_group
        front_bolted_web = steel.BoltedWeb(landing_profile, bolt_group,
                                           conn.plates['DUMMY_PLATE'], rp)

        if all([
                bolted_web.check(lat_uls_forces, rp),
                lat_bolt_group.check(lat_sls_forces, lat_uls_forces, rp),
                bolted_angle.check(bolt_group, front_uls_forces, rp),
                front_bolt_group.check(front_sls_forces, front_uls_forces, rp),
                front_bolted_web.check(front_uls_forces, rp),
        ]):
            rp.set_safe()
        else:
            rp.set_unsafe()

    # -RA- OBJECTS:
    #    - Beam web * +rp
    #    - Lateral bolts  * +rp
    #    - Lateral forces *
    #    - Clip Angle * +rp
    #    - Frontal bolts * +rp
    #    - Frontal forces *
    #    - Landing web * +rp
    if conn.extra_data['angles'] is "RA":
        bolted_web = steel.BoltedWeb(beam_profile, bolt_group,
                                     conn.plates['DUMMY_PLATE'], rp)
        bolted_angle = steel.BoltedClipAngle(conn.profiles['CLIP_ANGLE'],
                                             conn.plates['DUMMY_PLATE'], rp)
        # FORCES
        lat_uls_forces = uls_forces.rot90(2, 1, "SIDE_ULS", None)
        lat_sls_forces = sls_forces.rot90(2, 1, "SIDE_SLS", None)
        ec1 = bolted_angle.dist_bolts_to_plate(bolt_group)
        ec2 = Q(D(0), 'mm')
        # ec3 = ec1 asumes a simmetrical boltedclipangle...
        # let's see what happens with time but this is a f*****g problem
        ec3 = ec1
        front_uls_forces = uls_forces.from_eccentricity(
            ec1, ec2, ec3, "FRONT_ULS", None)
        front_sls_forces = sls_forces.from_eccentricity(
            ec1, ec2, ec3, "FRONT_SLS", None)

        # BOLT ARRAYS (SAME BOLT ARRAY TO BE CHECKED WITH BOTH FORCES)
        # WHY? BECAUSE L ANGLE PROFILE IS SUPOSED SYMMETRICAL !!!!
        bolt_group.connected_plate = bolted_angle
        lat_bolt_group = bolt_group
        front_bolt_group = bolt_group
        front_bolted_web = steel.BoltedWeb(landing_profile, bolt_group,
                                           conn.plates['DUMMY_PLATE'], rp)

        if all([
                bolted_web.check(lat_uls_forces, rp),
                lat_bolt_group.check(lat_sls_forces, lat_uls_forces, rp),
                bolted_angle.check(bolt_group, front_uls_forces, rp),
                front_bolt_group.check(front_sls_forces, front_uls_forces, rp),
                front_bolted_web.check(front_uls_forces, rp),
        ]):
            rp.set_safe()
        else:
            rp.set_unsafe()

    # -BA- OBJECTS:
    #    - Beam web +rp *
    #    - Lateral bolts +rp *
    #    - Lateral forces *
    #    - Clip Angle Pair +rp *
    #    - Frontal bolts +rp *
    #    - Frontal forces *
    #    - Landing web +rp *
    if conn.extra_data['angles'] is "BA":
        bolted_web = steel.BoltedWeb(beam_profile, bolt_group,
                                     conn.plates['DUMMY_PLATE'], rp)
        bolted_angle_pair = steel.BoltedClipAnglePair(
            conn.profiles['CLIP_ANGLE'], conn.plates['DUMMY_PLATE'], rp)
        # FORCES
        lat_uls_forces = uls_forces.rot90(2, 3, "SIDE_ULS", None)\
            .from_factor(D(0.5), "SIDE_ULS", None)
        lat_uls_forces.P = Q(D(0), "kN")
        lat_sls_forces = sls_forces.rot90(2, 3, "SIDE_SLS", None)\
            .from_factor(D(0.5), "SIDE_ULS", None)
        lat_sls_forces.P = Q(D(0), "kN")
        ec1 = bolted_angle_pair.dist_bolts_to_plate(bolt_group)
        ec2 = Q(D(0), 'mm')
        # ec3 = - ec1 asumes a simmetrical boltedclipangle...
        # let's see what happens with time but this is a f*****g problem
        ec3 = Q(D(0), 'mm')
        front_uls_forces = uls_forces.from_eccentricity(
            ec1, ec2, ec3, "FRONT_ULS", None)\
            .from_factor(D(0.5), "FRONT_ULS", None)
        front_sls_forces = sls_forces.from_eccentricity(
            ec1, ec2, ec3, "FRONT_SLS", None)\
            .from_factor(D(0.5), "FRONT_ULS", None)

        # Ojo aquí, habría que quitar el .form_factor(0.5) y crear una chapa
        # frontplate con el doble de ancho y tal. ancho de la L mas alma de
        # la beam. Sería lo apropiado. Y calcular así otros bolts también
        # creados así. Y la bolted web lo mismo. Más que nada por posibles
        # comprobaciones a las que les afecte esta interaccion entre tornillos
        # o simplemente simplificar?

        # DE MOMENTO SIMPLIFICAR !!! JAJAJA MUAJAJAJA !!
        bolt_group.connected_plate = bolted_angle_pair
        lat_bolt_group = bolt_group
        front_bolt_group = bolt_group
        front_bolted_web = steel.BoltedWeb(
            landing_profile,
            bolt_group,
            conn.plates['DUMMY_PLATE'],  # <- OJO ESTO PUEDE SER UN BUG !!!!!!!
            rp)

        if all([
                bolted_web.check(lat_uls_forces, rp),
                lat_bolt_group.check(lat_sls_forces, lat_uls_forces, rp),
                bolted_angle_pair.check(bolt_group, front_uls_forces, rp),
                front_bolt_group.check(front_sls_forces, front_uls_forces, rp),
                front_bolted_web.check(front_uls_forces, rp),
        ]):
            rp.set_safe()
        else:
            rp.set_unsafe()

    # -LS- OBJECTS:
    #    - Beam web +rp *
    #    - Lateral bolts +rp *
    #    - Lateral forces *
    #    - Bolted Stiffener +rp *
    if conn.extra_data['angles'] is "LS":
        bolted_web = steel.BoltedWeb(beam_profile, bolt_group,
                                     conn.plates['BOLTED_STIFFENER'], rp)

        stiffener = stiffeners.BoltedStiffener(conn.plates['BOLTED_STIFFENER'],
                                               landing_profile, bolt_group, rp)
        # FORCES
        lat_uls_forces = uls_forces.rot90(2, 3, "SIDE_ULS", None)
        lat_sls_forces = sls_forces.rot90(2, 3, "SIDE_SLS", None)
        # set the conected plate so the snug front plate solver can work
        bolt_group.connected_plate = stiffener
        lat_bolt_group = bolt_group

        if all([
                bolted_web.check(lat_uls_forces, rp),
                lat_bolt_group.check(lat_sls_forces, lat_uls_forces, rp),
                stiffener.check(bolt_group, lat_uls_forces, rp),
        ]):
            rp.set_safe()
        else:
            rp.set_unsafe()

    # -RS- OBJECTS:
    #    - Beam web +rp
    #    - Lateral bolts +rp
    #    - Lateral forces
    #    - Bolted Stiffener +rp
    if conn.extra_data['angles'] is "RS":
        bolted_web = steel.BoltedWeb(beam_profile, bolt_group,
                                     conn.plates['BOLTED_STIFFENER'], rp)
        stiffener = stiffeners.BoltedStiffener(conn.plates['BOLTED_STIFFENER'],
                                               landing_profile, bolt_group, rp)
        # FORCES
        lat_uls_forces = uls_forces.rot90(2, 1, "SIDE_ULS", None)
        lat_sls_forces = sls_forces.rot90(2, 1, "SIDE_SLS", None)
        # set the conected plate so the snug front plate solver can work
        bolt_group.connected_plate = stiffener
        lat_bolt_group = bolt_group

        if all([
                bolted_web.check(lat_uls_forces, rp),
                lat_bolt_group.check(lat_sls_forces, lat_uls_forces, rp),
                stiffener.check(bolt_group, lat_uls_forces, rp),
        ]):
            rp.set_safe()
        else:
            rp.set_unsafe()

    # Finally, we always return a report from a solver
    return rp
Beispiel #21
0
def S010_EC3(parts):
    # Report and results manager
    rp = reports.Report(parts['calc'])

    # Setting up parts
    flange_bolt = bolts.EuroBolt(parts['flange_bolt'], rp)
    flange_bolt_array = bolts.ShearBoltArray(parts['flange_bolt_array'],
                                             flange_bolt, rp)

    web_bolt = bolts.EuroBolt(parts['web_bolt'], rp)
    web_bolt_array = bolts.ShearBoltArray(parts['web_bolt_array'], web_bolt,
                                          rp)

    flange_cover_plate = steel.BoltedPlate(parts['flange_cover_plate'], rp)
    web_cover_plate = steel.BoltedPlate(parts['web_cover_plate'], rp)

    bottom_column = steel.Profile(parts['bottom_column_profile'], rp)
    top_column = steel.Profile(parts['top_column_profile'], rp)
    if bottom_column.mat_db_profile.h > top_column.mat_db_profile.h:
        biggest_column = bottom_column
    else:
        biggest_column = top_column

    # SOME BACKEND COMPROBATIONS ABOUT PROFILES
    if bottom_column.profile_type != top_column.profile_type:
        raise Exception("Bottom column and top column must be same type"
                        ", prolly there is a frontend error")

    bottom_column.bolt_the_flange(flange_bolt_array, flange_cover_plate, rp)
    bottom_column.bolt_the_web(web_bolt_array, web_cover_plate, rp)
    top_column.bolt_the_flange(flange_bolt_array, flange_cover_plate, rp)
    top_column.bolt_the_web(web_bolt_array, web_cover_plate, rp)

    if bottom_column.profile_type == "U" and\
            bottom_column.name != top_column.name:
        width_diff = bottom_column.mat_db_profile.b -\
            top_column.mat_db_profile.b
        if width_diff > 0:
            bf = bottom_column.bolted_flange
            bf.e1_main = bf.e1_main - width_diff / 2  # web side
            bf.e1_other = bf.e1_other + width_diff / 2  # free side
        else:
            bf = top_column.bolted_flange
            bf.e1_main = bf.e1_main + width_diff / 2
            bf.e1_other = bf.e1_other - width_diff / 2
        if bf.e1_main != bf_e1_other:
            bf.is_e1_sym = False

    sls_forces = loads.ForcesSet(parts['sls_force'], rp)
    uls_forces = loads.ForcesSet(parts['uls_force'], rp)

    # Generating positioned forces. Needed 4 checkn' that cover plates.
    joint_gap = Q(parts['main_extra_data'].joint_gap, 'mm')
    zero = Q(D(0), 'mm')
    flange_ecc = flange_bolt_array.p2_sum() / 2 +\
        flange_cover_plate.e2_other + joint_gap
    web_ecc = web_bolt_array.p2_sum() / 2 +\
        web_cover_plate.e2_other + joint_gap
    flange_sls, web_sls = sls_forces.from_eccentricity(
        -flange_ecc, zero, zero, None,
        None).get_flange_and_web_tuple(biggest_column, rp)
    flange_uls, web_uls = uls_forces.from_eccentricity(
        -web_ecc, zero, zero, None,
        None).get_flange_and_web_tuple(biggest_column, rp)

    # # set the conected plate so the snug front plate solver can work
    flange_bolt_array.connected_plate = flange_cover_plate
    web_bolt_array.connected_plate = web_cover_plate

    # Solving
    flange_ok = flange_bolt_array.check(flange_sls, flange_uls, rp) &\
        flange_cover_plate.check(flange_bolt_array, flange_uls, rp)

    web_ok = web_bolt_array.check(web_sls, web_uls, rp) &\
        web_cover_plate.check(web_bolt_array, web_uls, rp)

    if bottom_column.name == top_column.name:
        # Then we dont need to check both columns
        columns_ok =\
            bottom_column.bolted_flange.check(flange_uls, rp) &\
            bottom_column.bolted_web.check(web_uls, rp)
    else:
        columns_ok =\
            bottom_column.bolted_flange.check(flange_uls, rp) &\
            bottom_column.bolted_web.check(web_uls, rp) &\
            top_column.bolted_flange.check(flange_uls, rp) &\
            top_column.bolted_web.check(web_uls, rp)

    # Return report
    print(flange_ok, web_ok, columns_ok)
    if all([flange_ok, web_ok, columns_ok]):
        rp.set_safe()
    else:
        rp.set_unsafe()
    return rp