b2api
B2000++ API Reference Manual, VERSION 4.6
 
Loading...
Searching...
No Matches
b2model_database.H
1//------------------------------------------------------------------------
2// b2model_database.H --
3//
4//
5// written by Mathias Doreille, SMR SA
6// Silvio Merazzi, SMR SA <merazzi@smr.ch>
7// Thomas Blome <thomas.blome@dlr.de>
8//
9// Copyright (c) 2004-2024
10// SMR Engineering & Development SA
11// 2502 Bienne, Switzerland
12//
13// Copyright (c) 2023 Deutsches Zentrum für Luft- und Raumfahrt (DLR) e.V.
14// Linder Höhe, 51147 Köln
15//
16// All Rights Reserved. Proprietary source code. The contents of
17// this file may not be disclosed to third parties, copied or
18// duplicated in any form, in whole or in part, without the prior
19// written permission of SMR.
20//------------------------------------------------------------------------
21
22#ifndef __B2MODEL_DATABASE_H__
23#define __B2MODEL_DATABASE_H__
24
25#include <memory>
26
27#include "b2ppconfig.h"
29#include "model/b2model.H"
30#include "model/b2solver.H"
31#include "utils/b2allocator.H"
32#include "utils/b2database.H"
33#include "utils/b2dictionary.H"
34#include "utils/b2object.H"
35#include "utils/b2util.H"
36
37namespace b2000::b2dbv3 {
38
39extern Module module;
40
44class Model : public b2000::Model, public DataBaseFieldSet {
45public:
46 Model() = default;
47
48 ~Model() override;
49
50 void set_parameters(const std::string& dbname, Dictionary* cmdline_set_ = nullptr) override;
51
52 std::string get_logging_directory() override {
53 return DataBaseFieldSet::get_logging_directory();
54 }
55
56 void init(const std::string& dbname = "", Dictionary* cmdline_set_ = nullptr) override;
57
58 CaseList& get_case_list() override;
59
60 const int get_handle() override;
61
62 Domain& get_domain() override;
63
66
69
72
74
75 Solution& get_solution() override;
76
77 Solver& get_solver() override;
78
79 void set_case(b2000::Case& case_) override;
80
81 Case* get_case() override { return current_case; }
82
83 int get_subcase_id() const override { return current_subcase_id; }
84
85 void set_subcase_id(const int subcase_id_) override;
86
87 void get_subcase_ids(std::set<int>& subcase_ids_) const override;
88
89 int b2ip_version_comp(int a1, int a2, int a3) {
90 std::vector<mcInt32> b2ip_version(3);
91 adir.get("VERSION", b2ip_version);
92 if (a1 < b2ip_version[0]) {
93 return 1;
94 } else if (a1 > b2ip_version[0]) {
95 return -1;
96 }
97 if (a2 < b2ip_version[1]) {
98 return 1;
99 } else if (a2 > b2ip_version[1]) {
100 return -1;
101 }
102 if (a3 < b2ip_version[2]) {
103 return 1;
104 } else if (a3 > b2ip_version[2]) {
105 return -1;
106 }
107 return 0;
108 }
109
110 using type_t = ObjectTypeComplete<Model, b2000::Model::type_t>;
111 static type_t type;
112
113protected:
114 Case* current_case{};
115 std::unique_ptr<Solver> solver{};
116 Allocator allocator;
117
118private:
119 Dictionary* cmdline_set{};
120 RTable adir;
121 RTable strat;
122 CaseList* case_list{};
123 int current_subcase_id{};
124 Domain* domain{};
125 NaturalBoundaryCondition* natural_boundary_condition{};
126 EssentialBoundaryCondition* essential_boundary_condition{};
127 ModelReductionBoundaryCondition* model_reduction_boundary_condition{};
128 std::unique_ptr<InitialCondition> initial_condition{};
129 Solution* solution{};
130 void set_domain();
131};
132
133} // namespace b2000::b2dbv3
134
135#endif
Interface to C++ representations of FE solvers.
Definition b2case.H:110
Definition b2dictionary.H:48
Definition b2boundary_condition.H:159
Definition b2initial_condition.H:43
Definition b2boundary_condition.H:266
Definition b2model.H:69
Definition b2boundary_condition.H:40
Definition b2object.H:340
T get(const std::string &key) const
Definition b2rtable.H:647
Definition b2solution.H:227
A Solver instance executes an FE analysis. It is created and initialized by the Model instance and,...
Definition b2solver.H:50
A in-core implementation of the b2dbv3::Domain. All the Element, Node and ElementProperty objects are...
Definition b2domain_database.H:62
Definition b2model_database.H:44
Solution & get_solution() override
Definition b2model_database.C:239
Domain & get_domain() override
Definition b2model_database.C:164
Case * get_case() override
Definition b2model_database.H:81
void init(const std::string &dbname="", Dictionary *cmdline_set_=nullptr) override
Definition b2model_database.C:47
CaseList & get_case_list() override
Definition b2model_database.C:154
NaturalBoundaryCondition & get_natural_boundary_condition(ObjectTypeIncomplete< NaturalBoundaryCondition > *bc_type) override
Definition b2model_database.C:169
void get_subcase_ids(std::set< int > &subcase_ids_) const override
Definition b2model_database.C:132
const int get_handle() override
Definition b2model_database.C:77
Solver & get_solver() override
Definition b2model_database.C:276
void set_case(b2000::Case &case_) override
Definition b2model_database.C:81
InitialCondition & get_initial_condition() override
Definition b2model_database.C:223
void set_subcase_id(const int subcase_id_) override
Definition b2model_database.C:110
EssentialBoundaryCondition & get_essential_boundary_condition(ObjectTypeIncomplete< EssentialBoundaryCondition > *bc_type) override
Definition b2model_database.C:185
ModelReductionBoundaryCondition & get_model_reduction_boundary_condition(ObjectTypeIncomplete< ModelReductionBoundaryCondition > *bc_type) override
Definition b2model_database.C:197
int get_subcase_id() const override
Definition b2model_database.H:83