diff --git a/models/quantum/quantum.dat b/models/quantum/quantum.dat new file mode 100644 index 00000000..3b2ec480 --- /dev/null +++ b/models/quantum/quantum.dat @@ -0,0 +1,33 @@ +a +0 1 +1 1 +b +0 0 +1 0 +c +0 0 +1 0 +d +0 -1 +1 -1 +e +0 110 +1 110 +f +0 48 +1 48 +FINAL TIME +0 1 +g +0 378 +1 378 +h +0 10 +1 10 +INITIAL TIME +0 0 +SAVEPER +0 1 +1 1 +TIME STEP +0 1 diff --git a/models/quantum/quantum.mdl b/models/quantum/quantum.mdl new file mode 100644 index 00000000..e4f9b5ef --- /dev/null +++ b/models/quantum/quantum.mdl @@ -0,0 +1,44 @@ +{UTF-8} +a = QUANTUM(1.9, 1.0) ~~~:SUPPLEMENTARY| +b = QUANTUM(0.9, 1.0) ~~~:SUPPLEMENTARY| +c = QUANTUM(-0.9, 1.0) ~~~:SUPPLEMENTARY| +d = QUANTUM(-1.9, 1.0) ~~~:SUPPLEMENTARY| +e = QUANTUM(112.3, 10.0) ~~~:SUPPLEMENTARY| +f = QUANTUM(50, 12) ~~~:SUPPLEMENTARY| +g = QUANTUM(423, 63) ~~~:SUPPLEMENTARY| +h = QUANTUM(10, 10) ~~~:SUPPLEMENTARY| + +******************************************************** + .Control +********************************************************~ + Simulation Control Parameters + | + +INITIAL TIME = 0 ~~| +FINAL TIME = 1 ~~| +TIME STEP = 1 ~~| +SAVEPER = TIME STEP ~~| + +\\\---/// Sketch information - do not modify anything except names +V300 Do not put anything below this section - it will be ignored +*View 1 +$0-0-0,0,|0||0-0-0|0-0-0|0-0-0|0-0-0|0-0-0|0,0,100,0 +///---\\\ +:L<%^E!@ +9:quantum +15:0,0,0,0,0,0 +19:100,0 +27:2, +34:0, +5:FINAL TIME +35:Date +36:YYYY-MM-DD +37:2000 +38:1 +39:1 +40:2 +41:0 +42:1 +24:0 +25:0 +26:0 diff --git a/models/quantum/quantum_vars.txt b/models/quantum/quantum_vars.txt new file mode 100644 index 00000000..4a24d687 --- /dev/null +++ b/models/quantum/quantum_vars.txt @@ -0,0 +1,66 @@ +a: aux += QUANTUM(1.9,1.0) +refId(_a) +hasInitValue(false) + +b: aux += QUANTUM(0.9,1.0) +refId(_b) +hasInitValue(false) + +c: aux += QUANTUM(-0.9,1.0) +refId(_c) +hasInitValue(false) + +d: aux += QUANTUM(-1.9,1.0) +refId(_d) +hasInitValue(false) + +e: aux += QUANTUM(112.3,10.0) +refId(_e) +hasInitValue(false) + +f: aux += QUANTUM(50,12) +refId(_f) +hasInitValue(false) + +FINAL TIME: const += 1 +refId(_final_time) +hasInitValue(false) + +g: aux += QUANTUM(423,63) +refId(_g) +hasInitValue(false) + +h: aux += QUANTUM(10,10) +refId(_h) +hasInitValue(false) + +INITIAL TIME: const += 0 +refId(_initial_time) +hasInitValue(false) + +SAVEPER: aux += TIME STEP +refId(_saveper) +hasInitValue(false) +refs(_time_step) + +Time: const += +refId(_time) +hasInitValue(false) + +TIME STEP: const += 1 +refId(_time_step) +hasInitValue(false) + diff --git a/src/c/vensim.h b/src/c/vensim.h index bd8102b3..36350a96 100644 --- a/src/c/vensim.h +++ b/src/c/vensim.h @@ -26,6 +26,8 @@ extern "C" { #define _MAX(a, b) fmax(a, b) #define _MIN(a, b) fmin(a, b) #define _MODULO(a, b) fmod(a, b) +#define _QUANTUM(a, b) (b <= 0 ? a : b * trunc(a / b)) + #define _SAMPLE_IF_TRUE(current, condition, input) (bool_cond(condition) ? (input) : (current)) #define _SIN(x) sin(x) #define _SQRT(x) sqrt(x)