module Drasil.SWHSNoPCM.ODEs (noPCMODEOpts, noPCMODEInfo) where import Language.Drasil (ExprC(sy),LiteralC(exactDbl)) import Language.Drasil.Code (odeInfo', odeOptions, quantvar, ODEInfo, ODEMethod(RK45), ODEOptions) import Drasil.SWHS.Unitals (tauW, tempC, tempInit, timeFinal, timeStep, absTol, relTol) import Drasil.SWHSNoPCM.IMods(eBalanceOnWtrRC) import Theory.Drasil (InitialValueProblem, makeAIVP) noPCMODEOpts :: ODEOptions noPCMODEOpts :: ODEOptions noPCMODEOpts = ODEMethod -> CodeExpr -> CodeExpr -> CodeExpr -> ODEOptions odeOptions ODEMethod RK45 (UncertQ -> CodeExpr forall c. (HasUID c, HasSymbol c) => c -> CodeExpr forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r sy UncertQ absTol) (UncertQ -> CodeExpr forall c. (HasUID c, HasSymbol c) => c -> CodeExpr forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r sy UncertQ relTol) (UncertQ -> CodeExpr forall c. (HasUID c, HasSymbol c) => c -> CodeExpr forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r sy UncertQ timeStep) noPCMIVP :: InitialValueProblem noPCMIVP :: InitialValueProblem noPCMIVP = Expr -> Expr -> [Expr] -> InitialValueProblem makeAIVP (Integer -> Expr forall r. LiteralC r => Integer -> r exactDbl Integer 0) (UncertQ -> Expr forall c. (HasUID c, HasSymbol c) => c -> Expr forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r sy UncertQ timeFinal) [UncertQ -> Expr forall c. (HasUID c, HasSymbol c) => c -> Expr forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r sy UncertQ tempInit] noPCMODEInfo :: ODEInfo noPCMODEInfo :: ODEInfo noPCMODEInfo = [CodeVarChunk] -> ODEOptions -> DifferentialModel -> InitialValueProblem -> ODEInfo odeInfo' [UnitalChunk -> CodeVarChunk forall c. (Quantity c, MayHaveUnit c, Concept c) => c -> CodeVarChunk quantvar UnitalChunk tauW, UncertQ -> CodeVarChunk forall c. (Quantity c, MayHaveUnit c, Concept c) => c -> CodeVarChunk quantvar UncertQ tempC] ODEOptions noPCMODEOpts DifferentialModel eBalanceOnWtrRC InitialValueProblem noPCMIVP