On 12/17/20 8:56 PM, Corbin Foucart wrote:
I have a problem with direction-dependent diffusion (that is, the diffusivity
\nu depends on the derivative direction but not spatial location) such that
the horizontal diffusivity and vertical diffusivity are different, leading to
a Laplacian as follows:
I am discretizing the problem with a mixed method, which defines the auxiliary
variable L = ∇u such that
So in my weak form, I end up with terms like the following:
(please excuse the abuse of index notation with repeated j three times).
phi_ij here refers to each scalar basis function in the tensor-valued finite
element space.
It seems using the deal.ii FEValuesExtractors, I can access the divergence of
each tensor-valued basis function, but I need to multiply each term in the
divergence with the appropriate value of \nu by component.
I suppose I could ask for the gradient of each phi and do the sum manually,but
I was wondering if there's a way to do it directly. Is there a standard way of
doing this in deal.ii?
You (hopefully) don't ever need to take the divergence of nu*(grad u) but
instead will want to integrate by parts. This is going to give you the
bilinear form
(nabla phi_i, nu nabla phi_j)
When you assemble this, you typically do
fe_values.shape_grad(i,q) * fe_values.shape_grad(j,q)
where both objects are of type Tensor<1,dim> (i.e., vectors). In your case,
you want to do
SymmetricTensor<2,dim> nu; // fill with whatever values you need
and then do
fe_values.shape_grad(i,q) * nu * fe_values.shape_grad(j,q)
step-20 does something similar (though for a different bilinear form).
Best
W.
--
------------------------------------------------------------------------
Wolfgang Bangerth email: [email protected]
www: http://www.math.colostate.edu/~bangerth/
--
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see
https://groups.google.com/d/forum/dealii?hl=en
---
You received this message because you are subscribed to the Google Groups "deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/dealii/20b512ca-ea6a-cab4-7efc-556755e29b60%40colostate.edu.