def data_extraction_binout(binout_name, basis_file=None, target_position_file=None):
	
	id_data	= binout_reading(binout_name, False, 'ids')

	if basis_file is not None and target_position_file is not None:
	    coordinate_data = binout_reading(binout_name, False, 'coordinates')	    
	    coordinate_data = rearange_xyz(coordinate_data)[:,0].reshape((-1,1))
	    return coordinate_data, id_data
	else:   
	    coordinate_data, displacement_data = binout_reading(binout_name, False, 'coordinates + displacements') 
	    time_data = binout_reading(binout_name, False, 'time')
	    coordinate_data = rearange_xyz(coordinate_data)[:,0].reshape((-1,1))
	    displacement_data = rearange_xyz(displacement_data)
	    return coordinate_data, displacement_data, id_data, time_data
Example #2
0
    def extract_main(self):
        if self.isExtractFullData:
            coordinate_data, displacement_data = binout_reading(
                self.name, False, 'coordinates + displacements')
            displacement_data = rearange_xyz(displacement_data)
        else:
            coordinate_data = binout_reading(self.name, False, 'coordinates')
            displacement_data = None

        time_data = binout_reading(self.name, False, 'time')
        coordinate_data = rearange_xyz(coordinate_data)[:, 0].reshape((-1, 1))
        id_data = binout_reading(self.name, False, 'ids')

        return coordinate_data, displacement_data, id_data, time_data
Example #3
0
    def extract_simple(self):

        simplified_displacement_data = binout_reading(self.name, False,
                                                      'displacements')
        simplified_displacement_data = rearange_xyz(
            simplified_displacement_data)
        simplified_id_data = binout_reading(self.name, False, 'ids')
        simplified_time_data = binout_reading(self.name, False, 'time')

        if self.isVelocity:
            simplified_velocity_data = binout_reading(self.name, False,
                                                      'velocities')
            simplified_velocity_data = rearange_xyz(simplified_velocity_data)
        else:
            simplified_velocity_data = None

        return simplified_displacement_data, simplified_id_data, simplified_velocity_data, simplified_time_data
def data_extraction_binout(binout_name, isBasis, isCalculateError, isVelocity):
    if not isQD:
        raise ImportError(
            "qd.cae library not available, Binout format not readable")

    if isBasis is None or isCalculateError:
        coordinate_data, displacement_data = binout_reading(
            binout_name, False, 'coordinates + displacements')
        displacement_data = rearange_xyz(displacement_data)
    else:
        coordinate_data = binout_reading(binout_name, False, 'coordinates')
        displacement_data = None

    if isVelocity:
        velocity_data = binout_reading(binout_name, False, 'velocities')
        velocity_data = rearange_xyz(velocity_data)
    else:
        velocity_data = None

    time_data = binout_reading(binout_name, False, 'time')
    coordinate_data = rearange_xyz(coordinate_data)[:, 0]
    id_data = binout_reading(binout_name, False, 'ids')

    return coordinate_data, displacement_data, id_data, velocity_data, time_data
Example #5
0
def sorting_nodes(ls_dyna_name, abaqus_name):
    start_name = '*NODE'
    end_name = "**\n** MEMBRANE and STRUCTURAL ELEMENTS"

    with open(abaqus_name, 'r', encoding='utf-8') as abaqus_in:
        bodyText = abaqus_in.read()
        # positions before and after node data
        in_start = bodyText.index(start_name)
        in_end = bodyText.index(end_name)

        re_coord = re.compile("[0-9,. -]{70,90}\n")
        match = re.findall(re_coord, bodyText[in_start:in_end])

    abaqus_ids = []
    abaqus_coordinates = []
    for coord in match:
        abaqus_ids.append(int(re.search("[0-9]*,", coord)[0][:-1]))
        abaqus_coordinates.append(
            list(
                map(
                    float,
                    re.search(",[0-9,. -]+\n",
                              coord)[0][1:].strip().split(","))))

    abaqus_coordinates = np.array(abaqus_coordinates)

    ls_dyna_data = binout_reading(ls_dyna_name, False, 'coordinates')
    ls_dyna_ids = binout_reading(ls_dyna_name, False, 'ids')
    ls_dyna_coordinates = small_func.rearange_xyz(ls_dyna_data)[:, 0].reshape(
        (-1, 3))

    ind_lsdyna = np.argsort(ls_dyna_ids)
    ind_abaqus = np.argsort(abaqus_ids)

    sorted_lsdyna = ls_dyna_coordinates[ind_lsdyna]
    sorted_abaqus = abaqus_coordinates[ind_abaqus]
    error = 1e-2

    for i, node in enumerate(sorted_abaqus):
        count = 0
        error = 3
        switch = True
        while np.linalg.norm(sorted_abaqus[i] - sorted_lsdyna[i]) > error:
            count += 1

        if (count != 0 and switch):
            tmp = np.copy(sorted_lsdyna[i])
            sorted_lsdyna[i] = sorted_lsdyna[i + count]
            sorted_lsdyna[i + count] = tmp

            tmp = np.copy(ind_lsdyna[i])
            ind_lsdyna[i] = ind_lsdyna[i + count]
            ind_lsdyna[i + count] = tmp
    index_map = ind_lsdyna[np.argsort(ind_abaqus)]

    no_vtk_nodes = sorted_abaqus.shape[0]
    extended_map = [0] * no_vtk_nodes * 3

    for i, node in enumerate(index_map):
        extended_map[3 * i] = node * 3
        extended_map[3 * i + 1] = node * 3 + 1
        extended_map[3 * i + 2] = node * 3 + 2

    np.save('abaqus_to_lsdyna' + "bumper", extended_map)

    return 'extended_map' + "bumper"