def relat(matrix, resf): cargas = ['xx', 'yy', 'zz', 'xy', 'xz', 'yz'] for carga in cargas: job = 'Job-' + carga job_path = 'C:/Temp/' + job + '.odb' reporto = matrix + '_' + carga + '_' + str(resf) + '.rpt' session.Viewport(name='Viewport: 1', origin=(0.0, 0.0), width=195.443634033203, height=90.3294296264648) session.viewports['Viewport: 1'].makeCurrent() session.viewports['Viewport: 1'].maximize() executeOnCaeStartup() session.viewports['Viewport: 1'].partDisplay.geometryOptions.setValues( referenceRepresentation=ON) o1 = session.openOdb(name=job_path) session.viewports['Viewport: 1'].setValues(displayedObject=o1) #: Model: C:/Temp/Job-2.odb #: Number of Assemblies: 1 #: Number of Assembly instances: 0 #: Number of Part instances: 1 #: Number of Meshes: 2 #: Number of Element Sets: 3 #: Number of Node Sets: 8457 #: Number of Steps: 3 odb = session.odbs[job_path] nf = NumberFormat(numDigits=8, precision=0, format=ENGINEERING) session.fieldReportOptions.setValues(numberFormat=nf) session.writeFieldReport(fileName=reporto, append=ON, sortItem='Element Label', odb=odb, step=2, frame=1, outputPosition=INTEGRATION_POINT, variable=( ('E', INTEGRATION_POINT, ( (COMPONENT, 'E11'), (COMPONENT, 'E22'), (COMPONENT, 'E33'), (COMPONENT, 'E12'), (COMPONENT, 'E13'), (COMPONENT, 'E23'), )), ('S', INTEGRATION_POINT, ( (COMPONENT, 'S11'), (COMPONENT, 'S22'), (COMPONENT, 'S33'), (COMPONENT, 'S12'), (COMPONENT, 'S13'), (COMPONENT, 'S23'), )), ))
def creat_part(name, length, width, height): # -*- coding: mbcs -*- # # Abaqus/CAE Release 6.14-4 replay file # Internal Version: 2015_06_12-04.41.13 135079 # Run by yanguowei on Wed Jan 30 12:54:57 2019 # # from driverUtils import executeOnCaeGraphicsStartup # executeOnCaeGraphicsStartup() #: Executing "onCaeGraphicsStartup()" in the site directory ... session.Viewport(name='Viewport: 1', origin=(0.0, 0.0), width=207.385406494141, height=31.0) session.viewports['Viewport: 1'].makeCurrent() session.viewports['Viewport: 1'].maximize() from caeModules import * from driverUtils import executeOnCaeStartup executeOnCaeStartup() Mdb() #: A new model database has been created. #: The model "Model-1" has been created. session.viewports['Viewport: 1'].setValues(displayedObject=None) s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=200.0) g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraints s.setPrimaryObject(option=STANDALONE) session.viewports['Viewport: 1'].view.setValues( nearPlane=168.36, farPlane=208.764, width=139.755, height=65.8, cameraPosition=(-5.77065, 3.49905, 188.562), cameraTarget=(-5.77065, 3.49905, 0)) s.rectangle(point1=(0.0, 0.0), point2=(length, width)) p = mdb.models['Model-1'].Part(name=name, dimensionality=THREE_D, type=DEFORMABLE_BODY) p = mdb.models['Model-1'].parts[name] p.BaseSolidExtrude(sketch=s, depth=height) s.unsetPrimaryObject() p = mdb.models['Model-1'].parts[name] session.viewports['Viewport: 1'].setValues(displayedObject=p) del mdb.models['Model-1'].sketches['__profile__']
# # from driverUtils import executeOnCaeGraphicsStartup # executeOnCaeGraphicsStartup() #: Executing "onCaeGraphicsStartup()" in the site directory ... import os from abaqus import * from abaqusConstants import * session.Viewport(name='Viewport: 1', origin=(0.0, 0.0), width=243.416656494141, height=165.277770996094) session.viewports['Viewport: 1'].makeCurrent() session.viewports['Viewport: 1'].maximize() from viewerModules import * from driverUtils import executeOnCaeStartup executeOnCaeStartup() odb_file = os.path.join(os.getcwd(), 'cube_hmm.odb') o1 = session.openOdb(name=odb_file) session.viewports['Viewport: 1'].setValues(displayedObject=o1) session.viewports['Viewport: 1'].odbDisplay.display.setValues(plotState=( CONTOURS_ON_DEF, )) odb = session.odbs[odb_file] session.xyDataListFromField(odb=odb, outputPosition=NODAL, variable=(('U', NODAL, ((COMPONENT, 'U2'), )), ('S', INTEGRATION_POINT, ((INVARIANT, 'Max. Principal'), )), ('SDV_DET', INTEGRATION_POINT), ), nodePick=(( 'PART-1-1', 1, ('[#1 ]', )), ), ) xy1 = session.xyDataObjects['U:U2 PI: PART-1-1 N: 1'] xy2 = session.xyDataObjects['S:Max Principal (Avg: 75%) PI: PART-1-1 N: 1'] xy3 = combine(xy1+1, xy2)
# -*- coding: utf-8 -*- from abaqus import * from abaqusConstants import * from caeModules import * from odbMaterial import * from odbAccess import * from textRepr import * import pickle import os import shutil from os.path import * from time import * from numpy import * from driverUtils import executeOnCaeStartup executeOnCaeStartup() def Field_Capture(odb, odbDir, jobName,FieldName, scale, nsteps): session.viewports['Viewport: 1'].makeCurrent() session.viewports['Viewport: 1'].setValues(displayedObject=odb) session.viewports['Viewport: 1'].odbDisplay.display.setValues(plotState=(CONTOURS_ON_UNDEF, )) session.viewports['Viewport: 1'].odbDisplay.setPrimaryVariable(variableLabel=FieldName, outputPosition=INTEGRATION_POINT, ) session.viewports['Viewport: 1'].odbDisplay.commonOptions.setValues(deformationScaling=UNIFORM, uniformScaleFactor= scale) session.viewports['Viewport: 1'].odbDisplay.contourOptions.setValues(contourType=ISOSURFACE, numIntervals=18, maxAutoCompute=ON, minAutoCompute=OFF, minValue=1E-4, intervalType=LOG) session.viewports['Viewport: 1'].view.setValues(nearPlane=7240.0, farPlane=10000.0, width=0.8, height=0.47, viewOffsetX=8.25, viewOffsetY=0.0) captureFolder = os.path.join(odbDir,'Captures_Long_Range_Undeformed') try: os.mkdir(captureFolder) except OSError: pass for stp in range(0,nsteps): capturePath = os.path.join(captureFolder, jobName+'_stp%d'%(stp+1))
def constr(arq): executeOnCaeStartup() #O modelo a ser usado deve estar na pasta abaqus/modelos ## Escreva o nome do arquivo .cae ## arquivo = "C:/Users/duhju/Desktop/abaqus/modelos/" + arq + ".cae" mdb.openAuxMdb(pathName=arquivo) mdb.copyAuxMdbModel(fromName='Cell', toName='Cell') mdb.closeAuxMdb() p1 = mdb.models['Cell'].parts['Cell'] a = mdb.models['Cell'].rootAssembly p = mdb.models['Cell'].parts['Cell'] a = mdb.models['Cell'].rootAssembly #a = mdb.models['Model-1'].rootAssembly #del mdb.models['Model-1'] a = mdb.models['Cell'].rootAssembly ############################# Reference Points / Sets ########################### a.ReferencePoint(point=(0.0015, 0.0005, 0.0)) a.ReferencePoint(point=(0.0015, 0.0, 0.0)) #a.ReferencePoint(point=(0.0015, -0.0005, 0.0)) r1 = a.referencePoints refPoints1 = (r1[20], ) a.Set(referencePoints=refPoints1, name='Set-rp1') #: The set 'Set-rp1' has been created (1 reference point). #refPoints1=(r1[22], ) #a.Set(referencePoints=refPoints1, name='Set-rp3') #: The set 'Set-rp3' has been created (1 reference point). r1 = a.referencePoints refPoints1 = (r1[21], ) a.Set(referencePoints=refPoints1, name='Set-rp2') #: The set 'Set-rp2' has been created (1 reference point). ##################################################################################################################### ############################## Geometry Limits ###################################################################### p = mdb.models['Cell'].parts['Cell'] #xmin, xmax, ymin, ymax, zmin, zmax = -4.7781e-04, 4.7781e-04, -4.7781e-04, 4.7781e-04, 0, 0.000955615 nnodes = len(p.nodes) xmin, ymin, zmin, xmax, ymax, zmax = 0, 0, 0, 0, 0, 0 for k in range(nnodes): x, y, z = p.nodes[k].coordinates[0], p.nodes[k].coordinates[ 1], p.nodes[k].coordinates[2] if (x < xmin): xmin = x if (y < ymin): ymin = y if (z < zmin): zmin = z if (x > xmax): xmax = x if (y > ymax): ymax = y if (z > zmax): zmax = z ######################################################################################################################## p = mdb.models['Cell'].parts['Cell'] qsi = 0.00000001 nnodes = len(p.nodes) n = 1 ########################################### Sets Creation ############################################################# ##############3 Middle Point for k in range(nnodes): x, y, z = p.nodes[k].coordinates[0], p.nodes[k].coordinates[ 1], p.nodes[k].coordinates[2] if (x == 0.0 and y == 0.0 and z == 0.0): center_node = p.nodes[k:k + 1] p.Set(nodes=center_node, name='center_node') ########################################## Boundary Conditions ##################################################### a = mdb.models['Cell'].rootAssembly a.regenerate() region = a.instances['Cell-1'].sets['center_node'] # Setar quais os deslocamentos e rotacoes serao restringidos no center point!!!! mdb.models['Cell'].DisplacementBC(name='BC-1', createStepName='Initial', region=region, u1=SET, u2=SET, u3=SET, ur1=UNSET, ur2=UNSET, ur3=UNSET, amplitude=UNSET, distributionType=UNIFORM, fieldName='', localCsys=None) # Setar quais os deslocamentos e rotacoes serao aplicados nos Reference Points!!!! ##### RP 1 region = a.sets['Set-rp1'] mdb.models['Cell'].DisplacementBC(name='BC-rp1', createStepName='Step-1', region=region, u1=SET, u2=SET, u3=SET, ur1=UNSET, ur2=UNSET, ur3=UNSET, amplitude=UNSET, fixed=OFF, distributionType=UNIFORM, fieldName='', localCsys=None) ##### RP 2 region = a.sets['Set-rp2'] mdb.models['Cell'].DisplacementBC(name='BC-rp2', createStepName='Step-1', region=region, u1=SET, u2=SET, u3=SET, ur1=UNSET, ur2=UNSET, ur3=UNSET, amplitude=UNSET, fixed=OFF, distributionType=UNIFORM, fieldName='', localCsys=None) ##### RP 3 #region = a.sets['Set-rp3'] #mdb.models['Cell'].DisplacementBC(name='BC-rp3', createStepName='Step-1', region=region, u1=UNSET, u2=UNSET, u3=1e-07, ur1=UNSET, ur2=UNSET, ur3=UNSET, amplitude=UNSET, fixed=OFF, distributionType=UNIFORM, fieldName='', localCsys=None) ## Determinar se alguma BC sera suprimida ou se sera aplicada aos dois RP's #################### #mdb.models['Cell'].boundaryConditions['BC-2'].suppress() #################### ##################### Cantos for k in range(nnodes): x, y, z = p.nodes[k].coordinates[0], p.nodes[k].coordinates[ 1], p.nodes[k].coordinates[2] if (((x > xmin - qsi) and (x < xmin + qsi)) or ((x > xmax - qsi) and (x < xmax + qsi))) and ( ((y > ymin - qsi) and (y < ymin + qsi)) or ((y > ymax - qsi) and (y < ymax + qsi))) and (((z > zmin - qsi) and (z < zmin + qsi)) or ((z > zmax - qsi) and (z < zmax + qsi))): if (((x > xmin - qsi) and (x < xmin + qsi)) and ((y > ymin - qsi) and (y < ymin + qsi)) and ((z > zmin - qsi) and (z < zmin + qsi))): corner_a = p.nodes[k:k + 1] p.Set(nodes=corner_a, name='a_corner') if (((x > xmin - qsi) and (x < xmin + qsi)) and ((y > ymin - qsi) and (y < ymin + qsi)) and ((z > zmax - qsi) and (z < zmax + qsi))): corner_e = p.nodes[k:k + 1] p.Set(nodes=corner_e, name='e_corner') if (((x > xmin - qsi) and (x < xmin + qsi)) and ((y > ymax - qsi) and (y < ymax + qsi)) and ((z > zmin - qsi) and (z < zmin + qsi))): corner_b = p.nodes[k:k + 1] p.Set(nodes=corner_b, name='b_corner') if (((x > xmin - qsi) and (x < xmin + qsi)) and ((y > ymax - qsi) and (y < ymax + qsi)) and ((z > zmax - qsi) and (z < zmax + qsi))): corner_f = p.nodes[k:k + 1] p.Set(nodes=corner_f, name='f_corner') if (((x > xmax - qsi) and (x < xmax + qsi)) and ((y > ymin - qsi) and (y < ymin + qsi)) and ((z > zmin - qsi) and (z < zmin + qsi))): corner_d = p.nodes[k:k + 1] p.Set(nodes=corner_d, name='d_corner') if (((x > xmax - qsi) and (x < xmax + qsi)) and ((y > ymin - qsi) and (y < ymin + qsi)) and ((z > zmax - qsi) and (z < zmax + qsi))): corner_h = p.nodes[k:k + 1] p.Set(nodes=corner_h, name='h_corner') if (((x > xmax - qsi) and (x < xmax + qsi)) and ((y > ymax - qsi) and (y < ymax + qsi)) and ((z > zmin - qsi) and (z < zmin + qsi))): corner_c = p.nodes[k:k + 1] p.Set(nodes=corner_c, name='c_corner') if (((x > xmax - qsi) and (x < xmax + qsi)) and ((y > ymax - qsi) and (y < ymax + qsi)) and ((z > zmax - qsi) and (z < zmax + qsi))): corner_g = p.nodes[k:k + 1] p.Set(nodes=corner_g, name='g_corner') mdb.models['Cell'].Equation(name='A_G_eq_1', terms=((-1.0, 'Cell-1.a_corner', 1), (1.0, 'Cell-1.g_corner', 1), (-1.0, 'Set-rp1', 1), (-1.0, 'Set-rp2', 1), (-1.0, 'Set-rp2', 2))) mdb.models['Cell'].Equation(name='A_G_eq_2', terms=((-1.0, 'Cell-1.a_corner', 2), (1.0, 'Cell-1.g_corner', 2), (-1.0, 'Set-rp1', 2), (-1.0, 'Set-rp2', 1), (-1.0, 'Set-rp2', 3))) mdb.models['Cell'].Equation(name='A_G_eq_3', terms=((-1.0, 'Cell-1.a_corner', 3), (1.0, 'Cell-1.g_corner', 3), (-1.0, 'Set-rp1', 3), (-1.0, 'Set-rp2', 2), (-1.0, 'Set-rp2', 3))) mdb.models['Cell'].Equation(name='B_H_eq_1', terms=((-1.0, 'Cell-1.b_corner', 1), (1.0, 'Cell-1.h_corner', 1), (-1.0, 'Set-rp1', 1), (1.0, 'Set-rp2', 1), (-1.0, 'Set-rp2', 2))) mdb.models['Cell'].Equation(name='B_H_eq_2', terms=((-1.0, 'Cell-1.b_corner', 2), (1.0, 'Cell-1.h_corner', 2), (1.0, 'Set-rp1', 2), (-1.0, 'Set-rp2', 1), (-1.0, 'Set-rp2', 3))) mdb.models['Cell'].Equation(name='B_H_eq_3', terms=((-1.0, 'Cell-1.b_corner', 3), (1.0, 'Cell-1.h_corner', 3), (-1.0, 'Set-rp1', 3), (-1.0, 'Set-rp2', 2), (1.0, 'Set-rp2', 3))) mdb.models['Cell'].Equation(name='F_D_eq_1', terms=((1.0, 'Cell-1.f_corner', 1), (-1.0, 'Cell-1.d_corner', 1), (1.0, 'Set-rp1', 1), (-1.0, 'Set-rp2', 1), (-1.0, 'Set-rp2', 2))) mdb.models['Cell'].Equation(name='F_D_eq_2', terms=((1.0, 'Cell-1.f_corner', 2), (-1.0, 'Cell-1.d_corner', 2), (-1.0, 'Set-rp1', 2), (1.0, 'Set-rp2', 1), (-1.0, 'Set-rp2', 3))) mdb.models['Cell'].Equation(name='F_D_eq_3', terms=((1.0, 'Cell-1.f_corner', 3), (-1.0, 'Cell-1.d_corner', 3), (-1.0, 'Set-rp1', 3), (1.0, 'Set-rp2', 2), (-1.0, 'Set-rp2', 3))) mdb.models['Cell'].Equation(name='E_C_eq_1', terms=((-1.0, 'Cell-1.e_corner', 1), (1.0, 'Cell-1.c_corner', 1), (-1.0, 'Set-rp1', 1), (-1.0, 'Set-rp2', 1), (1.0, 'Set-rp2', 2))) mdb.models['Cell'].Equation(name='E_C_eq_2', terms=((-1.0, 'Cell-1.e_corner', 2), (1.0, 'Cell-1.c_corner', 2), (-1.0, 'Set-rp1', 2), (-1.0, 'Set-rp2', 1), (1.0, 'Set-rp2', 3))) mdb.models['Cell'].Equation(name='E_C_eq_3', terms=((-1.0, 'Cell-1.e_corner', 3), (1.0, 'Cell-1.c_corner', 3), (1.0, 'Set-rp1', 3), (-1.0, 'Set-rp2', 2), (-1.0, 'Set-rp2', 3))) mdb.saveAs(pathName=arquivo) ################## Arestas ab = [] hg = [] for k in range(nnodes): x, y, z = p.nodes[k].coordinates[0], p.nodes[k].coordinates[ 1], p.nodes[k].coordinates[2] if ((x > xmin - qsi) and (x < xmin + qsi)) and ((z > zmin - qsi) and (z < zmin + qsi)) and ((y > ymin + qsi) and (y < ymax - qsi)): ab.append(k) elif ((x > xmax - qsi) and (x < xmax + qsi)) and ( (z < zmax + qsi) and (z > zmax - qsi)) and ((y > ymin + qsi) and (y < ymax - qsi)): hg.append(k) for k in ab: x, y, z = p.nodes[k].coordinates[0], p.nodes[k].coordinates[ 1], p.nodes[k].coordinates[2] for j in hg: x1, y1, z1 = p.nodes[j].coordinates[0], p.nodes[j].coordinates[ 1], p.nodes[j].coordinates[2] if ((y1 > y - qsi) and (y1 < y + qsi)): AB = p.nodes[k:k + 1] HG = p.nodes[j:j + 1] name_set1 = 'set_node_' + str(k) name_set2 = 'set_node_' + str(j) constraint1 = 'Cell-1.' + name_set1 constraint2 = 'Cell-1.' + name_set2 eq_name1 = 'AB_HG_eq_' + str(k) + '_' + str(j) + '_1' eq_name2 = 'AB_HG_eq_' + str(k) + '_' + str(j) + '_2' eq_name3 = 'AB_HG_eq_' + str(k) + '_' + str(j) + '_3' p.Set(nodes=AB, name=name_set1) p.Set(nodes=HG, name=name_set2) mdb.models['Cell'].Equation(name=eq_name1, terms=((-1.0, constraint1, 1), (1.0, constraint2, 1), (-1.0, 'Set-rp1', 1), (-1.0, 'Set-rp2', 2))) mdb.models['Cell'].Equation(name=eq_name2, terms=((-1.0, constraint1, 2), (1.0, constraint2, 2), (-1.0, 'Set-rp2', 1), (-1.0, 'Set-rp2', 3))) mdb.models['Cell'].Equation(name=eq_name3, terms=((-1.0, constraint1, 3), (1.0, constraint2, 3), (-1.0, 'Set-rp1', 3), (-1.0, 'Set-rp2', 2))) hg.remove(j) break dc = [] ef = [] for k in range(nnodes): x, y, z = p.nodes[k].coordinates[0], p.nodes[k].coordinates[ 1], p.nodes[k].coordinates[2] if ((x > xmin - qsi) and (x < xmin + qsi)) and ((z > zmax - qsi) and (z < zmax + qsi)) and ((y > ymin + qsi) and (y < ymax - qsi)): ef.append(k) elif ((x > xmax - qsi) and (x < xmax + qsi)) and ( (z < zmin + qsi) and (z > zmin - qsi)) and ((y > ymin + qsi) and (y < ymax - qsi)): dc.append(k) for k in dc: x, y, z = p.nodes[k].coordinates[0], p.nodes[k].coordinates[ 1], p.nodes[k].coordinates[2] for j in ef: x1, y1, z1 = p.nodes[j].coordinates[0], p.nodes[j].coordinates[ 1], p.nodes[j].coordinates[2] if ((y1 > y - qsi) and (y1 < y + qsi)): DC = p.nodes[k:k + 1] EF = p.nodes[j:j + 1] name_set1 = 'set_node_' + str(k) name_set2 = 'set_node_' + str(j) constraint1 = 'Cell-1.' + name_set1 constraint2 = 'Cell-1.' + name_set2 eq_name1 = 'DC_EF_eq_' + str(k) + '_' + str(j) + '_1' eq_name2 = 'DC_EF_eq_' + str(k) + '_' + str(j) + '_2' eq_name3 = 'DC_EF_eq_' + str(k) + '_' + str(j) + '_3' p.Set(nodes=DC, name=name_set1) p.Set(nodes=EF, name=name_set2) mdb.models['Cell'].Equation(name=eq_name1, terms=((1.0, constraint1, 1), (-1.0, constraint2, 1), (-1.0, 'Set-rp1', 1), (1.0, 'Set-rp2', 2))) mdb.models['Cell'].Equation(name=eq_name2, terms=((1.0, constraint1, 2), (-1.0, constraint2, 2), (-1.0, 'Set-rp2', 1), (1.0, 'Set-rp2', 3))) mdb.models['Cell'].Equation(name=eq_name3, terms=((1.0, constraint1, 3), (-1.0, constraint2, 3), (1.0, 'Set-rp1', 3), (-1.0, 'Set-rp2', 2))) ef.remove(j) break eh = [] bc = [] for k in range(nnodes): x, y, z = p.nodes[k].coordinates[0], p.nodes[k].coordinates[ 1], p.nodes[k].coordinates[2] if ((y > ymin - qsi) and (y < ymin + qsi)) and ((z > zmax - qsi) and (z < zmax + qsi)) and ((x > xmin + qsi) and (x < xmax - qsi)): eh.append(k) elif ((y > ymax - qsi) and (y < ymax + qsi)) and ( (z < zmin + qsi) and (z > zmin - qsi)) and ((x > xmin + qsi) and (x < xmax - qsi)): bc.append(k) for k in bc: x, y, z = p.nodes[k].coordinates[0], p.nodes[k].coordinates[ 1], p.nodes[k].coordinates[2] for j in eh: x1, y1, z1 = p.nodes[j].coordinates[0], p.nodes[j].coordinates[ 1], p.nodes[j].coordinates[2] if ((x1 > x - qsi) and (x1 < x + qsi)): BC = p.nodes[k:k + 1] EH = p.nodes[j:j + 1] name_set1 = 'set_node_' + str(k) name_set2 = 'set_node_' + str(j) constraint1 = 'Cell-1.' + name_set1 constraint2 = 'Cell-1.' + name_set2 eq_name1 = 'BC_EH_eq_' + str(k) + '_' + str(j) + '_1' eq_name2 = 'BC_EH_eq_' + str(k) + '_' + str(j) + '_2' eq_name3 = 'BC_EH_eq_' + str(k) + '_' + str(j) + '_3' p.Set(nodes=BC, name=name_set1) p.Set(nodes=EH, name=name_set2) mdb.models['Cell'].Equation(name=eq_name1, terms=((1.0, constraint1, 1), (-1.0, constraint2, 1), (-1.0, 'Set-rp2', 1), (1.0, 'Set-rp2', 2))) mdb.models['Cell'].Equation(name=eq_name2, terms=((1.0, constraint1, 2), (-1.0, constraint2, 2), (-1.0, 'Set-rp1', 2), (1.0, 'Set-rp2', 3))) mdb.models['Cell'].Equation(name=eq_name3, terms=((1.0, constraint1, 3), (-1.0, constraint2, 3), (1.0, 'Set-rp1', 3), (-1.0, 'Set-rp2', 3))) eh.remove(j) break fg = [] ad = [] for k in range(nnodes): x, y, z = p.nodes[k].coordinates[0], p.nodes[k].coordinates[ 1], p.nodes[k].coordinates[2] if ((y > ymax - qsi) and (y < ymax + qsi)) and ((z > zmax - qsi) and (z < zmax + qsi)) and ((x > xmin + qsi) and (x < xmax - qsi)): fg.append(k) elif ((y > ymin - qsi) and (y < ymin + qsi)) and ( (z < zmin + qsi) and (z > zmin - qsi)) and ((x > xmin + qsi) and (x < xmax - qsi)): ad.append(k) for k in fg: x, y, z = p.nodes[k].coordinates[0], p.nodes[k].coordinates[ 1], p.nodes[k].coordinates[2] for j in ad: x1, y1, z1 = p.nodes[j].coordinates[0], p.nodes[j].coordinates[ 1], p.nodes[j].coordinates[2] if ((x1 > x - qsi) and (x1 < x + qsi)): FG = p.nodes[k:k + 1] AD = p.nodes[j:j + 1] name_set1 = 'set_node_' + str(k) name_set2 = 'set_node_' + str(j) constraint1 = 'Cell-1.' + name_set1 constraint2 = 'Cell-1.' + name_set2 eq_name1 = 'FG_AD_eq_' + str(k) + '_' + str(j) + '_1' eq_name2 = 'FG_AD_eq_' + str(k) + '_' + str(j) + '_2' eq_name3 = 'FG_AD_eq_' + str(k) + '_' + str(j) + '_3' p.Set(nodes=FG, name=name_set1) p.Set(nodes=AD, name=name_set2) mdb.models['Cell'].Equation(name=eq_name1, terms=((1.0, constraint1, 1), (-1.0, constraint2, 1), (-1.0, 'Set-rp2', 1), (-1.0, 'Set-rp2', 2))) mdb.models['Cell'].Equation(name=eq_name2, terms=((1.0, constraint1, 2), (-1.0, constraint2, 2), (-1.0, 'Set-rp1', 2), (-1.0, 'Set-rp2', 3))) mdb.models['Cell'].Equation(name=eq_name3, terms=((1.0, constraint1, 3), (-1.0, constraint2, 3), (-1.0, 'Set-rp1', 3), (-1.0, 'Set-rp2', 3))) ad.remove(j) break ae = [] cg = [] for k in range(nnodes): x, y, z = p.nodes[k].coordinates[0], p.nodes[k].coordinates[ 1], p.nodes[k].coordinates[2] if ((x > xmin - qsi) and (x < xmin + qsi)) and ((y > ymin - qsi) and (y < ymin + qsi)) and ((z > zmin + qsi) and (z < zmax - qsi)): ae.append(k) elif ((x > xmax - qsi) and (x < xmax + qsi)) and ( (y < ymax + qsi) and (y > ymax - qsi)) and ((z > zmin + qsi) and (z < zmax - qsi)): cg.append(k) for k in cg: x, y, z = p.nodes[k].coordinates[0], p.nodes[k].coordinates[ 1], p.nodes[k].coordinates[2] for j in ae: x1, y1, z1 = p.nodes[j].coordinates[0], p.nodes[j].coordinates[ 1], p.nodes[j].coordinates[2] if ((z1 > z - qsi) and (z1 < z + qsi)): CG = p.nodes[k:k + 1] AE = p.nodes[j:j + 1] name_set1 = 'set_node_' + str(k) name_set2 = 'set_node_' + str(j) constraint1 = 'Cell-1.' + name_set1 constraint2 = 'Cell-1.' + name_set2 eq_name1 = 'CG_AE_eq_' + str(k) + '_' + str(j) + '_1' eq_name2 = 'CG_AE_eq_' + str(k) + '_' + str(j) + '_2' eq_name3 = 'CG_AE_eq_' + str(k) + '_' + str(j) + '_3' p.Set(nodes=CG, name=name_set1) p.Set(nodes=AE, name=name_set2) mdb.models['Cell'].Equation(name=eq_name1, terms=((1.0, constraint1, 1), (-1.0, constraint2, 1), (-1.0, 'Set-rp1', 1), (-1.0, 'Set-rp2', 1))) mdb.models['Cell'].Equation(name=eq_name2, terms=((1.0, constraint1, 2), (-1.0, constraint2, 2), (-1.0, 'Set-rp1', 2), (-1.0, 'Set-rp2', 1))) mdb.models['Cell'].Equation(name=eq_name3, terms=((1.0, constraint1, 3), (-1.0, constraint2, 3), (-1.0, 'Set-rp2', 2), (-1.0, 'Set-rp2', 3))) ae.remove(j) break bf = [] dh = [] for k in range(nnodes): x, y, z = p.nodes[k].coordinates[0], p.nodes[k].coordinates[ 1], p.nodes[k].coordinates[2] if ((x > xmin - qsi) and (x < xmin + qsi)) and ((y > ymax - qsi) and (y < ymax + qsi)) and ((z > zmin + qsi) and (z < zmax - qsi)): bf.append(k) elif ((x > xmax - qsi) and (x < xmax + qsi)) and ( (y < ymin + qsi) and (y > ymin - qsi)) and ((z > zmin + qsi) and (z < zmax - qsi)): dh.append(k) for k in dh: x, y, z = p.nodes[k].coordinates[0], p.nodes[k].coordinates[ 1], p.nodes[k].coordinates[2] for j in bf: x1, y1, z1 = p.nodes[j].coordinates[0], p.nodes[j].coordinates[ 1], p.nodes[j].coordinates[2] if ((z1 > z - qsi) and (z1 < z + qsi)): DH = p.nodes[k:k + 1] BF = p.nodes[j:j + 1] name_set1 = 'set_node_' + str(k) name_set2 = 'set_node_' + str(j) constraint1 = 'Cell-1.' + name_set1 constraint2 = 'Cell-1.' + name_set2 eq_name1 = 'DH_BF_eq_' + str(k) + '_' + str(j) + '_1' eq_name2 = 'DH_BF_eq_' + str(k) + '_' + str(j) + '_2' eq_name3 = 'DH_BF_eq_' + str(k) + '_' + str(j) + '_3' p.Set(nodes=DH, name=name_set1) p.Set(nodes=BF, name=name_set2) mdb.models['Cell'].Equation(name=eq_name1, terms=((1.0, constraint1, 1), (-1.0, constraint2, 1), (-1.0, 'Set-rp1', 1), (1.0, 'Set-rp2', 1))) mdb.models['Cell'].Equation(name=eq_name2, terms=((1.0, constraint1, 2), (-1.0, constraint2, 2), (1.0, 'Set-rp1', 2), (-1.0, 'Set-rp2', 1))) mdb.models['Cell'].Equation(name=eq_name3, terms=((1.0, constraint1, 3), (-1.0, constraint2, 3), (-1.0, 'Set-rp2', 2), (1.0, 'Set-rp2', 3))) bf.remove(j) break mdb.saveAs(pathName=arquivo) ################################3 Faces abfe = [] dcgh = [] for k in range(nnodes): x, y, z = p.nodes[k].coordinates[0], p.nodes[k].coordinates[ 1], p.nodes[k].coordinates[2] if ((x > xmin - qsi) and (x < xmin + qsi)) and ((y > ymin + qsi) and (y < ymax - qsi)) and ((z > zmin + qsi) and (z < zmax - qsi)): abfe.append(k) elif ((x > xmax - qsi) and (x < xmax + qsi)) and ( (y > ymin + qsi) and (y < ymax - qsi)) and ((z > zmin + qsi) and (z < zmax - qsi)): dcgh.append(k) for k in abfe: x, y, z = p.nodes[k].coordinates[0], p.nodes[k].coordinates[ 1], p.nodes[k].coordinates[2] for j in dcgh: x1, y1, z1 = p.nodes[j].coordinates[0], p.nodes[j].coordinates[ 1], p.nodes[j].coordinates[2] if ((y1 > y - qsi) and (y1 < y + qsi)) and ((z1 > z - qsi) and (z1 < z + qsi)): ABFE = p.nodes[k:k + 1] DCGH = p.nodes[j:j + 1] name_set1 = 'set_node_' + str(k) name_set2 = 'set_node_' + str(j) constraint1 = 'Cell-1.' + name_set1 constraint2 = 'Cell-1.' + name_set2 eq_name1 = 'ABFE_DCGH_eq_' + str(k) + '_' + str(j) + '_1' eq_name2 = 'ABFE_DCGH_eq_' + str(k) + '_' + str(j) + '_2' eq_name3 = 'ABFE_DCGH_eq_' + str(k) + '_' + str(j) + '_3' p.Set(nodes=ABFE, name=name_set1) p.Set(nodes=DCGH, name=name_set2) mdb.models['Cell'].Equation(name=eq_name1, terms=((-1.0, constraint1, 1), (1.0, constraint2, 1), (-1.0, 'Set-rp1', 1))) mdb.models['Cell'].Equation(name=eq_name2, terms=((-1.0, constraint1, 2), (1.0, constraint2, 2), (-1.0, 'Set-rp2', 1))) mdb.models['Cell'].Equation(name=eq_name3, terms=((-1.0, constraint1, 3), (1.0, constraint2, 3), (-1.0, 'Set-rp2', 2))) dcgh.remove(j) break aehd = [] bfgc = [] for k in range(nnodes): x, y, z = p.nodes[k].coordinates[0], p.nodes[k].coordinates[ 1], p.nodes[k].coordinates[2] if ((y > ymin - qsi) and (y < ymin + qsi)) and ((x > xmin + qsi) and (x < xmax - qsi)) and ((z > zmin + qsi) and (z < zmax - qsi)): aehd.append(k) elif ((y > ymax - qsi) and (y < ymax + qsi)) and ( (x > xmin + qsi) and (x < xmax - qsi)) and ((z > zmin + qsi) and (z < zmax - qsi)): bfgc.append(k) for k in aehd: x, y, z = p.nodes[k].coordinates[0], p.nodes[k].coordinates[ 1], p.nodes[k].coordinates[2] for j in bfgc: x1, y1, z1 = p.nodes[j].coordinates[0], p.nodes[j].coordinates[ 1], p.nodes[j].coordinates[2] if ((x1 > x - qsi) and (x1 < x + qsi)): if ((z1 > z - qsi) and (z1 < z + qsi)): AEHD = p.nodes[k:k + 1] BFGC = p.nodes[j:j + 1] name_set1 = 'set_node_' + str(k) name_set2 = 'set_node_' + str(j) constraint1 = 'Cell-1.' + name_set1 constraint2 = 'Cell-1.' + name_set2 eq_name1 = 'AEHD_BFGC_eq_' + str(k) + '_' + str(j) + '_1' eq_name2 = 'AEHD_BFGC_eq_' + str(k) + '_' + str(j) + '_2' eq_name3 = 'AEHD_BFGC_eq_' + str(k) + '_' + str(j) + '_3' p.Set(nodes=AEHD, name=name_set1) p.Set(nodes=BFGC, name=name_set2) mdb.models['Cell'].Equation(name=eq_name1, terms=((-1.0, constraint1, 1), (1.0, constraint2, 1), (-1.0, 'Set-rp2', 1))) mdb.models['Cell'].Equation(name=eq_name2, terms=((-1.0, constraint1, 2), (1.0, constraint2, 2), (-1.0, 'Set-rp1', 2))) mdb.models['Cell'].Equation(name=eq_name3, terms=((-1.0, constraint1, 3), (1.0, constraint2, 3), (-1.0, 'Set-rp2', 3))) bfgc.remove(j) break abcd = [] efgh = [] for k in range(nnodes): x, y, z = p.nodes[k].coordinates[0], p.nodes[k].coordinates[ 1], p.nodes[k].coordinates[2] if ((z > zmin - qsi) and (z < zmin + qsi)) and ((x > xmin + qsi) and (x < xmax - qsi)) and ((y > ymin + qsi) and (y < ymax - qsi)): abcd.append(k) elif ((z > zmax - qsi) and (z < zmax + qsi)) and ( (x > xmin + qsi) and (x < xmax - qsi)) and ((y > ymin + qsi) and (y < ymax - qsi)): efgh.append(k) for k in abcd: x, y, z = p.nodes[k].coordinates[0], p.nodes[k].coordinates[ 1], p.nodes[k].coordinates[2] for j in efgh: x1, y1, z1 = p.nodes[j].coordinates[0], p.nodes[j].coordinates[ 1], p.nodes[j].coordinates[2] if ((x1 > x - qsi) and (x1 < x + qsi)): if ((y1 > y - qsi) and (y1 < y + qsi)): ABCD = p.nodes[k:k + 1] EFGH = p.nodes[j:j + 1] name_set1 = 'set_node_' + str(k) name_set2 = 'set_node_' + str(j) constraint1 = 'Cell-1.' + name_set1 constraint2 = 'Cell-1.' + name_set2 eq_name1 = 'ABCD_EFGH_eq_' + str(k) + '_' + str(j) + '_1' eq_name2 = 'ABCD_EFGH_eq_' + str(k) + '_' + str(j) + '_2' eq_name3 = 'ABCD_EFGH_eq_' + str(k) + '_' + str(j) + '_3' p.Set(nodes=ABCD, name=name_set1) p.Set(nodes=EFGH, name=name_set2) mdb.models['Cell'].Equation(name=eq_name1, terms=((-1.0, constraint1, 1), (1.0, constraint2, 1), (-1.0, 'Set-rp2', 2))) mdb.models['Cell'].Equation(name=eq_name2, terms=((-1.0, constraint1, 2), (1.0, constraint2, 2), (-1.0, 'Set-rp2', 3))) mdb.models['Cell'].Equation(name=eq_name3, terms=((-1.0, constraint1, 3), (1.0, constraint2, 3), (-1.0, 'Set-rp1', 3))) efgh.remove(j) break mdb.saveAs(pathName=arquivo)
def cell(tipo, fraction, matrix, meshsize): if tipo == 'CCC': sime = float(meshsize) sizemesh = 7.2e-05/(sime) if fraction == '15': a = 955.8075e-6 if fraction == '30': a = 758.47e-6 if fraction == '45': a = 662.585e-6 executeOnCaeStartup() s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=200.0) g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraints s.setPrimaryObject(option=STANDALONE) #Parts Creation s.Spot(point=(0.0, 0.0)) s.FixedConstraint(entity=v[0]) s.rectangle(point1=(0.0, 0.0), point2=(13.75, 13.75)) s.EqualLengthConstraint(entity1=g[2], entity2=g[3]) s.ObliqueDimension(vertex1=v[4], vertex2=v[5], textPoint=(a, 0.0), value=a) p = mdb.models['Model-1'].Part(name='Part-1', dimensionality=THREE_D, type=DEFORMABLE_BODY) p = mdb.models['Model-1'].parts['Part-1'] p.BaseSolidExtrude(sketch=s, depth=a) s.unsetPrimaryObject() p = mdb.models['Model-1'].parts['Part-1'] del mdb.models['Model-1'].sketches['__profile__'] s1 = mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=200.0) g, v, d, c = s1.geometry, s1.vertices, s1.dimensions, s1.constraints s1.setPrimaryObject(option=STANDALONE) s1.ConstructionLine(point1=(0.0, -100.0), point2=(0.0, 100.0)) s1.FixedConstraint(entity=g[2]) s1.Spot(point=(0.0, 0.0)) s1.CoincidentConstraint(entity1=v[0], entity2=g[2], addUndoState=False) s1.FixedConstraint(entity=v[0]) s1.Line(point1=(16.25, 0.0), point2=(0.0, 0.0)) s1.HorizontalConstraint(entity=g[3], addUndoState=False) s1.Line(point1=(0.0, 0.0), point2=(0.0, 19.2429962158203)) s1.VerticalConstraint(entity=g[4], addUndoState=False) s1.PerpendicularConstraint(entity1=g[3], entity2=g[4], addUndoState=False) s1.CoincidentConstraint(entity1=v[4], entity2=g[2], addUndoState=False) s1.EqualLengthConstraint(entity1=g[4], entity2=g[3]) s1.ArcByCenterEnds(center=(0.0, 0.0), point1=(0.0, 19.2429962158203), point2=( 19.2429962158203, 0.0), direction=CLOCKWISE) s1.ObliqueDimension(vertex1=v[1], vertex2=v[2], textPoint=(10.7691106796265, -8.25650024414063), value=0.0005) p = mdb.models['Model-1'].Part(name='Part-2', dimensionality=THREE_D, type=DEFORMABLE_BODY) p = mdb.models['Model-1'].parts['Part-2'] p.BaseSolidRevolve(sketch=s1, angle=90.0, flipRevolveDirection=OFF) s1.unsetPrimaryObject() p = mdb.models['Model-1'].parts['Part-2'] del mdb.models['Model-1'].sketches['__profile__'] a = mdb.models['Model-1'].rootAssembly a = mdb.models['Model-1'].rootAssembly a.DatumCsysByDefault(CARTESIAN) p = mdb.models['Model-1'].parts['Part-1'] a.Instance(name='Part-1-1', part=p, dependent=ON) p = mdb.models['Model-1'].parts['Part-2'] a.Instance(name='Part-2-1', part=p, dependent=ON) p1 = a.instances['Part-2-1'] p1.translate(vector=(0.00100580750000034, 0.0, 0.0)) a = mdb.models['Model-1'].rootAssembly p = mdb.models['Model-1'].parts['Part-2'] a.Instance(name='Part-2-2', part=p, dependent=ON) p1 = a.instances['Part-2-2'] p1.translate(vector=(0.00155580749999906, 0.0, 0.0)) a = mdb.models['Model-1'].rootAssembly d11 = a.instances['Part-2-2'].datums e1 = a.instances['Part-1-1'].edges a.ParallelEdge(movableAxis=d11[1], fixedAxis=e1[7], flip=ON) a = mdb.models['Model-1'].rootAssembly v11 = a.instances['Part-2-2'].vertices v12 = a.instances['Part-1-1'].vertices a.CoincidentPoint(movablePoint=v11[1], fixedPoint=v12[4]) a = mdb.models['Model-1'].rootAssembly v11 = a.instances['Part-2-1'].vertices v12 = a.instances['Part-1-1'].vertices a.CoincidentPoint(movablePoint=v11[1], fixedPoint=v12[3]) a = mdb.models['Model-1'].rootAssembly a.InstanceFromBooleanMerge(name='Part-3', instances=(a.instances['Part-1-1'], a.instances['Part-2-1'], a.instances['Part-2-2'], ), keepIntersections=ON, originalInstances=SUPPRESS, domain=GEOMETRY) ## Material Definition - Temperature Dependent p = mdb.models['Model-1'].parts['Part-2'] mdb.models['Model-1'].Material(name='Alumina') mdb.models['Model-1'].materials['Alumina'].Elastic(temperatureDependency=ON, table=((326.0e9, 0.24, 298.0), (317.0e9, 0.24, 508.0), (300.0e9, 0.24, 868.0))) mdb.models['Model-1'].materials['Alumina'].Expansion(table=((7.6e-06, ), )) if str(matrix) == 'G3': mdb.models['Model-1'].Material(name='Glass') mdb.models['Model-1'].materials['Glass'].Elastic(temperatureDependency=ON, table=((72.0e9, 0.23, 337.0), (69.2e9, 0.23, 549.0), (61.7e9, 0.23, 736.0))) mdb.models['Model-1'].materials['Glass'].Expansion(table=((1.16e-05, ), )) if str(matrix) == 'G2': mdb.models['Model-1'].Material(name='Glass') mdb.models['Model-1'].materials['Glass'].Elastic(temperatureDependency=ON, table=((76.0e9, 0.21, 298.0), (76.0e9, 0.21, 549.0), (76.0e9, 0.21, 868.0))) mdb.models['Model-1'].materials['Glass'].Expansion(table=((7.4e-06, ), )) if str(matrix) == 'G1': mdb.models['Model-1'].Material(name='Glass') mdb.models['Model-1'].materials['Glass'].Elastic(temperatureDependency=ON, table=((68.0e9, 0.2, 298.0), (68.0e9, 0.2, 549.0), (68.0e9, 0.2, 868.0))) mdb.models['Model-1'].materials['Glass'].Expansion(table=((4.6e-06, ), )) mdb.models['Model-1'].HomogeneousSolidSection(name='Section-1', material='Alumina', thickness=None) mdb.models['Model-1'].HomogeneousSolidSection(name='Section-2', material='Glass', thickness=None) p = mdb.models['Model-1'].parts['Part-3'] a = mdb.models['Model-1'].rootAssembly p = mdb.models['Model-1'].parts['Part-3'] p = mdb.models['Model-1'].parts['Part-3'] c = p.cells cells = c.getSequenceFromMask(mask=('[#4 ]', ), ) region = p.Set(cells=cells, name='Set-1') p = mdb.models['Model-1'].parts['Part-3'] p.SectionAssignment(region=region, sectionName='Section-2', offset=0.0, offsetType=MIDDLE_SURFACE, offsetField='', thicknessAssignment=FROM_SECTION) p = mdb.models['Model-1'].parts['Part-3'] c = p.cells cells = c.getSequenceFromMask(mask=('[#3 ]', ), ) region = p.Set(cells=cells, name='Set-2') p = mdb.models['Model-1'].parts['Part-3'] p.SectionAssignment(region=region, sectionName='Section-1', offset=0.0, offsetType=MIDDLE_SURFACE, offsetField='', thicknessAssignment=FROM_SECTION) ## Mesh Definition p = mdb.models['Model-1'].parts['Part-3'] p.seedPart(size=sizemesh, deviationFactor=0.1, minSizeFactor=0.1) p = mdb.models['Model-1'].parts['Part-3'] p.generateMesh() a = mdb.models['Model-1'].rootAssembly a.regenerate() ## Input File Generation mdb.Job(name='Cell', model='Model-1', description='', type=ANALYSIS, atTime=None, waitMinutes=0, waitHours=0, queue=None, memory=90, memoryUnits=PERCENTAGE, getMemoryFromAnalysis=True, explicitPrecision=SINGLE, nodalOutputPrecision=SINGLE, echoPrint=OFF, modelPrint=OFF, contactPrint=OFF, historyPrint=OFF, userSubroutine='', scratch='', resultsFormat=ODB, parallelizationMethodExplicit=DOMAIN, numDomains=1, activateLoadBalancing=False, multiprocessingMode=DEFAULT, numCpus=1) mdb.jobs['Cell'].writeInput(consistencyChecking=OFF) #: The job input file has been written to "Job-1.inp". ############################################################################################### elif tipo == 'CFC': # Part Creation sime = float(meshsize) sizemesh = 6.4e-05/(sime) if fraction == '15': a = 1203.998e-6 if fraction == '30': a = 955.614e-6 if fraction == '45': a = 834.8056e-6 executeOnCaeStartup() s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=200.0) g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraints s.setPrimaryObject(option=STANDALONE) s.Spot(point=(0.0, 0.0)) s.FixedConstraint(entity=v[0]) s.rectangle(point1=(0.0, 0.0), point2=(15.0, 13.75)) s.EqualLengthConstraint(entity1=g[5], entity2=g[4]) s.ObliqueDimension(vertex1=v[4], vertex2=v[5], textPoint=(4.39339447021484, -11.8999996185303), value=a) p = mdb.models['Model-1'].Part(name='Part-1', dimensionality=THREE_D, type=DEFORMABLE_BODY) p = mdb.models['Model-1'].parts['Part-1'] p.BaseSolidExtrude(sketch=s, depth=a) s.unsetPrimaryObject() p = mdb.models['Model-1'].parts['Part-1'] del mdb.models['Model-1'].sketches['__profile__'] s1 = mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=200.0) g, v, d, c = s1.geometry, s1.vertices, s1.dimensions, s1.constraints s1.setPrimaryObject(option=STANDALONE) s1.ConstructionLine(point1=(0.0, -100.0), point2=(0.0, 100.0)) s1.FixedConstraint(entity=g[2]) s1.Spot(point=(0.0, 0.0)) s1.CoincidentConstraint(entity1=v[0], entity2=g[2], addUndoState=False) s1.Line(point1=(17.5, 0.0), point2=(0.0, 0.0)) s1.HorizontalConstraint(entity=g[3], addUndoState=False) s1.Line(point1=(0.0, 0.0), point2=(0.0, 15.7499961853027)) s1.VerticalConstraint(entity=g[4], addUndoState=False) s1.PerpendicularConstraint(entity1=g[3], entity2=g[4], addUndoState=False) s1.CoincidentConstraint(entity1=v[4], entity2=g[2], addUndoState=False) s1.EqualLengthConstraint(entity1=g[4], entity2=g[3]) s1.ArcByCenterEnds(center=(0.0, 0.0), point1=(0.0, 15.7499961853027), point2=( 15.7499961853027, 0.0), direction=CLOCKWISE) s1.ObliqueDimension(vertex1=v[1], vertex2=v[2], textPoint=(4.92061614990234, -13.6499996185303), value=0.0005) p = mdb.models['Model-1'].Part(name='Part-2', dimensionality=THREE_D, type=DEFORMABLE_BODY) p = mdb.models['Model-1'].parts['Part-2'] p.BaseSolidRevolve(sketch=s1, angle=90.0, flipRevolveDirection=OFF) s1.unsetPrimaryObject() p = mdb.models['Model-1'].parts['Part-2'] del mdb.models['Model-1'].sketches['__profile__'] ## Material Definition mdb.models['Model-1'].Material(name='Alumina') mdb.models['Model-1'].materials['Alumina'].Elastic(temperatureDependency=ON, table=((326000000000.0, 0.24, 298.0), (309000000000.0, 0.24, 688.0), ( 302000000000.0, 0.24, 838.0))) mdb.models['Model-1'].materials['Alumina'].Expansion(table=((7.6e-06, ), )) if str(matrix) == 'G3': mdb.models['Model-1'].Material(name='Glass') mdb.models['Model-1'].materials['Glass'].Elastic(temperatureDependency=ON, table=((72.0e9, 0.23, 337.0), (69.2e9, 0.23, 549.0), (61.7e9, 0.23, 736.0))) mdb.models['Model-1'].materials['Glass'].Expansion(table=((1.16e-05, ), )) if str(matrix) == 'G2': mdb.models['Model-1'].Material(name='Glass') mdb.models['Model-1'].materials['Glass'].Elastic(temperatureDependency=ON, table=((76.0e9, 0.21, 298.0), (76.0e9, 0.21, 549.0), (76.0e9, 0.21, 868.0))) mdb.models['Model-1'].materials['Glass'].Expansion(table=((7.4e-06, ), )) if str(matrix) == 'G1': mdb.models['Model-1'].Material(name='Glass') mdb.models['Model-1'].materials['Glass'].Elastic(temperatureDependency=ON, table=((68.0e9, 0.2, 298.0), (68.0e9, 0.2, 549.0), (68.0e9, 0.2, 868.0))) mdb.models['Model-1'].materials['Glass'].Expansion(table=((4.6e-06, ), )) mdb.models['Model-1'].HomogeneousSolidSection(name='Section-1', material='Alumina', thickness=None) mdb.models['Model-1'].HomogeneousSolidSection(name='Section-2', material='Glass', thickness=None) a = mdb.models['Model-1'].rootAssembly a = mdb.models['Model-1'].rootAssembly a.DatumCsysByDefault(CARTESIAN) p = mdb.models['Model-1'].parts['Part-1'] a.Instance(name='Part-1-1', part=p, dependent=ON) p = mdb.models['Model-1'].parts['Part-2'] a.Instance(name='Part-2-1', part=p, dependent=ON) p1 = a.instances['Part-2-1'] p1.translate(vector=(0.00125399800000121, 0.0, 0.0)) a = mdb.models['Model-1'].rootAssembly p = mdb.models['Model-1'].parts['Part-2'] a.Instance(name='Part-2-2', part=p, dependent=ON) p1 = a.instances['Part-2-2'] p1.translate(vector=(0.00180399800000188, 0.0, 0.0)) a = mdb.models['Model-1'].rootAssembly p = mdb.models['Model-1'].parts['Part-2'] a.Instance(name='Part-2-3', part=p, dependent=ON) p1 = a.instances['Part-2-3'] p1.translate(vector=(0.00235399800000255, 0.0, 0.0)) a = mdb.models['Model-1'].rootAssembly d11 = a.instances['Part-2-1'].datums e1 = a.instances['Part-1-1'].edges a.ParallelEdge(movableAxis=d11[1], fixedAxis=e1[7], flip=ON) session.viewports['Viewport: 1'].view.setValues(nearPlane=0.00524128, farPlane=0.0101367, width=0.00399707, height=0.00138687, viewOffsetX=4.94979e-005, viewOffsetY=-6.91218e-005) a = mdb.models['Model-1'].rootAssembly v11 = a.instances['Part-2-1'].vertices v12 = a.instances['Part-1-1'].vertices a.CoincidentPoint(movablePoint=v11[1], fixedPoint=v12[4]) a = mdb.models['Model-1'].rootAssembly e1 = a.instances['Part-2-2'].edges e2 = a.instances['Part-1-1'].edges a.ParallelEdge(movableAxis=e1[0], fixedAxis=e2[10], flip=OFF) a = mdb.models['Model-1'].rootAssembly v11 = a.instances['Part-2-2'].vertices v12 = a.instances['Part-1-1'].vertices a.CoincidentPoint(movablePoint=v11[1], fixedPoint=v12[0]) a = mdb.models['Model-1'].rootAssembly e1 = a.instances['Part-2-3'].edges e2 = a.instances['Part-1-1'].edges a.ParallelEdge(movableAxis=e1[1], fixedAxis=e2[8], flip=ON) a = mdb.models['Model-1'].rootAssembly v11 = a.instances['Part-2-3'].vertices v12 = a.instances['Part-1-1'].vertices a.CoincidentPoint(movablePoint=v11[1], fixedPoint=v12[7]) a = mdb.models['Model-1'].rootAssembly a = mdb.models['Model-1'].rootAssembly p = mdb.models['Model-1'].parts['Part-2'] a.Instance(name='Part-2-4', part=p, dependent=ON) p = a.instances['Part-2-4'] p.translate(vector=(0.00125399800000121, 0.0, 0.0)) a = mdb.models['Model-1'].rootAssembly d1 = a.instances['Part-2-4'].datums e1 = a.instances['Part-1-1'].edges a.ParallelEdge(movableAxis=d1[1], fixedAxis=e1[2], flip=OFF) a = mdb.models['Model-1'].rootAssembly e1 = a.instances['Part-2-4'].edges e2 = a.instances['Part-1-1'].edges a.ParallelEdge(movableAxis=e1[1], fixedAxis=e2[1], flip=ON) a = mdb.models['Model-1'].rootAssembly v1 = a.instances['Part-2-4'].vertices v2 = a.instances['Part-1-1'].vertices a.CoincidentPoint(movablePoint=v1[1], fixedPoint=v2[2]) #: The instance "Part-2-4" is fully constrained a = mdb.models['Model-1'].rootAssembly a.InstanceFromBooleanMerge(name='Part-3', instances=(a.instances['Part-1-1'], a.instances['Part-2-1'], a.instances['Part-2-2'], a.instances['Part-2-3'], a.instances['Part-2-4'], ), keepIntersections=ON, originalInstances=SUPPRESS, domain=GEOMETRY) p = mdb.models['Model-1'].parts['Part-1'] p = mdb.models['Model-1'].parts['Part-3'] p = mdb.models['Model-1'].parts['Part-3'] c = p.cells cells = c.getSequenceFromMask(mask=('[#10 ]', ), ) region = p.Set(cells=cells, name='Set-1') p = mdb.models['Model-1'].parts['Part-3'] p.SectionAssignment(region=region, sectionName='Section-2', offset=0.0, offsetType=MIDDLE_SURFACE, offsetField='', thicknessAssignment=FROM_SECTION) p = mdb.models['Model-1'].parts['Part-3'] c = p.cells cells = c.getSequenceFromMask(mask=('[#f ]', ), ) region = p.Set(cells=cells, name='Set-2') p = mdb.models['Model-1'].parts['Part-3'] p.SectionAssignment(region=region, sectionName='Section-1', offset=0.0, offsetType=MIDDLE_SURFACE, offsetField='', thicknessAssignment=FROM_SECTION) a = mdb.models['Model-1'].rootAssembly a.regenerate() a = mdb.models['Model-1'].rootAssembly mdb.Job(name='Cell', model='Model-1', description='', type=ANALYSIS, atTime=None, waitMinutes=0, waitHours=0, queue=None, memory=90, memoryUnits=PERCENTAGE, getMemoryFromAnalysis=True, explicitPrecision=SINGLE, nodalOutputPrecision=SINGLE, echoPrint=OFF, modelPrint=OFF, contactPrint=OFF, historyPrint=OFF, userSubroutine='', scratch='', resultsFormat=ODB, parallelizationMethodExplicit=DOMAIN, numDomains=1, activateLoadBalancing=False, multiprocessingMode=DEFAULT, numCpus=1) p = mdb.models['Model-1'].parts['Part-3'] p = mdb.models['Model-1'].parts['Part-3'] ## Mesh Definition p.seedPart(size=sizemesh, deviationFactor=0.1, minSizeFactor=0.1) p = mdb.models['Model-1'].parts['Part-3'] p.generateMesh() a = mdb.models['Model-1'].rootAssembly a.regenerate() a = mdb.models['Model-1'].rootAssembly a = mdb.models['Model-1'].rootAssembly mdb.jobs['Cell'].writeInput(consistencyChecking=OFF) #: The job input file has been written to "Cell.inp". if tipo == 'C': sime = float(meshsize) sizemesh = 9.6e-05/(2**sime) if fraction == '15': a = 758.47e-6 if fraction == '30': a = 602e-6 if fraction == '45': a = 525.895e-6 executeOnCaeStartup() s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=200.0) g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraints s.setPrimaryObject(option=STANDALONE) s.Spot(point=(0.0, 0.0)) s.FixedConstraint(entity=v[0]) s.rectangle(point1=(0.0, 0.0), point2=(13.75, 12.5)) s.EqualLengthConstraint(entity1=g[5], entity2=g[4]) s.ObliqueDimension(vertex1=v[4], vertex2=v[5], textPoint=(5.62355804443359, -7.70000076293945), value=a) p = mdb.models['Model-1'].Part(name='Part-1', dimensionality=THREE_D, type=DEFORMABLE_BODY) p = mdb.models['Model-1'].parts['Part-1'] p.BaseSolidExtrude(sketch=s, depth=a) s.unsetPrimaryObject() p = mdb.models['Model-1'].parts['Part-1'] del mdb.models['Model-1'].sketches['__profile__'] s1 = mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=200.0) g, v, d, c = s1.geometry, s1.vertices, s1.dimensions, s1.constraints s1.setPrimaryObject(option=STANDALONE) s1.ConstructionLine(point1=(0.0, -100.0), point2=(0.0, 100.0)) s1.FixedConstraint(entity=g[2]) s1.Spot(point=(0.0, 0.0)) s1.CoincidentConstraint(entity1=v[0], entity2=g[2], addUndoState=False) s1.FixedConstraint(entity=v[0]) s1.Line(point1=(17.5, 0.0), point2=(0.0, 0.0)) s1.HorizontalConstraint(entity=g[3], addUndoState=False) s1.Line(point1=(0.0, 0.0), point2=(0.0, 22.5749969482422)) s1.VerticalConstraint(entity=g[4], addUndoState=False) s1.PerpendicularConstraint(entity1=g[3], entity2=g[4], addUndoState=False) s1.CoincidentConstraint(entity1=v[4], entity2=g[2], addUndoState=False) s1.EqualLengthConstraint(entity1=g[4], entity2=g[3]) s1.ArcByCenterEnds(center=(0.0, 0.0), point1=(0.0, 22.5749969482422), point2=( 22.5749969482422, 0.0), direction=CLOCKWISE) s1.ObliqueDimension(vertex1=v[1], vertex2=v[2], textPoint=(12.4772567749023, -13.6499977111816), value=0.0005) p = mdb.models['Model-1'].Part(name='Part-2', dimensionality=THREE_D, type=DEFORMABLE_BODY) p = mdb.models['Model-1'].parts['Part-2'] p.BaseSolidRevolve(sketch=s1, angle=90.0, flipRevolveDirection=OFF) s1.unsetPrimaryObject() p = mdb.models['Model-1'].parts['Part-2'] del mdb.models['Model-1'].sketches['__profile__'] if str(matrix) == 'G3': mdb.models['Model-1'].Material(name='Glass') mdb.models['Model-1'].materials['Glass'].Elastic(temperatureDependency=ON, table=((72.0e9, 0.23, 337.0), (69.2e9, 0.23, 549.0), (61.7e9, 0.23, 736.0))) mdb.models['Model-1'].materials['Glass'].Expansion(table=((1.16e-05, ), )) if str(matrix) == 'G2': mdb.models['Model-1'].Material(name='Glass') mdb.models['Model-1'].materials['Glass'].Elastic(temperatureDependency=ON, table=((76.0e9, 0.21, 298.0), (76.0e9, 0.21, 549.0), (76.0e9, 0.21, 868.0))) mdb.models['Model-1'].materials['Glass'].Expansion(table=((7.4e-06, ), )) if str(matrix) == 'G1': mdb.models['Model-1'].Material(name='Glass') mdb.models['Model-1'].materials['Glass'].Elastic(temperatureDependency=ON, table=((68.0e9, 0.2, 298.0), (68.0e9, 0.2, 549.0), (68.0e9, 0.2, 868.0))) mdb.models['Model-1'].materials['Glass'].Expansion(table=((4.6e-06, ), )) mdb.models['Model-1'].Material(name='Alumina') mdb.models['Model-1'].materials['Alumina'].Elastic(temperatureDependency=ON, table=((326000000000.0, 0.24, 298.0), (309000000000.0, 0.24, 688.0), ( 302000000000.0, 0.24, 838.0))) mdb.models['Model-1'].materials['Alumina'].Expansion(table=((7.6e-06, ), )) mdb.models['Model-1'].HomogeneousSolidSection(name='Section-1', material='Alumina', thickness=None) mdb.models['Model-1'].HomogeneousSolidSection(name='Section-2', material='Glass', thickness=None) a = mdb.models['Model-1'].rootAssembly a = mdb.models['Model-1'].rootAssembly a.DatumCsysByDefault(CARTESIAN) p = mdb.models['Model-1'].parts['Part-1'] a.Instance(name='Part-1-1', part=p, dependent=ON) p = mdb.models['Model-1'].parts['Part-2'] a.Instance(name='Part-2-1', part=p, dependent=ON) p1 = a.instances['Part-2-1'] p1.translate(vector=(0.000808470000000838, 0.0, 0.0)) a = mdb.models['Model-1'].rootAssembly d11 = a.instances['Part-2-1'].datums e1 = a.instances['Part-1-1'].edges a.ParallelEdge(movableAxis=d11[1], fixedAxis=e1[7], flip=ON) a = mdb.models['Model-1'].rootAssembly v11 = a.instances['Part-2-1'].vertices v12 = a.instances['Part-1-1'].vertices a.CoincidentPoint(movablePoint=v11[1], fixedPoint=v12[4]) a = mdb.models['Model-1'].rootAssembly a.InstanceFromBooleanMerge(name='Part-3', instances=(a.instances['Part-1-1'], a.instances['Part-2-1'], ), keepIntersections=ON, originalInstances=SUPPRESS, domain=GEOMETRY) p = mdb.models['Model-1'].parts['Part-2'] p = mdb.models['Model-1'].parts['Part-3'] p = mdb.models['Model-1'].parts['Part-3'] c = p.cells cells = c.getSequenceFromMask(mask=('[#2 ]', ), ) region = p.Set(cells=cells, name='Set-1') p = mdb.models['Model-1'].parts['Part-3'] p.SectionAssignment(region=region, sectionName='Section-2', offset=0.0, offsetType=MIDDLE_SURFACE, offsetField='', thicknessAssignment=FROM_SECTION) p = mdb.models['Model-1'].parts['Part-3'] c = p.cells cells = c.getSequenceFromMask(mask=('[#1 ]', ), ) region = p.Set(cells=cells, name='Set-2') p = mdb.models['Model-1'].parts['Part-3'] p.SectionAssignment(region=region, sectionName='Section-1', offset=0.0, offsetType=MIDDLE_SURFACE, offsetField='', thicknessAssignment=FROM_SECTION) p = mdb.models['Model-1'].parts['Part-3'] ## Mesh p.seedPart(size=sizemesh, deviationFactor=0.1, minSizeFactor=0.1) p = mdb.models['Model-1'].parts['Part-3'] p.generateMesh() a = mdb.models['Model-1'].rootAssembly a.regenerate() mdb.Job(name='Cell', model='Model-1', description='', type=ANALYSIS, atTime=None, waitMinutes=0, waitHours=0, queue=None, memory=90, memoryUnits=PERCENTAGE, getMemoryFromAnalysis=True, explicitPrecision=SINGLE, nodalOutputPrecision=SINGLE, echoPrint=OFF, modelPrint=OFF, contactPrint=OFF, historyPrint=OFF, userSubroutine='', scratch='', resultsFormat=ODB, parallelizationMethodExplicit=DOMAIN, numDomains=1, activateLoadBalancing=False, multiprocessingMode=DEFAULT, numCpus=1) mdb.jobs['Cell'].writeInput(consistencyChecking=OFF)
def analise(arq, matrix, resf): executeOnCaeStartup() #matrix = 'G1' #arq = 'CFC-30' #resf = 595 #carga = 'xx' if matrix == 'G1': aque = 595 elif matrix == 'G2': aque = 605 elif matrix == 'G3': aque= 470 path = 'C:/Users/duhju/Desktop/abaqus/modelos/' + arq + '.cae' openMdb(pathName=path) #: The model database "C:\Users\duhju\Desktop\abaqus\modelos\CFC-30.cae" has been opened. p = mdb.models['Cell'].parts['Cell'] a = mdb.models['Cell'].rootAssembly a.regenerate() a = mdb.models['Cell'].rootAssembly mdb.models['Cell'].StaticStep(name='Step-2', previous='Step-1') mdb.models['Cell'].StaticStep(name='Step-3', previous='Step-2') a = mdb.models['Cell'].rootAssembly n1 = a.instances['Cell-1'].nodes region = a.Set(nodes=n1, name='Set-3') ## if arq == 'CCC-15': ## a = mdb.models['Cell'].rootAssembly ## n1 = a.instances['Cell-1'].nodes ## nodes1 = n1.getSequenceFromMask(mask=('[#ffffffff:1840 #1 ]', ), ) ## region = a.Set(nodes=nodes1, name='Set-3') ## elif arq == "CCC-30": ## a = mdb.models['Cell'].rootAssembly ## n1 = a.instances['Cell-1'].nodes ## nodes1 = n1.getSequenceFromMask(mask=('[#ffffffff:1078 #1fff ]', ), ) ## region = a.Set(nodes=nodes1, name='Set-3') ## elif arq == 'CCC-45': ## a = mdb.models['Cell'].rootAssembly ## n1 = a.instances['Cell-1'].nodes ## nodes1 = n1.getSequenceFromMask(mask=('[#ffffffff:782 #7ff ]', ), ) ## region = a.Set(nodes=nodes1, name='Set-3') ## elif arq == 'CFC-15': ## a = mdb.models['Cell'].rootAssembly ## n1 = a.instances['Cell-1'].nodes ## nodes1 = n1 ## region = a.Set(nodes=nodes1, name='Set-3') ## elif arq == "CFC-30": ## a = mdb.models['Cell'].rootAssembly ## n1 = a.instances['Cell-1'].nodes ## nodes1 = n1.getSequenceFromMask(mask=('[#ffffffff:1736 #7ff ]', ), ) ## region = a.Set(nodes=nodes1, name='Set-3') ## elif arq == 'CFC-45': ## a = mdb.models['Cell'].rootAssembly ## n1 = a.instances['Cell-1'].nodes ## nodes1 = n1.getSequenceFromMask(mask=('[#ffffffff:1736 #7ff ]', ), ) ## region = a.Set(nodes=nodes1, name='Set-3') ## elif arq == 'C-15': ## a = mdb.models['Cell'].rootAssembly ## n1 = a.instances['Cell-1'].nodes ## nodes1 = n1.getSequenceFromMask(mask=('[#ffffffff:1066 #7fff ]', ), ) ## region = a.Set(nodes=nodes1, name='Set-3') ## elif arq == "C-30": ## a = mdb.models['Cell'].rootAssembly ## n1 = a.instances['Cell-1'].nodes ## nodes1 = n1.getSequenceFromMask(mask=('[#ffffffff:623 #1ffffff ]', ), ) ## region = a.Set(nodes=nodes1, name='Set-3') ## elif arq == 'C-45': ## a = mdb.models['Cell'].rootAssembly ## n1 = a.instances['Cell-1'].nodes ## nodes1 = n1.getSequenceFromMask(mask=('[#ffffffff:515 #7fffff ]', ), ) ## region = a.Set(nodes=nodes1, name='Set-3') ###Campo de aquecimento do modelo mdb.models['Cell'].Temperature(name='Predefined Field-1', createStepName='Initial', region=region, distributionType=UNIFORM, crossSectionDistribution=CONSTANT_THROUGH_THICKNESS, magnitudes=(0.0, )) mdb.models['Cell'].predefinedFields['Predefined Field-1'].setValuesInStep( stepName='Step-1', magnitudes=(float(aque), )) ###Campo de resfriamento do modelo a = mdb.models['Cell'].rootAssembly region = a.sets['Set-3'] mdb.models['Cell'].Temperature(name='Predefined Field-2', createStepName='Step-1', region=region, distributionType=UNIFORM, crossSectionDistribution=CONSTANT_THROUGH_THICKNESS, magnitudes=(float(aque), )) mdb.models['Cell'].predefinedFields['Predefined Field-2'].setValuesInStep( stepName='Step-2', magnitudes=(float(resf), )) ###Condicao de deformacao do modelo if resf == aque: mdb.models['Cell'].predefinedFields['Predefined Field-2'].suppress() epso = 1.0e-4 cargas = ['xx', 'yy', 'zz', 'xy', 'xz', 'yz'] for carga in cargas: if carga=='xx': mdb.models['Cell'].boundaryConditions['BC-rp1'].setValuesInStep( stepName='Step-3', u1=epso, u2=0.000, u3=0.000) elif carga=='yy': mdb.models['Cell'].boundaryConditions['BC-rp1'].setValuesInStep( stepName='Step-3', u1=0.000, u2=epso, u3=0.000) elif carga=='zz': mdb.models['Cell'].boundaryConditions['BC-rp1'].setValuesInStep( stepName='Step-3', u1=0.000, u2=0.000, u3=epso) elif carga=='xy': mdb.models['Cell'].boundaryConditions['BC-rp1'].setValuesInStep( stepName='Step-3', u1=0.000, u2=0.000, u3=0.000) mdb.models['Cell'].boundaryConditions['BC-rp2'].setValuesInStep( stepName='Step-3', u1=2*epso, u2=0.000, u3=0.000) elif carga=='xz': mdb.models['Cell'].boundaryConditions['BC-rp2'].setValuesInStep( stepName='Step-3', u1=0.000, u2=2*epso, u3=0.000) elif carga=='yz': mdb.models['Cell'].boundaryConditions['BC-rp2'].setValuesInStep( stepName='Step-3', u1=0.000, u2=0.000, u3=2*epso) job = 'Job-'+carga ### Analise MEF mdb.Job(name=job, model='Cell', description='', type=ANALYSIS, atTime=None, waitMinutes=0, waitHours=0, queue=None, memory=90, memoryUnits=PERCENTAGE, getMemoryFromAnalysis=True, explicitPrecision=SINGLE, nodalOutputPrecision=SINGLE, echoPrint=OFF, modelPrint=OFF, contactPrint=OFF, historyPrint=OFF, userSubroutine='', scratch='', resultsFormat=ODB, multiprocessingMode=DEFAULT, numCpus=1, numGPUs=0) mdb.jobs[job].submit(consistencyChecking=OFF)
def PostProc(IterNum): #Output data base OdbName = 'Job-Iter' + str(IterNum) + '.odb' Odb = openOdb(OdbName) Assembly = Odb.rootAssembly Instance = Assembly.instances['INSTANCE-2DLBEAM'] Elem = Instance.elements # #Read design variables # DVFileName = './DesignVariables/DV_Iter' + str(IterNum) + '.dat' # # DVFileName = 'DV_Iter' + str(IterNum) + '.dat' # with io.open(DVFileName, mode = 'r', encoding = 'utf8') as DesignVars: #Open file # DVStr = DesignVars.readlines() # #Convert from 'str' to 'float' # DV = [] # for dv in DVStr: # DV.append(float(dv.strip())) # #Creat list for solid and void elements # VEID = [] # SEID = [] # for ii in range(len(DV)): # # if DV[ii] == 1.0: # SEID.append(ii + 1) # else: # VEID.append(ii + 1) #Convert from list to tuple # TSEID = tuple(SEID) # TVEID = tuple(VEID) #Creat element sets for display # Instance.ElementSetFromElementLabels(name = 'SES', elementLabels = TSEID) # Instance.ElementSetFromElementLabels(name = 'VES', elementLabels = TVEID) #Display window session.Viewport(name='Viewport: 1', origin=(0.0, 0.0), width=200, height=150) session.viewports['Viewport: 1'].makeCurrent() session.viewports['Viewport: 1'].maximize() #Set backgroud color to white session.graphicsOptions.setValues(backgroundColor='#FFFFFF', backgroundStyle=SOLID) executeOnCaeStartup() #Display optimized structure session.viewports['Viewport: 1'].partDisplay.geometryOptions.setValues( referenceRepresentation=ON) # o1 = session.openOdb(name = OdbName) session.viewports['Viewport: 1'].setValues(displayedObject=Odb) #Remove void elements in viewpoint # leaf = dgo.LeafFromElementSets(elementSets=('INSTANCE-2DLBEAM.VES', )) # session.viewports['Viewport: 1'].odbDisplay.displayGroup.remove(leaf=leaf) session.viewports['Viewport: 1'].viewportAnnotationOptions.setValues( triad=OFF, legend=OFF, title=OFF, state=OFF, annotations=OFF, compass=OFF) #Save graph to *.png file session.printOptions.setValues( reduceColors=False, vpDecorations=False) #vpDecorations -> title or not FileName1 = 'TopOptRes' + str(IterNum) session.printToFile(fileName=FileName1, format=PNG, canvasObjects=(session.viewports['Viewport: 1'], )) #Display von Mises stress field session.viewports['Viewport: 1'].odbDisplay.display.setValues( plotState=(CONTOURS_ON_DEF, )) session.viewports['Viewport: 1'].odbDisplay.contourOptions.setValues( contourStyle=CONTINUOUS) session.viewports['Viewport: 1'].viewportAnnotationOptions.setValues( triad=OFF, title=OFF, state=OFF, annotations=OFF, compass=OFF) session.viewports['Viewport: 1'].viewportAnnotationOptions.setValues( legend=ON) session.viewports['Viewport: 1'].viewportAnnotationOptions.setValues( legendFont='-*-calibri-medium-r-normal-*-*-120-*-*-p-*-*-*') #session.viewports['Viewport: 1'].AnnotationOptions.setValues(state=False) #leaf = dgo.LeafFromElementSets(elementSets=('INSTANCE-2DLBEAM.VES', )) #session.viewports['Viewport: 1'].odbDisplay.displayGroup.add(leaf=leaf) #Save graph to *.png file session.printOptions.setValues(reduceColors=False, vpDecorations=False) FileName2 = 'TopOptStr' + str(IterNum) session.printToFile(fileName=FileName2, format=PNG, canvasObjects=(session.viewports['Viewport: 1'], )) Odb.close()
def performCAE(polist): quadelms = True ALE = False time = 200 nc = 10 # number of chambers wall = 8 cwall = 3*wall/4 gap = wall/3 uplayer = 4 btlayer = 8 #chamber_size chamber_L = polist[0] chamber_H = polist[1] chamber_W = chamber_L offset = 1.0 # extended for length Inexlayer = 0.35*btlayer inlet_H = (btlayer - Inexlayer) / 2 inlet_W = chamber_W / 3 body_H = chamber_H + uplayer + btlayer body_W = chamber_W + (wall/2) body_L = 2 * (wall + offset) + nc * chamber_L + (nc - 1) * cwall mass_scaling = 1.0 film_thickness = 1.0 mesh_size = 4.0 #pressure PRESSURE_C = 0.03 Beta = 0.95 PRESSURE_A = (math.log(PRESSURE_C+1, 5))/30 PRESSURE_B = PRESSURE_A*Beta + PRESSURE_C*(1-Beta) # Open the viewport #myViewport = session.Viewport( # name='HXZSPA', origin=(0, 0), width=250, height=150) executeOnCaeStartup() Mdb() # create the part s = mdb.models['Model-1'].ConstrainedSketch(name='profile', sheetSize=200.0) s.setPrimaryObject(option=STANDALONE) # Extrude a solid rectangle for body (assuming mirror-symmetry in x). s.rectangle(point1=(0.0, 0.0), point2=(body_W, body_H)) p = mdb.models['Model-1'].Part(name='SPA', dimensionality=THREE_D, type=DEFORMABLE_BODY) p = mdb.models['Model-1'].parts['SPA'] p.BaseSolidExtrude(sketch=s, depth=body_L) s.unsetPrimaryObject() del mdb.models['Model-1'].sketches['profile'] # Extrude cuts for the air inlet tunnel f = p.faces e = p.edges face = f.findAt(((0.0, 0.1, 0.1),),)[0] edge = e.findAt(((0.0, body_H - 0.1, body_L),),)[0] t = p.MakeSketchTransform(sketchPlane=face, sketchUpEdge=edge, sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, origin=(0.0, 0.0, body_L)) s1 = mdb.models['Model-1'].ConstrainedSketch( name='__profile__', sheetSize=45.6, gridSpacing=1.14, transform=t) s1.setPrimaryObject(option=SUPERIMPOSE) p.projectReferencesOntoSketch(sketch=s1, filter=COPLANAR_EDGES) s1.rectangle(point1=(0.0, btlayer - inlet_H), point2=(-body_L + wall + offset, btlayer)) p.CutExtrude(sketchPlane=face, sketchUpEdge=edge, sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, sketch=s1, depth=inlet_W, flipExtrudeDirection=OFF) s1.unsetPrimaryObject() del mdb.models['Model-1'].sketches['__profile__'] # Extrude cuts for the air chambers f = p.faces e = p.edges face = f.findAt(((0.0, 0.1, 0.1),),)[0] edge = e.findAt(((0.0, body_H - 0.1, body_L),),)[0] t = p.MakeSketchTransform(sketchPlane=face, sketchUpEdge=edge, sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, origin=(0.0, 0.0, body_L)) s = mdb.models['Model-1'].ConstrainedSketch( name='profile', sheetSize=45.6, gridSpacing=1.14, transform=t) s.setPrimaryObject(option=SUPERIMPOSE) p.projectReferencesOntoSketch(sketch=s, filter=COPLANAR_EDGES) for i in range(nc): xoff = offset + wall + i * (cwall + chamber_L) s.rectangle(point1=(-xoff, btlayer), point2=(-xoff - chamber_L, btlayer + chamber_H)) p.CutExtrude(sketchPlane=face, sketchUpEdge=edge, sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, sketch=s, depth=chamber_W, flipExtrudeDirection=OFF) s.unsetPrimaryObject() del mdb.models['Model-1'].sketches['profile'] # Extrude cuts for the gaps between chambers f = p.faces e = p.edges face = f.findAt(((0.0, 0.1, 0.1),),)[0] edge = e.findAt(((0.0, body_H - 0.1, body_L),),)[0] t = p.MakeSketchTransform(sketchPlane=face, sketchUpEdge=edge, sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, origin=(0.0, 0.0, body_L)) s = mdb.models['Model-1'].ConstrainedSketch( name='profile', sheetSize=45.6, gridSpacing=1.14, transform=t) s.setPrimaryObject(option=SUPERIMPOSE) p.projectReferencesOntoSketch(sketch=s, filter=COPLANAR_EDGES) for i in range(nc - 1): xoff = offset + wall + chamber_L + i * (cwall + chamber_L) s.rectangle(point1=(-xoff-((cwall-gap)/2), body_H), point2=(-xoff -((cwall-gap)/2)-gap, body_H - chamber_H*1.2)) p.CutExtrude(sketchPlane=face, sketchUpEdge=edge, sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, sketch=s, depth=body_W, flipExtrudeDirection=OFF) s.unsetPrimaryObject() del mdb.models['Model-1'].sketches['profile'] # Define some variables d = p.datums c = p.cells f = p.faces e = p.edges v = p.vertices # Create sets and surfaces p.Set(cells=c, name='ALL') # Symmetry boundary condition in width. faces = f.findAt(((0.0, body_H-0.1, 0.1),),) p.Set(faces=faces, name='SYMM_W') # Pressure set, for measuring purposes zoff = body_L - offset - wall - (nc - 1) * (cwall + chamber_L) # chamber-left faces = f.findAt( ((chamber_W - 0.1, btlayer + chamber_H - 0.1, zoff - chamber_L),),) p.Set(faces=faces, name='PRESSURE') # Surface for measuring displacements (same for linear or bending). faces = f.findAt(((0.1, 0.1, 0.0),),) # back side. p.Surface(side1Faces=faces, name='MEASURED') # Partition the part into two regions pickedCells = c.findAt(((0.1, 0.1, 0.1),)) p.DatumPlaneByPrincipalPlane( principalPlane=XZPLANE, offset=Inexlayer) p.PartitionCellByDatumPlane(datumPlane=d.values()[-1], cells=pickedCells) # Split the middle section along the back of the chambers. pickedCells = c.findAt(((0.1, Inexlayer+0.1, 0.1), )) #pickedCells = c.getSequenceFromMask(mask=('[#2 ]', ), ) p.DatumPlaneByPrincipalPlane(principalPlane=YZPLANE, offset=chamber_W) p.PartitionCellByDatumPlane(datumPlane=d.values()[-1], cells=pickedCells) # Partition the membrane for the tube BC, if necessary. # pickedFaces = f.findAt(((0.1, 0.0, wall + offset + 0.1), )) # Membrane. # p.DatumPlaneByPrincipalPlane( # principalPlane=XYPLANE, offset=body_L - wall - offset) # p.PartitionFaceByDatumPlane(datumPlane=d.values()[-1], faces=pickedFaces) # Additional sets and surfaces after partitioning # Tube(fixed) boundary condition faces = f.findAt(((body_W - 0.1, 0.1 + btlayer, body_L),), # extrenal face 1 ((inlet_W + 0.1, Inexlayer + 0.1, body_L),), # external face 2 ((0.1, 0.1, body_L),),) # external face 3 p.Set(faces=faces, name='TUBE') # pressure boundary condition in chambers and connecting tubes #Pressure A for i in range(nc): zoff = wall + offset + i * (cwall + chamber_L) faces = f.findAt(((chamber_W - 0.1, btlayer + chamber_H, zoff + 0.1),), # chamber top ((chamber_W - 0.1, btlayer, zoff + 0.1),), # chamber bottom ((chamber_W - 0.1, btlayer + 0.1, zoff),), # chamber left ((chamber_W - 0.1, btlayer + 0.1, zoff + chamber_L),), # chamber right ((chamber_W, btlayer + 0.1, zoff + 0.1),),) # chamber down faces2 = f.findAt( ((0.1, btlayer, zoff + chamber_L + 0.1),),) # inlet-top if i == 0: allfaces = faces + faces2 else: allfaces = allfaces + faces + faces2 p.Surface(side1Faces=allfaces, name='PRESSURE_A') # For a bending actuator, also apply the pressure to the air inlet tube #allfaces = p.surfaces['PRESSURE'].faces #allfaces = allfaces + \ # f.findAt(((inlet_W, btlayer - 0.1, wall + offset + 0.1),)) #allfaces = allfaces + \ # f.findAt(((0.1, btlayer - inlet_H, wall + offset + 0.1),)) #p.Surface(side1Faces=allfaces, name='PRESSURE') #Pressure B facesB = f.findAt(((chamber_W-0.1,btlayer+0.1,wall+offset),)) facesB = facesB + f.findAt(((inlet_W, btlayer - 0.1, wall + offset + 0.1),)) p.Surface(side1Faces=facesB,name='PRESSURE_B') #pressure C facesC = f.findAt(((0.1, btlayer - inlet_H, wall + offset + 0.1),)) p.Surface(side1Faces=facesC,name='PRESSURE_C') # Create the material for the Inextensible layer mdb.models['Model-1'].Material(name='SILK') mdb.models['Model-1'].materials['SILK'].Density( table=((mass_scaling * 0.0013, ), )) mdb.models['Model-1'].materials['SILK'].Elastic(table=((4100.0, 0.49), )) # Create a material section. Note that increasing the thickness will increase # the tension resistance, but will take longer to converge. # mdb.models['Model-1'].MembraneSection(name='SILK', material='SILK', thicknessType=UNIFORM, # thickness=film_thickness, thicknessField='', poissonDefinition=DEFAULT) mdb.models['Model-1'].HomogeneousSolidSection( name='SILK', material='SILK', thickness=film_thickness) cells = c.findAt(((0.1,0.1,0.1),)) region1 = p.Set(cells=cells, name='SILK_LAYER') p.SectionAssignment(region=region1, sectionName='SILK', offset=0.0, offsetType=MIDDLE_SURFACE, offsetField='', thicknessAssignment=FROM_SECTION) # Set the output frequency output_frequency = 20 #Create the material for the Extensible layer if mat['density']==0.0: print 'WARNING: material density equals 0.0' if mat['matname']=='???': print 'WARNING: material name is given as',mat['matname'] mdb.models['Model-1'].Material(name=mat['matname']) mdb.models['Model-1'].materials[mat['matname']].Density(table=((mass_scaling*mat['density'], ), )) allparams = mat['params']+mat['D'] if 'order' in mat: mdb.models['Model-1'].materials[mat['matname']].Hyperelastic( materialType=ISOTROPIC, testData=OFF, volumetricResponse=VOLUMETRIC_DATA, type=get_abq_model(mat['model']), n=mat['order'], table=(allparams, ), moduliTimeScale=LONG_TERM) # moduliTimeScale=INSTANTANEOUS) else: mdb.models['Model-1'].materials[mat['matname']].Hyperelastic( materialType=ISOTROPIC, testData=OFF, volumetricResponse=VOLUMETRIC_DATA, type=get_abq_model(mat['model']), table=(allparams, ), moduliTimeScale=LONG_TERM) # moduliTimeScale=INSTANTANEOUS) # Support hysteretic properties. if 'hyst_S' in mat: mdb.models['Model-1'].materials[mat['matname']].hyperelastic.Hysteresis( table=((mat['hyst_S'], mat['hyst_A'], mat['hyst_m'], mat['hyst_C']), )) mdb.models['Model-1'].HomogeneousSolidSection(name='SPA',material=mat['matname'],thickness=None) #Collect cell for the extensible layer cella = c.findAt(((0.1,Inexlayer+0.1,0.1),)) cellb = c.findAt(((body_W-0.1,Inexlayer+0.1,0.1),)) allcells = cella+cellb region2 = p.Set(cells=allcells,name='SPA_LAYER') p.SectionAssignment(region=region2, sectionName='SPA', offset=0.0, offsetType=MIDDLE_SURFACE, offsetField='', thicknessAssignment=FROM_SECTION) #Mesh the geometry #Using Tetrahedron and hexahedron #p.seedPart(size=mesh_size, deviationFactor=0.1, minSizeFactor=0.1) #pickedRegions = c.findAt(((0.1,body_H-0.1,0.1),)) #p.setMeshControls(regions=pickedRegions,elemShape=TET,technique=FREE) #elemType1 = mesh.ElemType(elemCode=C3D20RH, elemLibrary=STANDARD) #elemType2 = mesh.ElemType(elemCode=C3D15H, elemLibrary=STANDARD) #elemType3 = mesh.ElemType(elemCode=C3D10H, elemLibrary=STANDARD) #region = p.sets['ALL'] #p.setElementType(regions=region, elemTypes=(elemType1, elemType2, elemType3)) #p.generateMesh() #Only Tetrahedron pickedRegions = c.findAt(((0.1, body_H-0.1, 0.1), ), ((body_W-0.1, body_H-0.1, 0.1), ), ((0.1, 0.1, 0.1), )) p.setMeshControls(regions=pickedRegions, elemShape=TET, technique=FREE) cells = c.findAt(((0.1, body_H-0.1, 0.1), ), ((body_W-0.1, body_H-0.1, 0.1), ), ((0.1, 0.1, 0.1), )) pickedRegions =(cells, ) elemType1 = mesh.ElemType(elemCode=C3D20RH, elemLibrary=STANDARD) elemType2 = mesh.ElemType(elemCode=C3D15H, elemLibrary=STANDARD) elemType3 = mesh.ElemType(elemCode=C3D10H, elemLibrary=STANDARD) p.setElementType(regions=pickedRegions, elemTypes=(elemType1, elemType2,elemType3)) p.seedPart(size=mesh_size, deviationFactor=0.1, minSizeFactor=0.1) p.generateMesh() # Create the assembly a = mdb.models['Model-1'].rootAssembly a.DatumCsysByDefault(CARTESIAN) a.Instance(name='SPA',part=p,dependent=ON) #Create a step inc = min(15, 0.1*time) maxnuminc=100000 #bnd actuator init_inc = inc/10.0 mdb.models['Model-1'].ImplicitDynamicsStep(name='Step-1', previous='Initial', timePeriod=time, application=QUASI_STATIC, initialInc=init_inc, minInc=1e-08, maxInc=inc, maxNumInc=maxnuminc, nohaf=OFF, amplitude=RAMP, alpha=DEFAULT, initialConditions=OFF, nlgeom=ON) print 'No damping' if ALE: region = a.instances['SPA'].sets['ALL'] mdb.models['Model-1'].steps['Step-1'].AdaptiveMeshDomain(region=region,controls=None,frequency=100, meshSweeps=25) #Default=10,1 #Create the loads and boundary conditions region = a.instances['SPA'].sets['SYMM_W'] mdb.models['Model-1'].XsymmBC(name='SYMM_W',createStepName='Step-1',region=region,localCsys=None) region = a.instances['SPA'].sets['TUBE'] mdb.models['Model-1'].DisplacementBC(name='TUBE', createStepName='Initial', region=region, u1=SET, u2=SET, u3=SET, ur1=UNSET, ur2=UNSET, ur3=UNSET, amplitude=UNSET, distributionType=UNIFORM, fieldName='', localCsys=None) #pressure loads region = a.instances['SPA'].surfaces['PRESSURE_A'] mdb.models['Model-1'].Pressure(name='PRESSURE_A', createStepName='Step-1', region=region, distributionType=UNIFORM, field='', magnitude=PRESSURE_A, amplitude=UNSET) region = a.instances['SPA'].surfaces['PRESSURE_B'] mdb.models['Model-1'].Pressure(name='PRESSURE_B', createStepName='Step-1', region=region, distributionType=UNIFORM, field='', magnitude=PRESSURE_B, amplitude=UNSET) region = a.instances['SPA'].surfaces['PRESSURE_C'] mdb.models['Model-1'].Pressure(name='PRESSURE_C', createStepName='Step-1', region=region, distributionType=UNIFORM, field='', magnitude=PRESSURE_C, amplitude=UNSET) # Create a reference point for calculating the length of the actuator. a.ReferencePoint(point=(body_W/2.0, body_H/2.0, body_L)) rp = a.referencePoints[a.referencePoints.keys()[0]] a.Set(referencePoints=(rp,), name='LPT') region1 = a.sets['LPT'] region2 = a.instances['SPA'].sets['TUBE'] mdb.models['Model-1'].Coupling(name='LENGTH_MEASUREMENT', controlPoint=region1, surface=region2, influenceRadius=WHOLE_SURFACE, couplingType=DISTRIBUTING, weightingMethod=UNIFORM, localCsys=None, u1=ON, u2=ON, u3=ON, ur1=ON, ur2=ON, ur3=ON) # Adjust the output requests. mdb.models['Model-1'].fieldOutputRequests['F-Output-1'].setValues(frequency=output_frequency,variables=( 'S', # Stress components and invariants. # 'PE', 'PEEQ', 'PEMAG', # Plastic strain, Equivalent plastic strain, Plastic strain magnitude. 'EE', 'IE', 'NE', 'LE', # Elastic strain, Inelastic strain, Nominal strain, Logarithmic strain. 'U', 'V', 'A', # Displacement, Velocity, Acceleration. 'RF', 'CF', 'P', # Reaction forces and moments, Concentrated forces and moments, Pressure loads. 'CSTRESS', 'CDISP', 'CFORCE', # Contact stresses, Contact displacements, Contact forces. 'ENER', # All energy magnitudes. # 'EVOL', # Element volume. )) regionDef = a.allInstances['SPA'].sets['PRESSURE'] mdb.models['Model-1'].FieldOutputRequest(name='PRESSURE', createStepName='Step-1', variables=('P', ), region=regionDef, sectionPoints=DEFAULT, rebar=EXCLUDE, frequency=output_frequency) regionDef=a.sets['LPT'] mdb.models['Model-1'].HistoryOutputRequest(name='LENGTH', variables=(('COOR3'),), createStepName='Step-1', region=regionDef, sectionPoints=DEFAULT, rebar=EXCLUDE, frequency=output_frequency) # H-Output-1 is the default history output request with the default variables. mdb.models['Model-1'].historyOutputRequests['H-Output-1'].setValues(frequency=output_frequency) # For a displacement test, add a nodeset to measure displacements. verts = v.findAt(((0.0, 0.0, 0.0), )) p.Set(vertices=verts, name='UPT') # Create a history output request for the displacement at the RP. regionDef = a.allInstances['SPA'].sets['UPT'] mdb.models['Model-1'].HistoryOutputRequest(name='DISPLACEMENT', frequency=output_frequency, createStepName='Step-1', region=regionDef, sectionPoints=DEFAULT, rebar=EXCLUDE, variables=('U1', 'U2', 'U3', 'COOR3')) #Create a job jname = 'MySPA_Analysis' myjob=mdb.Job(name=jname, model='Model-1', description='', type=ANALYSIS, atTime=None, waitMinutes=0, waitHours=0, queue=None, memory=90, memoryUnits=PERCENTAGE, getMemoryFromAnalysis=True, explicitPrecision=SINGLE, nodalOutputPrecision=FULL, echoPrint=OFF, modelPrint=OFF, contactPrint=OFF, historyPrint=OFF, userSubroutine='', scratch='', multiprocessingMode=DEFAULT, numCpus=8, numDomains=8, numGPUs=0) myjob.submit(consistencyChecking=OFF) myjob.waitForCompletion() #Extracts the maximum result from the Abaqus odb o = session.openOdb(name=jname+'.odb',readOnly=True) max_mises = max_result(('U','magnitude'),o) Result = max_mises return Result
def result2PNG( odb_path, png_name, result_type='E', png_folder=r'D:/05_result/', ): ''' 将结果文件打印到指定路径 :param odb_path: odb路径 :param structure: 何种结构类型 :param loadcase: 工况类型 :param instance: 何种构件 :param result_type: 结果类型,S, E :param png_folder: 图片路径 :return: 无 ''' session.Viewport(name='Viewport: 1', origin=(0.0, 0.0), width=192.38020324707, height=71.1782455444336) session.viewports['Viewport: 1'].makeCurrent() session.viewports['Viewport: 1'].maximize() executeOnCaeStartup() session.viewports['Viewport: 1'].partDisplay.geometryOptions.setValues( referenceRepresentation=ON) o1 = session.openOdb(name='d:/Temp/thermal-2019-05-08-15-36-00.odb') session.viewports['Viewport: 1'].setValues(displayedObject=o1) session.viewports['Viewport: 1'].odbDisplay.display.setValues( plotState=(CONTOURS_ON_DEF, )) session.viewports['Viewport: 1'].odbDisplay.setPrimaryVariable( variableLabel='E', outputPosition=INTEGRATION_POINT, refinement=(INVARIANT, 'Max. Principal'), ) ####################################### # 后处理图像进行处理,删去杂物,仅保留图形和数值 ####################################### session.viewports['Viewport: 1'].odbDisplay.commonOptions.setValues( visibleEdges=FREE) session.viewports['Viewport: 1'].viewportAnnotationOptions.setValues( triad=OFF, title=OFF, state=OFF, annotations=OFF, compass=OFF) session.viewports['Viewport: 1'].viewportAnnotationOptions.setValues( legendBox=OFF) session.viewports['Viewport: 1'].maximize() session.viewports['Viewport: 1'].viewportAnnotationOptions.setValues( legendFont='-*-verdana-medium-r-normal-*-*-160-*-*-p-*-*-*') del_instance = [('BFC-1', 'FENGTOU-1', 'PROPELLANT-1'), ('SHELL-1', 'FENGTOU-1', 'PROPELLANT-1'), ('SHELL-1', 'BFC-1', 'PROPELLANT-1'), ('SHELL-1', 'BFC-1', 'FENGTOU-1')] instance_name = ['S', 'B', 'F', 'H'] leaf = dgo.LeafFromPartInstance(partInstanceName=( 'BFC-1', 'FENGTOU-1', 'PROPELLANT-1', )) session.viewports['Viewport: 1'].odbDisplay.displayGroup.remove(leaf=leaf) ####################################### # 输出当前图片 ####################################### png_path = png_folder + png_name + 'S' session.printToFile(fileName=png_path, format=PNG, canvasObjects=(session.viewports['Viewport: 1'], )) leaf_1 = dgo.Leaf(leafType=DEFAULT_MODEL) session.viewports['Viewport: 1'].odbDisplay.displayGroup.replace( leaf=leaf_1) instance_name = ['S', 'B', 'F', 'H'] leaf = dgo.LeafFromPartInstance(partInstanceName=( 'SHELL-1', 'FENGTOU-1', 'PROPELLANT-1', )) session.viewports['Viewport: 1'].odbDisplay.displayGroup.remove(leaf=leaf) ####################################### # 输出当前图片 ####################################### png_path = png_folder + png_name + 'B' session.printToFile(fileName=png_path, format=PNG, canvasObjects=(session.viewports['Viewport: 1'], )) time.sleep(5) leaf_1 = dgo.Leaf(leafType=DEFAULT_MODEL) session.viewports['Viewport: 1'].odbDisplay.displayGroup.replace( leaf=leaf_1) time.sleep(5) instance_name = ['S', 'B', 'F', 'H'] leaf = dgo.LeafFromPartInstance(partInstanceName=( 'SHELL-1', 'BFC-1', 'PROPELLANT-1', )) session.viewports['Viewport: 1'].odbDisplay.displayGroup.remove(leaf=leaf) ####################################### # 输出当前图片 ####################################### png_path = png_folder + png_name + 'F' session.printToFile(fileName=png_path, format=PNG, canvasObjects=(session.viewports['Viewport: 1'], )) leaf_1 = dgo.Leaf(leafType=DEFAULT_MODEL) session.viewports['Viewport: 1'].odbDisplay.displayGroup.replace( leaf=leaf_1) instance_name = ['S', 'B', 'F', 'H'] leaf = dgo.LeafFromPartInstance(partInstanceName=( 'SHELL-1', 'BFC-1', 'FENGTOU-1', )) session.viewports['Viewport: 1'].odbDisplay.displayGroup.remove(leaf=leaf) ####################################### # 输出当前图片 ####################################### png_path = png_folder + png_name + 'H' session.printToFile(fileName=png_path, format=PNG, canvasObjects=(session.viewports['Viewport: 1'], )) leaf_1 = dgo.Leaf(leafType=DEFAULT_MODEL) session.viewports['Viewport: 1'].odbDisplay.displayGroup.replace( leaf=leaf_1)
def cellmirror(model): modelpath = 'C:/Users/duhju/Desktop/abaqus/modelos/' + model +'.cae' executeOnCaeStartup() a = mdb.models['Model-1'].rootAssembly mdb.ModelFromInputFile(name='Cell', inputFileName='C:/Temp/Cell.inp') a = mdb.models['Cell'].rootAssembly a = mdb.models['Model-1'].rootAssembly del mdb.models['Model-1'] a = mdb.models['Cell'].rootAssembly p1 = mdb.models['Cell'].parts['PART-3'] p = mdb.models['Cell'].Part(name='PART-1', objectToCopy=mdb.models['Cell'].parts['PART-3'], compressFeatureList=ON, mirrorPlane=XYPLANE) p1 = mdb.models['Cell'].parts['PART-3'] p = mdb.models['Cell'].Part(name='PART-2', objectToCopy=mdb.models['Cell'].parts['PART-3'], compressFeatureList=ON, mirrorPlane=YZPLANE) p1 = mdb.models['Cell'].parts['PART-2'] p = mdb.models['Cell'].Part(name='PART-4', objectToCopy=mdb.models['Cell'].parts['PART-2'], compressFeatureList=ON, mirrorPlane=XYPLANE) p1 = mdb.models['Cell'].parts['PART-3'] p = mdb.models['Cell'].Part(name='PART-5', objectToCopy=mdb.models['Cell'].parts['PART-3'], compressFeatureList=ON, mirrorPlane=XZPLANE) p1 = mdb.models['Cell'].parts['PART-5'] p = mdb.models['Cell'].Part(name='PART-6', objectToCopy=mdb.models['Cell'].parts['PART-5'], compressFeatureList=ON, mirrorPlane=XYPLANE) p1 = mdb.models['Cell'].parts['PART-5'] p = mdb.models['Cell'].Part(name='PART-7', objectToCopy=mdb.models['Cell'].parts['PART-5'], compressFeatureList=ON, mirrorPlane=YZPLANE) p1 = mdb.models['Cell'].parts['PART-7'] p = mdb.models['Cell'].Part(name='PART-8', objectToCopy=mdb.models['Cell'].parts['PART-7'], compressFeatureList=ON, mirrorPlane=XYPLANE) a = mdb.models['Cell'].rootAssembly a = mdb.models['Cell'].rootAssembly p = mdb.models['Cell'].parts['PART-2'] a.Instance(name='PART-2-1', part=p, dependent=ON) p = mdb.models['Cell'].parts['PART-4'] a.Instance(name='PART-4-1', part=p, dependent=ON) p = mdb.models['Cell'].parts['PART-5'] a.Instance(name='PART-5-1', part=p, dependent=ON) p = mdb.models['Cell'].parts['PART-6'] a.Instance(name='PART-6-1', part=p, dependent=ON) p = mdb.models['Cell'].parts['PART-7'] a.Instance(name='PART-7-1', part=p, dependent=ON) p = mdb.models['Cell'].parts['PART-8'] a.Instance(name='PART-8-1', part=p, dependent=ON) a = mdb.models['Cell'].rootAssembly a1 = mdb.models['Cell'].rootAssembly p = mdb.models['Cell'].parts['PART-1'] a1.Instance(name='PART-1-1', part=p, dependent=ON) a1 = mdb.models['Cell'].rootAssembly a1.InstanceFromBooleanMerge(name='Cell', instances=(a1.instances['PART-3-1'], a1.instances['PART-2-1'], a1.instances['PART-4-1'], a1.instances['PART-5-1'], a1.instances['PART-6-1'], a1.instances['PART-7-1'], a1.instances['PART-8-1'], a1.instances['PART-1-1'], ), mergeNodes=BOUNDARY_ONLY, nodeMergingTolerance=1e-06, domain=MESH, originalInstances=SUPPRESS) mdb.models['Cell'].StaticStep(name='Step-1', previous='Initial') session.viewports['Viewport: 1'].assemblyDisplay.setValues(step='Step-1') mdb.saveAs(pathName=modelpath)