Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
f50785a
general cleanup
pcarruscag Mar 11, 2020
49f7d62
cleanup RBF interpolation
pcarruscag Mar 17, 2020
ff8c57f
prune tolerance for sparse RBF interpolation matrix
pcarruscag Mar 17, 2020
8896112
RBF interpolation in parallel
pcarruscag Mar 17, 2020
47ad5d1
adjust some settings in regression case to make it closer to reference
pcarruscag Mar 17, 2020
04fff4b
move pruning to separate function
pcarruscag Mar 17, 2020
d077e55
move one more chunk of code to separate function
pcarruscag Mar 17, 2020
9185ca9
hybrid parallel nearest neighbor search
pcarruscag Mar 18, 2020
b7223b2
general cleanup of all interpolation classes
pcarruscag Mar 18, 2020
b6da6e9
strip trailing spaces
pcarruscag Mar 18, 2020
aaad242
split interpolation_structure
pcarruscag Mar 18, 2020
b32753c
cleanup interface preprocessing
pcarruscag Mar 18, 2020
e1fa6df
move CSymmetricMatrix to toolboxes
pcarruscag Mar 18, 2020
7197721
cleanup CMirror, make search hybrid parallel
pcarruscag Mar 18, 2020
fe8fcc9
generalize CNearestNeighbor for KNN
pcarruscag Mar 18, 2020
dd1cdce
more cleanup, try to recover behavior of testcase
pcarruscag Mar 18, 2020
c0504ff
fix build issues
pcarruscag Mar 18, 2020
a61f3b8
const use of CConfig in CInterpolator
pcarruscag Mar 19, 2020
02df871
more const correctness
pcarruscag Mar 19, 2020
759e8a7
more blas 3 optimization of RBF interpolation, some cleanup of CVertex
pcarruscag Mar 19, 2020
9ef625a
fix deallocation bug in C2DContainer for systems with weird aligned_a…
pcarruscag Mar 19, 2020
faafa22
more CSymmetricMatrix optimization
pcarruscag Mar 19, 2020
72da532
fix AD build
pcarruscag Mar 19, 2020
6864175
basic interpolation statistics and error checking
pcarruscag Mar 19, 2020
f48e235
cleaner computation of RBF polynomial terms
pcarruscag Mar 20, 2020
2af4b88
fix bug in pruning of coefficients, more interp stats
pcarruscag Mar 20, 2020
41598d8
some indentation in CConfig
pcarruscag Mar 23, 2020
d67df29
cleanup CFEAIteration
pcarruscag Mar 23, 2020
429ff42
nearest neighbor stats
pcarruscag Mar 24, 2020
ae7fae5
simplify "initial_calc" logic of CFEASolver to avoid confusing user e…
pcarruscag Mar 24, 2020
01d8531
fix, CFL_REDUCTION_TURB had no effect
pcarruscag Mar 25, 2020
5884e98
Merge branch 'hybrid_parallel_fallback_strategies' into feature_hybri…
pcarruscag Mar 25, 2020
9e825c9
Merge branch 'multiphysics_interpolation_improvements' into feature_h…
pcarruscag Mar 25, 2020
3553116
update testcases after re-enabling option CFL_REDUCTION_TURB
pcarruscag Mar 26, 2020
40ab0d7
Merge remote-tracking branch 'upstream/develop' into multiphysics_int…
pcarruscag Mar 26, 2020
0975fd8
Merge remote-tracking branch 'upstream/develop' into multiphysics_int…
pcarruscag Mar 28, 2020
56b7c55
option to define a region of maximum mesh stiffness around deforming …
pcarruscag Mar 28, 2020
1fa58da
initialize the linear system solution of CMeshSolver
pcarruscag Mar 28, 2020
afa4154
mitigate bug affecting displacement boundary conditions caused by par…
pcarruscag Mar 30, 2020
f9aa579
small fix
pcarruscag Mar 30, 2020
bf4366b
ensure MPI-independence (consistent ordering of donor points) of RBF …
pcarruscag Mar 30, 2020
c120270
MPI-independent nearest neighbor search
pcarruscag Mar 31, 2020
259a770
simplify (and fix) FSI load integration
pcarruscag Mar 31, 2020
cf259f3
update jones turbo case from merge with develop
pcarruscag Mar 31, 2020
33fd0a9
Merge remote-tracking branch 'upstream/develop' into multiphysics_int…
pcarruscag Mar 31, 2020
96802c6
avoid residual changes for mesh deformation cases
pcarruscag Mar 31, 2020
fee22d5
re-delete files after merge with develop
pcarruscag Mar 31, 2020
123f008
update primal FSI cases due to initialized mesh deformation
pcarruscag Mar 31, 2020
83bb15d
fix for disc adj FEA problems
pcarruscag Mar 31, 2020
5e5237c
updates and fixes for testcases
pcarruscag Mar 31, 2020
2cb89b4
Merge remote-tracking branch 'upstream/develop' into multiphysics_int…
pcarruscag Mar 31, 2020
f73eec5
version update in new file
pcarruscag Mar 31, 2020
4944e2e
fix #915
pcarruscag Apr 1, 2020
0015fb5
refactor isoparametric interpolation
pcarruscag Apr 2, 2020
8fc82a5
small fixes
pcarruscag Apr 2, 2020
66cef89
tuning parameters
pcarruscag Apr 2, 2020
209c7f3
fix uninit variable
pcarruscag Apr 2, 2020
74ffc2e
small tweaks
pcarruscag Apr 2, 2020
abf5b0f
robustness improvements
pcarruscag Apr 3, 2020
79dcfae
old compiler fixes
pcarruscag Apr 3, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 38 additions & 20 deletions Common/include/CConfig.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -605,16 +605,17 @@ class CConfig {
su2double Min_Beta_RoeTurkel, /*!< \brief Minimum value of Beta for the Roe-Turkel low Mach preconditioner. */
Max_Beta_RoeTurkel; /*!< \brief Maximum value of Beta for the Roe-Turkel low Mach preconditioner. */
unsigned long GridDef_Nonlinear_Iter; /*!< \brief Number of nonlinear increments for grid deformation. */
unsigned short Deform_Stiffness_Type; /*!< \brief Type of element stiffness imposed for FEA mesh deformation. */
unsigned short Deform_StiffnessType; /*!< \brief Type of element stiffness imposed for FEA mesh deformation. */
bool Deform_Mesh; /*!< \brief Determines whether the mesh will be deformed. */
bool Deform_Output; /*!< \brief Print the residuals during mesh deformation to the console. */
su2double Deform_Tol_Factor; /*!< \brief Factor to multiply smallest volume for deform tolerance (0.001 default) */
su2double Deform_Coeff; /*!< \brief Deform coeffienct */
su2double Deform_Limit; /*!< \brief Deform limit */
unsigned short FFD_Continuity; /*!< \brief Surface continuity at the intersection with the FFD */
unsigned short FFD_CoordSystem; /*!< \brief Define the coordinates system */
su2double Deform_ElasticityMod,
Deform_PoissonRatio; /*!< \brief Young's Modulus and poisson ratio for volume deformation stiffness model */
su2double Deform_ElasticityMod, /*!< \brief Young's modulus for volume deformation stiffness model */
Deform_PoissonRatio, /*!< \brief Poisson's ratio for volume deformation stiffness model */
Deform_StiffLayerSize; /*!< \brief Size of the layer of highest stiffness for wall distance-based mesh stiffness */
bool Visualize_Surface_Def; /*!< \brief Flag to visualize the surface deformacion in SU2_DEF. */
bool Visualize_Volume_Def; /*!< \brief Flag to visualize the volume deformation in SU2_DEF. */
bool FFD_Symmetry_Plane; /*!< \brief FFD symmetry plane. */
Expand Down Expand Up @@ -988,9 +989,11 @@ class CConfig {
unsigned short Pred_Order; /*!< \brief Order of the predictor for FSI applications. */
unsigned short Kind_Interpolation; /*!< \brief type of interpolation to use for FSI applications. */
bool ConservativeInterpolation; /*!< \brief Conservative approach for non matching mesh interpolation. */
unsigned short NumNearestNeighbors; /*!< \brief Number of neighbors used for Nearest Neighbor interpolation. */
unsigned short Kind_RadialBasisFunction; /*!< \brief type of radial basis function to use for radial basis FSI. */
bool RadialBasisFunction_PolynomialOption; /*!< \brief Option of whether to include polynomial terms in Radial Basis Function Interpolation or not. */
su2double RadialBasisFunction_Parameter; /*!< \brief Radial basis function parameter. */
su2double RadialBasisFunction_Parameter; /*!< \brief Radial basis function parameter (radius). */
su2double RadialBasisFunction_PruneTol; /*!< \brief Tolerance to prune the RBF interpolation matrix. */
bool Prestretch; /*!< \brief Read a reference geometry for optimization purposes. */
string Prestretch_FEMFileName; /*!< \brief File name for reference geometry. */
string FEA_FileName; /*!< \brief File name for element-based properties. */
Expand Down Expand Up @@ -3460,27 +3463,27 @@ class CConfig {
unsigned short GetMarker_All_ZoneInterface(unsigned short val_marker) const { return Marker_All_ZoneInterface[val_marker]; }

/*!
* \brief Get the MixingPlane interface information for a marker <i>val_marker</i>.
* \param[in] val_marker value of the marker on the grid.
* \return 0 if is not part of the MixingPlane Interface and greater than 1 if it is part.
*/
* \brief Get the MixingPlane interface information for a marker <i>val_marker</i>.
* \param[in] val_marker value of the marker on the grid.
* \return 0 if is not part of the MixingPlane Interface and greater than 1 if it is part.
*/
unsigned short GetMarker_All_MixingPlaneInterface(unsigned short val_marker) const { return Marker_All_MixingPlaneInterface[val_marker]; }

/*!
* \brief Get the Turbomachinery information for a marker <i>val_marker</i>.
* \param[in] val_marker value of the marker on the grid.
* \return 0 if is not part of the Turbomachinery and greater than 1 if it is part.
*/
/*!
* \brief Get the Turbomachinery information for a marker <i>val_marker</i>.
* \param[in] val_marker value of the marker on the grid.
* \return 0 if is not part of the Turbomachinery and greater than 1 if it is part.
*/
unsigned short GetMarker_All_Turbomachinery(unsigned short val_marker) const { return Marker_All_Turbomachinery[val_marker]; }

/*!
* \brief Get the Turbomachinery flag information for a marker <i>val_marker</i>.
* \param[in] val_marker value of the marker on the grid.
* \return 0 if is not part of the Turbomachinery, flag INFLOW or OUTFLOW if it is part.
*/
/*!
* \brief Get the Turbomachinery flag information for a marker <i>val_marker</i>.
* \param[in] val_marker value of the marker on the grid.
* \return 0 if is not part of the Turbomachinery, flag INFLOW or OUTFLOW if it is part.
*/
unsigned short GetMarker_All_TurbomachineryFlag(unsigned short val_marker) const { return Marker_All_TurbomachineryFlag[val_marker]; }

/*!
/*!
* \brief Get the number of FSI interface markers <i>val_marker</i>.
* \param[in] void.
* \return Number of markers belonging to the FSI interface.
Expand Down Expand Up @@ -4103,7 +4106,12 @@ class CConfig {
* \brief Get the type of stiffness to impose for FEA mesh deformation.
* \return type of stiffness to impose for FEA mesh deformation.
*/
unsigned short GetDeform_Stiffness_Type(void) const { return Deform_Stiffness_Type; }
unsigned short GetDeform_Stiffness_Type(void) const { return Deform_StiffnessType; }

/*!
* \brief Get the size of the layer of highest stiffness for wall distance-based mesh stiffness.
*/
su2double GetDeform_StiffLayerSize(void) const { return Deform_StiffLayerSize; }

/*!
* \brief Creates a tecplot file to visualize the volume deformation deformation made by the DEF software.
Expand Down Expand Up @@ -8787,6 +8795,16 @@ class CConfig {
*/
su2double GetRadialBasisFunctionParameter(void) const { return RadialBasisFunction_Parameter; }

/*!
* \brief Get the tolerance used to prune the interpolation matrix (making it sparser).
*/
su2double GetRadialBasisFunctionPruneTol(void) const { return RadialBasisFunction_PruneTol; }

/*!
* \brief Get the number of donor points to use in Nearest Neighbor interpolation.
*/
unsigned short GetNumNearestNeighbors(void) const { return NumNearestNeighbors; }

/*!
* \brief Get the kind of inlet face interpolation function to use.
*/
Expand Down
75 changes: 21 additions & 54 deletions Common/include/geometry/dual_grid/CVertex.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,26 +37,23 @@
*/
class CVertex : public CDualGrid {
protected:
unsigned long *Nodes; /*!< \brief Vector to store the global nodes of an element. */
su2double *Normal; /*!< \brief Normal coordinates of the element and its center of gravity. */
su2double Aux_Var; /*!< \brief Auxiliar variable defined only on the surface. */
su2double CartCoord[3]; /*!< \brief Vertex cartesians coordinates. */
su2double VarCoord[3]; /*!< \brief Used for storing the coordinate variation due to a surface modification. */
su2double *VarRot; /*!< \brief Used for storing the rotation variation due to a surface modification. */
long PeriodicPoint[5]; /*!< \brief Store the periodic point of a boundary (iProcessor, iPoint) */
bool ActDisk_Perimeter; /*!< \brief Identify nodes at the perimeter of the actuator disk */
short Rotation_Type; /*!< \brief Type of rotation associated with the vertex (MPI and periodic) */
unsigned long Nodes[1]; /*!< \brief Vector to store the global nodes of an element. */
su2double Normal[3]; /*!< \brief Normal coordinates of the element and its center of gravity. */
su2double Aux_Var; /*!< \brief Auxiliar variable defined only on the surface. */
su2double CartCoord[3]; /*!< \brief Vertex cartesians coordinates. */
su2double VarCoord[3]; /*!< \brief Used for storing the coordinate variation due to a surface modification. */
su2double *VarRot; /*!< \brief Used for storing the rotation variation due to a surface modification. */
long PeriodicPoint[5]; /*!< \brief Store the periodic point of a boundary (iProcessor, iPoint) */
bool ActDisk_Perimeter; /*!< \brief Identify nodes at the perimeter of the actuator disk */
short Rotation_Type; /*!< \brief Type of rotation associated with the vertex (MPI and periodic) */
unsigned long Normal_Neighbor; /*!< \brief Index of the closest neighbor. */
unsigned long *Donor_Points; /*!< \brief indices of donor points for interpolation across zones */
unsigned long *Donor_Proc; /*!< \brief indices of donor processor for interpolation across zones in parallel */
unsigned long Donor_Elem; /*!< \brief Store the donor element for interpolation across zones/ */
unsigned short Donor_Face; /*!<\brief Store the donor face (w/in donor element) for interpolation across zones */
su2double Basis_Function[3]; /*!< \brief Basis function values for interpolation across zones. */
su2double *Donor_Coeff; /*!\brief Store a list of coefficients corresponding to the donor points. */
unsigned short nDonor_Points; /*!\brief Number of points in Donor_Points; at least there will be one donor point (if the mesh is matching)*/
unsigned long *Donor_Points; /*!< \brief indices of donor points for interpolation across zones */
unsigned long *Donor_Proc; /*!< \brief indices of donor processor for interpolation across zones in parallel */
su2double Basis_Function[3]; /*!< \brief Basis function values for interpolation across zones. */
su2double *Donor_Coeff; /*!< \brief Store a list of coefficients corresponding to the donor points. */
unsigned short nDonor_Points; /*!< \brief Number of points in Donor_Coeff. */

public:

/*!
* \brief Constructor of the class.
* \param[in] val_point - Node of the vertex.
Expand Down Expand Up @@ -113,6 +110,11 @@ class CVertex : public CDualGrid {
*/
inline su2double *GetNormal(void) override { return Normal; }

/*!
* \brief Get the ith component of the normal.
*/
inline su2double GetNormal(unsigned short iDim) const { return Normal[iDim]; }

/*!
* \brief Initialize normal vector.
*/
Expand Down Expand Up @@ -308,30 +310,6 @@ class CVertex : public CDualGrid {
*/
inline bool GetActDisk_Perimeter(void) const { return ActDisk_Perimeter; }

/*!
* \brief Set the donor element of a vertex for interpolation across zones.
* \param[in] val_donorelem - donor element index.
*/
inline void SetDonorElem(long val_donorelem) { Donor_Elem = val_donorelem; }

/*!
* \brief Get the donor element of a vertex for interpolation across zones.
* \return Value of the donor element of a vertex.
*/
inline long GetDonorElem(void) const { return Donor_Elem; }

/*!
* \brief Set the donor face of a vertex for interpolation across zones.
* \param[in] val_donorface- donor face index (w/in donor elem).
*/
inline void SetDonorFace(unsigned short val_donorface) { Donor_Face = val_donorface; }

/*!
* \brief Get the donor face of a vertex for interpolation across zones.
* \return Value of the donor face index (w/in donor elem).
*/
inline unsigned short GetDonorFace(void) const { return Donor_Face; }

/*!
* \brief Set the finite element basis functions needed for interpolation.
* \param[in] val_node - a node index of the owner element.
Expand All @@ -358,17 +336,6 @@ class CVertex : public CDualGrid {
*/
inline unsigned long GetNormal_Neighbor(void) const { return Normal_Neighbor; }

/*!
* \brief Increment the number of donor points by 1.
*/
inline void IncrementnDonor(void) {nDonor_Points++;}

/*!
* \brief Set the value of nDonor_Points
* \param[in] nDonor - the number of donor points
*/
inline void SetnDonorPoints(unsigned short nDonor) {nDonor_Points = nDonor;}

/*!
* \brief Return the value of nDonor_Points
* \return nDonor - the number of donor points
Expand Down Expand Up @@ -419,9 +386,9 @@ class CVertex : public CDualGrid {

/*!
* \brief Allocate memory based on how many donor points need to be stored.
* Uses nDonor_Points
* \param[in] nDonor - the number of donor points
*/
void Allocate_DonorInfo(void);
void Allocate_DonorInfo(unsigned short nDonor);

/*!
* \brief Get the rotation variation
Expand Down
22 changes: 21 additions & 1 deletion Common/include/geometry/elements/CElement.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
* Copyright 2012-2020, SU2 Contributors (cf. AUTHORS.md)
Expand Down Expand Up @@ -627,6 +627,26 @@ class CQUAD4 final : public CElementWithKnownSizes<4,4,2> {
*/
CQUAD4();

/*!
* \brief Shape functions (Ni) evaluated at point Xi,Eta.
*/
inline static void ShapeFunctions(su2double Xi, su2double Eta, su2double* Ni) {
Ni[0] = 0.25*(1.0-Xi)*(1.0-Eta);
Ni[1] = 0.25*(1.0+Xi)*(1.0-Eta);
Ni[2] = 0.25*(1.0+Xi)*(1.0+Eta);
Ni[3] = 0.25*(1.0-Xi)*(1.0+Eta);
}

/*!
* \brief Shape function Jacobian (dNi) evaluated at point Xi,Eta.
*/
inline static void ShapeFunctionJacobian(su2double Xi, su2double Eta, su2double dNi[][2]) {
dNi[0][0] = -0.25*(1.0-Eta); dNi[0][1] = -0.25*(1.0-Xi);
dNi[1][0] = 0.25*(1.0-Eta); dNi[1][1] = -0.25*(1.0+Xi);
dNi[2][0] = 0.25*(1.0+Eta); dNi[2][1] = 0.25*(1.0+Xi);
dNi[3][0] = -0.25*(1.0+Eta); dNi[3][1] = 0.25*(1.0-Xi);
}

/*!
* \brief Compute the value of the area of the element.
* \param[in] mode - Type of coordinates to consider in the computation.
Expand Down
Loading