def gen_balance_exps_codes():
    m = B.transpose().dot(consLaw).dot(B)
    exp_m=mat_convert_to_exps(m);
    print "Start main matrix exp-----------------------------------------"
    print gen_array_code(exp_m)
    print "End main matrix exp--------------------------------------------"
    v=PHI.dot(volumnForce.transpose())
    exp_v=vec_convert_to_exps(v)
    print "\nStart main vector exp---------------------------------------"
    print gen_array_code(exp_v)
    print "End main vector exp---------------------------------------------"
def gen_dirichlet_exps_codes():
    m=PHI.dot(np.array([[penalty,0],[0,penalty]])).dot(PHI.transpose())
    exps_m=mat_convert_to_exps(m)
    print "Start main matrix exp-----------------------------------------"
    print gen_array_code(exps_m)
    print "End main matrix exp--------------------------------------------"
    v=PHI.dot(np.array([[penalty,0],[0,penalty]])).dot(volumnForce.transpose())
    exp_v=vec_convert_to_exps(v)
    print "\nStart main vector exp---------------------------------------"
    print gen_array_code(exp_v)
    print "End main vector exp---------------------------------------------"
   
            
        
def gen_dirichlet_exps_codes():
    m = -Phi.dot(N.transpose())
    v = -N.dot(u)
    size = 2 * (nodes_size + lag_size)
    exp_m = np.zeros((size, size), dtype=np.double)
    exp_v = np.zeros((size,), dtype=np.double)
    for j in xrange(m.shape[1]):
        exp_v[col_ids[j]] = v[j]
        for i in xrange(m.shape[0]):
            exp_m[row_ids[i], col_ids[j]] = m[i, j]
            exp_m[col_ids[j], row_ids[i]] = m[i, j]
    print "Start main matrix exp-----------------------------------------"
    print gen_array_code(exp_m)
    print "End main matrix exp--------------------------------------------"
    print "\nStart main vector exp---------------------------------------"
    print gen_array_code(exp_v)
    print "End main vector exp----------------------------"
row_ids[0::2] = nodesIds[:3] * 2
row_ids[1::2] = nodesIds[:3] * 2 + 1
col_ids[0::2] = nodesIds[3:] * 2
col_ids[1::2] = nodesIds[3:] * 2 + 1

nodes_size = 6
lag_size = 4

if __name__ == '__main__':
# def gen_dirichlet_exps_codes():
    m = -Phi.dot(N.transpose())
    v = -N.dot(u)
    size = 2 * (nodes_size + lag_size)
    exp_m = np.zeros((size, size), dtype=np.double)
    exp_v = np.zeros((size,), dtype=np.double)
    for j in xrange(m.shape[1]):
        exp_v[col_ids[j]] = v[j]
        for i in xrange(m.shape[0]):
            exp_m[row_ids[i], col_ids[j]] = m[i, j]
            exp_m[col_ids[j], row_ids[i]] = m[i, j]
    print "Start main matrix exp-----------------------------------------"
    print gen_array_code(exp_m)
    print "End main matrix exp--------------------------------------------"
    print "\nStart main vector exp---------------------------------------"
    print gen_array_code(exp_v)
    print "End main vector exp----------------------------"

# if __name__=="__main__":
#    gen_dirichlet_exps_codes()