diff --git a/.travis.yml b/.travis.yml index 99dabda9cc4c..276bc1ea2520 100644 --- a/.travis.yml +++ b/.travis.yml @@ -76,7 +76,7 @@ before_script: - cp -R ./TestData/* ./TestCases/ # Get the tutorial cases - - git clone --depth=1 -b develop https://github.com/su2code/su2code.github.io ./Tutorials + - git clone --depth=1 -b cleanup_linsol_options https://github.com/su2code/su2code.github.io ./Tutorials # Enter the SU2/TestCases/ directory, which is now ready to run - cd TestCases/ diff --git a/Common/include/ad_structure.hpp b/Common/include/ad_structure.hpp index 822d68b0022e..9771651ae612 100644 --- a/Common/include/ad_structure.hpp +++ b/Common/include/ad_structure.hpp @@ -72,14 +72,9 @@ namespace AD{ /*! * \brief Registers the variable as an input and saves internal data (indices). I.e. as a leaf of the computational graph. * \param[in] data - The variable to be registered as input. + * \param[in] push_index - boolean whether we also want to push the index. */ - void RegisterInput(su2double &data); - - /*! - * \brief Registers the variable as an input. I.e. as a leaf of the computational graph. - * \param[in] data - The variable to be registered as input. - */ - void RegisterInput_intIndexBased(su2double &data); + void RegisterInput(su2double &data, bool push_index = true); /*! * \brief Registers the variable as an output. I.e. as the root of the computational graph. @@ -246,7 +241,7 @@ namespace AD{ * \param[in] data - variable whose gradient information will be extracted. * \param[in] index - where obtained gradient information will be stored. */ - void SetAdjIndex(int &index, const su2double &data); + void SetIndex(int &index, const su2double &data); /*! * \brief Pushes back the current tape position to the tape position's vector. diff --git a/Common/include/ad_structure.inl b/Common/include/ad_structure.inl index ad8184f4c3cf..800e74bb100f 100644 --- a/Common/include/ad_structure.inl +++ b/Common/include/ad_structure.inl @@ -76,10 +76,12 @@ namespace AD{ extern codi::PreaccumulationHelper PreaccHelper; - inline void RegisterInput(su2double &data) {AD::globalTape.registerInput(data); - inputValues.push_back(data.getGradientData());} - - inline void RegisterInput_intIndexBased(su2double &data) {AD::globalTape.registerInput(data);} + inline void RegisterInput(su2double &data, bool push_index) { + AD::globalTape.registerInput(data); + if (push_index) { + inputValues.push_back(data.getGradientData()); + } + } inline void RegisterOutput(su2double& data) {AD::globalTape.registerOutput(data);} @@ -116,7 +118,7 @@ namespace AD{ } } - inline void SetAdjIndex(int &index, const su2double &data) { + inline void SetIndex(int &index, const su2double &data) { index = data.getGradientData(); } @@ -269,9 +271,7 @@ namespace AD{ /*--- Default implementation if reverse mode is disabled ---*/ - inline void RegisterInput(su2double &data) {} - - inline void RegisterInput_intIndexBased(su2double &data) {} + inline void RegisterInput(su2double &data, bool push_index) {} inline void RegisterOutput(su2double& data) {} @@ -289,7 +289,7 @@ namespace AD{ inline void ComputeAdjoint(unsigned short enter, unsigned short leave) {} - inline void SetAdjIndex(int &index, const su2double &data) {} + inline void SetIndex(int &index, const su2double &data) {} inline void SetDerivative(int index, const double val) {} diff --git a/Common/include/config_structure.hpp b/Common/include/config_structure.hpp index 3bc8f4e50788..1cdf45230a7f 100644 --- a/Common/include/config_structure.hpp +++ b/Common/include/config_structure.hpp @@ -585,8 +585,7 @@ 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. */ - GridDef_Linear_Iter; /*!< \brief Number of linear smoothing iterations for grid deformation. */ + 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. */ bool Deform_Mesh; /*!< \brief Determines whether the mesh will be deformed. */ bool Deform_Output; /*!< \brief Print the residuals during mesh deformation to the console. */ @@ -4166,12 +4165,6 @@ class CConfig { */ su2double GetCFLRedCoeff_AdjTurb(void); - /*! - * \brief Get the number of linear smoothing iterations for mesh deformation. - * \return Number of linear smoothing iterations for mesh deformation. - */ - unsigned long GetGridDef_Linear_Iter(void); - /*! * \brief Get the number of nonlinear increments for mesh deformation. * \return Number of nonlinear increments for mesh deformation. diff --git a/Common/include/config_structure.inl b/Common/include/config_structure.inl index c46f1512e021..12f8439a0705 100644 --- a/Common/include/config_structure.inl +++ b/Common/include/config_structure.inl @@ -1046,8 +1046,6 @@ inline unsigned short CConfig::GetAdjTurb_Linear_Iter(void) { return AdjTurb_Lin inline su2double CConfig::GetCFLRedCoeff_AdjTurb(void) { return CFLRedCoeff_AdjTurb; } -inline unsigned long CConfig::GetGridDef_Linear_Iter(void) { return GridDef_Linear_Iter; } - inline unsigned long CConfig::GetGridDef_Nonlinear_Iter(void) { return GridDef_Nonlinear_Iter; } inline bool CConfig::GetDeform_Mesh(void) { return Deform_Mesh; } diff --git a/Common/include/dual_grid_structure.hpp b/Common/include/dual_grid_structure.hpp index 17d97b3d55aa..b8dee4480478 100644 --- a/Common/include/dual_grid_structure.hpp +++ b/Common/include/dual_grid_structure.hpp @@ -176,8 +176,8 @@ class CPoint : public CDualGrid { unsigned short nNeighbor; /*!< \brief Number of neighbors. */ bool Flip_Orientation; /*!< \brief Flip the orientation of the normal. */ su2double MaxLength; /*!< \brief The maximum cell-center to cell-center length. */ - int *Input_AdjIndices, /*!< \brief Indices of Coord variables in the adjoint vector. */ - *Output_AdjIndices; /*!< \brief Indices of Coord variables in the adjoint vector after having been updated. */ + int *AD_InputIndex, /*!< \brief Indices of Coord variables in the adjoint vector. */ + *AD_OutputIndex; /*!< \brief Indices of Coord variables in the adjoint vector after having been updated. */ public: @@ -297,7 +297,7 @@ class CPoint : public CDualGrid { * \brief Set the adjoint vector indices of Coord vector. * \param[in] input - Save them to the input or output indices vector. */ - void SetAdjIndices(bool input); + void SetIndex(bool input); /*! * \brief Set the adjoint values of the (geometric) coordinates. @@ -814,7 +814,7 @@ class CPoint : public CDualGrid { * \brief Set the adjoint values of the coordinates. * \param[in] adj_sol - The adjoint values of the coordinates. */ - void SetAdjointCoord_intIndexBased(su2double *adj_coor); + void SetAdjointCoord_LocalIndex(su2double *adj_coor); /*! * \brief Get the adjoint values of the coordinates. @@ -826,7 +826,7 @@ class CPoint : public CDualGrid { * \brief Get the adjoint values of the coordinates. * \param[in] adj_sol - The adjoint values of the coordinates. */ - void GetAdjointCoord_intIndexBased(su2double *adj_coor); + void GetAdjointCoord_LocalIndex(su2double *adj_coor); }; diff --git a/Common/include/dual_grid_structure.inl b/Common/include/dual_grid_structure.inl index 55b9a8d9716a..97fbcf8298fe 100644 --- a/Common/include/dual_grid_structure.inl +++ b/Common/include/dual_grid_structure.inl @@ -267,9 +267,9 @@ inline void CPoint::SetAdjointCoord(su2double *adj_coor){ SU2_TYPE::SetDerivative(Coord[iDim], SU2_TYPE::GetValue(adj_coor[iDim])); } -inline void CPoint::SetAdjointCoord_intIndexBased(su2double *adj_coor){ +inline void CPoint::SetAdjointCoord_LocalIndex(su2double *adj_coor){ for (unsigned short iDim = 0; iDim < nDim; iDim++) - AD::SetDerivative(Output_AdjIndices[iDim], SU2_TYPE::GetValue(adj_coor[iDim])); + AD::SetDerivative(AD_OutputIndex[iDim], SU2_TYPE::GetValue(adj_coor[iDim])); } inline void CPoint::GetAdjointCoord(su2double *adj_coor){ @@ -277,9 +277,9 @@ inline void CPoint::GetAdjointCoord(su2double *adj_coor){ adj_coor[iDim] = SU2_TYPE::GetDerivative(Coord[iDim]); } -inline void CPoint::GetAdjointCoord_intIndexBased(su2double *adj_coor){ +inline void CPoint::GetAdjointCoord_LocalIndex(su2double *adj_coor){ for (unsigned short iDim = 0; iDim < nDim; iDim++) - adj_coor[iDim] = AD::GetDerivative(Input_AdjIndices[iDim]); + adj_coor[iDim] = AD::GetDerivative(AD_InputIndex[iDim]); } inline unsigned short CEdge::GetnNodes() { return 2; } diff --git a/Common/include/interpolation_structure.hpp b/Common/include/interpolation_structure.hpp index 520d82e46557..9faf7d21d165 100644 --- a/Common/include/interpolation_structure.hpp +++ b/Common/include/interpolation_structure.hpp @@ -76,8 +76,6 @@ class CInterpolator { *Buffer_Send_nVertex_Donor,/*!\brief Buffer to send number of vertices on the local processor*/ *Buffer_Send_nFace_Donor,/*!\brief Buffer to send number of faces on the local processor*/ *Buffer_Send_nFaceNodes_Donor,/*!\brief Buffer to send the number of nodes assocated with faces per processor*/ - *Buffer_Receive_GlobalPoint, /*!\brief Buffer to receive global point indices*/ - *Buffer_Send_GlobalPoint,/*!\brief Buffer to send global point indices*/ *Buffer_Send_FaceIndex,/*!\brief Buffer to send indices pointing to the node indices that define the faces*/ *Buffer_Receive_FaceIndex,/*!\brief Buffer to receive indices pointing to the node indices that define the faces*/ *Buffer_Send_FaceNodes,/*!\brief Buffer to send indices pointing to the location of node information in other buffers, defining faces*/ @@ -85,6 +83,9 @@ class CInterpolator { *Buffer_Send_FaceProc,/*!\brief Buffer to send processor which stores the node indicated in Buffer_Receive_FaceNodes*/ *Buffer_Receive_FaceProc;/*!\brief Buffer to receive processor which stores the node indicated in Buffer_Receive_FaceNodes*/ + long *Buffer_Send_GlobalPoint,/*!\brief Buffer to send global point indices*/ + *Buffer_Receive_GlobalPoint; /*!\brief Buffer to receive global point indices*/ + su2double *Buffer_Send_Coord,/*!\brief Buffer to send coordinate values*/ *Buffer_Send_Normal,/*!\brief Buffer to send normal vector values */ *Buffer_Receive_Coord,/*!\brief Buffer to receive coordinate values*/ diff --git a/Common/include/toolboxes/C2DContainer.hpp b/Common/include/toolboxes/C2DContainer.hpp index 3924a35c7729..f62e7aeef96f 100644 --- a/Common/include/toolboxes/C2DContainer.hpp +++ b/Common/include/toolboxes/C2DContainer.hpp @@ -81,7 +81,7 @@ class AccessorImpl alignas(AlignSize) Scalar_t m_data[StaticRows*StaticCols]; /*! - * Static size specializations use this do-nothing macro. + * Static size specializations use this do-nothing allocation macro. */ #define DUMMY_ALLOCATOR \ void m_allocate(size_t sz, Index_t rows, Index_t cols) noexcept {} @@ -90,18 +90,27 @@ class AccessorImpl * runtime internal value that depend on the number of rows/columns. * What values need setting depends on the specialization as not all have * members for e.g. number of rows and cols (static size optimization). + * \note Aligned dynamic allocation is disabled for compilation on MAC. */ -#define REAL_ALLOCATOR(EXTRA) \ +#ifndef __APPLE__ +#define REAL_ALLOCATOR(EXTRA) \ static_assert(AlignSize % alignof(Scalar_t)==0, \ - "AlignSize is not a multiple of the type's alignment spec."); \ + "AlignSize is not a multiple of the type's alignment spec."); \ \ void m_allocate(size_t sz, Index_t rows, Index_t cols) noexcept { \ - EXTRA; \ - if(AlignSize==0) \ - m_data = static_cast(malloc(sz)); \ - else \ - m_data = static_cast(aligned_alloc(AlignSize,sz)); \ + EXTRA; \ + if(AlignSize==0) \ + m_data = static_cast(malloc(sz)); \ + else \ + m_data = static_cast(aligned_alloc(AlignSize,sz)); \ } +#else +#define REAL_ALLOCATOR(EXTRA) \ + void m_allocate(size_t sz, Index_t rows, Index_t cols) noexcept { \ + EXTRA; \ + m_data = static_cast(malloc(sz)); \ + } +#endif DUMMY_ALLOCATOR diff --git a/Common/src/config_structure.cpp b/Common/src/config_structure.cpp index d2009e0f1ad2..f61afd55eba0 100644 --- a/Common/src/config_structure.cpp +++ b/Common/src/config_structure.cpp @@ -1996,8 +1996,6 @@ void CConfig::SetConfig_Options() { addBoolOption("DEFORM_CONSOLE_OUTPUT", Deform_Output, false); /* DESCRIPTION: Number of nonlinear deformation iterations (surface deformation increments) */ addUnsignedLongOption("DEFORM_NONLINEAR_ITER", GridDef_Nonlinear_Iter, 1); - /* DESCRIPTION: Number of smoothing iterations for FEA mesh deformation */ - addUnsignedLongOption("DEFORM_LINEAR_ITER", GridDef_Linear_Iter, 1000); /* DESCRIPTION: Deform coefficient (-1.0 to 0.5) */ addDoubleOption("DEFORM_COEFF", Deform_Coeff, 1E6); /* DESCRIPTION: Deform limit in m or inches */ @@ -2895,7 +2893,7 @@ void CConfig::SetPostprocessing(unsigned short val_software, unsigned short val_ } /*--- Set the default output files ---*/ - if (nVolumeOutputFiles == 0){ + if (!OptionIsSet("OUTPUT_FILES")){ nVolumeOutputFiles = 3; VolumeOutputFiles = new unsigned short[nVolumeOutputFiles]; VolumeOutputFiles[0] = RESTART_BINARY; @@ -2916,12 +2914,14 @@ void CConfig::SetPostprocessing(unsigned short val_software, unsigned short val_ SU2_MPI::Error("A turbulence model must be specified with KIND_TURB_MODEL if SOLVER= INC_RANS", CURRENT_FUNCTION); } -//#ifndef HAVE_TECIO -// if (Output_FileFormat == TECPLOT_BINARY) { -// cout << "Tecplot binary file requested but SU2 was built without TecIO support." << "\n"; -// Output_FileFormat = TECPLOT; -// } -//#endif +#ifndef HAVE_TECIO + for (unsigned short iVolumeFile = 0; iVolumeFile < nVolumeOutputFiles; iVolumeFile++){ + if (VolumeOutputFiles[iVolumeFile] == TECPLOT_BINARY || + VolumeOutputFiles[iVolumeFile] == SURFACE_TECPLOT_BINARY) { + SU2_MPI::Error(string("Tecplot binary file requested in option OUTPUT_FILES but SU2 was built without TecIO support.\n"), CURRENT_FUNCTION); + } + } +#endif /*--- Set the boolean Wall_Functions equal to true if there is a definition for the wall founctions ---*/ @@ -6243,8 +6243,15 @@ void CConfig::SetOutput(unsigned short val_software, unsigned short val_izone) { cout << endl <<"------------------ Convergence Criteria ( Zone " << iZone << " ) ---------------------" << endl; cout << "Maximum number of solver subiterations: " << nInnerIter <<"."<< endl; - cout << "Maximum number of physical time-steps: " << nTimeIter <<"."<< endl; + if (Multizone_Problem) + cout << "Maximum number of solver outer iterations: " << nOuterIter <<"."<< endl; + if (Time_Domain) + cout << "Maximum number of physical time-steps: " << nTimeIter <<"."<< endl; + cout << "Begin convergence monitoring at iteration " << StartConv_Iter << "." << endl; + cout << "Residual minimum value: 1e" << MinLogResidual << "." << endl; + cout << "Cauchy series min. value: " << Cauchy_Eps << "." << endl; + cout << "Number of Cauchy elements: " << Cauchy_Elems << "." << endl; } if (val_software == SU2_MSH) { @@ -6282,18 +6289,25 @@ void CConfig::SetOutput(unsigned short val_software, unsigned short val_izone) { if (val_software == SU2_CFD) { - cout << "Writing a solution file every " << Wrt_Sol_Freq <<" iterations."<< endl; - cout << "Writing the convergence history every " << Wrt_Con_Freq <<" iterations."<< endl; - if ((TimeMarching == DT_STEPPING_1ST) || (TimeMarching == DT_STEPPING_2ND)) { - cout << "Writing the dual time flow solution every " << Wrt_Sol_Freq_DualTime <<" iterations."<< endl; - cout << "Writing the dual time convergence history every " << Wrt_Con_Freq_DualTime <<" iterations."<< endl; + cout << "Writing solution files every " << VolumeWrtFreq <<" iterations."<< endl; + cout << "Writing the convergence history file every " << HistoryWrtFreq[2] <<" inner iterations."<< endl; + if (Multizone_Problem){ + cout << "Writing the convergence history file every " << HistoryWrtFreq[1] <<" outer iterations."<< endl; + } + if (Time_Domain) { + cout << "Writing the convergence history file every " << HistoryWrtFreq[0] <<" time iterations."<< endl; + } + cout << "Writing the screen convergence history every " << ScreenWrtFreq[2] <<" inner iterations."<< endl; + if (Multizone_Problem){ + cout << "Writing the screen convergence history every " << ScreenWrtFreq[1] <<" outer iterations."<< endl; + } + if (Time_Domain) { + cout << "Writing the screen convergence history every " << ScreenWrtFreq[0] <<" time iterations."<< endl; } switch (Tab_FileFormat) { - case PARAVIEW: cout << "The output file format is Paraview ASCII legacy (.vtk)." << endl; break; - case PARAVIEW_BINARY: cout << "The output file format is Paraview binary legacy (.vtk)." << endl; break; - case TECPLOT: cout << "The output file format is Tecplot ASCII (.dat)." << endl; break; - case TECPLOT_BINARY: cout << "The output file format is Tecplot binary (.plt)." << endl; break; + case TAB_CSV: cout << "The tabular file format is CSV (.csv)." << endl; break; + case TAB_TECPLOT: cout << "The tabular file format is Tecplot (.dat)." << endl; break; } cout << "Convergence history file name: " << Conv_FileName << "." << endl; @@ -6302,7 +6316,7 @@ void CConfig::SetOutput(unsigned short val_software, unsigned short val_izone) { if (!ContinuousAdjoint && !DiscreteAdjoint) { - cout << "Surface coefficients file name: " << SurfCoeff_FileName << "." << endl; + cout << "Surface file name: " << SurfCoeff_FileName << "." << endl; cout << "Volume file name: " << Volume_FileName << "." << endl; cout << "Restart file name: " << Restart_FileName << "." << endl; } @@ -6311,17 +6325,15 @@ void CConfig::SetOutput(unsigned short val_software, unsigned short val_izone) { cout << "Adjoint solution file name: " << Solution_AdjFileName << "." << endl; cout << "Restart adjoint file name: " << Restart_AdjFileName << "." << endl; cout << "Adjoint variables file name: " << Adj_FileName << "." << endl; - cout << "Surface adjoint coefficients file name: " << SurfAdjCoeff_FileName << "." << endl; + cout << "Surface adjoint file name: " << SurfAdjCoeff_FileName << "." << endl; } } if (val_software == SU2_SOL) { switch (Tab_FileFormat) { - case PARAVIEW: cout << "The output file format is Paraview ASCII legacy (.vtk)." << endl; break; - case PARAVIEW_BINARY: cout << "The output file format is Paraview binary legacy (.vtk)." << endl; break; - case TECPLOT: cout << "The output file format is Tecplot ASCII (.dat)." << endl; break; - case TECPLOT_BINARY: cout << "The output file format is Tecplot binary (.plt)." << endl; break; + case TAB_CSV: cout << "The tabular file format is CSV (.csv)." << endl; break; + case TAB_TECPLOT: cout << "The tabular file format is Tecplot (.dat)." << endl; break; } cout << "Flow variables file name: " << Volume_FileName << "." << endl; } diff --git a/Common/src/dual_grid_structure.cpp b/Common/src/dual_grid_structure.cpp index 4ed88ce88e0a..30b634c2e3c0 100644 --- a/Common/src/dual_grid_structure.cpp +++ b/Common/src/dual_grid_structure.cpp @@ -56,7 +56,7 @@ CPoint::CPoint(unsigned short val_nDim, unsigned long val_globalindex, CConfig * Coord = NULL; Coord_Old = NULL; Coord_Sum = NULL; Coord_n = NULL; Coord_n1 = NULL; Coord_p1 = NULL; GridVel = NULL; GridVel_Grad = NULL; - Input_AdjIndices = NULL; Output_AdjIndices = NULL; + AD_InputIndex = NULL; AD_OutputIndex = NULL; /*--- Volume (0 -> Vol_nP1, 1-> Vol_n, 2 -> Vol_nM1 ) and coordinates of the control volume ---*/ @@ -74,8 +74,8 @@ CPoint::CPoint(unsigned short val_nDim, unsigned long val_globalindex, CConfig * Coord = new su2double[nDim]; if(config->GetAD_Mode() && config->GetMultizone_Problem()) { - Input_AdjIndices = new int[nDim]; - Output_AdjIndices = new int[nDim]; + AD_InputIndex = new int[nDim]; + AD_OutputIndex = new int[nDim]; } /*--- Indicator if the control volume has been agglomerated ---*/ @@ -171,7 +171,7 @@ CPoint::CPoint(su2double val_coord_0, su2double val_coord_1, unsigned long val_g Coord = NULL; Coord_Old = NULL; Coord_Sum = NULL; Coord_n = NULL; Coord_n1 = NULL; Coord_p1 = NULL; GridVel = NULL; GridVel_Grad = NULL; - Input_AdjIndices = NULL; Output_AdjIndices = NULL; + AD_InputIndex = NULL; AD_OutputIndex = NULL; /*--- Volume (0 -> Vol_nP1, 1-> Vol_n, 2 -> Vol_nM1 ) and coordinates of the control volume ---*/ @@ -191,8 +191,8 @@ CPoint::CPoint(su2double val_coord_0, su2double val_coord_1, unsigned long val_g Coord[1] = val_coord_1; if(config->GetAD_Mode() && config->GetMultizone_Problem()) { - Input_AdjIndices = new int[nDim]; - Output_AdjIndices = new int[nDim]; + AD_InputIndex = new int[nDim]; + AD_OutputIndex = new int[nDim]; } /*--- Indicator if the control volume has been agglomerated ---*/ @@ -287,7 +287,7 @@ CPoint::CPoint(su2double val_coord_0, su2double val_coord_1, su2double val_coord Coord = NULL; Coord_Old = NULL; Coord_Sum = NULL; Coord_n = NULL; Coord_n1 = NULL; Coord_p1 = NULL; GridVel = NULL; GridVel_Grad = NULL; - Input_AdjIndices = NULL; Output_AdjIndices = NULL; + AD_InputIndex = NULL; AD_OutputIndex = NULL; /*--- Volume (0 -> Vol_nP1, 1-> Vol_n, 2 -> Vol_nM1 ) and coordinates of the control volume ---*/ if ( config->GetTime_Marching() == NO ) { @@ -307,8 +307,8 @@ CPoint::CPoint(su2double val_coord_0, su2double val_coord_1, su2double val_coord Coord[2] = val_coord_2; if(config->GetAD_Mode() && config->GetMultizone_Problem()) { - Input_AdjIndices = new int[nDim]; - Output_AdjIndices = new int[nDim]; + AD_InputIndex = new int[nDim]; + AD_OutputIndex = new int[nDim]; } /*--- Indicator if the control volume has been agglomerated ---*/ @@ -407,8 +407,8 @@ CPoint::~CPoint() { delete [] GridVel_Grad[iDim]; delete [] GridVel_Grad; } - if (Input_AdjIndices != NULL) delete[] Input_AdjIndices; - if (Output_AdjIndices != NULL) delete[] Output_AdjIndices; + if (AD_InputIndex != NULL) delete[] AD_InputIndex; + if (AD_OutputIndex != NULL) delete[] AD_OutputIndex; } void CPoint::SetPoint(unsigned long val_point) { @@ -449,25 +449,25 @@ void CPoint::SetBoundary(unsigned short val_nmarker) { } -void CPoint::SetAdjIndices(bool input) { +void CPoint::SetIndex(bool input) { for (unsigned short iDim = 0; iDim < nDim; iDim++) { if(input) { - AD::SetAdjIndex(Input_AdjIndices[iDim], Coord[iDim]); + AD::SetIndex(AD_InputIndex[iDim], Coord[iDim]); } else { - AD::SetAdjIndex(Output_AdjIndices[iDim], Coord[iDim]); + AD::SetIndex(AD_OutputIndex[iDim], Coord[iDim]); } } } void CPoint::SetAdjointSolution(const su2double *adj_sol) { for (unsigned short iDim = 0; iDim < nDim; iDim++) { - AD::SetDerivative(Output_AdjIndices[iDim], SU2_TYPE::GetValue(adj_sol[iDim])); + AD::SetDerivative(AD_OutputIndex[iDim], SU2_TYPE::GetValue(adj_sol[iDim])); } } su2double CPoint::GetAdjointSolution(unsigned short iDim) { - return AD::GetDerivative(Input_AdjIndices[iDim]); + return AD::GetDerivative(AD_InputIndex[iDim]); } CEdge::CEdge(unsigned long val_iPoint, unsigned long val_jPoint, unsigned short val_nDim) : CDualGrid(val_nDim) { diff --git a/Common/src/geometry_structure.cpp b/Common/src/geometry_structure.cpp index ab3b550e5a5e..38589c7a9952 100644 --- a/Common/src/geometry_structure.cpp +++ b/Common/src/geometry_structure.cpp @@ -2682,19 +2682,18 @@ void CGeometry::ComputeAirfoil_Section(su2double *Plane_P0, su2double *Plane_Nor void CGeometry::RegisterCoordinates(CConfig *config) { unsigned short iDim; unsigned long iPoint; + bool input = true; + bool push_index = true; + + if(config->GetMultizone_Problem()) push_index = false; - bool input = true; - for (iPoint = 0; iPoint < nPoint; iPoint++) { - if(config->GetMultizone_Problem()) { - for (iDim = 0; iDim < nDim; iDim++) { - AD::RegisterInput_intIndexBased(node[iPoint]->GetCoord()[iDim]); - node[iPoint]->SetAdjIndices(input); - } + for (iDim = 0; iDim < nDim; iDim++) { + AD::RegisterInput(node[iPoint]->GetCoord()[iDim], push_index); } - else { + if(!push_index) { for (iDim = 0; iDim < nDim; iDim++) { - AD::RegisterInput(node[iPoint]->GetCoord()[iDim]); + node[iPoint]->SetIndex(input); } } } diff --git a/Common/src/grid_movement_structure.cpp b/Common/src/grid_movement_structure.cpp index 87f66058421a..0f46ea936ef5 100644 --- a/Common/src/grid_movement_structure.cpp +++ b/Common/src/grid_movement_structure.cpp @@ -140,7 +140,7 @@ void CVolumetricMovement::SetVolume_Deformation(CGeometry *geometry, CConfig *co /*--- Retrieve number or iterations, tol, output, etc. from config ---*/ - Smoothing_Iter = config->GetGridDef_Linear_Iter(); + Smoothing_Iter = config->GetDeform_Linear_Solver_Iter(); Screen_Output = config->GetDeform_Output(); NumError = config->GetDeform_Linear_Solver_Error(); Nonlinear_Iter = config->GetGridDef_Nonlinear_Iter(); @@ -2708,12 +2708,12 @@ void CSurfaceMovement::SetSurface_Deformation(CGeometry *geometry, CConfig *conf if (rank == MASTER_NODE) { for (unsigned short iFile = 0; iFile < config->GetnVolumeOutputFiles(); iFile++){ unsigned short *FileFormat = config->GetVolumeOutputFiles(); - if (FileFormat[iFile] == PARAVIEW) { + if (FileFormat[iFile] == PARAVIEW || FileFormat[iFile] == PARAVIEW_BINARY) { cout << "Writing a Paraview file of the FFD boxes." << endl; for (iFFDBox = 0; iFFDBox < GetnFFDBox(); iFFDBox++) { FFDBox[iFFDBox]->SetParaview(geometry, iFFDBox, true); } - } else if (FileFormat[iFile] == TECPLOT) { + } else if (FileFormat[iFile] == TECPLOT || FileFormat[iFile] == TECPLOT_BINARY) { cout << "Writing a Tecplot file of the FFD boxes." << endl; for (iFFDBox = 0; iFFDBox < GetnFFDBox(); iFFDBox++) { FFDBox[iFFDBox]->SetTecplot(geometry, iFFDBox, true); @@ -2794,12 +2794,12 @@ void CSurfaceMovement::SetSurface_Deformation(CGeometry *geometry, CConfig *conf for (unsigned short iFile = 0; iFile < config->GetnVolumeOutputFiles(); iFile++){ unsigned short *FileFormat = config->GetVolumeOutputFiles(); - if (FileFormat[iFile] == PARAVIEW) { + if (FileFormat[iFile] == PARAVIEW || FileFormat[iFile] == PARAVIEW_BINARY) { cout << "Writing a Paraview file of the FFD boxes." << endl; for (iFFDBox = 0; iFFDBox < GetnFFDBox(); iFFDBox++) { FFDBox[iFFDBox]->SetParaview(geometry, iFFDBox, true); } - } else if (FileFormat[iFile] == TECPLOT) { + } else if (FileFormat[iFile] == TECPLOT || FileFormat[iFile] == TECPLOT_BINARY) { cout << "Writing a Tecplot file of the FFD boxes." << endl; for (iFFDBox = 0; iFFDBox < GetnFFDBox(); iFFDBox++) { FFDBox[iFFDBox]->SetTecplot(geometry, iFFDBox, true); @@ -2973,12 +2973,12 @@ void CSurfaceMovement::SetSurface_Deformation(CGeometry *geometry, CConfig *conf for (unsigned short iFile = 0; iFile < config->GetnVolumeOutputFiles(); iFile++){ unsigned short *FileFormat = config->GetVolumeOutputFiles(); - if (FileFormat[iFile] == PARAVIEW) { + if (FileFormat[iFile] == PARAVIEW || FileFormat[iFile] == PARAVIEW_BINARY) { cout << "Writing a Paraview file of the FFD boxes." << endl; for (iFFDBox = 0; iFFDBox < GetnFFDBox(); iFFDBox++) { FFDBox[iFFDBox]->SetParaview(geometry, iFFDBox, false); } - } else if (FileFormat[iFile] == TECPLOT) { + } else if (FileFormat[iFile] == TECPLOT || FileFormat[iFile] == TECPLOT_BINARY) { cout << "Writing a Tecplot file of the FFD boxes." << endl; for (iFFDBox = 0; iFFDBox < GetnFFDBox(); iFFDBox++) { FFDBox[iFFDBox]->SetTecplot(geometry, iFFDBox, false); diff --git a/Common/src/interpolation_structure.cpp b/Common/src/interpolation_structure.cpp index 1c11a09a1250..5f3d3528ad71 100644 --- a/Common/src/interpolation_structure.cpp +++ b/Common/src/interpolation_structure.cpp @@ -224,7 +224,7 @@ void CInterpolator::Collect_VertexInfo(bool faces, int markDonor, int markTarget su2double *Normal; for (iVertex = 0; iVertex < MaxLocalVertex_Donor; iVertex++) { - Buffer_Send_GlobalPoint[iVertex] = 0; + Buffer_Send_GlobalPoint[iVertex] = -1; for (iDim = 0; iDim < nDim; iDim++) { Buffer_Send_Coord[iVertex*nDim+iDim] = 0.0; if (faces) @@ -255,7 +255,7 @@ void CInterpolator::Collect_VertexInfo(bool faces, int markDonor, int markTarget #ifdef HAVE_MPI SU2_MPI::Allgather(Buffer_Send_Coord, nBuffer_Coord, MPI_DOUBLE, Buffer_Receive_Coord, nBuffer_Coord, MPI_DOUBLE, MPI_COMM_WORLD); - SU2_MPI::Allgather(Buffer_Send_GlobalPoint, nBuffer_Point, MPI_UNSIGNED_LONG, Buffer_Receive_GlobalPoint, nBuffer_Point, MPI_UNSIGNED_LONG, MPI_COMM_WORLD); + SU2_MPI::Allgather(Buffer_Send_GlobalPoint, nBuffer_Point, MPI_LONG, Buffer_Receive_GlobalPoint, nBuffer_Point, MPI_LONG, MPI_COMM_WORLD); if (faces) { SU2_MPI::Allgather(Buffer_Send_Normal, nBuffer_Coord, MPI_DOUBLE, Buffer_Receive_Normal, nBuffer_Coord, MPI_DOUBLE, MPI_COMM_WORLD); } @@ -409,7 +409,7 @@ void CInterpolator::ReconstructBoundary(unsigned long val_zone, int val_marker){ #endif Buffer_Receive_Coord = new su2double [ nGlobalVertex * nDim ]; - Buffer_Receive_GlobalPoint = new unsigned long[ nGlobalVertex ]; + Buffer_Receive_GlobalPoint = new long[ nGlobalVertex ]; Buffer_Receive_Proc = new unsigned long[ nGlobalVertex ]; Buffer_Receive_nLinkedNodes = new unsigned long[ nGlobalVertex ]; @@ -443,7 +443,7 @@ void CInterpolator::ReconstructBoundary(unsigned long val_zone, int val_marker){ SU2_MPI::Recv( &iTmp, 1, MPI_UNSIGNED_LONG, iRank, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); SU2_MPI::Recv(&Buffer_Receive_Coord[tmp_index*nDim], nDim*iTmp, MPI_DOUBLE, iRank, 1, MPI_COMM_WORLD, MPI_STATUS_IGNORE); - SU2_MPI::Recv( &Buffer_Receive_GlobalPoint[tmp_index], iTmp, MPI_UNSIGNED_LONG, iRank, 1, MPI_COMM_WORLD, MPI_STATUS_IGNORE); + SU2_MPI::Recv( &Buffer_Receive_GlobalPoint[tmp_index], iTmp, MPI_LONG, iRank, 1, MPI_COMM_WORLD, MPI_STATUS_IGNORE); SU2_MPI::Recv( &Buffer_Receive_nLinkedNodes[tmp_index], iTmp, MPI_UNSIGNED_LONG, iRank, 1, MPI_COMM_WORLD, MPI_STATUS_IGNORE); SU2_MPI::Recv(&Buffer_Receive_StartLinkedNodes[tmp_index], iTmp, MPI_UNSIGNED_LONG, iRank, 1, MPI_COMM_WORLD, MPI_STATUS_IGNORE); @@ -490,7 +490,7 @@ void CInterpolator::ReconstructBoundary(unsigned long val_zone, int val_marker){ for (jVertex = 0; jVertex < Buffer_Receive_nLinkedNodes[iVertex]; jVertex++){ iTmp = uptr[ jVertex ]; for (kVertex = 0; kVertex < nGlobalVertex; kVertex++){ - if( Buffer_Receive_GlobalPoint[kVertex] == iTmp ){ + if( Buffer_Receive_GlobalPoint[kVertex] == long(iTmp) ){ uptr[ jVertex ] = kVertex; count++; break; @@ -510,7 +510,7 @@ void CInterpolator::ReconstructBoundary(unsigned long val_zone, int val_marker){ #ifdef HAVE_MPI SU2_MPI::Bcast( Buffer_Receive_Coord, nGlobalVertex * nDim, MPI_DOUBLE, 0, MPI_COMM_WORLD); - SU2_MPI::Bcast(Buffer_Receive_GlobalPoint, nGlobalVertex, MPI_UNSIGNED_LONG, 0, MPI_COMM_WORLD); + SU2_MPI::Bcast(Buffer_Receive_GlobalPoint, nGlobalVertex, MPI_LONG, 0, MPI_COMM_WORLD); SU2_MPI::Bcast( Buffer_Receive_Proc, nGlobalVertex, MPI_UNSIGNED_LONG, 0, MPI_COMM_WORLD ); SU2_MPI::Bcast( Buffer_Receive_nLinkedNodes, nGlobalVertex, MPI_UNSIGNED_LONG, 0, MPI_COMM_WORLD); @@ -613,7 +613,8 @@ void CNearestNeighbor::Set_TransferCoeff(CConfig **config) { unsigned short nDim, iMarkerInt, nMarkerInt, iDonor; unsigned long nVertexDonor, nVertexTarget, Point_Target, jVertex, iVertexTarget; - unsigned long Global_Point_Donor, pGlobalPoint=0; + unsigned long Global_Point_Donor; + long pGlobalPoint = 0; su2double *Coord_i, *Coord_j, dist, mindist, maxdist; @@ -659,9 +660,9 @@ void CNearestNeighbor::Set_TransferCoeff(CConfig **config) { Determine_ArraySize(false, markDonor, markTarget, nVertexDonor, nDim); Buffer_Send_Coord = new su2double [ MaxLocalVertex_Donor * nDim ]; - Buffer_Send_GlobalPoint = new unsigned long [ MaxLocalVertex_Donor ]; + Buffer_Send_GlobalPoint = new long [ MaxLocalVertex_Donor ]; Buffer_Receive_Coord = new su2double [ nProcessor * MaxLocalVertex_Donor * nDim ]; - Buffer_Receive_GlobalPoint = new unsigned long [ nProcessor * MaxLocalVertex_Donor ]; + Buffer_Receive_GlobalPoint = new long [ nProcessor * MaxLocalVertex_Donor ]; /*-- Collect coordinates, global points, and normal vectors ---*/ Collect_VertexInfo( false, markDonor, markTarget, nVertexDonor, nDim ); @@ -688,19 +689,23 @@ void CNearestNeighbor::Set_TransferCoeff(CConfig **config) { for (iProcessor = 0; iProcessor < nProcessor; iProcessor++) { for (jVertex = 0; jVertex < MaxLocalVertex_Donor; jVertex++) { + Global_Point_Donor = iProcessor*MaxLocalVertex_Donor+jVertex; - - Coord_j = &Buffer_Receive_Coord[ Global_Point_Donor*nDim]; - - dist = PointsDistance(Coord_i, Coord_j); - - if (dist < mindist) { - mindist = dist; pProcessor = iProcessor; pGlobalPoint = Buffer_Receive_GlobalPoint[Global_Point_Donor]; + + if (Buffer_Receive_GlobalPoint[Global_Point_Donor] != -1){ + + Coord_j = &Buffer_Receive_Coord[ Global_Point_Donor*nDim]; + + dist = PointsDistance(Coord_i, Coord_j); + + if (dist < mindist) { + mindist = dist; pProcessor = iProcessor; + pGlobalPoint = Buffer_Receive_GlobalPoint[Global_Point_Donor]; + } + + if (dist == 0.0) break; } - - if (dist == 0.0) break; } - } /*--- Store the value of the pair ---*/ @@ -759,7 +764,6 @@ void CIsoparametric::Set_TransferCoeff(CConfig **config) { unsigned long Point_Target = 0; unsigned long iVertexDonor, iPointDonor = 0; - unsigned long jGlobalPoint = 0; int iProcessor; unsigned long nLocalFace_Donor = 0, nLocalFaceNodes_Donor=0; @@ -822,11 +826,11 @@ void CIsoparametric::Set_TransferCoeff(CConfig **config) { Buffer_Send_Coord = new su2double [MaxLocalVertex_Donor*nDim]; Buffer_Send_Normal = new su2double [MaxLocalVertex_Donor*nDim]; - Buffer_Send_GlobalPoint = new unsigned long [MaxLocalVertex_Donor]; + Buffer_Send_GlobalPoint = new long [MaxLocalVertex_Donor]; Buffer_Receive_Coord = new su2double [nProcessor*MaxLocalVertex_Donor*nDim]; Buffer_Receive_Normal = new su2double [nProcessor*MaxLocalVertex_Donor*nDim]; - Buffer_Receive_GlobalPoint = new unsigned long [nProcessor*MaxLocalVertex_Donor]; + Buffer_Receive_GlobalPoint = new long [nProcessor*MaxLocalVertex_Donor]; /*-- Collect coordinates, global points, and normal vectors ---*/ Collect_VertexInfo(true, markDonor,markTarget,nVertexDonor,nDim); @@ -883,10 +887,10 @@ void CIsoparametric::Set_TransferCoeff(CConfig **config) { inode = donor_geometry->elem[temp_donor]->GetFaces(iFace, iDonor); dPoint = donor_geometry->elem[temp_donor]->GetNode(inode); // Match node on the face to the correct global index - jGlobalPoint=donor_geometry->node[dPoint]->GetGlobalIndex(); + long jGlobalPoint = donor_geometry->node[dPoint]->GetGlobalIndex(); for (iProcessor = 0; iProcessor < nProcessor; iProcessor++) { for (jVertex = 0; jVertex < Buffer_Receive_nVertex_Donor[iProcessor]; jVertex++) { - if (jGlobalPoint ==Buffer_Receive_GlobalPoint[MaxLocalVertex_Donor*iProcessor+jVertex]) { + if (jGlobalPoint == Buffer_Receive_GlobalPoint[MaxLocalVertex_Donor*iProcessor+jVertex]) { Buffer_Send_FaceNodes[nLocalFaceNodes_Donor]=MaxLocalVertex_Donor*iProcessor+jVertex; Buffer_Send_FaceProc[nLocalFaceNodes_Donor]=iProcessor; } @@ -913,10 +917,10 @@ void CIsoparametric::Set_TransferCoeff(CConfig **config) { inode = donor_geometry->node[iPointDonor]->GetEdge(jElem); dPoint = donor_geometry->edge[inode]->GetNode(iDonor); // Match node on the face to the correct global index - jGlobalPoint=donor_geometry->node[dPoint]->GetGlobalIndex(); + long jGlobalPoint = donor_geometry->node[dPoint]->GetGlobalIndex(); for (iProcessor = 0; iProcessor < nProcessor; iProcessor++) { for (jVertex = 0; jVertex < Buffer_Receive_nVertex_Donor[iProcessor]; jVertex++) { - if (jGlobalPoint ==Buffer_Receive_GlobalPoint[MaxLocalVertex_Donor*iProcessor+jVertex]) { + if (jGlobalPoint == Buffer_Receive_GlobalPoint[MaxLocalVertex_Donor*iProcessor+jVertex]) { Buffer_Send_FaceNodes[nLocalFaceNodes_Donor]=MaxLocalVertex_Donor*iProcessor+jVertex; Buffer_Send_FaceProc[nLocalFaceNodes_Donor]=iProcessor; } @@ -1294,7 +1298,6 @@ void CMirror::Set_TransferCoeff(CConfig **config) { unsigned int nNodes=0, iNodes=0; unsigned long nVertexDonor = 0, nVertexTarget= 0; unsigned long Point_Donor = 0; - unsigned long Global_Point = 0; unsigned long pGlobalPoint = 0; int iProcessor; @@ -1378,14 +1381,12 @@ void CMirror::Set_TransferCoeff(CConfig **config) { /*-- Send donor info --*/ Buffer_Send_FaceIndex = new unsigned long[MaxFace_Donor]; Buffer_Send_FaceNodes = new unsigned long[MaxFaceNodes_Donor]; - //Buffer_Send_FaceProc = new unsigned long[MaxFaceNodes_Donor]; - Buffer_Send_GlobalPoint = new unsigned long[MaxFaceNodes_Donor]; + Buffer_Send_GlobalPoint = new long[MaxFaceNodes_Donor]; Buffer_Send_Coeff = new su2double[MaxFaceNodes_Donor]; Buffer_Receive_FaceIndex= new unsigned long[MaxFace_Donor*nProcessor]; Buffer_Receive_FaceNodes= new unsigned long[MaxFaceNodes_Donor*nProcessor]; - //Buffer_Receive_FaceProc = new unsigned long[MaxFaceNodes_Donor*nProcessor]; - Buffer_Receive_GlobalPoint = new unsigned long[MaxFaceNodes_Donor*nProcessor]; + Buffer_Receive_GlobalPoint = new long[MaxFaceNodes_Donor*nProcessor]; Buffer_Receive_Coeff = new su2double[MaxFaceNodes_Donor*nProcessor]; for (iVertex=0; iVertexvertex[markTarget][iVertex]->GetNode(); if (target_geometry->node[iPoint]->GetDomain()) { - Global_Point = target_geometry->node[iPoint]->GetGlobalIndex(); + long Global_Point = target_geometry->node[iPoint]->GetGlobalIndex(); nNodes = 0; for (iProcessor = 0; iProcessor < nProcessor; iProcessor++) { for (iFace = 0; iFace < Buffer_Receive_nFace_Donor[iProcessor]; iFace++) { @@ -1452,7 +1452,6 @@ void CMirror::Set_TransferCoeff(CConfig **config) { for (iTarget=0; iTargetvertex[markTarget][iVertex]->SetInterpDonorPoint(iDonor,pGlobalPoint); target_geometry->vertex[markTarget][iVertex]->SetDonorCoeff(iDonor,coeff); target_geometry->vertex[markTarget][iVertex]->SetInterpDonorProcessor(iDonor, iProcessor); - //cout <node[target_iPoint]->GetGlobalIndex(); + long dPoint = target_geometry->node[target_iPoint]->GetGlobalIndex(); for (jVertexTarget = 0; jVertexTarget < nGlobalVertex_Target; jVertexTarget++) if( dPoint == Target_GlobalPoint[jVertexTarget] ) break; @@ -1936,7 +1935,7 @@ void CSlidingMesh::Set_TransferCoeff(CConfig **config){ for (iDim = 0; iDim < nDim; iDim++) Coord_i[iDim] = target_geometry->node[target_iPoint]->GetCoord(iDim); - dPoint = target_geometry->node[target_iPoint]->GetGlobalIndex(); + long dPoint = target_geometry->node[target_iPoint]->GetGlobalIndex(); for (target_iPoint = 0; target_iPoint < nGlobalVertex_Target; target_iPoint++){ if( dPoint == Target_GlobalPoint[target_iPoint] ) break; @@ -2864,9 +2863,9 @@ void CRadialBasisFunction::Set_TransferCoeff(CConfig **config) { /*-- Collect coordinates, global points, and normal vectors ---*/ Buffer_Send_Coord = new su2double [ MaxLocalVertex_Donor * nDim ]; - Buffer_Send_GlobalPoint = new unsigned long [ MaxLocalVertex_Donor ]; + Buffer_Send_GlobalPoint = new long [ MaxLocalVertex_Donor ]; Buffer_Receive_Coord = new su2double [ nProcessor * MaxLocalVertex_Donor * nDim ]; - Buffer_Receive_GlobalPoint = new unsigned long [ nProcessor * MaxLocalVertex_Donor ]; + Buffer_Receive_GlobalPoint = new long [ nProcessor * MaxLocalVertex_Donor ]; Collect_VertexInfo( false, mark_donor, mark_target, nVertexDonor, nDim); diff --git a/Common/src/linear_algebra/CSysMatrix.cpp b/Common/src/linear_algebra/CSysMatrix.cpp index 509fa9e04040..133da2df48e8 100644 --- a/Common/src/linear_algebra/CSysMatrix.cpp +++ b/Common/src/linear_algebra/CSysMatrix.cpp @@ -265,6 +265,9 @@ void CSysMatrix::Initialize(unsigned long nPoint, unsigned long nPoi ILU_matrix = new ScalarType [nnz_ilu*nVar*nEqn]; for (iVar = 0; iVar < nnz_ilu*nVar*nEqn; iVar++) ILU_matrix[iVar] = 0.0; + invM = new ScalarType [nPointDomain*nVar*nEqn]; + for (iVar = 0; iVar < nPointDomain*nVar*nEqn; iVar++) invM[iVar] = 0.0; + delete [] nNeigh_ilu; } diff --git a/README.md b/README.md index 960343903097..80a0a3ebad70 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,3 @@ -

- -

- ----------------------------------------------------------- SU2 (ver. 6.2.0 "Falcon"): The Open-Source CFD Code ----------------------------------------------------------- @@ -80,4 +76,3 @@ The main research teams contributing to the current release are: - Lab. of New Concepts in Aeronautics at Tech. Inst. of Aeronautics. Copyright 2012-2019, Francisco D. Palacios, Thomas D. Economon, Tim Albring, and the SU2 contributors. - diff --git a/SU2_CFD/include/variables/CVariable.hpp b/SU2_CFD/include/variables/CVariable.hpp index 7e16e6e19bc3..3d74df798c4e 100644 --- a/SU2_CFD/include/variables/CVariable.hpp +++ b/SU2_CFD/include/variables/CVariable.hpp @@ -123,8 +123,8 @@ class CVariable { MatrixType Solution_BGS_k; /*!< \brief Old solution container for BGS iterations. */ - su2matrix Input_AdjIndices; /*!< \brief Indices of Solution variables in the adjoint vector. */ - su2matrix Output_AdjIndices; /*!< \brief Indices of Solution variables in the adjoint vector after having been updated. */ + su2matrix AD_InputIndex; /*!< \brief Indices of Solution variables in the adjoint vector. */ + su2matrix AD_OutputIndex; /*!< \brief Indices of Solution variables in the adjoint vector after having been updated. */ unsigned long nPoint = {0}; /*!< \brief Number of points in the domain. */ unsigned long nDim = {0}; /*!< \brief Number of dimension of the problem. */ @@ -2572,20 +2572,9 @@ class CVariable { /*! * \brief Register the variables in the solution array as input/output variable. * \param[in] input - input or output variables. + * \param[in] push_index - boolean whether we want to push the index or save it in a member variable. */ - void RegisterSolution(bool input); - - /*! - * \brief Register the variables in the solution array as input/output variable. - * \param[in] input - input or output variables. - */ - void RegisterSolution_intIndexBased(bool input); - - /*! - * \brief Saving the adjoint vector position with respect to the solution variables. - * \param[in] input - input or output variables. - */ - void SetAdjIndices(bool input); + void RegisterSolution(bool input, bool push_index = true); /*! * \brief Register the variables in the solution_time_n array as input/output variable. @@ -2610,9 +2599,9 @@ class CVariable { * \brief Set the adjoint values of the solution. * \param[in] adj_sol - The adjoint values of the solution. */ - inline void SetAdjointSolution_intIndexBased(unsigned long iPoint, const su2double *adj_sol) { + inline void SetAdjointSolution_LocalIndex(unsigned long iPoint, const su2double *adj_sol) { for (unsigned long iVar = 0; iVar < nVar; iVar++) - AD::SetDerivative(Output_AdjIndices(iPoint,iVar), SU2_TYPE::GetValue(adj_sol[iVar])); + AD::SetDerivative(AD_OutputIndex(iPoint,iVar), SU2_TYPE::GetValue(adj_sol[iVar])); } /*! @@ -2628,9 +2617,9 @@ class CVariable { * \brief Get the adjoint values of the solution. * \param[in] adj_sol - The adjoint values of the solution. */ - inline void GetAdjointSolution_intIndexBased(unsigned long iPoint, su2double *adj_sol) const { + inline void GetAdjointSolution_LocalIndex(unsigned long iPoint, su2double *adj_sol) const { for (unsigned long iVar = 0; iVar < nVar; iVar++) - adj_sol[iVar] = AD::GetDerivative(Input_AdjIndices(iPoint,iVar)); + adj_sol[iVar] = AD::GetDerivative(AD_InputIndex(iPoint,iVar)); } /*! diff --git a/SU2_CFD/obj/Makefile.am b/SU2_CFD/obj/Makefile.am index ada7e4097442..a482e76cce0c 100644 --- a/SU2_CFD/obj/Makefile.am +++ b/SU2_CFD/obj/Makefile.am @@ -143,10 +143,8 @@ libSU2Core_sources = ../src/definition_structure.cpp \ ../src/interfaces/fsi/CDisplacementsInterfaceLegacy.cpp \ ../src/interfaces/fsi/CDiscAdjDisplacementsInterfaceLegacy.cpp \ ../src/transport_model.cpp \ - ../src/variables/CFEAFSIBoundVariable.cpp \ ../src/variables/CFEABoundVariable.cpp \ ../src/variables/CDiscAdjMeshBoundVariable.cpp \ - ../src/variables/CDiscAdjMeshVariable.cpp \ ../src/variables/CMeshBoundVariable.cpp \ ../src/variables/CMeshElement.cpp \ ../src/variables/CMeshVariable.cpp \ diff --git a/SU2_CFD/src/drivers/CDiscAdjMultizoneDriver.cpp b/SU2_CFD/src/drivers/CDiscAdjMultizoneDriver.cpp index bd2f60f70950..8e794e9d0782 100644 --- a/SU2_CFD/src/drivers/CDiscAdjMultizoneDriver.cpp +++ b/SU2_CFD/src/drivers/CDiscAdjMultizoneDriver.cpp @@ -150,8 +150,7 @@ void CDiscAdjMultizoneDriver::Run() { unsigned short jZone = 0, wrt_sol_freq = config_container[ZONE_0]->GetVolume_Wrt_Freq(); unsigned long nIter = 0, - iOuter_Iter = 0, - iInner_Iter = 0; + iOuter_Iter = 0; nIter = driver_config->GetnOuter_Iter(); @@ -251,10 +250,14 @@ void CDiscAdjMultizoneDriver::Run() { /*--- Add off-diagonal contribution (including the OF gradient) to Solution for next inner evaluation. ---*/ Add_ExternalOld_To_Solution(iZone); - } + /*--- Print out the convergence data to screen and history file ---*/ + + output_container[iZone]->SetHistory_Output(geometry_container[iZone][INST_0][MESH_0], solver_container[iZone][INST_0][MESH_0], + config_container[iZone], config_container[iZone]->GetTimeIter(), iOuter_Iter, iInnerIter); + } - /*--- Off-diagonal (coupling term) update. ---*/ + /*--- Off-diagonal (coupling term) update for next outer evaluation. ---*/ for (jZone = 0; jZone < nZone; jZone++) { @@ -270,13 +273,12 @@ void CDiscAdjMultizoneDriver::Run() { /*--- Add the cross derivatives from iZone<-jZone dependencies to the External vector. ---*/ Add_Solution_To_External(jZone); - } } // TODO: Add an option to _already_ update off-diagonals here (i.e., in the zone-loop) - /*--- Compute residual from Solution and Solution_BGS_k. ---*/ + /*--- Save Solution to Solution_BGS and compute residual from Solution_BGS and Solution_BGS_k. ---*/ SetResidual_BGS(iZone); @@ -284,18 +286,18 @@ void CDiscAdjMultizoneDriver::Run() { * (Solution might be overwritten when entering another zone because of cross derivatives.) ---*/ Set_BGSSolution(iZone); + + /*--- make sure that everything is loaded into the output container ---*/ + + output_container[iZone]->SetHistory_Output(geometry_container[iZone][INST_0][MESH_0],solver_container[iZone][INST_0][MESH_0], config_container[iZone]); + } /*--- Now all coupling terms are summed up, set External_Old to External for next outer iteration. ---*/ Set_OldExternal(); - - /*--- Print out the convergence data to screen and history file ---*/ - - for (iZone = 0; iZone < nZone; iZone++) { - output_container[iZone]->SetHistory_Output(geometry_container[iZone][INST_0][MESH_0], solver_container[iZone][INST_0][MESH_0], - config_container[iZone], config_container[iZone]->GetTimeIter(), iOuter_Iter, iInner_Iter); - } + + /*--- Set the multizone output. ---*/ driver_output->SetMultizoneHistory_Output(output_container, config_container, driver_config, driver_config->GetTimeIter(), driver_config->GetOuterIter()); @@ -718,10 +720,13 @@ void CDiscAdjMultizoneDriver::SetObjFunction(unsigned short kind_recording) { if (rank == MASTER_NODE) { AD::RegisterOutput(ObjFunc); - AD::SetAdjIndex(ObjFunc_Index, ObjFunc); - if (rank == MASTER_NODE && kind_recording == FLOW_CONS_VARS) { - - cout << " Objective function : " << ObjFunc << " (" << ObjFunc_Index << ")" << endl; + AD::SetIndex(ObjFunc_Index, ObjFunc); + if (kind_recording == FLOW_CONS_VARS) { + cout << " Objective function : " << ObjFunc; + if (driver_config->GetWrt_AD_Statistics()){ + cout << " (" << ObjFunc_Index << ")" << endl; + } + cout << endl; } } } diff --git a/SU2_CFD/src/drivers/CDriver.cpp b/SU2_CFD/src/drivers/CDriver.cpp index f2a38dc546db..c6cd68bd342e 100644 --- a/SU2_CFD/src/drivers/CDriver.cpp +++ b/SU2_CFD/src/drivers/CDriver.cpp @@ -3707,56 +3707,56 @@ void CDriver::Output_Preprocessing(CConfig **config, CConfig *driver_config, COu case EULER: case NAVIER_STOKES: case RANS: if (rank == MASTER_NODE) - cout << ": Euler/Navier-Stokes/RANS output structure." << endl; + cout << "Euler/Navier-Stokes/RANS output structure." << endl; output[iZone] = new CFlowCompOutput(config[iZone], nDim); break; case INC_EULER: case INC_NAVIER_STOKES: case INC_RANS: if (rank == MASTER_NODE) - cout << ": Euler/Navier-Stokes/RANS output structure." << endl; + cout << "Euler/Navier-Stokes/RANS output structure." << endl; output[iZone] = new CFlowIncOutput(config[iZone], nDim); break; case HEAT_EQUATION_FVM: if (rank == MASTER_NODE) - cout << ": heat output structure." << endl; + cout << "Heat output structure." << endl; output[iZone] = new CHeatOutput(config[iZone], nDim); break; case FEM_ELASTICITY: if (rank == MASTER_NODE) - cout << ": FEM output structure." << endl; + cout << "FEM output structure." << endl; output[iZone] = new CElasticityOutput(config[iZone], nDim); break; case DISC_ADJ_EULER: case DISC_ADJ_NAVIER_STOKES: case DISC_ADJ_RANS: case ADJ_EULER: case ADJ_NAVIER_STOKES: case ADJ_RANS: if (rank == MASTER_NODE) - cout << ": adjoint Euler/Navier-Stokes/RANS output structure." << endl; + cout << "Adjoint Euler/Navier-Stokes/RANS output structure." << endl; output[iZone] = new CAdjFlowCompOutput(config[iZone], nDim); break; case DISC_ADJ_INC_EULER: case DISC_ADJ_INC_NAVIER_STOKES: case DISC_ADJ_INC_RANS: if (rank == MASTER_NODE) - cout << ": adjoint Euler/Navier-Stokes/RANS output structure." << endl; + cout << "Adjoint Euler/Navier-Stokes/RANS output structure." << endl; output[iZone] = new CAdjFlowIncOutput(config[iZone], nDim); break; case DISC_ADJ_FEM: if (rank == MASTER_NODE) - cout << ": discrete adjoint FEA output structure." << endl; + cout << "Discrete adjoint FEA output structure." << endl; output[iZone] = new CAdjElasticityOutput(config[iZone], nDim); break; case DISC_ADJ_HEAT: if (rank == MASTER_NODE) - cout << ": discrete adjoint heat output structure." << endl; + cout << "Discrete adjoint heat output structure." << endl; output[iZone] = new CAdjHeatOutput(config[iZone], nDim); break; case FEM_EULER: case FEM_LES: case FEM_RANS: case FEM_NAVIER_STOKES: if (rank == MASTER_NODE) - cout << ": FEM output structure." << endl; + cout << "FEM output structure." << endl; output[iZone] = new CFlowCompFEMOutput(config[iZone], nDim); break; default: if (rank == MASTER_NODE) - cout << ": default output structure." << endl; + cout << "Default output structure." << endl; output[iZone] = new COutput(config[iZone], nDim, false); break; } diff --git a/SU2_CFD/src/iteration_structure.cpp b/SU2_CFD/src/iteration_structure.cpp index bf026f5c7bde..579025049cb6 100644 --- a/SU2_CFD/src/iteration_structure.cpp +++ b/SU2_CFD/src/iteration_structure.cpp @@ -2474,11 +2474,9 @@ void CDiscAdjFluidIteration::SetDependencies(CSolver *****solver, solver[iZone][iInst][MESH_0][FLOW_SOL]->CompleteComms(geometry[iZone][iInst][MESH_0], config[iZone], SOLUTION); if (turbulent && !frozen_visc){ - solver[iZone][iInst][MESH_0][FLOW_SOL]->Preprocessing(geometry[iZone][iInst][MESH_0],solver[iZone][iInst][MESH_0], config[iZone], MESH_0, NO_RK_ITER, RUNTIME_FLOW_SYS, true); solver[iZone][iInst][MESH_0][TURB_SOL]->Postprocessing(geometry[iZone][iInst][MESH_0],solver[iZone][iInst][MESH_0], config[iZone], MESH_0); solver[iZone][iInst][MESH_0][TURB_SOL]->InitiateComms(geometry[iZone][iInst][MESH_0], config[iZone], SOLUTION); solver[iZone][iInst][MESH_0][TURB_SOL]->CompleteComms(geometry[iZone][iInst][MESH_0], config[iZone], SOLUTION); - } if (heat){ diff --git a/SU2_CFD/src/output/CAdjFlowCompOutput.cpp b/SU2_CFD/src/output/CAdjFlowCompOutput.cpp index a6859b69ae47..e9901ab8504a 100644 --- a/SU2_CFD/src/output/CAdjFlowCompOutput.cpp +++ b/SU2_CFD/src/output/CAdjFlowCompOutput.cpp @@ -269,7 +269,7 @@ void CAdjFlowCompOutput::LoadHistoryData(CConfig *config, CGeometry *geometry, C break; case SST: SetHistoryOutputValue("BGS_ADJ_TKE", log10(adjturb_solver->GetRes_BGS(0))); - SetHistoryOutputValue("BGS_ADJOINT_DISSIPATION", log10(adjturb_solver->GetRes_BGS(1))); + SetHistoryOutputValue("BGS_ADJ_DISSIPATION", log10(adjturb_solver->GetRes_BGS(1))); break; default: break; } diff --git a/SU2_CFD/src/output/CAdjFlowIncOutput.cpp b/SU2_CFD/src/output/CAdjFlowIncOutput.cpp index d6356f136a0b..1bd2bc350057 100644 --- a/SU2_CFD/src/output/CAdjFlowIncOutput.cpp +++ b/SU2_CFD/src/output/CAdjFlowIncOutput.cpp @@ -282,7 +282,7 @@ void CAdjFlowIncOutput::LoadHistoryData(CConfig *config, CGeometry *geometry, CS break; case SST: SetHistoryOutputValue("BGS_ADJ_TKE", log10(adjturb_solver->GetRes_BGS(0))); - SetHistoryOutputValue("BGS_ADJOINT_DISSIPATION", log10(adjturb_solver->GetRes_BGS(1))); + SetHistoryOutputValue("BGS_ADJ_DISSIPATION", log10(adjturb_solver->GetRes_BGS(1))); break; default: break; } diff --git a/SU2_CFD/src/output/COutput.cpp b/SU2_CFD/src/output/COutput.cpp index f70f90a4de93..deec97c83cc2 100644 --- a/SU2_CFD/src/output/COutput.cpp +++ b/SU2_CFD/src/output/COutput.cpp @@ -499,7 +499,7 @@ void COutput::WriteToFile(CConfig *config, CGeometry *geometry, unsigned short f /*--- Load and sort the output data and connectivity. ---*/ - volumeDataSorter->SortConnectivity(config, geometry, true); + volumeDataSorter->SortConnectivity(config, geometry, false); /*--- Write tecplot binary ---*/ @@ -1220,7 +1220,7 @@ void COutput::CheckHistoryOutput(){ nRequestedHistoryFields = requestedHistoryFields.size(); if (rank == MASTER_NODE){ - cout <<"History output groups: "; + cout <<"History output group(s): "; for (unsigned short iReqField = 0; iReqField < nRequestedHistoryFields; iReqField++){ requestedField = requestedHistoryFields[iReqField]; cout << requestedHistoryFields[iReqField]; @@ -1231,18 +1231,30 @@ void COutput::CheckHistoryOutput(){ /*--- Check that the requested convergence monitoring field is available ---*/ bool removedField = false; + FieldsToRemove.clear(); for (unsigned short iField_Conv = 0; iField_Conv < convFields.size(); iField_Conv++){ if (historyOutput_Map.count(convFields[iField_Conv]) == 0){ if (!removedField) { - cout << "Ignoring Convergence Fields: "; + cout << "Ignoring Convergence Field(s): "; removedField = true; } cout << convFields[iField_Conv] << " "; - convFields.erase(std::find(convFields.begin(), - convFields.end(), convFields[iField_Conv])); + FieldsToRemove.push_back(convFields[iField_Conv]); } } if (removedField) cout << endl; + for (unsigned short iField_Conv = 0; iField_Conv < FieldsToRemove.size(); iField_Conv++){ + convFields.erase(std::find(convFields.begin(), + convFields.end(), FieldsToRemove[iField_Conv])); + } + if (rank == MASTER_NODE){ + cout <<"Convergence field(s): "; + for (unsigned short iField_Conv = 0; iField_Conv < convFields.size(); iField_Conv++){ + cout << convFields[iField_Conv]; + if (iField_Conv != convFields.size() - 1) cout << ", "; + } + cout << endl; + } } void COutput::PreprocessVolumeOutput(CConfig *config){ @@ -1552,17 +1564,6 @@ void COutput::Postprocess_HistoryData(CConfig *config){ } - for (unsigned short iField = 0; iField < historyOutputPerSurface_List.size(); iField++){ - for (unsigned short iMarker = 0; iMarker < historyOutputPerSurface_Map[historyOutputPerSurface_List[iField]].size(); iMarker++){ - HistoryOutputField &Field = historyOutputPerSurface_Map[historyOutputPerSurface_List[iField]][iMarker]; - if (Field.fieldType == HistoryFieldType::COEFFICIENT){ - if (config->GetDirectDiff() != NO_DERIVATIVE){ - SetHistoryOutputValue("D_" + historyOutputPerSurface_List[iField][iMarker], SU2_TYPE::GetDerivative(Field.value)); - } - } - } - } - if (currentField.fieldType == HistoryFieldType::COEFFICIENT){ if(SetUpdate_Averages(config)){ if (config->GetTime_Domain()){ @@ -1649,15 +1650,6 @@ void COutput::Postprocess_HistoryFields(CConfig *config){ } } } - - for (unsigned short iField = 0; iField < historyOutputPerSurface_List.size(); iField++){ - for (unsigned short iMarker = 0; iMarker < historyOutputPerSurface_Map[historyOutputPerSurface_List[iField]].size(); iMarker++){ - HistoryOutputField &Field = historyOutputPerSurface_Map[historyOutputPerSurface_List[iField]][iMarker]; - if (Field.fieldType == HistoryFieldType::COEFFICIENT){ - AddHistoryOutput("D_" + historyOutputPerSurface_List[iField][iMarker], "d[" + Field.fieldName + "]", Field.screenFormat, "D_" + Field.outputGroup, "Derivative values for per-surface output.", HistoryFieldType::AUTO_COEFFICIENT); - } - } - } for (unsigned short iFieldConv = 0; iFieldConv < convFields.size(); iFieldConv++){ const string &convField = convFields[iFieldConv]; @@ -1826,6 +1818,7 @@ void COutput::SetCommonHistoryFields(CConfig *config){ /// DESCRIPTION: Currently used wall-clock time. AddHistoryOutput("WALL_TIME", "Time(sec)", ScreenOutputFormat::SCIENTIFIC, "WALL_TIME", "Average wall-clock time"); + AddHistoryOutput("NONPHYSICAL_POINTS", "Nonphysical_Points", ScreenOutputFormat::INTEGER, "NONPHYSICAL_POINTS", "The number of non-physical points in the solution"); } void COutput::LoadCommonHistoryData(CConfig *config){ @@ -1852,6 +1845,7 @@ void COutput::LoadCommonHistoryData(CConfig *config){ SetHistoryOutputValue("WALL_TIME", UsedTime); + SetHistoryOutputValue("NONPHYSICAL_POINTS", config->GetNonphysical_Points()); } diff --git a/SU2_CFD/src/solver_adjoint_discrete.cpp b/SU2_CFD/src/solver_adjoint_discrete.cpp index 716c92471b43..b825b9309d74 100644 --- a/SU2_CFD/src/solver_adjoint_discrete.cpp +++ b/SU2_CFD/src/solver_adjoint_discrete.cpp @@ -262,16 +262,14 @@ void CDiscAdjSolver::RegisterSolution(CGeometry *geometry, CConfig *config) { bool time_n1_needed = (config->GetTime_Marching() == DT_STEPPING_2ND); bool time_n_needed = (config->GetTime_Marching() == DT_STEPPING_1ST) || time_n1_needed; - bool input = true; + bool input = true; + bool push_index = true; + + if(config->GetMultizone_Problem()) push_index = false; /*--- Register solution at all necessary time instances and other variables on the tape ---*/ - if(config->GetMultizone_Problem()) { - direct_solver->GetNodes()->RegisterSolution_intIndexBased(input); - direct_solver->GetNodes()->SetAdjIndices(input); - } else { - direct_solver->GetNodes()->RegisterSolution(input); - } + direct_solver->GetNodes()->RegisterSolution(input, push_index); if (time_n_needed) direct_solver->GetNodes()->RegisterSolution_time_n(); @@ -377,16 +375,14 @@ void CDiscAdjSolver::RegisterVariables(CGeometry *geometry, CConfig *config, boo void CDiscAdjSolver::RegisterOutput(CGeometry *geometry, CConfig *config) { + bool input = false; + bool push_index = true; + + if(config->GetMultizone_Problem()) push_index = false; + /*--- Register variables as output of the solver iteration ---*/ - bool input = false; - if(config->GetMultizone_Problem()) { - direct_solver->GetNodes()->RegisterSolution_intIndexBased(input); - direct_solver->GetNodes()->SetAdjIndices(input); - } - else { - direct_solver->GetNodes()->RegisterSolution(input); - } + direct_solver->GetNodes()->RegisterSolution(input, push_index); } void CDiscAdjSolver::RegisterObj_Func(CConfig *config) { @@ -487,15 +483,14 @@ void CDiscAdjSolver::ExtractAdjoint_Solution(CGeometry *geometry, CConfig *confi /*--- Set the old solution ---*/ - if(!config->GetMultizone_Problem() || config->GetFSI_Simulation()) - nodes->Set_OldSolution(); - + nodes->Set_OldSolution(); + for (iPoint = 0; iPoint < nPoint; iPoint++) { /*--- Extract the adjoint solution ---*/ if(config->GetMultizone_Problem()) { - direct_solver->GetNodes()->GetAdjointSolution_intIndexBased(iPoint,Solution); + direct_solver->GetNodes()->GetAdjointSolution_LocalIndex(iPoint,Solution); } else { direct_solver->GetNodes()->GetAdjointSolution(iPoint,Solution); @@ -641,7 +636,7 @@ void CDiscAdjSolver::ExtractAdjoint_Geometry(CGeometry *geometry, CConfig *confi /*--- Extract the adjoint solution ---*/ if (config->GetMultizone_Problem()) - geometry->node[iPoint]->GetAdjointCoord_intIndexBased(Solution_Geometry); + geometry->node[iPoint]->GetAdjointCoord_LocalIndex(Solution_Geometry); else geometry->node[iPoint]->GetAdjointCoord(Solution_Geometry); @@ -699,7 +694,7 @@ void CDiscAdjSolver::ExtractAdjoint_CrossTerm(CGeometry *geometry, CConfig *conf /*--- Extract the adjoint solution ---*/ - direct_solver->GetNodes()->GetAdjointSolution_intIndexBased(iPoint,Solution); + direct_solver->GetNodes()->GetAdjointSolution_LocalIndex(iPoint,Solution); for (iVar = 0; iVar < nVar; iVar++) nodes->SetCross_Term_Derivative(iPoint,iVar, Solution[iVar]); @@ -718,7 +713,7 @@ void CDiscAdjSolver::ExtractAdjoint_CrossTerm_Geometry(CGeometry *geometry, CCon /*--- Extract the adjoint solution ---*/ if (config->GetMultizone_Problem()) - geometry->node[iPoint]->GetAdjointCoord_intIndexBased(Solution_Geometry); + geometry->node[iPoint]->GetAdjointCoord_LocalIndex(Solution_Geometry); else geometry->node[iPoint]->GetAdjointCoord(Solution_Geometry); @@ -739,7 +734,7 @@ void CDiscAdjSolver::ExtractAdjoint_CrossTerm_Geometry_Flow(CGeometry *geometry, /*--- Extract the adjoint solution ---*/ if (config->GetMultizone_Problem()) - geometry->node[iPoint]->GetAdjointCoord_intIndexBased(Solution_Geometry); + geometry->node[iPoint]->GetAdjointCoord_LocalIndex(Solution_Geometry); else geometry->node[iPoint]->GetAdjointCoord(Solution_Geometry); @@ -779,7 +774,7 @@ void CDiscAdjSolver::SetAdjoint_Output(CGeometry *geometry, CConfig *config) { } } if(config->GetMultizone_Problem()) { - direct_solver->GetNodes()->SetAdjointSolution_intIndexBased(iPoint,Solution); + direct_solver->GetNodes()->SetAdjointSolution_LocalIndex(iPoint,Solution); } else { direct_solver->GetNodes()->SetAdjointSolution(iPoint,Solution); diff --git a/SU2_CFD/src/solver_direct_mean.cpp b/SU2_CFD/src/solver_direct_mean.cpp index a712e484036a..ed28f3a2bf2e 100644 --- a/SU2_CFD/src/solver_direct_mean.cpp +++ b/SU2_CFD/src/solver_direct_mean.cpp @@ -197,7 +197,8 @@ CEulerSolver::CEulerSolver(CGeometry *geometry, CConfig *config, unsigned short /*--- Check for a restart file to evaluate if there is a change in the angle of attack before computing all the non-dimesional quantities. ---*/ - if (!(!restart || (iMesh != MESH_0) || nZone > 1)) { + if (!(!restart || (iMesh != MESH_0) || nZone > 1) && + (config->GetFixed_CL_Mode() || config->GetFixed_CM_Mode())) { /*--- Modify file name for a dual-time unsteady restart ---*/ @@ -13963,8 +13964,9 @@ CNSSolver::CNSSolver(CGeometry *geometry, CConfig *config, unsigned short iMesh) /*--- Check for a restart file to evaluate if there is a change in the angle of attack before computing all the non-dimesional quantities. ---*/ - if (!(!restart || (iMesh != MESH_0) || nZone > 1)) { - + if (!(!restart || (iMesh != MESH_0) || nZone > 1) && + (config->GetFixed_CL_Mode() || config->GetFixed_CM_Mode())) { + /*--- Modify file name for a dual-time unsteady restart ---*/ if (dual_time) { @@ -15440,9 +15442,6 @@ void CNSSolver::Friction_Forces(CGeometry *geometry, CConfig *config) { Cp = (Gamma / Gamma_Minus_One) * Gas_Constant; thermal_conductivity = Cp * Viscosity/Prandtl_Lam; HeatFlux[iMarker][iVertex] = -thermal_conductivity*GradTemperature*RefHeatFlux; - HF_Visc[iMarker] += HeatFlux[iMarker][iVertex]*Area; - MaxHF_Visc[iMarker] += pow(HeatFlux[iMarker][iVertex], MaxNorm); - /*--- Note that y+, and heat are computed at the halo cells (for visualization purposes), but not the forces ---*/ @@ -15479,6 +15478,9 @@ void CNSSolver::Friction_Forces(CGeometry *geometry, CConfig *config) { } + HF_Visc[iMarker] += HeatFlux[iMarker][iVertex]*Area; + MaxHF_Visc[iMarker] += pow(HeatFlux[iMarker][iVertex], MaxNorm); + } /*--- Project forces and store the non-dimensional coefficients ---*/ diff --git a/SU2_CFD/src/solver_direct_mean_inc.cpp b/SU2_CFD/src/solver_direct_mean_inc.cpp index 1ea438ddc3a0..c159afa0b1d6 100644 --- a/SU2_CFD/src/solver_direct_mean_inc.cpp +++ b/SU2_CFD/src/solver_direct_mean_inc.cpp @@ -7763,8 +7763,6 @@ void CIncNSSolver::Friction_Forces(CGeometry *geometry, CConfig *config) { thermal_conductivity = nodes->GetThermalConductivity(iPoint); HeatFlux[iMarker][iVertex] = -thermal_conductivity*GradTemperature*RefHeatFlux; - HF_Visc[iMarker] += HeatFlux[iMarker][iVertex]*Area; - MaxHF_Visc[iMarker] += pow(HeatFlux[iMarker][iVertex], MaxNorm); /*--- Note that y+, and heat are computed at the halo cells (for visualization purposes), but not the forces ---*/ @@ -7799,6 +7797,9 @@ void CIncNSSolver::Friction_Forces(CGeometry *geometry, CConfig *config) { MomentZ_Force[0] += (-Force[0]*Coord[1]); MomentZ_Force[1] += (Force[1]*Coord[0]); + HF_Visc[iMarker] += HeatFlux[iMarker][iVertex]*Area; + MaxHF_Visc[iMarker] += pow(HeatFlux[iMarker][iVertex], MaxNorm); + } } diff --git a/SU2_CFD/src/variables/CTurbVariable.cpp b/SU2_CFD/src/variables/CTurbVariable.cpp index aedb90dc9c27..adf0c328b6ba 100644 --- a/SU2_CFD/src/variables/CTurbVariable.cpp +++ b/SU2_CFD/src/variables/CTurbVariable.cpp @@ -62,5 +62,5 @@ CTurbVariable::CTurbVariable(unsigned long npoint, unsigned long ndim, unsigned Solution_Max.resize(nPoint,nVar) = su2double(0.0); Solution_Min.resize(nPoint,nVar) = su2double(0.0); - Delta_Time.resize(nPoint); + Delta_Time.resize(nPoint) = su2double(0.0); } diff --git a/SU2_CFD/src/variables/CVariable.cpp b/SU2_CFD/src/variables/CVariable.cpp index 7f129fe3fb52..02e10e3e6cfb 100644 --- a/SU2_CFD/src/variables/CVariable.cpp +++ b/SU2_CFD/src/variables/CVariable.cpp @@ -81,8 +81,8 @@ CVariable::CVariable(unsigned long npoint, unsigned long ndim, unsigned long nva Non_Physical.resize(nPoint) = false; if(config->GetMultizone_Problem() && config->GetAD_Mode()) { - Input_AdjIndices.resize(nPoint,nVar) = -1; - Output_AdjIndices.resize(nPoint,nVar) = -1; + AD_InputIndex.resize(nPoint,nVar) = -1; + AD_OutputIndex.resize(nPoint,nVar) = -1; } if (config->GetMultizone_Problem()) @@ -113,16 +113,24 @@ void CVariable::SetExternalZero() { External.setConstant(0.0); } void CVariable::Set_OldExternal() { External_Old = External; } -void CVariable::RegisterSolution(bool input) { - if (input) { - for (unsigned long iPoint = 0; iPoint < nPoint; ++iPoint) - for(unsigned long iVar=0; iVar& indices = input? Input_AdjIndices : Output_AdjIndices; - - for (unsigned long iPoint = 0; iPoint < nPoint; ++iPoint) - for(unsigned long iVar=0; iVar < nVar; ++iVar) - AD::SetAdjIndex(indices(iPoint,iVar), Solution(iPoint,iVar)); -} diff --git a/TestCases/aeroelastic/aeroelastic_NACA64A010.cfg b/TestCases/aeroelastic/aeroelastic_NACA64A010.cfg index e9f712e48f4c..2417e3a51a37 100644 --- a/TestCases/aeroelastic/aeroelastic_NACA64A010.cfg +++ b/TestCases/aeroelastic/aeroelastic_NACA64A010.cfg @@ -236,7 +236,7 @@ DEFORM_LINEAR_SOLVER= FGMRES DEFORM_LINEAR_SOLVER_PREC= LU_SGS % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 500 +DEFORM_LINEAR_SOLVER_ITER= 500 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/cont_adj_euler/naca0012/inv_NACA0012.cfg b/TestCases/cont_adj_euler/naca0012/inv_NACA0012.cfg index 44966bfc57b2..067bb9357798 100644 --- a/TestCases/cont_adj_euler/naca0012/inv_NACA0012.cfg +++ b/TestCases/cont_adj_euler/naca0012/inv_NACA0012.cfg @@ -223,7 +223,7 @@ DEFORM_LINEAR_SOLVER= FGMRES DEFORM_LINEAR_SOLVER_PREC= LU_SGS % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 1000 +DEFORM_LINEAR_SOLVER_ITER= 1000 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/cont_adj_euler/naca0012/inv_NACA0012_FD.cfg b/TestCases/cont_adj_euler/naca0012/inv_NACA0012_FD.cfg index 991ffada8965..18b12764125a 100644 --- a/TestCases/cont_adj_euler/naca0012/inv_NACA0012_FD.cfg +++ b/TestCases/cont_adj_euler/naca0012/inv_NACA0012_FD.cfg @@ -217,7 +217,7 @@ DEFORM_LINEAR_SOLVER= FGMRES DEFORM_LINEAR_SOLVER_PREC= LU_SGS % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 1000 +DEFORM_LINEAR_SOLVER_ITER= 1000 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/cont_adj_euler/oneram6/inv_ONERAM6.cfg b/TestCases/cont_adj_euler/oneram6/inv_ONERAM6.cfg index 14201277d6f6..f06ebb297f5b 100644 --- a/TestCases/cont_adj_euler/oneram6/inv_ONERAM6.cfg +++ b/TestCases/cont_adj_euler/oneram6/inv_ONERAM6.cfg @@ -316,7 +316,7 @@ DV_VALUE= 0.05 DEFORM_LINEAR_SOLVER= FGMRES % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 500 +DEFORM_LINEAR_SOLVER_ITER= 500 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 2 diff --git a/TestCases/cont_adj_euler/wedge/inv_wedge_ROE.cfg b/TestCases/cont_adj_euler/wedge/inv_wedge_ROE.cfg index d7bd032720ee..23cbb3d1bfe3 100644 --- a/TestCases/cont_adj_euler/wedge/inv_wedge_ROE.cfg +++ b/TestCases/cont_adj_euler/wedge/inv_wedge_ROE.cfg @@ -310,7 +310,7 @@ DV_PARAM= (MAIN_BOX, 3,0, 0,1.0,0,0 ) % Value of the shape deformation deformation DV_VALUE= 0.5 % Number of smoothing iterations for FEA mesh deformation -DEFORM_LINEAR_ITER= 500 +DEFORM_LINEAR_SOLVER_ITER= 500 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/cont_adj_euler/wedge/inv_wedge_ROE_multiobj.cfg b/TestCases/cont_adj_euler/wedge/inv_wedge_ROE_multiobj.cfg index f03b97607dc6..573411c0d1dc 100644 --- a/TestCases/cont_adj_euler/wedge/inv_wedge_ROE_multiobj.cfg +++ b/TestCases/cont_adj_euler/wedge/inv_wedge_ROE_multiobj.cfg @@ -328,7 +328,7 @@ DV_PARAM= (MAIN_BOX, 3,0, 0,1.0,0,0 ) % Value of the shape deformation deformation DV_VALUE= 0.5 % Number of smoothing iterations for FEA mesh deformation -DEFORM_LINEAR_ITER= 500 +DEFORM_LINEAR_SOLVER_ITER= 500 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/control_surface/inv_ONERAM6_moving.cfg b/TestCases/control_surface/inv_ONERAM6_moving.cfg index 77d88ffa9f5f..8bc746483764 100644 --- a/TestCases/control_surface/inv_ONERAM6_moving.cfg +++ b/TestCases/control_surface/inv_ONERAM6_moving.cfg @@ -284,7 +284,7 @@ DV_VALUE= -5.0 % ------------------------ GRID DEFORMATION PARAMETERS ------------------------% % % Number of smoothing iterations for FEA mesh deformation -DEFORM_LINEAR_ITER= 50 +DEFORM_LINEAR_SOLVER_ITER= 50 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/control_surface/inv_ONERAM6_setting.cfg b/TestCases/control_surface/inv_ONERAM6_setting.cfg index fbfc8d23b466..f0385378949f 100644 --- a/TestCases/control_surface/inv_ONERAM6_setting.cfg +++ b/TestCases/control_surface/inv_ONERAM6_setting.cfg @@ -284,7 +284,7 @@ DV_VALUE= -5.0 % ------------------------ GRID DEFORMATION PARAMETERS ------------------------% % % Number of smoothing iterations for FEA mesh deformation -DEFORM_LINEAR_ITER= 50 +DEFORM_LINEAR_SOLVER_ITER= 50 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/coupled_cht/disc_adj_incomp_2d/flow_cylinder.cfg b/TestCases/coupled_cht/disc_adj_incomp_2d/flow_cylinder.cfg index 651ab1abfe8d..c847420306e6 100644 --- a/TestCases/coupled_cht/disc_adj_incomp_2d/flow_cylinder.cfg +++ b/TestCases/coupled_cht/disc_adj_incomp_2d/flow_cylinder.cfg @@ -242,7 +242,7 @@ WRT_CON_FREQ= 1 DEFORM_LINEAR_SOLVER= FGMRES % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 200 +DEFORM_LINEAR_SOLVER_ITER= 200 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/coupled_cht/disc_adj_incomp_2d/solid_cylinder1.cfg b/TestCases/coupled_cht/disc_adj_incomp_2d/solid_cylinder1.cfg index 61e97b996331..95bee47e63eb 100644 --- a/TestCases/coupled_cht/disc_adj_incomp_2d/solid_cylinder1.cfg +++ b/TestCases/coupled_cht/disc_adj_incomp_2d/solid_cylinder1.cfg @@ -170,7 +170,7 @@ WRT_CON_FREQ= 1 DEFORM_LINEAR_SOLVER= FGMRES % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 200 +DEFORM_LINEAR_SOLVER_ITER= 200 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/coupled_cht/disc_adj_incomp_2d/solid_cylinder2.cfg b/TestCases/coupled_cht/disc_adj_incomp_2d/solid_cylinder2.cfg index 1282a952a7dc..6ff3b9b0cf8d 100644 --- a/TestCases/coupled_cht/disc_adj_incomp_2d/solid_cylinder2.cfg +++ b/TestCases/coupled_cht/disc_adj_incomp_2d/solid_cylinder2.cfg @@ -180,7 +180,7 @@ WRT_CON_FREQ= 1 DEFORM_LINEAR_SOLVER= FGMRES % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 200 +DEFORM_LINEAR_SOLVER_ITER= 200 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/coupled_cht/disc_adj_incomp_2d/solid_cylinder3.cfg b/TestCases/coupled_cht/disc_adj_incomp_2d/solid_cylinder3.cfg index 89c0c5e7a9cc..97770cdf9112 100644 --- a/TestCases/coupled_cht/disc_adj_incomp_2d/solid_cylinder3.cfg +++ b/TestCases/coupled_cht/disc_adj_incomp_2d/solid_cylinder3.cfg @@ -180,7 +180,7 @@ WRT_CON_FREQ= 1 DEFORM_LINEAR_SOLVER= FGMRES % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 200 +DEFORM_LINEAR_SOLVER_ITER= 200 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/coupled_cht/incomp_2d/flow_cylinder.cfg b/TestCases/coupled_cht/incomp_2d/flow_cylinder.cfg index 651ab1abfe8d..c847420306e6 100644 --- a/TestCases/coupled_cht/incomp_2d/flow_cylinder.cfg +++ b/TestCases/coupled_cht/incomp_2d/flow_cylinder.cfg @@ -242,7 +242,7 @@ WRT_CON_FREQ= 1 DEFORM_LINEAR_SOLVER= FGMRES % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 200 +DEFORM_LINEAR_SOLVER_ITER= 200 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/coupled_cht/incomp_2d/solid_cylinder1.cfg b/TestCases/coupled_cht/incomp_2d/solid_cylinder1.cfg index 61e97b996331..95bee47e63eb 100644 --- a/TestCases/coupled_cht/incomp_2d/solid_cylinder1.cfg +++ b/TestCases/coupled_cht/incomp_2d/solid_cylinder1.cfg @@ -170,7 +170,7 @@ WRT_CON_FREQ= 1 DEFORM_LINEAR_SOLVER= FGMRES % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 200 +DEFORM_LINEAR_SOLVER_ITER= 200 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/coupled_cht/incomp_2d/solid_cylinder2.cfg b/TestCases/coupled_cht/incomp_2d/solid_cylinder2.cfg index 1282a952a7dc..6ff3b9b0cf8d 100644 --- a/TestCases/coupled_cht/incomp_2d/solid_cylinder2.cfg +++ b/TestCases/coupled_cht/incomp_2d/solid_cylinder2.cfg @@ -180,7 +180,7 @@ WRT_CON_FREQ= 1 DEFORM_LINEAR_SOLVER= FGMRES % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 200 +DEFORM_LINEAR_SOLVER_ITER= 200 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/coupled_cht/incomp_2d/solid_cylinder3.cfg b/TestCases/coupled_cht/incomp_2d/solid_cylinder3.cfg index 89c0c5e7a9cc..97770cdf9112 100644 --- a/TestCases/coupled_cht/incomp_2d/solid_cylinder3.cfg +++ b/TestCases/coupled_cht/incomp_2d/solid_cylinder3.cfg @@ -180,7 +180,7 @@ WRT_CON_FREQ= 1 DEFORM_LINEAR_SOLVER= FGMRES % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 200 +DEFORM_LINEAR_SOLVER_ITER= 200 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/deformation/brick_hex/def_brick_hex.cfg b/TestCases/deformation/brick_hex/def_brick_hex.cfg index 1cd16c709eac..ad58e95c79fc 100755 --- a/TestCases/deformation/brick_hex/def_brick_hex.cfg +++ b/TestCases/deformation/brick_hex/def_brick_hex.cfg @@ -151,7 +151,7 @@ DEFORM_LINEAR_SOLVER= FGMRES DEFORM_LINEAR_SOLVER_PREC= LU_SGS % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 1000 +DEFORM_LINEAR_SOLVER_ITER= 1000 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/deformation/brick_hex_rans/def_brick_hex_rans.cfg b/TestCases/deformation/brick_hex_rans/def_brick_hex_rans.cfg index 0cc30e68c799..8d01604a411a 100755 --- a/TestCases/deformation/brick_hex_rans/def_brick_hex_rans.cfg +++ b/TestCases/deformation/brick_hex_rans/def_brick_hex_rans.cfg @@ -151,7 +151,7 @@ DEFORM_LINEAR_SOLVER= FGMRES DEFORM_LINEAR_SOLVER_PREC= LU_SGS % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 1000 +DEFORM_LINEAR_SOLVER_ITER= 1000 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/deformation/brick_prism/def_brick_prism.cfg b/TestCases/deformation/brick_prism/def_brick_prism.cfg index c04f192a7003..9870f1c1fb79 100755 --- a/TestCases/deformation/brick_prism/def_brick_prism.cfg +++ b/TestCases/deformation/brick_prism/def_brick_prism.cfg @@ -151,7 +151,7 @@ DEFORM_LINEAR_SOLVER= FGMRES DEFORM_LINEAR_SOLVER_PREC= LU_SGS % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 1000 +DEFORM_LINEAR_SOLVER_ITER= 1000 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/deformation/brick_prism_rans/def_brick_prism_rans.cfg b/TestCases/deformation/brick_prism_rans/def_brick_prism_rans.cfg index 44297c537826..d077af4747ed 100755 --- a/TestCases/deformation/brick_prism_rans/def_brick_prism_rans.cfg +++ b/TestCases/deformation/brick_prism_rans/def_brick_prism_rans.cfg @@ -151,7 +151,7 @@ DEFORM_LINEAR_SOLVER= FGMRES DEFORM_LINEAR_SOLVER_PREC= LU_SGS % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 1000 +DEFORM_LINEAR_SOLVER_ITER= 1000 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/deformation/brick_pyra/def_brick_pyra.cfg b/TestCases/deformation/brick_pyra/def_brick_pyra.cfg index 0af1d0345704..d53721dab310 100755 --- a/TestCases/deformation/brick_pyra/def_brick_pyra.cfg +++ b/TestCases/deformation/brick_pyra/def_brick_pyra.cfg @@ -151,7 +151,7 @@ DEFORM_LINEAR_SOLVER= FGMRES DEFORM_LINEAR_SOLVER_PREC= LU_SGS % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 1000 +DEFORM_LINEAR_SOLVER_ITER= 1000 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/deformation/brick_tets/def_brick_tets.cfg b/TestCases/deformation/brick_tets/def_brick_tets.cfg index cefb3cce3b76..83b1e912e12c 100755 --- a/TestCases/deformation/brick_tets/def_brick_tets.cfg +++ b/TestCases/deformation/brick_tets/def_brick_tets.cfg @@ -151,7 +151,7 @@ DEFORM_LINEAR_SOLVER= FGMRES DEFORM_LINEAR_SOLVER_PREC= LU_SGS % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 1000 +DEFORM_LINEAR_SOLVER_ITER= 1000 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/deformation/cylindrical_ffd/def_cylindrical.cfg b/TestCases/deformation/cylindrical_ffd/def_cylindrical.cfg index 73fbdbef8e07..b7c2df2fc31e 100644 --- a/TestCases/deformation/cylindrical_ffd/def_cylindrical.cfg +++ b/TestCases/deformation/cylindrical_ffd/def_cylindrical.cfg @@ -192,7 +192,7 @@ DV_VALUE= 1.0 DEFORM_LINEAR_SOLVER= FGMRES % % Number of smoothing iterations for FEA mesh deformation -DEFORM_LINEAR_ITER= 100 +DEFORM_LINEAR_SOLVER_ITER= 100 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/deformation/naca0012/def_NACA0012.cfg b/TestCases/deformation/naca0012/def_NACA0012.cfg index 3e10f59c3950..616723d837d8 100644 --- a/TestCases/deformation/naca0012/def_NACA0012.cfg +++ b/TestCases/deformation/naca0012/def_NACA0012.cfg @@ -216,7 +216,7 @@ DEFORM_LINEAR_SOLVER= FGMRES DEFORM_LINEAR_SOLVER_PREC= LU_SGS % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 1000 +DEFORM_LINEAR_SOLVER_ITER= 1000 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/deformation/naca0012/surface_file_NACA0012.cfg b/TestCases/deformation/naca0012/surface_file_NACA0012.cfg index d261d1738fcb..bfd359025ff9 100644 --- a/TestCases/deformation/naca0012/surface_file_NACA0012.cfg +++ b/TestCases/deformation/naca0012/surface_file_NACA0012.cfg @@ -226,7 +226,7 @@ DEFORM_LINEAR_SOLVER= FGMRES DEFORM_LINEAR_SOLVER_PREC= LU_SGS % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 1000 +DEFORM_LINEAR_SOLVER_ITER= 1000 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/deformation/naca4412/def_NACA4412.cfg b/TestCases/deformation/naca4412/def_NACA4412.cfg index 8ed5cad953cd..bb9c7e45d958 100644 --- a/TestCases/deformation/naca4412/def_NACA4412.cfg +++ b/TestCases/deformation/naca4412/def_NACA4412.cfg @@ -321,7 +321,7 @@ DV_VALUE= 0.1 DEFORM_LINEAR_SOLVER= FGMRES % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 1000 +DEFORM_LINEAR_SOLVER_ITER= 1000 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/deformation/rae2822/def_RAE2822.cfg b/TestCases/deformation/rae2822/def_RAE2822.cfg index 839a3891e9ae..a415a00164ee 100644 --- a/TestCases/deformation/rae2822/def_RAE2822.cfg +++ b/TestCases/deformation/rae2822/def_RAE2822.cfg @@ -299,7 +299,7 @@ DV_VALUE= 0.1 DEFORM_LINEAR_SOLVER= FGMRES % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 1000 +DEFORM_LINEAR_SOLVER_ITER= 1000 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/deformation/spherical_ffd/def_spherical.cfg b/TestCases/deformation/spherical_ffd/def_spherical.cfg index 77486a539af0..d78b18e5afc3 100644 --- a/TestCases/deformation/spherical_ffd/def_spherical.cfg +++ b/TestCases/deformation/spherical_ffd/def_spherical.cfg @@ -195,7 +195,7 @@ DEFORM_LINEAR_SOLVER= FGMRES DEFORM_LINEAR_SOLVER_PREC= LU_SGS % % Number of smoothing iterations for FEA mesh deformation -DEFORM_LINEAR_ITER= 100 +DEFORM_LINEAR_SOLVER_ITER= 100 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/deformation/spherical_ffd/def_spherical_bspline.cfg b/TestCases/deformation/spherical_ffd/def_spherical_bspline.cfg index b0e187fd2f4e..ec57ad146330 100644 --- a/TestCases/deformation/spherical_ffd/def_spherical_bspline.cfg +++ b/TestCases/deformation/spherical_ffd/def_spherical_bspline.cfg @@ -195,7 +195,7 @@ DEFORM_LINEAR_SOLVER= FGMRES DEFORM_LINEAR_SOLVER_PREC= LU_SGS % % Number of smoothing iterations for FEA mesh deformation -DEFORM_LINEAR_ITER= 100 +DEFORM_LINEAR_SOLVER_ITER= 100 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/disc_adj_euler/arina2k/Arina2KRS.cfg b/TestCases/disc_adj_euler/arina2k/Arina2KRS.cfg index a3fda84557ca..86cb24314f10 100644 --- a/TestCases/disc_adj_euler/arina2k/Arina2KRS.cfg +++ b/TestCases/disc_adj_euler/arina2k/Arina2KRS.cfg @@ -442,7 +442,7 @@ DEFORM_LINEAR_SOLVER= BCGSTAB DEFORM_LINEAR_SOLVER_PREC= LU_SGS % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 1000 +DEFORM_LINEAR_SOLVER_ITER= 1000 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/disc_adj_euler/naca0012_pitching/inv_NACA0012_pitching.cfg b/TestCases/disc_adj_euler/naca0012_pitching/inv_NACA0012_pitching.cfg index 871cca2b876b..208373798d40 100644 --- a/TestCases/disc_adj_euler/naca0012_pitching/inv_NACA0012_pitching.cfg +++ b/TestCases/disc_adj_euler/naca0012_pitching/inv_NACA0012_pitching.cfg @@ -255,7 +255,7 @@ DV_VALUE= 0.05 % ------------------------ GRID DEFORMATION PARAMETERS ------------------------% % % Number of smoothing iterations for FEA mesh deformation -DEFORM_LINEAR_ITER= 500 +DEFORM_LINEAR_SOLVER_ITER= 500 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/disc_adj_heat/disc_adj_heat.cfg b/TestCases/disc_adj_heat/disc_adj_heat.cfg index cd7b0275ef93..68210556cab9 100644 --- a/TestCases/disc_adj_heat/disc_adj_heat.cfg +++ b/TestCases/disc_adj_heat/disc_adj_heat.cfg @@ -169,7 +169,7 @@ DV_VALUE = 0.0005 DEFORM_LINEAR_SOLVER= FGMRES -DEFORM_LINEAR_ITER= 100 +DEFORM_LINEAR_SOLVER_ITER= 100 DEFORM_CONSOLE_OUTPUT= YES diff --git a/TestCases/disc_adj_incomp_navierstokes/cylinder/heated_cylinder.cfg b/TestCases/disc_adj_incomp_navierstokes/cylinder/heated_cylinder.cfg index 7608733a0ab1..4f4a05fcb639 100644 --- a/TestCases/disc_adj_incomp_navierstokes/cylinder/heated_cylinder.cfg +++ b/TestCases/disc_adj_incomp_navierstokes/cylinder/heated_cylinder.cfg @@ -356,7 +356,7 @@ DV_VALUE= 0.1 DEFORM_LINEAR_SOLVER= FGMRES % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 1000 +DEFORM_LINEAR_SOLVER_ITER= 1000 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/disc_adj_rans/cylinder/cylinder.cfg b/TestCases/disc_adj_rans/cylinder/cylinder.cfg index cbee6ad74b58..e69f2ef3ca93 100644 --- a/TestCases/disc_adj_rans/cylinder/cylinder.cfg +++ b/TestCases/disc_adj_rans/cylinder/cylinder.cfg @@ -316,7 +316,7 @@ DV_VALUE= 1.0 DEFORM_LINEAR_SOLVER= FGMRES % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 1000 +DEFORM_LINEAR_SOLVER_ITER= 1000 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/disc_adj_rans/cylinder_DT_1ST/cylinder.cfg b/TestCases/disc_adj_rans/cylinder_DT_1ST/cylinder.cfg index 8678569c38bb..d4fe80845c08 100644 --- a/TestCases/disc_adj_rans/cylinder_DT_1ST/cylinder.cfg +++ b/TestCases/disc_adj_rans/cylinder_DT_1ST/cylinder.cfg @@ -323,7 +323,7 @@ DV_VALUE= 1.0 DEFORM_LINEAR_SOLVER= FGMRES % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 1000 +DEFORM_LINEAR_SOLVER_ITER= 1000 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/disc_adj_turbomachinery/transonic_stator_2D/transonic_stator.cfg b/TestCases/disc_adj_turbomachinery/transonic_stator_2D/transonic_stator.cfg index 13abd08a28d7..59ee7816f8f7 100644 --- a/TestCases/disc_adj_turbomachinery/transonic_stator_2D/transonic_stator.cfg +++ b/TestCases/disc_adj_turbomachinery/transonic_stator_2D/transonic_stator.cfg @@ -304,7 +304,7 @@ DV_VALUE= 0.01 % % % ------------------------ GRID DEFORMATION PARAMETERS ------------------------% -DEFORM_LINEAR_ITER= 250 +DEFORM_LINEAR_SOLVER_ITER= 250 % % % -------------------- FREE-FORM DEFORMATION PARAMETERS -----------------------% diff --git a/TestCases/euler/naca0012/inv_NACA0012.cfg b/TestCases/euler/naca0012/inv_NACA0012.cfg index 7a8a744e5830..dcfa9b650e48 100644 --- a/TestCases/euler/naca0012/inv_NACA0012.cfg +++ b/TestCases/euler/naca0012/inv_NACA0012.cfg @@ -211,7 +211,7 @@ DV_VALUE= 0.01 % ------------------------ GRID DEFORMATION PARAMETERS ------------------------% % % Number of smoothing iterations for FEA mesh deformation -DEFORM_LINEAR_ITER= 500 +DEFORM_LINEAR_SOLVER_ITER= 500 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/euler/oneram6/inv_ONERAM6.cfg b/TestCases/euler/oneram6/inv_ONERAM6.cfg index 32bc233fe75a..fbdb84b22b8e 100644 --- a/TestCases/euler/oneram6/inv_ONERAM6.cfg +++ b/TestCases/euler/oneram6/inv_ONERAM6.cfg @@ -320,7 +320,7 @@ DV_VALUE= 0.05 DEFORM_LINEAR_SOLVER= FGMRES % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 500 +DEFORM_LINEAR_SOLVER_ITER= 500 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 2 diff --git a/TestCases/fea_fsi/SquareCyl_Beam/config.cfg b/TestCases/fea_fsi/SquareCyl_Beam/config.cfg index 32437c0286d9..5f9dbd121b0b 100644 --- a/TestCases/fea_fsi/SquareCyl_Beam/config.cfg +++ b/TestCases/fea_fsi/SquareCyl_Beam/config.cfg @@ -270,7 +270,7 @@ WRT_SOL_FREQ_DUALTIME= 1 % -----------------------------------------------------------------------------% % % Maximum number of iterations when solving the mesh update -DEFORM_LINEAR_ITER= 500 +DEFORM_LINEAR_SOLVER_ITER= 500 % % Steps in the mesh updating DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/fea_fsi/WallChannel_2d/configFSI_2D.cfg b/TestCases/fea_fsi/WallChannel_2d/configFSI_2D.cfg index 5376d9ccc17b..9d1cd59e1af1 100644 --- a/TestCases/fea_fsi/WallChannel_2d/configFSI_2D.cfg +++ b/TestCases/fea_fsi/WallChannel_2d/configFSI_2D.cfg @@ -90,7 +90,7 @@ MESH_FILENAME= meshFSI_2D.su2 DEFORM_NONLINEAR_ITER= 1 DEFORM_LINEAR_SOLVER= FGMRES DEFORM_LINEAR_SOLVER_PREC= LU_SGS -DEFORM_LINEAR_ITER= 500 +DEFORM_LINEAR_SOLVER_ITER= 500 DEFORM_STIFFNESS_TYPE= INVERSE_VOLUME MESH_FORMAT= SU2 TABULAR_FORMAT= CSV diff --git a/TestCases/fea_fsi/WallChannel_2d/configFlow.cfg b/TestCases/fea_fsi/WallChannel_2d/configFlow.cfg index c6411fefe49a..82578ee2194c 100644 --- a/TestCases/fea_fsi/WallChannel_2d/configFlow.cfg +++ b/TestCases/fea_fsi/WallChannel_2d/configFlow.cfg @@ -68,7 +68,7 @@ MESH_FILENAME= meshFlow.su2 DEFORM_NONLINEAR_ITER= 1 DEFORM_LINEAR_SOLVER= FGMRES DEFORM_LINEAR_SOLVER_PREC= LU_SGS -DEFORM_LINEAR_ITER= 500 +DEFORM_LINEAR_SOLVER_ITER= 500 DEFORM_STIFFNESS_TYPE= WALL_DISTANCE MESH_FORMAT= SU2 diff --git a/TestCases/fea_fsi/stat_fsi/configFlow.cfg b/TestCases/fea_fsi/stat_fsi/configFlow.cfg index 48e87e03f5c5..bdecf787254d 100755 --- a/TestCases/fea_fsi/stat_fsi/configFlow.cfg +++ b/TestCases/fea_fsi/stat_fsi/configFlow.cfg @@ -30,6 +30,7 @@ DEFORM_STIFFNESS_TYPE = INVERSE_VOLUME DEFORM_LINEAR_SOLVER = CONJUGATE_GRADIENT DEFORM_LINEAR_SOLVER_PREC = LU_SGS DEFORM_LINEAR_SOLVER_ERROR = 1E-5 +DEFORM_NONLINEAR_ITER= 1 DEFORM_LINEAR_SOLVER_ITER = 5000 DEFORM_CONSOLE_OUTPUT = NO @@ -95,11 +96,6 @@ REF_ORIGIN_MOMENT_Z = 0.00 REF_AREA = 0.016 REYNOLDS_LENGTH = 0.016 -% --------------------------- MESH PARAMETERS ---------------------------------% - -DEFORM_LINEAR_ITER= 500 -DEFORM_NONLINEAR_ITER= 1 - % ------------- COMMON PARAMETERS DEFINING THE NUMERICAL METHOD ---------------% NUM_METHOD_GRAD= WEIGHTED_LEAST_SQUARES diff --git a/TestCases/fixed_cl/naca0012/inv_NACA0012.cfg b/TestCases/fixed_cl/naca0012/inv_NACA0012.cfg index 54a2d1a38475..ceba78a24ee4 100644 --- a/TestCases/fixed_cl/naca0012/inv_NACA0012.cfg +++ b/TestCases/fixed_cl/naca0012/inv_NACA0012.cfg @@ -223,7 +223,7 @@ DV_VALUE= 0.01 % ------------------------ GRID DEFORMATION PARAMETERS ------------------------% % % Number of smoothing iterations for FEA mesh deformation -DEFORM_LINEAR_ITER= 500 +DEFORM_LINEAR_SOLVER_ITER= 500 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/fixed_cl/naca0012/inv_NACA0012_ContAdj.cfg b/TestCases/fixed_cl/naca0012/inv_NACA0012_ContAdj.cfg index 9620faf78512..89231281b9ee 100644 --- a/TestCases/fixed_cl/naca0012/inv_NACA0012_ContAdj.cfg +++ b/TestCases/fixed_cl/naca0012/inv_NACA0012_ContAdj.cfg @@ -231,7 +231,7 @@ DV_VALUE= 0.01 % ------------------------ GRID DEFORMATION PARAMETERS ------------------------% % % Number of smoothing iterations for FEA mesh deformation -DEFORM_LINEAR_ITER= 500 +DEFORM_LINEAR_SOLVER_ITER= 500 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/harmonic_balance/HB.cfg b/TestCases/harmonic_balance/HB.cfg index 69d14cdc22ef..5a4f2d5ece24 100644 --- a/TestCases/harmonic_balance/HB.cfg +++ b/TestCases/harmonic_balance/HB.cfg @@ -237,7 +237,7 @@ DV_VALUE= 1.0 % ------------------------ GRID DEFORMATION PARAMETERS ------------------------% % % Number of smoothing iterations for FEA mesh deformation -DEFORM_LINEAR_ITER= 500 +DEFORM_LINEAR_SOLVER_ITER= 500 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/incomp_rans/AhmedBody/turb_ahmed.cfg b/TestCases/incomp_rans/AhmedBody/turb_ahmed.cfg index 9d61976d2b07..3b86b93e2e5e 100644 --- a/TestCases/incomp_rans/AhmedBody/turb_ahmed.cfg +++ b/TestCases/incomp_rans/AhmedBody/turb_ahmed.cfg @@ -244,7 +244,7 @@ DV_VALUE= 0.05 % ------------------------ GRID DEFORMATION PARAMETERS ------------------------% % % Number of smoothing iterations for FEA mesh deformation -DEFORM_LINEAR_ITER= 500 +DEFORM_LINEAR_SOLVER_ITER= 500 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/multiple_ffd/naca0012/inv_NACA0012_ffd.cfg b/TestCases/multiple_ffd/naca0012/inv_NACA0012_ffd.cfg index 2a5adcd4cc9f..6cfb957fc164 100644 --- a/TestCases/multiple_ffd/naca0012/inv_NACA0012_ffd.cfg +++ b/TestCases/multiple_ffd/naca0012/inv_NACA0012_ffd.cfg @@ -211,7 +211,7 @@ DV_VALUE= 0.001 % ------------------------ GRID DEFORMATION PARAMETERS ------------------------% % % Number of smoothing iterations for FEA mesh deformation -DEFORM_LINEAR_ITER= 500 +DEFORM_LINEAR_SOLVER_ITER= 500 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/optimization_euler/multiobjective_wedge/inv_wedge_ROE_2surf_1obj.cfg b/TestCases/optimization_euler/multiobjective_wedge/inv_wedge_ROE_2surf_1obj.cfg index ef13c33b0cf1..5176193823c9 100644 --- a/TestCases/optimization_euler/multiobjective_wedge/inv_wedge_ROE_2surf_1obj.cfg +++ b/TestCases/optimization_euler/multiobjective_wedge/inv_wedge_ROE_2surf_1obj.cfg @@ -326,7 +326,7 @@ DV_PARAM= (MAIN_BOX, 3,0, 0,1.0,0,0 ) % Value of the shape deformation deformation DV_VALUE= 0.5 % Number of smoothing iterations for FEA mesh deformation -DEFORM_LINEAR_ITER= 500 +DEFORM_LINEAR_SOLVER_ITER= 500 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/optimization_euler/multiobjective_wedge/inv_wedge_ROE_multiobj.cfg b/TestCases/optimization_euler/multiobjective_wedge/inv_wedge_ROE_multiobj.cfg index 0e64eae3a2d6..4a53be295691 100644 --- a/TestCases/optimization_euler/multiobjective_wedge/inv_wedge_ROE_multiobj.cfg +++ b/TestCases/optimization_euler/multiobjective_wedge/inv_wedge_ROE_multiobj.cfg @@ -328,7 +328,7 @@ DV_PARAM= (MAIN_BOX, 3,0, 0,1.0,0,0 ) % Value of the shape deformation deformation DV_VALUE= 0.5 % Number of smoothing iterations for FEA mesh deformation -DEFORM_LINEAR_ITER= 500 +DEFORM_LINEAR_SOLVER_ITER= 500 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/optimization_euler/multiobjective_wedge/inv_wedge_ROE_multiobj_1surf.cfg b/TestCases/optimization_euler/multiobjective_wedge/inv_wedge_ROE_multiobj_1surf.cfg index 1515dec83ae3..e35c3b48dde7 100644 --- a/TestCases/optimization_euler/multiobjective_wedge/inv_wedge_ROE_multiobj_1surf.cfg +++ b/TestCases/optimization_euler/multiobjective_wedge/inv_wedge_ROE_multiobj_1surf.cfg @@ -328,7 +328,7 @@ DV_PARAM= (MAIN_BOX, 3,0, 0,1.0,0,0 ) % Value of the shape deformation deformation DV_VALUE= 0.5 % Number of smoothing iterations for FEA mesh deformation -DEFORM_LINEAR_ITER= 500 +DEFORM_LINEAR_SOLVER_ITER= 500 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/optimization_euler/multiobjective_wedge/inv_wedge_ROE_multiobj_combo.cfg b/TestCases/optimization_euler/multiobjective_wedge/inv_wedge_ROE_multiobj_combo.cfg index c2f05873f3ab..6e687a38ed98 100644 --- a/TestCases/optimization_euler/multiobjective_wedge/inv_wedge_ROE_multiobj_combo.cfg +++ b/TestCases/optimization_euler/multiobjective_wedge/inv_wedge_ROE_multiobj_combo.cfg @@ -327,7 +327,7 @@ DV_PARAM= (MAIN_BOX, 3,0, 0,1.0,0,0 ) % Value of the shape deformation deformation DV_VALUE= 0.5 % Number of smoothing iterations for FEA mesh deformation -DEFORM_LINEAR_ITER= 500 +DEFORM_LINEAR_SOLVER_ITER= 500 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/optimization_euler/multipoint_naca0012/inv_NACA0012_multipoint.cfg b/TestCases/optimization_euler/multipoint_naca0012/inv_NACA0012_multipoint.cfg index b55a1bbc030a..704e5a9dbd62 100644 --- a/TestCases/optimization_euler/multipoint_naca0012/inv_NACA0012_multipoint.cfg +++ b/TestCases/optimization_euler/multipoint_naca0012/inv_NACA0012_multipoint.cfg @@ -196,7 +196,7 @@ DV_VALUE= 1.0 % ------------------------ GRID DEFORMATION PARAMETERS ------------------------% % % Number of smoothing iterations for FEA mesh deformation -DEFORM_LINEAR_ITER= 500 +DEFORM_LINEAR_SOLVER_ITER= 500 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/optimization_euler/steady_inverse_design/inv_NACA0012.cfg b/TestCases/optimization_euler/steady_inverse_design/inv_NACA0012.cfg index f68661bf3596..5e8d56796c5a 100644 --- a/TestCases/optimization_euler/steady_inverse_design/inv_NACA0012.cfg +++ b/TestCases/optimization_euler/steady_inverse_design/inv_NACA0012.cfg @@ -207,7 +207,7 @@ DV_VALUE= 0.01 % ------------------------ GRID DEFORMATION PARAMETERS ------------------------% % % Number of smoothing iterations for FEA mesh deformation -DEFORM_LINEAR_ITER= 500 +DEFORM_LINEAR_SOLVER_ITER= 500 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/optimization_euler/steady_naca0012/inv_NACA0012_adv.cfg b/TestCases/optimization_euler/steady_naca0012/inv_NACA0012_adv.cfg index ca414bdc5c99..4d33fb586ca0 100644 --- a/TestCases/optimization_euler/steady_naca0012/inv_NACA0012_adv.cfg +++ b/TestCases/optimization_euler/steady_naca0012/inv_NACA0012_adv.cfg @@ -223,7 +223,7 @@ DV_VALUE= 1.0 % ------------------------ GRID DEFORMATION PARAMETERS ------------------------% % % Number of smoothing iterations for FEA mesh deformation -DEFORM_LINEAR_ITER= 500 +DEFORM_LINEAR_SOLVER_ITER= 500 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/optimization_euler/steady_naca0012/inv_NACA0012_basic.cfg b/TestCases/optimization_euler/steady_naca0012/inv_NACA0012_basic.cfg index 7c75b2c12449..8a7af19dbd01 100644 --- a/TestCases/optimization_euler/steady_naca0012/inv_NACA0012_basic.cfg +++ b/TestCases/optimization_euler/steady_naca0012/inv_NACA0012_basic.cfg @@ -205,7 +205,7 @@ DV_VALUE= 1.0 % ------------------------ GRID DEFORMATION PARAMETERS ------------------------% % % Number of smoothing iterations for FEA mesh deformation -DEFORM_LINEAR_ITER= 500 +DEFORM_LINEAR_SOLVER_ITER= 500 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/optimization_euler/steady_oneram6/inv_ONERAM6_adv.cfg b/TestCases/optimization_euler/steady_oneram6/inv_ONERAM6_adv.cfg index 9a2d746347a2..c3f266e578fa 100644 --- a/TestCases/optimization_euler/steady_oneram6/inv_ONERAM6_adv.cfg +++ b/TestCases/optimization_euler/steady_oneram6/inv_ONERAM6_adv.cfg @@ -334,7 +334,7 @@ DV_VALUE= 0.0 DEFORM_LINEAR_SOLVER= FGMRES % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 800 +DEFORM_LINEAR_SOLVER_ITER= 800 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/optimization_euler/steady_oneram6/inv_ONERAM6_basic.cfg b/TestCases/optimization_euler/steady_oneram6/inv_ONERAM6_basic.cfg index 7bd0856dd6fd..8b4b27aa16a0 100644 --- a/TestCases/optimization_euler/steady_oneram6/inv_ONERAM6_basic.cfg +++ b/TestCases/optimization_euler/steady_oneram6/inv_ONERAM6_basic.cfg @@ -332,7 +332,7 @@ DV_VALUE= 0.0 DEFORM_LINEAR_SOLVER= FGMRES % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 800 +DEFORM_LINEAR_SOLVER_ITER= 800 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/parallel_regression_AD.py b/TestCases/parallel_regression_AD.py index 7b849e9e47f0..565da936163d 100644 --- a/TestCases/parallel_regression_AD.py +++ b/TestCases/parallel_regression_AD.py @@ -135,7 +135,7 @@ def main(): discadj_incomp_cylinder.cfg_dir = "disc_adj_incomp_navierstokes/cylinder" discadj_incomp_cylinder.cfg_file = "heated_cylinder.cfg" discadj_incomp_cylinder.test_iter = 20 - discadj_incomp_cylinder.test_vals = [20.000000, -2.104640, -2.004547, 0.0000e+00] #last 4 columns + discadj_incomp_cylinder.test_vals = [20.000000, -2.188743, -2.068616, 0.000000] #last 4 columns discadj_incomp_cylinder.su2_exec = "parallel_computation.py -f" discadj_incomp_cylinder.timeout = 1600 discadj_incomp_cylinder.tol = 0.00001 @@ -284,7 +284,7 @@ def main(): discadj_cht.cfg_dir = "coupled_cht/disc_adj_incomp_2d" discadj_cht.cfg_file = "cht_2d_3cylinders.cfg" discadj_cht.test_iter = 10 - discadj_cht.test_vals = [-2.403180, -3.097866, -3.097837, -3.095571] #last 4 columns + discadj_cht.test_vals = [-2.403782, -3.097868, -3.097839, -3.097835] #last 4 columns discadj_cht.su2_exec = "parallel_computation.py -f" discadj_cht.timeout = 1600 discadj_cht.tol = 0.00001 diff --git a/TestCases/polar/naca0012/inv_NACA0012.cfg b/TestCases/polar/naca0012/inv_NACA0012.cfg index a50d8cdf0e8e..3c0af5fd8748 100644 --- a/TestCases/polar/naca0012/inv_NACA0012.cfg +++ b/TestCases/polar/naca0012/inv_NACA0012.cfg @@ -224,7 +224,7 @@ DV_VALUE= 0.01 % ------------------------ GRID DEFORMATION PARAMETERS ------------------------% % % Number of smoothing iterations for FEA mesh deformation -DEFORM_LINEAR_ITER= 500 +DEFORM_LINEAR_SOLVER_ITER= 500 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/py_wrapper/flatPlate_rigidMotion/flatPlate_rigidMotion_Conf.cfg b/TestCases/py_wrapper/flatPlate_rigidMotion/flatPlate_rigidMotion_Conf.cfg index 0d6b815b4e12..83f4dd45cef0 100644 --- a/TestCases/py_wrapper/flatPlate_rigidMotion/flatPlate_rigidMotion_Conf.cfg +++ b/TestCases/py_wrapper/flatPlate_rigidMotion/flatPlate_rigidMotion_Conf.cfg @@ -423,7 +423,7 @@ DEFORM_LINEAR_SOLVER= FGMRES DEFORM_LINEAR_SOLVER_PREC= ILU % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 100 +DEFORM_LINEAR_SOLVER_ITER= 100 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/TestCases/py_wrapper/flatPlate_unsteady_CHT/unsteady_CHT_FlatPlate_Conf.cfg b/TestCases/py_wrapper/flatPlate_unsteady_CHT/unsteady_CHT_FlatPlate_Conf.cfg index c31d0d9144b1..8025ea88e0aa 100644 --- a/TestCases/py_wrapper/flatPlate_unsteady_CHT/unsteady_CHT_FlatPlate_Conf.cfg +++ b/TestCases/py_wrapper/flatPlate_unsteady_CHT/unsteady_CHT_FlatPlate_Conf.cfg @@ -403,7 +403,7 @@ DEFORM_LINEAR_SOLVER= FGMRES DEFORM_LINEAR_SOLVER_PREC= ILU % % Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_ITER= 100 +DEFORM_LINEAR_SOLVER_ITER= 100 % % Number of nonlinear deformation iterations (surface deformation increments) DEFORM_NONLINEAR_ITER= 1 diff --git a/init.py b/init.py index 13c77697f158..e4765cffe056 100755 --- a/init.py +++ b/init.py @@ -38,9 +38,9 @@ def init_submodules(method = 'auto'): github_repo_codi = 'https://github.com/scicompkl/CoDiPack' sha_version_medi = 'a95a23ce7585905c3a731b28c1bb512028fc02bb' github_repo_medi = 'https://github.com/SciCompKL/MeDiPack' - sha_version_meson = 'c904d3eefe2a01ca60027e2a5192e1f1c7ca5d9d' + sha_version_meson = 'e9bd7d49bdc8c630cca3bf4cc02c437841b6aaf6' github_repo_meson = 'https://github.com/mesonbuild/meson' - sha_version_ninja = 'e0bc2e5fd9036a31d507881e1383adde3672aaef' + sha_version_ninja = '20b30dac6698d119e7797b34d6ed2c4ed8f48417' github_repo_ninja = 'https://github.com/ninja-build/ninja' medi_name = 'MeDiPack' @@ -112,11 +112,11 @@ def submodule_status(path, sha_commit): print('Initialize submodule ' + path + ' using git ... ') subprocess.run(['git', 'submodule', 'update', '--init', path], check = True, cwd = sys.path[0]) - # Check that the SHA tag stored in this file matches the one stored in the git index - cur_sha_commit = status[1:].split(' ')[0] - if (cur_sha_commit != sha_commit): - print('SHA-1 tag stored in index does not match SHA tag stored in this script.') - sys.exit(1) + # Check that the SHA tag stored in this file matches the one stored in the git index + cur_sha_commit = status[1:].split(' ')[0] + if (cur_sha_commit != sha_commit): + print('SHA-1 tag stored in index does not match SHA tag stored in this script.') + sys.exit(1) diff --git a/meson.build b/meson.build index c3821017dbde..b72f22fe110c 100644 --- a/meson.build +++ b/meson.build @@ -127,3 +127,38 @@ subdir('SU2_PY') if get_option('enable-pywrapper') subdir('SU2_PY/pySU2') endif + +message('''------------------------------------------------------------------------- + | ___ _ _ ___ | + | / __| | | |_ ) Release 6.2.0 'Falcon' | + | \__ \ |_| |/ / | + | |___/\___//___| Configuration Summary | + | | + ------------------------------------------------------------------------- + + Option Value + --------------------- + TecIO: @2@ + CGNS: @3@ + AD (reverse): @4@ + AD (forward): @5@ + Python Wrapper: @6@ + Intel-MKL: @7@ + OpenBlas: @8@ + PaStiX: @9@ + + Please be sure to add the $SU2_HOME and $SU2_RUN environment variables, + and update your $PATH (and $PYTHONPATH if applicable) with $SU2_RUN + + Based on the input to this configuration, add these lines to your .bashrc file: + + export SU2_RUN=@0@ + export SU2_HOME=@1@ + export PATH=$PATH:$SU2_RUN + export PYTHONPATH=$PYTHONPATH:$SU2_RUN + + Use './ninja -C @10@ install' to compile and install SU2 +'''.format(get_option('prefix')+'/bin', meson.source_root(), get_option('enable-tecio'), get_option('enable-cgns'), + get_option('enable-autodiff'), get_option('enable-directdiff'), get_option('enable-pywrapper'), get_option('enable-mkl'), + get_option('enable-openblas'), get_option('enable-pastix'), meson.build_root().split('/')[-1])) +