The fluid emission mapping doesn’t work the way you think. Your expression is evaluated outside of the inner loop that walks the faces of the mesh, emitting fluid. The map connections on the fluid emitter expect a 2d texture and internal to the emitter call they set uvs and evaluate the 2d texture at those uvs… you can’t insert an expression inside that loop.
However you can instead map the emission using a fluidTexture2D. If desired you can use emitters to emit into this texture or use its attributes like fuel to do things like burn propagation.
Or instead if you want full expression control you can make the fluidTexture2d just a grid that you set values on from your expression (solver = None, velocity = Off).
Your expression would need to walk the 2d fluid array setting values using setFluidAttr.
Or perhaps simpler might be to directly set voxel values on the 3D fluid and not even have an emitter. You can get the location of a fluid voxel at a 3D point in space using fluidVoxelInfo, then use setFluidAttr with the resulting voxel id.
Yet another method might be to use particles… you can emit particles from a surface, then emit from the particles into the fluid. One could then use a particle expression to kill particles where you don’t want any emission.