Пример #1
0
def _fill_cart3d_geometry_objects(cases, unused_id, nodes, elements, regions,
                                  model):
    """Creates the results form for Cart3d Geometry"""
    nelements = elements.shape[0]
    nnodes = nodes.shape[0]

    eids = arange(1, nelements + 1)
    nids = arange(1, nnodes + 1)
    area = model.get_area()
    cnormals = model.get_normals()
    cnnodes = cnormals.shape[0]
    assert cnnodes == nelements, len(cnnodes)

    #print('nnodes =', nnodes)
    #print('nelements =', nelements)
    #print('regions.shape =', regions.shape)
    subcase_id = 0
    labels = [
        'NodeID', 'ElementID', 'Region', 'Area', 'Normal X', 'Normal Y',
        'Normal Z'
    ]
    cart3d_geo = Cart3dGeometry(subcase_id,
                                labels,
                                nids,
                                eids,
                                regions,
                                area,
                                cnormals,
                                uname='Cart3dGeometry')

    cases = OrderedDict()
    cases[0] = (cart3d_geo, (0, 'NodeID'))
    cases[1] = (cart3d_geo, (0, 'ElementID'))
    cases[2] = (cart3d_geo, (0, 'Region'))
    cases[3] = (cart3d_geo, (0, 'Area'))
    cases[4] = (cart3d_geo, (0, 'NormalX'))
    cases[5] = (cart3d_geo, (0, 'NormalY'))
    cases[6] = (cart3d_geo, (0, 'NormalZ'))

    geometry_form = [
        ('NodeID', 0, []),
        ('ElementID', 1, []),
        ('Region', 2, []),
        ('Area', 3, []),
        ('Normal X', 4, []),
        ('Normal Y', 5, []),
        ('Normal Z', 6, []),
    ]
    form = [
        ('Geometry', None, geometry_form),
    ]
    icase = 7
    return form, cases, icase, nids, eids
Пример #2
0
    def _fill_cart3d_geometry_objects(self, cases, ID, nodes, elements,
                                      regions, model):
        nelements = elements.shape[0]
        nnodes = nodes.shape[0]

        eids = arange(1, nelements + 1)
        nids = arange(1, nnodes + 1)
        area = model.get_area()
        cnormals = model.get_normals()
        cnnodes = cnormals.shape[0]
        assert cnnodes == nelements, len(cnnodes)

        #print('nnodes =', nnodes)
        #print('nelements =', nelements)
        #print('regions.shape =', regions.shape)
        subcase_id = 0
        labels = [
            'NodeID', 'ElementID', 'Region', 'Area', 'Normal X', 'Normal Y',
            'Normal Z'
        ]
        cart3d_geo = Cart3dGeometry(subcase_id,
                                    labels,
                                    nids,
                                    eids,
                                    regions,
                                    area,
                                    cnormals,
                                    uname='Cart3dGeometry')

        cases = {
            0: (cart3d_geo, (0, 'NodeID')),
            1: (cart3d_geo, (0, 'ElementID')),
            2: (cart3d_geo, (0, 'Region')),
            3: (cart3d_geo, (0, 'Area')),
            4: (cart3d_geo, (0, 'NormalX')),
            5: (cart3d_geo, (0, 'NormalY')),
            6: (cart3d_geo, (0, 'NormalZ')),
        }
        geometry_form = [
            ('NodeID', 0, []),
            ('ElementID', 1, []),
            ('Region', 2, []),
            ('Area', 3, []),
            ('Normal X', 4, []),
            ('Normal Y', 5, []),
            ('Normal Z', 6, []),
        ]
        form = [
            ('Geometry', None, geometry_form),
        ]
        icase = 7
        return form, cases, icase
Пример #3
0
def _fill_cart3d_geometry_objects(cases, unused_id, nodes, elements, regions,
                                  model):
    """Creates the results form for Cart3d Geometry"""
    nelements = elements.shape[0]
    nnodes = nodes.shape[0]

    eids = arange(1, nelements + 1)
    nids = arange(1, nnodes + 1)
    area = model.get_area()
    cnormals = model.get_normals()
    cnnodes = cnormals.shape[0]
    assert cnnodes == nelements, len(cnnodes)

    inv_counter = _node_inverse_counter(model, nnodes)

    def data_map_func(data):
        res = np.zeros(nnodes, dtype='float32')
        for elem, datai in zip(model.elements, data):
            res[elem] += datai
        #print(res)

        #res = np.zeros(nnodes, dtype='float32')
        #res[model.elements] = data
        #print(res)
        #print('----')
        #print(inv_counter)
        ## neids * ??? = (3,nnodes)
        ##(3,) * ??? = (5,)
        ## eids * map -> node_ids
        ##results = np.zeros(nnodes, dtype='float32')
        #print(model.elements)
        #node_results = data[model.elements.ravel()]
        #assert node_results.shape == model.elements.shape
        #node_results_sum = node_results.sum(axis=1)
        #assert node_results_sum.shape == nnodes
        #return node_results_sum * inv_counter
        return res * inv_counter

    data_map_dict = {('centroid', 'Node'): data_map_func}

    #print('nnodes =', nnodes)
    #print('nelements =', nelements)
    #print('regions.shape =', regions.shape)
    subcase_id = 0
    labels = [
        'NodeID', 'ElementID', 'Region', 'Area', 'Normal X', 'Normal Y',
        'Normal Z'
    ]
    cart3d_geo = Cart3dGeometry(subcase_id,
                                labels,
                                nids,
                                eids,
                                regions,
                                area,
                                cnormals,
                                uname='Cart3dGeometry')

    normal_z = cnormals[:, 2]
    node_normal = data_map_func(normal_z)
    result_name = 'Normal Z-nodal'
    node_res = GuiResult(subcase_id,
                         header=result_name,
                         title=result_name,
                         location='node',
                         scalar=node_normal)

    cases = OrderedDict()
    cases[0] = (cart3d_geo, (0, 'NodeID'))
    cases[1] = (cart3d_geo, (0, 'ElementID'))
    cases[2] = (cart3d_geo, (0, 'Region'))
    cases[3] = (cart3d_geo, (0, 'Area'))
    cases[4] = (cart3d_geo, (0, 'NormalX'))
    cases[5] = (cart3d_geo, (0, 'NormalY'))
    cases[6] = (cart3d_geo, (0, 'NormalZ'))
    #cases[7] = (node_res, (0, 'NormalZ-nodal'))

    geometry_form = [
        ('NodeID', 0, []),
        ('ElementID', 1, []),
        ('Region', 2, []),
        ('Area', 3, []),
        ('Normal X', 4, []),
        ('Normal Y', 5, []),
        ('Normal Z', 6, []),
        #('Normal Z-nodal', 7, []),
    ]
    form = [
        ('Geometry', None, geometry_form),
    ]
    icase = len(geometry_form)
    return form, cases, icase, nids, eids, data_map_dict