MicroModelicaCCompiler  4.5.3
MicroModelica::IR::Equation Class Reference

#include <equation.hpp>

Collaboration diagram for MicroModelica::IR::Equation:

Public Member Functions

 Equation ()
 
 Equation (AST_Expression lhs, AST_Expression rhs, Option< Range > range, EQUATION::Type type, int id)
 
 Equation (AST_Expression eq, Option< Range > range, EQUATION::Type type, int id, int offset)
 
 Equation (AST_Equation eq, EQUATION::Type type, int id)
 
 Equation (AST_Equation eq, Range r, EQUATION::Type type, int id)
 
 Equation (AST_Equation eq, Option< Range > r, EQUATION::Type type, int id)
 
 ~Equation ()=default
 
bool hasRange () const
 
Expression lhs () const
 
Index index () const
 
Expression rhs () const
 
AST_Expression equation ()
 
bool autonomous ()
 
Util::SymbolTable calledFunctions ()
 
std::string print () const
 
std::string macro () const
 
Option< Rangerange () const
 
void setRange (Option< Range > range)
 
int id () const
 
EQUATION::Type type () const
 
bool isDerivative () const
 
bool isZeroCrossing () const
 
bool isOutput () const
 
bool isAlgebraic () const
 
Option< Util::VariableLHSVariable () const
 
bool isValid () const
 
bool hasAlgebraics ()
 
std::string identifier () const
 
bool isRHSReference () const
 
void setUsage (Index usage)
 
Index usage () const
 
void setType (EQUATION::Type type)
 
bool isRecursive () const
 
void applyUsage (Index usage)
 
bool isEmpty () const
 
std::string applyId () const
 
Equation genAlgEquation (Equation der_eq, Index rhs_usage, Index lhs_usage)
 
int arrayId () const
 
void setAlgCode (std::string alg_code)
 
std::string algCode () const
 
std::multimap< std::string, int > usedVariables () const
 

Protected Member Functions

void initialize (AST_Equation eq)
 
void initialize (AST_Expression exp)
 
void initialize (AST_Expression lhs, AST_Expression rhs)
 
void setup ()
 

Private Attributes

AST_Equation _eq
 
Expression _lhs
 
Expression _rhs
 
Option< Range_range
 
bool _autonomous
 
Util::SymbolTable _calledFunctions
 
EQUATION::Type _type
 
int _id
 
int _offset
 
std::string _lhs_exp
 
Index _usage
 
std::string _alg_code
 

Friends

std::ostream & operator<< (std::ostream &out, const Equation &e)
 

Detailed Description

Definition at line 67 of file equation.hpp.

Constructor & Destructor Documentation

◆ Equation() [1/6]

MicroModelica::IR::Equation::Equation ( )

Definition at line 65 of file equation.cpp.

◆ Equation() [2/6]

MicroModelica::IR::Equation::Equation ( AST_Expression  lhs,
AST_Expression  rhs,
Option< Range range,
EQUATION::Type  type,
int  id 
)

Definition at line 80 of file equation.cpp.

References initialize().

Here is the call graph for this function:

◆ Equation() [3/6]

MicroModelica::IR::Equation::Equation ( AST_Expression  eq,
Option< Range range,
EQUATION::Type  type,
int  id,
int  offset 
)

Definition at line 86 of file equation.cpp.

References initialize().

Here is the call graph for this function:

◆ Equation() [4/6]

MicroModelica::IR::Equation::Equation ( AST_Equation  eq,
EQUATION::Type  type,
int  id 
)

Definition at line 92 of file equation.cpp.

References _lhs, _rhs, lhs(), rhs(), and setup().

Here is the call graph for this function:

◆ Equation() [5/6]

MicroModelica::IR::Equation::Equation ( AST_Equation  eq,
Range  r,
EQUATION::Type  type,
int  id 
)

Definition at line 98 of file equation.cpp.

◆ Equation() [6/6]

MicroModelica::IR::Equation::Equation ( AST_Equation  eq,
Option< Range r,
EQUATION::Type  type,
int  id 
)

Definition at line 104 of file equation.cpp.

◆ ~Equation()

MicroModelica::IR::Equation::~Equation ( )
default

Member Function Documentation

◆ algCode()

std::string MicroModelica::IR::Equation::algCode ( ) const

Definition at line 248 of file equation.cpp.

◆ applyId()

string MicroModelica::IR::Equation::applyId ( ) const

Definition at line 163 of file equation.cpp.

◆ applyUsage()

void MicroModelica::IR::Equation::applyUsage ( Index  usage)

◆ arrayId()

int MicroModelica::IR::Equation::arrayId ( ) const

Definition at line 244 of file equation.cpp.

Referenced by MicroModelica::IR::JacGenerator::getVariableIndexes().

◆ autonomous()

bool MicroModelica::IR::Equation::autonomous ( )
inline

Definition at line 82 of file equation.hpp.

Referenced by MicroModelica::IR::Model::setOutputs().

◆ calledFunctions()

Util::SymbolTable MicroModelica::IR::Equation::calledFunctions ( )
inline

Definition at line 83 of file equation.hpp.

◆ equation()

AST_Expression MicroModelica::IR::Equation::equation ( )
inline

Definition at line 81 of file equation.hpp.

◆ genAlgEquation()

Equation MicroModelica::IR::Equation::genAlgEquation ( Equation  der_eq,
Index  rhs_usage,
Index  lhs_usage 
)

Definition at line 226 of file equation.cpp.

References _id.

◆ hasAlgebraics()

bool MicroModelica::IR::Equation::hasAlgebraics ( )

Definition at line 202 of file equation.cpp.

References _range.

◆ hasRange()

◆ id()

int MicroModelica::IR::Equation::id ( ) const
inline

◆ identifier()

string MicroModelica::IR::Equation::identifier ( ) const

Definition at line 161 of file equation.cpp.

◆ index()

Index MicroModelica::IR::Equation::index ( ) const

Definition at line 191 of file equation.cpp.

References MicroModelica::IR::getPrinter(), and MicroModelica::IR::EquationPrinter::macro().

Here is the call graph for this function:

◆ initialize() [1/3]

void MicroModelica::IR::Equation::initialize ( AST_Equation  eq)
protected

Definition at line 130 of file equation.cpp.

References _autonomous, _calledFunctions, _lhs, _lhs_exp, _range, _rhs, MicroModelica::IR::Expression::autonomous(), MicroModelica::IR::Expression::expression(), and LHSVariable().

Referenced by Equation().

Here is the call graph for this function:

◆ initialize() [2/3]

void MicroModelica::IR::Equation::initialize ( AST_Expression  exp)
protected

Definition at line 117 of file equation.cpp.

◆ initialize() [3/3]

void MicroModelica::IR::Equation::initialize ( AST_Expression  lhs,
AST_Expression  rhs 
)
protected

Definition at line 110 of file equation.cpp.

◆ isAlgebraic()

bool MicroModelica::IR::Equation::isAlgebraic ( ) const
inline

Definition at line 96 of file equation.hpp.

Referenced by setup().

◆ isDerivative()

bool MicroModelica::IR::Equation::isDerivative ( ) const
inline

Definition at line 90 of file equation.hpp.

Referenced by setup().

◆ isEmpty()

bool MicroModelica::IR::Equation::isEmpty ( ) const

Definition at line 198 of file equation.cpp.

◆ isOutput()

bool MicroModelica::IR::Equation::isOutput ( ) const
inline

Definition at line 95 of file equation.hpp.

Referenced by setup().

◆ isRecursive()

bool MicroModelica::IR::Equation::isRecursive ( ) const

Definition at line 173 of file equation.cpp.

References _lhs, and isValid().

Here is the call graph for this function:

◆ isRHSReference()

bool MicroModelica::IR::Equation::isRHSReference ( ) const

Definition at line 200 of file equation.cpp.

◆ isValid()

bool MicroModelica::IR::Equation::isValid ( ) const

Definition at line 183 of file equation.cpp.

References _rhs, and MicroModelica::IR::Expression::isReference().

Referenced by isRecursive(), and MicroModelica::IR::operator<<().

Here is the call graph for this function:

◆ isZeroCrossing()

bool MicroModelica::IR::Equation::isZeroCrossing ( ) const
inline

Definition at line 94 of file equation.hpp.

Referenced by setup().

◆ lhs()

Expression MicroModelica::IR::Equation::lhs ( ) const
inline

◆ LHSVariable()

Option< Variable > MicroModelica::IR::Equation::LHSVariable ( ) const

Definition at line 165 of file equation.cpp.

References _lhs, _rhs, and MicroModelica::IR::Expression::isValid().

Referenced by MicroModelica::IR::JacGenerator::guard(), initialize(), and MicroModelica::Deps::EVSelector::isAlgebraic().

Here is the call graph for this function:

◆ macro()

string MicroModelica::IR::Equation::macro ( ) const

Definition at line 209 of file equation.cpp.

◆ print()

string MicroModelica::IR::Equation::print ( ) const

Definition at line 211 of file equation.cpp.

Referenced by MicroModelica::IR::QSSModelDepsGenerator::postProcess().

◆ range()

Option<Range> MicroModelica::IR::Equation::range ( ) const
inline

Definition at line 86 of file equation.hpp.

References _usage, and usage().

Referenced by MicroModelica::IR::JacGenerator::guard(), and MicroModelica::IR::Model::setOutputs().

Here is the call graph for this function:

◆ rhs()

Expression MicroModelica::IR::Equation::rhs ( ) const
inline

Definition at line 80 of file equation.hpp.

Referenced by Equation().

◆ setAlgCode()

void MicroModelica::IR::Equation::setAlgCode ( std::string  alg_code)

Definition at line 246 of file equation.cpp.

◆ setRange()

void MicroModelica::IR::Equation::setRange ( Option< Range range)
inline

Definition at line 87 of file equation.hpp.

References _usage.

Referenced by MicroModelica::IR::QSSModelDepsGenerator::postProcess().

◆ setType()

void MicroModelica::IR::Equation::setType ( EQUATION::Type  type)

Definition at line 213 of file equation.cpp.

References MicroModelica::IR::Index::isConstant().

Referenced by MicroModelica::IR::QSSModelDepsGenerator::postProcess(), and MicroModelica::IR::Model::reduceEquation().

Here is the call graph for this function:

◆ setup()

void MicroModelica::IR::Equation::setup ( )
protected

Definition at line 147 of file equation.cpp.

References _lhs, isAlgebraic(), isDerivative(), isOutput(), isZeroCrossing(), and MicroModelica::IR::Expression::reference().

Referenced by Equation().

Here is the call graph for this function:

◆ setUsage()

void MicroModelica::IR::Equation::setUsage ( Index  usage)
inline

Definition at line 103 of file equation.hpp.

Referenced by MicroModelica::IR::QSSModelDepsGenerator::postProcess().

◆ type()

EQUATION::Type MicroModelica::IR::Equation::type ( ) const
inline

Definition at line 89 of file equation.hpp.

Referenced by MicroModelica::IR::QSSModelDepsGenerator::visitF().

◆ usage()

Index MicroModelica::IR::Equation::usage ( ) const
inline

Definition at line 104 of file equation.hpp.

Referenced by range().

◆ usedVariables()

std::multimap< std::string, int > MicroModelica::IR::Equation::usedVariables ( ) const

Definition at line 250 of file equation.cpp.

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream &  out,
const Equation e 
)
friend

Definition at line 185 of file equation.cpp.

Member Data Documentation

◆ _alg_code

std::string MicroModelica::IR::Equation::_alg_code
private

Definition at line 134 of file equation.hpp.

◆ _autonomous

bool MicroModelica::IR::Equation::_autonomous
private

Definition at line 127 of file equation.hpp.

Referenced by initialize().

◆ _calledFunctions

Util::SymbolTable MicroModelica::IR::Equation::_calledFunctions
private

Definition at line 128 of file equation.hpp.

Referenced by initialize().

◆ _eq

AST_Equation MicroModelica::IR::Equation::_eq
private

Definition at line 123 of file equation.hpp.

◆ _id

int MicroModelica::IR::Equation::_id
private

Definition at line 130 of file equation.hpp.

Referenced by genAlgEquation().

◆ _lhs

Expression MicroModelica::IR::Equation::_lhs
private

Definition at line 124 of file equation.hpp.

Referenced by Equation(), initialize(), isRecursive(), LHSVariable(), and setup().

◆ _lhs_exp

std::string MicroModelica::IR::Equation::_lhs_exp
private

Definition at line 132 of file equation.hpp.

Referenced by initialize().

◆ _offset

int MicroModelica::IR::Equation::_offset
private

Definition at line 131 of file equation.hpp.

◆ _range

Option<Range> MicroModelica::IR::Equation::_range
private

Definition at line 126 of file equation.hpp.

Referenced by hasAlgebraics(), and initialize().

◆ _rhs

Expression MicroModelica::IR::Equation::_rhs
private

◆ _type

EQUATION::Type MicroModelica::IR::Equation::_type
private

Definition at line 129 of file equation.hpp.

Referenced by hasRange(), and lhs().

◆ _usage

Index MicroModelica::IR::Equation::_usage
private

Definition at line 133 of file equation.hpp.

Referenced by range(), and setRange().


The documentation for this class was generated from the following files: