Currently this library is favoring the adc_pp a bit: the AdcMatrix class as well as the AdcAmplitudeVector and some others have attributes like ph and pphh or block_ph_ph_1, that are unique to the PP scheme. This makes it harder than necessary to extend the class for different schemes. At this point in time I am subclassing from AdcMatrix in my fork, but that means there are properties on my class that represent no physical thing.
My suggestion would be to use singles and doubles as properties (and use a format like block_singles_doubles_0(hf, mp, intermediates)) and let those be subclassed for different schemes, because this terminology overlaps for all ADC schemes. As far as I am aware, the workflow would not even need major overhaul to support multiple schemes.
I saw some remainders of a notation like this, but you have seemed to have stepped away from this, so it might also be the case that I am missing something that you found through the development process.
Currently this library is favoring the adc_pp a bit: the AdcMatrix class as well as the AdcAmplitudeVector and some others have attributes like
phandpphhorblock_ph_ph_1, that are unique to the PP scheme. This makes it harder than necessary to extend the class for different schemes. At this point in time I am subclassing from AdcMatrix in my fork, but that means there are properties on my class that represent no physical thing.My suggestion would be to use
singlesanddoublesas properties (and use a format likeblock_singles_doubles_0(hf, mp, intermediates)) and let those be subclassed for different schemes, because this terminology overlaps for all ADC schemes. As far as I am aware, the workflow would not even need major overhaul to support multiple schemes.I saw some remainders of a notation like this, but you have seemed to have stepped away from this, so it might also be the case that I am missing something that you found through the development process.