25#include "AstCore/BlockSystem.hpp"
26#include "AstCore/BlockDerivative.hpp"
27#include "AstCore/SimTime.hpp"
28#include <unordered_map>
69 size_t size()
const {
return state_.size(); }
73 int getDimension()
const {
return static_cast<int>(this->size()); }
92 void setStateData(
const double* y) { state_.assign(y, y + this->size()); }
95 #pragma warning(push, 0)
100 void getDerivativeData(
double* dydt)
const { std::copy_n(derivative_.begin(), derivative_.size(), dydt); }
104 void fillDerivativeData(
double value) { std::fill_n(derivative_.begin(), derivative_.size(), value); }
108 void fillAccumulateData(
double value) { std::fill_n(accumulate_.begin(), accumulate_.size(), value); }
121 errc_t createStateMap();
124 errc_t connectSignalsByNames();
136 using BlockSystem::addBlock;
149 using StateMap = std::unordered_map<Identifier*, double*>;
151 std::vector<BlockDerivative*> derivativeBlocks_{};
152 std::vector<double> state_{};
153 std::vector<double> accumulate_{};
154 std::vector<double> derivative_{};
155 StateMap stateMap_{};
156 StateMap derivativeMap_{};
导数函数块
定义 BlockDerivative.hpp:46
动力学系统
定义 BlockDynamicSystem.hpp:62
void getDerivativeData(double *dydt) const
获取状态量导数数据指针
定义 BlockDynamicSystem.hpp:100
const double * getStateData() const
获取状态量数据指针
定义 BlockDynamicSystem.hpp:77
const double * getDerivativeData() const
获取状态量导数数据指针
定义 BlockDynamicSystem.hpp:81
void setStateData(const double *y)
填充状态量数据
定义 BlockDynamicSystem.hpp:92
void fillDerivativeData(double value)
填充状态量导数数据
定义 BlockDynamicSystem.hpp:104
size_t size() const
获取状态量大小
定义 BlockDynamicSystem.hpp:69
int getDimension() const
获取状态量维度
定义 BlockDynamicSystem.hpp:73
void fillAccumulateData(double value)
填充累加状态量数据
定义 BlockDynamicSystem.hpp:108
子系统块(subsystem block)
定义 BlockSystem.hpp:34
void clearBlocks()
清除子系统中的所有函数块
定义 BlockSystem.cpp:51
errc_t run(const SimTime &simTime) override
计算函数块
定义 BlockSystem.cpp:36
void addBlock(FuncBlock *block)
添加函数块到子系统中
定义 BlockSystem.cpp:46