16#ifndef _B2_MATERIAL_PROPERTY_H_
17#define _B2_MATERIAL_PROPERTY_H_
24#include "utils/b2rtable.H"
26namespace b2000 {
namespace b2dbv3 {
39 failure_criterion =
nullptr;
40 const std::string failure_type = rtable.
get_string(
"FAILURE__TYPE",
"");
41 if (failure_type !=
"") {
44 t = FailureCriterion::type.
get_subtype(failure_type, failure_criterion::module);
46 KeyError() <<
"The failure criterion \"" << failure_type <<
"\" is invalid."
51 failure_criterion->init(rtable);
65 return failure_criterion;
70 void set_object_name(
const std::string& name) { object_name = name; };
77 FailureCriterion* failure_criterion;
80 std::string object_name;
88 b2000::csda<double> thickness;
89 b2000::csda<double> angle;
93 Layer(
const b2000::csda<double> thickness_,
const b2000::csda<double> angle_,
95 : thickness(thickness_), angle(angle_), plygroup(plygroup_), material(material_) {}
98 typedef std::vector<Layer> Layers;
104 const b2000::csda<double> thickness_,
const b2000::csda<double> angle_,
106 layers.push_back(Layer(thickness_, angle_, plygroup_, material_));
111 assert(layer_id >= 0 &&
size_t(layer_id) < layers.size());
112 return layers[layer_id];
117 assert(layer_id >= 0 &&
size_t(layer_id) < layers.size());
118 return layers[layer_id];
128 assert(layer_id >= 0 &&
size_t(layer_id) < layers.size());
129 return layers[layer_id].material->get_rtable();
135 assert(layer_id >= 0 &&
size_t(layer_id) < layers.size());
136 return layers[layer_id].material->get_failure_criterion();
#define THROW
Definition b2exception.H:198
Definition b2allocator.H:63
Definition b2exception.H:276
Definition b2object.H:415
Definition b2object.H:340
ObjectTypeIncomplete * get_subtype(const std::string &name_, Module &module_=b2000_module)
Definition b2object.H:369
OBJECT * new_object()
Definition b2object.H:348
Definition b2object.H:456
Definition b2rtable.H:427
std::string get_string(const std::string &key) const
Definition b2rtable.H:633
Definition b2failure_criterion.H:42
Definition b2material_property.H:85
Layer & operator[](const int layer_id)
Non-const access to the layer attributes.
Definition b2material_property.H:116
const FailureCriterion * get_failure_criterion(int layer_id=0) const override
Definition b2material_property.H:134
const Layer & operator[](const int layer_id) const
Const-access to the layer attributes.
Definition b2material_property.H:110
const RTable & get_rtable(int layer_id=0) const override
Definition b2material_property.H:127
void append_layer(const b2000::csda< double > thickness_, const b2000::csda< double > angle_, const int plygroup_, MaterialProperty *material_)
Definition b2material_property.H:103
int number_of_layer() const override
Definition b2material_property.H:121
Definition b2material_property.H:30
virtual const FailureCriterion * get_failure_criterion(int layer_id=0) const
Definition b2material_property.H:64
const std::string & get_object_name() const override
Definition b2material_property.H:68
virtual const RTable & get_rtable(int layer_id=0) const
Definition b2material_property.H:61
virtual int number_of_layer() const
Definition b2material_property.H:57
void init(const RTable &rtable_, Allocator &allocator)
Called by the Domain object.
Definition b2material_property.H:35
Contains the base classes for implementing Finite Elements.
Definition b2boundary_condition.H:32
GenericException< KeyError_name > KeyError
Definition b2exception.H:320