def rhombus_3x1_crane(n_steps = 10, dx = 1.0): ''' This is a first modell, which should lift the creasepattern. It shows a configuration of constrains in which the crane will lift the pattern in the expectet form. NOTE: There is no influence of gravity. ''' cp = Lifting(n_steps = n_steps, MAX_ITER = 500) cp.N = [[0, 0, 0], #0 [0, 1, 0], [1, 0, 0], [1, 1, 0], [2, 0, 0], [2, 1, 0], #5 [3, 0, 0], [3, 1, 0], [0, 0.5, 0], [3, 0.5, 0], [0.5, 0.5, 0], #10 [1.5, 0.5, 0], [2.5, 0.5, 0], [0.5, 0.333, 0], #13 [0.5, 0.667, 0], [1.5, 0.333, 0], [1.5, 0.667, 0], [2.5, 0.333, 0], [2.5, 0.667, 0], [1.5, 0.5, 1.0], [0, 0.5, 1], #20 [3, 0.5, 1], [0, 0.333, 1.0], [0, 0.667, 1.0], [3, 0.333, 1.0], [3, 0.667, 1.0], [1.5, 0.333, 1.0], [1.5, 0.667, 1.0] ] cp.L = [[0, 2], #0 [0, 8], [0, 10], [1, 3], [1, 8], [1, 10], [2, 4], [2, 10], [2, 11], [3, 5], [3, 10], #10 [3, 11], [4, 6], [4, 11], [4, 12], [5, 7], [5, 11], [5, 12], [6, 9], [6, 12], [7, 9], #20 [7, 12], [8, 10], [9, 12], [10, 11], [11, 12], [19, 20], #26 [19, 21], [20, 22], [20, 23], [19, 26], [19, 27], [21, 24], [21, 25], [13, 22], [14, 23], [15, 26], [16, 27], [17, 24], [18, 25], # [20, 8], # [9, 21] ] cp.F = [[0, 2, 10], [2, 4, 11], [4, 6, 12], [2, 11, 10], [4, 11, 12], [0, 8, 10], [6, 9, 12], [1, 3, 10], [3, 5, 11], [5, 7, 12], [3, 10, 11], [5, 11, 12], [1, 8, 10], [7, 9, 12] ] cp.GP = [[13, 0], [14, 7], [15, 1], [16, 8], [17, 2], [18, 9] ] cp.cnstr_lhs = [[(19, 2, 1.0)], [(19, 1, 1.0)], [(19, 0, 1.0)], [(20, 1, 1.0)], [(20, 2, 1.0)], [(21, 1, 1.0)], [(21, 2, 1.0)], [(20, 0, 1.0), (22, 0, -1.0)], [(20, 0, 1.0), (23, 0, -1.0)], [(20, 2, 1.0), (22, 2, -1.0)], [(20, 2, 1.0), (23, 2, -1.0)], [(19, 0, 1.0), (26, 0, -1.0)], [(19, 0, 1.0), (27, 0, -1.0)], [(19, 2, 1.0), (26, 2, -1.0)], [(19, 2, 1.0), (27, 2, -1.0)], [(21, 0, 1.0), (24, 0, -1.0)], [(21, 0, 1.0), (25, 0, -1.0)], [(21, 2, 1.0), (24, 2, -1.0)], [(21, 2, 1.0), (25, 2, -1.0)], [(14, 1, 1.0), (16, 1, -1.0)], #[(8, 2, 1.0)], [(11, 1, 1.0)], #[(9, 2, 1.0)], [(11, 0, 1.0)], [(13, 0, 1.0), (14, 0, -1.0)], [(16, 1, 1.0), (18, 1, -1.0)], [(2, 2, 1.0), (4, 2, -1.0)], #[(13, 2, 1.0), (17, 2, -1.0)], [(13, 1, 1.0), (15, 1, -1.0)] ] cp.cnstr_rhs[0] = dx cp.u_0[2] = 0.00005 cp.u_0[5] = 0.00005 cp.u_0[20] = 0.00005 cp.u_0[23] = 0.00005 cp.u_0[35] = 0.0003 cp.u_0[8] = 0.00025 cp.u_0[11] = 0.00025 cp.u_0[14] = 0.00025 cp.u_0[17] = 0.00025 cp.u_0[32] = 0.00017 cp.u_0[38] = 0.00017 cp.u_0[41] = 0.00016334 cp.u_0[44] = 0.00016334 cp.u_0[47] = 0.00028335 cp.u_0[50] = 0.00028335 cp.u_0[53] = 0.00016334 cp.u_0[56] = 0.00016334 cp.u_0[59] = 0.00025 cp.u_0[66] = 0.0001 cp.u_0[68] = 0.00016334 cp.u_0[69] = -0.0001 cp.u_0[71] = 0.00016334 cp.u_0[72] = 0.0001 cp.u_0[74] = 0.00016334 cp.u_0[75] = 0.0001 cp.u_0[77] = 0.00016334 cp.u_0[78] = -0.0001 cp.u_0[80] = 0.00016334 cp.u_0[81] = -0.0001 cp.u_0[83] = 0.00016334 # cp.u_0[86] = 0.00025 # cp.u_0[89] = 0.00025 print 'n_dofs', cp.n_dofs print 'n_c', cp.n_c print 'n_g', cp.n_g print 'necessary constraints', cp.n_dofs - cp.n_c - cp.n_g * cp.n_d - cp.n_l * 2 print 'cnstr', len(cp.cnstr_lhs) return cp
def rhombus_3x1_crane(n_steps = 10, dx = 1.5): cp = Lifting(n_steps = n_steps, MAX_ITER = 5000) cp.N = [[0, 0, 0], #0 [0, 1, 0], [1, 0, 0], [1, 1, 0], [2, 0, 0], [2, 1, 0], #5 [3, 0, 0], [3, 1, 0], [0, 0.5, 0], [3, 0.5, 0], [0.5, 0.5, 0], #10 [1.5, 0.5, 0], [2.5, 0.5, 0], [0.5, 0.333, 0], #13 [0.5, 0.667, 0], [1.5, 0.333, 0], [1.5, 0.667, 0], [2.5, 0.333, 0], [2.5, 0.666, 0], #crane [0, 0, 1], #19 [0.5, 0, 1], [1.5, 0, 1], [2.5, 0, 1], [3, 0, 1], [0, 1, 1.01], [0.5, 1, 1.], #25 [1.5, 1, 1.], [2.5, 1, 1.], [3, 1, 1.], [0, 0.5, 1.], [3, 0.5, 1.], #30 [0.5, 0.333, 1.], [0.5, 0.667, 1.], [1.5, 0.333, 1.], [1.5, 0.667, 1.], [2.5, 0.333, 1.], #35 [2.5, 0.667, 1.], [0.5, 0.333, 1.2], [0.5, 0.667, 1.2], [1.5, 0.333, 1.2], [1.5, 0.667, 1.2], #40 [2.5, 0.333, 1.2], [2.5, 0.667, 1.2], ] cp.L = [[0, 2], #0 [0, 8], [0, 10], [1, 3], [1, 8], [1, 10], [2, 4], [2, 10], [2, 11], [3, 5], [3, 10], #10 [3, 11], [4, 6], [4, 11], [4, 12], [5, 7], [5, 11], [5, 12], [6, 9], [6, 12], [7, 9], #20 [7, 12], [8, 10], [9, 12], [10, 11], [11, 12], #crane [19, 20], [20, 21], [21, 22], [22, 23], [24, 25], #30 [25, 26], [26, 27], [27, 28], [19, 29], [29, 24], [20, 25], [21, 26], [22, 27], [23, 30], [30, 28], #40 [29, 8], [30, 9], [37, 13], [38, 14], [39, 15], #45 [40, 16], [41, 17], [42, 18] ] cp.F = [[0, 2, 10], [2, 4, 11], [4, 6, 12], [2, 11, 10], [4, 11, 12], [0, 8, 10], [6, 9, 12], [1, 3, 10], [3, 5, 11], [5, 7, 12], [3, 10, 11], [5, 11, 12], [1, 8, 10], [7, 9, 12] ] cp.LP = [[31, 36], [32, 36], [33, 37], [34, 37], [35, 38], [36, 38], [31, 43], [32, 44], [33, 45], [34, 46], [35, 47], [36, 48], ] cp.GP = [[13, 0], [14, 7], [15, 1], [16, 8], [17, 2], [18, 9] ] cp.cnstr_lhs = [[(39, 2, 1.0)], [(39, 2, 1.0), (40, 2, -1.0)], [(19, 2, 1.0)], [(19, 2, 1.0), (20, 2, -1.0)], [(20, 2, 1.0), (21, 2, -1.0)], [(21, 2, 1.0), (22, 2, -1.0)], [(22, 2, 1.0), (23, 2, -1.0)], [(19, 2, 1.0), (29, 2, -1.0)], [(29, 2, 1.0), (24, 2, -1.0)], [(24, 2, 1.0), (25, 2, -1.0)], [(25, 2, 1.0), (26, 2, -1.0)], [(26, 2, 1.0), (27, 2, -1.0)], [(27, 2, 1.0), (28, 2, -1.0)], [(28, 2, 1.0), (30, 2, -1.0)], [(19, 1, 1.0)], [(19, 1, 1.0), (20, 1, -1.0)], [(20, 1, 1.0), (21, 1, -1.0)], [(21, 1, 1.0), (22, 1, -1.0)], [(22, 1, 1.0), (23, 1, -1.0)], [(19, 0, 1.0)], [(19, 0, 1.0), (24, 0, -1.0)], [(23, 0, 1.0), (30, 0, -1.0)], [(19, 0, 1.0), (29, 0, -1.0)], [(13, 1, 1.0), (37, 1, -1.0)], [(14, 1, 1.0), (38, 1, -1.0)], [(15, 1, 1.0), (39, 1, -1.0)], [(16, 1, 1.0), (40, 1, -1.0)], [(17, 1, 1.0), (41, 1, -1.0)], [(18, 1, 1.0), (42, 1, -1.0)], [(31, 1, 1.0), (33, 1, -1.0)], [(33, 1, 1.0), (35, 1, -1.0)], [(32, 1, 1.0), (34, 1, -1.0)], #[(34, 1, 1.0), (36, 1, -1.0)], [(32, 1, 1.0), (31, 1, 1.0)], #[(37, 2, 1.0), (38, 2, -1.0)], #[(39, 2, 1.0), (40, 2, -1.0)], siehe oben verknuepfung lasteinleitung [(41, 2, 1.0), (42, 2, -1.0)], [(39, 0, 1.0)], [(40, 0, 1.0)], [(37, 2, 1.0), (41, 2, -1.0)], [(2, 1, 1.0), (4, 1, -1.0)] ] cp.cnstr_rhs[0] = dx cp.u_0[2] = 0.00005 cp.u_0[5] = 0.00005 cp.u_0[20] = 0.00005 cp.u_0[23] = 0.00005 cp.u_0[35] = 0.0003 cp.u_0[8] = 0.00025 cp.u_0[11] = 0.00025 cp.u_0[14] = 0.00025 cp.u_0[17] = 0.00025 cp.u_0[32] = 0.00017 cp.u_0[38] = 0.00017 cp.u_0[41] = 0.00016334 cp.u_0[44] = 0.00016334 cp.u_0[47] = 0.00028335 cp.u_0[50] = 0.00028335 cp.u_0[53] = 0.00016334 cp.u_0[56] = 0.00016334 cp.u_0[119] = 0.00028335 cp.u_0[122] = 0.00028335 cp.u_0[113] = 0.00016334 cp.u_0[116] = 0.00016334 cp.u_0[125] = 0.00016334 cp.u_0[128] = 0.00016334 print 'n_dofs', cp.n_dofs print 'n_c', cp.n_c print 'n_g', cp.n_g print 'necessary constraints', cp.n_dofs - cp.n_c - cp.n_g * cp.n_d - cp.n_l * 2 print 'cnstr', len(cp.cnstr_lhs) return cp
def rhombus_3x1_crane_sticks(n_steps=10, dx=1.0): cp = Lifting(n_steps=n_steps, MAX_ITER=500) cp.N = [[0, 0, 0], #0 [0, 1, 0], [1, 0, 0], [1, 1, 0], [2, 0, 0], [2, 1, 0], #5 [3, 0, 0], [3, 1, 0], [0, 0.5, 0], [3, 0.5, 0], [0.5, 0.5, 0], #10 [1.5, 0.5, 0], [2.5, 0.5, 0], [0.5, 0.333, 0], #13 [0.5, 0.667, 0], [1.5, 0.333, 0], [1.5, 0.667, 0], [2.5, 0.333, 0], [2.5, 0.666, 0], [1.5, 0.5, 1.0], [0, 0.5, 1], [3, 0.5, 1], [0.5, 0.5, 1.0], [2.5, 0.5, 1.0], [0.5, 0.333, 1.0], [0.5, 0.667, 1.0], [2.5, 0.333, 1.0], [2.5, 0.667, 1.0], [1.5, 0.333, 1.0], [1.5, 0.667, 1.0] ] cp.L = [[0, 2], #0 [0, 8], [0, 10], [1, 3], [1, 8], [1, 10], [2, 4], [2, 10], [2, 11], [3, 5], [3, 10], #10 [3, 11], [4, 6], [4, 11], [4, 12], [5, 7], [5, 11], [5, 12], [6, 9], [6, 12], [7, 9], #20 [7, 12], [8, 10], [9, 12], [10, 11], [11, 12], [19, 20], #26 [19, 21], [22, 24], [22, 25], [19, 28], [19, 29], [23, 26], [23, 27], [13, 24], [14, 25], [15, 28], [16, 29], [17, 26], [18, 27], [20, 8], [9, 21] ] cp.F = [[0, 2, 10], [2, 4, 11], [4, 6, 12], [2, 11, 10], [4, 11, 12], [0, 8, 10], [6, 9, 12], [1, 3, 10], [3, 5, 11], [5, 7, 12], [3, 10, 11], [5, 11, 12], [1, 8, 10], [7, 9, 12] ] cp.LP = [[22, 26], [23, 27]] cp.GP = [[13, 0], [14, 7], [15, 1], [16, 8], [17, 2], [18, 9] ] cp.cnstr_lhs = [[(19, 2, 1.0)], [(19, 1, 1.0)], [(19, 0, 1.0)], [(20, 1, 1.0)], [(20, 2, 1.0)], [(21, 1, 1.0)], [(21, 2, 1.0)], [(22, 0, 1.0), (24, 0, -1.0)], [(22, 0, 1.0), (25, 0, -1.0)], [(22, 2, 1.0), (24, 2, -1.0)], [(22, 2, 1.0), (25, 2, -1.0)], [(19, 0, 1.0), (28, 0, -1.0)], [(19, 0, 1.0), (29, 0, -1.0)], [(19, 2, 1.0), (28, 2, -1.0)], [(19, 2, 1.0), (29, 2, -1.0)], [(23, 0, 1.0), (26, 0, -1.0)], [(23, 0, 1.0), (27, 0, -1.0)], [(23, 2, 1.0), (26, 2, -1.0)], [(23, 2, 1.0), (27, 2, -1.0)], [(14, 1, 1.0), (16, 1, -1.0)], #[(8, 2, 1.0)], [(11, 1, 1.0)], #[(9, 2, 1.0)], [(11, 0, 1.0)], [(13, 0, 1.0), (14, 0, -1.0)], [(16, 1, 1.0), (18, 1, -1.0)], [(2, 2, 1.0), (4, 2, -1.0)], #[(13, 2, 1.0), (17, 2, -1.0)], [(13, 1, 1.0), (15, 1, -1.0)] ] cp.cnstr_rhs[0] = dx cp.u_0[2] = 0.00005 cp.u_0[5] = 0.00005 cp.u_0[20] = 0.00005 cp.u_0[23] = 0.00005 cp.u_0[35] = 0.0003 cp.u_0[8] = 0.00025 cp.u_0[11] = 0.00025 cp.u_0[14] = 0.00025 cp.u_0[17] = 0.00025 cp.u_0[32] = 0.00017 cp.u_0[38] = 0.00017 cp.u_0[41] = 0.00016334 cp.u_0[44] = 0.00016334 cp.u_0[47] = 0.00028335 cp.u_0[50] = 0.00028335 cp.u_0[53] = 0.00016334 cp.u_0[56] = 0.00016334 cp.u_0[59] = 0.00025 cp.u_0[66] = 0.0001 cp.u_0[68] = 0.00016334 cp.u_0[69] = -0.0001 cp.u_0[71] = 0.00016334 cp.u_0[72] = 0.0001 cp.u_0[74] = 0.00016334 cp.u_0[75] = 0.0001 cp.u_0[77] = 0.00016334 cp.u_0[78] = -0.0001 cp.u_0[80] = 0.00016334 cp.u_0[81] = -0.0001 cp.u_0[83] = 0.00016334 cp.u_0[86] = 0.00025 cp.u_0[89] = 0.00025 print 'n_dofs', cp.n_dofs print 'n_c', cp.n_c print 'n_g', cp.n_g print 'necessary constraints', cp.n_dofs - cp.n_c - cp.n_g * cp.n_d - cp.n_l * 2 print 'cnstr', len(cp.cnstr_lhs) return cp