114 virtual su2double GetBasis(
short val_i, su2double val_t);
122 virtual su2double
GetDerivative(
short val_i, su2double val_t,
short val_order);
129 virtual void SetOrder(
short val_order,
short n_controlpoints);
134 su2double GetOrder();
139 su2double GetDegree();
152 vector<vector<su2double> > N;
153 unsigned short KnotSize;
172 su2double GetBasis(
short val_i, su2double val_t);
180 su2double
GetDerivative(
short val_i, su2double val_t,
short val_order_der);
187 void SetOrder(
short val_order,
short n_controlpoints);
201 vector<su2double> binomial;
209 su2double GetBernstein(
short val_n,
short val_i, su2double val_t);
218 su2double GetBernsteinDerivative(
short val_n,
short val_i, su2double val_t,
short val_order_der);
227 su2double Binomial(
unsigned short n,
unsigned short m);
248 su2double GetBasis(
short val_i, su2double val_t);
256 su2double
GetDerivative(
short val_i, su2double val_t,
short val_order_der);
263 void SetOrder(
short val_order,
short n_controlpoints);
277 nControlPoints, nControlPoints_Copy;
278 su2double **Coord_Corner_Points,
279 ****Coord_Control_Points,
281 ****Coord_Control_Points_Copy,
283 unsigned short lOrder, lOrder_Copy,
286 unsigned short lDegree, lDegree_Copy,
287 mDegree, mDegree_Copy,
290 *cart_coord, *cart_coord_;
294 su2double MaxCoord[3];
295 su2double MinCoord[3];
298 vector<su2double> CartesianCoord[3];
299 vector<su2double> ParametricCoord[3];
326 CFreeFormDefBox(
unsigned short Degree[],
unsigned short BSplineOrder[],
unsigned short kind_blending);
337 void Set_Fix_IPlane(
unsigned short val_plane);
343 void Set_Fix_JPlane(
unsigned short val_plane);
349 void Set_Fix_KPlane(
unsigned short val_plane);
355 unsigned short Get_Fix_IPlane(
unsigned short val_index);
361 unsigned short Get_Fix_JPlane(
unsigned short val_index);
367 unsigned short Get_Fix_KPlane(
unsigned short val_index);
373 unsigned short Get_nFix_IPlane(
void);
379 unsigned short Get_nFix_JPlane(
void);
385 unsigned short Get_nFix_KPlane(
void);
391 void Set_MarkerIndex(
unsigned short val_iMarker);
397 void Set_VertexIndex(
unsigned long val_iVertex);
403 void Set_PointIndex(
unsigned long val_iPoint);
409 void Set_CartesianCoord(su2double *val_coord);
415 void Set_ParametricCoord(su2double *val_coord);
421 void SetParentFFDBox(
string val_iParentFFDBox);
427 void SetChildFFDBox(
string val_iChildFFDBox);
434 void Set_CartesianCoord(su2double *val_coord,
unsigned long val_iSurfacePoints);
441 void Set_ParametricCoord(su2double *val_coord,
unsigned long val_iSurfacePoints);
448 unsigned short Get_MarkerIndex(
unsigned long val_iSurfacePoints);
455 unsigned long Get_VertexIndex(
unsigned long val_iSurfacePoints);
462 unsigned long Get_PointIndex(
unsigned long val_iSurfacePoints);
469 su2double *Get_CartesianCoord(
unsigned long val_iSurfacePoints);
476 su2double *Get_ParametricCoord(
unsigned long val_iSurfacePoints);
483 unsigned long GetnSurfacePoint(
void);
490 unsigned short GetnParentFFDBox(
void);
497 unsigned short GetnChildFFDBox(
void);
504 string GetParentFFDBoxTag(
unsigned short val_ParentFFDBox);
511 string GetChildFFDBoxTag(
unsigned short val_ChildFFDBox);
524 void SetnCornerPoints(
unsigned short val_ncornerpoints);
530 unsigned short GetnCornerPoints(
void);
536 unsigned short GetnControlPoints(
void);
542 void SetnControlPoints(
void);
548 unsigned long GetnSurfacePoints(
void);
553 void SetUnitCornerPoints(
void);
560 void SetCoordCornerPoints(su2double *val_coord,
unsigned short val_icornerpoints);
569 void SetCoordCornerPoints(su2double val_xcoord, su2double val_ycoord, su2double val_zcoord,
unsigned short val_icornerpoints);
578 void SetCoordControlPoints(su2double *val_coord,
unsigned short iDegree,
unsigned short jDegree,
unsigned short kDegree);
587 void SetCoordControlPoints_Copy(su2double *val_coord,
unsigned short iDegree,
unsigned short jDegree,
unsigned short kDegree);
596 void SetParCoordControlPoints(su2double *val_coord,
unsigned short iDegree,
unsigned short jDegree,
unsigned short kDegree);
604 su2double GetCoordCornerPoints(
unsigned short val_dim,
unsigned short val_icornerpoints);
611 su2double *GetCoordCornerPoints(
unsigned short val_icornerpoints);
620 su2double *GetCoordControlPoints(
unsigned short val_iindex,
unsigned short val_jindex,
unsigned short val_kindex);
629 su2double *GetParCoordControlPoints(
unsigned short val_iindex,
unsigned short val_jindex,
unsigned short val_kindex);
634 void SetControlPoints_Parallelepiped(
void);
647 void SetControlPoints(
unsigned short *val_index, su2double *movement);
652 void SetOriginalControlPoints(
void);
659 void SetTecplot(
CGeometry *geometry,
unsigned short iFFDBox,
bool original);
666 void SetParaview(
CGeometry *geometry,
unsigned short iFFDBox,
bool original);
672 void SetCyl2Cart_ControlPoints(
CConfig *config);
678 void SetCart2Cyl_ControlPoints(
CConfig *config);
684 void SetCyl2Cart_CornerPoints(
CConfig *config);
690 void SetCart2Cyl_CornerPoints(
CConfig *config);
696 void SetSphe2Cart_ControlPoints(
CConfig *config);
702 void SetCart2Sphe_ControlPoints(
CConfig *config);
708 void SetSphe2Cart_CornerPoints(
CConfig *config);
714 void SetCart2Sphe_CornerPoints(
CConfig *config);
722 su2double *GetParametricCoord_Analytical(su2double *cart_coord);
732 su2double *GetParametricCoord_Iterative(
unsigned long iPoint, su2double *xyz, su2double *guess,
CConfig *config);
740 void CrossProduct(su2double *v1, su2double *v2, su2double *v3);
748 su2double DotProduct(su2double *v1, su2double *v2);
756 su2double *EvalCartesianCoord(su2double *ParamCoord);
762 unsigned short GetlOrder(
void);
768 unsigned short GetmOrder(
void);
774 unsigned short GetnOrder(
void);
780 void SetlOrder(
unsigned short val_lOrder);
786 void SetmOrder(
unsigned short val_mOrder);
792 void SetnOrder(
unsigned short val_nOrder);
800 bool GetPointFFD(
CGeometry *geometry,
CConfig *config,
unsigned long iPoint);
808 void SetDeformationZone(
CGeometry *geometry,
CConfig *config,
unsigned short iFFDBox);
817 su2double *GetFFDGradient(su2double *val_coord, su2double *xyz);
827 void GetFFDHessian(su2double *uvw, su2double *xyz, su2double **val_Hessian);
841 su2double GetDerivative1(su2double *uvw,
unsigned short val_diff,
unsigned short *ijk,
unsigned short *lmn);
855 su2double GetDerivative2(su2double *uvw,
unsigned short dim, su2double *xyz,
unsigned short *lmn);
869 su2double GetDerivative3(su2double *uvw,
unsigned short dim,
unsigned short diff_this,
870 unsigned short *lmn);
886 su2double GetDerivative4(su2double *uvw,
unsigned short val_diff,
unsigned short val_diff2,
887 unsigned short *ijk,
unsigned short *lmn);
905 su2double GetDerivative5(su2double *uvw,
unsigned short dim,
unsigned short diff_this,
unsigned short diff_this_also,
906 unsigned short *lmn);
913 su2double GetNorm(su2double *a);
919 void SetTag(
string val_tag);
931 void SetLevel(
unsigned short val_level);
937 unsigned short GetLevel(
void);
944 su2double Determinant_3x3(su2double A00, su2double A01, su2double A02, su2double A10, su2double A11,
945 su2double A12, su2double A20, su2double A21, su2double A22);
1009 su2double SetFEAMethodContributions_Elem(
CGeometry *geometry,
CConfig *config);
1021 void SetFEA_StiffMatrix3D(
CGeometry *geometry,
CConfig *config, su2double **StiffMatrix_Elem,
unsigned long PointCorners[8], su2double CoordCorners[8][3],
1022 unsigned short nNodes, su2double ElemVolume, su2double ElemDistance);
1034 void SetFEA_StiffMatrix2D(
CGeometry *geometry,
CConfig *config, su2double **StiffMatrix_Elem,
unsigned long PointCorners[8], su2double CoordCorners[8][3],
1035 unsigned short nNodes, su2double ElemVolume, su2double ElemDistance);
1045 su2double ShapeFunc_Hexa(su2double Xi, su2double Eta, su2double Zeta, su2double CoordCorners[8][3], su2double DShapeFunction[8][4]);
1055 su2double ShapeFunc_Tetra(su2double Xi, su2double Eta, su2double Zeta, su2double CoordCorners[8][3], su2double DShapeFunction[8][4]);
1065 su2double ShapeFunc_Pyram(su2double Xi, su2double Eta, su2double Zeta, su2double CoordCorners[8][3], su2double DShapeFunction[8][4]);
1075 su2double ShapeFunc_Prism(su2double Xi, su2double Eta, su2double Zeta, su2double CoordCorners[8][3], su2double DShapeFunction[8][4]);
1084 su2double ShapeFunc_Triangle(su2double Xi, su2double Eta, su2double CoordCorners[8][3], su2double DShapeFunction[8][4]);
1093 su2double ShapeFunc_Quadrilateral(su2double Xi, su2double Eta, su2double CoordCorners[8][3], su2double DShapeFunction[8][4]);
1099 su2double GetHexa_Volume(su2double CoordCorners[8][3]);
1105 su2double GetTetra_Volume(su2double CoordCorners[8][3]);
1111 su2double GetPrism_Volume(su2double CoordCorners[8][3]);
1117 su2double GetPyram_Volume(su2double CoordCorners[8][3]);
1123 su2double GetTriangle_Area(su2double CoordCorners[8][3]);
1129 su2double GetQuadrilateral_Area(su2double CoordCorners[8][3]);
1138 void AddFEA_StiffMatrix(
CGeometry *geometry, su2double **StiffMatrix_Elem,
unsigned long PointCorners[8],
unsigned short nNodes);
1144 void ComputeDeforming_Element_Volume(
CGeometry *geometry, su2double &MinVolume, su2double &MaxVolume);
1152 void ComputeDeforming_Wall_Distance(
CGeometry *geometry,
CConfig *config, su2double &MinDistance, su2double &MaxDistance);
1175 void Rigid_Rotation(
CGeometry *geometry,
CConfig *config,
unsigned short iZone,
unsigned long iter);
1184 void Rigid_Pitching(
CGeometry *geometry,
CConfig *config,
unsigned short iZone,
unsigned long iter);
1193 void Rigid_Plunging(
CGeometry *geometry,
CConfig *config,
unsigned short iZone,
unsigned long iter);
1202 void Rigid_Translation(
CGeometry *geometry,
CConfig *config,
unsigned short iZone,
unsigned long iter);
1210 void SetVolume_Scaling(
CGeometry *geometry,
CConfig *config,
bool UpdateGeo);
1218 void SetVolume_Translation(
CGeometry *geometry,
CConfig *config,
bool UpdateGeo);
1226 void SetVolume_Rotation(
CGeometry *geometry,
CConfig *config,
bool UpdateGeo);
1235 void SetVolume_Deformation(
CGeometry *geometry,
CConfig *config,
bool UpdateGeo,
bool Derivative =
false);
1265 su2double Determinant_3x3(su2double A00, su2double A01, su2double A02, su2double A10, su2double A11, su2double A12, su2double A20, su2double A21, su2double A22);
1272 void Set_nIterMesh(
unsigned long val_nIterMesh);
1278 unsigned long Get_nIterMesh(
void);
1318 void SetHicksHenne(
CGeometry *boundary,
CConfig *config,
unsigned short iDV,
bool ResetDef);
1327 void SetSurface_Bump(
CGeometry *boundary,
CConfig *config,
unsigned short iDV,
bool ResetDef);
1336 void SetAngleOfAttack(
CGeometry *boundary,
CConfig *config,
unsigned short iDV,
bool ResetDef);
1345 void SetCST(
CGeometry *boundary,
CConfig *config,
unsigned short iDV,
bool ResetDef);
1375 void SetRotation(
CGeometry *boundary,
CConfig *config,
unsigned short iDV,
bool ResetDef);
1384 void Moving_Walls(
CGeometry *geometry,
CConfig *config,
unsigned short iZone,
unsigned long iter);
1394 unsigned long iter,
unsigned short iZone);
1404 unsigned long iter,
unsigned short iZone);
1414 unsigned long iter,
unsigned short iZone);
1424 unsigned long iter,
unsigned short iZone);
1434 unsigned long iter,
unsigned short iZone);
1445 void AeroelasticDeform(
CGeometry *geometry,
CConfig *config,
unsigned long ExtIter,
unsigned short iMarker,
unsigned short iMarker_Monitoring, vector<su2double>& displacements);
1471 void SetExternal_Deformation(
CGeometry *geometry,
CConfig *config,
unsigned short iZone,
unsigned long iter);
1480 void SetTranslation(
CGeometry *boundary,
CConfig *config,
unsigned short iDV,
bool ResetDef);
1489 void SetScale(
CGeometry *boundary,
CConfig *config,
unsigned short iDV,
bool ResetDef);
1741 bool GetFFDBoxDefinition(
void);
1750 bool CheckFFDBoxDefinition(
CConfig* config,
unsigned short iDV);
1756 unsigned short GetnFFDBox(
void);
1762 unsigned short GetnLevel(
void);
Headers of the main subroutines for creating the geometrical structure. The subroutines and functions...
Headers of the main subroutines for creating the sparse matrices-by-blocks. The subroutines and funct...
In-Line subroutines of the grid_movement_structure.hpp file.
All the information about the definition of the physical problem. The subroutines and functions are i...
Parent class for defining the geometry of the problem (complete geometry, multigrid agglomerated geom...
Definition: geometry_structure.hpp:72
unsigned long nPointDomain
Number of points in the domain.
Definition: grid_movement_structure.hpp:962
double GetDerivative(const su2double &data)
Get the derivative value of the datatype (needs to be implemented for each new type).
Definition: codi_forward_structure.inl:44
Headers of the mpi interface for generalized datatypes. The subroutines and functions are in the mpi_...
unsigned long nIterMesh
Number of iterations in the mesh update. +.
Definition: grid_movement_structure.hpp:964
CSysMatrix StiffMatrix
Matrix to store the point-to-point stiffness.
Definition: grid_movement_structure.hpp:966
Class that defines the blending using Bernsteinpolynomials (Bezier Curves).
Definition: grid_movement_structure.hpp:197
Class for moving the surface numerical grid.
Definition: grid_movement_structure.hpp:1287
Class for moving the volumetric numerical grid.
Definition: grid_movement_structure.hpp:955
unsigned short nLevel
Level of the FFD FFDBoxes (parent/child).
Definition: grid_movement_structure.hpp:1291
Class for moving the surface and volumetric numerical grid (2D and 3D problems).
Definition: grid_movement_structure.hpp:62
Main class for defining sparse matrices-by-blocks with compressed row format.
Definition: matrix_structure.hpp:59
unsigned short nFFDBox
Number of FFD FFDBoxes.
Definition: grid_movement_structure.hpp:1290
unsigned long nPoint
Number of points.
Definition: grid_movement_structure.hpp:961
Headers for the classes related to linear solvers (CG, FGMRES, etc) The subroutines and functions are...
Class for holding and manipulating vectors needed by linear solvers.
Definition: vector_structure.hpp:60
bool FFDBoxDefinition
If the FFD FFDBox has been defined in the input file.
Definition: grid_movement_structure.hpp:1292
CFreeFormDefBox ** FFDBox
Definition of the Free Form Deformation Box.
Definition: grid_movement_structure.hpp:1289
Headers for the classes related to linear solvers (CG, FGMRES, etc) The subroutines and functions are...
Class that defines the blending using uniform BSplines.
Definition: grid_movement_structure.hpp:148
unsigned short nVar
Number of variables.
Definition: grid_movement_structure.hpp:959
Main class for defining the problem; basically this class reads the configuration file...
Definition: config_structure.hpp:68
const unsigned int MAX_NUMBER_FFD
Maximum number of FFDBoxes for the FFD.
Definition: option_structure.hpp:118
unsigned short nDim
Number of dimensions.
Definition: grid_movement_structure.hpp:958