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_lift_response_function_coordinates_jump.h
Go to the documentation of this file.
1 // | / |
2 // ' / __| _` | __| _ \ __|
3 // . \ | ( | | ( |\__ `
4 // _|\_\_| \__,_|\__|\___/ ____/
5 // Multi-Physics
6 //
7 // License: BSD License
8 // Kratos default license: kratos/license.txt
9 //
10 //
11 // Main authors: Marc Nuñez, based on Martin Fusseder work, https://github.com/MFusseder
12 //
13 
14 #ifndef ADJOINT_LIFT_JUMP_COORDINATES_RESPONSE_FUNCTION_H
15 #define ADJOINT_LIFT_JUMP_COORDINATES_RESPONSE_FUNCTION_H
16 
17 
18 // System includes
19 
20 // External includes
21 
22 // Project includes
24 
25 
26 namespace Kratos
27 {
28 
31 
35 
39 
43 
47 
53 class KRATOS_API(COMPRESSIBLE_POTENTIAL_FLOW_APPLICATION) AdjointLiftJumpCoordinatesResponseFunction : public AdjointPotentialResponseFunction
54 {
55 public:
58 
63 
67 
70 
73 
77 
81  void InitializeSolutionStep() override;
82 
83  double CalculateValue(ModelPart& rModelPart) override;
84 
85  void CalculateGradient(const Element& rAdjointElement,
86  const Matrix& rResidualGradient,
87  Vector& rResponseGradient,
88  const ProcessInfo& rProcessInfo) override;
89 
90  void CalculateGradient(const Condition& rAdjointCondition,
91  const Matrix& rResidualGradient,
92  Vector& rResponseGradient,
93  const ProcessInfo& rProcessInfo) override;
94 
95  void CalculatePartialSensitivity(Element& rAdjointElement,
96  const Variable<double>& rVariable,
97  const Matrix& rSensitivityMatrix,
98  Vector& rSensitivityGradient,
99  const ProcessInfo& rProcessInfo) override;
100 
101  void CalculatePartialSensitivity(Condition& rAdjointCondition,
102  const Variable<double>& rVariable,
103  const Matrix& rSensitivityMatrix,
104  Vector& rSensitivityGradient,
105  const ProcessInfo& rProcessInfo) override;
106 
107  void CalculatePartialSensitivity(Element& rAdjointElement,
108  const Variable<array_1d<double, 3>>& rVariable,
109  const Matrix& rSensitivityMatrix,
110  Vector& rSensitivityGradient,
111  const ProcessInfo& rProcessInfo) override;
112 
113  void CalculatePartialSensitivity(Condition& rAdjointCondition,
114  const Variable<array_1d<double, 3>>& rVariable,
115  const Matrix& rSensitivityMatrix,
116  Vector& rSensitivityGradient,
117  const ProcessInfo& rProcessInfo) override;
118 
122 
126 
130 
134 
136 
137 protected:
140 
144 
148 
152 
156 
160 
164 
166 
167 private:
168 
171 
175 
176  Element::Pointer mpNeighboringElement;
177  double mReferenceChord;
178 
179 
183 
187 
188  void GetNeighboringElementPointer();
189 
193 
197 
201 
203 
204 }; // Class AdjointLiftJumpCoordinatesResponseFunction
205 
207 
210 
214 
216 
217 } // namespace Kratos.
218 
219 #endif // ADJOINT_NODAL_DISPLACEMENT_RESPONSE_FUNCTION_H_INCLUDED
AdjointLiftJumpCoordinatesResponseFunction.
Definition: adjoint_lift_response_function_coordinates_jump.h:54
KRATOS_CLASS_POINTER_DEFINITION(AdjointLiftJumpCoordinatesResponseFunction)
Definition: adjoint_potential_response_function.h:36
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
void InitializeSolutionStep(ConstructionUtility &rThisUtil, std::string ThermalSubModelPartName, std::string MechanicalSubModelPartName, std::string HeatFluxSubModelPartName, std::string HydraulicPressureSubModelPartName, bool thermal_conditions, bool mechanical_conditions, int phase)
Definition: add_custom_utilities_to_python.cpp:45
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21