Re: [firedrake] More questions
I think you mean V = TensorFun... D = Function(V) D.interpolate(...) :) On 22 September 2015 at 20:07, Justin Chang <jychang48@gmail.com> wrote:
Oh okay I did not realize there was a TensorFunctionSpace(). Though if this is the way to go:
eps = 0.001 D = TensorFunctionSpace(mesh,"CG",1)
D.interpolate(Expression(("x[1]*x[1]+eps*x[0]*x[0]","-(1-eps)*x[0]*x[1]","-(1-eps)*x[0]*x[1]",""x[0]*x[0]+eps*x[1]*x[1]",eps=eps)))
I get an error saying TensorFunctionSpace object has no attribute interpolate
On Tue, Sep 22, 2015 at 12:55 PM, Andrew McRae <A.T.T.McRae@bath.ac.uk> wrote:
5) For an anisotropic diffusion problem, I would like to use this
diffusivity tensor:
D(x) = [y^2+eps*x^2, -(1-eps)*x*y; -(1-eps)*x*y, eps*y^2+x^2]
where eps is a user-defined scalar, and x and y correspond to the x and y coordinates of the cell. How would I express that?
How does this behave within a cell? Is it constant on each cell? Should it vary linearly/quadratically/...?
Presumably just make a TensorFunctionSpace of the right type, and interpolate an Expression in the usual way. I *think* you need an Expression of length 4, as if the tensor was flattened.
Thanks, Justin
On Tue, Sep 22, 2015 at 12:18 PM, Andrew McRae <A.T.T.McRae@bath.ac.uk> wrote:
4) Do you guys support Hexahedron elements? When I look through the
documentation for UnitCubeMesh and BoxMesh, I see no option for non-tetrahedron elements.
We support semi-structured hexahedral meshes, though not *fully* unstructured. One has to go via the ExtrudedMesh functionality to get these.
For example, to quote Henrik in a different mailing list thread,
*meshbase = RectangleMesh(Nx, Ny, Lx, Ly, quadrilateral=True) mesh = ExtrudedMesh(meshbase, Nz, Delta_z)*
Or you can supply your own base quadrilateral mesh: m = Mesh("quadmesh.msh") mesh = ExtrudedMesh(m, ...)
For element families supported, see http://femtable.org/ to start with.
If your cells aren't perfect cuboids then some approximations are made in the quadrature calculations; if this seems to be hurting you badly then I can give further instructions.
_______________________________________________ firedrake mailing list firedrake@imperial.ac.uk https://mailman.ic.ac.uk/mailman/listinfo/firedrake
_______________________________________________ firedrake mailing list firedrake@imperial.ac.uk https://mailman.ic.ac.uk/mailman/listinfo/firedrake
Alright got it, thanks Andrew :) On Tue, Sep 22, 2015 at 1:11 PM, Andrew McRae <A.T.T.McRae@bath.ac.uk> wrote:
I think you mean
V = TensorFun... D = Function(V) D.interpolate(...)
:)
On 22 September 2015 at 20:07, Justin Chang <jychang48@gmail.com> wrote:
Oh okay I did not realize there was a TensorFunctionSpace(). Though if this is the way to go:
eps = 0.001 D = TensorFunctionSpace(mesh,"CG",1)
D.interpolate(Expression(("x[1]*x[1]+eps*x[0]*x[0]","-(1-eps)*x[0]*x[1]","-(1-eps)*x[0]*x[1]",""x[0]*x[0]+eps*x[1]*x[1]",eps=eps)))
I get an error saying TensorFunctionSpace object has no attribute interpolate
On Tue, Sep 22, 2015 at 12:55 PM, Andrew McRae <A.T.T.McRae@bath.ac.uk> wrote:
5) For an anisotropic diffusion problem, I would like to use this
diffusivity tensor:
D(x) = [y^2+eps*x^2, -(1-eps)*x*y; -(1-eps)*x*y, eps*y^2+x^2]
where eps is a user-defined scalar, and x and y correspond to the x and y coordinates of the cell. How would I express that?
How does this behave within a cell? Is it constant on each cell? Should it vary linearly/quadratically/...?
Presumably just make a TensorFunctionSpace of the right type, and interpolate an Expression in the usual way. I *think* you need an Expression of length 4, as if the tensor was flattened.
Thanks, Justin
On Tue, Sep 22, 2015 at 12:18 PM, Andrew McRae <A.T.T.McRae@bath.ac.uk> wrote:
4) Do you guys support Hexahedron elements? When I look through the
documentation for UnitCubeMesh and BoxMesh, I see no option for non-tetrahedron elements.
We support semi-structured hexahedral meshes, though not *fully* unstructured. One has to go via the ExtrudedMesh functionality to get these.
For example, to quote Henrik in a different mailing list thread,
*meshbase = RectangleMesh(Nx, Ny, Lx, Ly, quadrilateral=True) mesh = ExtrudedMesh(meshbase, Nz, Delta_z)*
Or you can supply your own base quadrilateral mesh: m = Mesh("quadmesh.msh") mesh = ExtrudedMesh(m, ...)
For element families supported, see http://femtable.org/ to start with.
If your cells aren't perfect cuboids then some approximations are made in the quadrature calculations; if this seems to be hurting you badly then I can give further instructions.
_______________________________________________ firedrake mailing list firedrake@imperial.ac.uk https://mailman.ic.ac.uk/mailman/listinfo/firedrake
_______________________________________________ firedrake mailing list firedrake@imperial.ac.uk https://mailman.ic.ac.uk/mailman/listinfo/firedrake
_______________________________________________ firedrake mailing list firedrake@imperial.ac.uk https://mailman.ic.ac.uk/mailman/listinfo/firedrake
participants (2)
- 
                
                Andrew McRae
- 
                
                Justin Chang