dynLattice
Loading...
Searching...
No Matches
LatticeModel.h
Go to the documentation of this file.
1
7#pragma once
8
9#include <jem/base/Array.h>
10#include <jem/base/CString.h>
11#include <jem/base/Class.h>
12#include <jem/base/IllegalInputException.h>
13#include <jem/base/System.h>
14#include <jem/base/array/Array.h>
15#include <jem/numeric/algebra/utilities.h>
16#include <jem/util/ArrayBuffer.h>
17#include <jem/util/Properties.h>
18#include <jive/algebra/AbstractMatrix.h>
19#include <jive/algebra/MatrixBuilder.h>
20#include <jive/fem/ElementGroup.h>
21#include <jive/fem/ElementSet.h>
22#include <jive/model/Actions.h>
23#include <jive/model/Model.h>
24#include <jive/model/ModelFactory.h>
25#include <jive/model/StateVector.h>
26#include <jive/util/Assignable.h>
27#include <jive/util/DofSpace.h>
28#include <jive/util/Globdat.h>
29#include <jive/util/ObjectConverter.h>
30#include <jive/util/XTable.h>
31#include <jive/util/utilities.h>
32
33using jem::Array;
34using jem::idx_t;
35using jem::newInstance;
36using jem::Ref;
37using jem::numeric::dotProduct;
38using jem::util::ArrayBuffer;
39using jive::IdxVector;
40using jive::Properties;
41using jive::String;
42using jive::StringVector;
43using jive::Vector;
44using jive::algebra::AbstractMatrix;
45using jive::algebra::MatrixBuilder;
46using jive::fem::ElementGroup;
47using jive::fem::ElementSet;
48using jive::model::ActionParams;
49using jive::model::Actions;
50using jive::model::Model;
51using jive::model::ModelFactory;
52using jive::model::StateVector;
53using jive::util::Assignable;
54using jive::util::DofSpace;
55using jive::util::Globdat;
56using jive::util::XTable;
57
62class LatticeModel : public Model
63{
64public:
67 static const char *TYPE_NAME;
68 static const char *CHILD_PROPS;
69 static const char *ROD_CONTACT_PROP;
70 static const char *JOINT_CONTACT_PROP;
71 static const char *ROD_LIST_PROP;
72 static const char *NAME_PREFIX;
74
75 JEM_DECLARE_CLASS(LatticeModel, Model);
76
82 explicit LatticeModel
83
84 (const String &name,
85 const Properties &conf,
86 const Properties &props,
87 const Properties &globdat);
88
94 virtual bool takeAction
95
96 (const String &action,
97 const Properties &params,
98 const Properties &globdat) override;
99
103 double getKineticEnergy(const Properties &globdat) const;
104
109 void getKineticEnergy(XTable &energy_table, const Vector &table_weights, const Properties &globdat) const;
110
114 double getMass(const Properties &globdat) const;
115
120 void getMass(XTable &mass_table, const Vector &table_weights, const Properties &globdat) const;
121
128 static Ref<Model> makeNew
129
130 (const String &name,
131 const Properties &conf,
132 const Properties &props,
133 const Properties &globdat);
134
136 static void declare();
137
138private:
141 Array<Ref<Model>> children_;
142 Ref<Model> contact_;
143 Ref<Model> jointContact_;
145
148 Ref<AbstractMatrix> M_;
150};
Model for managing lattice structures composed of rod elements.
Definition LatticeModel.h:63
virtual bool takeAction(const String &action, const Properties &params, const Properties &globdat) override
Handle model actions for lattice coordination.
Definition LatticeModel.cpp:110
double getMass(const Properties &globdat) const
Calculate total mass of the lattice.
Definition LatticeModel.cpp:286
static const char * ROD_LIST_PROP
Rod list property.
Definition LatticeModel.h:71
static const char * NAME_PREFIX
Child name prefix.
Definition LatticeModel.h:72
static const char * ROD_CONTACT_PROP
Rod contact model property.
Definition LatticeModel.h:69
static Ref< Model > makeNew(const String &name, const Properties &conf, const Properties &props, const Properties &globdat)
Factory method for creating new LatticeModel instances.
Definition LatticeModel.cpp:323
double getKineticEnergy(const Properties &globdat) const
Calculate total kinetic energy of the lattice.
Definition LatticeModel.cpp:223
static const char * TYPE_NAME
Model type name.
Definition LatticeModel.h:67
static void declare()
Register LatticeModel type with ModelFactory.
Definition LatticeModel.cpp:334
static const char * JOINT_CONTACT_PROP
Joint contact model property.
Definition LatticeModel.h:70
static const char * CHILD_PROPS
Child model properties.
Definition LatticeModel.h:68