KratosMultiphysics
KRATOS Multiphysics (Kratos) is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.
adjoint_linear_strain_energy_response_function.h
Go to the documentation of this file.
1 // KRATOS ___| | | |
2 // \___ \ __| __| | | __| __| | | __| _` | |
3 // | | | | | ( | | | | ( | |
4 // _____/ \__|_| \__,_|\___|\__|\__,_|_| \__,_|_| MECHANICS
5 //
6 // License: BSD License
7 // license: StructuralMechanicsApplication/license.txt
8 //
9 // Main authors: Martin Fusseder, https://github.com/MFusseder
10 //
11 
12 #pragma once
13 
14 // System includes
15 
16 // External includes
17 
18 // Project includes
20 
21 namespace Kratos
22 {
23 
26 
30 
34 
38 
42 
48 class KRATOS_API(STRUCTURAL_MECHANICS_APPLICATION) AdjointLinearStrainEnergyResponseFunction : public AdjointStructuralResponseFunction
49 {
50 public:
53 
55 
60 
64 
66  AdjointLinearStrainEnergyResponseFunction(ModelPart& rModelPart, Parameters ResponseSettings);
67 
70 
74 
78 
79  void Initialize() override;
80 
81  void CalculatePartialSensitivity(Element& rAdjointElement,
82  const Variable<double>& rVariable,
83  const Matrix& rSensitivityMatrix,
84  Vector& rSensitivityGradient,
85  const ProcessInfo& rProcessInfo) override;
86 
87  void CalculatePartialSensitivity(Element& rAdjointElement,
88  const Variable<array_1d<double, 3>>& rVariable,
89  const Matrix& rSensitivityMatrix,
90  Vector& rSensitivityGradient,
91  const ProcessInfo& rProcessInfo) override;
92 
93  void CalculatePartialSensitivity(Condition& rAdjointCondition,
94  const Variable<double>& rVariable,
95  const Matrix& rSensitivityMatrix,
96  Vector& rSensitivityGradient,
97  const ProcessInfo& rProcessInfo) override;
98 
99  void CalculatePartialSensitivity(Condition& rAdjointCondition,
100  const Variable<array_1d<double, 3>>& rVariable,
101  const Matrix& rSensitivityMatrix,
102  Vector& rSensitivityGradient,
103  const ProcessInfo& rProcessInfo) override;
104 
105  double CalculateValue(ModelPart& rModelPart) override;
106 
110 
114 
118 
122 
124 
125 protected:
128 
132 
136 
140 
144 
148 
152 
154 
155 private:
158 
162 
166 
170 
171  void CheckForBodyForces(Element& rAdjointElement);
172 
176 
180 
184 
186 
187 }; // Class AdjointLinearStrainEnergyResponseFunction
188 
190 
193 
197 
199 
200 } // namespace Kratos.
AdjointLinearStrainEnergyResponseFunction.
Definition: adjoint_linear_strain_energy_response_function.h:49
AdjointStructuralResponseFunction BaseType
Definition: adjoint_linear_strain_energy_response_function.h:54
KRATOS_CLASS_POINTER_DEFINITION(AdjointLinearStrainEnergyResponseFunction)
AdjointStructuralResponseFunction.
Definition: adjoint_structural_response_function.h:39
Base class for all Conditions.
Definition: condition.h:59
Base class for all Elements.
Definition: element.h:60
This class aims to manage meshes for multi-physics simulations.
Definition: model_part.h:77
This class provides to Kratos a data structure for I/O based on the standard of JSON.
Definition: kratos_parameters.h:59
ProcessInfo holds the current value of different solution parameters.
Definition: process_info.h:59
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21