module Drasil.PDController.ODEs where import Language.Drasil (LiteralC(exactDbl), ExprC(sy), InitialValueProblem, makeAIVP) import Language.Drasil.Code (odeInfo', odeOptions, quantvar, ODEInfo, ODEMethod(RK45), ODEOptions) import Drasil.PDController.Unitals (dqdSetPointTD, dqdPropGain, dqdDerivGain, dqdSimTime, dqdStepTime, odeRelTolConst, odeAbsTolConst) import Drasil.PDController.IModel(imPDRC) pidODEOptions :: ODEOptions pidODEOptions :: ODEOptions pidODEOptions = ODEMethod -> CodeExpr -> CodeExpr -> CodeExpr -> ODEOptions odeOptions ODEMethod RK45 (ConstQDef -> CodeExpr forall c. (HasUID c, HasSymbol c) => c -> CodeExpr forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r sy ConstQDef odeAbsTolConst) (ConstQDef -> CodeExpr forall c. (HasUID c, HasSymbol c) => c -> CodeExpr forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r sy ConstQDef odeRelTolConst) (DefinedQuantityDict -> CodeExpr forall c. (HasUID c, HasSymbol c) => c -> CodeExpr forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r sy DefinedQuantityDict dqdStepTime) pdIVP :: InitialValueProblem pdIVP :: InitialValueProblem pdIVP = Expr -> Expr -> [Expr] -> InitialValueProblem makeAIVP (Integer -> Expr forall r. LiteralC r => Integer -> r exactDbl Integer 0) (DefinedQuantityDict -> Expr forall c. (HasUID c, HasSymbol c) => c -> Expr forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r sy DefinedQuantityDict dqdSimTime) [Integer -> Expr forall r. LiteralC r => Integer -> r exactDbl Integer 0, Integer -> Expr forall r. LiteralC r => Integer -> r exactDbl Integer 0] pidODEInfo :: ODEInfo pidODEInfo :: ODEInfo pidODEInfo = [CodeVarChunk] -> ODEOptions -> DifferentialModel -> InitialValueProblem -> ODEInfo odeInfo' [DefinedQuantityDict -> CodeVarChunk forall c. (Quantity c, MayHaveUnit c, Concept c) => c -> CodeVarChunk quantvar DefinedQuantityDict dqdPropGain, DefinedQuantityDict -> CodeVarChunk forall c. (Quantity c, MayHaveUnit c, Concept c) => c -> CodeVarChunk quantvar DefinedQuantityDict dqdDerivGain, DefinedQuantityDict -> CodeVarChunk forall c. (Quantity c, MayHaveUnit c, Concept c) => c -> CodeVarChunk quantvar DefinedQuantityDict dqdSetPointTD] ODEOptions pidODEOptions DifferentialModel imPDRC InitialValueProblem pdIVP