30#include "../../../Common/include/linear_algebra/CMatrixVectorProduct.hpp"
31#include "../../../Common/include/toolboxes/CSquareMatrixCM.hpp"
32#include "../variables/CSobolevSmoothingVariable.hpp"
50 std::vector<su2double> deltaP;
54 std::vector<bool> visited;
65 inline CVariable* GetBaseClassPointerToNodes()
override {
return nodes; }
111 unsigned long val_marker,
unsigned int nSurfDim = 1);
121 void Compute_Surface_Residual(
CGeometry* geometry,
const CConfig* config,
unsigned long val_marker);
131 void BC_Dirichlet(
const CGeometry* geometry,
const CConfig* config,
unsigned int val_marker);
136 void BC_Surface_Dirichlet(
const CGeometry* geometry,
const CConfig* config,
unsigned int val_marker);
147 template <
typename scalar_type>
154 void CalculateOriginalGradient(
CGeometry *geometry,
162 void RecordTapeAndCalculateOriginalGradient(
CGeometry *geometry,
171 void OutputDVGradient(
const CConfig* config,
string out_file =
"delta_p.txt");
180 void RecordParameterizationJacobian(
CGeometry *geometry,
188 void ProjectDVtoMesh(
CGeometry *geometry,
189 std::vector<su2double>& seeding,
197 void ProjectMeshToDV(
CGeometry *geometry,
199 std::vector<su2double>& output,
207 void WriteSensToGeometry(
CGeometry* geometry)
const override;
213 void ReadSensFromGeometry(
const CGeometry *geometry)
override;
227 unsigned long indexNode,
235 void Set_VertexEliminationSchedule(
CGeometry* geometry,
const CConfig* config);
241 void Complete_Surface_StiffMatrix(
const CGeometry* geometry);
249 static void GetElemKindAndNumNodes(
unsigned short VTK_Type,
int& EL_KIND,
unsigned int& nNodes) {
259 default: assert(
false); nNodes = 0; EL_KIND = -(1<<30);
break;
267 inline void SetCurrentDim(
unsigned int iDim) {
274 inline unsigned int GetCurrentDim()
const {
Main class for defining the problem; basically this class reads the configuration file,...
Definition CConfig.hpp:64
Base class for FEM elasticity solvers.
Definition CFEASolverBase.hpp:41
Parent class for defining the geometry of the problem (complete geometry, multigrid agglomerated geom...
Definition CGeometry.hpp:75
CPoint * nodes
Node vector (dual grid information).
Definition CGeometry.hpp:253
Main class for defining a Sobolev-based gradient smoothing.
Definition CGradientSmoothingSolver.hpp:40
void ApplyGradientSmoothingSurface(CGeometry *geometry, CNumerics *numerics, const CConfig *config) override
Main routine to apply the method only on the surface for mesh sensitivities Projects and smoothes onl...
Definition CGradientSmoothingSolver.cpp:219
void ApplyGradientSmoothingVolume(CGeometry *geometry, CNumerics *numerics, const CConfig *config) override
Main routine for applying the solver on the volume sensitivities.
Definition CGradientSmoothingSolver.cpp:176
void ApplyGradientSmoothingDV(CGeometry *geometry, CNumerics *numerics, CSurfaceMovement *surface_movement, CVolumetricMovement *grid_movement, CConfig *config, su2double **Gradient) override
All steps required for smoothing the whole system on DV level in an iterative way.
Definition CGradientSmoothingSolver.cpp:251
~CGradientSmoothingSolver(void)
Destructor of the class.
Definition CGradientSmoothingSolver.cpp:169
Class for defining the numerical methods.
Definition CNumerics.hpp:48
su2double GetCoord(unsigned long iPoint, unsigned long iDim) const
Get the coordinates dor the control volume.
Definition CPoint.hpp:158
Definition CSobolevSmoothingVariable.hpp:33
Class to store a dense general square matrix that uses the Column Major order storage format....
Definition CSquareMatrixCM.hpp:39
Class for moving the surface numerical grid.
Definition CSurfaceMovement.hpp:38
Specialization of matrix-vector product that uses CSysMatrix class.
Definition CMatrixVectorProduct.hpp:70
Class for holding and manipulating vectors needed by linear solvers.
Definition CSysVector.hpp:195
Main class for defining the variables.
Definition CVariable.hpp:50
Class for moving the volumetric numerical grid.
Definition CVolumetricMovement.hpp:37
passivedouble su2double
Definition code_config.hpp:181
const int EL_QUAD
Elements of four nodes (2D).
Definition option_structure.hpp:617
@ TRIANGLE
VTK nomenclature for defining a triangle element.
Definition option_structure.hpp:134
@ PYRAMID
VTK nomenclature for defining a pyramid element.
Definition option_structure.hpp:139
@ PRISM
VTK nomenclature for defining a prism element.
Definition option_structure.hpp:138
@ QUADRILATERAL
VTK nomenclature for defining a quadrilateral element.
Definition option_structure.hpp:135
@ HEXAHEDRON
VTK nomenclature for defining a hexahedron element.
Definition option_structure.hpp:137
@ LINE
VTK nomenclature for defining a line element.
Definition option_structure.hpp:133
@ TETRAHEDRON
VTK nomenclature for defining a tetrahedron element.
Definition option_structure.hpp:136
const int EL_TRIA2
Elements of three nodes (2D), with second order gauss quadrature.
Definition option_structure.hpp:618
const int EL_TETRA2
Elements of four nodes, with second order gauss quadrature (3D).
Definition option_structure.hpp:624
const int EL_LINE
Types of finite elements (in 1D or 2D or 3D)
Definition option_structure.hpp:614
const int EL_PYRAM2
Elements of five nodes, with third order gauss quadrature (3D).
Definition option_structure.hpp:625
const int EL_HEXA
Elements of eight nodes (3D).
Definition option_structure.hpp:621
const int EL_PRISM
Elements of six nodes (3D).
Definition option_structure.hpp:623