As mentioned here, using blocks compared to functions may have different pros (I did not test those different points). But as it is mentioned by M.Sjölund (Linköping University), using functions (and thus function syntax) is easier as you don't need to declare the block and to connect the equations manually:
h = Func_similarToSpecificEnthalpy_PT( P=P, T=T, mode=mode, fluid=fluid);
Indeed, if you try calling a block as if it was a function it will run into a translation error:
Sjölund mentioned a discussion regarding Modelica's Specifications, where a block could be called as a function but it seems that it did not change in the end...
Different tests have been made regarding the syntax itself Test_BlockVsFunction.mo if interested. My first conclusion as seen above is that we would lose clarity with blocks but to be discussed (and more tests can be done with ThermoSysPro itself to see if it changes anything regarding performance).
Tests have been made to redeclare packages inside blocks: it works (it does not with functions).
As it could be usefull for #32, a first test has been done on branch 89BlockVsFunction (commit ff360b45).
Modifications have been done automatically (see python code at root of the said branch) in the TSP code so it is to be verified. Binding equations have been used as mentioned in the previous comment.
On the very few models I tried, ThermoSysPro.Fluid.Examples.SimpleExamples.TestVolumeA can be mentioned: it was working with functions but not with blocks. Iteration variables seem to be different thus new scripts may have to be used.
For SimpleExamples, which are generally quite basic, there should be no need of initialisation scripts. If such simple examples do not initialize by themselves, it is a problem...
I wrote my comment a bit too fast it seems. It is indeed not a script issue (thus whatever if it is a new script or not) because it initialized itself, but simulation stopped in the middle. I just wanted to mentioned this example as there are differences between functions and blocks here.
It has to be tested more deeply in the future.
Furthermore questions regarding derivatives are not tackled yet. der functions are still functions (the ones mentioned in the derivative annotation).
Just an observation : it is not possible to instantiate a block inside of a function. So we wouldn't be able to call the properties in this alternative way inside of a function. Even though this probably does not happen a lot..