Skip to content

Commit 6c1d228

Browse files
committed
Merge branch 'develop' of https://github.com/su2code/SU2 into fix_small_AD_issues
2 parents 614ce1e + 7eb74b2 commit 6c1d228

37 files changed

+1053
-587
lines changed

.github/workflows/regression.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
- config_set: ReverseMPI
3131
flags: '-Denable-autodiff=true -Denable-normal=false -Denable-pywrapper=true -Denable-tests=true --warnlevel=3 --werror'
3232
- config_set: ForwardMPI
33-
flags: '-Denable-directdiff=true -Denable-normal=false -Denable-tests=true --warnlevel=3 --werror'
33+
flags: '-Denable-directdiff=true -Denable-normal=false -Denable-tests=true -Denable-mlpcpp=true --warnlevel=3 --werror'
3434
- config_set: BaseNoMPI
3535
flags: '-Denable-pywrapper=true -Denable-openblas=true -Dwith-mpi=disabled -Denable-mlpcpp=true -Denable-tests=true --warnlevel=3 --werror'
3636
- config_set: ReverseNoMPI

Common/include/CConfig.hpp

Lines changed: 16 additions & 149 deletions
Original file line numberDiff line numberDiff line change
@@ -535,9 +535,8 @@ class CConfig {
535535
Kind_TimeIntScheme_Heat, /*!< \brief Time integration for the wave equations. */
536536
Kind_TimeStep_Heat, /*!< \brief Time stepping method for the (fvm) heat equation. */
537537
n_Datadriven_files;
538-
ENUM_DATADRIVEN_METHOD Kind_DataDriven_Method; /*!< \brief Method used for datset regression in data-driven fluid models. */
539538

540-
su2double DataDriven_Relaxation_Factor; /*!< \brief Relaxation factor for Newton solvers in data-driven fluid models. */
539+
DataDrivenFluid_ParsedOptions datadriven_ParsedOptions; /*!< \brief Options for data-driven fluid analysis. */
541540

542541
STRUCT_TIME_INT Kind_TimeIntScheme_FEA; /*!< \brief Time integration for the FEA equations. */
543542
STRUCT_SPACE_ITE Kind_SpaceIteScheme_FEA; /*!< \brief Iterative scheme for nonlinear structural analysis. */
@@ -821,8 +820,7 @@ class CConfig {
821820
SurfAdjCoeff_FileName, /*!< \brief Output file with the adjoint variables on the surface. */
822821
SurfSens_FileName, /*!< \brief Output file for the sensitivity on the surface (discrete adjoint). */
823822
VolSens_FileName, /*!< \brief Output file for the sensitivity in the volume (discrete adjoint). */
824-
ObjFunc_Hess_FileName, /*!< \brief Hessian approximation obtained by the Sobolev smoothing solver. */
825-
*DataDriven_Method_FileNames; /*!< \brief Dataset information for data-driven fluid models. */
823+
ObjFunc_Hess_FileName; /*!< \brief Hessian approximation obtained by the Sobolev smoothing solver. */
826824

827825
bool
828826
Wrt_Performance, /*!< \brief Write the performance summary at the end of a calculation. */
@@ -1239,28 +1237,7 @@ class CConfig {
12391237
unsigned short nSpecies_Init; /*!< \brief Number of entries of SPECIES_INIT */
12401238

12411239
/*--- Additional flamelet solver options ---*/
1242-
///TODO: Add python wrapper initialization option
1243-
FLAMELET_INIT_TYPE flame_init_type = FLAMELET_INIT_TYPE::NONE; /*!< \brief Method for solution ignition for flamelet problems. */
1244-
std::array<su2double,8> flame_init; /*!< \brief Flame front initialization parameters. */
1245-
std::array<su2double,6> spark_init; /*!< \brief Spark ignition initialization parameters. */
1246-
su2double* spark_reaction_rates; /*!< \brief Source terms for flamelet spark ignition option. */
1247-
unsigned short nspark; /*!< \brief Number of source terms for spark initialization. */
1248-
bool preferential_diffusion = false; /*!< \brief Preferential diffusion physics for flamelet solver.*/
1249-
1250-
/*--- lookup table ---*/
1251-
unsigned short n_scalars = 0; /*!< \brief Number of transported scalars for flamelet LUT approach. */
1252-
unsigned short n_lookups = 0; /*!< \brief Number of lookup variables, for visualization only. */
1253-
unsigned short n_table_sources = 0; /*!< \brief Number of transported scalar source terms for LUT. */
1254-
unsigned short n_user_scalars = 0; /*!< \brief Number of user defined (auxiliary) scalar transport equations. */
1255-
unsigned short n_user_sources = 0; /*!< \brief Number of source terms for user defined (auxiliary) scalar transport equations. */
1256-
unsigned short n_control_vars = 0; /*!< \brief Number of controlling variables (independent variables) for the LUT. */
1257-
1258-
string* controlling_variable_names;
1259-
string* cv_source_names;
1260-
vector<string> table_scalar_names; /*!< \brief Names of transported scalar variables. */
1261-
string* lookup_names; /*!< \brief Names of passive look-up variables. */
1262-
string* user_scalar_names; /*!< \brief Names of the user defined (auxiliary) transported scalars .*/
1263-
string* user_source_names; /*!< \brief Names of the source terms for the user defined transported scalars. */
1240+
FluidFlamelet_ParsedOptions flamelet_ParsedOptions; /*!< \brief Additional flamelet solver options */
12641241

12651242
/*!
12661243
* \brief Set the default values of config options not set in the config file using another config object.
@@ -2169,106 +2146,6 @@ class CConfig {
21692146
*/
21702147
bool GetSpecies_StrongBC() const { return Species_StrongBC; }
21712148

2172-
/*!
2173-
* \brief Get the flame initialization.
2174-
* (x1,x2,x3) = flame offset/spark center location.
2175-
* (x4,x5,x6) = flame normal, separating unburnt from burnt or
2176-
* spark radius, spark start iteration, spark duration.
2177-
* (x7) = flame thickness, the length from unburnt to burnt conditions.
2178-
* (x8) = flame burnt thickness, the length to stay at burnt conditions.
2179-
* \return Ignition initialization parameters for the flamelet model.
2180-
*/
2181-
const su2double* GetFlameInit() const {
2182-
switch (flame_init_type)
2183-
{
2184-
case FLAMELET_INIT_TYPE::FLAME_FRONT:
2185-
return flame_init.data();
2186-
break;
2187-
case FLAMELET_INIT_TYPE::SPARK:
2188-
return spark_init.data();
2189-
break;
2190-
default:
2191-
return nullptr;
2192-
break;
2193-
}
2194-
}
2195-
2196-
/*!
2197-
* \brief Get species net reaction rates applied during spark ignition.
2198-
*/
2199-
const su2double* GetSpark() const {
2200-
return spark_reaction_rates;
2201-
}
2202-
2203-
/*!
2204-
* \brief Preferential diffusion combustion problem.
2205-
*/
2206-
bool GetPreferentialDiffusion() const { return preferential_diffusion; }
2207-
2208-
/*!
2209-
* \brief Define preferential diffusion combustion problem.
2210-
*/
2211-
inline void SetPreferentialDiffusion(bool input) { preferential_diffusion = input; }
2212-
2213-
/*!
2214-
* \brief Get the number of control variables for flamelet model.
2215-
*/
2216-
unsigned short GetNControlVars() const { return n_control_vars; }
2217-
2218-
/*!
2219-
* \brief Get the number of total transported scalars for flamelet model.
2220-
*/
2221-
unsigned short GetNScalars() const { return n_scalars; }
2222-
2223-
/*!
2224-
* \brief Get the number of user scalars for flamelet model.
2225-
*/
2226-
unsigned short GetNUserScalars() const { return n_user_scalars; }
2227-
2228-
/*!
2229-
* \brief Get the name of a specific controlling variable.
2230-
*/
2231-
const string& GetControllingVariableName(unsigned short i_cv) const {
2232-
return controlling_variable_names[i_cv];
2233-
}
2234-
2235-
/*!
2236-
* \brief Get the name of the source term variable for a specific controlling variable.
2237-
*/
2238-
const string& GetControllingVariableSourceName(unsigned short i_cv) const {
2239-
return cv_source_names[i_cv];
2240-
}
2241-
/*!
2242-
* \brief Get the name of the user scalar.
2243-
*/
2244-
const string& GetUserScalarName(unsigned short i_user_scalar) const {
2245-
static const std::string none = "NONE";
2246-
if (n_user_scalars > 0) return user_scalar_names[i_user_scalar]; else return none;
2247-
}
2248-
2249-
/*!
2250-
* \brief Get the name of the user scalar source term.
2251-
*/
2252-
const string& GetUserSourceName(unsigned short i_user_source) const {
2253-
static const std::string none = "NONE";
2254-
if (n_user_sources > 0) return user_source_names[i_user_source]; else return none;
2255-
}
2256-
2257-
/*!
2258-
* \brief Get the ignition method used for combustion problems.
2259-
*/
2260-
FLAMELET_INIT_TYPE GetFlameletInitType() const { return flame_init_type; }
2261-
2262-
/*!
2263-
* \brief Get the number of transported scalars for combustion.
2264-
*/
2265-
unsigned short GetNLookups() const { return n_lookups; }
2266-
2267-
/*!
2268-
* \brief Get the name of the variable that we want to retrieve from the lookup table.
2269-
*/
2270-
const string& GetLookupName(unsigned short i_lookup) const { return lookup_names[i_lookup]; }
2271-
22722149
/*!
22732150
* \brief Get the Young's modulus of elasticity.
22742151
* \return Value of the Young's modulus of elasticity.
@@ -3970,29 +3847,6 @@ class CConfig {
39703847
*/
39713848
unsigned short GetKind_FluidModel(void) const { return Kind_FluidModel; }
39723849

3973-
/*!
3974-
* \brief Datadriven method for EoS evaluation.
3975-
*/
3976-
ENUM_DATADRIVEN_METHOD GetKind_DataDriven_Method(void) const { return Kind_DataDriven_Method; }
3977-
3978-
/*!
3979-
* \brief Get name of the input file for the data-driven fluid model interpolation method.
3980-
* \return Name of the input file for the interpolation method.
3981-
*/
3982-
const string* GetDataDriven_FileNames(void) const { return DataDriven_Method_FileNames; }
3983-
3984-
/*!
3985-
* \brief Get number of listed look-up table or multi-layer perceptron input files.
3986-
* \return Number of listed data-driven method input files.
3987-
*/
3988-
unsigned short GetNDataDriven_Files(void) const { return n_Datadriven_files; }
3989-
3990-
/*!
3991-
* \brief Get Newton solver relaxation factor for data-driven fluid models.
3992-
* \return Newton solver relaxation factor.
3993-
*/
3994-
su2double GetRelaxation_DataDriven(void) const { return DataDriven_Relaxation_Factor; }
3995-
39963850
/*!
39973851
* \brief Returns the name of the fluid we are using in CoolProp.
39983852
*/
@@ -9939,4 +9793,17 @@ class CConfig {
99399793
*/
99409794
LM_ParsedOptions GetLMParsedOptions() const { return lmParsedOptions; }
99419795

9796+
9797+
/*!
9798+
* \brief Get parsed option data structure for data-driven fluid model.
9799+
* \return option data structure for data-driven fluid model.
9800+
*/
9801+
const DataDrivenFluid_ParsedOptions& GetDataDrivenParsedOptions() const { return datadriven_ParsedOptions; }
9802+
9803+
/*!
9804+
* \brief Get parsed option data structure for the flamelet fluid model.
9805+
* \return option data structure for the flamelet fluid model.
9806+
*/
9807+
const FluidFlamelet_ParsedOptions& GetFlameletParsedOptions() const { return flamelet_ParsedOptions; }
9808+
99429809
};

Common/include/option_structure.hpp

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
#include <sstream>
3434
#include <string>
3535
#include <vector>
36+
#include <array>
3637
#include <map>
3738
#include <cstdlib>
3839
#include <algorithm>
@@ -1324,6 +1325,20 @@ inline LM_ParsedOptions ParseLMOptions(const LM_OPTIONS *LM_Options, unsigned sh
13241325
return LMParsedOptions;
13251326
}
13261327

1328+
/*!
1329+
* \brief Structure containing parsed options for data-driven fluid model.
1330+
*/
1331+
struct DataDrivenFluid_ParsedOptions {
1332+
su2double rho_init_custom = -1; /*!< \brief Optional initial guess for density in inverse look-up operations. */
1333+
su2double e_init_custom = -1; /*!< \brief Optional initial guess for static energy in inverse look-up operations.*/
1334+
su2double Newton_relaxation = 1.0; /*!< \brief Relaxation factor for Newton solvers in data-driven fluid models. */
1335+
bool use_PINN = false; /*!< \brief Use physics-informed method for data-driven fluid modeling. */
1336+
ENUM_DATADRIVEN_METHOD interp_algorithm_type = ENUM_DATADRIVEN_METHOD::MLP; /*!< \brief Interpolation algorithm used for data-driven fluid model. */
1337+
unsigned short n_filenames = 1; /*!< \brief Number of datasets. */
1338+
std::string *datadriven_filenames; /*!< \brief Dataset information for data-driven fluid models. */
1339+
};
1340+
1341+
13271342
/*!
13281343
* \brief types of species transport models
13291344
*/
@@ -1391,6 +1406,34 @@ static const MapType<std::string, FLAMELET_INIT_TYPE> Flamelet_Init_Map = {
13911406
MakePair("SPARK", FLAMELET_INIT_TYPE::SPARK)
13921407
};
13931408

1409+
/*!
1410+
* \brief Structure containing parsed options for flamelet fluid model.
1411+
*/
1412+
struct FluidFlamelet_ParsedOptions {
1413+
///TODO: Add python wrapper initialization option
1414+
FLAMELET_INIT_TYPE ignition_method = FLAMELET_INIT_TYPE::NONE; /*!< \brief Method for solution ignition for flamelet problems. */
1415+
unsigned short n_scalars = 0; /*!< \brief Number of transported scalars for flamelet LUT approach. */
1416+
unsigned short n_lookups = 0; /*!< \brief Number of lookup variables, for visualization only. */
1417+
unsigned short n_table_sources = 0; /*!< \brief Number of transported scalar source terms for LUT. */
1418+
unsigned short n_user_scalars = 0; /*!< \brief Number of user defined (auxiliary) scalar transport equations. */
1419+
unsigned short n_user_sources = 0; /*!< \brief Number of source terms for user defined (auxiliary) scalar transport equations. */
1420+
unsigned short n_control_vars = 0; /*!< \brief Number of controlling variables (independent variables) for the LUT. */
1421+
1422+
std::string *controlling_variable_names; /*!< \brief Names of the independent, transported scalars. */
1423+
std::string* cv_source_names; /*!< \brief Names of the source terms of the independent, transported scalars. */
1424+
std::string* lookup_names; /*!< \brief Names of the passive look-up terms. */
1425+
std::string* user_scalar_names; /*!< \brief Names of the passive transported scalars. */
1426+
std::string* user_source_names; /*!< \brief Names of the source terms of the passive transported scalars. */
1427+
1428+
std::array<su2double,8> flame_init{{0,0,0, /* flame offset (x,y,z) */
1429+
1,0,0, /* flame normal (nx, ny, nz) */
1430+
5e-3,1}}; /*!< \brief Flame front initialization parameters. */
1431+
std::array<su2double,6> spark_init{{0,0,0,0,0,0}}; /*!< \brief Spark ignition initialization parameters. */
1432+
su2double* spark_reaction_rates; /*!< \brief Source terms for flamelet spark ignition option. */
1433+
unsigned short nspark; /*!< \brief Number of source terms for spark initialization. */
1434+
bool preferential_diffusion = false; /*!< \brief Preferential diffusion physics for flamelet solver.*/
1435+
};
1436+
13941437
/*!
13951438
* \brief Types of subgrid scale models
13961439
*/
@@ -1886,6 +1929,20 @@ enum TURBO_MARKER_TYPE{
18861929
OUTFLOW = 2 /*!< \brief flag for outflow marker for compute turboperformance. */
18871930
};
18881931

1932+
enum class RAMP_TYPE{
1933+
GRID, /*!< \brief flag for rotational/translational ramps */
1934+
BOUNDARY /*!< \brief flag for pressure/mass flow ramps*/
1935+
};
1936+
1937+
/*!
1938+
* \brief Coefficients of the ramp specified in the config, ordered by index in the config
1939+
*/
1940+
enum RAMP_COEFF{
1941+
INITIAL_VALUE = 0, /*!< \brief intial value of the ramp */
1942+
UPDATE_FREQ = 1, /*<! \brief update frequency of the ramp */
1943+
FINAL_ITER = 2 /*<! \brief final iteration of the ramp */
1944+
};
1945+
18891946
/*!
18901947
* \brief Types inlet boundary treatments
18911948
*/

0 commit comments

Comments
 (0)