25#include "b2ppconfig.h"
28#include "model/b2element.H"
32#include "utils/b2threading.H"
63 const bool IsLinear()
const {
return is_linear_; }
74 double GetTime()
const {
return time_; }
76 double GetStepSize()
const {
return step_size_; }
100 bool is_implicit_{
true};
106 size_t number_of_fixed_dof_{};
108 size_t iteration_count_{};
109 const size_t kMaxIterations_{50};
113 CaseList::case_iterator case_iterator_{};
123 !analysis_type.ends_with(
"NONLINEAR") && !analysis_type.ends_with(
"NONLINEAR_SOLUTION");
124 is_dynamic_ = analysis_type.starts_with(
"MDYNAMIC");
125 is_damped_ = analysis_type.starts_with(
"MTRANSIENT");
132 iteration_count_ = 0;
199 SolverHints(
int hints_) : hints(hints_) {}
204 b2spin_rw_mutex::scoped_lock lock(tbb_mutex);
212 b2spin_rw_mutex::scoped_lock lock(tbb_mutex);
214 hints |= other_hints;
220 b2spin_rw_mutex::scoped_lock lock(tbb_mutex);
222 hints |= other.hints;
234 b2spin_rw_mutex::scoped_lock lock(
const_cast<b2spin_rw_mutex&
>(tbb_mutex));
#define THROW
Definition b2exception.H:198
virtual double get_stage_size(int stage=-1) const =0
virtual std::string get_string(const std::string &key) const =0
virtual double get_double(const std::string &key) const =0
virtual size_t get_number_of_dof() const =0
Definition b2exception.H:131
virtual void set_case(Case &case_)=0
virtual Domain & get_domain()=0
Definition b2object.H:340
Definition b2object.H:456
Definition b2solver.H:168
Hints
Definition b2solver.H:171
@ diverge
Definition b2solver.H:183
@ none
Definition b2solver.H:173
@ unfinished
Definition b2solver.H:179
@ terminate_analysis
Definition b2solver.H:194
@ degradation
Definition b2solver.H:188
SolverHints & add(const SolverHints &other)
Definition b2solver.H:219
SolverHints & add(const Hints &other_hints)
Definition b2solver.H:211
SolverHints & clear()
Definition b2solver.H:203
int operator*() const
Definition b2solver.H:233
SolverHints & operator|=(const SolverHints &other)
Definition b2solver.H:230
SolverHints & operator|=(const Hints &other_hints)
Definition b2solver.H:227
A Solver instance executes an FE analysis. It is created and initialized by the Model instance and,...
Definition b2solver.H:50
virtual void solve()=0
This function is usually called by the Model instance.
void set_case(Case &b2case)
Make this constant (TB).
Definition b2solver.H:60
double step_size_
step size of the simulation.
Definition b2solver.H:97
virtual bool solve_iteration()=0
This function is called by the Solver instance itself.
size_t effective_num_dof_
Number of "true" unknowns of the global system.
Definition b2solver.H:105
bool IsImplicit() const
Definition b2solver.H:72
int current_stage_
Current stage number of current case.
Definition b2solver.H:111
bool IsDynamic() const
Definition b2solver.H:66
bool IsDamped() const
Definition b2solver.H:69
size_t total_num_dof_
Total number of all degrees of freedom of the system.
Definition b2solver.H:104
Case * case_
This also.
Definition b2solver.H:93
virtual void InitializeSolverOnCase()
Initializes the member variables of class Solver for the case at hand.
Definition b2solver.H:116
double time_max_
End time of simulation.
Definition b2solver.H:96
Model * model_
Definition b2solver.H:91
const bool IsLinear() const
Definition b2solver.H:63
void set_model(Model &model)
This function is called by the Model instance.
Definition b2solver.H:55
double time_
Pseudo time in case of stationary analyses.
Definition b2solver.H:95
Contains the base classes for implementing Finite Elements.
Definition b2boundary_condition.H:32
A dummy rw mutex for serial exeuction.
Definition b2threading.H:98