{"id":242,"date":"2015-08-30T16:53:52","date_gmt":"2015-08-30T14:53:52","guid":{"rendered":"https:\/\/kszyh.kisim.eu.org\/?p=242"},"modified":"2015-09-01T15:20:19","modified_gmt":"2015-09-01T13:20:19","slug":"periodic-boundary-conditions-in-abaqus-periodyczne-warunki-brzegowe","status":"publish","type":"post","link":"https:\/\/kszyh.kisim.eu.org\/?p=242","title":{"rendered":"Periodic boundary conditions in Abaqus (Periodyczne warunki brzegowe)"},"content":{"rendered":"<p>Za\u0142o\u017cenia: zdefiniowane sety z w\u0119z\u0142\u00f3w na ka\u017cdej kraw\u0119dzi jako LEFT, RIGHT, TOP, BOTTOM i stworzone dwa punkty referencyjne w z\u0142o\u017ceniu oraz dwa sety z nimi o nazwach REF-PT-1 i REF-PT-2<\/p>\n<pre class=\"lang:python decode:true\"># -*- coding: mbcs -*-\r\n# Do not delete the following import lines\r\nfrom abaqus import *\r\nfrom abaqusConstants import *\r\nimport collections\r\nimport __main__\r\n\r\n\r\nimport section\r\nimport regionToolset\r\nimport displayGroupMdbToolset as dgm\r\nimport part\r\nimport material\r\nimport assembly\r\nimport optimization\r\nimport step\r\nimport interaction\r\nimport load\r\nimport mesh\r\nimport job\r\nimport sketch\r\nimport visualization\r\nimport xyPlot\r\nimport displayGroupOdbToolset as dgo\r\nimport connectorBehavior\r\n\r\nmodelName = 'COMPRESSION_XY'\r\nperiodicityLeftRight = True\r\nperiodicityBottomTop = True\r\n\r\n#modelName = getInput('Enter model name:')\r\n\r\nroot = mdb.models[modelName].rootAssembly\r\n\r\n\r\n# Clear all sets and equations connected to previous constaints\r\nnames = [set[0] for set in root.sets.items()]\r\n\r\nfor name in names:\r\n    if \"PERIOD-\" in name:\r\n        del root.sets[name] \r\n\r\n\r\nnames = [c[0] for c in  mdb.models[modelName].constraints.items()]\r\n\r\nfor name in names:\r\n    if \"PERIOD-\" in name:\r\n        del  mdb.models[modelName].constraints[name] \r\n\r\n# Get nodes from edges. Sets need to be prepared before this step\r\nleftSet = root.sets['LEFT'].nodes\r\nrightSet = root.sets['RIGHT'].nodes\r\nbottomSet = root.sets['BOTTOM'].nodes\r\ntopSet = root.sets['TOP'].nodes\r\n\r\n# Connect Left to Right node\r\nif periodicityLeftRight:\r\n    idsLR = collections.OrderedDict()\r\n    for nodeL in leftSet:\r\n        for nodeR in rightSet:\r\n            if nodeL.coordinates[1] == nodeR.coordinates[1]:\r\n                idsLR[nodeL.label] = nodeR.label\r\n        \r\n    sortedLeft = tuple(idsLR.keys())\r\n    sortedRight = tuple(idsLR.values())\r\n\r\n# Connect Bottom to Top node\r\nif periodicityBottomTop:\r\n    idsBT = collections.OrderedDict()\r\n    for nodeB in bottomSet:\r\n        for nodeT in topSet:\r\n            if nodeB.coordinates[0] == nodeT.coordinates[0]:\r\n                idsBT[nodeB.label] = nodeT.label\r\n        \r\n    sortedBottom = tuple(idsBT.keys())\r\n    sortedTop = tuple(idsBT.values())\r\n\r\ni = 1\r\nfor n1, n2 in zip(sortedLeft, sortedRight):\r\n    leftSetName = \"PERIOD-LEFT\"+str(i)\r\n    rightSetName = \"PERIOD-RIGHT\"+str(i)\r\n    \r\n    root.SetFromNodeLabels(name=leftSetName, nodeLabels=(('PART-1-1', (n1,)), ))\r\n    root.SetFromNodeLabels(name=rightSetName, nodeLabels=(('PART-1-1', (n2,)), ))\r\n    eqName = \"PERIOD-1-\"+str(i)\r\n    mdb.models[modelName].Equation(name=eqName, terms=((1.0, leftSetName, 1), (-1.0, rightSetName, 1), (1.0, 'REF-PT-1', 1), (0, 'REF-PT-1', 1)))\r\n    # eqName = \"PERIOD-2-\"+str(i)\r\n    # mdb.models[modelName].Equation(name=eqName, terms=((1.0, leftSetName, 2), (-1.0, rightSetName, 2), (1.0, 'REF-PT-2', 2), (0, 'REF-PT-2', 2)))\r\n    i += 1\r\n    \r\nfor n1, n2 in zip(sortedBottom, sortedTop):\r\n    bottomSetName = \"PERIOD-BOTTOM\"+str(i)\r\n    topSetName = \"PERIOD-TOP\"+str(i)\r\n    root.SetFromNodeLabels(name=bottomSetName, nodeLabels=(('PART-1-1', (n1,)), ))\r\n    root.SetFromNodeLabels(name=topSetName, nodeLabels=(('PART-1-1', (n2,)), ))\r\n    eqName = \"PERIOD-2-\"+str(i)\r\n    mdb.models[modelName].Equation(name=eqName, terms=((1.0, bottomSetName, 2), (-1.0, topSetName, 2), (1.0, 'REF-PT-2', 2), (0, 'REF-PT-2', 2)))\r\n    # eqName = \"PERIOD-1-\"+str(i)\r\n    # mdb.models[modelName].Equation(name=eqName, terms=((1.0, bottomSetName, 1), (-1.0, topSetName, 1), (1.0, 'REF-PT-1', 1), (0, 'REF-PT-1', 1)))\r\n    i += 1\r\n    \r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Za\u0142o\u017cenia: zdefiniowane sety z w\u0119z\u0142\u00f3w na ka\u017cdej kraw\u0119dzi jako LEFT, RIGHT, TOP, BOTTOM i stworzone dwa punkty referencyjne w z\u0142o\u017ceniu oraz dwa sety z nimi o nazwach REF-PT-1 i REF-PT-2 # -*- coding: mbcs -*- # Do not delete the following import lines from abaqus import * from abaqusConstants import&#8230; <a class=\"continue-reading-link\" href=\"https:\/\/kszyh.kisim.eu.org\/?p=242\"> 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":[75,63],"tags":[],"class_list":["post-242","post","type-post","status-publish","format-standard","hentry","category-abaqus","category-python-2"],"_links":{"self":[{"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=\/wp\/v2\/posts\/242","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=242"}],"version-history":[{"count":3,"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=\/wp\/v2\/posts\/242\/revisions"}],"predecessor-version":[{"id":246,"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=\/wp\/v2\/posts\/242\/revisions\/246"}],"wp:attachment":[{"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=242"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=242"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=242"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}