@@ -457,7 +457,7 @@ function stateSelectionAndCodeGeneration(modStructure, Gexplicit, name, modelMod
457457 # solution = :(try $solution; catch e; println("Failure executing: ", $sol); printstyled(stderr,"ERROR: ", bold=true, color=:red);
458458 # printstyled(stderr,sprint(showerror,e), color=:light_red); println(stderr); end)
459459 end
460- solution = makeDerVar (solution, parameters, inputs, evaluateParameters)
460+ solution = makeDerVar (solution, parameters, inputs, FloatType, evaluateParameters)
461461 if logCalculations
462462 var = string (unknowns[v])
463463 solutionString = string (solution)
@@ -475,7 +475,7 @@ function stateSelectionAndCodeGeneration(modStructure, Gexplicit, name, modelMod
475475 return nothing
476476 end
477477 if isexpr (lhs, :tuple ) && all (a == 0 for a in lhs. args) || lhs == :(0 )
478- eq_rhs = makeDerVar (:($ rhs), parameters, inputs, evaluateParameters)
478+ eq_rhs = makeDerVar (:($ rhs), parameters, inputs, FloatType, evaluateParameters)
479479 if unitless
480480 eqs = eq_rhs
481481 else
@@ -486,8 +486,8 @@ function stateSelectionAndCodeGeneration(modStructure, Gexplicit, name, modelMod
486486 # eq_lhs = makeDerVar(:($lhs), parameters, inputs, evaluateParameters)
487487 # eqs = :( ($eq_rhs .-= $eq_lhs) )
488488 else
489- eq_rhs = makeDerVar (:($ rhs), parameters, inputs, evaluateParameters)
490- eq_lhs = makeDerVar (:($ lhs), parameters, inputs, evaluateParameters)
489+ eq_rhs = makeDerVar (:($ rhs), parameters, inputs, FloatType, evaluateParameters)
490+ eq_lhs = makeDerVar (:($ lhs), parameters, inputs, FloatType, evaluateParameters)
491491 if unitless
492492 eqs = :( $ eq_rhs .- $ eq_lhs )
493493 else
@@ -687,7 +687,7 @@ function stateSelectionAndCodeGeneration(modStructure, Gexplicit, name, modelMod
687687 if useNewCodeGeneration
688688 @timeit to " generate_getDerivativesNew!" code = generate_getDerivativesNew! (AST, newFunctions, modelModule, equationInfo, [:(_p)], vcat (:time , [Symbol (u) for u in unknowns]), previousVars, preVars, holdVars, :getDerivatives , hasUnits = ! unitless)
689689 else
690- @timeit to " generate_getDerivatives!" code = generate_getDerivatives! (AST, equationInfo, [:(_p)], extraResults, previousVars, preVars, holdVars, :getDerivatives , hasUnits = ! unitless)
690+ @timeit to " generate_getDerivatives!" code = generate_getDerivatives! (FloatType, TimeType, AST, equationInfo, [:(_p)], extraResults, previousVars, preVars, holdVars, :getDerivatives , hasUnits = ! unitless)
691691 end
692692 else
693693# code = generate_getDerivatives!(AST, equationInfo, Symbol.(keys(parameters)), extraResults, :getDerivatives, hasUnits = !unitless)
@@ -888,6 +888,11 @@ See documentation of macro [`@instantiateModel`]
888888function instantiateModel (model; modelName= " " , modelModule= nothing , source= nothing , FloatType = Float64, aliasReduction= true , unitless= false ,
889889 log= false , logModel= false , logDetails= false , logStateSelection= false , logCode= false ,
890890 logExecution= logExecution, logCalculations= logCalculations, logTiming= false , evaluateParameters= false , saveCodeOnFile= " " )
891+ if isMonteCarloMeasurements (FloatType) && ! unitless
892+ unitless= true
893+ printstyled (" @instantiateModel(...,unitless=true, ..) set automatically, because\n FloatType=MonteCarloMeasurements often fails if units are involved.\n " , color= :red )
894+ end
895+
891896 # try
892897 # model = JSONModel.cloneModel(model, expressionsAsStrings=false)
893898 println (" \n Instantiating model $modelName \n in module: $modelModule \n in file: $source " )
0 commit comments