SU2
output_structure.hpp
Go to the documentation of this file.
1 
35 #pragma once
36 
37 #include "../../Common/include/mpi_structure.hpp"
38 
39 #ifdef HAVE_CGNS
40  #include "cgnslib.h"
41 #endif
42 #ifdef HAVE_TECIO
43  #include "TECIO.h"
44 #endif
45 #include <fstream>
46 #include <cmath>
47 #include <time.h>
48 #include <fstream>
49 
50 #include "solver_structure.hpp"
52 #include "../../Common/include/geometry_structure.hpp"
53 #include "../../Common/include/config_structure.hpp"
54 
55 using namespace std;
56 
64 class COutput {
65 
66  unsigned long nGlobal_Poin; // Global number of nodes with halos
67  unsigned long nSurf_Poin; // Global number of nodes of the surface
68  unsigned long nGlobal_Doma; // Global number of nodes without halos
69  unsigned long nGlobal_Elem; // Global number of elems without halos
70  unsigned long nSurf_Elem, // Global number of surface elems without halos
71  nGlobal_Line,
72  nGlobal_BoundTria,
73  nGlobal_BoundQuad,
74  nGlobal_Tria,
75  nGlobal_Quad,
76  nGlobal_Tetr,
77  nGlobal_Hexa,
78  nGlobal_Pris,
79  nGlobal_Pyra;
80  su2double **Coords; // node i (x, y, z) = (Coords[0][i], Coords[1][i], Coords[2][i])
81  int *Conn_Line;
82  int *Conn_BoundTria;
83  int *Conn_BoundQuad;
84  int *Conn_Tria; // triangle 1 = Conn_Tria[0], Conn_Tria[1], Conn_Tria[3]
85  int *Conn_Quad;
86  int *Conn_Tetr;
87  int *Conn_Hexa;
88  int *Conn_Pris;
89  int *Conn_Pyra;
90 
91 
92  unsigned long nGlobal_Poin_Par; // Global number of nodes with halos
93  unsigned long nGlobal_Elem_Par; // Global number of elems without halos
94  unsigned long nGlobal_Surf_Poin;
95  unsigned long nSurf_Elem_Par;
96  unsigned long nSurf_Poin_Par;
97  unsigned long nParallel_Poin;
98  unsigned long nParallel_Line,
99  nParallel_BoundTria,
100  nParallel_BoundQuad,
101  nParallel_Tria,
102  nParallel_Quad,
103  nParallel_Tetr,
104  nParallel_Hexa,
105  nParallel_Pris,
106  nParallel_Pyra;
107  int *Conn_Line_Par;
108  int *Conn_BoundTria_Par;
109  int *Conn_BoundQuad_Par;
110  int *Conn_Tria_Par; // triangle 1 = Conn_Tria[0], Conn_Tria[1], Conn_Tria[3]
111  int *Conn_Quad_Par;
112  int *Conn_Tetr_Par;
113  int *Conn_Hexa_Par;
114  int *Conn_Pris_Par;
115  int *Conn_Pyra_Par;
116 
117  unsigned short nVar_Par;
118  su2double **Local_Data;
119  su2double **Parallel_Data; // node i (x, y, z) = (Coords[0][i], Coords[1][i], Coords[2][i])
120  su2double **Parallel_Surf_Data; // node i (x, y, z) = (Coords[0][i], Coords[1][i], Coords[2][i])
121  vector<string> Variable_Names;
122 
123  su2double **Data;
124  unsigned short nVar_Consv, nVar_Total, nVar_Extra, nZones;
125  bool wrote_surf_file, wrote_CGNS_base, wrote_Tecplot_base, wrote_Paraview_base;
126  unsigned short wrote_base_file;
127  su2double RhoRes_New, RhoRes_Old;
128  int cgns_base, cgns_zone, cgns_base_results, cgns_zone_results;
129  su2double Sum_Total_RadialDistortion, Sum_Total_CircumferentialDistortion; // Add all the distortion to compute a run average.
130 
131 
132 protected:
133 
134 public:
135 
139  COutput(void);
140 
144  ~COutput(void);
145 
155  void SetResult_Files(CSolver ****solver_container, CGeometry ***geometry, CConfig **config,
156  unsigned long iExtIter, unsigned short val_nZone);
157 
167  void SetBaselineResult_Files(CSolver **solver, CGeometry **geometry, CConfig **config,
168  unsigned long iExtIter, unsigned short val_nZone);
169 
176  void SetMesh_Files(CGeometry **geometry, CConfig **config, unsigned short val_nZone, bool new_file, bool su2_file);
177 
185  void SetEquivalentArea(CSolver *solver_container, CGeometry *geometry, CConfig *config,
186  unsigned long iExtIter);
187 
195  void SetCp_InverseDesign(CSolver *solver_container, CGeometry *geometry, CConfig *config,
196  unsigned long iExtIter);
197 
205  void SetHeat_InverseDesign(CSolver *solver_container, CGeometry *geometry, CConfig *config,
206  unsigned long iExtIter);
207 
215  void SetForceSections(CSolver *solver_container, CGeometry *geometry, CConfig *config,
216  unsigned long iExtIter);
217 
226  void OneDimensionalOutput(CSolver *solver_container, CGeometry *geometry, CConfig *config);
227 
236  void WriteSurface_Analysis(CConfig *config, CGeometry *geometry, CSolver *FlowSolver);
237 
245  void SetMassFlowRate(CSolver *solver_container, CGeometry *geometry, CConfig *config);
246 
255  void SetSurfaceCSV_Flow(CConfig *config, CGeometry *geometry, CSolver *FlowSolver, unsigned long iExtIter, unsigned short val_iZone);
256 
266  void SetSurfaceCSV_Adjoint(CConfig *config, CGeometry *geometry, CSolver *AdjSolver, CSolver *FlowSolution, unsigned long iExtIter, unsigned short val_iZone);
267 
274  void MergeConnectivity(CConfig *config, CGeometry *geometry, unsigned short val_iZone);
275 
281  void MergeCoordinates(CConfig *config, CGeometry *geometry);
282 
289  void MergeVolumetricConnectivity(CConfig *config, CGeometry *geometry, unsigned short Elem_Type);
290 
297  void MergeSurfaceConnectivity(CConfig *config, CGeometry *geometry, unsigned short Elem_Type);
298 
306  void MergeSolution(CConfig *config, CGeometry *geometry, CSolver **solver, unsigned short val_iZone);
307 
315  void MergeBaselineSolution(CConfig *config, CGeometry *geometry, CSolver *solver, unsigned short val_iZone);
316 
323  void SetRestart(CConfig *config, CGeometry *geometry, CSolver **solver, unsigned short val_iZone);
324 
331  void SetRestart_Parallel(CConfig *config, CGeometry *geometry, CSolver **solver, unsigned short val_iZone);
332 
339  void SetCGNS_Coordinates(CConfig *config, CGeometry *geometry, unsigned short val_iZone);
340 
347  void SetCGNS_Connectivity(CConfig *config, CGeometry *geometry, unsigned short val_iZone);
348 
355  void SetCGNS_Solution(CConfig *config, CGeometry *geometry, unsigned short val_iZone);
356 
364  void SetParaview_ASCII(CConfig *config, CGeometry *geometry, unsigned short val_iZone, unsigned short val_nZone, bool surf_sol);
365 
373  void SetParaview_MeshASCII(CConfig *config, CGeometry *geometry, unsigned short val_iZone, unsigned short val_nZone, bool surf_sol, bool new_file);
374 
379  void SetTecplotASCII_LowMemory(CConfig *config, CGeometry *geometry, CSolver **solver, char mesh_filename[MAX_STRING_SIZE], bool surf_sol);
380 
388  void SetTecplotASCII(CConfig *config, CGeometry *geometry, CSolver **solver, unsigned short val_iZone, unsigned short val_nZone, bool surf_sol);
389 
396  void SetTecplotASCII_Mesh(CConfig *config, CGeometry *geometry, bool surf_sol, bool new_file);
397 
406  void SetTecplotASCII_Parallel(CConfig *config, CGeometry *geometry, CSolver **solver, unsigned short val_iZone, unsigned short val_nZone, bool surf_sol);
407 
414  string AssembleVariableNames(CGeometry *geometry, CConfig *config, unsigned short nVar_Consv, unsigned short *NVar);
415 
422  void SetSU2_MeshASCII(CConfig *config, CGeometry *geometry);
423 
430  void SetSU2_MeshBinary(CConfig *config, CGeometry *geometry);
431 
438  void SetTecplotBinary_DomainMesh(CConfig *config, CGeometry *geometry, unsigned short val_iZone);
439 
446  void SetTecplotBinary_SurfaceMesh(CConfig *config, CGeometry *geometry, unsigned short val_iZone);
447 
454  void SetTecplotBinary_DomainSolution(CConfig *config, CGeometry *geometry, unsigned short val_iZone);
455 
462  void SetTecplotBinary_SurfaceSolution(CConfig *config, CGeometry *geometry, unsigned short val_iZone);
463 
471  void SetFieldViewASCII(CConfig *config, CGeometry *geometry, unsigned short val_iZone, unsigned short val_nZone);
472 
479  void SetFieldViewASCII_Mesh(CConfig *config, CGeometry *geometry);
480 
487  void SetFieldViewBinary_Mesh(CConfig *config, CGeometry *geometry);
488 
495  void SetFieldViewBinary(CConfig *config, CGeometry *geometry, unsigned short val_iZone, unsigned short val_nZone);
496 
502  void DeallocateCoordinates(CConfig *config, CGeometry *geometry);
503 
509  void DeallocateConnectivity(CConfig *config, CGeometry *geometry, bool surf_sol);
510 
516  void DeallocateSolution(CConfig *config, CGeometry *geometry);
517 
523  void SetConvHistory_Header(ofstream *ConvHist_file, CConfig *config);
524 
536  void SetConvHistory_Body(ofstream *ConvHist_file, CGeometry ***geometry, CSolver ****solver_container, CConfig **config,
537  CIntegration ***integration, bool DualTime, su2double timeused, unsigned short val_iZone);
538 
550  void SetForces_Breakdown(CGeometry ***geometry, CSolver ****solver_container, CConfig **config,
551  CIntegration ***integration, unsigned short val_iZone);
552 
564  void SetCFL_Number(CSolver ****solver_container, CConfig **config, unsigned short val_iZone);
565 
573  void SetSensitivity_Files(CGeometry **geometry, CConfig **config, unsigned short val_nZone);
574 
582  void HarmonicBalanceOutput(CSolver ****solver_container, CConfig **config, unsigned short val_nZone, unsigned short val_iZone);
583 
593  void SetResult_Files_Parallel(CSolver ****solver_container, CGeometry ***geometry, CConfig **config,
594  unsigned long iExtIter, unsigned short val_nZone);
595 
603  void LoadLocalData_Flow(CConfig *config, CGeometry *geometry, CSolver **solver, unsigned short val_iZone);
604 
612  void LoadLocalData_AdjFlow(CConfig *config, CGeometry *geometry, CSolver **solver, unsigned short val_iZone);
613 
621  void LoadLocalData_Elasticity(CConfig *config, CGeometry *geometry, CSolver **solver, unsigned short val_iZone);
622 
630  void LoadLocalData_Base(CConfig *config, CGeometry *geometry, CSolver **solver, unsigned short val_iZone);
631 
638  void SortConnectivity(CConfig *config, CGeometry *geometry, unsigned short val_iZone);
639 
646  void SortVolumetricConnectivity(CConfig *config, CGeometry *geometry, unsigned short Elem_Type);
647 
654  void SortSurfaceConnectivity(CConfig *config, CGeometry *geometry, unsigned short Elem_Type);
655 
661  void SortOutputData(CConfig *config, CGeometry *geometry);
662 
668  void SortOutputData_Surface(CConfig *config, CGeometry *geometry);
669 
675  void DeallocateConnectivity_Parallel(CConfig *config, CGeometry *geometry, bool surf_sol);
676 
682  void DeallocateData_Parallel(CConfig *config, CGeometry *geometry);
683 
689  void DeallocateSurfaceData_Parallel(CConfig *config, CGeometry *geometry);
690 
691 };
Class for writing the flow, adjoint and linearized solver solution (including the history solution...
Definition: output_structure.hpp:64
Parent class for defining the geometry of the problem (complete geometry, multigrid agglomerated geom...
Definition: geometry_structure.hpp:72
Headers of the main subroutines for space and time integration. The subroutines and functions are in ...
Definition: cgns_header.h:791
Main class for defining the PDE solution, it requires a child class for each particular solver (Euler...
Definition: solver_structure.hpp:71
const unsigned int MAX_STRING_SIZE
Maximum number of domains.
Definition: option_structure.hpp:117
Main class for doing the space integration, time integration, and monitoring of a system of Partial D...
Definition: integration_structure.hpp:57
Headers of the main subroutines for solving partial differential equations. The subroutines and funct...
Definition: cgns_header.h:891
Main class for defining the problem; basically this class reads the configuration file...
Definition: config_structure.hpp:68