b2api
B2000++ API Reference Manual, VERSION 4.6
 
Loading...
Searching...
No Matches
b2component.H
1//------------------------------------------------------------------------
2// b2component.H --
3//
4//
5// written by Mathias Doreille
6// Neda Ebrahimi Pour <neda.ebrahimipour@dlr.de>
7//
8// (c) 2004-2012,2016,2017 SMR Engineering & Development SA
9// 2502 Bienne, Switzerland
10//
11// (c) 2023 Deutsches Zentrum für Luft- und Raumfahrt (DLR) e.V.
12// Linder Höhe, 51147 Köln
13//
14// All Rights Reserved. Proprietary source code. The contents of
15// this file may not be disclosed to third parties, copied or
16// duplicated in any form, in whole or in part, without the prior
17// written permission of SMR.
18//------------------------------------------------------------------------
19
20#ifndef B2COMPONENT_H_
21#define B2COMPONENT_H_
22
23#include <string>
24
25#include "model/b2model.H"
26#include "utils/b2database.H"
27#include "utils/b2linear_algebra.H"
28
29namespace b2000::component {
30
31class DomainTemp : public DomainComponent {
32public:
33 std::string get_id() const override { return id; }
34
35 void init(
36 const std::string& id_, TimeFunction* scalef_, Model& model_, const Case& case_,
37 int subcase_id_) override {
38 database = &dynamic_cast<DataBase&>(model_);
39 id = id_;
40 scalef = scalef_;
41 subcase_id = subcase_id_;
42 }
43
44 void set_subcase_id(const int subcase_id_) { subcase_id = subcase_id_; }
45
46 int get_subcase_id() const override { return subcase_id; }
47
48 bool get_temperatures(
49 const int branch_id, b2linalg::Matrix<double, b2linalg::Mrectangle>& values) const {
50 SetName set_name = id;
51 set_name.branch(branch_id);
52 assert(database != nullptr);
53 if (database->has_key(set_name)) {
54 database->get(set_name, values);
55 return true;
56 }
57 return false;
58 }
59
60 TimeFunction* get_scalef() { return scalef; }
61
62 typedef ObjectTypeComplete<DomainTemp, DomainComponent::type_t> type_t;
63 static type_t type;
64
65private:
66 DataBase* database;
67 std::string id;
68 TimeFunction* scalef;
69 int subcase_id;
70};
71} // namespace b2000::component
72
73#endif // B2COMPONENT_H