Beispiel #1
0
    def import_marc_dat(self, filename, stylesetting='Extended', logfile=None):
        imp1 = importfile_marc_dat(filename,
                                   stylesetting=stylesetting,
                                   logfile=logfile)

        self = imp1.add_nodes(self)
        self = imp1.add_elements(self)
Beispiel #2
0
def test_import_marcdat():
    f1 = importfile_marc_dat('M:\\marcworking\\Tbeam_interface_tune\\22_elastic.dat',stylesetting='Extended')
    
    # add nodes to model
    model1 = f1.add_nodes(model1)
    
    # add elements to model
    model1 = f1.add_elements(model1)
Beispiel #3
0
    def import_marc_dat(self, *args):
        # readin the marc dat file
        f1 = importfile_marc_dat(args[0], stylesetting=args[1])

        # add nodes to model
        self.model = f1.add_nodes(self.model)

        # add elements to model
        self.model = f1.add_elements(self.model)
Beispiel #4
0
    def import_marc_dat(self, *args):
        # readin the marc dat file
        f1 = importfile_marc_dat(args[0], stylesetting=args[1])

        # add nodes to model
        self.model = f1.add_nodes(self.model)

        # add elements to model
        self.model = f1.add_elements(self.model)
Beispiel #5
0
def test_import_marcdat():
    f1 = importfile_marc_dat(
        'M:\\marcworking\\Tbeam_interface_tune\\22_elastic.dat',
        stylesetting='Extended')

    # add nodes to model
    model1 = f1.add_nodes(model1)

    # add elements to model
    model1 = f1.add_elements(model1)
Beispiel #6
0
def process_pole_dat(model1,fullfilename,dentpercent=0.5):
    ''' process the pole marc dat file

        the node with +/-xerror will be selected to curvefit the circle center
        dentpercent: Percentage of the dent that shall be apply different material property
    '''
    dentpercent = float(dentpercent)
    
    p1 = importfile_marc_dat(fullfilename,stylesetting='Extended')
    model1 = p1.add_nodes(model1)
    model1 = p1.add_elements(model1)
    
    print 'Marc mat file imported, nodes and elements only'
    eff_nodelist = model1.nodelist.itemlib.keys()
    
    
    # find min and max, based on the fact that the model is cleaned up
    nmax,nmin = model1.nodelist.get_maxmin()
    xleft = nmin[0]
    xright = nmax[0]
    xerror = 1
    print 'edge detected, xleft:%s xright:%s' % (str(xleft), str(xright))
    
    
    # find the nodes at left and right ends and curve fit to get the center
    leftnodes = model1.nodelist.select_node_coord(rx=[xleft-xerror,xleft+xerror])
    rightnodes = model1.nodelist.select_node_coord(rx=[xright-xerror,xright+xerror])
    
    model1.nodeset('surface_leftend',{'nodelist':leftnodes})
    model1.nodeset('surface_rightend',{'nodelist':rightnodes})
    
    
    # find the center of circle at edges
    r1,rd1 = find_circlecenter(model1,leftnodes)
    r2,rd2 = find_circlecenter(model1,rightnodes)
    rdist = r2[0] - r1[0]
    
    print 'Center found, r1:%s r2:%s' % (str(r1), str(r2))


    nrefnode = model1.node([r1,r2])
    nodeid_leftcenter = nrefnode + 1
    nodeid_rightcenter = nrefnode + 2
    model1.nodeset('left_center',{'nodelist':[nodeid_leftcenter]})
    model1.nodeset('right_center',{'nodelist':[nodeid_rightcenter]})
    print 'Center reference nodes added'
    
    
    # adjust the node coordinates
    model1.nodelist.transform(dx=-r1[0],dy=-r1[1],dz=-r1[2])
    ang = Find_angle(r1,r2,axis='x')
    model1.nodelist.transform(rx=ang[0],ry=ang[1],rz=ang[2])

    
    r1 = [0,0,0]
    r2 = [rdist,0,0]
    print 'Model trasnformed to x center'

    
    # find the deepest node
    mindist = 1e10 
    point = None
    dent_dict = {}
    
    for node in eff_nodelist:
        xyz = model1.nodelist.itemlib[node].xyz
        dist = DistancePointLine(r1,r2,xyz)
        dent_dict[node] = dist
        if dist < mindist:
            mindist = dist
            point = node

    print 'Deepest dent found %s @ node %s' % (str(mindist),str(point))

    
    # search for dent_node_set
    dent_nodes_set = []

 
    # calculate the direction cosine of the node
    P = model1.nodelist.itemlib[point].xyz
    TP,ud,dd = UdirectionPointLine(r1,r2,P)
    
    dent_map = []
    for nodes in eff_nodelist:
        Q = model1.nodelist.itemlib[nodes].xyz
        distdent = Parameter(r1,r2,rd1,rd2,P,Q)
        dent_map.append(distdent)
        if distdent[3] > mindist * dentpercent/100.0:
            dent_nodes_set.append(nodes)
            
    model1.dent_map = np.asarray(dent_map)
    model1.nodeset('dent_nodes_sets',{'nodelist':dent_nodes_set})
    print 'Found total %s nodes for %s%% dent limits' % (str(len(dent_nodes_set)),str(dentpercent))


  
    
    # convert the model to demand coordinate system
    model1.nodelist.shift_coord(shx=-TP[0],shy=-TP[1],shz=-TP[2])
    model1.nodelist.transform(rx=-np.arctan(ud[2]/ud[1]))
    print 'Model adjust to the upright position'


    Allelements = list(model1.connlist.itemlib.keys())
    model1.elemset('surface_elements',{'elemlist':Allelements})
    
    dentelemlist = model1.select_elements_nodeset('dent_nodes_sets')
    model1.elemset('dentelems',{'elemlist':dentelemlist})
    
    print "Element set Created: %s # 'Full Surface' and %s # 'dentelems'" % (len(Allelements),len(dentelemlist))

    return model1
Beispiel #7
0
def process_pole_dat(model1, fullfilename, dentpercent=0.5):
    ''' process the pole marc dat file

        the node with +/-xerror will be selected to curvefit the circle center
        dentpercent: Percentage of the dent that shall be apply different material property
    '''
    dentpercent = float(dentpercent)

    p1 = importfile_marc_dat(fullfilename, stylesetting='Extended')
    model1 = p1.add_nodes(model1)
    model1 = p1.add_elements(model1)

    print 'Marc mat file imported, nodes and elements only'
    eff_nodelist = model1.nodelist.itemlib.keys()

    # find min and max, based on the fact that the model is cleaned up
    nmax, nmin = model1.nodelist.get_maxmin()
    xleft = nmin[0]
    xright = nmax[0]
    xerror = 1
    print 'edge detected, xleft:%s xright:%s' % (str(xleft), str(xright))

    # find the nodes at left and right ends and curve fit to get the center
    leftnodes = model1.nodelist.select_node_coord(
        rx=[xleft - xerror, xleft + xerror])
    rightnodes = model1.nodelist.select_node_coord(
        rx=[xright - xerror, xright + xerror])

    model1.nodeset('surface_leftend', {'nodelist': leftnodes})
    model1.nodeset('surface_rightend', {'nodelist': rightnodes})

    # find the center of circle at edges
    r1, rd1 = find_circlecenter(model1, leftnodes)
    r2, rd2 = find_circlecenter(model1, rightnodes)
    rdist = r2[0] - r1[0]

    print 'Center found, r1:%s r2:%s' % (str(r1), str(r2))

    nrefnode = model1.node([r1, r2])
    nodeid_leftcenter = nrefnode + 1
    nodeid_rightcenter = nrefnode + 2
    model1.nodeset('left_center', {'nodelist': [nodeid_leftcenter]})
    model1.nodeset('right_center', {'nodelist': [nodeid_rightcenter]})
    print 'Center reference nodes added'

    # adjust the node coordinates
    model1.nodelist.transform(dx=-r1[0], dy=-r1[1], dz=-r1[2])
    ang = Find_angle(r1, r2, axis='x')
    model1.nodelist.transform(rx=ang[0], ry=ang[1], rz=ang[2])

    r1 = [0, 0, 0]
    r2 = [rdist, 0, 0]
    print 'Model trasnformed to x center'

    # find the deepest node
    mindist = 1e10
    point = None
    dent_dict = {}

    for node in eff_nodelist:
        xyz = model1.nodelist.itemlib[node].xyz
        dist = DistancePointLine(r1, r2, xyz)
        dent_dict[node] = dist
        if dist < mindist:
            mindist = dist
            point = node

    print 'Deepest dent found %s @ node %s' % (str(mindist), str(point))

    # search for dent_node_set
    dent_nodes_set = []

    # calculate the direction cosine of the node
    P = model1.nodelist.itemlib[point].xyz
    TP, ud, dd = UdirectionPointLine(r1, r2, P)

    dent_map = []
    for nodes in eff_nodelist:
        Q = model1.nodelist.itemlib[nodes].xyz
        distdent = Parameter(r1, r2, rd1, rd2, P, Q)
        dent_map.append(distdent)
        if distdent[3] > mindist * dentpercent / 100.0:
            dent_nodes_set.append(nodes)

    model1.dent_map = np.asarray(dent_map)
    model1.nodeset('dent_nodes_sets', {'nodelist': dent_nodes_set})
    print 'Found total %s nodes for %s%% dent limits' % (str(
        len(dent_nodes_set)), str(dentpercent))

    # convert the model to demand coordinate system
    model1.nodelist.shift_coord(shx=-TP[0], shy=-TP[1], shz=-TP[2])
    model1.nodelist.transform(rx=-np.arctan(ud[2] / ud[1]))
    print 'Model adjust to the upright position'

    Allelements = list(model1.connlist.itemlib.keys())
    model1.elemset('surface_elements', {'elemlist': Allelements})

    dentelemlist = model1.select_elements_nodeset('dent_nodes_sets')
    model1.elemset('dentelems', {'elemlist': dentelemlist})

    print "Element set Created: %s # 'Full Surface' and %s # 'dentelems'" % (
        len(Allelements), len(dentelemlist))

    return model1
Beispiel #8
0
 def import_marc_dat(self,filename,stylesetting='Extended',logfile=None):
     imp1 = importfile_marc_dat(filename,stylesetting=stylesetting,logfile=logfile)
    
     self = imp1.add_nodes(self)
     self = imp1.add_elements(self)