Documentation 6b54b78464
Loading...
Searching...
No Matches
CHeatSolver.hpp
Go to the documentation of this file.
1/*!
2 * \file CHeatSolver.hpp
3 * \brief Headers of the CHeatSolver class
4 * \author F. Palacios, T. Economon
5 * \version 8.5.0 "Harrier"
6 *
7 * SU2 Project Website: https://su2code.github.io
8 *
9 * The SU2 Project is maintained by the SU2 Foundation
10 * (http://su2foundation.org)
11 *
12 * Copyright 2012-2026, SU2 Contributors (cf. AUTHORS.md)
13 *
14 * SU2 is free software; you can redistribute it and/or
15 * modify it under the terms of the GNU Lesser General Public
16 * License as published by the Free Software Foundation; either
17 * version 2.1 of the License, or (at your option) any later version.
18 *
19 * SU2 is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22 * Lesser General Public License for more details.
23 *
24 * You should have received a copy of the GNU Lesser General Public
25 * License along with SU2. If not, see <http://www.gnu.org/licenses/>.
26 */
27
28#pragma once
29
30#include "CScalarSolver.hpp"
31#include "../variables/CHeatVariable.hpp"
32
33/*!
34 * \class CHeatSolver
35 * \brief Main class for defining the finite-volume heat solver.
36 * \author O. Burghardt
37 * \version 8.5.0 "Harrier"
38 */
39class CHeatSolver final : public CScalarSolver<CHeatVariable> {
40protected:
41 static constexpr size_t MAXNDIM = 3; /*!< \brief Max number of space dimensions, used in some static arrays. */
42 static constexpr size_t MAXNVAR = 1; /*!< \brief Max number of variables, for static arrays. */
43
44 const bool flow; /*!< \brief Use solver as a scalar transport equation of Temperature for the inc solver. */
45
47
48 vector<vector<su2double>> HeatFlux;
49 vector<su2double> HeatFlux_per_Marker;
52 vector<su2double> AverageT_per_Marker;
55 vector<su2double> Surface_Areas;
58 vector<su2activematrix> ConjugateVar;
59
60 /*!
61 * \brief Applies an isothermal condition to a vertex of a marker.
62 */
63 void IsothermalBoundaryCondition(CGeometry *geometry, CSolver *flow_solver, const CConfig *config,
64 unsigned short iMarker, unsigned long iVertex, const su2double& temperature) {
65
66 const auto iPoint = geometry->vertex[iMarker][iVertex]->GetNode();
67 if (!geometry->nodes->GetDomain(iPoint)) return;
68
69 const bool implicit = config->GetKind_TimeIntScheme() == EULER_IMPLICIT;
70 const su2double const_diffusivity = config->GetThermalDiffusivity();
71
72 const auto Point_Normal = geometry->vertex[iMarker][iVertex]->GetNormal_Neighbor();
73
74 const auto* Normal = geometry->vertex[iMarker][iVertex]->GetNormal();
75 const su2double Area = GeometryToolbox::Norm(nDim, Normal);
76
77 const auto* Coord_i = geometry->nodes->GetCoord(iPoint);
78 const auto* Coord_j = geometry->nodes->GetCoord(Point_Normal);
79 const su2double dist_ij = GeometryToolbox::Distance(nDim, Coord_i, Coord_j);
80
81 const su2double dTdn = -(nodes->GetTemperature(Point_Normal) - temperature) / dist_ij;
82
83 su2double thermal_diffusivity = const_diffusivity;
84 if (flow) {
85 thermal_diffusivity =
86 flow_solver->GetNodes()->GetThermalConductivity(iPoint) / flow_solver->GetNodes()->GetSpecificHeatCp(iPoint);
87 }
88 LinSysRes(iPoint, 0) -= thermal_diffusivity * dTdn * Area;
89
90 if (implicit) {
91 su2double Jacobian_i[1][1] = {{-thermal_diffusivity / dist_ij * Area}};
93 }
94 }
95
96public:
97
98 /*!
99 * \brief Constructor of the class.
100 */
101 CHeatSolver(CGeometry *geometry, CConfig *config, const CSolver* flow_solver, unsigned short iMesh);
102
103 /*!
104 * \brief Restart residual and compute gradients.
105 * \param[in] geometry - Geometrical definition of the problem.
106 * \param[in] solver_container - Container vector with all the solutions.
107 * \param[in] config - Definition of the particular problem.
108 * \param[in] iMesh - Index of the mesh in multigrid computations.
109 * \param[in] iRKStep - Current step of the Runge-Kutta iteration.
110 * \param[in] RunTime_EqSystem - System of equations which is going to be solved.
111 * \param[in] Output - boolean to determine whether to print output.
112 */
113 void Preprocessing(CGeometry *geometry,
114 CSolver **solver_container,
115 CConfig *config,
116 unsigned short iMesh,
117 unsigned short iRKStep,
118 unsigned short RunTime_EqSystem,
119 bool Output) override;
120
121 /*!
122 * \brief Load a solution from a restart file.
123 * \param[in] geometry - Geometrical definition of the problem.
124 * \param[in] solver - Container vector with all of the solvers.
125 * \param[in] config - Definition of the particular problem.
126 * \param[in] val_iter - Current external iteration number.
127 * \param[in] val_update_geo - Flag for updating coords and grid velocity.
128 */
129 void LoadRestart(CGeometry **geometry,
130 CSolver ***solver,
131 CConfig *config,
132 int val_iter,
133 bool val_update_geo) override;
134
135 /*!
136 * \brief Compute the spatial integration using a upwind scheme.
137 * \param[in] geometry - Geometrical definition of the problem.
138 * \param[in] solver_container - Container vector with all the solutions.
139 * \param[in] numerics_container - Description of the numerical method.
140 * \param[in] config - Definition of the particular problem.
141 * \param[in] iMesh - Index of the mesh in multigrid computations.
142 */
143 void Upwind_Residual(CGeometry *geometry,
144 CSolver **solver_container,
145 CNumerics **numerics_container,
146 CConfig *config,
147 unsigned short iMesh) override;
148
149 /*!
150 * \brief Resolve the compile-time parameters of CScalarFlux_Heat and run one of this solver's
151 * boundaries through the shared boundary flux pass.
152 * \param[in] opt - Flags of the boundary, from one of ScalarFluxOptions' named constructors.
153 */
154 void BoundaryFlux(CGeometry* geometry, CSolver** solver_container, CConfig* config, const ScalarFluxOptions& opt,
155 unsigned short val_marker);
156
157 /*!
158 * \brief Diffusion for solid conduction, called unconditionally unlike Upwind_Residual. A no-op
159 * for a fluid zone, where diffusion was already computed together with convection.
160 */
161 void Viscous_Residual(CGeometry *geometry,
162 CSolver **solver_container,
163 CNumerics **numerics_container,
164 CConfig *config,
165 unsigned short iMesh,
166 unsigned short iRKStep) override;
167
168 /*!
169 * \brief Source term computation.
170 * \param[in] geometry - Geometrical definition of the problem.
171 * \param[in] solver_container - Container vector with all the solutions.
172 * \param[in] numerics_container - Description of the numerical method.
173 * \param[in] config - Definition of the particular problem.
174 * \param[in] iMesh - Index of the mesh in multigrid computations.
175 */
176 void Source_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container,
177 CConfig *config, unsigned short iMesh) override ;
178
179
180 void Set_Heatflux_Areas(CGeometry *geometry, CConfig *config) override;
181
182 /*!
183 * \brief Impose the Navier-Stokes boundary condition (strong).
184 * \param[in] geometry - Geometrical definition of the problem.
185 * \param[in] solver_container - Container vector with all the solutions.
186 * \param[in] conv_numerics - Description of the numerical method.
187 * \param[in] visc_numerics - Description of the numerical method.
188 * \param[in] config - Definition of the particular problem.
189 * \param[in] val_marker - Surface marker where the boundary condition is applied.
190 */
191 void BC_Isothermal_Wall(CGeometry *geometry,
192 CSolver **solver_container,
193 CNumerics *conv_numerics,
194 CNumerics *visc_numerics,
195 CConfig *config,
196 unsigned short val_marker) override;
197
198 /*!
199 * \brief Impose a constant heat-flux condition at the wall.
200 * \param[in] geometry - Geometrical definition of the problem.
201 * \param[in] solver_container - Container vector with all the solutions.
202 * \param[in] conv_numerics - Description of the numerical method.
203 * \param[in] visc_numerics - Description of the numerical method.
204 * \param[in] config - Definition of the particular problem.
205 * \param[in] val_marker - Surface marker where the boundary condition is applied.
206 */
207 void BC_HeatFlux_Wall(CGeometry *geometry,
208 CSolver **solver_container,
209 CNumerics *conv_numerics,
210 CNumerics *visc_numerics,
211 CConfig *config,
212 unsigned short val_marker) override;
213
214 /*!
215 * \brief Impose the inlet boundary condition.
216 * \param[in] geometry - Geometrical definition of the problem.
217 * \param[in] solver_container - Container vector with all the solutions.
218 * \param[in] conv_numerics - Description of the numerical method.
219 * \param[in] visc_numerics - Description of the numerical method.
220 * \param[in] config - Definition of the particular problem.
221 * \param[in] val_marker - Surface marker where the boundary condition is applied.
222 */
223 void BC_Inlet(CGeometry *geometry,
224 CSolver **solver_container,
225 CNumerics *conv_numerics,
226 CNumerics *visc_numerics,
227 CConfig *config,
228 unsigned short val_marker) override;
229 /*!
230 * \brief Impose the outlet boundary condition.
231 * \param[in] geometry - Geometrical definition of the problem.
232 * \param[in] solver_container - Container vector with all the solutions.
233 * \param[in] conv_numerics - Description of the numerical method.
234 * \param[in] visc_numerics - Description of the numerical method.
235 * \param[in] config - Definition of the particular problem.
236 * \param[in] val_marker - Surface marker where the boundary condition is applied.
237 */
238 void BC_Outlet(CGeometry *geometry,
239 CSolver **solver_container,
240 CNumerics *conv_numerics,
241 CNumerics *visc_numerics,
242 CConfig *config,
243 unsigned short val_marker) override;
244
245 /*!
246 * \brief Impose the far-field boundary condition.
247 * \param[in] geometry - Geometrical definition of the problem.
248 * \param[in] solver_container - Container vector with all the solutions.
249 * \param[in] conv_numerics - Description of the numerical method.
250 * \param[in] visc_numerics - Description of the numerical method.
251 * \param[in] config - Definition of the particular problem.
252 * \param[in] val_marker - Surface marker where the boundary condition is applied.
253 */
254 void BC_Far_Field(CGeometry *geometry,
255 CSolver **solver_container,
256 CNumerics *conv_numerics,
257 CNumerics *visc_numerics,
258 CConfig *config,
259 unsigned short val_marker) override;
260
261 /*!
262 * \brief Impose the fluid interface (sliding mesh) boundary condition, via the
263 * CScalarFlux_Heat edge kernel.
264 * \param[in] geometry - Geometrical definition of the problem.
265 * \param[in] solver_container - Container vector with all the solutions.
266 * \param[in] conv_numerics - Unused, kept only for the boundary condition dispatch.
267 * \param[in] visc_numerics - Unused, kept only for the boundary condition dispatch.
268 * \param[in] config - Definition of the particular problem.
269 */
270 void BC_Fluid_Interface(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics,
271 CNumerics *visc_numerics, CConfig *config) override;
272
273 /*!
274 * \brief Impose the (received) conjugate heat variables.
275 * \param[in] geometry - Geometrical definition of the problem.
276 * \param[in] solver_container - Container vector with all the solutions.
277 * \param[in] numerics - Description of the numerical method.
278 * \param[in] config - Definition of the particular problem.
279 * \param[in] val_marker - Surface marker where the boundary condition is applied.
280 */
282 CSolver **solver_container,
283 CNumerics *numerics,
284 CConfig *config,
285 unsigned short val_marker) override;
286
287 /*!
288 * \brief Set the conjugate heat variables.
289 * \param[in] val_marker - marker index
290 * \param[in] val_vertex - vertex index
291 * \param[in] pos_var - variable position (in vector of all conjugate heat variables)
292 */
293 inline su2double GetConjugateHeatVariable(unsigned short val_marker,
294 unsigned long val_vertex,
295 unsigned short pos_var) const override {
296 return ConjugateVar[val_marker][val_vertex][pos_var];
297 }
298
299 /*!
300 * \brief Set the conjugate heat variables.
301 * \param[in] val_marker - marker index
302 * \param[in] val_vertex - vertex index
303 * \param[in] pos_var - variable position (in vector of all conjugate heat variables)
304 * \param[in] relaxation factor - relaxation factor for the change of the variables
305 * \param[in] val_var - value of the variable
306 */
307 inline void SetConjugateHeatVariable(unsigned short val_marker,
308 unsigned long val_vertex,
309 unsigned short pos_var,
310 su2double relaxation_factor,
311 su2double val_var) override {
312 ConjugateVar[val_marker][val_vertex][pos_var] = relaxation_factor*val_var + (1.0-relaxation_factor)*ConjugateVar[val_marker][val_vertex][pos_var];
313 }
314
315
316 /*!
317 * \brief Evaluate heat-flux related objectives.
318 * \param[in] geometry - Geometrical definition of the problem.
319 * \param[in] solver_container - Container vector with all the solutions.
320 * \param[in] config - Definition of the particular problem.
321 */
322 void Heat_Fluxes(CGeometry *geometry,
323 CSolver **solver_container,
324 CConfig *config) override;
325
326 /*!
327 * \brief Get value of the heat load (integrated heat flux).
328 * \return Value of the heat load (integrated heat flux).
329 */
330 inline su2double GetTotal_HeatFlux() const override { return Total_HeatFlux; }
331
332 /*!
333 * \brief Get value of the integral-averaged temperature.
334 * \return Value of the integral-averaged temperature.
335 */
336 inline su2double GetTotal_AvgTemperature() const override { return Total_AverageT; }
337
338 /*!
339 * \brief Compute objective output
340 * \param[in] config - Definition of the problem.
341 * \param[in] solver - Container vector with all the solutions.
342 */
343 void Evaluate_ObjFunc(const CConfig *config, CSolver**) override {
344 const auto weight = config->GetWeight_ObjFunc(0);
345
346 switch (config->GetKind_ObjFunc()) {
347 case TOTAL_HEATFLUX:
349 break;
350 case AVG_TEMPERATURE:
352 break;
353 case CUSTOM_OBJFUNC:
355 break;
356 default:
357 Total_ComboObj = 0.0;
358 }
359 }
360
361 /*!
362 * \brief A virtual member.
363 * \param[in] geometry - Geometrical definition of the problem.
364 * \param[in] solver_container - Container vector with all the solutions.
365 * \param[in] config - Definition of the particular problem.
366 * \param[in] iMesh - Index of the mesh in multigrid computations.
367 * \param[in] Iteration - Index of the current iteration.
368 */
369 void SetTime_Step(CGeometry *geometry,
370 CSolver **solver_container,
371 CConfig *config,
372 unsigned short iMesh,
373 unsigned long Iteration) override;
374
375 /*!
376 * \brief Set the initial condition for the FEM structural problem.
377 * \param[in] geometry - Geometrical definition of the problem.
378 * \param[in] solver_container - Container with all the solutions.
379 * \param[in] config - Definition of the particular problem.
380 * \param[in] ExtIter - External iteration.
381 */
382 void SetInitialCondition(CGeometry **geometry,
383 CSolver ***solver_container,
384 CConfig *config,
385 unsigned long TimeIter) override;
386
387 /*!
388 * \brief Set the total residual adding the term that comes from the Dual Time-Stepping Strategy.
389 * \param[in] geometry - Geometric definition of the problem.
390 * \param[in] solver_container - Container vector with all the solutions.
391 * \param[in] config - Definition of the particular problem.
392 * \param[in] iRKStep - Current step of the Runge-Kutta iteration.
393 * \param[in] iMesh - Index of the mesh in multigrid computations.
394 * \param[in] RunTime_EqSystem - System of equations which is going to be solved.
395 */
396 void SetResidual_DualTime(CGeometry *geometry,
397 CSolver **solver_container,
398 CConfig *config,
399 unsigned short iRKStep,
400 unsigned short iMesh,
401 unsigned short RunTime_EqSystem) override;
402
403 /*!
404 * \brief Get the heat flux.
405 * \param[in] val_marker - Surface marker where the coefficient is computed.
406 * \param[in] val_vertex - Vertex of the marker <i>val_marker</i> where the coefficient is evaluated.
407 * \return Value of the heat flux.
408 */
409 inline su2double GetHeatFlux(unsigned short val_marker, unsigned long val_vertex) const override {
410 return HeatFlux[val_marker][val_vertex];
411 }
412};
Headers of the CScalarSolver class.
Main class for defining the problem; basically this class reads the configuration file,...
Definition CConfig.hpp:64
su2double GetThermalDiffusivity(void) const
Get the value of the thermal diffusivity for solids.
Definition CConfig.hpp:1936
su2double GetWeight_ObjFunc(unsigned short val_obj) const
Get the weight of objective function. There are several options: Drag coefficient,...
Definition CConfig.hpp:5615
unsigned short GetKind_ObjFunc(unsigned short val_obj=0) const
Get the kind of objective function. There are several options: Drag coefficient, Lift coefficient,...
Definition CConfig.hpp:5606
unsigned short GetKind_TimeIntScheme(void) const
Get the kind of time integration method.
Definition CConfig.hpp:4732
Parent class for defining the geometry of the problem (complete geometry, multigrid agglomerated geom...
Definition CGeometry.hpp:75
CPoint * nodes
Node vector (dual grid information).
Definition CGeometry.hpp:253
CVertex *** vertex
Boundary Vertex vector (dual grid information).
Definition CGeometry.hpp:255
Main class for defining the finite-volume heat solver.
Definition CHeatSolver.hpp:39
void LoadRestart(CGeometry **geometry, CSolver ***solver, CConfig *config, int val_iter, bool val_update_geo) override
Load a solution from a restart file.
Definition CHeatSolver.cpp:205
void SetConjugateHeatVariable(unsigned short val_marker, unsigned long val_vertex, unsigned short pos_var, su2double relaxation_factor, su2double val_var) override
Set the conjugate heat variables.
Definition CHeatSolver.hpp:307
su2double GetTotal_HeatFlux() const override
Get value of the heat load (integrated heat flux).
Definition CHeatSolver.hpp:330
su2double Total_HeatFlux_Areas_Monitor
Definition CHeatSolver.hpp:57
void SetInitialCondition(CGeometry **geometry, CSolver ***solver_container, CConfig *config, unsigned long TimeIter) override
Set the initial condition for the FEM structural problem.
Definition CHeatSolver.cpp:927
su2double GetTotal_AvgTemperature() const override
Get value of the integral-averaged temperature.
Definition CHeatSolver.hpp:336
void Viscous_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep) override
Diffusion for solid conduction, called unconditionally unlike Upwind_Residual. A no-op for a fluid zo...
Definition CHeatSolver.cpp:316
void SetResidual_DualTime(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iRKStep, unsigned short iMesh, unsigned short RunTime_EqSystem) override
Set the total residual adding the term that comes from the Dual Time-Stepping Strategy.
Definition CHeatSolver.cpp:975
su2double Total_HeatFlux_Areas
Definition CHeatSolver.hpp:56
void BC_Inlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) override
Impose the inlet boundary condition.
Definition CHeatSolver.cpp:452
const bool flow
Use solver as a scalar transport equation of Temperature for the inc solver.
Definition CHeatSolver.hpp:44
void BC_Far_Field(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) override
Impose the far-field boundary condition.
Definition CHeatSolver.cpp:500
void Heat_Fluxes(CGeometry *geometry, CSolver **solver_container, CConfig *config) override
Evaluate heat-flux related objectives.
Definition CHeatSolver.cpp:602
void SetTime_Step(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned long Iteration) override
A virtual member.
Definition CHeatSolver.cpp:716
void Source_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh) override
Source term computation.
Definition CHeatSolver.cpp:331
void BC_ConjugateHeat_Interface(CGeometry *geometry, CSolver **solver_container, CNumerics *numerics, CConfig *config, unsigned short val_marker) override
Impose the (received) conjugate heat variables.
Definition CHeatSolver.cpp:537
void BC_Fluid_Interface(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config) override
Impose the fluid interface (sliding mesh) boundary condition, via the CScalarFlux_Heat edge kernel.
Definition CHeatSolver.cpp:518
su2double GetHeatFlux(unsigned short val_marker, unsigned long val_vertex) const override
Get the heat flux.
Definition CHeatSolver.hpp:409
static constexpr size_t MAXNVAR
Max number of variables, for static arrays.
Definition CHeatSolver.hpp:42
su2double Total_HeatFlux
Definition CHeatSolver.hpp:50
void Upwind_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh) override
Compute the spatial integration using a upwind scheme.
Definition CHeatSolver.cpp:295
su2double Global_Delta_Time
Definition CHeatSolver.hpp:46
void Preprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep, unsigned short RunTime_EqSystem, bool Output) override
Restart residual and compute gradients.
Definition CHeatSolver.cpp:185
void Evaluate_ObjFunc(const CConfig *config, CSolver **) override
Compute objective output.
Definition CHeatSolver.hpp:343
void BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) override
Impose the Navier-Stokes boundary condition (strong).
Definition CHeatSolver.cpp:406
static constexpr size_t MAXNDIM
Max number of space dimensions, used in some static arrays.
Definition CHeatSolver.hpp:41
su2double AllBound_AverageT
Definition CHeatSolver.hpp:54
vector< vector< su2double > > HeatFlux
Definition CHeatSolver.hpp:48
void Set_Heatflux_Areas(CGeometry *geometry, CConfig *config) override
A virtual member.
Definition CHeatSolver.cpp:346
su2double Total_AverageT
Definition CHeatSolver.hpp:53
su2double AllBound_HeatFlux
Definition CHeatSolver.hpp:51
vector< su2double > AverageT_per_Marker
Definition CHeatSolver.hpp:52
su2double Global_Delta_UnstTimeND
Definition CHeatSolver.hpp:46
vector< su2double > HeatFlux_per_Marker
Definition CHeatSolver.hpp:49
void BC_Outlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) override
Impose the outlet boundary condition.
Definition CHeatSolver.cpp:480
void BoundaryFlux(CGeometry *geometry, CSolver **solver_container, CConfig *config, const ScalarFluxOptions &opt, unsigned short val_marker)
Resolve the compile-time parameters of CScalarFlux_Heat and run one of this solver's boundaries throu...
Definition CHeatSolver.cpp:309
void BC_HeatFlux_Wall(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) override
Impose a constant heat-flux condition at the wall.
Definition CHeatSolver.cpp:424
su2double GetConjugateHeatVariable(unsigned short val_marker, unsigned long val_vertex, unsigned short pos_var) const override
Set the conjugate heat variables.
Definition CHeatSolver.hpp:293
void IsothermalBoundaryCondition(CGeometry *geometry, CSolver *flow_solver, const CConfig *config, unsigned short iMarker, unsigned long iVertex, const su2double &temperature)
Applies an isothermal condition to a vertex of a marker.
Definition CHeatSolver.hpp:63
vector< su2double > Surface_Areas
Definition CHeatSolver.hpp:55
vector< su2activematrix > ConjugateVar
Definition CHeatSolver.hpp:58
su2double GetTemperature(unsigned long iPoint) const final
Get the temperature of the point.
Definition CHeatVariable.hpp:56
Class for defining the numerical methods.
Definition CNumerics.hpp:48
bool GetDomain(unsigned long iPoint) const
For parallel computation, its indicates if a point must be computed or not.
Definition CPoint.hpp:423
su2double GetCoord(unsigned long iPoint, unsigned long iDim) const
Get the coordinates dor the control volume.
Definition CPoint.hpp:158
Main class for defining a scalar solver.
Definition CScalarSolver.hpp:59
CHeatVariable * nodes
The highest level in the variable hierarchy this solver can safely use.
Definition CScalarSolver.hpp:112
Definition CSolver.hpp:71
CSysMatrix< su2mixedfloat > Jacobian
Complete sparse Jacobian structure for implicit computations.
Definition CSolver.hpp:201
unsigned short nDim
Number of dimensions of the problem.
Definition CSolver.hpp:90
su2double ** Jacobian_i
Auxiliary matrices for storing point to point Jacobians at point i.
Definition CSolver.hpp:128
su2double Total_Custom_ObjFunc
Total custom objective function.
Definition CSolver.hpp:107
CSysVector< su2double > LinSysRes
vector to store iterative residual of implicit linear system.
Definition CSolver.hpp:200
su2double Total_ComboObj
Total 'combo' objective for all monitored boundaries.
Definition CSolver.hpp:108
CVariable * GetNodes()
Allow outside access to the nodes of the solver, containing conservatives, primitives,...
Definition CSolver.hpp:229
void SubtractBlock2Diag(unsigned long block_i, const OtherType &val_block)
Short-hand to AddBlock2Diag with alpha = -1, i.e. subtracts from the current diagonal.
Definition CSysMatrix.hpp:1226
virtual su2double GetThermalConductivity(unsigned long iPoint) const
A virtual member.
Definition CVariable.hpp:1166
virtual su2double GetSpecificHeatCp(unsigned long iPoint) const
A virtual member.
Definition CVariable.hpp:1180
void GetNormal(su2double *val_normal) const override
Copy the the normal vector of a face.
Definition CVertex.hpp:94
unsigned long GetNode() const
Get the node of the vertex.
Definition CVertex.hpp:70
unsigned long GetNormal_Neighbor() const
Get the value of the closest neighbor.
Definition CVertex.hpp:322
passivedouble su2double
Definition code_config.hpp:181
T Distance(Int nDim, const T *a, const U *b)
Definition geometry_toolbox.hpp:46
T Norm(Int nDim, const T *a)
Definition geometry_toolbox.hpp:79
@ EULER_IMPLICIT
Implicit Euler time integration definition.
Definition option_structure.hpp:1711
@ TOTAL_HEATFLUX
Total heat flux.
Definition option_structure.hpp:2231
@ AVG_TEMPERATURE
Total averaged temperature.
Definition option_structure.hpp:2233
@ CUSTOM_OBJFUNC
Custom objective function definition.
Definition option_structure.hpp:2258
Loop invariant flags for a scalar edge flux, built once outside the edge loop so the compiler can uns...
Definition scalar_edge_flux.hpp:55