Hello!

I am trying to define UFL to use in the variational formulation.

PM = FunctionSpace(mesh, ‘DG’, 0)

TM = TensorFunctionSpace(mesh, ‘DG’, 0)

u = Function(U)

phi0 = Function(PM)

k0 = Function™

def strain(u):

return sym(grad(u))

def vol_strain(u):

return tr(strain(u))

def perm_newton(vol_strain(u),phi0,k0):

perm_min = 1e-20

perm_min_tensor = Constant(((perm_min, 0.), (0., perm_min)))

k = k0*pow(1.0+vs/phi0,3.0)/(1.0+vs)

return conditional(ge(k,perm_min_tensor),k,perm_min_tensor)

The idea is to use this perm_newton in the variational formulation to solve the non-linear problem. Since pow(1.0+vs/phi0,3.0)/(1.0+vs) can be negative, perm_min_tensor is built to prevent perm_newton(vol_strain(u),phi0,k0) becomes less than zero. However, ‘ge(a,b)’ requires ‘ufl.log.UFLException: Expecting scalar arguments.’. Does anyone have any recommendations?

Thank you!

Meen