Hi,

I am trying to integrate a coefficient function over a surface (labeled as “observationplane”):

P1=0

P2=1

Integrate(cos(P1*ngsolve.atan(y/z))*cos(P2*ngsolve.atan(y/z)),mesh,BND,definedon=mesh.Boundaries(“observationplane”))

It should be zero, however it returns a non-zero value 2.0002296550916974.

The attached code produces this result.

https://ngsolve.org/media/kunena/attachments/921/test4.py

Best,

Shixu

Attachment: test4.py

Hi Shixu,

you need to use the arctan2 to have the correct angle for all 4 quadrants (atan is only defined on 2).

`ngsolve.atan2(y,z)`

Best Christopher

Thank you Christopher. The use of atan2 gives the following:

Traceback (most recent call last):

File “”, line 26, in

netgen.libngpy._meshing.NgException: atan2 not available for type N5ngstd4SIMDIdLi4EEE

Best,

Shixu

Thanks again Christopher. I guess an alternative way would be

ngsolve.cos(P1*IfPos(y,ngsolve.atan(z/y),ngsolve.atan(z/y)+pi))

this atan2 problem was fixed a few days ago, install the latest nightly version,

Joachim