#/#-------------------------------------------------------------------- #/# Title: Adaptive remeshing round trip test #/# #/# Original Author: Jeff Haan #/# Creation Date: 30 June 2005 #/# #/#-------------------------------------------------------------------- #/# #/# Import necessary utilities from abaqus import * from abaqusConstants import * import time import testUtils # # Parameter settings # errorIndicator = 'ENDENERI' errorTarget = 5. maxIterations = 3 maxSolutionErrorTarget=2. minSolutionErrorTarget=40. meshBias=10 baseSeed = 3. minimumElement = 0.001 #meshAlgorithm = ADVANCING_FRONT meshAlgorithm = NONE meshTechnique = FREE elemShape=TET sizingMethod = UNIFORM_ERROR fileName = "adaptcyl_c3d10m_E_U5" if os.name == 'nt': subroutineName = 'adaptivity-cylinder.for' else: subroutineName = 'adaptivity-cylinder.f' # # f = open('CYLINDER_QA.dat', 'w') print >>f, "" f.close() # from abaqus import * from abaqusConstants import * session.Viewport(name='Viewport: 1', origin=(0.0, 0.0), width=216.5625, height=171.38671875) 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.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) s.Line(point1=(-5.0, 0.0), point2=(-20.0, 0.0)) s.HorizontalConstraint(entity=g[4]) s.PerpendicularConstraint(entity1=g[2], entity2=g[4]) s.Line(point1=(0.0, 5.0), point2=(0.0, 20.0)) s.VerticalConstraint(entity=g[5]) s.PerpendicularConstraint(entity1=g[2], entity2=g[5]) p = mdb.models['Model-1'].Part(name='Cylinder', dimensionality=THREE_D, type=DEFORMABLE_BODY) p = mdb.models['Model-1'].parts['Cylinder'] p.BaseSolidExtrude(sketch=s, depth=5.0) s.unsetPrimaryObject() p = mdb.models['Model-1'].parts['Cylinder'] session.viewports['Viewport: 1'].setValues(displayedObject=p) del mdb.models['Model-1'].sketches['__profile__'] 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=((1000.0, 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) mdb.saveAs( pathName=fileName) p = mdb.models['Model-1'].parts['Cylinder'] c = p.cells cells = c[0:1] region = regionToolset.Region(cells=cells) p = mdb.models['Model-1'].parts['Cylinder'] p.SectionAssignment(region=region, sectionName='Section-1', offset=0.0) a = mdb.models['Model-1'].rootAssembly session.viewports['Viewport: 1'].setValues(displayedObject=a) a = mdb.models['Model-1'].rootAssembly a.DatumCsysByDefault(CARTESIAN) p = mdb.models['Model-1'].parts['Cylinder'] a = mdb.models['Model-1'].rootAssembly a.DatumCsysByDefault(CARTESIAN) p = mdb.models['Model-1'].parts['Cylinder'] 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'] c = p.cells cells = c[0:1] region = regionToolset.Region(cells=cells) p = mdb.models['Model-1'].parts['Cylinder'] datums = p.datums[3] p.MaterialOrientation(region=region, localCsys=datums, axis=AXIS_3) a.Instance(name='Cylinder-1', part=p, dependent=OFF) a = mdb.models['Model-1'].rootAssembly iCylinder = a.instances['Cylinder-1'] xSymmFace = iCylinder.faces.findAt(((0.,13.749145,2.50106),),) a.Set(faces=xSymmFace, name='XSYMM') #: The set 'xysmm' has been created (1 face). session.viewports['Viewport: 1'].view.setValues(nearPlane=52.4116, farPlane=96.302, width=29.766, height=24.5948, cameraPosition=(16.3832, -38.0057, 59.9693), cameraUpVector=(0.143325, 0.935444, 0.323113)) a = mdb.models['Model-1'].rootAssembly ySymmFace = iCylinder.faces.findAt(((-13.181693,0.,2.49947),),) a.Set(faces=ySymmFace, name='YSYMM') #: The set 'YSYMM' has been created (1 face). session.viewports['Viewport: 1'].view.setValues(nearPlane=54.7468, farPlane=91.5448, width=31.0923, height=25.6906, cameraPosition=(8.89069, 0.827918, -59.8894), cameraUpVector=(0.826047, 0.00271066, 0.563594)) a = mdb.models['Model-1'].rootAssembly zSymmFaces = iCylinder.faces.findAt(((-9.380008,7.213292,5.),(-9.213107,7.384233,0.),),) a.Set(faces=zSymmFaces, name='ZSYMM') #: The set 'ZSYMM' has been created (2 faces). session.viewports['Viewport: 1'].view.setValues(nearPlane=52.1892, farPlane=96.543, width=29.6398, height=24.4905, cameraPosition=(17.8944, -38.5191, 58.6454), cameraUpVector=(0.0156033, 0.918998, 0.393954)) a = mdb.models['Model-1'].rootAssembly s1 = a.instances['Cylinder-1'].faces pressureFace = iCylinder.faces.findAt(((-3.535258,3.53581,2.499479),),) a.Surface(side1Faces=pressureFace, name='pressure') #: The surface 'pressure' has been created (1 face). 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) region = a.sets['ZSYMM'] mdb.models['Model-1'].ZsymmBC(name='BC-3', 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', )) a1 = mdb.models['Model-1'].rootAssembly c1 = a1.instances['Cylinder-1'].cells pickedRegions = c1[0:1] a.setMeshControls(regions=pickedRegions, algorithm=meshAlgorithm,technique=meshTechnique,elemShape=elemShape) elemType1 = mesh.ElemType(elemCode=C3D20, elemLibrary=STANDARD) elemType2 = mesh.ElemType(elemCode=C3D15, elemLibrary=STANDARD) elemType3 = mesh.ElemType(elemCode=C3D10M, elemLibrary=STANDARD) cells1 = c1[0:1] pickedRegions =(cells1, ) a.setElementType(regions=pickedRegions, elemTypes=(elemType1, elemType2,elemType3)) a3 = mdb.models['Model-1'].rootAssembly c1 = a3.instances['Cylinder-1'].cells cells1 = c1[0:1] region=regionToolset.Region(cells=cells1) mdb.models['Model-1'].RemeshingRule( name="Rule-1", sizingMethod = sizingMethod, minElementSize = minimumElement, errorTarget = errorTarget, variables=(errorIndicator,), region=region, maxSolutionErrorTarget=maxSolutionErrorTarget, minSolutionErrorTarget=minSolutionErrorTarget, meshBias=meshBias, stepName='Step-1') 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()