Sorry for the late reply. Maybe you are still interested.
There is indeed a problem with the 'rms' trait of SineGenerator which is the (peak) amplitude, not RMS. This mean if this is set to 1, you get an RMS of 0.707.
Therefore, the maximum of the map is then 3dB less than what you would expect. You can check this using the modified code from the 'getting started' example below.
Another point that you have to be careful about is the FFT leakage. Depending on the sine frequency and the window setting, energy from one frequency will leak into neighbor frequency bin. In order to recover the correct energy you have to sum all those bins together. If you don't do so, you may get up to around 3-4 dB less in one single frequency bin.
Here is the code for the example. You will get 91dB = 0.7 Pa in 1 m distance. The result before computing the level is indeed 0.7^2 Pa^2. If you want the underwater decibel you have to redefine the L_p function with the proper reference value.
Cheers, Ennes