Forum Message

 

 

We have moved the forum to https://forum.ngsolve.org . This is an archived version of the topics until 05/05/23. All the topics were moved to the new forum and conversations can be continued there. This forum is just kept as legacy to not invalidate old links. If you want to continue a conversation just look for the topic in the new forum.

Notice

The forum is in read only mode.

How to define transpose of a gridfunction

More
3 years 8 months ago #3075 by dong
After solving the Stokes equation, I got the approximated solution u_h. Now I want to create a matrix
[tex]K=\frac{u_hu_h^T}{|u_h|^2}[/tex]
where $u_h^T$ is the transpose of $u_h$ for another problem.
I did as follows. Please see the attached file.
Code:
uh=SolveStokes() print("uh",uh) I = Id(2) K = uh*uh.trans()/(uh*uh) Z = I + K
Then I got an error.
Code:
uh gridfunction 'gfu.1' on space 'CompoundFESpaces' nested = 0 --------------------------------------------------------------------------- NgException Traceback (most recent call last) <ipython-input-5-34ba77e77d8f> in <module> 95 96 I = Id(2) ---> 97 K = uh*uh.trans()/(uh*uh) 98 Z = I + K NgException: Transpose of non-matrix called
Could you please tell me how to define the transpose of the grid function $u_h$ in this case?
Thank you so much.
Attachments:
More
3 years 8 months ago #3076 by joachim
You have to reshape your CoefficientFunction to a matrix::
Code:
uhmat = CoefficientFunction( uh, dims=(3,1) )

Joachim
More
3 years 8 months ago #3078 by dong
I modified the code like this as you suggested.
Code:
uh=SolveStokes() print("uh",uh) uhmat = CoefficientFunction( uh, dims=(3,1) ) I = Id(2) K = uhmat*uhmat.trans()/(uh*uh) Z = I + K
But I got another error.
Code:
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-13-01c2ddca7315> in <module> 96 97 I = Id(2) ---> 98 K = uhmat*uhmat.trans()/(uh*uh) 99 Z = I + K TypeError: __call__(): incompatible function arguments. The following argument types are supported: 1. (self: ngsolve.fem.CoefficientFunction, mip: ngsolve.fem.BaseMappedIntegrationPoint) -> object 2. (self: ngsolve.fem.CoefficientFunction, arg0: numpy.ndarray[ngsolve.fem.MeshPoint]) -> array Invoked with: <ngsolve.fem.CoefficientFunction object at 0x00000000080CA990>

Could you please tell me how to fix this?
Thank you so much.
More
3 years 8 months ago #3079 by joachim
it is just trans without brackets ()
More
3 years 8 months ago #3080 by dong
It worked well. Thank you so much for your clarification.
Time to create page: 0.167 seconds