SU2
variable_structure.hpp
Go to the documentation of this file.
1 
36 #pragma once
37 
38 #include "../../Common/include/mpi_structure.hpp"
39 
40 #include <cmath>
41 #include <iostream>
42 #include <cstdlib>
43 
44 #include "../../Common/include/config_structure.hpp"
45 #include "fluid_model.hpp"
46 
47 
48 using namespace std;
49 
56 class CVariable {
57 protected:
58 
59  su2double *Solution,
60  *Solution_Old;
61  bool Non_Physical;
62  su2double *Solution_time_n,
64  su2double **Gradient;
65  su2double *Limiter;
66  su2double *Solution_Max;
67  su2double *Solution_Min;
68  su2double AuxVar;
69  su2double *Grad_AuxVar;
70  su2double Delta_Time;
71  su2double Max_Lambda,
72  Max_Lambda_Inv,
74  Lambda;
75  su2double Sensor;
76  su2double *Undivided_Laplacian;
77  su2double *Res_TruncError,
78  *Residual_Old,
79  *Residual_Sum;
80  static unsigned short nDim;
81  unsigned short nVar;
84  unsigned short nPrimVar, nPrimVarGrad;
87  unsigned short nSecondaryVar, nSecondaryVarGrad;
91 public:
92 
96  CVariable(void);
97 
103  CVariable(unsigned short val_nvar, CConfig *config);
104 
111  CVariable(unsigned short val_nDim, unsigned short val_nvar, CConfig *config);
112 
116  virtual ~CVariable(void);
117 
122  void SetSolution(su2double *val_solution);
123 
129  void SetSolution(unsigned short val_var, su2double val_solution);
130 
136  void Add_DeltaSolution(unsigned short val_var, su2double val_solution);
137 
142  void SetNon_Physical(bool val_value);
143 
148  su2double GetNon_Physical(void);
149 
155  su2double GetSolution(unsigned short val_var);
156 
162  su2double GetSolution_Old(unsigned short val_var);
163 
168  void SetSolution_Old(su2double *val_solution_old);
169 
175  void SetSolution_Old(unsigned short val_var, su2double val_solution_old);
176 
180  void Set_OldSolution(void);
181 
185  void Set_Solution(void);
186 
190  void Set_Solution_time_n(void);
191 
195  void Set_Solution_time_n1(void);
196 
200  void Set_Solution_time_n(su2double* val_sol);
201 
205  void Set_Solution_time_n1(su2double* val_sol);
206 
210  void SetVelSolutionZero(void);
211 
216  void SetVelSolutionVector(su2double *val_vector);
217 
221  void SetVelSolutionOldZero(void);
222 
227  void SetVelSolutionOldVector(su2double *val_vector);
228 
232  void SetSolutionZero(void);
233 
237  void SetSolutionZero(unsigned short val_var);
238 
244  void AddSolution(unsigned short val_var, su2double val_solution);
245 
253  void AddClippedSolution(unsigned short val_var, su2double val_solution,
254  su2double lowerlimit, su2double upperlimit);
255 
265  void AddConservativeSolution(unsigned short val_var, su2double val_solution,
266  su2double val_density, su2double val_density_old, su2double lowerlimit,
267  su2double upperlimit);
268 
273  su2double *GetSolution(void);
274 
279  su2double *GetSolution_Old(void);
280 
285  su2double *GetSolution_time_n(void);
286 
291  su2double *GetSolution_time_n1(void);
292 
297  void SetResidual_Old(su2double *val_residual_old);
298 
303  void AddResidual_Sum(su2double *val_residual);
304 
308  void SetResidualSumZero(void);
309 
313  virtual void SetVel_ResTruncError_Zero(unsigned short iSpecies);
314 
319  su2double *GetResidual_Sum(void);
320 
325  su2double *GetResidual_Old(void);
326 
331  void GetResidual_Sum(su2double *val_residual);
332 
337  void SetAuxVar(su2double val_auxvar);
338 
343  su2double GetAuxVar(void);
344 
348  void SetAuxVarGradientZero(void);
349 
355  void SetAuxVarGradient(unsigned short val_dim, su2double val_gradient);
356 
362  void AddAuxVarGradient(unsigned short val_dim, su2double val_value);
363 
369  void SubtractAuxVarGradient(unsigned short val_dim, su2double val_value);
370 
375  su2double *GetAuxVarGradient(void);
376 
382  su2double GetAuxVarGradient(unsigned short val_dim);
383 
388  void AddRes_TruncError(su2double *val_truncation_error);
389 
394  void SubtractRes_TruncError(su2double *val_truncation_error);
395 
399  void SetRes_TruncErrorZero(void);
400 
404  void SetVal_ResTruncError_Zero(unsigned short val_var);
405 
409  void SetVel_ResTruncError_Zero(void);
410 
414  void SetEnergy_ResTruncError_Zero(void);
415 
420  su2double *GetResTruncError(void);
421 
426  void GetResTruncError(su2double *val_trunc_error);
427 
432  void SetGradient(su2double **val_gradient);
433 
440  void SetGradient(unsigned short val_var, unsigned short val_dim, su2double val_value);
441 
445  void SetGradientZero(void);
446 
453  void AddGradient(unsigned short val_var, unsigned short val_dim, su2double val_value);
454 
461  void SubtractGradient(unsigned short val_var, unsigned short val_dim, su2double val_value);
462 
467  su2double **GetGradient(void);
468 
475  su2double GetGradient(unsigned short val_var, unsigned short val_dim);
476 
482  void SetLimiter(unsigned short val_var, su2double val_limiter);
483 
490  virtual void SetLimiterPrimitive(unsigned short val_species, unsigned short val_var, su2double val_limiter);
491 
497  virtual su2double GetLimiterPrimitive(unsigned short val_species, unsigned short val_var);
498 
504  void SetSolution_Max(unsigned short val_var, su2double val_solution);
505 
511  void SetSolution_Min(unsigned short val_var, su2double val_solution);
512 
517  su2double *GetLimiter(void);
518 
524  su2double GetLimiter(unsigned short val_var);
525 
531  su2double GetSolution_Max(unsigned short val_var);
532 
538  su2double GetSolution_Min(unsigned short val_var);
539 
544  virtual su2double GetPreconditioner_Beta();
545 
550  virtual void SetPreconditioner_Beta(su2double val_Beta);
551 
556  virtual su2double* GetWindGust();
557 
562  virtual void SetWindGust(su2double* val_WindGust);
563 
568  virtual su2double* GetWindGustDer();
569 
574  virtual void SetWindGustDer(su2double* val_WindGust);
575 
580  void SetDelta_Time(su2double val_delta_time);
581 
587  virtual void SetDelta_Time(su2double val_delta_time, unsigned short iSpecies);
588 
593  su2double GetDelta_Time(void);
594 
600  virtual su2double GetDelta_Time(unsigned short iSpecies);
601 
606  void SetMax_Lambda(su2double val_max_lambda);
607 
612  void SetMax_Lambda_Inv(su2double val_max_lambda);
613 
619  virtual void SetMax_Lambda_Inv(su2double val_max_lambda, unsigned short val_species);
620 
625  void SetMax_Lambda_Visc(su2double val_max_lambda);
626 
632  virtual void SetMax_Lambda_Visc(su2double val_max_lambda, unsigned short val_species);
633 
638  void AddMax_Lambda(su2double val_max_lambda);
639 
644  void AddMax_Lambda_Inv(su2double val_max_lambda);
645 
650  void AddMax_Lambda_Visc(su2double val_max_lambda);
651 
656  su2double GetMax_Lambda(void);
657 
662  su2double GetMax_Lambda_Inv(void);
663 
668  su2double GetMax_Lambda_Visc(void);
669 
674  void SetLambda(su2double val_lambda);
675 
681  virtual void SetLambda(su2double val_lambda, unsigned short val_iSpecies);
682 
687  void AddLambda(su2double val_lambda);
688 
694  virtual void AddLambda(su2double val_lambda, unsigned short val_iSpecies);
695 
700  su2double GetLambda(void);
701 
707  virtual su2double GetLambda(unsigned short val_iSpecies);
708 
713  void SetSensor(su2double val_sensor);
714 
720  virtual void SetSensor(su2double val_sensor, unsigned short iSpecies);
721 
726  su2double GetSensor(void);
727 
733  virtual su2double GetSensor(unsigned short iSpecies);
734 
740  void SetUndivided_Laplacian(unsigned short val_var, su2double val_undivided_laplacian);
741 
746  void AddUnd_Lapl(su2double *val_und_lapl);
747 
752  void SubtractUnd_Lapl(su2double *val_und_lapl);
753 
759  void SubtractUnd_Lapl(unsigned short val_var, su2double val_und_lapl);
760 
764  void SetUnd_LaplZero(void);
765 
771  void SetUnd_Lapl(unsigned short val_var, su2double val_und_lapl);
772 
777  su2double *GetUndivided_Laplacian(void);
778 
784  su2double GetUndivided_Laplacian(unsigned short val_var);
785 
790  virtual su2double GetDensity(void);
791 
796  virtual su2double GetDensity(unsigned short val_iSpecies);
797 
803  virtual su2double GetMassFraction(unsigned short val_Species);
804 
809  virtual su2double GetEnergy(void);
810 
815  virtual su2double *GetForceProj_Vector(void);
816 
821  virtual su2double *GetObjFuncSource(void);
822 
827  virtual su2double *GetIntBoundary_Jump(void);
828 
833  virtual su2double GetEddyViscosity(void);
834 
839  virtual su2double GetEnthalpy(void);
840 
845  virtual su2double GetPressure(void);
846 
852  virtual su2double GetProjVel(su2double *val_vector);
853 
860  virtual su2double GetProjVel(su2double *val_vector, unsigned short val_species);
861 
866  virtual su2double GetSoundSpeed(void);
867 
872  virtual su2double GetBetaInc2(void);
873 
878  virtual su2double GetTemperature(void);
879 
884  virtual su2double GetTemperature_ve(void);
885 
890  virtual su2double GetRhoCv_tr(void);
891 
896  virtual su2double GetRhoCv_ve(void);
897 
903  virtual su2double GetVelocity(unsigned short val_dim);
904 
909  virtual su2double GetVelocity2(void);
910 
915  virtual su2double GetVelocity2(unsigned short val_species);
916 
921  virtual su2double GetLaminarViscosity(void);
922 
923 
928  virtual su2double GetLaminarViscosity(unsigned short iSpecies);
929 
934  virtual su2double* GetDiffusionCoeff(void);
935 
940  virtual su2double GetThermalConductivity(void);
941 
946  virtual su2double GetSpecificHeatCp(void);
947 
952  virtual su2double GetThermalConductivity_ve(void);
953 
958  virtual void SetGammaSep(su2double gamma_sep);
959 
964  virtual void SetGammaEff(void);
965 
970  virtual su2double GetIntermittency();
971 
976  virtual su2double *GetVorticity(void);
977 
982  virtual su2double GetStrainMag(void);
983 
988  virtual void SetForceProj_Vector(su2double *val_ForceProj_Vector);
989 
994  virtual void SetObjFuncSource(su2double *val_SetObjFuncSource);
995 
1000  virtual void SetIntBoundary_Jump(su2double *val_IntBoundary_Jump);
1001 
1006  virtual void SetEddyViscosity(su2double eddy_visc);
1007 
1011  virtual void SetEnthalpy(void);
1012 
1016  virtual bool SetPrimVar(CConfig *config);
1017 
1021  virtual bool SetPrimVar(CFluidModel *FluidModel);
1022 
1026  virtual void SetSecondaryVar(CFluidModel *FluidModel);
1027 
1031  virtual bool Cons2PrimVar(CConfig *config, su2double *U, su2double *V,
1032  su2double *dPdU, su2double *dTdU,
1033  su2double *dTvedU);
1037  virtual void Prim2ConsVar(CConfig *config, su2double *V, su2double *U);
1038 
1042  virtual bool SetPrimVar(su2double SharpEdge_Distance, bool check, CConfig *config);
1043 
1047  virtual bool SetPrimVar(su2double eddy_visc, su2double turb_ke, CConfig *config);
1048 
1052  virtual bool SetPrimVar(su2double eddy_visc, su2double turb_ke, CFluidModel *FluidModel);
1053 
1057  virtual bool SetPrimVar(su2double Density_Inf, CConfig *config);
1058 
1062  virtual bool SetPrimVar(su2double Density_Inf, su2double Viscosity_Inf, su2double eddy_visc, su2double turb_ke, CConfig *config);
1063 
1067  virtual su2double GetPrimitive(unsigned short val_var);
1068 
1072  virtual void SetPrimitive(unsigned short val_var, su2double val_prim);
1073 
1077  virtual void SetPrimitive(su2double *val_prim);
1078 
1082  virtual su2double *GetPrimitive(void);
1083 
1087  virtual su2double GetSecondary(unsigned short val_var);
1088 
1092  virtual void SetSecondary(unsigned short val_var, su2double val_secondary);
1093 
1097  virtual void SetSecondary(su2double *val_secondary);
1098 
1102  virtual void SetdPdrho_e(su2double dPdrho_e);
1103 
1107  virtual void SetdPde_rho(su2double dPde_rho);
1108 
1112  virtual void SetdTdrho_e(su2double dTdrho_e);
1113 
1117  virtual void SetdTde_rho(su2double dTde_rho);
1118 
1122  virtual void Setdmudrho_T(su2double dmudrho_T);
1123 
1127  virtual void SetdmudT_rho(su2double dmudT_rho);
1128 
1132  virtual void Setdktdrho_T(su2double dktdrho_T);
1133 
1137  virtual void SetdktdT_rho(su2double dktdT_rho);
1138 
1142  virtual su2double *GetSecondary(void);
1143 
1147  virtual void SetDensity(su2double val_density);
1148 
1152  virtual void SetPressure(void);
1153 
1157  virtual void SetVelocity(void);
1158 
1162  virtual void SetBetaInc2(su2double val_betainc2);
1163 
1168  virtual void SetPhi_Old(su2double *val_phi);
1169 
1174  virtual bool SetPressure(su2double Gamma);
1175 
1180  virtual bool SetPressure(CConfig *config);
1181 
1185  virtual bool SetPressure(su2double Gamma, su2double turb_ke);
1186 
1190  virtual su2double CalcEve(su2double *V, CConfig *config, unsigned short val_Species);
1191 
1195  virtual su2double CalcHs(su2double *V, CConfig *config, unsigned short val_Species);
1196 
1200  virtual su2double CalcCvve(su2double val_Tve, CConfig *config, unsigned short val_Species);
1201 
1208  virtual void CalcdPdU(su2double *V, CConfig *config, su2double *dPdU);
1209 
1216  virtual void CalcdTdU(su2double *V, CConfig *config, su2double *dTdU);
1217 
1224  virtual void CalcdTvedU(su2double *V, CConfig *config, su2double *dTdU);
1225 
1229  virtual su2double *GetdPdU(void);
1230 
1234  virtual su2double *GetdTdU(void);
1235 
1239  virtual su2double *GetdTvedU(void);
1240 
1244  virtual bool SetDensity(void);
1245 
1251  virtual void SetDeltaPressure(su2double *val_velocity, su2double Gamma);
1252 
1257  virtual bool SetSoundSpeed(su2double Gamma);
1258 
1263  virtual bool SetSoundSpeed(CConfig *config);
1264 
1268  virtual bool SetSoundSpeed(void);
1269 
1274  virtual bool SetTemperature(su2double Gas_Constant);
1275 
1280  virtual bool SetTemperature_ve(su2double val_Tve);
1281 
1286  virtual bool SetTemperature(CConfig *config);
1287 
1292  virtual void SetPrimitive(CConfig *config);
1293 
1299  virtual void SetPrimitive(CConfig *config, su2double *Coord);
1300 
1305  virtual void SetWallTemperature(su2double Temperature_Wall);
1306 
1311  virtual void SetWallTemperature(su2double* Temperature_Wall);
1312 
1317  virtual void SetThermalCoeff(CConfig *config);
1318 
1322  virtual void SetStress_FEM(unsigned short iVar, su2double val_stress);
1323 
1327  virtual void AddStress_FEM(unsigned short iVar, su2double val_stress);
1328 
1333  virtual su2double *GetStress_FEM(void);
1334 
1338  virtual void SetVonMises_Stress(su2double val_stress);
1339 
1344  virtual su2double GetVonMises_Stress(void);
1345 
1349  virtual void SetTraction(unsigned short iVar, unsigned short jVar, su2double val_traction);
1350 
1354  virtual void AddTraction(unsigned short iVar, unsigned short jVar, su2double val_traction);
1355 
1360  virtual su2double **GetTraction(void);
1361 
1365  virtual void Add_SurfaceLoad_Res(su2double *val_surfForce);
1366 
1370  virtual su2double *Get_SurfaceLoad_Res(void);
1371 
1375  virtual su2double Get_SurfaceLoad_Res(unsigned short iVar);
1376 
1380  virtual void Clear_SurfaceLoad_Res(void);
1381 
1385  virtual void Set_SurfaceLoad_Res_n(void);
1386 
1390  virtual su2double Get_SurfaceLoad_Res_n(unsigned short iVar);
1391 
1395  virtual void Add_BodyForces_Res(su2double *val_bodyForce);
1396 
1400  virtual su2double *Get_BodyForces_Res(void);
1401 
1405  virtual su2double Get_BodyForces_Res(unsigned short iVar);
1406 
1410  virtual void Clear_BodyForces_Res(void);
1411 
1415  virtual void Set_FlowTraction(su2double *val_flowTraction);
1416 
1420  virtual void Add_FlowTraction(su2double *val_flowTraction);
1421 
1425  virtual su2double *Get_FlowTraction(void);
1426 
1430  virtual su2double Get_FlowTraction(unsigned short iVar);
1431 
1435  virtual void Set_FlowTraction_n(void);
1436 
1440  virtual su2double Get_FlowTraction_n(unsigned short iVar);
1441 
1445  virtual void Clear_FlowTraction(void);
1446 
1450  virtual void SetVelocity2(void);
1451 
1456  virtual void SetVelocity_Old(su2double *val_velocity);
1457 
1462  virtual void SetLaminarViscosity(su2double laminarViscosity);
1463 
1468  virtual void SetLaminarViscosity(CConfig *config);
1469 
1474  virtual void SetThermalConductivity(su2double thermalConductivity);
1475 
1480  virtual void SetThermalConductivity(CConfig *config);
1481 
1486  virtual void SetSpecificHeatCp(su2double Cp);
1487 
1491  virtual bool SetVorticity(bool val_limiter);
1492 
1496  virtual bool SetStrainMag(bool val_limiter);
1497 
1501  virtual void SetVelSolutionOldDVector(void);
1502 
1506  virtual void SetVelSolutionDVector(void);
1507 
1511  virtual void SetGradient_PrimitiveZero(unsigned short val_primvar);
1512 
1519  virtual void AddGradient_Primitive(unsigned short val_var, unsigned short val_dim, su2double val_value);
1520 
1527  virtual void SubtractGradient_Primitive(unsigned short val_var, unsigned short val_dim, su2double val_value);
1528 
1535  virtual su2double GetGradient_Primitive(unsigned short val_var, unsigned short val_dim);
1536 
1542  virtual su2double GetLimiter_Primitive(unsigned short val_var);
1543 
1550  virtual void SetGradient_Primitive(unsigned short val_var, unsigned short val_dim, su2double val_value);
1551 
1557  virtual void SetLimiter_Primitive(unsigned short val_var, su2double val_value);
1558 
1563  virtual su2double **GetGradient_Primitive(void);
1564 
1569  virtual su2double *GetLimiter_Primitive(void);
1570 
1574  virtual void SetGradient_SecondaryZero(unsigned short val_secondaryvar);
1575 
1582  virtual void AddGradient_Secondary(unsigned short val_var, unsigned short val_dim, su2double val_value);
1583 
1590  virtual void SubtractGradient_Secondary(unsigned short val_var, unsigned short val_dim, su2double val_value);
1591 
1598  virtual su2double GetGradient_Secondary(unsigned short val_var, unsigned short val_dim);
1599 
1605  virtual su2double GetLimiter_Secondary(unsigned short val_var);
1606 
1613  virtual void SetGradient_Secondary(unsigned short val_var, unsigned short val_dim, su2double val_value);
1614 
1620  virtual void SetLimiter_Secondary(unsigned short val_var, su2double val_value);
1621 
1626  virtual su2double **GetGradient_Secondary(void);
1627 
1632  virtual su2double *GetLimiter_Secondary(void);
1633 
1640  virtual void SetBlendingFunc(su2double val_viscosity, su2double val_dist, su2double val_density);
1641 
1645  virtual su2double GetF1blending(void);
1646 
1650  virtual su2double GetF2blending(void);
1651 
1655  virtual su2double GetCrossDiff(void) { return 0.0; };
1656 
1661  virtual su2double GetmuT(void);
1662 
1667  virtual void SetmuT(su2double val_muT);
1668 
1674  virtual void AddMax_Lambda_Inv(su2double val_max_lambda, unsigned short iSpecies);
1675 
1681  virtual void AddMax_Lambda_Visc(su2double val_max_lambda, unsigned short iSpecies);
1682 
1688  virtual void SetHarmonicBalance_Source(unsigned short val_var, su2double val_source);
1689 
1693  virtual su2double GetHarmonicBalance_Source(unsigned short val_var);
1694 
1700  virtual void SetEddyViscSens(su2double *val_EddyViscSens, unsigned short numTotalVar);
1701 
1706  virtual su2double *GetEddyViscSens(void);
1707 
1712  virtual void SetSolution_Direct(su2double *val_solution_direct);
1713 
1718  virtual su2double *GetSolution_Direct(void);
1719 
1727  virtual void SetSolution_time_n(void);
1728 
1733  virtual void SetSolution_time_n(unsigned short val_var, su2double val_solution);
1734 
1739  virtual void SetSolution_time_n(su2double *val_solution_time_n);
1740 
1741 
1746  virtual void SetSolution_Vel(su2double *val_solution);
1747 
1753  virtual void SetSolution_Vel(unsigned short val_var, su2double val_solution_vel);
1754 
1759  virtual void SetSolution_Vel_time_n(su2double *val_solution_vel_time_n);
1760 
1764  virtual void SetSolution_Vel_time_n(void);
1765 
1771  virtual void SetSolution_Vel_time_n(unsigned short val_var, su2double val_solution_vel_time_n);
1772 
1778  virtual su2double GetSolution_time_n(unsigned short val_var);
1779 
1785  virtual su2double GetSolution_Vel(unsigned short val_var);
1786 
1791  virtual su2double *GetSolution_Vel(void);
1792 
1798  virtual su2double GetSolution_Vel_time_n(unsigned short val_var);
1799 
1804  virtual su2double *GetSolution_Vel_time_n(void);
1805 
1806 
1811  virtual void SetSolution_Accel(su2double *val_solution_accel);
1812 
1818  virtual void SetSolution_Accel(unsigned short val_var, su2double val_solution_accel);
1819 
1824  virtual void SetSolution_Accel_time_n(su2double *val_solution_accel_time_n);
1825 
1829  virtual void SetSolution_Accel_time_n(void);
1830 
1836  virtual void SetSolution_Accel_time_n(unsigned short val_var, su2double val_solution_accel_time_n);
1837 
1843  virtual su2double GetSolution_Accel(unsigned short val_var);
1844 
1849  virtual su2double *GetSolution_Accel(void);
1850 
1856  virtual su2double GetSolution_Accel_time_n(unsigned short val_var);
1857 
1862  virtual su2double *GetSolution_Accel_time_n(void);
1863 
1864 
1868  virtual void SetSolution_Pred(void);
1869 
1874  virtual void SetSolution_Pred(su2double *val_solution_pred);
1875 
1880  virtual void SetSolution_Pred(unsigned short val_var, su2double val_solution_pred);
1881 
1887  virtual su2double GetSolution_Pred(unsigned short val_var);
1888 
1893  virtual su2double *GetSolution_Pred(void);
1894 
1898  virtual void SetSolution_Pred_Old(void);
1899 
1904  virtual void SetSolution_Pred_Old(su2double *val_solution_pred_Old);
1905 
1910  virtual void SetSolution_Pred_Old(unsigned short val_var, su2double val_solution_pred_old);
1911 
1917  virtual su2double GetSolution_Pred_Old(unsigned short val_var);
1918 
1923  virtual su2double *GetSolution_Pred_Old(void);
1924 
1928  virtual void SetPrestretch(unsigned short iVar, su2double val_prestretch);
1929 
1933  virtual su2double *GetPrestretch(void);
1934 
1938  virtual su2double GetPrestretch(unsigned short iVar);
1939 
1944  void RegisterSolution(bool input);
1945 
1949  void RegisterSolution_time_n();
1950 
1954  void RegisterSolution_time_n1();
1955 
1960  void SetAdjointSolution(su2double *adj_sol);
1961 
1966  void GetAdjointSolution(su2double *adj_sol);
1967 
1972  void SetAdjointSolution_time_n(su2double *adj_sol);
1973 
1978  void GetAdjointSolution_time_n(su2double *adj_sol);
1979 
1984  void SetAdjointSolution_time_n1(su2double *adj_sol);
1985 
1990  void GetAdjointSolution_time_n1(su2double *adj_sol);
1991 
1997  virtual void SetSensitivity(unsigned short iDim, su2double val);
1998 
2004  virtual su2double GetSensitivity(unsigned short iDim);
2005 
2006  virtual void SetDual_Time_Derivative(unsigned short iVar, su2double der);
2007 
2008  virtual void SetDual_Time_Derivative_n(unsigned short iVar, su2double der);
2009 
2010  virtual su2double GetDual_Time_Derivative(unsigned short iVar);
2011 
2012  virtual su2double GetDual_Time_Derivative_n(unsigned short iVar);
2013 };
2014 
2022 public:
2023 
2027  CBaselineVariable(void);
2028 
2035  CBaselineVariable(su2double *val_solution, unsigned short val_nvar, CConfig *config);
2036 
2040  virtual ~CBaselineVariable(void);
2041 
2042 };
2043 
2052  su2double *Charge_Density;
2053 public:
2054 
2058  CPotentialVariable(void);
2059 
2067  CPotentialVariable(su2double val_potential, unsigned short val_nDim, unsigned short val_nvar, CConfig *config);
2068 
2072  ~CPotentialVariable(void);
2073 
2077  su2double* GetChargeDensity();
2078 
2084  void SetChargeDensity(su2double positive_charge, su2double negative_charge);
2085 
2086 };
2087 
2095 class CWaveVariable : public CVariable {
2096 protected:
2097  su2double *Solution_Direct;
2099 public:
2100 
2104  CWaveVariable(void);
2105 
2113  CWaveVariable(su2double *val_wave, unsigned short val_nDim, unsigned short val_nvar, CConfig *config);
2114 
2118  ~CWaveVariable(void);
2119 
2124  void SetSolution_Direct(su2double *val_solution_direct);
2125 
2130  su2double *GetSolution_Direct(void);
2131 
2132 };
2133 
2141 class CHeatVariable : public CVariable {
2142 protected:
2143  su2double *Solution_Direct;
2145 public:
2146 
2150  CHeatVariable(void);
2151 
2159  CHeatVariable(su2double *val_Heat, unsigned short val_nDim, unsigned short val_nvar, CConfig *config);
2160 
2164  ~CHeatVariable(void);
2165 
2170  void SetSolution_Direct(su2double *val_solution_direct);
2171 
2176  su2double *GetSolution_Direct(void);
2177 
2178 };
2179 
2188 protected:
2189 
2193  su2double *Stress;
2194  su2double *FlowTraction;
2195  su2double *FlowTraction_n;
2197  // su2double *Residual_Int; /*!< \brief Internal stress term for the calculation of the residual */
2198  su2double *Residual_Ext_Surf;
2199  su2double *Residual_Ext_Surf_n;
2200  su2double *Residual_Ext_Body;
2202  su2double VonMises_Stress;
2204  su2double *Solution_time_n;
2206  su2double *Solution_Vel,
2209  su2double *Solution_Accel,
2212  su2double *Solution_Pred,
2215  su2double *Prestretch;
2218 public:
2219 
2223  CFEM_ElasVariable(void);
2224 
2232  CFEM_ElasVariable(su2double *val_fea, unsigned short val_nDim, unsigned short val_nvar, CConfig *config);
2233 
2237  ~CFEM_ElasVariable(void);
2238 
2243  su2double *GetStress_FEM(void);
2244 
2250  void SetStress_FEM(unsigned short iVar, su2double val_stress);
2251 
2257  void AddStress_FEM(unsigned short iVar, su2double val_stress);
2258 
2262  void Add_SurfaceLoad_Res(su2double *val_surfForce);
2263 
2267  su2double *Get_SurfaceLoad_Res(void);
2268 
2272  su2double Get_SurfaceLoad_Res(unsigned short iVar);
2273 
2277  void Clear_SurfaceLoad_Res(void);
2278 
2282  void Set_SurfaceLoad_Res_n(void);
2283 
2287  su2double Get_SurfaceLoad_Res_n(unsigned short iVar);
2288 
2292  void Add_BodyForces_Res(su2double *val_bodyForce);
2293 
2297  void Clear_BodyForces_Res(void);
2298 
2302  su2double *Get_BodyForces_Res(void);
2303 
2307  su2double Get_BodyForces_Res(unsigned short iVar);
2308 
2312  void Set_FlowTraction(su2double *val_flowTraction);
2313 
2317  void Add_FlowTraction(su2double *val_flowTraction);
2318 
2322  su2double *Get_FlowTraction(void);
2323 
2327  su2double Get_FlowTraction(unsigned short iVar);
2328 
2332  void Set_FlowTraction_n(void);
2333 
2337  su2double Get_FlowTraction_n(unsigned short iVar);
2338 
2342  void Clear_FlowTraction(void);
2343 
2348  void SetSolution_time_n(void);
2349 
2354  void SetSolution_time_n(su2double *val_solution_time_n);
2355 
2360  void SetSolution_time_n(unsigned short val_var, su2double val_solution);
2361 
2366  void SetSolution_Vel(su2double *val_solution_vel);
2367 
2373  void SetSolution_Vel(unsigned short val_var, su2double val_solution_vel);
2374 
2379  void SetSolution_Vel_time_n(void);
2380 
2385  void SetSolution_Vel_time_n(su2double *val_solution_vel_time_n);
2386 
2392  void SetSolution_Vel_time_n(unsigned short val_var, su2double val_solution_vel_time_n);
2393 
2399  su2double GetSolution_time_n(unsigned short val_var);
2400 
2406  su2double GetSolution_Vel(unsigned short val_var);
2407 
2412  su2double *GetSolution_Vel(void);
2413 
2419  su2double GetSolution_Vel_time_n(unsigned short val_var);
2420 
2425  su2double *GetSolution_Vel_time_n(void);
2426 
2431  void SetSolution_Accel(su2double *val_solution_accel);
2432 
2438  void SetSolution_Accel(unsigned short val_var, su2double val_solution_accel);
2439 
2444  void SetSolution_Accel_time_n(su2double *val_solution_accel_time_n);
2445 
2450  void SetSolution_Accel_time_n(void);
2451 
2457  void SetSolution_Accel_time_n(unsigned short val_var, su2double val_solution_accel_time_n);
2458 
2464  su2double GetSolution_Accel(unsigned short val_var);
2465 
2470  su2double *GetSolution_Accel(void);
2471 
2477  su2double GetSolution_Accel_time_n(unsigned short val_var);
2478 
2483  su2double *GetSolution_Accel_time_n(void);
2484 
2488  void SetSolution_Pred(void);
2489 
2494  void SetSolution_Pred(su2double *val_solution_pred);
2495 
2501  void SetSolution_Pred(unsigned short val_var, su2double val_solution_pred);
2502 
2508  su2double GetSolution_Pred(unsigned short val_var);
2509 
2514  su2double *GetSolution_Pred(void);
2515 
2519  void SetSolution_Pred_Old(void);
2520 
2525  void SetSolution_Pred_Old(su2double *val_solution_pred_Old);
2526 
2532  void SetSolution_Pred_Old(unsigned short val_var, su2double val_solution_pred_old);
2533 
2539  su2double GetSolution_Pred_Old(unsigned short val_var);
2540 
2545  su2double *GetSolution_Pred_Old(void);
2546 
2550  void SetPrestretch(unsigned short iVar, su2double val_prestretch);
2551 
2555  su2double *GetPrestretch(void);
2556 
2560  su2double GetPrestretch(unsigned short iVar);
2561 
2566  void SetVonMises_Stress(su2double val_stress);
2567 
2572  su2double GetVonMises_Stress(void);
2573 
2574 
2575 };
2576 
2584 protected:
2585  su2double **Traction;
2587 public:
2588 
2592  CFEABoundVariable(void);
2593 
2602  CFEABoundVariable(unsigned short val_nDim, unsigned short val_nvar, unsigned short val_nElBound, CConfig *config);
2603 
2607  ~CFEABoundVariable(void);
2608 
2615  void SetTraction(unsigned short iVar, unsigned short jVar, su2double val_traction);
2616 
2623  void AddTraction(unsigned short iVar, unsigned short jVar, su2double val_traction);
2624 
2629  su2double **GetTraction(void);
2630 
2631 };
2632 
2640 class CEulerVariable : public CVariable {
2641 protected:
2642  su2double Velocity2;
2643  su2double *HB_Source;
2644  su2double Precond_Beta;
2645  su2double *WindGust;
2646  su2double *WindGustDer;
2648  /*--- Primitive variable definition ---*/
2649 
2650  su2double *Primitive;
2651  su2double **Gradient_Primitive;
2652  su2double *Limiter_Primitive;
2654  /*--- Secondary variable definition ---*/
2655 
2656  su2double *Secondary;
2657  su2double **Gradient_Secondary;
2658  su2double *Limiter_Secondary;
2660 public:
2661 
2665  CEulerVariable(void);
2666 
2676  CEulerVariable(su2double val_density, su2double *val_velocity, su2double val_energy, unsigned short val_nDim,
2677  unsigned short val_nvar, CConfig *config);
2678 
2686  CEulerVariable(su2double *val_solution, unsigned short val_nDim, unsigned short val_nvar, CConfig *config);
2687 
2691  virtual ~CEulerVariable(void);
2692 
2696  void SetGradient_PrimitiveZero(unsigned short val_primvar);
2697 
2704  void AddGradient_Primitive(unsigned short val_var, unsigned short val_dim, su2double val_value);
2705 
2712  void SubtractGradient_Primitive(unsigned short val_var, unsigned short val_dim, su2double val_value);
2713 
2720  su2double GetGradient_Primitive(unsigned short val_var, unsigned short val_dim);
2721 
2727  su2double GetLimiter_Primitive(unsigned short val_var);
2728 
2735  void SetGradient_Primitive(unsigned short val_var, unsigned short val_dim, su2double val_value);
2736 
2742  void SetLimiter_Primitive(unsigned short val_var, su2double val_value);
2743 
2748  su2double **GetGradient_Primitive(void);
2749 
2754  su2double *GetLimiter_Primitive(void);
2755 
2759  void SetGradient_SecondaryZero(unsigned short val_secondaryvar);
2760 
2767  void AddGradient_Secondary(unsigned short val_var, unsigned short val_dim, su2double val_value);
2768 
2775  void SubtractGradient_Secondary(unsigned short val_var, unsigned short val_dim, su2double val_value);
2776 
2783  su2double GetGradient_Secondary(unsigned short val_var, unsigned short val_dim);
2784 
2791  su2double GetLimiter_Secondary(unsigned short val_var);
2792 
2799  void SetGradient_Secondary(unsigned short val_var, unsigned short val_dim, su2double val_value);
2800 
2807  void SetLimiter_Secondary(unsigned short val_var, su2double val_value);
2808 
2813  su2double **GetGradient_Secondary(void);
2814 
2819  su2double *GetLimiter_Secondary(void);
2820 
2824  void SetdPdrho_e(su2double dPdrho_e);
2825 
2829  void SetdPde_rho(su2double dPde_rho);
2830 
2834  bool SetPressure(su2double Gamma);
2835 
2840  bool SetSoundSpeed(su2double Gamma);
2841 
2845  void SetEnthalpy(void);
2846 
2850  bool SetPrimVar(CFluidModel *FluidModel);
2851 
2855  void SetSecondaryVar(CFluidModel *FluidModel);
2856 
2862  su2double GetPrimitive(unsigned short val_var);
2863 
2870  void SetPrimitive(unsigned short val_var, su2double val_prim);
2871 
2877  void SetPrimitive(su2double *val_prim);
2878 
2883  su2double *GetPrimitive(void);
2884 
2890  su2double GetSecondary(unsigned short val_var);
2891 
2898  void SetSecondary(unsigned short val_var, su2double val_secondary);
2899 
2905  void SetSecondary(su2double *val_secondary);
2906 
2911  su2double *GetSecondary(void);
2912 
2916  bool SetDensity(void);
2917 
2922  bool SetTemperature(su2double Gas_Constant);
2923 
2928  su2double GetVelocity2(void);
2929 
2934  su2double GetPressure(void);
2935 
2940  su2double GetSoundSpeed(void);
2941 
2946  su2double GetEnthalpy(void);
2947 
2952  su2double GetDensity(void);
2953 
2958  su2double GetEnergy(void);
2959 
2964  su2double GetTemperature(void);
2965 
2971  su2double GetVelocity(unsigned short val_dim);
2972 
2978  su2double GetProjVel(su2double *val_vector);
2979 
2984  void SetVelocity(void);
2985 
2990  void SetVelocity_Old(su2double *val_velocity);
2991 
2997  void SetHarmonicBalance_Source(unsigned short val_var, su2double val_source);
2998 
3004  su2double GetHarmonicBalance_Source(unsigned short val_var);
3005 
3010  su2double GetPreconditioner_Beta();
3011 
3016  void SetPreconditioner_Beta(su2double val_Beta);
3017 
3022  su2double* GetWindGust();
3023 
3028  void SetWindGust(su2double* val_WindGust);
3029 
3034  su2double* GetWindGustDer();
3035 
3040  void SetWindGustDer(su2double* val_WindGust);
3041 };
3042 
3051 protected:
3052  su2double Velocity2;
3053  su2double Precond_Beta;
3054  su2double *WindGust;
3055  su2double *WindGustDer;
3057  /*--- Primitive variable definition ---*/
3058 
3059  su2double *Primitive;
3060  su2double **Gradient_Primitive;
3061  su2double *Limiter_Primitive;
3063 public:
3064 
3068  CIncEulerVariable(void);
3069 
3078  CIncEulerVariable(su2double val_pressure, su2double *val_velocity, unsigned short val_nDim,
3079  unsigned short val_nvar, CConfig *config);
3080 
3088  CIncEulerVariable(su2double *val_solution, unsigned short val_nDim, unsigned short val_nvar, CConfig *config);
3089 
3093  virtual ~CIncEulerVariable(void);
3094 
3098  void SetGradient_PrimitiveZero(unsigned short val_primvar);
3099 
3106  void AddGradient_Primitive(unsigned short val_var, unsigned short val_dim, su2double val_value);
3107 
3114  void SubtractGradient_Primitive(unsigned short val_var, unsigned short val_dim, su2double val_value);
3115 
3122  su2double GetGradient_Primitive(unsigned short val_var, unsigned short val_dim);
3123 
3129  su2double GetLimiter_Primitive(unsigned short val_var);
3130 
3137  void SetGradient_Primitive(unsigned short val_var, unsigned short val_dim, su2double val_value);
3138 
3144  void SetLimiter_Primitive(unsigned short val_var, su2double val_value);
3145 
3150  su2double **GetGradient_Primitive(void);
3151 
3156  su2double *GetLimiter_Primitive(void);
3157 
3161  void SetPressure();
3162 
3168  su2double GetPrimitive(unsigned short val_var);
3169 
3176  void SetPrimitive(unsigned short val_var, su2double val_prim);
3177 
3183  void SetPrimitive(su2double *val_prim);
3184 
3189  su2double *GetPrimitive(void);
3190 
3194  void SetDensity(su2double val_density);
3195 
3199  void SetVelocity(void);
3200 
3204  void SetBetaInc2(su2double val_betainc2);
3205 
3210  su2double GetVelocity2(void);
3211 
3216  su2double GetPressure(void);
3217 
3222  su2double GetBetaInc2(void);
3223 
3228  su2double GetDensity(void);
3229 
3235  su2double GetVelocity(unsigned short val_dim);
3236 
3242  su2double GetProjVel(su2double *val_vector);
3243 
3248  void SetVelocity_Old(su2double *val_velocity);
3249 
3254  su2double* GetWindGust();
3255 
3260  void SetWindGust(su2double* val_WindGust);
3261 
3266  su2double* GetWindGustDer();
3267 
3272  void SetWindGustDer(su2double* val_WindGust);
3273 
3277  bool SetPrimVar(su2double Density_Inf, CConfig *config);
3278 
3279 };
3280 
3288 class CNSVariable : public CEulerVariable {
3289 private:
3290  su2double Prandtl_Lam;
3291  su2double Prandtl_Turb;
3292  su2double Temperature_Ref;
3293  su2double Viscosity_Ref;
3294  su2double Viscosity_Inf;
3295  su2double Vorticity[3];
3296  su2double StrainMag;
3297 public:
3298 
3302  CNSVariable(void);
3303 
3313  CNSVariable(su2double val_density, su2double *val_velocity,
3314  su2double val_energy, unsigned short val_nDim, unsigned short val_nvar, CConfig *config);
3315 
3323  CNSVariable(su2double *val_solution, unsigned short val_nDim, unsigned short val_nvar, CConfig *config);
3324 
3328  ~CNSVariable(void);
3329 
3333  void SetLaminarViscosity(su2double laminarViscosity);
3334 
3338  void SetThermalConductivity(su2double thermalConductivity);
3339 
3343  void SetSpecificHeatCp(su2double Cp);
3344 
3348  bool SetVorticity(bool val_limiter);
3349 
3353  bool SetStrainMag(bool val_limiter);
3354 
3359  void SetEddyViscosity(su2double eddy_visc);
3360 
3365  su2double GetLaminarViscosity(void);
3366 
3371  su2double GetThermalConductivity(void);
3372 
3377  su2double GetEddyViscosity(void);
3378 
3383  su2double GetSpecificHeatCp(void);
3384 
3388  void SetWallTemperature(su2double temperature_wall);
3389 
3395  su2double *GetVorticity(void);
3396 
3401  su2double GetStrainMag(void);
3402 
3406  void SetdTdrho_e(su2double dTdrho_e);
3407 
3411  void SetdTde_rho(su2double dTde_rho);
3412 
3416  void Setdmudrho_T(su2double dmudrho_T);
3417 
3421  void SetdmudT_rho(su2double dmudT_rho);
3422 
3426  void Setdktdrho_T(su2double dktdrho_T);
3427 
3431  void SetdktdT_rho(su2double dktdT_rho);
3432 
3436  bool SetPrimVar(su2double eddy_visc, su2double turb_ke, CFluidModel *FluidModel);
3437  using CVariable::SetPrimVar;
3438 
3442  void SetSecondaryVar(CFluidModel *FluidModel);
3443 };
3444 
3453 private:
3454  su2double Prandtl_Lam;
3455  su2double Prandtl_Turb;
3456  su2double Temperature_Ref;
3457  su2double Viscosity_Ref;
3458  su2double Viscosity_Inf;
3459  su2double Vorticity[3];
3460  su2double StrainMag;
3461 public:
3462 
3466  CIncNSVariable(void);
3467 
3476  CIncNSVariable(su2double val_pressure, su2double *val_velocity, unsigned short val_nDim, unsigned short val_nvar, CConfig *config);
3477 
3485  CIncNSVariable(su2double *val_solution, unsigned short val_nDim, unsigned short val_nvar, CConfig *config);
3486 
3490  ~CIncNSVariable(void);
3491 
3495  void SetLaminarViscosity(su2double laminarViscosity);
3496 
3500  bool SetVorticity(bool val_limiter);
3501 
3505  bool SetStrainMag(bool val_limiter);
3506 
3511  void SetEddyViscosity(su2double eddy_visc);
3512 
3517  su2double GetLaminarViscosity(void);
3518 
3523  su2double GetEddyViscosity(void);
3524 
3530  su2double *GetVorticity(void);
3531 
3536  su2double GetStrainMag(void);
3537 
3541  bool SetPrimVar(su2double Density_Inf, su2double Viscosity_Inf, su2double eddy_visc, su2double turb_ke, CConfig *config);
3542  using CVariable::SetPrimVar;
3543 
3544 };
3545 
3553 class CTurbVariable : public CVariable {
3554 protected:
3555  su2double muT;
3556  su2double *HB_Source;
3558 public:
3562  CTurbVariable(void);
3563 
3570  CTurbVariable(unsigned short val_nDim, unsigned short val_nvar, CConfig *config);
3571 
3575  virtual ~CTurbVariable(void);
3576 
3581  su2double GetmuT();
3582 
3587  void SetmuT(su2double val_muT);
3588 };
3589 
3599 public:
3603  CTurbSAVariable(void);
3604 
3613  CTurbSAVariable(su2double val_nu_tilde, su2double val_muT, unsigned short val_nDim, unsigned short val_nvar, CConfig *config);
3614 
3618  ~CTurbSAVariable(void);
3619 
3625  void SetHarmonicBalance_Source(unsigned short val_var, su2double val_source);
3626 
3632  su2double GetHarmonicBalance_Source(unsigned short val_var);
3633 
3634 };
3635 
3636 
3646 public:
3650  CTurbMLVariable(void);
3651 
3660  CTurbMLVariable(su2double val_nu_tilde, su2double val_muT, unsigned short val_nDim, unsigned short val_nvar, CConfig *config);
3661 
3665  ~CTurbMLVariable(void);
3666 
3672  void SetHarmonicBalance_Source(unsigned short val_var, su2double val_source);
3673 
3679  su2double GetHarmonicBalance_Source(unsigned short val_var);
3680 
3681 };
3682 
3692 protected:
3693  su2double gamma_sep;
3694 
3695 public:
3696 
3700  CTransLMVariable(void);
3701 
3711  CTransLMVariable(su2double val_nu_tilde, su2double val_intermittency, su2double val_REth, unsigned short val_nDim, unsigned short val_nvar, CConfig *config);
3712 
3716  ~CTransLMVariable(void);
3717 
3721  su2double GetIntermittency(void);
3722 
3727  void SetGammaSep(su2double gamma_sep_in);
3728 
3732  void SetGammaEff(void);
3733 
3734 };
3735 
3745 protected:
3746  su2double sigma_om2,
3747  beta_star;
3748  su2double F1,
3749  F2,
3750  CDkw;
3752 public:
3756  CTurbSSTVariable(void);
3757 
3768  CTurbSSTVariable(su2double val_rho_kine, su2double val_rho_omega, su2double val_muT, unsigned short val_nDim, unsigned short val_nvar,
3769  su2double *constants, CConfig *config);
3770 
3774  ~CTurbSSTVariable(void);
3775 
3782  void SetBlendingFunc(su2double val_viscosity, su2double val_dist, su2double val_density);
3783 
3787  su2double GetF1blending(void);
3788 
3792  su2double GetF2blending(void);
3793 
3797  su2double GetCrossDiff(void);
3798 };
3799 
3800 
3809 protected:
3810  su2double *Psi;
3811  su2double *ForceProj_Vector;
3812  su2double *ObjFuncSource;
3813  su2double *IntBoundary_Jump;
3814  su2double *HB_Source;
3815  bool incompressible;
3816 public:
3817 
3821  CAdjEulerVariable(void);
3822 
3832  CAdjEulerVariable(su2double val_psirho, su2double *val_phi, su2double val_psie, unsigned short val_nDim, unsigned short val_nvar, CConfig *config);
3833 
3841  CAdjEulerVariable(su2double *val_solution, unsigned short val_nDim, unsigned short val_nvar, CConfig *config);
3842 
3846  virtual ~CAdjEulerVariable(void);
3847 
3851  bool SetPrimVar(su2double SharpEdge_Distance, bool check, CConfig *config);
3852 
3857  void SetPhi_Old(su2double *val_phi);
3858 
3863  void SetForceProj_Vector(su2double *val_ForceProj_Vector);
3864 
3869  void SetObjFuncSource(su2double *val_SetObjFuncSource);
3870 
3875  void SetIntBoundary_Jump(su2double *val_IntBoundary_Jump);
3876 
3881  su2double *GetForceProj_Vector(void);
3882 
3887  su2double *GetObjFuncSource(void);
3888 
3893  su2double *GetIntBoundary_Jump(void);
3894 
3900  void SetHarmonicBalance_Source(unsigned short val_var, su2double val_source);
3901 
3907  su2double GetHarmonicBalance_Source(unsigned short val_var);
3908 };
3909 
3918 protected:
3919  su2double *Psi;
3920  su2double *ForceProj_Vector;
3921  su2double *ObjFuncSource;
3922  su2double *IntBoundary_Jump;
3923  bool incompressible;
3924 public:
3925 
3929  CAdjIncEulerVariable(void);
3930 
3940  CAdjIncEulerVariable(su2double val_psirho, su2double *val_phi, su2double val_psie, unsigned short val_nDim, unsigned short val_nvar, CConfig *config);
3941 
3949  CAdjIncEulerVariable(su2double *val_solution, unsigned short val_nDim, unsigned short val_nvar, CConfig *config);
3950 
3954  virtual ~CAdjIncEulerVariable(void);
3955 
3959  bool SetPrimVar(su2double SharpEdge_Distance, bool check, CConfig *config);
3960 
3965  void SetPhi_Old(su2double *val_phi);
3966 
3971  void SetForceProj_Vector(su2double *val_ForceProj_Vector);
3972 
3977  void SetObjFuncSource(su2double *val_SetObjFuncSource);
3978 
3983  void SetIntBoundary_Jump(su2double *val_IntBoundary_Jump);
3984 
3989  su2double *GetForceProj_Vector(void);
3990 
3995  su2double *GetObjFuncSource(void);
3996 
4001  su2double *GetIntBoundary_Jump(void);
4002 
4008  void SetTimeSpectral_Source(unsigned short val_var, su2double val_source);
4009 
4015  su2double GetTimeSpectral_Source(unsigned short val_var);
4016 };
4017 
4026 private:
4027 
4028 public:
4029 
4033  CAdjNSVariable(void);
4034 
4044  CAdjNSVariable(su2double val_psirho, su2double *val_phi, su2double val_psie, unsigned short val_nDim, unsigned short val_nvar, CConfig *config);
4045 
4053  CAdjNSVariable(su2double *val_solution, unsigned short val_nDim, unsigned short val_nvar, CConfig *config);
4054 
4058  ~CAdjNSVariable(void);
4059 
4064  void SetPhi_Old(su2double *val_phi);
4065 
4070  void SetForceProj_Vector(su2double *val_ForceProj_Vector);
4071 
4076  su2double *GetForceProj_Vector(void);
4077 
4081  void SetVelSolutionOldDVector(void);
4082 
4086  void SetVelSolutionDVector(void);
4087 
4088 };
4089 
4098 private:
4099 
4100 public:
4101 
4105  CAdjIncNSVariable(void);
4106 
4116  CAdjIncNSVariable(su2double val_psirho, su2double *val_phi, su2double val_psie, unsigned short val_nDim, unsigned short val_nvar, CConfig *config);
4117 
4125  CAdjIncNSVariable(su2double *val_solution, unsigned short val_nDim, unsigned short val_nvar, CConfig *config);
4126 
4130  ~CAdjIncNSVariable(void);
4131 
4136  void SetPhi_Old(su2double *val_phi);
4137 
4142  void SetForceProj_Vector(su2double *val_ForceProj_Vector);
4143 
4148  su2double *GetForceProj_Vector(void);
4149 
4153  void SetVelSolutionOldDVector(void);
4154 
4158  void SetVelSolutionDVector(void);
4159 
4160 };
4161 
4169 class CAdjTurbVariable : public CVariable {
4170 protected:
4171  su2double *dmuT_dUTvar;
4172  su2double **dRTstar_dUTvar;
4174  su2double **dFT_dUTvar;
4176  su2double *EddyViscSens;
4178 public:
4179 
4183  CAdjTurbVariable(void);
4184 
4192  CAdjTurbVariable(su2double val_psinu_inf, unsigned short val_nDim, unsigned short val_nvar, CConfig *config);
4193 
4197  ~CAdjTurbVariable(void);
4198 
4203  void SetEddyViscSens(su2double *val_EddyViscSens, unsigned short numTotalVar);
4204 
4209  su2double *GetEddyViscSens(void);
4210 };
4211 
4220 public:
4221 
4225  CTemplateVariable(void);
4226 
4234  CTemplateVariable(su2double val_potential, unsigned short val_nDim, unsigned short val_nvar, CConfig *config);
4235 
4239  ~CTemplateVariable(void);
4240 };
4241 
4249 class CDiscAdjVariable : public CVariable {
4250 private:
4251  su2double* Sensitivity; /* Vector holding the derivative of target functional with respect to the coordinates at this node*/
4252  su2double* Solution_Direct;
4253  su2double* DualTime_Derivative;
4254  su2double* DualTime_Derivative_n;
4255 
4256 public:
4260  CDiscAdjVariable(void);
4261 
4265  ~CDiscAdjVariable(void);
4266 
4274  CDiscAdjVariable(su2double *val_solution, unsigned short val_ndim, unsigned short val_nvar, CConfig *config);
4275 
4281  void SetSensitivity(unsigned short iDim, su2double val);
4282 
4288  su2double GetSensitivity(unsigned short iDim);
4289 
4290  void SetDual_Time_Derivative(unsigned short iVar, su2double der);
4291 
4292  void SetDual_Time_Derivative_n(unsigned short iVar, su2double der);
4293 
4294  su2double GetDual_Time_Derivative(unsigned short iVar);
4295 
4296  su2double GetDual_Time_Derivative_n(unsigned short iVar);
4297 
4298  void SetSolution_Direct(su2double *sol);
4299 
4300  su2double* GetSolution_Direct();
4301 };
4302 
4303 
4304 #include "variable_structure.inl"
su2double * Primitive
Wind gust derivatives value.
Definition: variable_structure.hpp:3059
su2double * HB_Source
harmonic balance source term.
Definition: variable_structure.hpp:2643
su2double * HB_Source
Harmonic Balance source term.
Definition: variable_structure.hpp:3556
Main class for defining the variables of the Heat equation solver.
Definition: variable_structure.hpp:2141
su2double ** Gradient_Secondary
Gradient of the primitive variables (T, vx, vy, vz, P, rho).
Definition: variable_structure.hpp:2657
su2double * WindGustDer
Wind gust value.
Definition: variable_structure.hpp:2646
Main class for defining the variables.
Definition: variable_structure.hpp:56
su2double * Limiter_Secondary
Limiter of the primitive variables (T, vx, vy, vz, P, rho).
Definition: variable_structure.hpp:2658
Main class for defining the Thermo-Physical Model a child class for each particular Model (Ideal-Gas...
Definition: fluid_model.hpp:62
su2double * FlowTraction_n
Traction from the fluid field at time n.
Definition: variable_structure.hpp:2195
su2double * Psi
Vector of the adjoint variables.
Definition: variable_structure.hpp:3919
bool fsi_analysis
Bool which determines if the problem is FSI.
Definition: variable_structure.hpp:2191
su2double * Residual_Ext_Body
Term of the residual due to body forces.
Definition: variable_structure.hpp:2200
su2double F2
Menter blending function for stress limiter.
Definition: variable_structure.hpp:3748
su2double ** dFT_dUTvar
Sensitivity of boundary flux to mean flow and turbulence vars.
Definition: variable_structure.hpp:4174
Main class for defining the variables of the turbulence model.
Definition: variable_structure.hpp:3645
su2double * Primitive
Wind gust derivatives value.
Definition: variable_structure.hpp:2650
su2double * ForceProj_Vector
Vector d.
Definition: variable_structure.hpp:3811
Main class for defining the variables of the adjoint turbulence model.
Definition: variable_structure.hpp:4169
su2double Velocity2
Square of the velocity vector.
Definition: variable_structure.hpp:2642
Main class for defining the variables of the turbulence model.
Definition: variable_structure.hpp:3598
su2double * Undivided_Laplacian
Undivided laplacian of the solution.
Definition: variable_structure.hpp:76
su2double * IntBoundary_Jump
Interior boundary jump vector.
Definition: variable_structure.hpp:3813
bool dynamic_analysis
Bool which determines if the problem is dynamic.
Definition: variable_structure.hpp:2190
su2double * HB_Source
Harmonic balance source term.
Definition: variable_structure.hpp:3814
su2double * IntBoundary_Jump
Interior boundary jump vector.
Definition: variable_structure.hpp:3922
Main class for defining the variables of the adjoint incompressible Euler solver. ...
Definition: variable_structure.hpp:3917
su2double ** dRTstar_dUTvar
Sensitivity of modified turbulence residual (no boundary flux) to mean flow and turbulence vars...
Definition: variable_structure.hpp:4172
unsigned short nVar
Number of variables of the problem, note that this variable cannnot be static, it is possible to have...
Definition: variable_structure.hpp:81
Main class for defining the variables of the potential solver.
Definition: variable_structure.hpp:2051
Main class for defining the variables of the compressible Euler solver.
Definition: variable_structure.hpp:2640
su2double * Prestretch
Prestretch geometry.
Definition: variable_structure.hpp:2215
su2double muT
Eddy viscosity.
Definition: variable_structure.hpp:3555
Main class for defining the variables of the FEM Linear Elastic structural problem.
Definition: variable_structure.hpp:2187
su2double * Solution_Accel_time_n
Acceleration of the nodes at time n.
Definition: variable_structure.hpp:2209
Headers of the main thermodynamic subroutines of the SU2 solvers.
su2double Delta_Time
Time step.
Definition: variable_structure.hpp:70
su2double * Solution_Direct
Direct solution container for use in the adjoint Heat solver.
Definition: variable_structure.hpp:2143
su2double * Residual_Sum
Auxiliar structure for residual smoothing.
Definition: variable_structure.hpp:77
su2double * ObjFuncSource
Vector containing objective function sensitivity for discrete adjoint.
Definition: variable_structure.hpp:3921
su2double * ObjFuncSource
Vector containing objective function sensitivity for discrete adjoint.
Definition: variable_structure.hpp:3812
su2double * Solution_Min
Min solution for limiter computation.
Definition: variable_structure.hpp:67
su2double * ForceProj_Vector
Vector d.
Definition: variable_structure.hpp:3920
su2double Sensor
Pressure sensor for high order central scheme.
Definition: variable_structure.hpp:75
su2double * WindGustDer
Wind gust value.
Definition: variable_structure.hpp:3055
Main class for defining the variables on the FEA boundaries for FSI applications. ...
Definition: variable_structure.hpp:2583
In-Line subroutines of the variable_structure.hpp file.
bool Non_Physical
Non-physical points in the solution (force first order).
Definition: variable_structure.hpp:61
virtual bool SetPrimVar(CConfig *config)
A virtual member.
Definition: variable_structure.inl:310
double GetSecondary(const su2double &data)
Get the secondary value of the datatype (needs to be implemented for each new type).
Definition: codi_forward_structure.inl:42
su2double Velocity2
Square of the velocity vector.
Definition: variable_structure.hpp:3052
su2double ** Traction
Stress tensor.
Definition: variable_structure.hpp:2585
su2double Precond_Beta
Low Mach number preconditioner value, Beta.
Definition: variable_structure.hpp:3053
su2double * Solution_Max
Max solution for limiter computation.
Definition: variable_structure.hpp:66
su2double ** Gradient_Primitive
Gradient of the primitive variables (T, vx, vy, vz, P, rho).
Definition: variable_structure.hpp:3060
su2double * Secondary
Primitive variables (T, vx, vy, vz, P, rho, h, c) in compressible flows.
Definition: variable_structure.hpp:2656
unsigned short nSecondaryVarGrad
Number of variables of the problem, note that this variable cannnot be static, it is possible to have...
Definition: variable_structure.hpp:87
su2double Precond_Beta
Low Mach number preconditioner value, Beta.
Definition: variable_structure.hpp:2644
su2double AuxVar
Auxiliar variable for gradient computation.
Definition: variable_structure.hpp:68
su2double * Limiter_Primitive
Limiter of the primitive variables (T, vx, vy, vz, P, rho).
Definition: variable_structure.hpp:3061
Main class for defining the variables of the turbulence model.
Definition: variable_structure.hpp:3691
Main class for defining the variables of the potential solver.
Definition: variable_structure.hpp:4219
void SetSecondary(su2double &data, const double &val)
Set the secondary value of the datatype (needs to be implemented for each new type).
Definition: codi_forward_structure.inl:40
su2double * Solution_Pred_Old
Predictor of the solution at time n for FSI purposes.
Definition: variable_structure.hpp:2212
su2double * Solution_Direct
Direct solution container for use in the adjoint wave solver.
Definition: variable_structure.hpp:2097
Main class for defining the variables of the adjoint Navier-Stokes solver.
Definition: variable_structure.hpp:4025
Main class for defining the variables of the incompressible Navier-Stokes solver. ...
Definition: variable_structure.hpp:3452
Main class for defining the variables of the compressible Navier-Stokes solver.
Definition: variable_structure.hpp:3288
static unsigned short nDim
Number of dimension of the problem.
Definition: variable_structure.hpp:80
Main class for defining the variables of the turbulence model.
Definition: variable_structure.hpp:3744
su2double * Limiter
Limiter of the solution of the problem.
Definition: variable_structure.hpp:65
Main class for defining the variables of the turbulence model.
Definition: variable_structure.hpp:3553
su2double Max_Lambda_Visc
Maximun viscous eingenvalue.
Definition: variable_structure.hpp:71
su2double * Psi
Vector of the adjoint variables.
Definition: variable_structure.hpp:3810
su2double * FlowTraction
Traction from the fluid field.
Definition: variable_structure.hpp:2194
su2double * Solution_Vel_time_n
Velocity of the nodes at time n.
Definition: variable_structure.hpp:2206
su2double * Grad_AuxVar
Gradient of the auxiliar variable.
Definition: variable_structure.hpp:69
su2double ** Gradient_Primitive
Gradient of the primitive variables (T, vx, vy, vz, P, rho).
Definition: variable_structure.hpp:2651
Main class for defining the variables of a baseline solution from a restart file (for output)...
Definition: variable_structure.hpp:2021
su2double ** Gradient
Gradient of the solution of the problem.
Definition: variable_structure.hpp:64
virtual su2double GetCrossDiff(void)
Get the value of the cross diffusion of tke and omega.
Definition: variable_structure.hpp:1655
su2double * Residual_Ext_Surf
Term of the residual due to external forces.
Definition: variable_structure.hpp:2198
Main class for defining the variables of the adjoint Euler solver.
Definition: variable_structure.hpp:3808
su2double * Stress
Stress tensor.
Definition: variable_structure.hpp:2193
su2double * Limiter_Primitive
Limiter of the primitive variables (T, vx, vy, vz, P, rho).
Definition: variable_structure.hpp:2652
Main class for defining the variables of the adjoint solver.
Definition: variable_structure.hpp:4249
su2double * EddyViscSens
Eddy Viscosity Sensitivity.
Definition: variable_structure.hpp:4176
Main class for defining the variables of the incompressible Euler solver.
Definition: variable_structure.hpp:3050
su2double VonMises_Stress
Von Mises stress.
Definition: variable_structure.hpp:2202
su2double * dmuT_dUTvar
Sensitivity of eddy viscosity to mean flow and turbulence vars.
Definition: variable_structure.hpp:4171
su2double * Solution_Old
Old solution of the problem R-K.
Definition: variable_structure.hpp:59
su2double * Solution_time_n
Displacement at the nodes at time n.
Definition: variable_structure.hpp:2204
Main class for defining the problem; basically this class reads the configuration file...
Definition: config_structure.hpp:68
unsigned short nPrimVarGrad
Number of variables of the problem, note that this variable cannnot be static, it is possible to have...
Definition: variable_structure.hpp:84
su2double * Solution_time_n1
Solution of the problem at time n-1 for dual-time stepping technique.
Definition: variable_structure.hpp:62
Main class for defining the variables of the adjoint incompressible Navier-Stokes solver...
Definition: variable_structure.hpp:4097
su2double * Residual_Ext_Surf_n
Term of the residual due to external forces at time n.
Definition: variable_structure.hpp:2199
Main class for defining the variables of the wave equation solver.
Definition: variable_structure.hpp:2095