#/#-------------------------------------------------------------------- #/# Title: Adaptive remeshing round trip test #/# #/# Original Author: Jeff Haan #/# Creation Date: 23 June 2005 #/# #/#-------------------------------------------------------------------- #/# #/# Import necessary utilities from abaqus import * from abaqusConstants import * import time import os # # Parameter settings # if os.name == 'nt': subroutineName = 'adaptivity-cylinder.for' else: subroutineName = 'adaptivity-cylinder.f' errorIndicator = 'MISESERI' targetError = 0. maxIterations = 3 maxSolutionErrorTarget=0.1 minSolutionErrorTarget=2. meshBias=10 baseSeed = 3. minimumElement = 0.001 meshAlgorithm = ADVANCING_FRONT #meshAlgorithm = NONE elemShape=TRI elemShape=QUAD_DOMINATED sizingMethod = MINIMUM_MAXIMUM fileName = "adaptcyl_cpe8_M_E2" # # f = open('CYLINDER_QA.dat', 'w') print >>f, "" f.close() # session.Viewport(name='Viewport: 1', origin=(0.0, 0.0), width=271.875, height=186.62109375) session.viewports['Viewport: 1'].makeCurrent() session.viewports['Viewport: 1'].maximize() from caeModules import * from driverUtils import executeOnCaeStartup executeOnCaeStartup() #: Executing "onCaeStartup()" in the site directory ... 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) s.Line(point1=(-5.0, 0.0), point2=(-20.0, 0.0)) s.HorizontalConstraint(entity=g[2]) s.Line(point1=(0.0, 5.0), point2=(0.0, 20.0)) s.VerticalConstraint(entity=g[3]) mdb.saveAs( pathName=fileName) s.ArcByCenterEnds(center=(0.0, 0.0), point1=(-5.0, 0.0), point2=(0.0, 5.0), direction=CLOCKWISE) s.ArcByCenterEnds(center=(0.0, 0.0), point1=(-20.0, 0.0), point2=(0.0, 20.0), direction=CLOCKWISE) p = mdb.models['Model-1'].Part(name='Cylinder', dimensionality=TWO_D_PLANAR, type=DEFORMABLE_BODY) p = mdb.models['Model-1'].parts['Cylinder'] p.BaseShell(sketch=s) s.unsetPrimaryObject() p = mdb.models['Model-1'].parts['Cylinder'] session.viewports['Viewport: 1'].setValues(displayedObject=p) del mdb.models['Model-1'].sketches['__profile__'] mdb.save() session.viewports['Viewport: 1'].partDisplay.setValues(sectionAssignments=ON, engineeringFeatures=ON) mdb.models['Model-1'].Material(name='Material-1') mdb.models['Model-1'].materials['Material-1'].Elastic(table=((1.0e3, 0.3), )) mdb.models['Model-1'].materials['Material-1'].UserOutputVariables(n=3) mdb.models['Model-1'].HomogeneousSolidSection(name='Section-1', material='Material-1', thickness=1.0) p = mdb.models['Model-1'].parts['Cylinder'] f = p.faces faces = f[0:1] region = regionToolset.Region(faces=faces) p = mdb.models['Model-1'].parts['Cylinder'] p.SectionAssignment(region=region, sectionName='Section-1') a = mdb.models['Model-1'].rootAssembly session.viewports['Viewport: 1'].setValues(displayedObject=a) a = mdb.models['Model-1'].rootAssembly a.DatumCsysByDefault(CARTESIAN) p.DatumCsysByThreePoints(name='Datum csys-1', coordSysType=CYLINDRICAL, origin=(0.0, 0.0, 0.0), line1=(1.0, 0.0, 0.0), line2=(0.0, 1.0, 0.0)) p = mdb.models['Model-1'].parts['Cylinder'] f = p.faces faces = f[0:1] region = regionToolset.Region(faces=faces) p = mdb.models['Model-1'].parts['Cylinder'] datums = p.datums[3] p.MaterialOrientation(region=region, localCsys=datums, axis=AXIS_3) p = mdb.models['Model-1'].parts['Cylinder'] a.Instance(name='Cylinder-1', part=p, dependent=OFF) a = mdb.models['Model-1'].rootAssembly e1 = a.instances['Cylinder-1'].edges edges1 = e1[1:2] a.Set(edges=edges1, name='XSYMM') #: The set 'XSYMM' has been created (1 edge). a = mdb.models['Model-1'].rootAssembly e1 = a.instances['Cylinder-1'].edges edges1 = e1[3:4] a.Set(edges=edges1, name='YSYMM') #: The set 'YSYMM' has been created (1 edge). mdb.save() a = mdb.models['Model-1'].rootAssembly s1 = a.instances['Cylinder-1'].edges side1Edges1 = s1[0:1] a.Surface(side1Edges=side1Edges1, name='pressure') #: The surface 'pressure' has been created (1 edge). mdb.models['Model-1'].StaticStep(name='Step-1', previous='Initial', initialInc=1., nlgeom=OFF) session.viewports['Viewport: 1'].assemblyDisplay.setValues(step='Step-1') session.viewports['Viewport: 1'].assemblyDisplay.setValues(loads=ON, bcs=ON, predefinedFields=ON, connectors=ON) a = mdb.models['Model-1'].rootAssembly region = a.sets['XSYMM'] mdb.models['Model-1'].XsymmBC(name='BC-1', createStepName='Step-1', region=region) a = mdb.models['Model-1'].rootAssembly region = a.sets['YSYMM'] mdb.models['Model-1'].YsymmBC(name='BC-2', createStepName='Step-1', region=region) a = mdb.models['Model-1'].rootAssembly region = a.surfaces['pressure'] mdb.models['Model-1'].Pressure(name='Load-1', createStepName='Step-1', region=region, distributionType=UNIFORM, magnitude=1.0, amplitude=UNSET) session.viewports['Viewport: 1'].assemblyDisplay.setValues(mesh=ON, loads=OFF, bcs=OFF, predefinedFields=OFF, connectors=OFF) session.viewports['Viewport: 1'].assemblyDisplay.meshOptions.setValues( meshTechnique=ON) a = mdb.models['Model-1'].rootAssembly session.viewports['Viewport: 1'].setValues(displayedObject=a) mdb.models['Model-1'].FieldOutputRequest(name='F-Output-2', createStepName='Step-1', variables=('UVARM', )) a = mdb.models['Model-1'].rootAssembly f1 = a.instances['Cylinder-1'].faces pickedRegions = f1[0:1] a.setMeshControls(regions=pickedRegions, algorithm=meshAlgorithm,elemShape=elemShape) elemType1 = mesh.ElemType(elemCode=CPE8, elemLibrary=STANDARD) elemType2 = mesh.ElemType(elemCode=CPE6, elemLibrary=STANDARD) a = mdb.models['Model-1'].rootAssembly f1 = a.instances['Cylinder-1'].faces faces1 = f1[0:1] pickedRegions =(faces1, ) a.setElementType(regions=pickedRegions, elemTypes=(elemType1, elemType2)) region=regionToolset.Region(faces=faces1) mdb.models['Model-1'].RemeshingRule(name='Rule-1', region=region, description='', stepName='Step-1', outputFrequency=LAST_INCREMENT, variables=(errorIndicator, ), errorTarget = targetError, sizingMethod=sizingMethod, maxSolutionErrorTarget = maxSolutionErrorTarget, minSolutionErrorTarget = minSolutionErrorTarget, meshBias = meshBias, specifyMinSize=False, specifyMaxSize=False, coarseningFactor=DEFAULT_LIMIT, refinementFactor=DEFAULT_LIMIT) mdb.save() a = mdb.models['Model-1'].rootAssembly partInstances =(a.instances['Cylinder-1'], ) a.seedPartInstance(regions=partInstances, size=baseSeed, deviationFactor=0.1) a = mdb.models['Model-1'].rootAssembly partInstances =(a.instances['Cylinder-1'], ) a.generateMesh(regions=partInstances) mdb.save() session.viewports['Viewport: 1'].assemblyDisplay.setValues(mesh=OFF) session.viewports['Viewport: 1'].assemblyDisplay.meshOptions.setValues( meshTechnique=OFF) j = job.Job(model='Model-1', type=ANALYSIS, description='', numCpus=1, multiprocessingMode=DEFAULT, echoPrint=OFF, modelPrint=OFF, contactPrint=OFF, historyPrint=OFF, nodalOutputPrecision=SINGLE, userSubroutine=subroutineName, scratch='') mdb.AdaptivityProcess(jobPrefix='', maxIterations=maxIterations, job=j, name='test') mdb.save() session.viewports['Viewport: 1'].assemblyDisplay.setValues(mesh=ON) adaptAnalysis = mdb.adaptivityProcesses['test'] adaptAnalysis.submit(waitForCompletion=True) mdb.save()