Thread Previous • Date Previous • Date Next • Thread Next |
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 << ethe 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 asFunction 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 ande[0] = (a, b) e[1] = (c, d) e[0][0] = a e[0][1] = b e[1][0] = c e[1][1] = dtherefore 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
Thread Previous • Date Previous • Date Next • Thread Next |