CONFIG LIB 1.5
Configuration Files Library (by TGG 2020)
Loading...
Searching...
No Matches
panukl_prs.cpp
1/*********************************************************************/
2/* */
3/* Config files library - (C) TGG 2015 */
4/* */
5/*********************************************************************/
6/* Warszawa, 2015 */
7/*********************************************************************/
8/* */
9/* File: panukl_prs.cpp */
10/* */
11/* Author: T.Grabowski */
12/* */
13/* Contents - prs file data (pressure distribution) class */
14/* */
15/* */
16/*********************************************************************/
17/* */
18/* */
19
20#include "panukl_prs.h"
21
22PRS_FILE::PRS_FILE( void ){ Clean(); }
23
24PRS_FILE::~PRS_FILE( void ){}
25
26void PRS_FILE::Clean( void )
27{
28 memset( PAN_file, 0, 256 );
29 memset( TXT_file, 0, 256 );
30 memset( CZY_file, 0, 256 );
31 memset( DAT_file, 0, 256 );
32 memset( OUT_file, 0, 256 );
33 memset( BLN_file, 0, 256 );
34 memset( EPS_file, 0, 256 );
35 memset( PRS_file, 0, 256 );
36 memset( SDS_file, 0, 256 );
37
38 iEps = 0;
39 iInd = 0;
40 iMach = 0;
41 iNXY_Eps = iNZ_Eps = 0;
42 iNum1 = iNum2 = 0;
43 iMeth = 0;
44 iAngle = 0;
45 iPitchX = 0;
46 iOutFiles = 0;
47
48 dXEps = 0.0;
49 dYX1_Eps = dYX2_Eps = 0.0;
50 dZ1_Eps = dZ2_Eps = 0.0;
51 dXNum1 = dXNum2 = 0.0;
52 dMach = 0.0;
53}
54
55int PRS_FILE::ReadPRS( const char *FileName )
56{
57 Clean();
58
59 FILE *File;
60 File = fopen( FileName, "r" );
61 if( File == NULL )
62 {
63 fprintf( stderr, "[.PRS] file open error to reading (%s)\n", FileName );
64 return (-1);
65 }
66
67 ReadComm( File );
68 ReadStr( File, PAN_file );
70 ReadPar( File, "%d", &iEps );
71 ReadPar( File, "%d", &iInd );
72 ReadPar( File, "%d %d", &iNXY_Eps, &iNZ_Eps );
73 ReadPar( File, "%lf", &dXEps );
74 ReadPar( File, "%lf %lf", &dYX1_Eps, &dYX2_Eps );
75 ReadPar( File, "%lf %lf", &dZ1_Eps, &dZ2_Eps );
76 ReadPar( File, "%d %d", &iNum1, &iNum2 );
77 ReadPar( File, "%d", &iMeth );
78 ReadPar( File, "%d", &iAngle );
79 ReadPar( File, "%lf %lf", &dXNum1, &dXNum2 );
80 if(ReadPar( File, "%lf", &dMach )==EOF)dMach=0.;
81 if(ReadPar( File, "%d", &iMach )==EOF)iMach=0;
82 if(ReadPar( File, "%d", &iPitchX )==EOF)iPitchX=0;
83 if(ReadPar( File, "%d", &iOutFiles )==EOF)iOutFiles=0;
84 if(iOutFiles)
85 {
86 ReadStr( File, TXT_file );
87 ReadStr( File, OUT_file );
88 ReadStr( File, CZY_file );
89 ReadStr( File, BLN_file );
90 ReadStr( File, EPS_file );
91 ReadStr( File, SDS_file );
98 }
99
100 fclose( File );
101
102 strcpy( PRS_file, FileName );
103
104 return (0);
105}
106
107int PRS_FILE::WritePRS( const char *FileName )
108{
109 FILE *File;
110 File = fopen( FileName, "w" );
111 if( File == NULL )
112 {
113 fprintf( stderr, "[.PRS] file open error to writing (%s)\n", FileName );
114 return (-1);
115 }
116
117 fprintf( File, "# Press program configuration file\n");
118 fprintf( File, "%s # input data file [.PAN]\n", PAN_file );
119 fprintf( File, "%3d # downwash calculation flag\n", iEps );
120 fprintf( File, "%3d # induced drag calculation flag\n", iInd );
121 fprintf( File, "%d %d # range of panel's indices for downwash calculation\n", iNXY_Eps, iNZ_Eps );
122 fprintf( File, "%6.2f # X coordinate of downwash plane\n", dXEps );
123 fprintf( File, "%6.2f %6.2f # Y (X) boundary coordinates for downwash calculation\n", dYX1_Eps, dYX2_Eps );
124 fprintf( File, "%6.2f %6.2f # Z boundary coordinates for downwash calculation\n", dZ1_Eps, dZ2_Eps );
125 fprintf( File, "%d %d # range of panel's indices for pressure calculation\n", iNum1, iNum2 );
126 fprintf( File, "%3d # number of differentiation method\n", iMeth );
127 fprintf( File, "%3d # averaging flag\n", iAngle );
128 fprintf( File, "%6.2f %6.2f # range of X coordinates for pressure calculation\n", dXNum1, dXNum2 );
129 fprintf( File, "%6.2f # Mach number for correction\n", dMach );
130 fprintf( File, "%3d # compressibility correction flag (0-none, 1-PG, 2-KT)\n", iMach );
131 fprintf( File, "%3d # X component of pressure in pitching moment\n", iPitchX );
132 fprintf( File, "%3d # output files names flag (0-automatic, 1-user defined)\n", iOutFiles );
133 if(iOutFiles)
134 {
135 fprintf( File, "%s # output file - pressure distribution [.txt] and other results\n", TXT_file );
136 fprintf( File, "%s # output file - aerodynamic forces and moments coefficients & other global results [.out]\n", OUT_file );
137 fprintf( File, "%s # output file - wingspan loads distribution [.czy]\n", CZY_file );
138 fprintf( File, "%s # output file - contour of cross section [.bln]\n", BLN_file );
139 fprintf( File, "%s # output file - velocity and downwash distribution [.eps]\n", EPS_file );
140 fprintf( File, "%s # output file - the same as [.out] in SDSA format [.sdsa]\n", SDS_file );
141 }
142
143 fclose( File );
144
145 return (0);
146}
147
148void PRS_FILE::DefFile( char *cRob, char *cFile, const char *cExt )
149{
150 if( cFile[0] == 0 )
151 {
152 strcpy( cFile, cRob );
153 filename_setext( cFile, sizeof(cFile), cExt );
154 }
155}
156
157void PRS_FILE::DefNames( char *OUTdir )
158{
159 char cRob[256];
160 strcpy( cRob, OUTdir );
161 strcat( cRob, filename_name( (const char*)PRS_file ) );
162
163 DefFile( cRob, TXT_file, ".txt" );
164 DefFile( cRob, OUT_file, ".out" );
165 DefFile( cRob, CZY_file, ".czy" );
166 DefFile( cRob, EPS_file, ".eps" );
167 DefFile( cRob, BLN_file, ".bln" );
168 DefFile( cRob, SDS_file, ".sdsa" );
169}
static FILE * fopen(const char *filename, const char *mode)
Cross-platform function to fopen function that supports UTF-8 encoded name.
Definition iofun.cpp:358
static void ClipFileName(char *string)
Clipping of the ending blanc characters of "string".
Definition iofun.cpp:250
static const char * filename_name(const char *name)
Returns pointer to filename without path.
Definition iofun.cpp:284
static char * filename_setext(char *buf, int buflen, const char *ext)
set/change filename extension
Definition iofun.cpp:317
static int ReadComm(FILE *stream)
Function to read of a comment till the end of line. It returns 0 or EOF if it is performed.
Definition iofun.cpp:42
static int ReadStr(FILE *stream, char *Par)
Function to read the new line from FILE "stream" and to store it in table of char "Par"....
Definition iofun.cpp:163
static int ReadPar(FILE *stream, const char *Format, void *Par)
Function to read one variable. The type of variable depends on Format, compatible with stdio library.
Definition iofun.cpp:67
void Clean(void)
cleans local variables
char SDS_file[256]
output file - the same as [.out] in SDSA format [.sdsa]
Definition panukl_prs.h:38
int iNXY_Eps
number of mesh nodes for velocity field calculation longwise X (iEps=2) or Y (iEps=1) axis
Definition panukl_prs.h:43
int iPitchX
flag to take X component of forces for pitching moment calculation(0/1)
Definition panukl_prs.h:49
double dYX1_Eps
Y coordinate of left bound (or X in case iEps=2) of plane where velocity field is calculated.
Definition panukl_prs.h:53
double dYX2_Eps
Y coordinate of right bound (or X in case iEps=2) of plane where velocity field is calculated.
Definition panukl_prs.h:54
int iMach
compressibility flag (0-none, 1-Prandtl-Galuert, 2-Karman-Tsien) - not active in case compressibility...
Definition panukl_prs.h:42
int iAngle
averaging flag (0/1)
Definition panukl_prs.h:48
int iInd
calculation of induced drag - flag (0,1)
Definition panukl_prs.h:41
double dZ1_Eps
Z coordinate of lower bound of plane where velocity field is calculated.
Definition panukl_prs.h:55
int iMeth
number of differentiation method (see PANUKL manual)
Definition panukl_prs.h:47
char CZY_file[256]
output file - spanwise loads distribution [.czy]
Definition panukl_prs.h:35
int iEps
calculation of velocity and downwash distribution - flag (0-none,1-YZ plane,2-XZ plane)
Definition panukl_prs.h:40
double dZ2_Eps
Z coordinate of upper bound of plane where velocity field is calculated.
Definition panukl_prs.h:56
double dXNum2
upper bound of range of X coordinate taken for global coefficients calculation
Definition panukl_prs.h:58
double dXEps
X coordinate (or Y coordinate in case iEps=2) of plane where velocity field is calculated.
Definition panukl_prs.h:52
char PAN_file[256]
input file - doublet distribution file [.PAN]
Definition panukl_prs.h:31
int iNum2
number of the last panel taken for global coefficients calculation
Definition panukl_prs.h:46
double dMach
Mach number to take into account compressibility effect - not active in case compressibility was set ...
Definition panukl_prs.h:59
char PRS_file[256]
name of current [.prs] file
Definition panukl_prs.h:61
int iNum1
number of the first panel taken for global coefficients calculation
Definition panukl_prs.h:45
char TXT_file[256]
output file - pressure distribution [.txt] and other results
Definition panukl_prs.h:33
int iOutFiles
flag to control output files names: 0 - automatic names derived from PRS_file, 1 - set by user
Definition panukl_prs.h:50
char DAT_file[256]
input file - mesh + wake data file [.DAT]
Definition panukl_prs.h:32
double dXNum1
lower bound of range of X coordinate taken for global coefficients calculation
Definition panukl_prs.h:57
char EPS_file[256]
output file - velocity and downwash distribution [.eps]
Definition panukl_prs.h:37
void DefNames(char *OUTdir)
set default names of output files
int WritePRS(const char *Filename)
writes the [.prs] file
int iNZ_Eps
number of mesh nodes for velocity field calculation longwise Z
Definition panukl_prs.h:44
void DefFile(char *cRob, char *cFile, const char *cExt)
set default name if it is empty
int ReadPRS(const char *FileName)
reads the [.prs] file
char OUT_file[256]
output file - aerodynamic forces and moments coefficients & other global results [....
Definition panukl_prs.h:34
char BLN_file[256]
output file - contour of cross section [.bln]
Definition panukl_prs.h:36