diff --git a/geometry/3d_beam/palkki.inp b/geometry/3d_beam/palkki.inp new file mode 100644 index 0000000..6746166 --- /dev/null +++ b/geometry/3d_beam/palkki.inp @@ -0,0 +1,566 @@ +**NSET COUNT = 298 +*NODE,NSET=NALL +1, 20.00000, 5.00000, 5.00000 +2, 25.00000, 5.00000, 5.00000 +3, 40.00000, 5.00000, 5.00000 +4, 42.50000, 5.00000, 2.50000 +5, 47.50000, 7.50000, 5.00000 +6, 42.50000, 7.50000, 5.00000 +7, 85.00000, 5.00000, 5.00000 +8, 90.00000, 5.00000, 5.00000 +9, 80.00000, 5.00000, 5.00000 +10, 77.50000, 5.00000, 2.50000 +11, 92.50000, 2.50000, 5.00000 +12, 97.50000, 2.50000, 5.00000 +13, 95.00000, 7.50000, 7.50000 +14, 97.50000, 5.00000, 2.50000 +15, 92.50000, 5.00000, 2.50000 +16, 97.50000, 7.50000, 5.00000 +17, 2.50000, 2.50000, 5.00000 +18, 5.00000, 2.50000, 2.50000 +19, 35.00000, 5.00000, 5.00000 +20, 10.00000, 5.00000, 5.00000 +21, 15.00000, 5.00000, 5.00000 +22, 55.00000, 2.50000, 7.50000 +23, 77.50000, 5.00000, 7.50000 +24, 75.00000, 7.50000, 7.50000 +25, 75.00000, 2.50000, 7.50000 +26, 75.00000, 5.00000, 5.00000 +27, 75.00000, 2.50000, 2.50000 +28, 75.00000, 7.50000, 2.50000 +29, 2.50000, 7.50000, 5.00000 +30, 7.50000, 7.50000, 5.00000 +31, 5.00000, 5.00000, 5.00000 +32, 7.50000, 2.50000, 5.00000 +33, 5.00000, 2.50000, 7.50000 +34, 30.00000, 5.00000, 5.00000 +35, 50.36999, 4.74900, 5.47225 +36, 50.18499, 2.37450, 7.73613 +37, 47.68499, 4.87450, 7.73613 +38, 52.68499, 4.87450, 7.73613 +39, 45.00000, 2.50000, 7.50000 +40, 47.68499, 2.37450, 5.23613 +41, 52.68499, 2.37450, 5.23613 +42, 55.00000, 7.50000, 7.50000 +43, 55.00000, 5.00000, 5.00000 +44, 52.68499, 7.37450, 5.23613 +45, 50.18499, 7.37450, 7.73613 +46, 50.18499, 7.37450, 2.73613 +47, 47.50000, 5.00000, 2.50000 +48, 50.18499, 2.37450, 2.73613 +49, 52.68499, 4.87450, 2.73613 +50, 55.00000, 2.50000, 2.50000 +51, 55.00000, 7.50000, 2.50000 +52, 65.13577, 4.94114, 4.99547 +53, 62.56788, 2.47057, 7.49773 +54, 62.56788, 2.47057, 2.49773 +55, 60.06788, 2.47057, 4.99773 +56, 60.06788, 7.47057, 4.99773 +57, 57.50000, 5.00000, 2.50000 +58, 57.50000, 5.00000, 7.50000 +59, 62.56788, 7.47057, 7.49773 +60, 67.56788, 7.47057, 7.49773 +61, 67.56788, 2.47057, 7.49773 +62, 67.56788, 2.47057, 2.49773 +63, 70.06788, 2.47057, 4.99773 +64, 70.06788, 7.47057, 4.99773 +65, 72.50000, 5.00000, 7.50000 +66, 70.06788, 4.97057, 2.49773 +67, 67.56788, 7.47057, 2.49773 +68, 62.56788, 7.47057, 2.49773 +69, 50.00000, 10.00000, 0.00000 +70, 50.00000, 10.00000, 10.00000 +71, 55.00000, 10.00000, 5.00000 +72, 50.00000, 10.00000, 5.00000 +73, 52.50000, 10.00000, 7.50000 +74, 52.50000, 10.00000, 2.50000 +75, 60.00000, 10.00000, 10.00000 +76, 55.00000, 10.00000, 10.00000 +77, 57.50000, 10.00000, 7.50000 +78, 60.00000, 10.00000, 0.00000 +79, 55.00000, 10.00000, 0.00000 +80, 57.50000, 10.00000, 2.50000 +81, 60.00000, 10.00000, 5.00000 +82, 100.00000, 10.00000, 0.00000 +83, 95.00000, 10.00000, 5.00000 +84, 100.00000, 10.00000, 10.00000 +85, 97.50000, 10.00000, 2.50000 +86, 97.50000, 10.00000, 7.50000 +87, 100.00000, 10.00000, 5.00000 +88, 90.00000, 10.00000, 10.00000 +89, 92.50000, 10.00000, 7.50000 +90, 95.00000, 10.00000, 10.00000 +91, 90.00000, 10.00000, 0.00000 +92, 95.00000, 10.00000, 0.00000 +93, 92.50000, 10.00000, 2.50000 +94, 90.00000, 10.00000, 5.00000 +95, 70.00000, 10.00000, 10.00000 +96, 80.00000, 10.00000, 10.00000 +97, 75.00000, 10.00000, 5.00000 +98, 75.00000, 10.00000, 10.00000 +99, 77.50000, 10.00000, 7.50000 +100, 72.50000, 10.00000, 7.50000 +101, 80.00000, 10.00000, 0.00000 +102, 80.00000, 10.00000, 5.00000 +103, 77.50000, 10.00000, 2.50000 +104, 70.00000, 10.00000, 0.00000 +105, 72.50000, 10.00000, 2.50000 +106, 70.00000, 10.00000, 5.00000 +107, 75.00000, 10.00000, 0.00000 +108, 0.00000, 10.00000, 0.00000 +109, 0.00000, 10.00000, 10.00000 +110, 10.00000, 10.00000, 0.00000 +111, 0.00000, 10.00000, 5.00000 +112, 5.00000, 10.00000, 5.00000 +113, 5.00000, 10.00000, 0.00000 +114, 10.00000, 10.00000, 10.00000 +115, 10.00000, 10.00000, 5.00000 +116, 5.00000, 10.00000, 10.00000 +117, 20.00000, 10.00000, 0.00000 +118, 20.00000, 10.00000, 10.00000 +119, 30.00000, 10.00000, 0.00000 +120, 20.00000, 10.00000, 5.00000 +121, 25.00000, 10.00000, 5.00000 +122, 25.00000, 10.00000, 0.00000 +123, 30.00000, 10.00000, 10.00000 +124, 30.00000, 10.00000, 5.00000 +125, 25.00000, 10.00000, 10.00000 +126, 65.00000, 10.00000, 0.00000 +127, 65.00000, 10.00000, 5.00000 +128, 65.00000, 10.00000, 10.00000 +129, 40.00000, 10.00000, 10.00000 +130, 40.00000, 10.00000, 0.00000 +131, 45.00000, 10.00000, 10.00000 +132, 45.00000, 10.00000, 5.00000 +133, 40.00000, 10.00000, 5.00000 +134, 45.00000, 10.00000, 0.00000 +135, 15.00000, 10.00000, 5.00000 +136, 15.00000, 10.00000, 0.00000 +137, 35.00000, 10.00000, 0.00000 +138, 35.00000, 10.00000, 5.00000 +139, 85.00000, 10.00000, 5.00000 +140, 85.00000, 10.00000, 0.00000 +141, 85.00000, 10.00000, 10.00000 +142, 35.00000, 10.00000, 10.00000 +143, 15.00000, 10.00000, 10.00000 +144, 55.00000, 5.00000, 0.00000 +145, 50.00000, 0.00000, 0.00000 +146, 52.50000, 7.50000, 0.00000 +147, 52.50000, 2.50000, 0.00000 +148, 50.00000, 5.00000, 0.00000 +149, 60.00000, 0.00000, 0.00000 +150, 57.50000, 2.50000, 0.00000 +151, 55.00000, 0.00000, 0.00000 +152, 57.50000, 7.50000, 0.00000 +153, 60.00000, 5.00000, 0.00000 +154, 10.00000, 0.00000, 0.00000 +155, 0.00000, 0.00000, 0.00000 +156, 5.00000, 5.00000, 0.00000 +157, 5.00000, 0.00000, 0.00000 +158, 2.50000, 2.50000, 0.00000 +159, 7.50000, 2.50000, 0.00000 +160, 7.50000, 7.50000, 0.00000 +161, 10.00000, 5.00000, 0.00000 +162, 0.00000, 5.00000, 0.00000 +163, 2.50000, 7.50000, 0.00000 +164, 80.00000, 0.00000, 0.00000 +165, 70.00000, 0.00000, 0.00000 +166, 75.00000, 5.00000, 0.00000 +167, 75.00000, 0.00000, 0.00000 +168, 72.50000, 2.50000, 0.00000 +169, 77.50000, 2.50000, 0.00000 +170, 77.50000, 7.50000, 0.00000 +171, 80.00000, 5.00000, 0.00000 +172, 70.00000, 5.00000, 0.00000 +173, 72.50000, 7.50000, 0.00000 +174, 45.00000, 5.00000, 0.00000 +175, 40.00000, 0.00000, 0.00000 +176, 40.00000, 5.00000, 0.00000 +177, 45.00000, 0.00000, 0.00000 +178, 90.00000, 0.00000, 0.00000 +179, 100.00000, 0.00000, 0.00000 +180, 90.00000, 5.00000, 0.00000 +181, 95.00000, 5.00000, 0.00000 +182, 95.00000, 0.00000, 0.00000 +183, 85.00000, 0.00000, 0.00000 +184, 85.00000, 5.00000, 0.00000 +185, 65.00000, 5.00000, 0.00000 +186, 65.00000, 0.00000, 0.00000 +187, 30.00000, 0.00000, 0.00000 +188, 30.00000, 5.00000, 0.00000 +189, 35.00000, 5.00000, 0.00000 +190, 35.00000, 0.00000, 0.00000 +191, 20.00000, 0.00000, 0.00000 +192, 25.00000, 0.00000, 0.00000 +193, 25.00000, 5.00000, 0.00000 +194, 15.00000, 0.00000, 0.00000 +195, 15.00000, 5.00000, 0.00000 +196, 20.00000, 5.00000, 0.00000 +197, 100.00000, 5.00000, 0.00000 +198, 55.00000, 0.00000, 5.00000 +199, 45.00000, 0.00000, 5.00000 +200, 52.50000, 0.00000, 2.50000 +201, 50.00000, 0.00000, 5.00000 +202, 47.50000, 0.00000, 2.50000 +203, 50.00000, 0.00000, 10.00000 +204, 40.00000, 0.00000, 10.00000 +205, 47.50000, 0.00000, 7.50000 +206, 45.00000, 0.00000, 10.00000 +207, 42.50000, 0.00000, 7.50000 +208, 42.50000, 0.00000, 2.50000 +209, 40.00000, 0.00000, 5.00000 +210, 52.50000, 0.00000, 7.50000 +211, 60.00000, 0.00000, 10.00000 +212, 57.50000, 0.00000, 7.50000 +213, 55.00000, 0.00000, 10.00000 +214, 57.50000, 0.00000, 2.50000 +215, 60.00000, 0.00000, 5.00000 +216, 0.00000, 0.00000, 10.00000 +217, 5.00000, 0.00000, 5.00000 +218, 10.00000, 0.00000, 10.00000 +219, 2.50000, 0.00000, 7.50000 +220, 7.50000, 0.00000, 7.50000 +221, 5.00000, 0.00000, 10.00000 +222, 7.50000, 0.00000, 2.50000 +223, 10.00000, 0.00000, 5.00000 +224, 2.50000, 0.00000, 2.50000 +225, 0.00000, 0.00000, 5.00000 +226, 75.00000, 0.00000, 5.00000 +227, 77.50000, 0.00000, 2.50000 +228, 72.50000, 0.00000, 2.50000 +229, 70.00000, 0.00000, 10.00000 +230, 72.50000, 0.00000, 7.50000 +231, 70.00000, 0.00000, 5.00000 +232, 80.00000, 0.00000, 10.00000 +233, 80.00000, 0.00000, 5.00000 +234, 77.50000, 0.00000, 7.50000 +235, 75.00000, 0.00000, 10.00000 +236, 90.00000, 0.00000, 10.00000 +237, 90.00000, 0.00000, 5.00000 +238, 85.00000, 0.00000, 5.00000 +239, 85.00000, 0.00000, 10.00000 +240, 30.00000, 0.00000, 10.00000 +241, 30.00000, 0.00000, 5.00000 +242, 25.00000, 0.00000, 5.00000 +243, 20.00000, 0.00000, 10.00000 +244, 20.00000, 0.00000, 5.00000 +245, 25.00000, 0.00000, 10.00000 +246, 100.00000, 0.00000, 10.00000 +247, 95.00000, 0.00000, 5.00000 +248, 95.00000, 0.00000, 10.00000 +249, 100.00000, 0.00000, 5.00000 +250, 65.00000, 0.00000, 5.00000 +251, 35.00000, 0.00000, 5.00000 +252, 15.00000, 0.00000, 5.00000 +253, 15.00000, 0.00000, 10.00000 +254, 35.00000, 0.00000, 10.00000 +255, 65.00000, 0.00000, 10.00000 +256, 100.00000, 5.00000, 5.00000 +257, 100.00000, 5.00000, 10.00000 +258, 55.00000, 5.00000, 10.00000 +259, 45.00000, 5.00000, 10.00000 +260, 52.50000, 2.50000, 10.00000 +261, 50.00000, 5.00000, 10.00000 +262, 47.50000, 2.50000, 10.00000 +263, 42.50000, 2.50000, 10.00000 +264, 42.50000, 7.50000, 10.00000 +265, 47.50000, 7.50000, 10.00000 +266, 40.00000, 5.00000, 10.00000 +267, 75.00000, 5.00000, 10.00000 +268, 77.50000, 7.50000, 10.00000 +269, 77.50000, 2.50000, 10.00000 +270, 80.00000, 5.00000, 10.00000 +271, 72.50000, 2.50000, 10.00000 +272, 72.50000, 7.50000, 10.00000 +273, 70.00000, 5.00000, 10.00000 +274, 52.50000, 7.50000, 10.00000 +275, 57.50000, 7.50000, 10.00000 +276, 57.50000, 2.50000, 10.00000 +277, 60.00000, 5.00000, 10.00000 +278, 5.00000, 5.00000, 10.00000 +279, 2.50000, 7.50000, 10.00000 +280, 7.50000, 7.50000, 10.00000 +281, 0.00000, 5.00000, 10.00000 +282, 2.50000, 2.50000, 10.00000 +283, 7.50000, 2.50000, 10.00000 +284, 10.00000, 5.00000, 10.00000 +285, 95.00000, 5.00000, 10.00000 +286, 97.50000, 2.50000, 10.00000 +287, 92.50000, 2.50000, 10.00000 +288, 97.50000, 7.50000, 10.00000 +289, 92.50000, 7.50000, 10.00000 +290, 90.00000, 5.00000, 10.00000 +291, 85.00000, 5.00000, 10.00000 +292, 65.00000, 5.00000, 10.00000 +293, 15.00000, 5.00000, 10.00000 +294, 25.00000, 5.00000, 10.00000 +295, 20.00000, 5.00000, 10.00000 +296, 35.00000, 5.00000, 10.00000 +297, 30.00000, 5.00000, 10.00000 +298, 0.00000, 5.00000, 5.00000 +** +**ELSET COUNT = 120 +**HWCOLOR COMP 36 1 +*ELEMENT, TYPE=C3D10, ELSET=Body1 + 1, 243, 240, 191, 117, 245, 242, 244, + 1, 2, 196 + 2, 204, 199, 175, 130, 207, 208, 209, + 3, 4, 176 + 3, 259, 70, 69, 130, 265, 72, 5, + 6, 132, 134 + 4, 145, 175, 199, 130, 177, 208, 202, + 174, 176, 4 + 5, 96, 88, 236, 178, 141, 290, 291, + 7, 8, 237 + 6, 96, 101, 164, 97, 102, 171, 9, + 99, 103, 10 + 7, 236, 88, 285, 178, 290, 289, 287, + 237, 8, 11 + 8, 285, 179, 178, 83, 12, 182, 11, + 13, 14, 15 + 9, 84, 246, 285, 82, 257, 286, 288, + 87, 256, 16 + 10, 155, 216, 278, 109, 225, 282, 17, + 298, 281, 279 + 11, 155, 217, 154, 156, 224, 222, 157, + 158, 18, 159 + 12, 204, 175, 240, 130, 209, 251, 254, + 3, 176, 19 + 13, 114, 218, 154, 117, 284, 223, 20, + 135, 21, 195 + 14, 203, 258, 211, 198, 260, 276, 213, + 210, 22, 212 + 15, 96, 164, 101, 91, 9, 171, 102, + 139, 184, 140 + 16, 232, 96, 164, 226, 270, 9, 233, + 234, 23, 227 + 17, 97, 267, 226, 96, 24, 25, 26, + 99, 268, 23 + 18, 164, 166, 226, 97, 169, 27, 227, + 10, 28, 26 + 19, 179, 82, 91, 83, 197, 92, 181, + 14, 85, 93 + 20, 236, 285, 246, 178, 287, 286, 248, + 237, 11, 247 + 21, 88, 178, 91, 83, 8, 180, 94, + 89, 15, 93 + 22, 267, 232, 229, 226, 269, 235, 271, + 25, 234, 230 + 23, 108, 109, 156, 110, 111, 29, 163, + 113, 112, 160 + 24, 114, 154, 110, 117, 20, 161, 115, + 135, 195, 136 + 25, 156, 114, 278, 154, 30, 280, 31, + 159, 20, 32 + 26, 278, 154, 217, 156, 32, 222, 33, + 31, 159, 18 + 27, 108, 109, 155, 156, 111, 298, 162, + 163, 29, 158 + 28, 114, 154, 156, 110, 20, 159, 30, + 115, 161, 160 + 29, 109, 114, 278, 156, 116, 280, 279, + 29, 30, 31 + 30, 278, 155, 156, 217, 17, 158, 31, + 33, 224, 18 + 31, 109, 155, 156, 278, 298, 158, 29, + 279, 17, 31 + 32, 164, 101, 166, 97, 171, 170, 169, + 10, 103, 28 + 33, 109, 114, 156, 110, 116, 30, 29, + 112, 115, 160 + 34, 165, 226, 164, 166, 228, 227, 167, + 168, 27, 169 + 35, 285, 82, 83, 84, 16, 85, 13, + 288, 87, 86 + 36, 204, 240, 129, 130, 254, 296, 266, + 3, 19, 133 + 37, 259, 129, 70, 130, 264, 131, 265, + 6, 133, 132 + 38, 240, 118, 123, 119, 294, 125, 297, + 34, 121, 124 + 39, 240, 175, 187, 119, 251, 190, 241, + 34, 189, 188 + 40, 240, 119, 191, 117, 34, 193, 242, + 2, 122, 196 + 41, 240, 118, 119, 117, 294, 121, 34, + 2, 120, 122 + 42, 243, 191, 154, 117, 244, 194, 252, + 1, 196, 195 + 43, 114, 118, 243, 117, 143, 295, 293, + 135, 120, 1 + 44, 218, 243, 154, 117, 253, 252, 223, + 21, 1, 195 + 45, 129, 240, 123, 119, 296, 297, 142, + 138, 34, 124 + 46, 240, 187, 191, 119, 241, 192, 242, + 34, 188, 193 + 47, 114, 243, 218, 117, 293, 253, 284, + 135, 1, 21 + 48, 203, 259, 258, 35, 262, 261, 260, + 36, 37, 38 + 49, 203, 199, 259, 35, 205, 39, 262, + 36, 40, 37 + 50, 203, 198, 199, 35, 210, 201, 205, + 36, 41, 40 + 51, 203, 258, 198, 35, 260, 22, 210, + 36, 38, 41 + 52, 258, 71, 198, 35, 42, 43, 22, + 38, 44, 41 + 53, 258, 70, 71, 35, 274, 73, 42, + 38, 45, 44 + 54, 70, 69, 71, 35, 72, 74, 73, + 45, 46, 44 + 55, 259, 69, 70, 35, 5, 72, 265, + 37, 46, 45 + 56, 258, 259, 70, 35, 261, 265, 274, + 38, 37, 45 + 57, 259, 69, 199, 130, 5, 47, 39, + 6, 134, 4 + 58, 35, 259, 69, 199, 37, 5, 46, + 40, 39, 47 + 59, 179, 82, 83, 285, 197, 85, 14, + 12, 16, 13 + 60, 145, 69, 199, 35, 148, 47, 202, + 48, 46, 40 + 61, 145, 144, 69, 35, 147, 146, 148, + 48, 49, 46 + 62, 145, 198, 144, 35, 200, 50, 147, + 48, 41, 49 + 63, 145, 199, 198, 35, 202, 201, 200, + 48, 40, 41 + 64, 198, 71, 144, 35, 43, 51, 50, + 41, 44, 49 + 65, 69, 144, 71, 35, 146, 51, 74, + 46, 49, 44 + 66, 211, 149, 198, 52, 215, 214, 212, + 53, 54, 55 + 67, 198, 71, 52, 149, 43, 56, 55, + 214, 57, 54 + 68, 71, 144, 149, 198, 51, 150, 57, + 43, 50, 214 + 69, 198, 258, 75, 71, 22, 275, 58, + 43, 42, 77 + 70, 211, 258, 75, 198, 276, 275, 277, + 212, 22, 58 + 71, 75, 198, 52, 211, 58, 55, 59, + 277, 212, 53 + 72, 95, 211, 75, 52, 292, 277, 128, + 60, 53, 59 + 73, 229, 211, 95, 52, 255, 292, 273, + 61, 53, 60 + 74, 229, 165, 211, 52, 231, 250, 255, + 61, 62, 53 + 75, 229, 226, 165, 52, 230, 228, 231, + 61, 63, 62 + 76, 226, 97, 52, 229, 26, 64, 63, + 230, 65, 61 + 77, 97, 267, 229, 226, 24, 271, 65, + 26, 25, 230 + 78, 226, 97, 166, 52, 26, 28, 27, + 63, 64, 66 + 79, 165, 226, 166, 52, 228, 27, 168, + 62, 63, 66 + 80, 165, 166, 104, 52, 168, 173, 172, + 62, 66, 67 + 81, 165, 104, 78, 52, 172, 126, 185, + 62, 67, 68 + 82, 149, 165, 78, 52, 186, 185, 153, + 54, 62, 68 + 83, 211, 165, 149, 52, 250, 186, 215, + 53, 62, 54 + 84, 149, 71, 52, 78, 57, 56, 54, + 153, 80, 68 + 85, 78, 144, 149, 71, 152, 150, 153, + 80, 51, 57 + 86, 75, 71, 78, 52, 77, 80, 81, + 59, 56, 68 + 87, 71, 198, 52, 75, 43, 55, 56, + 77, 58, 59 + 88, 95, 75, 78, 52, 128, 81, 127, + 60, 59, 68 + 89, 95, 78, 104, 52, 127, 126, 106, + 60, 68, 67 + 90, 95, 104, 97, 52, 106, 105, 100, + 60, 67, 64 + 91, 166, 97, 104, 52, 28, 105, 173, + 66, 64, 67 + 92, 95, 267, 229, 97, 272, 271, 273, + 100, 24, 65 + 93, 229, 97, 52, 95, 65, 64, 61, + 273, 100, 60 + 94, 259, 204, 129, 130, 263, 266, 264, + 6, 3, 133 + 95, 240, 130, 175, 119, 19, 176, 251, + 34, 137, 189 + 96, 129, 130, 240, 119, 133, 19, 296, + 138, 137, 34 + 97, 285, 178, 88, 83, 11, 8, 289, + 13, 15, 89 + 98, 218, 154, 217, 278, 223, 222, 220, + 283, 32, 33 + 99, 226, 96, 164, 97, 23, 9, 227, + 26, 99, 10 + 100, 96, 88, 178, 91, 141, 8, 7, + 139, 94, 180 + 101, 145, 199, 69, 130, 202, 47, 148, + 174, 4, 134 + 102, 96, 236, 164, 178, 291, 238, 9, + 7, 237, 183 + 103, 96, 178, 164, 91, 7, 183, 9, + 139, 180, 184 + 104, 246, 285, 179, 178, 286, 12, 249, + 247, 11, 182 + 105, 166, 101, 104, 97, 170, 107, 173, + 28, 103, 105 + 106, 285, 88, 84, 83, 289, 90, 288, + 13, 89, 86 + 107, 145, 198, 149, 144, 200, 214, 151, + 147, 50, 150 + 108, 82, 246, 285, 179, 256, 286, 16, + 197, 249, 12 + 109, 258, 70, 75, 71, 274, 76, 275, + 42, 73, 77 + 110, 96, 267, 226, 232, 268, 25, 23, + 270, 269, 234 + 111, 243, 118, 240, 117, 295, 294, 245, + 1, 120, 2 + 112, 96, 236, 232, 164, 291, 239, 270, + 9, 238, 233 + 113, 216, 278, 218, 217, 282, 283, 221, + 219, 33, 220 + 114, 217, 216, 278, 155, 219, 282, 33, + 224, 225, 17 + 115, 69, 144, 78, 71, 146, 152, 79, + 74, 51, 80 + 116, 154, 114, 278, 218, 20, 280, 32, + 223, 284, 283 + 117, 179, 91, 178, 83, 181, 180, 182, + 14, 93, 15 + 118, 203, 204, 259, 199, 206, 263, 262, + 205, 207, 39 + 119, 96, 267, 95, 97, 268, 272, 98, + 99, 24, 100 + 120, 259, 199, 204, 130, 39, 207, 263, + 6, 4, 3 +** +**NSET COUNT = 9 +*NSET, NSET=SUPPORT + 108, 109, 111, 155, 162, 216, 225, 281, + 298, +**NSET COUNT = 9 +*NSET, NSET=LOAD + 82, 84, 87, 179, 197, 246, 249, 256, + 257, +**NSET COUNT = 83 +*NSET, NSET=TOP + 70, 75, 76, 84, 88, 90, 95, 96, + 98, 109, 114, 116, 118, 123, 125, 128, + 129, 131, 141, 142, 143, 203, 204, 206, + 211, 213, 216, 218, 221, 229, 232, 235, + 236, 239, 240, 243, 245, 246, 248, 253, + 254, 255, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, \ No newline at end of file diff --git a/src/JuliaFEM.jl b/src/JuliaFEM.jl index ae541f8..96f249a 100644 --- a/src/JuliaFEM.jl +++ b/src/JuliaFEM.jl @@ -1,13 +1,12 @@ -# This file is a part of JuliaFEM. +# This file is a part of JuliaFEM. # License is MIT: see https://github.com/JuliaFEM/JuliaFEM.jl/blob/master/LICENSE.md module JuliaFEM VERSION < v"0.4-" && using Docile -# import solvers include("elasticity_solver.jl") include("xdmf.jl") -#using elasticity_solver +include("abaqus_reader.jl") export Model, new_model, new_field, get_field, add_nodes, get_nodes, add_elements, get_elements diff --git a/src/abaqus_reader.jl b/src/abaqus_reader.jl new file mode 100644 index 0000000..686b07f --- /dev/null +++ b/src/abaqus_reader.jl @@ -0,0 +1,132 @@ +# This file is a part of JuliaFEM. License is MIT: https://github.com/ovainola/JuliaFEM/blob/master/README.md +module abaqus_reader + +using Logging +@Logging.configure(level=DEBUG) + +VERSION < v"0.4-" && using Docile + +eldims = Dict("C3D10" => 10) +global handlers = Dict() + +""" +Register new handler for parser +""" +function add_handler(section, function_name) + handlers[section] = function_name +end + +function create_or_get(model, key) + if !(key in keys(model)) + model[key] = Dict() + end + return model[key] +end + +function parse_header(header_line) + args = map(s -> strip(s), split(header_line, ",")) + args[1] = strip(args[1], '*') + d = Dict({"section" => args[1]}) + options = Dict() + for k in args[2:end] + args2 = split(k, "=") + options[args2[1]] = args2[2] + end + d["options"] = options + return d +end + +function parse_node_section(model, header, data) + nodes = create_or_get(model, "nodes") + for line in split(data, "\n") + m = matchall(r"[-0-9.]+", line) + id = parse(Int, m[1]) + coords = float(m[2:end]) + nodes[id] = coords + end +end + +function parse_element_section(model, header, data) + eltype = header["options"]["TYPE"] + if !(eltype in keys(eldims)) + throw("Element $eltype dimension information missing") + end + eldim = eldims[eltype] + m = matchall(r"[0-9]+", data) + m = map(integer, m) + elements = create_or_get(model, "elements") + m = reshape(m, eldim+1, round(Int, length(m)/(eldim+1))) + nel = size(m)[2] + Logging.debug("$nel elements found") + for i=1:nel + elements[m[1,i]] = m[2:end,i] + end + if "ELSET" in keys(header["options"]) + elsets = create_or_get(model, "elsets") + elset_name = header["options"]["ELSET"] + Logging.info("Creating ELSET $elset_name") + elsets[elset_name] = Int64[] + for i=1:nel + push!(elsets[elset_name], m[1,i]) + end + end +end + + +function parse_nodeset_section(model, header, data) + nset_name = header["options"]["NSET"] + Logging.debug("Creating node set $nset_name") + m = matchall(r"[0-9]+", data) + node_ids = map(integer, m) + nsets = create_or_get(model, "nsets") + nsets[nset_name] = Int64[] + for j in node_ids + push!(nsets[nset_name], j) + end +end + + +function parse_abaqus(fid) + model = Dict() + section = None + header = None + data = "" + Logging.info("Registered handlers: $(keys(handlers))") + + function process_section(section) + if section == None + return + end + if !(section in keys(handlers)) + Logging.info("Don't know what to do with data in section $section") + Logging.info("Skipping $(length(data)) bytes of unknown data") + return + end + handlers[section](model, header, strip(data)) + data = "" + end + + for line in eachline(fid) + if beginswith(line, "**") + continue + end + if beginswith(line, "*") + process_section(section) + header = parse_header(line) + Logging.debug("Found ", header["section"], " section") + section = header["section"] + continue + end + data *= line + end + process_section(section) + return model +end + +# add handlers +add_handler("NODE", parse_node_section) +add_handler("ELEMENT", parse_element_section) +add_handler("NSET", parse_nodeset_section) + + +end \ No newline at end of file diff --git a/src/xdmf.jl b/src/xdmf.jl index 9126b2e..50d8584 100644 --- a/src/xdmf.jl +++ b/src/xdmf.jl @@ -102,5 +102,8 @@ function xdmf_new_field(grid, name, source, data) add_text(dataitem, join(data, " ")) end +function xdmf_save_model(xdoc, filename) + save_file(xdoc, filename) +end -end \ No newline at end of file +end diff --git a/test/test_abaqus_reader.jl b/test/test_abaqus_reader.jl new file mode 100644 index 0000000..cf0f91e --- /dev/null +++ b/test/test_abaqus_reader.jl @@ -0,0 +1,17 @@ +using FactCheck +using Logging +@Logging.configure(level=INFO) + +using JuliaFEM.abaqus_reader: parse_abaqus + +facts("test import abaqus model") do + fid = open("../geometry/3d_beam/palkki.inp") + model = parse_abaqus(fid) + close(fid) + @fact length(model["nodes"]) => 298 + @fact length(model["elements"]) => 120 + @fact length(model["elsets"]["Body1"]) => 120 + @fact length(model["nsets"]["SUPPORT"]) => 9 + @fact length(model["nsets"]["LOAD"]) => 9 + @fact length(model["nsets"]["TOP"]) => 83 +end \ No newline at end of file