{"id":202,"date":"2014-12-19T10:49:31","date_gmt":"2014-12-19T09:49:31","guid":{"rendered":"https:\/\/kszyh.kisim.eu.org\/?p=202"},"modified":"2014-12-19T10:53:13","modified_gmt":"2014-12-19T09:53:13","slug":"pobieranie-tensora-naprezen-z-pliku-wynikowego-abaqusa","status":"publish","type":"post","link":"https:\/\/kszyh.kisim.eu.org\/?p=202","title":{"rendered":"Pobieranie tensora napr\u0119\u017ce\u0144 z pliku wynikowego Abaqusa"},"content":{"rendered":"<p>Skrypt pobiera tensor napr\u0119\u017ce\u0144 z pliku wynikowego abaqusa a nast\u0119pnie tworzy krzyw\u0105 odkszta\u0142cenie\/napr\u0119\u017cenie.<br \/>\nSkrypt dzia\u0142a r\u00f3wnolegle<br \/>\nSkrypt pobiera maksymalne warto\u015bci z ostatniego kroku oblicze\u0144 i zapisuje je do pliku<\/p>\n<pre class=\"lang:python decode:true  \">__author__ = \"Krzysztof Bzowski\"\r\n__version__ = \"1.0.0\"\r\n\r\n\r\nfrom abaqusConstants import *\r\nfrom math import *\r\nimport odbAccess\r\nimport multiprocessing as mp\r\nimport os\r\n\r\n################# CONFIGS #####################\r\nodb11File = 'SSRVE_11'\r\nodb12File = 'SSRVE_12'\r\nodb22File = 'SSRVE_22'\r\nmaxPercent = 0.01\r\n###############################################\r\n\r\ndef avgMaxFromPercentList(l, percent, revSort):\r\n    l.sort(reverse=revSort)   \r\n    maxElements = int(ceil(len(l) * maxPercent))\r\n    lmax = l[:maxElements]\r\n    avg =  sum(lmax) \/ float(len(lmax))\r\n    return avg\r\n\r\n\r\ndef Analize(resultFile, direction, inOrder):\r\n    try:\r\n        os.remove(resultFile + '.txt')\r\n    except OSError:\r\n        pass\r\n        \r\n    try:\r\n        os.remove(resultFile + '_MAX.txt')\r\n    except OSError:\r\n        pass\r\n        \r\n    odb = odbAccess.openOdb(resultFile+'.odb', readOnly=True)\r\n    step=odb.steps['Step-1']\r\n\r\n    frames = step.frames\r\n\r\n    # Stress\/Strain Curve\r\n    for frame in frames:\r\n        stress=frame.fieldOutputs['S'].getSubset(position=INTEGRATION_POINT).values\r\n        strain=frame.fieldOutputs['PE'].getSubset(position=INTEGRATION_POINT).values\r\n        volumes=frame.fieldOutputs['EVOL'].values\r\n        \r\n        count = len(volumes)\r\n        summVol = 0\r\n        summStress = 0\r\n        summStrains = 0\r\n        \r\n        for i in range(0, count):\r\n            s = stress[i].data[direction]       # S\r\n            p = strain[i].data[direction]      # PE\r\n            v = volumes[i].data      # VOLUME\r\n            summVol += v\r\n            summStress += s*v\r\n            summStrains += p*v\r\n            \r\n        avgStress = summStress\/summVol\r\n        avgStrain = summStrains\/summVol\r\n        \r\n        myFile = open(resultFile+'.txt', 'a')\r\n        myFile.write('{0}\\t{1}\\n'.format(abs(avgStrain), abs(avgStress)))\r\n        myFile.close()\r\n\r\n    # Max stress \/ strain \r\n    lastFrame = frames[-1]\r\n    stress=lastFrame.fieldOutputs['S'].getSubset(position=INTEGRATION_POINT).values\r\n    strain=lastFrame.fieldOutputs['PE'].getSubset(position=INTEGRATION_POINT).values  \r\n    count = len(stress)\r\n    stressList = [None] * count\r\n    strainList = [None] * count\r\n    for i in range(0, count):\r\n        stressList[i] = stress[i].data[direction]       # S\r\n        strainList[i] = strain[i].data[direction]      # PE\r\n \r\n\r\n\r\n    maxStress = avgMaxFromPercentList(stressList, maxPercent, inOrder)\r\n    maxStrain = avgMaxFromPercentList(strainList, maxPercent, inOrder)\r\n    file = open(resultFile+'_MAX.txt', 'w')\r\n    file.write('{0}\\t{1}\\n'.format(maxStrain, maxStress))\r\n    file.close()\r\n    odb.close()\r\n    \r\nif __name__ == '__main__': \r\n    print __name__\r\n    direction11 = 0\r\n    direction22 = 1\r\n    direction12 = 3\r\n    \r\n    p11 = mp.Process(target=Analize, args=(odb11File, direction11, False))\r\n    p22 = mp.Process(target=Analize, args=(odb22File, direction22, False))\r\n    p12 = mp.Process(target=Analize, args=(odb12File, direction12, True))\r\n\r\n    p11.start()\r\n    p22.start()\r\n    p12.start()\r\n\r\n    p11.join()\r\n    p22.join()\r\n    p12.join()<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Skrypt pobiera tensor napr\u0119\u017ce\u0144 z pliku wynikowego abaqusa a nast\u0119pnie tworzy krzyw\u0105 odkszta\u0142cenie\/napr\u0119\u017cenie. Skrypt dzia\u0142a r\u00f3wnolegle Skrypt pobiera maksymalne warto\u015bci z ostatniego kroku oblicze\u0144 i zapisuje je do pliku __author__ = &#8222;Krzysztof Bzowski&#8221; __version__ = &#8222;1.0.0&#8221; from abaqusConstants import * from math import * import odbAccess import multiprocessing as mp&#8230; <a class=\"continue-reading-link\" href=\"https:\/\/kszyh.kisim.eu.org\/?p=202\"> Continue reading <span class=\"meta-nav\">&rarr; <\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[63,19],"tags":[12],"class_list":["post-202","post","type-post","status-publish","format-standard","hentry","category-python-2","category-skrypty","tag-abaqus"],"_links":{"self":[{"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=\/wp\/v2\/posts\/202","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=202"}],"version-history":[{"count":2,"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=\/wp\/v2\/posts\/202\/revisions"}],"predecessor-version":[{"id":204,"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=\/wp\/v2\/posts\/202\/revisions\/204"}],"wp:attachment":[{"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=202"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=202"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=202"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}