The problem was caused by an error in a mod file.
Before comparing results of 32 vs 64 bit simulations, I started checking the mod files with modlunit--which finds syntax errors as well as units inconsistencies. Its chief limitation is that once it finds and reports an error, it quits, so using modlunit is a matter of making repeated "test and revise" cycles.
modlunit ishift.mod
first reported this trivial units inconsistency
Code: Select all
units: 1
units: 0.001 m2-kg/sec2-coul
The units of the previous two expressions are not conformable
at line 55 in file ihshift.mod
evaluate_fct(v,vsh<<ERROR>>)
which won't affect simulation results, and is very easy to correct.
vsh was a STATE that was not assigned any particular units, so replacing
Code: Select all
PROCEDURE evaluate_fct(v(mV), vsh(mV)) {
with
Code: Select all
: PROCEDURE evaluate_fct(v(mV), vsh(mV)) {
PROCEDURE evaluate_fct(v(mV), vsh) {
eliminated the units inconsistency.
The next pass with modlunit reported
Code: Select all
too few arguments at line 68 in file ihshift.mod
evaluate_fct(v)<<ERROR>>
This is a serious error--I'm surprised that the code executes. However, this error is also easy to fix. Just replace
with
Code: Select all
: evaluate_fct(v)
evaluate_fct(v, vsh)
mjb7 reported the following:
The curves matched exactly once I corrected the ihshift file (I checked the others, and they didn't have any unit errors).