Building Medical Digital Twins with Pulse: Open Source Simulation Tools for Developers and Researchers
×
ECMOModel.h
1 /* Distributed under the Apache License, Version 2.0.
2  See accompanying NOTICE file for details.*/
3 
4 #pragma once
5 
6 #include "engine/common/system/Model.h"
7 #include "engine/common/system/Systems.h"
8 
10 class SEGasCompartment;
13 class SEFluidCircuitNode;
14 class SEFluidCircuitPath;
15 
16 namespace pulse
17 {
18  class PBEquipment;
19  class EngineTest;
24  class PULSE_DECL ECMOModel : public ECMOSystem, public Model
25  {
26  friend PBEquipment;//friend the serialization class
27  friend EngineTest;
28  public:
29  ECMOModel(Data& pc);
30  virtual ~ECMOModel();
31 
32  void Clear() override;
33 
34  // Set members to a stable homeostatic state
35  void Initialize() override;
36  // Set pointers and other member varialbes common to both homeostatic initialization and loading a state
37  void SetUp() override;
38 
39  void StateChange() override;
40 
41  void AtSteadyState() override {}
42  void PreProcess() override;
43  void Process(bool solve_and_transport = true) override;
44  void PostProcess(bool solve_and_transport = true) override;
45 
46  protected:
47  void ComputeExposedModelParameters() override;
48  void DisconnectECMO();
49 
50  // Serializable member variables (Set in Initialize and in schema)
51 
52  // Stateless member variable (Set in SetUp())
53  eECMO_CannulationLocation m_CurrentInflowLocation;
54  eECMO_CannulationLocation m_CurrentOutflowLocation;
55 
56  SELiquidCompartment* m_InflowCmpt;
57  SELiquidCompartmentLink* m_lVascularToBloodSamplingPort;
58  SELiquidCompartment* m_cBloodSamplingPort;
59  SELiquidCompartmentLink* m_lBloodSamplingPortToOxygenator;
60  SELiquidCompartment* m_cOxygenator;
61  SELiquidCompartmentLink* m_lOxygenatorToVascular;
62  SELiquidCompartment* m_OutflowCmpt;
63 
64 
65  SEFluidCircuitNode* m_InflowNode;
66  SEFluidCircuitPath* m_pVascularToBloodSamplingPort;
67  SEFluidCircuitNode* m_nBloodSamplingPort;
68  SEFluidCircuitPath* m_pBloodSamplingPortToGround;
69  SEFluidCircuitPath* m_pGroundToOxygenator;
70  SEFluidCircuitNode* m_nOxygenator;
71  SEFluidCircuitPath* m_pOxygenatorToVascular;
72  SEFluidCircuitNode* m_OutflowNode;
73  };
74 END_NAMESPACE
Definition: SEEquipmentActionCollection.h:47
Definition: SEFluidCircuitNode.h:10
Definition: SEFluidCircuitPath.h:9
Definition: SEGasCompartment.h:14
Definition: SEGasSubstanceQuantity.h:10
Definition: SELiquidCompartment.h:11
Definition: Logger.h:14

Distributed under the Apache License, Version 2.0.

See accompanying NOTICE file for details.