def twotriangle_stick_cnstr(n_steps = 10, dx = -0.3299999999999): """ This example shows the use of Grabpoints an Sticks in a more complex creasepattern. """ cp = CreasePattern(n_steps = n_steps) cp.nodes = [[ 0, 0, 0 ], [ 1, 0, 0 ], [ 1, 1, 0], [0.667, 0.333, 0], [0.66, 0.33, 1], [ 0, 1, 0]] cp.crease_lines = [[ 0, 1 ], [ 1, 2 ], [ 2, 0 ], [ 3, 4], [ 0, 5], [ 5, 2]] cp.facets = [[0, 1, 2 ], [2, 5, 0]] cp.grab_pts = [[3, 0] ] cp.cnstr_lhs = [ [(0, 0, 1.0)], [(0, 1, 1.0)], [(0, 2, 1.0)], [(1, 1, 1.0)], [(1, 2, 1.0)], [(4, 2, 1.0)], [(4, 0, 1.0)], [(4, 1, 1.0)], [(5, 2, 1.0)]] cp.cnstr_rhs = [0.0, 0.0, 0.0, 0.0, 0.0 , dx, 0.0, 0.0, 0.0 ] X = np.zeros((cp.n_dofs,), dtype = float) X[1] = 0.01 print 'initial lengths\n', cp.c_lengths print 'initial vectors\n', cp.c_vectors print 'initial R\n', cp.get_G(X) print 'initial G_du\n', cp.get_G_du(X) X = cp.solve(X) print '========== results ==============' print 'solution X\n', X print 'final positions\n', cp.get_new_nodes(X) print 'final vectors\n', cp.get_new_vectors(X) print 'final lengths\n', cp.get_new_lengths(X) return cp
def triangle_stick_cnstr(n_steps = 10, dx = -0.3299999999999): """ This example shows new options of lines, as beams connected to grabpoints. This could be usefull for simulation the crane lifting up the oricrete construction. """ cp = CreasePattern(n_steps = n_steps) cp.nodes = [[ 0, 0, 0 ], [ 1, 0, 0 ], [ 1, 1, 0], [0.667, 0.333, 0], [0.1, 0.05, 0], [0.66, 0.33, 2]] cp.crease_lines = [[ 0, 1 ], [ 1, 2 ], [ 2, 0 ], [ 3, 5]] cp.facets = [[0, 1, 2 ]] cp.grab_pts = [[3, 0], [4, 0]] cp.cnstr_lhs = [[(0, 0, 1.0)], [(0, 1, 1.0)], [(0, 2, 1.0)], [(1, 1, 1.0)], [(1, 2, 1.0)], [(5, 2, 1.0)], [(5, 0, 1.0)], [(5, 1, 1.0)]] cp.cnstr_rhs = [0.0, 0.0, 0.0, 0.0, 0.0 , dx, 0.0, 0.0] X = np.zeros((cp.n_dofs,), dtype = float) X[1] = 0.01 print 'initial lengths\n', cp.c_lengths print 'initial vectors\n', cp.c_vectors print 'initial R\n', cp.get_G(X) print 'initial G_du\n', cp.get_G_du(X) X = cp.solve(X) print '========== results ==============' print 'solution X\n', X print 'final positions\n', cp.get_new_nodes(X) print 'final vectors\n', cp.get_new_vectors(X) print 'final lengths\n', cp.get_new_lengths(X) return cp
def triangle_cp_cnstr(n_steps = 10, dx = -0.3299999999999): """ This example demonstrates the main funtions of Grabpoints. Two Grabpoints are integrated in a single triangle. Grabpoint one is used as regulare constrain moved in z-direction. Grabpoint two is used as control point, which gives back the coordinations of an exact point on the face in every iteration step. """ cp = CreasePattern(n_steps = n_steps) cp.nodes = [[ 0, 0, 0 ], [ 1, 0, 0 ], [ 1, 1, 0], [0.667, 0.333, 0], [0.2, 0.1, 0]] cp.crease_lines = [[ 0, 1 ], [ 1, 2 ], [ 2, 0 ]] cp.facets = [[0, 1, 2 ]] cp.grab_pts = [[3, 0], [4, 0]] cp.cnstr_lhs = [[(0, 0, 1.0)], [(0, 1, 1.0)], [(0, 2, 1.0)], [(1, 1, 1.0)], [(1, 2, 1.0)], [(3, 2, 1.0)]] cp.cnstr_rhs = [0.0, 0.0, 0.0, 0.0, 0.0 , dx, 0.0, 0.0] X = np.zeros((cp.n_dofs,), dtype = float) X[1] = 0.01 print 'initial lengths\n', cp.c_lengths print 'initial vectors\n', cp.c_vectors print 'initial R\n', cp.get_G(X) print 'initial G_du\n', cp.get_G_du(X) # X = cp.solve(X) print '========== results ==============' print 'solution X\n', X print 'final positions\n', cp.get_new_nodes(X) print 'final vectors\n', cp.get_new_vectors(X) print 'final lengths\n', cp.get_new_lengths(X) return cp
def moving_truss_cp_square(n_steps = 40): cp = CreasePattern(n_steps = n_steps) cp.nodes = [[ 0, 2, 0 ], [ 0, 0, 0 ]] cp.crease_lines = [[ 0, 1 ]] face_z_0 = CF(Rf = z_ - 0) face_x_0 = CF(Rf = x_ - 0) # face_xy_135 = CF(Rf = x_ + y_ - 1.0) # face_xy_round = CF(Rf = x_**2 + (y_)**2 - 1.0) # face_x_1_t = CF(Rf = x_ - 1.0 + 1.99 * t_) # argument = 2*3.14159*t_ # face_x_1_t = CF(Rf = y_ + 3 + sp.sin(argument)) face_x_1_t = CF(Rf = y_ - 1.0 * (t_ - 1) * sp.Heaviside(t_ - 1) + 1.0 * (t_ - 3) * sp.Heaviside(t_ - 3) + 1.0 * (t_ - 5) * sp.Heaviside(t_ - 5) - 1.0 * (t_ - 7) * sp.Heaviside(t_ - 7)) face_y_1_t = CF(Rf = x_ + 1.0 * t_ * sp.Heaviside(t_) - 1.0 * (t_ - 1) * sp.Heaviside(t_ - 1) - 1.0 * (t_ - 3) * sp.Heaviside(t_ - 3) + 1.0 * (t_ - 5) * sp.Heaviside(t_ - 5) + 1.0 * (t_ - 7) * sp.Heaviside(t_ - 7) - 1.0 * (t_ - 8) * sp.Heaviside(t_ - 8)) # +3.14159/2.0 # face_x_1_t = CF(Rf = y_ - 1.99 * t_) cp.cf_lst = [(face_z_0, [0, 1]), (face_x_0, [0]), (face_x_1_t, [1]), (face_y_1_t, [1])] X = np.zeros((cp.n_dofs,), dtype = float) # X[1] = 0.01 # X[0] = 0.01 print 'initial lengths\n', cp.c_lengths print 'initial vectors\n', cp.c_vectors print 'initial R\n', cp.get_G(X) print 'initial dR\n', cp.get_G_du(X) X = cp.solve(X) print '========== results ==============' print 'solution X\n', X print 'final positions\n', cp.get_new_nodes(X) print 'final vectors\n', cp.get_new_vectors(X) print 'final lengths\n', cp.get_new_lengths(X) return cp
def moving_truss_cp_circle(n_steps = 40): cp = CreasePattern(n_steps = n_steps) cp.nodes = [[ 0, 1, 0 ], [ 0, -1, 0 ]] cp.crease_lines = [[ 0, 1 ]] face_z_0 = FF(Rf = z_ - 0) face_x_0 = FF(Rf = x_ - 0) # face_xy_135 = FF(Rf = x_ + y_ - 1.0) # face_xy_round = FF(Rf = x_**2 + (y_)**2 - 1.0) # face_x_1_t = FF(Rf = x_ - 1.0 + 1.99 * t_) # argument = 2*3.14159*t_ # face_x_1_t = FF(Rf = y_ + 3 + sp.sin(argument)) face_x_1_t = FF(Rf = y_ + sp.cos(1.0 * t_)) face_y_1_t = FF(Rf = x_ + sp.sin(1.0 * t_)) # +3.14159/2.0 # face_x_1_t = FF(Rf = y_ - 1.99 * t_) cp.cnstr_lst = [(face_z_0, [0, 1]), (face_x_0, [0]), (face_x_1_t, [1]), (face_y_1_t, [1])] X = np.zeros((cp.n_dofs,), dtype = float) # X[1] = 0.01 # X[0] = 0.01 print 'initial lengths\n', cp.c_lengths print 'initial vectors\n', cp.c_vectors print 'initial R\n', cp.get_R(X) print 'initial dR\n', cp.get_dR(X) X = cp.solve_ff(X) print '========== results ==============' print 'solution X\n', X print 'final positions\n', cp.get_new_nodes(X) print 'final vectors\n', cp.get_new_vectors(X) print 'final lengths\n', cp.get_new_lengths(X) return cp
def moving_truss_cp_ff_cnstr(n_steps = 10, dx = -1.99): cp = CreasePattern(n_steps = n_steps) cp.nodes = [[ 0, 0, 0 ], [ 1, 0, 0 ]] cp.crease_lines = [[ 0, 1 ]] face_z_0 = CF(Rf = z_ - 0) face_x_0 = CF(Rf = x_ - 0) face_x_1_t = CF(Rf = x_ - 1.0 + 1.99 * t_) cp.cf_lst = [(face_z_0, [0, 1]), (face_x_0, [0]), (face_x_1_t, [1])] cp.cnstr_lhs = [ [(1, 0, 1.0), (1, 1, 1.0)], ] cp.cnstr_rhs = [0] X = np.zeros((cp.n_dofs,), dtype = float) X[1] = 0.01 print 'initial lengths\n', cp.c_lengths print 'initial vectors\n', cp.c_vectors print 'initial R\n', cp.get_G(X) print 'initial dR\n', cp.get_G_du(X) X = cp.solve(X) print '========== results ==============' print 'solution X\n', X print 'final positions\n', cp.get_new_nodes(X) print 'final vectors\n', cp.get_new_vectors(X) print 'final lengths\n', cp.get_new_lengths(X) return cp
def moving_truss_cp_cnstr(n_steps = 10, dx = -1.99): cp = CreasePattern(n_steps = n_steps) cp.nodes = [[ 0, 0, 0 ], [ 1, 0, 0 ]] cp.crease_lines = [[ 0, 1 ]] cp.cnstr_lhs = [ [(0, 0, 1.0)], [(0, 2, 1.0)], [(1, 0, 1.0)], [(1, 0, 1.0), (1, 1, 1.0)], [(1, 2, 1.0)] ] cp.cnstr_rhs = [0.0, 0.0, dx, 0.0, 0.0] X = np.zeros((cp.n_dofs,), dtype = float) X[1] = 0.01 print 'initial lengths\n', cp.c_lengths print 'initial vectors\n', cp.c_vectors print 'initial R\n', cp.get_G(X) print 'initial dR\n', cp.get_G_du(X) X = cp.solve(X) print '========== results ==============' print 'solution X\n', X print 'final positions\n', cp.get_new_nodes(X) print 'final vectors\n', cp.get_new_vectors(X) print 'final lengths\n', cp.get_new_lengths(X) return cp