b2api
B2000++ API Reference Manual, VERSION 4.6
 
Loading...
Searching...
No Matches
b2case.H
Go to the documentation of this file.
1//------------------------------------------------------------------------
2// b2case.H --
3//
4//
5// written by Mathias Doreille
6// Thomas Blome <thomas.blome@dlr.de>
7//
8// Copyright (c) 2004-2012 SMR Engineering & Development SA
9// 2502 Bienne, Switzerland
10//
11// Copyright (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 __B2CASE_H__
21#define __B2CASE_H__
22
23#include <complex>
24#include <memory>
25#include <string>
26
27#include "b2ppconfig.h"
28#include "utils/b2csda.H"
29#include "utils/b2dictionary.H"
30#include "utils/b2object.H"
31
36namespace b2000 {
37
38class Model;
39class Domain;
40class NaturalBoundaryCondition;
41class EssentialBoundaryCondition;
42class ModelReductionBoundaryCondition;
43class InitialCondition;
44
47class AttributeList : public Dictionary {
48public:
49 ~AttributeList() override {}
50
51 virtual void set(const std::string& key, int value) = 0;
52
53 virtual void set(const std::string& key, double value) = 0;
54
55 virtual void set(const std::string& key, b2000::csda<double> value) = 0;
56
57 virtual void set(const std::string& key, std::complex<double> value) = 0;
58
59 virtual void set(const std::string& key, const std::string& value) = 0;
60};
61
110class Case : public AttributeList {
111public:
112 ~Case() override {}
113
115 virtual std::string get_id() const = 0;
116
119 virtual void get_subcase_ids(std::set<int>& subcase_ids_) const = 0;
120
123 virtual size_t get_number_of_stage() const = 0;
124
127 virtual int get_stage_number() const = 0;
128
132 virtual std::string get_stage_id(int stage = -1) const = 0;
133
138 virtual double get_stage_size(int stage = -1) const = 0;
139
143 virtual bool next_stage() = 0;
144
146 virtual void set_stage(int stage) = 0;
147
149 static type_t type;
150};
151
154class CaseList : public Object {
155public:
156 ~CaseList() override {}
157
158 virtual void set_model(Model& model) = 0;
159
160 virtual size_t get_number_of_case() const = 0;
161
162 class CaseIterator {
163 public:
164 virtual ~CaseIterator() {}
165 virtual Case* next() = 0;
166 virtual size_t get_number_of_case() const = 0;
167 };
168
169 using case_iterator = std::unique_ptr<CaseIterator>;
170
171 virtual case_iterator get_case_iterator() = 0;
172
173 class CaseListIterator {
174 public:
175 virtual ~CaseListIterator() {}
176 virtual CaseList* next() = 0;
177 virtual size_t get_number_of_case_list() const = 0;
178 };
179
180 using case_list_iterator = std::unique_ptr<CaseListIterator>;
181
189 virtual Case* get_case(const std::string& case_id) {
190 case_iterator i = get_case_iterator();
191 Case* c = nullptr;
192 while ((c = i->next()) != nullptr) {
193 if (c->get_id() == case_id) { return c; }
194 }
195 return nullptr;
196 }
197
198 enum SortType {
199 value_constant_at_null_dof,
200 d_value_d_dof_constant_at_null_dof,
201 value_and_d_value_d_dof_constant_at_null_dof
202 };
203
204 virtual case_list_iterator get_case_sublist_iterator(const Domain* domain, SortType st) = 0;
205
206 virtual case_list_iterator get_case_sublist_iterator(
207 const NaturalBoundaryCondition* nbc, SortType st) = 0;
208
209 virtual case_list_iterator get_case_sublist_iterator(
210 const EssentialBoundaryCondition* ebc, SortType st) = 0;
211
212 virtual case_list_iterator get_case_sublist_iterator(
213 const ModelReductionBoundaryCondition* mrbc, SortType st) = 0;
214
215 virtual case_list_iterator get_case_sublist_iterator(
216 const InitialCondition* ic, SortType st) = 0;
217
218 using type_t = ObjectTypeIncomplete<CaseList>;
219 static type_t type;
220};
221} // namespace b2000
222
223#endif
Definition b2case.H:47
Definition b2case.H:154
virtual Case * get_case(const std::string &case_id)
Definition b2case.H:189
Definition b2case.H:110
virtual void get_subcase_ids(std::set< int > &subcase_ids_) const =0
virtual double get_stage_size(int stage=-1) const =0
virtual bool next_stage()=0
virtual void set_stage(int stage)=0
virtual std::string get_id() const =0
virtual size_t get_number_of_stage() const =0
virtual int get_stage_number() const =0
virtual std::string get_stage_id(int stage=-1) const =0
Definition b2dictionary.H:48
Definition b2model.H:69
Definition b2object.H:340
Definition b2object.H:456
Contains the base classes for implementing Finite Elements.
Definition b2boundary_condition.H:32