def section5Disp(odbName): keysToWrite = ['resForce', 'rightInitCoord', 'rightU1', 'rightU2', 'time'] valuesToWrite = dict.fromkeys(keysToWrite, None) run = False for data in range(len(valuesToWrite)): file = valuesToWrite.keys()[data] + '.ascii' if (not os.path.isfile(file))\ or (os.path.getmtime(file) < os.path.getmtime('exeCalls.txt'))\ or (os.path.getmtime(file) < os.path.getmtime(__file__)): run = True break if run: setName = 'INPLANE5_INSTANCE.SF_INPLANE5_WITH_SECTIONNED6' if '02' in odbName: setName = 'SECTIONED2_INSTANCE.SF_SECTIONED2_WITH_INPLANE1' print "running postPro on %s" % (odbName) myOdb = odbTools.openOdb(odbName) time = ext.getTime(myOdb) resForce = ext.getResF2D(myOdb, setName) rightInitCoord = ext.getNCoord(myOdb, setName) rightU1 = ext.getU_1(myOdb, setName) rightU2 = ext.getU_2(myOdb, setName) valuesToWrite = dict(rightInitCoord=rightInitCoord, rightU1=rightU1, rightU2=rightU2, resForce=resForce, time=time) odbTools.writeValues(valuesToWrite) myOdb.close()
def containedDisplExtractors(odbName): keysToWrite = [ 'radialDisp_intFace', 'resForce_intFace', 'radialDisp_outFace', 'resForce_outFace', 'time' ] valuesToWrite = dict.fromkeys(keysToWrite, None) run = False for data in range(len(valuesToWrite)): file = valuesToWrite.keys()[data] + '.ascii' if (not os.path.isfile(file))\ or (os.path.getmtime(file) < os.path.getmtime('exeCalls.txt'))\ or (os.path.getmtime(file) < os.path.getmtime(__file__)): run = True break if run: print "running postPro on %s" % (odbName) myOdb = odbTools.openOdb(odbName) time = ext.getTime(myOdb) intRadialDispl = ext.getU_3(myOdb, 'innerFace') extRadialDispl = ext.getU_3(myOdb, 'outerFace') inResForce = ext.getResF(myOdb, 'innerFace') outResForce = ext.getResF(myOdb, 'outerFace') valuesToWrite = dict(radialDisp_intFace=intRadialDispl, radialDisp_outFace=extRadialDispl, resForce_intFace=inResForce, resForce_outFace=outResForce, time=time) odbTools.writeValues(valuesToWrite) myOdb.close()
def contactStiffnessExtractors(odbName): keysToWrite = ['contactStiffness'] valuesToWrite = dict.fromkeys(keysToWrite, None) run = False for data in range(len(valuesToWrite)): file = valuesToWrite.keys()[data] + '.ascii' if (not os.path.isfile(file))\ or (os.path.getmtime(file) < os.path.getmtime('exeCalls.txt'))\ or (os.path.getmtime(file) < os.path.getmtime(__file__)): run = True break if run: print "running postPro on %s" % (odbName) myOdb = odbTools.openOdb(odbName) masterName = 'MASTER1' slaveName = 'SLAVE1' copen = cExt.getFinalCOpening(myOdb, masterName, slaveName) cpress = cExt.getFinalCPressure(myOdb, masterName, slaveName) cslip1 = cExt.getFinalCSlip1(myOdb, masterName, slaveName) cshear1 = cExt.getFinalCShearStress1(myOdb, masterName, slaveName) cslip2 = cExt.getFinalCSlip2(myOdb, masterName, slaveName) cshear2 = cExt.getFinalCShearStress2(myOdb, masterName, slaveName) contactStiffness = [ -min(cpress) / max(copen), max(cshear1) / max(cslip1), max(cshear2) / max(cslip2) ] #[-cpress[node]/copen[node] for node in range(len(copen))]#cpress negative in tension valuesToWrite = dict(contactStiffness=contactStiffness) odbTools.writeValues(valuesToWrite) myOdb.close()
def appliedDisplExtractors(odbName): keysToWrite = ['time', 'topResForce', 'bottomResForce'] keysToWrite.append('initCoord') keysToWrite.append('radialDisp') keysToWrite.append('axialDisp') keysToWrite.append('tgtDisp') valuesToWrite = dict.fromkeys(keysToWrite, None) run = False for data in valuesToWrite.keys(): file = data + '.ascii' if (not os.path.isfile(file))\ or (os.path.getmtime(file) < os.path.getmtime('exeCalls.txt'))\ or (os.path.getmtime(file) < os.path.getmtime(__file__)): run = True break if run: print "running postPro on %s" % (odbName) myOdb = odbTools.openOdb(odbName) myAssembly = myOdb.rootAssembly #create node set from surface mainPart = myAssembly.instances['PART-1-1'] extSetName = 'EXTERNALANNULUS' if extSetName not in myAssembly.nodeSets.keys(): mySurface = mainPart.surfaces[extSetName] nodeList = list() for e in mySurface.elements: nodeList.extend([ nodeLbl for nodeLbl in e.connectivity if nodeLbl not in nodeList ]) myNodes = tuple(nodeList) extSet = myAssembly.NodeSetFromNodeLabels(name=extSetName, nodeLabels=(('PART-1-1', myNodes), )) else: try: extSet = myAssembly.nodeSets[extSetName] except: raise Exception('FIND SURFACE') cylSystem = getCylDatum(myOdb) valuesToWrite['time'] = ext.getTime(myOdb) valuesToWrite['topResForce'] = ext.getResF( myOdb, 'NS_TOPPLATE_WITH_BACKGROUND', sysC=cylSystem) valuesToWrite['bottomResForce'] = ext.getResF( myOdb, 'NS_BOTTOMPLATE_WITH_BACKGROUND', sysC=cylSystem) valuesToWrite['initCoord'] = ext.getNCoord(myOdb, extSet, sysC=cylSystem) valuesToWrite['radialDisp'] = ext.getU_1(myOdb, extSet, sysC=cylSystem) valuesToWrite['tgtDisp'] = ext.getU_2(myOdb, extSet, sysC=cylSystem) valuesToWrite['axialDisp'] = ext.getU_3(myOdb, extSet, sysC=cylSystem) odbTools.writeValues(valuesToWrite) myOdb.close()
def lamellarRectangleDisp(odbName): keysToWrite = [ 'resForce', 'topInitCoord', 'topU1', 'topU2', 'botInitCoord', 'botU1', 'botU2', 'time' ] valuesToWrite = dict.fromkeys(keysToWrite, None) run = False for data in range(len(valuesToWrite)): file = valuesToWrite.keys()[data] + '.ascii' if (not os.path.isfile(file))\ or (os.path.getmtime(file) < os.path.getmtime('exeCalls.txt'))\ or (os.path.getmtime(file) < os.path.getmtime(__file__)): run = True break if run: print "running postPro on %s" % (odbName) myOdb = odbTools.openOdb(odbName) time = ext.getTime(myOdb) resForce = ext.getResF2D(myOdb, 'left') resTopForce = ext.getResF2D(myOdb, 'top') rightInitCoord = ext.getNCoord(myOdb, 'right') rightU1 = ext.getU_1(myOdb, 'right') rightU2 = ext.getU_2(myOdb, 'right') leftInitCoord = ext.getNCoord(myOdb, 'left') leftU1 = ext.getU_1(myOdb, 'left') leftU2 = ext.getU_2(myOdb, 'left') topInitCoord = ext.getNCoord(myOdb, 'top') topU1 = ext.getU_1(myOdb, 'top') topU2 = ext.getU_2(myOdb, 'top') botInitCoord = ext.getNCoord(myOdb, 'bottom') botU1 = ext.getU_1(myOdb, 'bottom') botU2 = ext.getU_2(myOdb, 'bottom') valuesToWrite = dict(rightInitCoord=rightInitCoord, rightU1=rightU1, rightU2=rightU2, leftInitCoord=leftInitCoord, leftU1=leftU1, leftU2=leftU2, resForce=resForce, resTopForce=resTopForce, topInitCoord=topInitCoord, topU1=topU1, topU2=topU2, botInitCoord=botInitCoord, botU1=botU1, botU2=botU2, time=time) odbTools.writeValues(valuesToWrite) myOdb.close()
def matrixStiffnessExtractor(odbName): keysToWrite = ['matrixStiffness'] valuesToWrite = dict.fromkeys(keysToWrite, None) run = False for data in range(len(valuesToWrite)): file = valuesToWrite.keys()[data] + '.ascii' if (not os.path.isfile(file))\ or (os.path.getmtime(file) < os.path.getmtime('exeCalls.txt'))\ or (os.path.getmtime(file) < os.path.getmtime(__file__)): run = True break if run: print "running postPro on %s" % (odbName) myOdb = odbTools.openOdb(odbName) thisNb = len(myOdb.parts.keys()) totalCoheOpen = 0 slip1 = [0.] slip2 = [0.] for i in range(thisNb - 1): masterName = 'MASTER%d' % (i + 1) slaveName = 'SLAVE%d' % (i + 1) masterSurface = myOdb.rootAssembly.surfaces[masterName] copen = cExt.getFinalCOpening(myOdb, masterName, slaveName) slip1.append( max( ext.getFinalU_1( myOdb, odbTools.getNodeSetFromSurface(myOdb, masterSurface)))) slip2.append( max( ext.getFinalU_2( myOdb, odbTools.getNodeSetFromSurface(myOdb, masterSurface)))) totalCoheOpen += max(copen) extDispl = np.mean(ext.getFinalU_3(myOdb, 'outerFace')) surfStress13 = max(ext.getFinalS_13(myOdb, 'outerFace')) surfStress23 = max(ext.getFinalS_23(myOdb, 'outerFace')) surfStress33 = np.mean(ext.getFinalS_33(myOdb, 'outerFace')) slip1.append(max(ext.getFinalU_1(myOdb, 'outerFace'))) slip2.append(max(ext.getFinalU_2(myOdb, 'outerFace'))) matrixOpen = (extDispl - totalCoheOpen ) / thisNb #elongation of each part if it is uniform valuesToWrite = dict(matrixStiffness=[ surfStress33 / matrixOpen, surfStress13 / max(np.diff(slip1)), surfStress23 / max(np.diff(slip2)) ]) odbTools.writeValues(valuesToWrite) myOdb.close()
def appliedDisplExtractors(odbName): sets = [ 'edgeXMax', 'edgeXMaxInt', 'edgeXMin', 'edgeXMinInt', 'edgeYMax', 'edgeYMaxInt', 'edgeYMin', 'edgeYMinInt' ] keysToWrite = ['time', 'topResForce', 'bottomResForce'] for set in sets: keysToWrite.append('initCoord_%s' % set) keysToWrite.append('radialDisp_%s' % set) keysToWrite.append('axialDisp_%s' % set) keysToWrite.append('tgtDisp_%s' % set) valuesToWrite = dict.fromkeys(keysToWrite, None) run = False for data in valuesToWrite.keys(): file = data + '.ascii' if (not os.path.isfile(file))\ or (os.path.getmtime(file) < os.path.getmtime('exeCalls.txt'))\ or (os.path.getmtime(file) < os.path.getmtime(__file__)): run = True break if run: print "running postPro on %s" % (odbName) myOdb = odbTools.openOdb(odbName) sysCyl = geometricTools.cylXYCoordSystem(myOdb.rootAssembly) valuesToWrite['time'] = ext.getTime(myOdb) valuesToWrite['topResForce'] = ext.getResF(myOdb, 'zMax', sysC=sysCyl) valuesToWrite['bottomResForce'] = ext.getResF(myOdb, 'zMin', sysC=sysCyl) for set in sets: valuesToWrite['initCoord_%s' % set] = ext.getNCoord(myOdb, set, sysC=sysCyl) valuesToWrite['radialDisp_%s' % set] = ext.getU_1(myOdb, set, sysC=sysCyl) valuesToWrite['tgtDisp_%s' % set] = ext.getU_2(myOdb, set, sysC=sysCyl) valuesToWrite['axialDisp_%s' % set] = ext.getU_3(myOdb, set, sysC=sysCyl) odbTools.writeValues(valuesToWrite) myOdb.close()
def appliedDisplacementForceExtractor(odbName): keysToWrite = ['totalForce_pinnedFace', 'totalForce_movingFace', 'time'] valuesToWrite = dict.fromkeys(keysToWrite, None) run = False for data in range(len(valuesToWrite)): file = valuesToWrite.keys()[data] + '.ascii' if (not os.path.isfile(file))\ or (os.path.getmtime(file) < os.path.getmtime('exeCalls.txt'))\ or (os.path.getmtime(file) < os.path.getmtime(__file__)): run = True break if run: print "running postPro on %s" % (odbName) myOdb = odbTools.openOdb(odbName) mySets = myOdb.rootAssembly.nodeSets pinnedNodeSetName = list() movingNodeSetName = list() for nodeSet in mySets.keys(): zMin = '_WITH_ZMIN' if nodeSet.endswith(zMin): pinnedNodeSetName.append(nodeSet) zMax = '_WITH_ZMAX' if nodeSet.endswith(zMax): movingNodeSetName.append(nodeSet) time = ext.getTime(myOdb) resultantForce_pin = [0] * len(time) for setName in pinnedNodeSetName: resForce = ext.getResF_3(myOdb, setName) for t in range(len(resultantForce_pin)): resultantForce_pin[t] += resForce[t] resultantForce_mov = [0] * len(time) for setName in movingNodeSetName: resForce = ext.getResF_3(myOdb, setName) for t in range(len(resultantForce_mov)): resultantForce_mov[t] += resForce[t] valuesToWrite = dict(totalForce_pinnedFace=resultantForce_pin, totalForce_movingFace=resultantForce_mov, time=time) odbTools.writeValues(valuesToWrite) myOdb.close()
def postPro(odbName): print 'running postPro on ', odbName import postProTools.odbTools as odbTools import postProTools.extractors as ext import postProTools.contactExtractors as cExt valuesToWrite = dict() myOdb = odbTools.openOdb(odbName) fileName = odbName.split('.')[0] valuesToWrite['axialDispl_%s' % fileName] = ext.getU_3(myOdb, 'TOPPLATE') valuesToWrite['force_%s' % fileName] = ext.getRF_3(myOdb, 'TOPPLATE') try: masterName = 'CP-2-bot' slaveName = 'CP-2-PART-1-1' valuesToWrite['cForce1_%s' % fileName] = cExt.getCNormalForce_Magnitude( myOdb, masterName, slaveName) masterName = 'CP-3-bot' slaveName = 'CP-3-PART-1-1' valuesToWrite['cForce2_%s' % fileName] = cExt.getCNormalForce_Magnitude( myOdb, masterName, slaveName) except: masterName = 'topCartilage1' slaveName = 'botCartilage1' valuesToWrite['cForce1_%s' % fileName] = cExt.getCNormalForce_Magnitude( myOdb, masterName, slaveName) masterName = 'topCartilage2' slaveName = 'botCartilage2' valuesToWrite['cForce2_%s' % fileName] = cExt.getCNormalForce_Magnitude( myOdb, masterName, slaveName) odbTools.writeValues(valuesToWrite) print 'postPro on ', odbName, ': DONE' myOdb.close()