← Back to team overview

dolfin team mailing list archive

[Fwd: Re: [FEniCS-users] [Fwd: Re: tensor function]]

 

i suppose the problem lies not in VTKFile.cpp.

you consider a tensor function to have a rank >= 2,
but for my tensor function the rank returned by e.g.

e.function_space().element().value_rank()

is 1. So it is rather a vector with 4 components having rank 1.
possibly value_rank() in the FiniteElement class should return 2 even for a 2d tensor function, then your code in VTKFile is fine, but i didn't look into the FiniteElement classes.

patrick


-------- Original Message --------
Subject: Re: [FEniCS-users] [Fwd: Re:  tensor function]
Date: Wed, 30 Sep 2009 11:30:45 +0200
From: Patrick Riesen <priesen@xxxxxxxxxxxxxxx>
CC: fenics <fenics-users@xxxxxxxxxx>
References: <4AC31DB1.2040001@xxxxxxxxxxxxxxx> <4AC320F4.1000600@xxxxxxxxxxxxxxx> <4AC32181.8050202@xxxxxxxxx>

seems that the tensor function for a 2d problem doesn't get to the
output structure for a tensor function but to that for a vector function
because it only has rank = 1. the write out for tensor is only invoked
for a (3x3) tensor with rank = 2.

Garth N. Wells wrote:


Patrick Riesen wrote:
Hello,

I don't know if this is a problem (dolfin0.9.2):
When i was writing the TensorFunction e to a vtk-file after a solve
by just using

file << e

the results i got were absolutely nonsense. I got three components, but none of them made any sense. This is why i was thinking i'm doing something completely wrong in my equations/code,


VTK output of tensor functions is untested. I would be very surprised if it did work. Dig around in VTKFile.cpp to see if you can find the problem.

Garth






But if i first separate all components and write them to separate files as
     Function e11 = e[0];
     Function e12 = e[1];
     Function e21 = e[2];
     Function e22 = e[3];

     fileE11 << e11;
     fileE12 << e12;
     fileE21 << e21;
     fileE22 << e22;

the solutions look reasonable (uff!..) and e12 and e21 are the same.

regards,
patrick


Patrick Riesen wrote:
sorry, something went wrong, this would be the message:

-------- Original Message --------
Subject: Re: [FEniCS-users] tensor function
Date: Wed, 30 Sep 2009 10:52:02 +0200
From: Patrick Riesen <priesen@xxxxxxxxxxxxxxx>
To: Anders Logg <logg@xxxxxxxxx>
References: <4AC0A8D5.6040207@xxxxxxxxxxxxxxx> <20090928122033.GH2528@olorin> <4AC0AD56.50608@xxxxxxxxxxxxxxx> <20090928140134.GA24982@olorin> <4AC0C346.7020309@xxxxxxxxxxxxxxx>

or maybe not..

i can not do

Function e11 = e[0][0];

i get

error: no match for 'operator[]' in
'dolfin::Function::operator[](dolfin::uint)(0u)[0]'


but i can get components doing

e11 = e[0];
e12 = e[1];
e21 = e[2];
e22 = e[3];


i suppose for dolfin 0.9.3 it is the case as described below and for
dolfin 0.9.2 the case as above therefore ?
(which is what i am still using currently)

greetings,
patrick

Patrick Riesen wrote:
this helped to sort things out, thanks again.
patrick

Anders Logg wrote:
On Mon, Sep 28, 2009 at 02:34:30PM +0200, Patrick Riesen wrote:
Hi,

thans for the quick response,

therefore when V is the function space of the (e, v, p) element and

e[0] = (a, b)
e[1] = (c, d)
e[0][0] = a
e[0][1] = b
e[1][0] = c
e[1][1] = d
therefore doing

fs = new SubSpace(V,0,0)

corresponds to the subspace for the two components (a, b) of the
element  and not just for a, which then would be SubSpace(V,0,0,0) ?
Yes.

--
Anders
_______________________________________________
FEniCS-users mailing list
FEniCS-users@xxxxxxxxxx
http://fenics.org/mailman/listinfo/fenics-users

_______________________________________________
FEniCS-users mailing list
FEniCS-users@xxxxxxxxxx
http://fenics.org/mailman/listinfo/fenics-users

_______________________________________________
FEniCS-users mailing list
FEniCS-users@xxxxxxxxxx
http://fenics.org/mailman/listinfo/fenics-users



_______________________________________________
FEniCS-users mailing list
FEniCS-users@xxxxxxxxxx
http://fenics.org/mailman/listinfo/fenics-users


Follow ups