dynLattice
Loading...
Searching...
No Matches
PeriodicBCModel.h
Go to the documentation of this file.
1
13#pragma once
14
15#include <jem/base/Object.h>
16
17#include <cmath>
18
19#include <jem/base/Float.h>
20#include <jem/util/Properties.h>
21#include <jem/util/PropertyException.h>
22
23#include <jive/Array.h>
24#include <jive/fem/NodeGroup.h>
25#include <jive/fem/NodeSet.h>
26#include <jive/implict/ArclenActions.h>
27#include <jive/model/Actions.h>
28#include <jive/model/Model.h>
29#include <jive/model/ModelFactory.h>
30#include <jive/model/Names.h>
31#include <jive/model/StateVector.h>
32#include <jive/util/Assignable.h>
33#include <jive/util/Constraints.h>
34#include <jive/util/DofSpace.h>
35#include <jive/util/Globdat.h>
36
38#include "utils/helpers.h"
39#include "utils/testing.h"
40
41using jem::util::Properties;
42using jive::BoolMatrix;
43using jive::IdxMatrix;
44using jive::fem::NodeGroup;
45using jive::fem::NodeSet;
46using jive::implict::ArclenActions;
47using jive::implict::ArclenParams;
48using jive::model::Model;
49using jive::model::StateVector;
50using jive::util::Assignable;
51using jive::util::Constraints;
52using jive::util::DofSpace;
53using jive::util::Globdat;
54
57
58//-----------------------------------------------------------------------
59// class PeriodicBCModel
60//-----------------------------------------------------------------------
61
79class PeriodicBCModel : public Model
80{
81public:
84 static const char *TYPE_NAME;
85 static const char *MODE_PROP;
86 static const char *GRAD_PROP;
87 static const char *DOF_NAMES_PROP;
88 static const char *ROT_NAMES_PROP;
89 static const char *FIXEDGRAD_PARAM;
91
92 JEM_DECLARE_CLASS(PeriodicBCModel, Model);
93
95 enum Mode
96 {
99 DISP
100 };
101
107 explicit PeriodicBCModel(const String &name,
108 const Properties &conf,
109 const Properties &props,
110 const Properties &globdat);
111
117 virtual bool takeAction(const String &action,
118 const Properties &params,
119 const Properties &globdat) override;
120
127 static Ref<Model> makeNew(const String &name,
128 const Properties &conf,
129 const Properties &props,
130 const Properties &globdat);
131
133 static void declare();
134
135private:
138 void init_(const Properties &globdat);
139
144 void fixCorners_(const Properties &globdat,
145 const Matrix &currentGrad,
146 const double scale = NAN);
147
149 void setConstraints_();
150
155 void getExtVec_(const Vector &f,
156 const Properties &globdat,
157 const double scale = 1.);
158
159private:
160 Assignable<NodeSet> nodes_;
161 Ref<DofSpace> dofs_;
162 Ref<Constraints> cons_;
163 String gradName_;
164 Matrix grad_;
165 StringVector dofNames_;
166 StringVector rotNames_;
167 IdxVector jdofs_;
168 IdxVectorMatrix masterEdgeDofs_;
169 IdxVectorMatrix slaveEdgeDofs_;
170 IdxMatrix cornerDofs_;
171 IdxVector corner0Dofs_;
172 idx_t pbcRank_;
173 Mode mode_;
174 bool ghostCorners_;
175};
Module for generating periodic boundary condition node groups.
Model for applying periodic boundary conditions on rectangular unit cells.
Definition PeriodicBCModel.h:80
Mode
Operation modes.
Definition PeriodicBCModel.h:96
@ DISP
Displacement control mode.
Definition PeriodicBCModel.h:99
@ UPD
Update mode.
Definition PeriodicBCModel.h:98
@ LOAD
Load control mode (NOT IMPLEMENTED)
Definition PeriodicBCModel.h:97
static const char * GRAD_PROP
Gradient property.
Definition PeriodicBCModel.h:86
static const char * ROT_NAMES_PROP
Rotation DOF names property.
Definition PeriodicBCModel.h:88
static const char * DOF_NAMES_PROP
DOF names property.
Definition PeriodicBCModel.h:87
static const char * FIXEDGRAD_PARAM
Fixed gradient parameter.
Definition PeriodicBCModel.h:89
static void declare()
Declare model type to factory.
Definition PeriodicBCModel.cpp:385
static const char * MODE_PROP
Operation mode property.
Definition PeriodicBCModel.h:85
static Ref< Model > makeNew(const String &name, const Properties &conf, const Properties &props, const Properties &globdat)
Create new PeriodicBCModel instance.
Definition PeriodicBCModel.cpp:379
static const char * TYPE_NAME
Model type name.
Definition PeriodicBCModel.h:84
virtual bool takeAction(const String &action, const Properties &params, const Properties &globdat) override
Handle model actions.
Definition PeriodicBCModel.cpp:112
file containing some basic helper functions
void vec2mat(const Matrix &mat, const Vector &vec)
rearrange a vector into a matrix.
Definition helpers.cpp:113
Array< IdxVector, 2 > IdxVectorMatrix
Definition helpers.h:49
several compiler macros for faster testing of variables