From #openttdcoop wiki
A formula to calculate the required amount of tunnels or bridges required to cross terrain, without disrupting the flow of the Mainline. It can be queried via IRC.
or in a simpler form:
"Tunnels Needed = TunnelLength / (TrainLength+SignalGap)"
Tunnel Length is the average span ( a good value would be the tiles between split and join)
Train Length is the minimum TL expected on that line
Signal Gap is the same as the setting in the 'Signal GUI' --(This defaults to 2 for openttdcoop and is fixed as such in the bot calculations)
Of worthy note;
<@Mark_> you shouldnt use pbs or presignalling at tunnel entrances <@Mark_> just regular signals <@Mark_> YAPF will do the rest
On IRC you can use a command to calculate this for you using the following:
!tunnels <TrainLength> <TunnelLength>
You can also see the calculations step by step by using Narc's Page
for reference, the bot command is:
"math calc ceil(max( 2, $2 / ( $1 + 2 )))"