Have you considered retopologizing the top part of your object?
If you align the top loops in a perpendicular direction they can perfectly match the remaining half circle border loop and maintain a quad based edge flow.
Edit A little more detail:
Place the 3D Cursor correctly aligned at the right depth in relation to the face to be filled.
Erase you top existing faces, select the remaining top curved edgeloop, extrude it with E but cancel it immediately Right-Click.
Afterwards, with with 3D cursor already placed as described above, press the . (Period key) to transform relative to the 3D Cursor position, scale the edges in the Y axis only with S > Y > 0 (zero). That should flatten it directly and the right position.
Add one extra edgeloop along the height of the object, connect the two first segments of the bottom circle with the loop, and then you can fill the whole height of the object at once with the Bridge operator by selecting only the top and bottom edge loops (not the two large vertical bridging edges).
All done