Open colinjcotter opened 6 years ago
Can you be a bit more specific with the error message? Is it failing at the UFL level? It might have something to do (as you said) with the surface terms the preconditioner introduces:
Kform = gammar('+') * ufl.jump(sigma, n=n) * ufl.dS
I need to look at the current complex
branch and documentation to see how this should be rewritten. Would inner(gammar('+'), jump(sigma, n=n))*dS
work? Or do I need to always conj
the second argument?
Inner inserts a conj, dot and * do not
Sent from my iPhone
On Sep 4, 2018, at 10:38 AM, Thomas H. Gibson notifications@github.com wrote:
Can you be a bit more specific with the error message? Is it failing at the UFL level? It might have something to do (as you said) with the surface terms the preconditioner introduces:
Kform = gammar('+') ufl.jump(sigma, n=n) ufl.dS I need to look at the current complex branch and documentation to see how this should be rewritten. Would inner(gammar('+'), jump(sigma, n=n))*dS work? Or do I need to always conj the second argument?
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.
I pushed a fix for the forms to the complex-hybridised branch. Now I get compile errors from Slate:
/home/cjc1/firedrake-complex/firedrake/.cache/pyop2/f11650969a16677cd0d7edbd038edf17_p18751.cpp:67:0: warning: ignoring #pragma coffee expression [-Wunknown-pragmas]
^ /home/cjc1/firedrake-complex/firedrake/.cache/pyop2/f11650969a16677cd0d7edbd038edf17_p18751.cpp:115:0: warning: ignoring #pragma coffee expression [-Wunknown-pragmas]
^ /home/cjc1/firedrake-complex/firedrake/.cache/pyop2/f11650969a16677cd0d7edbd038edf17_p18751.cpp:169:0: warning: ignoring #pragma coffee expression [-Wunknown-pragmas]
^ /home/cjc1/firedrake-complex/firedrake/.cache/pyop2/f11650969a16677cd0d7edbd038edf17_p18751.cpp:204:0: warning: ignoring #pragma coffee expression [-Wunknown-pragmas]
^ /home/cjc1/firedrake-complex/firedrake/.cache/pyop2/f11650969a16677cd0d7edbd038edf17_p18751.cpp:287:0: warning: ignoring #pragma coffee expression [-Wunknown-pragmas]
^
/home/cjc1/firedrake-complex/firedrake/.cache/pyop2/f11650969a16677cd0d7edbd038edf17_p18751.cpp:13:130: error:
expected ‘,’ or ‘...’ before ‘’ token
static inline void subkernel0_cell_to_00_cell_integralotherwise (const Eigen::MatrixBase
^
/home/cjc1/firedrake-complex/firedrake/.cache/pyop2/f11650969a16677cd0d7edbd038edf17_p18751.cpp: In function ‘v
oid subkernel0_cell_to_00_cell_integral_otherwise(const Eigen::MatrixBase
Looks like something funny is happening in the compiler on the complex branch. Can you send me the files:
/home/cjc1/firedrake-complex/firedrake/.cache/pyop2/f11650969a16677cd0d7edbd038edf17_p18751.cpp
,/home/cjc1/firedrake-complex/firedrake/.cache/pyop2/f11650969a16677cd0d7edbd038edf17_p18751.log
, and/home/cjc1/firedrake-complex/firedrake/.cache/pyop2/f11650969a16677cd0d7edbd038edf17_p18751.err
?Hi Thomas,
Probably for us to make progress on this you will need to build a complex version of Firedrake - please can you do this? You can do this in a separate directory and different virtual environment. The trick is to get the install script from the complex branch, and then use the invocation in the Jenkins file on that branch, then finally change to the complex branch after installation.
all the best
--Colin
From: Thomas H. Gibson notifications@github.com Sent: 05 September 2018 12:37:20 To: firedrakeproject/firedrake Cc: Cotter, Colin J; Author Subject: Re: [firedrakeproject/firedrake] Solving a PDE in complex branch using hybridisation PC fails (#1279)
Looks like something funny is happening in the compiler on the complex branch. Can you send me the files:
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/firedrakeproject/firedrake/issues/1279#issuecomment-418699042, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AF0q8shN5wpLSp00-z8z_UlwLixwBrh4ks5uX7dwgaJpZM4WY6ng.
My guess just by looking at the error message: SLATE triggers code to be compiled as C++, but C++ does not understand double complex
, even though C does. See: https://en.wikipedia.org/wiki/Compatibility_of_C_and_C++ and grep for "Complex arithmetic."
The hybridisation preconditioner produces an error message on the complex branch
I think this is because the surface terms in the PC need to be changed to use inner instead of *.