Double Gyroid channels

i am trying to model the two channels enclosed by a gyroid surface.
It should look something like this

I created the gyroid surface with millipede isosurface plugin but i dont know how to extract the skeletal geometry.
S_Gyroid (x,y,z) = sin (by)*cos(cz)+sin(cz)*cos(ax)+sin(ax)*cos(by)
in theory one channel is defined by S_Gyroid > t the other one by S_Gyroid <-t.
How can i implement that in my code?
I tried to use the cull pattern in combination with the larger than tool, but i didnt get any usable results.
Can someone please help? (15.8 KB)

I tried to extract the channels with boolean operators like “mesh difference”, but the result is a single mesh (->body in the picture).

However i want to have the both channels as seperate bodys. I also tried caping the holes in order to fill up the gyroid channel, but it didnt work.
Does anyone has an idea how this can be done? (18.8 KB)