dynLattice
Loading...
Searching...
No Matches
TangentOutputModule.h
Go to the documentation of this file.
1
11#pragma once
12
13#include <jem/base/Error.h>
14#include <jem/numeric/Sparse.h>
15#include <jem/numeric/sparse/select.h>
16#include <jive/algebra/AbstractMatrix.h>
17#include <jive/algebra/ConstrainedMatrix.h>
18#include <jive/algebra/SparseMatrixObject.h>
19#include <jive/app/Module.h>
20#include <jive/app/ModuleFactory.h>
21#include <jive/fem/FEMatrixBuilder.h>
22#include <jive/implict/Names.h>
23#include <jive/implict/NonlinModule.h>
24#include <jive/implict/SolverModule.h>
25#include <jive/implict/utilities.h>
26#include <jive/model/ModelFactory.h>
27#include <jive/solver/Solver.h>
28#include <jive/solver/declare.h>
29#include <jive/util/FuncUtils.h>
30
34
35using jem::Ref;
36using jem::numeric::Function;
37using jive::Properties;
38using jive::SparseMatrix;
39using jive::String;
40using jive::algebra::AbstractMatrix;
41using jive::algebra::ConstrainedMatrix;
42using jive::app::Module;
43using jive::app::ModuleFactory;
44using jive::fem::FEMatrixBuilder;
45using jive::implict::SolverModule;
46using jive::model::Model;
47using jive::util::FuncUtils;
48
57class TangentOutputModule : public Module
58{
59public:
60 JEM_DECLARE_CLASS(TangentOutputModule, Module);
61
64 static const char *TYPE_NAME;
66
69 explicit TangentOutputModule(const String &name = "tangentOutput");
70
76 virtual Status init(const Properties &conf, const Properties &props,
77 const Properties &globdat) override;
78
82 virtual Status run(const Properties &globdat) override;
83
86 virtual void shutdown(const Properties &globdat) override;
87
94 static Ref<Module> makeNew(const String &name, const Properties &conf,
95 const Properties &props, const Properties &globdat);
96
98 static void declare();
99
100private:
103
108 void readStrainStress_(const Vector &strains, const Vector &stresses,
109 const Properties &globdat);
110
114 void reportStrainStress_(const Vector &H, const Vector &N);
115
120 void getStrainStress_(const Matrix &strains, const Matrix &stresses,
121 const Properties &globdat);
122
127 void storeTangentProps_(const Matrix &strains, const Matrix &stresses,
128 const Properties &globdat);
129
134 void condenseMatrix_(const Matrix &strains, const Matrix &stresses,
135 const Properties &globdat);
137
138protected:
140 virtual ~TangentOutputModule();
141
142private:
145 String mode_;
146 idx_t rank_;
147 double thickness_;
148 double perturb_;
150
153 Ref<Model> masterModel_;
154 Ref<Function> sampleCond_;
155 Ref<GroupOutputModule> groupUpdate_;
156 Ref<SolverModule> solver_;
157 Ref<Constraints> cons_;
159
162 StringVector strains_;
163 StringVector stresses_;
164 StringVector sizes_;
165 IdxMatrix strainDofs_;
167};
Dirichlet boundary condition model for displacement control.
Specialized output module for periodic boundary condition analysis.
Periodic boundary conditions model for rectangular unit cells.
Module for tangent elastic property calculation via homogenization.
Definition TangentOutputModule.h:58
static const char * TYPE_NAME
Module type name.
Definition TangentOutputModule.h:64
virtual Status init(const Properties &conf, const Properties &props, const Properties &globdat) override
Initialize tangent property calculation.
Definition TangentOutputModule.cpp:32
virtual Status run(const Properties &globdat) override
Run tangent property calculation.
Definition TangentOutputModule.cpp:145
virtual void shutdown(const Properties &globdat) override
Shutdown module and finalize output.
Definition TangentOutputModule.cpp:140
static Ref< Module > makeNew(const String &name, const Properties &conf, const Properties &props, const Properties &globdat)
Factory method for creating new instances.
Definition TangentOutputModule.cpp:323
static void declare()
Register module type with factory.
Definition TangentOutputModule.cpp:334
virtual ~TangentOutputModule()
Protected destructor.
Definition TangentOutputModule.cpp:28