Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
b1f667a
Merge branch 'small_blas_docs_update' into feature_hybrid_parallel_an…
pcarruscag Feb 27, 2020
3611c10
Merge remote-tracking branch 'upstream/develop' into feature_hybrid_p…
pcarruscag Feb 28, 2020
e428ef0
Merge branch 'small_blas_docs_update' into feature_hybrid_parallel_an…
pcarruscag Feb 28, 2020
66f4ac5
Merge remote-tracking branch 'upstream/develop' into feature_hybrid_p…
pcarruscag Feb 28, 2020
148d948
prevent restarted FGMRES from going into infinite loop when RHS is zero
pcarruscag Mar 2, 2020
4dddf6d
fix for "old compiler" compatibility and legacy build system
pcarruscag Mar 2, 2020
a4c1cf7
Merge remote-tracking branch 'upstream/develop' into feature_hybrid_p…
pcarruscag Mar 2, 2020
9344f88
update old build system
pcarruscag Mar 2, 2020
f4e8185
unnecessary initialization of stiffness matrix in CMeshSolver
pcarruscag Mar 2, 2020
101b52d
fix OpenMP bug in SetMesh_Stiffness, allow upper bound on element sti…
pcarruscag Mar 2, 2020
aba265f
potential fix for potential cause of observed deadlock
pcarruscag Mar 3, 2020
998777d
add dummy locks and functions to omp_structure
pcarruscag Mar 4, 2020
7e25a93
bad coloring fallback strategy for CFEASolver
pcarruscag Mar 4, 2020
32ef194
use the "reducer strategy" as a fallback for when grid coloring is ba…
pcarruscag Mar 4, 2020
14ed268
build diagonal and transpose map in parallel
pcarruscag Mar 4, 2020
9cd52b6
Merge remote-tracking branch 'upstream/feature_update_elasticity_outp…
pcarruscag Mar 4, 2020
d7bb841
use a more expressive function to round up to next multiple
pcarruscag Mar 4, 2020
2fc6f30
use reducer strategy for turbulence solvers
pcarruscag Mar 4, 2020
c88ea7a
polish up the reducer strategy, avoid unnecessary resets of CSysMatrix
pcarruscag Mar 4, 2020
12c12b1
Merge remote-tracking branch 'upstream/develop' into feature_hybrid_p…
pcarruscag Mar 4, 2020
bcf6af4
small regression changes
pcarruscag Mar 4, 2020
19f2fe5
write Undivided Laplacian as point loop
pcarruscag Mar 4, 2020
13e9572
write Centered_Dissipation_Sensor as a point loop
pcarruscag Mar 4, 2020
733aef1
allow forcing of "reducer strategy" without warnings, fix some indent…
pcarruscag Mar 4, 2020
debb952
update fixedcl regression
pcarruscag Mar 5, 2020
b406fa3
methods to set natural colorings
pcarruscag Mar 5, 2020
fb500f2
fix FEA solver lock strategy
pcarruscag Mar 5, 2020
db8d771
make overhead of reducer strategy due to bad coloring same as when co…
pcarruscag Mar 5, 2020
f4dd41a
fuse "JST dissipation" loops, cleanup Euler/NS preprocessing
pcarruscag Mar 5, 2020
775980e
fix virtual bug in SetPrimitiveVariables
pcarruscag Mar 5, 2020
45e3cbc
fix some indentation in CDriver
pcarruscag Mar 5, 2020
82e2d6d
Merge remote-tracking branch 'upstream/develop' into feature_hybrid_p…
pcarruscag Mar 11, 2020
7fb78f8
add hybrid options to config_template
pcarruscag Mar 11, 2020
2aaf89f
convert moving mesh part of turb solver's dual time residual to point…
pcarruscag Mar 11, 2020
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
fea625e
revise logic for flow variable reconstruction with MUSCL turbulence
pcarruscag Mar 24, 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
cdf6b2c
Merge remote-tracking branch 'upstream/develop' into hybrid_parallel_…
pcarruscag Mar 25, 2020
b6361f1
update some testcases
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
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
44 changes: 28 additions & 16 deletions Common/include/CConfig.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -988,9 +988,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 +3462,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 @@ -8787,6 +8789,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
25 changes: 22 additions & 3 deletions Common/include/geometry/CGeometry.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -1621,7 +1621,7 @@ class CGeometry {
* \param[in] fillLvl - Level of fill of the pattern.
* \return Reference to the sparse pattern.
*/
const CCompressedSparsePatternUL& GetSparsePattern(ConnectivityType type, unsigned long fillLvl);
const CCompressedSparsePatternUL& GetSparsePattern(ConnectivityType type, unsigned long fillLvl = 0);

/*!
* \brief Get the edge to sparse pattern map.
Expand All @@ -1630,12 +1630,25 @@ class CGeometry {
*/
const CEdgeToNonZeroMapUL& GetEdgeToSparsePatternMap(void);

/*!
* \brief Get the transpose of the (main, i.e 0 fill) sparse pattern (e.g. CSR becomes CSC).
* \param[in] type - Finite volume or finite element.
* \return Reference to the map.
*/
const su2vector<unsigned long>& GetTransposeSparsePatternMap(ConnectivityType type);

/*!
* \brief Get the edge coloring.
* \note This method computes the coloring if that has not been done yet.
* \param[out] efficiency - optional output of the coloring efficiency.
* \return Reference to the coloring.
*/
const CCompressedSparsePatternUL& GetEdgeColoring(void);
const CCompressedSparsePatternUL& GetEdgeColoring(su2double* efficiency = nullptr);

/*!
* \brief Force the natural (sequential) edge coloring.
*/
void SetNaturalEdgeColoring();

/*!
* \brief Get the group size used in edge coloring.
Expand All @@ -1646,9 +1659,15 @@ class CGeometry {
/*!
* \brief Get the element coloring.
* \note This method computes the coloring if that has not been done yet.
* \param[out] efficiency - optional output of the coloring efficiency.
* \return Reference to the coloring.
*/
const CCompressedSparsePatternUL& GetElementColoring(void);
const CCompressedSparsePatternUL& GetElementColoring(su2double* efficiency = nullptr);

/*!
* \brief Force the natural (sequential) element coloring.
*/
void SetNaturalElementColoring();

/*!
* \brief Get the group size used in element coloring.
Expand Down
48 changes: 18 additions & 30 deletions Common/include/geometry/dual_grid/CVertex.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,26 +37,25 @@
*/
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 */
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_Coeff. */

public:

/*!
* \brief Constructor of the class.
* \param[in] val_point - Node of the vertex.
Expand Down Expand Up @@ -358,17 +357,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 +407,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
Loading