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
64class TangentOutputModule : public Module
65{
66 public:
67 JEM_DECLARE_CLASS(TangentOutputModule, Module);
68
71 static const char *TYPE_NAME;
73
76 explicit TangentOutputModule(const String &name = "tangentOutput");
77
83 virtual Status init(const Properties &conf, const Properties &props,
84 const Properties &globdat) override;
85
89 virtual Status run(const Properties &globdat) override;
90
93 virtual void shutdown(const Properties &globdat) override;
94
101 static Ref<Module> makeNew(const String &name, const Properties &conf,
102 const Properties &props, const Properties &globdat);
103
105 static void declare();
106
107 private:
110
115 void readStrainStress_(const Vector &strains, const Vector &stresses,
116 const Properties &globdat);
117
121 void reportStrainStress_(const Vector &H, const Vector &N);
122
127 void getStrainStress_(const Matrix &strains, const Matrix &stresses,
128 const Properties &globdat);
129
134 void storeTangentProps_(const Matrix &strains, const Matrix &stresses,
135 const Properties &globdat);
136
141 void condenseMatrix_(const Matrix &strains, const Matrix &stresses,
142 const Properties &globdat);
144
145 protected:
147 virtual ~TangentOutputModule();
148
149 private:
152 String mode_;
153 idx_t rank_;
154 double thickness_;
155 double perturb_;
157
160 Ref<Model> masterModel_;
161 Ref<Function> sampleCond_;
162 Ref<GroupOutputModule> groupUpdate_;
163 Ref<SolverModule> solver_;
164 Ref<Constraints> cons_;
166
169 StringVector strains_;
170 StringVector stresses_;
171 StringVector sizes_;
172 IdxMatrix strainDofs_;
174};
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:65
static const char * TYPE_NAME
Module type name.
Definition TangentOutputModule.h:71
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:330
static void declare()
Register module type with factory.
Definition TangentOutputModule.cpp:341
virtual ~TangentOutputModule()
Protected destructor.
Definition TangentOutputModule.cpp:28