Exemplo n.º 1
0
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'),
                                     )),
                                 ))
Exemplo n.º 2
0
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__']
Exemplo n.º 3
0
#

# 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)
Exemplo n.º 6
0
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)
Exemplo n.º 7
0
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)
Exemplo n.º 8
0
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()
Exemplo n.º 9
0
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)