SU2
integration_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 "solver_structure.hpp"
45 #include "../../Common/include/geometry_structure.hpp"
46 #include "../../Common/include/config_structure.hpp"
47 
48 using namespace std;
49 
57 class CIntegration {
58 protected:
59  su2double Cauchy_Value,
60  Cauchy_Func;
61  unsigned short Cauchy_Counter;
62  su2double *Cauchy_Serie;
63  su2double Old_Func,
64  New_Func;
65  bool Convergence,
66  Convergence_FSI,
68  su2double InitResidual;
70 public:
71 
75  CIntegration(CConfig *config);
76 
80  virtual ~CIntegration(void);
81 
92  void Space_Integration(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics, CConfig *config,
93  unsigned short iMesh, unsigned short iRKStep, unsigned short RunTime_EqSystem);
94 
105  void Space_Integration_FEM(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics, CConfig *config,
106  unsigned short RunTime_EqSystem, unsigned long Iteration);
107 
117  void Time_Integration(CGeometry *geometry, CSolver **solver_container, CConfig *config,
118  unsigned short iRKStep, unsigned short RunTime_EqSystem, unsigned long Iteration);
119 
129  void Time_Integration_FEM(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics, CConfig *config,
130  unsigned short RunTime_EqSystem, unsigned long Iteration);
131 
140  void Adjoint_Setup(CGeometry ***geometry, CSolver ****solver_container, CConfig **config,
141  unsigned short RunTime_EqSystem, unsigned long Iteration, unsigned short iZone);
142 
150  void Convergence_Monitoring(CGeometry *geometry, CConfig *config,
151  unsigned long Iteration, su2double monitor, unsigned short iMesh);
152 
161  void Convergence_Monitoring_FEM(CGeometry *geometry, CConfig *config, CSolver *solver, unsigned long iFSIIter);
162 
163 
171  void Convergence_Monitoring_FSI(CGeometry *fea_geometry, CConfig *fea_config, CSolver *fea_solver, unsigned long iFSIIter);
172 
173 
178  su2double GetCauchy_Value(void);
179 
185  bool GetConvergence(void);
186 
192  bool GetConvergence_FSI(void);
193 
199  void SetConvergence(bool value);
200 
201 
207  void SetConvergence_FSI(bool valueFSI);
208 
209 
215  bool GetConvergence_FullMG(void);
216 
223  void SetDualTime_Solver(CGeometry *geometry, CSolver *solver, CConfig *config, unsigned short iMesh);
224 
231  void SetStructural_Solver(CGeometry *geometry, CSolver *solver, CConfig *config, unsigned short iMesh);
232 
239  void SetFEM_StructuralSolver(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh);
240 
250  virtual void MultiGrid_Iteration(CGeometry ***geometry, CSolver ****solver_container, CNumerics *****numerics_container,
251  CConfig **config, unsigned short RunTime_EqSystem, unsigned long Iteration, unsigned short iZone);
252 
264  virtual void MultiGrid_Cycle(CGeometry ***geometry, CSolver ****solver_container, CNumerics *****numerics_container,
265  CConfig **config, unsigned short iMesh, unsigned short mu, unsigned short RunTime_EqSystem,
266  unsigned long Iteration, unsigned short iZone);
267 
277  virtual void NonDimensional_Parameters(CGeometry **geometry, CSolver ***solver_container, CNumerics ****numerics_container,
278  CConfig *config, unsigned short FinestMesh, unsigned short RunTime_EqSystem, unsigned long Iteration,
279  su2double *monitor);
280 
287  virtual void SetProlongated_Correction(CSolver *sol_fine, CGeometry *geo_fine, CConfig *config, unsigned short iMesh);
288 
298  virtual void SetProlongated_Solution(unsigned short RunTime_EqSystem, CSolver *sol_fine, CSolver *sol_coarse,
299  CGeometry *geo_fine, CGeometry *geo_coarse, CConfig *config);
300 
309  virtual void SetRestricted_Residual(CSolver *sol_fine, CSolver *sol_coarse, CGeometry *geo_fine,
310  CGeometry *geo_coarse, CConfig *config);
311 
323  virtual void SetRestricted_Solution(unsigned short RunTime_EqSystem, CSolver *sol_fine, CSolver *sol_coarse, CGeometry *geo_fine, CGeometry *geo_coarse, CConfig *config);
324 
336  virtual void SetRestricted_EddyVisc(unsigned short RunTime_EqSystem, CSolver *sol_fine, CSolver *sol_coarse, CGeometry *geo_fine, CGeometry *geo_coarse, CConfig *config);
337 
347  virtual void SetRestricted_Gradient(unsigned short RunTime_EqSystem, CSolver *sol_fine, CSolver *sol_coarse,
348  CGeometry *geo_fine, CGeometry *geo_coarse, CConfig *config);
349 
355  virtual void SetResidual_Term(CGeometry *geometry, CSolver *flow);
356 
365  virtual void SetForcing_Term(CSolver *sol_fine, CSolver *sol_coarse, CGeometry *geo_fine, CGeometry *geo_coarse,
366  CConfig *config, unsigned short iMesh);
367 
377  virtual void SingleGrid_Iteration(CGeometry ***geometry, CSolver ****solver_container, CNumerics *****numerics_container,
378  CConfig **config, unsigned short RunTime_EqSystem, unsigned long Iteration, unsigned short iZone);
379 
380 
390  virtual void Structural_Iteration(CGeometry ***geometry, CSolver ****solver_container, CNumerics *****numerics_container,
391  CConfig **config, unsigned short RunTime_EqSystem, unsigned long Iteration, unsigned short iZone);
392 
393 
403  virtual void SetPotential_Solver(CGeometry ***geometry, CSolver ****solver_container, CNumerics *****numerics_container,
404  CConfig **config, unsigned short RunTime_EqSystem, unsigned short iMesh, unsigned short iZone);
405 
415  virtual void Smooth_Solution(unsigned short RunTime_EqSystem, CSolver *solver, CGeometry *geometry,
416  unsigned short val_nSmooth, su2double val_smooth_coeff, CConfig *config);
417 
418 };
419 
427 protected:
428 
429 public:
430 
436 
440  ~CMultiGridIntegration(void);
441 
451  void MultiGrid_Iteration(CGeometry ***geometry, CSolver ****solver_container, CNumerics *****numerics_container,
452  CConfig **config, unsigned short RunTime_EqSystem, unsigned long Iteration, unsigned short iZone);
453 
465  void MultiGrid_Cycle(CGeometry ***geometry, CSolver ****solver_container, CNumerics *****numerics_container,
466  CConfig **config, unsigned short iMesh, unsigned short mu, unsigned short RunTime_EqSystem,
467  unsigned long Iteration, unsigned short iZone);
468 
478  void NonDimensional_Parameters(CGeometry **geometry, CSolver ***solver_container, CNumerics ****numerics_container,
479  CConfig *config, unsigned short FinestMesh, unsigned short RunTime_EqSystem, unsigned long Iteration,
480  su2double *monitor);
481 
491  void SetProlongated_Solution(unsigned short RunTime_EqSystem, CSolver *sol_fine, CSolver *sol_coarse,
492  CGeometry *geo_fine, CGeometry *geo_coarse, CConfig *config);
493 
502  void GetProlongated_Correction(unsigned short RunTime_EqSystem, CSolver *sol_fine, CSolver *sol_coarse, CGeometry *geo_fine,
503  CGeometry *geo_coarse, CConfig *config);
504 
514  void SmoothProlongated_Correction(unsigned short RunTime_EqSystem, CSolver *solver, CGeometry *geometry,
515  unsigned short val_nSmooth, su2double val_smooth_coeff, CConfig *config);
516 
526  void Smooth_Solution(unsigned short RunTime_EqSystem, CSolver *solver, CGeometry *geometry,
527  unsigned short val_nSmooth, su2double val_smooth_coeff, CConfig *config);
528 
535  void SetProlongated_Correction(CSolver *sol_fine, CGeometry *geo_fine, CConfig *config, unsigned short iMesh);
536 
545  void SetRestricted_Residual(CSolver *sol_fine, CSolver *sol_coarse, CGeometry *geo_fine,
546  CGeometry *geo_coarse, CConfig *config);
547 
559  void SetRestricted_Solution(unsigned short RunTime_EqSystem, CSolver *sol_fine, CSolver *sol_coarse, CGeometry *geo_fine, CGeometry *geo_coarse, CConfig *config);
560 
570  void SetRestricted_Gradient(unsigned short RunTime_EqSystem, CSolver *sol_fine, CSolver *sol_coarse,
571  CGeometry *geo_fine, CGeometry *geo_coarse, CConfig *config);
572 
578  void SetResidual_Term(CGeometry *geometry, CSolver *flow);
579 
588  void SetForcing_Term(CSolver *sol_fine, CSolver *sol_coarse, CGeometry *geo_fine, CGeometry *geo_coarse,
589  CConfig *config, unsigned short iMesh);
590 };
591 
599 public:
600 
606 
610  ~CSingleGridIntegration(void);
611 
621  void SingleGrid_Iteration(CGeometry ***geometry, CSolver ****solver_container, CNumerics *****numerics_container,
622  CConfig **config, unsigned short RunTime_EqSystem, unsigned long Iteration, unsigned short iZone);
623 
635  void SetRestricted_Solution(unsigned short RunTime_EqSystem, CSolver *sol_fine, CSolver *sol_coarse, CGeometry *geo_fine, CGeometry *geo_coarse, CConfig *config);
636 
648  void SetRestricted_EddyVisc(unsigned short RunTime_EqSystem, CSolver *sol_fine, CSolver *sol_coarse, CGeometry *geo_fine, CGeometry *geo_coarse, CConfig *config);
649 
650 };
651 
652 
660 public:
661 
667 
671  ~CStructuralIntegration(void);
672 
682  void Structural_Iteration(CGeometry ***geometry, CSolver ****solver_container, CNumerics *****numerics_container,
683  CConfig **config, unsigned short RunTime_EqSystem, unsigned long Iteration, unsigned short iZone);
684 
685 };
686 
687 #include "integration_structure.inl"
su2double Cauchy_Value
Summed value of the convergence indicator.
Definition: integration_structure.hpp:59
Parent class for defining the geometry of the problem (complete geometry, multigrid agglomerated geom...
Definition: geometry_structure.hpp:72
su2double Old_Func
Old value of the objective function (the function which is monitored).
Definition: integration_structure.hpp:63
Class for doing the numerical integration using a multigrid method.
Definition: integration_structure.hpp:426
su2double * Cauchy_Serie
Complete Cauchy serial.
Definition: integration_structure.hpp:62
Main class for defining the PDE solution, it requires a child class for each particular solver (Euler...
Definition: solver_structure.hpp:71
In-Line subroutines of the integration_structure.hpp file.
Main class for doing the space integration, time integration, and monitoring of a system of Partial D...
Definition: integration_structure.hpp:57
Class for defining the numerical methods.
Definition: numerics_structure.hpp:59
su2double InitResidual
Initial value of the residual to evaluate the convergence level.
Definition: integration_structure.hpp:68
bool Convergence_FullMG
To indicate if the Full Multigrid has converged and it is necessary to add a new level.
Definition: integration_structure.hpp:65
Class for doing the numerical integration of the turbulence model.
Definition: integration_structure.hpp:598
Class for doing the numerical integration of the structural model.
Definition: integration_structure.hpp:659
unsigned short Cauchy_Counter
Number of elements of the Cauchy serial.
Definition: integration_structure.hpp:61
Headers of the main subroutines for solving partial differential equations. The subroutines and funct...
Main class for defining the problem; basically this class reads the configuration file...
Definition: config_structure.hpp:68