dynLattice
Loading...
Searching...
No Matches
FollowerLoadModel.h
Go to the documentation of this file.
1
7#pragma once
8
9#include <jem/base/Class.h>
10#include <jem/util/Properties.h>
11
12#include <jive/Array.h>
13#include <jive/fem/NodeGroup.h>
14#include <jive/fem/NodeSet.h>
15#include <jive/model/Actions.h>
16#include <jive/model/Model.h>
17#include <jive/model/ModelFactory.h>
18#include <jive/model/StateVector.h>
19#include <jive/util/Assignable.h>
20#include <jive/util/DofSpace.h>
21
22#include "utils/helpers.h"
23#include "utils/testing.h"
24
25using jem::newInstance;
26using jem::Ref;
27using jem::String;
28using jem::System;
29using jem::util::Properties;
30
31using jive::StringVector;
32using jive::fem::NodeGroup;
33using jive::fem::NodeSet;
34using jive::model::ActionParams;
35using jive::model::Actions;
36using jive::model::Model;
37using jive::model::StateVector;
38using jive::util::Assignable;
39using jive::util::DofSpace;
40
43
48class FollowerLoadModel : public Model
49{
50public:
53 static const char *TYPE_NAME;
54 static const char *NODES_PROP;
55 static const char *START_PROP;
56 static const char *DOF_PROP;
57 static const char *ROT_DOF_PROP;
59
60 JEM_DECLARE_CLASS(FollowerLoadModel, Model);
61
67 explicit FollowerLoadModel
68
69 (const String &name,
70 const Properties &conf,
71 const Properties &props,
72 const Properties &globdat);
73
79 virtual bool takeAction
80
81 (const String &action,
82 const Properties &params,
83 const Properties &globdat) override;
84
91 static Ref<Model> makeNew
92
93 (const String &name,
94 const Properties &conf,
95 const Properties &props,
96 const Properties &globdat);
97
99 static void declare();
100
101private:
106 void get_ext_vec_(const Vector &fext,
107 const double scale,
108 const Properties &globdat) const;
109
113 void advance_rots_(const Vector &d) const;
114
117 Assignable<NodeSet> nodes_;
118 String nameGroup_;
119 Assignable<NodeGroup> group_;
120 Ref<DofSpace> dofs_;
122
125 StringVector forceDOFs_;
126 IdxVector iForceDOFs_;
127 StringVector rotDOFs_;
128 IdxVector iRotDOFs_;
130
133 Vector orgDir_;
134 Cubix rotMats_;
136};
Model for applying follower loads that rotate with nodal rotations.
Definition FollowerLoadModel.h:49
virtual bool takeAction(const String &action, const Properties &params, const Properties &globdat) override
Handle model actions (INIT, ADVANCE, GET_EXT_VECTOR)
Definition FollowerLoadModel.cpp:63
static Ref< Model > makeNew(const String &name, const Properties &conf, const Properties &props, const Properties &globdat)
Factory method for creating new FollowerLoadModel instances.
Definition FollowerLoadModel.cpp:173
static const char * DOF_PROP
Force DOF types.
Definition FollowerLoadModel.h:56
static const char * TYPE_NAME
Definition FollowerLoadModel.h:53
static void declare()
Register FollowerLoadModel type with ModelFactory.
Definition FollowerLoadModel.cpp:184
static const char * START_PROP
Initial force direction.
Definition FollowerLoadModel.h:55
static const char * NODES_PROP
Node group property.
Definition FollowerLoadModel.h:54
static const char * ROT_DOF_PROP
Rotational DOF types.
Definition FollowerLoadModel.h:57
file containing some basic helper functions
void expVec(const Matrix &Exp, const Vector &psi)
compute the exponential of a axial vector.
Definition helpers.cpp:139
Matrix eye(const idx_t dim)
generates an identity matrix of the given dimension.
Definition helpers.cpp:88
several compiler macros for faster testing of variables