No problem, man. Just a couple extra things I thought I should mention (if you don’t mind).
First, is that you’re using the “Level 2” of the Universal Opamp in that LTspice schematic, which sources/sinks current from/to the rails and can also saturate. There is a great example schematic provided with LTspice that describes the levels in more detail (if you’re not already familiar):
Anyway, I wanted to mention that any of the simple opamp models discussed here (either the B, G, or E source ones) are more akin to LTspice’s Level 1 model. So if you need to match up with LTspice’s Level 2, you’ll need a more sophisticated model, like the Universal one on the thread I linked to earlier. Also, there’s a reason why I used a G source in my model instead of an E source like you ended up with. This is directly pasted from LTspice’s Help under “E. Voltage Dependent Voltage Source”.
Note: It is better to use a G source shunted with a resistance to approximate an E source than to use an E source. A voltage controlled current source shunted with a resistance will compute faster and cause fewer convergence problems than a voltage controlled voltage source. Also, the resultant nonzero output impedance is more representative of a practical circuit.
Lastly, I was going to post this before but got side-tracked by the multi-line subckt bug. I also stumble upon weirdness when checking results between LTspice and ngspice, but the most effective way to compare these results is to use the same netlist between the two programs. That way you are only comparing the SPICE engine differences and not any user errors or other red-herrings like that. I do this by pushing my netlist from KiCad out to LTspice. This is very simple to do, as shown on this timestamped video: https://www.youtube.com/watch?v=90Z6ffxzDz8&t=21m40s