return u(X, Y)/10
    else:
        return numpy.array([0.0, 0.0])

def g(x):
    X = 10 * x[0]
    Y = 10 * x[1]
    return not(domain.contains(geometry.Point(numpy.array([X, Y]))))

fig = pyplot.figure()
ax1 = fig.add_subplot(1,2,1)
ax1.set_aspect('equal')
ax2 = fig.add_subplot(1,2,2)
ax2.set_aspect('equal')

robert_visualize_transformation.visualize_transformation(ax1, \
    lambda x: calc_f(u1, x), g)

# u = Function(V)
u2 = calc_solution(Pi2)
print u2
print u2(0.5, 0.5)

print calc_f(u2, numpy.array([0.5, 0.5]))

robert_visualize_transformation.visualize_transformation(ax2, \
    lambda x: calc_f(u2, x), g)

pyplot.show()

# plot(u, interactive=True)
fig = pyplot.figure()
ax1 = fig.add_subplot(1,3,1)
ax1.set_aspect('equal')
ax2 = fig.add_subplot(1,3,2)
ax2.set_aspect('equal')
ax3 = fig.add_subplot(1,3,3)
ax3.set_aspect('equal')

# robert_visualize_transformation.visualize_transformation(ax1, \
#     lambda x: calc_f(u1, x), g)

# u = Function(V)
# u2 = calc_solution(Pi2)
# print u2
# print u2(0.5, 0.5)

# print calc_f(u2, numpy.array([0.5, 0.5]))

# robert_visualize_transformation.visualize_transformation(ax2, \
#    lambda x: calc_f(u2, x), g)

u3 = calc_solution(Pi3)

robert_visualize_transformation.visualize_transformation(ax3, \
    lambda x: calc_f(u3, x), g)

pyplot.show()

# plot(u, interactive=True)

psi8a = Ic + (det(grad(u)) - 1)*(det(grad(u)) - 1)
psi8b = Ic + dot(grad(u)*zvec, xvec)**2
#Pi8 = psi8a*dx(1) + psi8b*dx(2)
#Pi8 = psi8a*dx_new(1) + psi8b*dx_new(2)
#Pi8 = Ic*dx_new(1) + Ic*dx_new(2)
#Pi8 = weight1*psi8a*dx + weight2*psi8b*dx
Pi8 = weight1*psi8a*dx + weight2*psi8b*dx

Pi = Pi8

F = derivative(Pi, u, v)
J = derivative(F, u, du)

solve(F == 0, u, bc, J=J)

# plot(u, mode = "displacement", interactive=True)

fig = pyplot.figure()
ax1 = fig.add_subplot(1,3,1)
ax1.set_aspect('equal')

def try_evaluate(point):
    try:
        u(point[0], point[1])
    except:
        return True
    return False

robert_visualize_transformation.visualize_transformation(ax1, u, try_evaluate)
pyplot.show()