← Back to team overview

dolfin team mailing list archive

[Question #113926]: Problem with variational derivative

 

New question #113926 on DOLFIN:
https://answers.launchpad.net/dolfin/+question/113926

I am solving a coupled problem: Nonlinear advection-diffusion and hyperelasticity

#Function spaces are:
Q = FunctionSpace(mesh, "CG", 1);
V = VectorFunctionSpace(mesh, "CG", 1);
U = VectorFunctionSpace(mesh, "CG", 1);

#Functions for advection-diff
u1c  = Function(Q)          #Solution from current time step
u10  = Function(Q)          #Initial condition

#Functions for hyperelasticity
v2   = TestFunction(U)       # Test function
du2  = TrialFunction(U)      # Incremental displacement
u2c  = Function(U)           # Displacement in current time step

#Concentration field influencing the stress. Strain energy function psi(C), where C is the right Cauchy-Green tensor.
psi = ((u10/u1c)**1.333333)*const1*(tr(C))**2 - ((u10/u1c)**0.666666)*const2*tr(C) + ((u1c/u10)**1.333333)*const3*tr(C*C) 
P = 2*((u1c/u10)**0.333333)*F*diff(psi, C) #Stress

#Variational form
L2 = inner(P, grad(v2))*dx(1) - inner(B, v2)*dx(1) - inner(T2, v2)*ds(1)
a2 = derivative(L2, u2c, du2)
# Solve nonlinear variational problem
problem = VariationalProblem(a2, L2, [bclm, bcrm], 
                             cell_domains=sub_domains,
                             exterior_facet_domains=boundary,
                             nonlinear=True)


This code takes inordinately long to form the matrices, but appears to converge quadratically to the correct solution. If instead I move the multiplication by (u10/u1c) from  
P = 2*((u1c/u10)**0.333333)*F*diff(psi, C) to the previous line

psi = ((u10/u1c))*const1*(tr(C))**2 - ((u10/u1c)**0.333333)*const2*tr(C) + ((u1c/u10))*const3*tr(C*C) 
P = 2*F*diff(psi, C) #Stress

the matrices are assembled faster by a factor of 30 or 40, but the starting residual is different and I lose quadratic convergence of the residual.

Is there something obviously wrong? It is unexpected that rewriting the stress without changing its mathematical form causes such a difference in the assembly and solution procedures.

 ----Krishna



-- 
You received this question notification because you are a member of
DOLFIN Team, which is an answer contact for DOLFIN.



Follow ups