I am trying to solve the forced-convection problem in a 2D spherical annulus. The velocity components are specified in the script below as “w_r” and “w_theta” and are known analytically. I need to find the partial derivatives of these components with respect to the “x” and “y” coordinates, so as to set up my variational formulation.
However, when I attempt to find the x-derivative using “w_r.dx(0)”, I get the following error
ufl.log.UFLException: Cannot determine geometric dimension from expression.
The code snippet is given below. Could you please help?
from dolfin import * from mshr import * import math import numpy as np Re = 10. Ri = 1. num_segments=100 domain = Circle(Point(0., 0.), Re, num_segments) - Circle(Point(0., 0.), Ri, num_segments) mesh_resolution = 128 mesh = generate_mesh(domain, mesh_resolution) V = FunctionSpace(mesh, "CG", 2) x = SpatialCoordinate(mesh) r = Expression("sqrt(x*x+x*x)", degree=2) theta = Expression("atan2(x,x)", degree=2) ## Defining analytically known velocity components for creeping flow w_r = Expression("cos(theta)*(1.-(3./(2.*r))+(1./(2.*pow(r,3))))",degree=2,r=r,theta=theta) w_th = Expression("-sin(theta)*(1.-(3./(4.*r))-(1./(4.*pow(r,3))))",degree=2,r=r,theta=theta) a4 = w_r.dx(0) # trying to compute the x-derivative of w_r, # results in error mentioned above