def assemble_penality_dirichlet(data):
    test_shape_function = common_tools.shape_func_to_whole_vector(
        data['testShapeFunction'], data['assemblyIndes'], all_nodes_size)
    trial_shape_function = common_tools.shape_func_to_whole_vector(
        data['trialShapeFunction'], data['assemblyIndes'], all_nodes_size)

    value_dimension = data['valueDimension']
    load_validity = data['loadValidity']
    load = data['load']
    weight = data['weight']
    penalty = data['penalty']

    left = np.zeros(
        (value_dimension, test_shape_function.shape[1] * value_dimension),
        dtype=np.double)
    right = np.zeros(
        (value_dimension, trial_shape_function.shape[1] * value_dimension),
        dtype=np.double)
    for n, v in zip((left, right),
                    (test_shape_function, trial_shape_function)):
        for i in range(value_dimension):
            n[i, i::value_dimension] = v[0] if load_validity[i] else 0
    mat = left.transpose().dot(right) * weight * penalty
    vec = left.transpose().dot(load) * weight * penalty

    return (mat, vec.reshape((vec.shape[0], 1)))
Example #2
0
def assemble_lagrangle_dirichlet(data):
    test_shape_function = common_tools.shape_func_to_whole_vector(
        data['testShapeFunction'], data['assemblyIndes'],
        all_nodes_size + all_lagrangle_nodes_size)
    trial_shape_function = common_tools.shape_func_to_whole_vector(
        data['trialShapeFunction'], data['assemblyIndes'],
        all_nodes_size + all_lagrangle_nodes_size)
    lagrangle_shape_function = common_tools.shape_func_to_whole_vector(
        data['lagrangleShapeFunction'], data['lagrangleAssemblyIndes'],
        all_nodes_size + all_lagrangle_nodes_size)

    value_dimension = data['valueDimension']
    load_validity = data['loadValidity']
    left = np.zeros(
        (value_dimension, lagrangle_shape_function.shape[1] * value_dimension),
        np.double)
    right = np.zeros(
        (value_dimension, lagrangle_shape_function.shape[1] * value_dimension),
        np.double)
    lag = np.zeros(
        (value_dimension, lagrangle_shape_function.shape[1] * value_dimension),
        np.double)
    for n, v in zip(
        (left, right, lag),
        (test_shape_function, trial_shape_function, lagrangle_shape_function)):
        for i in range(value_dimension):
            n[i, i::value_dimension] = v[0] if load_validity[i] else 0
    mat = lag.transpose().dot(right) + left.transpose().dot(lag)
    mat *= data['weight']
    vec = lag.transpose().dot(data['load']) * data['weight']
    applyDiagConvention(data, mat)
    return (mat, vec.reshape((vec.shape[0], 1)))
def assemble_mechanical_volume(data):
    test_shape_function = common_tools.shape_func_to_whole_vector(data['testShapeFunction'], data['assemblyIndes'], all_nodes_size)
    trial_shape_function = common_tools.shape_func_to_whole_vector(data['trialShapeFunction'], data['assemblyIndes'], all_nodes_size)   
    value_dimension = data['valueDimension']
    load = data['load']
    weight = data['weight']
    c_law = data['constitutiveLaw']
    
    mat = assemble_volume_mat(value_dimension,weight, test_shape_function, c_law, trial_shape_function)
    import neumann_assembler
    vec = neumann_assembler.assemble_general_force(weight, load, test_shape_function)
    return (mat, vec.reshape((vec.shape[0],1))) 
def assemble_mechanical_volume(data):
    test_shape_function = common_tools.shape_func_to_whole_vector(
        data['testShapeFunction'], data['assemblyIndes'], all_nodes_size)
    trial_shape_function = common_tools.shape_func_to_whole_vector(
        data['trialShapeFunction'], data['assemblyIndes'], all_nodes_size)
    value_dimension = data['valueDimension']
    load = data['load']
    weight = data['weight']
    c_law = data['constitutiveLaw']

    mat = assemble_volume_mat(value_dimension, weight, test_shape_function,
                              c_law, trial_shape_function)
    import neumann_assembler
    vec = neumann_assembler.assemble_general_force(weight, load,
                                                   test_shape_function)
    return (mat, vec.reshape((vec.shape[0], 1)))
Example #5
0
def assemble_poisson_volume(data):
    spatical_dimension = data['spatialDimension']
    test_shape_function = common_tools.shape_func_to_whole_vector(data['testShapeFunction'], data['assemblyIndes'], all_nodes_size)
    trial_shape_function = common_tools.shape_func_to_whole_vector(data['trialShapeFunction'], data['assemblyIndes'], all_nodes_size)
    main_matrix_size = data['allNodesSize'];
    
    mat = np.zeros((main_matrix_size, main_matrix_size), dtype=np.double)
    vec = np.zeros((main_matrix_size,), dtype=np.double)
    
    weight = data['weight']
    for dim in range(spatical_dimension):
        test_vec = test_shape_function[dim + 1]
        trial_vec = trial_shape_function[dim + 1]
        mat += test_vec.reshape((-1, 1)).dot(trial_vec.reshape((1, -1))) * weight
     
    vec += data['load'][0] * weight * test_shape_function[0]
    return (mat, vec.reshape((vec.shape[0],1))) 
def assemble_lagrangle_dirichlet(data):
    test_shape_function = common_tools.shape_func_to_whole_vector(data['testShapeFunction'], data['assemblyIndes'], all_nodes_size + all_lagrangle_nodes_size)
    trial_shape_function = common_tools.shape_func_to_whole_vector(data['trialShapeFunction'], data['assemblyIndes'], all_nodes_size + all_lagrangle_nodes_size)
    lagrangle_shape_function = common_tools.shape_func_to_whole_vector(data['lagrangleShapeFunction'], data['lagrangleAssemblyIndes'], all_nodes_size + all_lagrangle_nodes_size)
    
    value_dimension = data['valueDimension']
    load_validity = data['loadValidity']
    left = np.zeros((value_dimension, lagrangle_shape_function.shape[1] * value_dimension), np.double)
    right = np.zeros((value_dimension, lagrangle_shape_function.shape[1] * value_dimension), np.double)
    lag = np.zeros((value_dimension, lagrangle_shape_function.shape[1] * value_dimension), np.double)
    for n, v in zip((left, right, lag), (test_shape_function, trial_shape_function, lagrangle_shape_function)):
        for i in range(value_dimension):
            n[i, i::value_dimension] = v[0] if load_validity[i] else 0
    mat = lag.transpose().dot(right) + left.transpose().dot(lag)
    mat *= data['weight']
    vec = lag.transpose().dot(data['load']) * data['weight']
    applyDiagConvention(data, mat)
    return (mat, vec.reshape((vec.shape[0], 1))) 
def assemble_penality_dirichlet(data):
    test_shape_function = common_tools.shape_func_to_whole_vector(data['testShapeFunction'], data['assemblyIndes'], all_nodes_size)
    trial_shape_function = common_tools.shape_func_to_whole_vector(data['trialShapeFunction'], data['assemblyIndes'], all_nodes_size)
    
    value_dimension = data['valueDimension']
    load_validity = data['loadValidity']
    load=data['load']
    weight=data['weight']
    penalty=data['penalty']
    
    left = np.zeros((value_dimension, test_shape_function.shape[1] * value_dimension), dtype=np.double)
    right = np.zeros((value_dimension, trial_shape_function.shape[1] * value_dimension), dtype=np.double)
    for n, v in zip((left, right), (test_shape_function, trial_shape_function)):
        for i in range(value_dimension):
            n[i, i::value_dimension] = v[0] if load_validity[i] else 0
    mat = left.transpose().dot(right) * weight * penalty
    vec = left.transpose().dot(load) * weight * penalty
    
    return (mat, vec.reshape((vec.shape[0],1)))
Example #8
0
def gen_test_data(value_dimension):
    data = {}
    data['allNodesSize'] = all_nodes_size
    data['valueDimension'] = value_dimension
    data['weight'] = rand.random()
    data['load'] = common_tools.gen_vector(value_dimension, rand)
    
    shape_func_nodes_num = rand.randint(1, all_nodes_size // 2)
    test_shape_function = common_tools.gen_matrix((1, shape_func_nodes_num), rand)
    nodes_assemble_indes = common_tools.gen_nodes_indes(shape_func_nodes_num, 0, all_nodes_size, rand)
    
    data['testShapeFunction'] = test_shape_function
    data['assemblyIndes'] = nodes_assemble_indes
    
    whole_test_shape_function_vector = common_tools.shape_func_to_whole_vector(test_shape_function, nodes_assemble_indes, all_nodes_size)
    data['mainVectorDifference'] = assemble_general_force(data['weight'], data['load'], whole_test_shape_function_vector)
    
    return data
Example #9
0
def gen_test_data(value_dimension):
    data = {}
    data['allNodesSize'] = all_nodes_size
    data['valueDimension'] = value_dimension
    data['weight'] = rand.random()
    data['load'] = common_tools.gen_vector(value_dimension, rand)

    shape_func_nodes_num = rand.randint(1, all_nodes_size // 2)
    test_shape_function = common_tools.gen_matrix((1, shape_func_nodes_num),
                                                  rand)
    nodes_assemble_indes = common_tools.gen_nodes_indes(
        shape_func_nodes_num, 0, all_nodes_size, rand)

    data['testShapeFunction'] = test_shape_function
    data['assemblyIndes'] = nodes_assemble_indes

    whole_test_shape_function_vector = common_tools.shape_func_to_whole_vector(
        test_shape_function, nodes_assemble_indes, all_nodes_size)
    data['mainVectorDifference'] = assemble_general_force(
        data['weight'], data['load'], whole_test_shape_function_vector)

    return data
Example #10
0
def to_whole_shape_function(shape_function, nodes_assemble_indes):
    return common_tools.shape_func_to_whole_vector(
        shape_function, nodes_assemble_indes,
        all_nodes_size + all_lagrangle_nodes_size)
def to_whole_shape_function(shape_function, nodes_assemble_indes):
    return common_tools.shape_func_to_whole_vector(shape_function, nodes_assemble_indes, all_nodes_size + all_lagrangle_nodes_size)