It seems reasonable that the mesh needs to be very fine only near the boundary, where the initial datum is discontinuous. You may try the option MeshRefinementFunction.
The purpose to make the input exact instead of floating-point is good. In your case it could be done more easily by giving exact parameters at the start. Instead of floating point values, as in
\[Eta] = 5.;
\[Kappa] = .75;
Tmax = 5.;
I would suggest
\[Eta] = 5;
\[Kappa] = 3/4;
Tmax = 5;
This way there is no need for Rationalize. Even more: with your original floating-point \[Eta] = 5. the triangle definition
\[CapitalOmega] =
Polygon[Rationalize[{{0, 0}, {\[Eta],
0}, {\[Eta]/2, (\[Eta] Sqrt[3])/2}},
0]]
actually decreases the precision, because \[Eta] Sqrt[3])/2 becomes first floating-point, and then Rationalize freezes the approximation instead of the exact value.