Universitat Politècnica de Catalunya BACHELOR’S THESIS Numerical study of the Navier-Stokes equations using the Fractional Step Method. Application to the laminar flow around a square cylinder ANNEX: C++ codes Escola Superior d’Enginyeries Industrial, Aeroespacial i Audiovisual de Terrassa (ESEIAAT) Degree: Aerospace Technologies engineering Date of submission: 10 th June 2019 Author: Luque Barcons, Jordi Director: Pérez-Segarra, Carlos-David
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Universitat Politècnica de Catalunya
BACHELOR’S THESIS
Numerical study of theNavier-Stokes equations using the
Fractional Step Method.Application to the laminar flow
around a square cylinder
ANNEX: C++ codes
Escola Superior d’Enginyeries Industrial, Aeroespacial iAudiovisual de Terrassa (ESEIAAT)
Degree: Aerospace Technologies engineering
Date of submission: 10th June 2019
Author: Luque Barcons, Jordi
Director: Pérez-Segarra, Carlos-David
Contents1 2D Heat conduction code 2
2 Potential flow around a rotating and non-rotating cylinder code 12
1 #inc lude <iostream>2 #inc lude <iomanip>3 #inc lude <math . h>4 #inc lude <fstream>5 #d e f i n e nodes 606 us ing namespace std ;78 const double xp1 =0.5 , yp1 =0.4 , xp2 =0.5 , yp2 =0.7 , xp3 =1.1 , yp3 =0.8;9 double dx1 , dx2 , dx3 , dx4 , dy1 , dy2 , dy3 , dy4 , dx5 , dy5 ;
10 double t ;11 double delta_t ;12 double e r r o r _ i t e r a t i o n ;13 double error ;1415 const double rhoM1 =1500 , CpM1 =750 , kM1 =170 , rhoM2 =1600 , CpM2 =770 , kM2 =140 , rhoM3 =1900 , Ðâ
CpM3 =810 , kM3 =200 , rhoM4 =2500 , CpM4 =930 , kM4 =140;1617 const double Q =60;18 const double Tg =33+273.15;19 const f l o a t sigma =0.0001;20 const double alfa_g =9;21 const i n t n1x=nodes , n2x=nodes , n3x=nodes , n4x=nodes , n1y=nodes , n2y=nodes , n3y=nodesÐâ
/4 , n4y=nodes /4 , n5x=nodes , n5y=nodes ;2223 s t r u c t node {24 double x_point , y_point , cp , rho , T0 , T1 , Tn , K , cara_vertical , cara_horitzontal , Ðâ
lambda_nord , lambda_sud , lambda_est , lambda_oest ;25 double ae , as , an , aw , bp , ap ;26 } ;2728 s t r u c t node node_matrix [ n1y+n5y+n3y ] [ n1x+n2x ] ;2930 i n t main ( )31 {32 // MESH GENERATION3334 dx1=(xp1 ) / n1x ;35 dx2=(xp3´xp1 ) / n2x ;36 dx3=(xp1 ) / n1x ;37 dx4=dx2 ;38 dx5=dx1 ;39 dy1=(yp1 ) / n1y ;40 dy3=(yp3´yp2 ) / n3y ;41 dy4=dy3 ;42 dy5=(yp2´yp1 ) / n5y ;4344 f o r ( i n t i =0; i<=(n1y´1) ; i++)45 {46 f o r ( i n t k =0; k<=(n1x´1) ; k++)47 {4849 i f ( k==0)50 {51 node_matrix [ i ] [ k ] . x_point=dx1 / 2 ;52 node_matrix [ i ] [ k ] . rho=rhoM1 ;53 node_matrix [ i ] [ k ] . cp=CpM1 ;54 node_matrix [ i ] [ k ] . K=kM1 ;55 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy1 ;56 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx1 ;57 node_matrix [ i ] [ k ] . T0 =8+273.15;58 node_matrix [ i ] [ k ] . Tn =8+273.15;59 node_matrix [ i ] [ k ] . T1 =8+273.15;60 }6162 e l s e63 {64 node_matrix [ i ] [ k ] . x_point=node_matrix [ i ] [ k´1] . x_point+dx1 ;65 node_matrix [ i ] [ k ] . rho=rhoM1 ;66 node_matrix [ i ] [ k ] . cp=CpM1 ;67 node_matrix [ i ] [ k ] . K=kM1 ;68 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy1 ;69 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx1 ;70 node_matrix [ i ] [ k ] . T0 =8+273.15;
2
71 node_matrix [ i ] [ k ] . Tn =8+273.15;72 node_matrix [ i ] [ k ] . T1 =8+273.15;73 }7475 i f ( i==0)76 {77 node_matrix [ i ] [ k ] . y_point=dy1 / 2 ;78 node_matrix [ i ] [ k ] . rho=rhoM1 ;79 node_matrix [ i ] [ k ] . cp=CpM1 ;80 node_matrix [ i ] [ k ] . K=kM1 ;81 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy1 ;82 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx1 ;83 node_matrix [ i ] [ k ] . T0 =8+273.15;84 node_matrix [ i ] [ k ] . Tn =8+273.15;85 node_matrix [ i ] [ k ] . T1 =8+273.15;86 }8788 e l s e89 {90 node_matrix [ i ] [ k ] . y_point=node_matrix [ i´1] [ k ] . y_point+dy1 ;91 node_matrix [ i ] [ k ] . rho=rhoM1 ;92 node_matrix [ i ] [ k ] . cp=CpM1 ;93 node_matrix [ i ] [ k ] . K=kM1 ;94 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy1 ;95 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx1 ;96 node_matrix [ i ] [ k ] . T0 =8+273.15;97 node_matrix [ i ] [ k ] . Tn =8+273.15;98 node_matrix [ i ] [ k ] . T1 =8+273.15;99 }
100101 }102 }103104 f o r ( i n t i=n1y ; i<=(n5y+n1y´1) ; i++)105 {106 f o r ( i n t k =0; k<=(n5x´1) ; k++)107 {108109 i f ( k==0)110 {111 node_matrix [ i ] [ k ] . x_point=dx5 / 2 ;112 node_matrix [ i ] [ k ] . rho=rhoM3 ;113 node_matrix [ i ] [ k ] . cp=CpM3 ;114 node_matrix [ i ] [ k ] . K=kM3 ;115 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy5 ;116 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx5 ;117 node_matrix [ i ] [ k ] . T0 =8+273.15;118 node_matrix [ i ] [ k ] . Tn =8+273.15;119 node_matrix [ i ] [ k ] . T1 =8+273.15;120 }121122 e l s e123 {124125 node_matrix [ i ] [ k ] . x_point=node_matrix [ i ] [ k´1] . x_point+dx5 ;126 node_matrix [ i ] [ k ] . rho=rhoM3 ;127 node_matrix [ i ] [ k ] . cp=CpM3 ;128 node_matrix [ i ] [ k ] . K=kM3 ;129 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy5 ;130 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx5 ;131 node_matrix [ i ] [ k ] . T0 =8+273.15;132 node_matrix [ i ] [ k ] . Tn =8+273.15;133 node_matrix [ i ] [ k ] . T1 =8+273.15;134 }135136 i f ( i==n1y )137 {138 node_matrix [ i ] [ k ] . y_point=yp1+dy5 / 2 ;139 node_matrix [ i ] [ k ] . rho=rhoM3 ;140 node_matrix [ i ] [ k ] . cp=CpM3 ;141 node_matrix [ i ] [ k ] . K=kM3 ;142 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy5 ;143 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx5 ;144 node_matrix [ i ] [ k ] . T0 =8+273.15;145 node_matrix [ i ] [ k ] . Tn =8+273.15;146 node_matrix [ i ] [ k ] . T1 =8+273.15;147 }
3
148149 e l s e150 {151 node_matrix [ i ] [ k ] . y_point=node_matrix [ i´1] [ k ] . y_point+dy5 ;152 node_matrix [ i ] [ k ] . rho=rhoM3 ;153 node_matrix [ i ] [ k ] . cp=CpM3 ;154 node_matrix [ i ] [ k ] . K=kM3 ;155 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy5 ;156 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx5 ;157 node_matrix [ i ] [ k ] . T0 =8+273.15;158 node_matrix [ i ] [ k ] . Tn =8+273.15;159 node_matrix [ i ] [ k ] . T1 =8+273.15;160 }161 }162 }163164 f o r ( i n t i=n5y+n1y ; i<=(n5y+n3y+n1y´1) ; i++)165 {166 f o r ( i n t k =0; k<=(n3x´1) ; k++)167 {168169 i f ( k==0)170 {171 node_matrix [ i ] [ k ] . x_point=dx3 / 2 ;172 node_matrix [ i ] [ k ] . rho=rhoM3 ;173 node_matrix [ i ] [ k ] . cp=CpM3 ;174 node_matrix [ i ] [ k ] . K=kM3 ;175 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy3 ;176 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx3 ;177 node_matrix [ i ] [ k ] . T0 =8+273.15;178 node_matrix [ i ] [ k ] . Tn =8+273.15;179 node_matrix [ i ] [ k ] . T1 =8+273.15;180 }181182 e l s e183 {184185 node_matrix [ i ] [ k ] . x_point=node_matrix [ i ] [ k´1] . x_point+dx3 ;186 node_matrix [ i ] [ k ] . rho=rhoM3 ;187 node_matrix [ i ] [ k ] . cp=CpM3 ;188 node_matrix [ i ] [ k ] . K=kM3 ;189 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy3 ;190 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx3 ;191 node_matrix [ i ] [ k ] . T0 =8+273.15;192 node_matrix [ i ] [ k ] . Tn =8+273.15;193 node_matrix [ i ] [ k ] . T1 =8+273.15;194 }195196 i f ( i==n5y+n1y )197 {198 node_matrix [ i ] [ k ] . y_point=yp2+dy3 / 2 ;199 node_matrix [ i ] [ k ] . rho=rhoM3 ;200 node_matrix [ i ] [ k ] . cp=CpM3 ;201 node_matrix [ i ] [ k ] . K=kM3 ;202 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy3 ;203 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx3 ;204 node_matrix [ i ] [ k ] . T0 =8+273.15;205 node_matrix [ i ] [ k ] . Tn =8+273.15;206 node_matrix [ i ] [ k ] . T1 =8+273.15;207 }208209 e l s e210 {211 node_matrix [ i ] [ k ] . y_point=node_matrix [ i´1] [ k ] . y_point+dy3 ;212 node_matrix [ i ] [ k ] . rho=rhoM3 ;213 node_matrix [ i ] [ k ] . cp=CpM3 ;214 node_matrix [ i ] [ k ] . K=kM3 ;215 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy3 ;216 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx3 ;217 node_matrix [ i ] [ k ] . T0 =8+273.15;218 node_matrix [ i ] [ k ] . Tn =8+273.15;219 node_matrix [ i ] [ k ] . T1 =8+273.15;220 }221 }222 }223224 f o r ( i n t i =0; i<=(n1y´1) ; i++)
4
225 {226 f o r ( i n t k=n1x ; k<=(n2x+n1x´1) ; k++)227 {228 i f ( k==n1x )229 {230 node_matrix [ i ] [ k ] . x_point=xp1+dx2 / 2 ;231 node_matrix [ i ] [ k ] . rho=rhoM2 ;232 node_matrix [ i ] [ k ] . cp=CpM2 ;233 node_matrix [ i ] [ k ] . K=kM2 ;234 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy1 ;235 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx2 ;236 node_matrix [ i ] [ k ] . T0 =8+273.15;237 node_matrix [ i ] [ k ] . Tn =8+273.15;238 node_matrix [ i ] [ k ] . T1 =8+273.15;239 }240241 e l s e242 {243 node_matrix [ i ] [ k ] . x_point=node_matrix [ i ] [ k´1] . x_point+dx2 ;244 node_matrix [ i ] [ k ] . rho=rhoM2 ;245 node_matrix [ i ] [ k ] . cp=CpM2 ;246 node_matrix [ i ] [ k ] . K=kM2 ;247 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy1 ;248 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx2 ;249 node_matrix [ i ] [ k ] . T0 =8+273.15;250 node_matrix [ i ] [ k ] . Tn =8+273.15;251 node_matrix [ i ] [ k ] . T1 =8+273.15;252 }253254 i f ( i==0)255 {256 node_matrix [ i ] [ k ] . y_point=dy1 / 2 ;257 node_matrix [ i ] [ k ] . rho=rhoM2 ;258 node_matrix [ i ] [ k ] . cp=CpM2 ;259 node_matrix [ i ] [ k ] . K=kM2 ;260 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy1 ;261 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx2 ;262 node_matrix [ i ] [ k ] . T0 =8+273.15;263 node_matrix [ i ] [ k ] . Tn =8+273.15;264 node_matrix [ i ] [ k ] . T1 =8+273.15;265 }266267 e l s e268 {269 node_matrix [ i ] [ k ] . y_point=node_matrix [ i´1] [ k ] . y_point+dy1 ;270 node_matrix [ i ] [ k ] . rho=rhoM2 ;271 node_matrix [ i ] [ k ] . cp=CpM2 ;272 node_matrix [ i ] [ k ] . K=kM2 ;273 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy1 ;274 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx2 ;275 node_matrix [ i ] [ k ] . T0 =8+273.15;276 node_matrix [ i ] [ k ] . Tn =8+273.15;277 node_matrix [ i ] [ k ] . T1 =8+273.15;278 }279 }280 }281282 f o r ( i n t i=n1y ; i<=(n1y+n5y´1) ; i++)283 {284 f o r ( i n t k=n1x ; k<=(n5x+n1x´1) ; k++)285 {286287 i f ( k==n1x )288 {289 node_matrix [ i ] [ k ] . x_point=xp1+dx2 / 2 ;290 node_matrix [ i ] [ k ] . rho=rhoM2 ;291 node_matrix [ i ] [ k ] . cp=CpM2 ;292 node_matrix [ i ] [ k ] . K=kM2 ;293 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy5 ;294 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx2 ;295 node_matrix [ i ] [ k ] . T0 =8+273.15;296 node_matrix [ i ] [ k ] . Tn =8+273.15;297 node_matrix [ i ] [ k ] . T1 =8+273.15;298 }299300 e l s e301 {
5
302 node_matrix [ i ] [ k ] . x_point=node_matrix [ i ] [ k´1] . x_point+dx2 ;303 node_matrix [ i ] [ k ] . rho=rhoM2 ;304 node_matrix [ i ] [ k ] . cp=CpM2 ;305 node_matrix [ i ] [ k ] . K=kM2 ;306 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy5 ;307 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx2 ;308 node_matrix [ i ] [ k ] . T0 =8+273.15;309 node_matrix [ i ] [ k ] . Tn =8+273.15;310 node_matrix [ i ] [ k ] . T1 =8+273.15;311 }312313 i f ( i==n1y )314 {315 node_matrix [ i ] [ k ] . y_point=yp1+dy5 / 2 ;316 node_matrix [ i ] [ k ] . rho=rhoM2 ;317 node_matrix [ i ] [ k ] . cp=CpM2 ;318 node_matrix [ i ] [ k ] . K=kM2 ;319 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy5 ;320 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx2 ;321 node_matrix [ i ] [ k ] . T0 =8+273.15;322 node_matrix [ i ] [ k ] . Tn =8+273.15;323 node_matrix [ i ] [ k ] . T1 =8+273.15;324 }325326 e l s e327 {328 node_matrix [ i ] [ k ] . y_point=node_matrix [ i´1] [ k ] . y_point+dy5 ;329 node_matrix [ i ] [ k ] . rho=rhoM2 ;330 node_matrix [ i ] [ k ] . cp=CpM2 ;331 node_matrix [ i ] [ k ] . K=kM2 ;332 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy5 ;333 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx2 ;334 node_matrix [ i ] [ k ] . T0 =8+273.15;335 node_matrix [ i ] [ k ] . Tn =8+273.15;336 node_matrix [ i ] [ k ] . T1 =8+273.15;337 }338 }339 }340341 f o r ( i n t i=n1y+n5y ; i<=(n1y+n5y+n4y´1) ; i++)342 {343 f o r ( i n t k=n1x ; k<=(n4x+n1x´1) ; k++)344 {345346 i f ( k==n1x )347 {348 node_matrix [ i ] [ k ] . x_point=xp1+dx4 / 2 ;349 node_matrix [ i ] [ k ] . rho=rhoM3 ;350 node_matrix [ i ] [ k ] . cp=CpM4 ;351 node_matrix [ i ] [ k ] . K=kM4 ;352 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy3 ;353 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx4 ;354 node_matrix [ i ] [ k ] . T0 =8+273.15;355 node_matrix [ i ] [ k ] . Tn =8+273.15;356 node_matrix [ i ] [ k ] . T1 =8+273.15;357 }358359 e l s e360 {361 node_matrix [ i ] [ k ] . x_point=node_matrix [ i ] [ k´1] . x_point+dx4 ;362 node_matrix [ i ] [ k ] . rho=rhoM3 ;363 node_matrix [ i ] [ k ] . cp=CpM4 ;364 node_matrix [ i ] [ k ] . K=kM4 ;365 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy3 ;366 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx4 ;367 node_matrix [ i ] [ k ] . T0 =8+273.15;368 node_matrix [ i ] [ k ] . Tn =8+273.15;369 node_matrix [ i ] [ k ] . T1 =8+273.15;370 }371372 i f ( i==n1y+n5y )373 {374 node_matrix [ i ] [ k ] . y_point=yp2+dy3 / 2 ;375 node_matrix [ i ] [ k ] . rho=rhoM3 ;376 node_matrix [ i ] [ k ] . cp=CpM4 ;377 node_matrix [ i ] [ k ] . K=kM4 ;378 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy3 ;
6
379 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx4 ;380 node_matrix [ i ] [ k ] . T0 =8+273.15;381 node_matrix [ i ] [ k ] . Tn =8+273.15;382 node_matrix [ i ] [ k ] . T1 =8+273.15;383 }384385 e l s e386 {387 node_matrix [ i ] [ k ] . y_point=node_matrix [ i´1] [ k ] . y_point+dy3 ;388 node_matrix [ i ] [ k ] . rho=rhoM3 ;389 node_matrix [ i ] [ k ] . cp=CpM4 ;390 node_matrix [ i ] [ k ] . K=kM4 ;391 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy3 ;392 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx4 ;393 node_matrix [ i ] [ k ] . T0 =8+273.15;394 node_matrix [ i ] [ k ] . Tn =8+273.15;395 node_matrix [ i ] [ k ] . T1 =8+273.15;396 }397 }398 }399400 // THERMAL CONDUCTIVITY COEFFICIENTS401402 f o r ( i n t i =0; i<=(n1y+n3y+n5y´1) ; i++)403 {404 f o r ( i n t k =0; k<=(n1x+n2x´1) ; k++)405 {406 i f ( i==0)407 {408 node_matrix [ i ] [ k ] . lambda_sud=node_matrix [ i ] [ k ] . K ;409 }410411 i f ( i==n1y+n3y+n5y´1)412 {413 node_matrix [ i ] [ k ] . lambda_nord=node_matrix [ i ] [ k ] . K ;414 }415416 i f ( k==0)417 {418 node_matrix [ i ] [ k ] . lambda_oest=node_matrix [ i ] [ k ] . K ;419 }420421 i f ( k==n1x+n2x´1)422 {423 node_matrix [ i ] [ k ] . lambda_est=node_matrix [ i ] [ k ] . K ;424 }425426 i f ( i !=0)427 {428 node_matrix [ i ] [ k ] . lambda_sud =(( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l ) /2+(Ðâ
node_matrix [ i´1] [ k ] . c a r a _ v e r t i c a l ) /2) / ( ( node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l ) /(2∗ node_matrix [ i ] [ k ] . K )+( node_matrix [ i´1] [ k ] .Ðâ
c a r a _ v e r t i c a l ) /(2∗ node_matrix [ i´1] [ k ] . K ) ) ;429 }430431 i f ( i != n1y+n3y+n5y´1)432 {433 node_matrix [ i ] [ k ] . lambda_nord =(( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l ) /2+(Ðâ
node_matrix [ i +1] [ k ] . c a r a _ v e r t i c a l ) /2) / ( ( node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l ) /(2∗ node_matrix [ i ] [ k ] . K )+( node_matrix [ i +1] [ k ] .Ðâ
c a r a _ v e r t i c a l ) /(2∗ node_matrix [ i +1] [ k ] . K ) ) ;434 }435436 i f ( k !=0)437 {438 node_matrix [ i ] [ k ] . lambda_oest =(( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l ) /2+(Ðâ
node_matrix [ i ] [ k´1] . c a r a _ h o r i t z o n t a l ) /2) / ( ( node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l ) /(2∗ node_matrix [ i ] [ k ] . K )+( node_matrix [ i ] [ k´1] .Ðâ
c a r a _ h o r i t z o n t a l ) /(2∗ node_matrix [ i ] [ k´1] . K ) ) ;439 }440441 i f ( k != n1x+n2x´1)442 {443 node_matrix [ i ] [ k ] . lambda_est =(( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l ) /2+(Ðâ
node_matrix [ i ] [ k +1] . c a r a _ h o r i t z o n t a l ) /2) / ( ( node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l ) /(2∗ node_matrix [ i ] [ k ] . K )+( node_matrix [ i ] [ k +1] .Ðâ
c a r a _ h o r i t z o n t a l ) /(2∗ node_matrix [ i ] [ k +1] . K ) ) ;
7
444 }445 }446 }447448 //SOLVER449 error =10;450 delta_t =0.2;451 t=delta_t ;452453 ofstream file ;454 file . open ( " temps . t x t " ) ;455456 whi le ( t <=10001)457458 {459 f o r ( i n t i =0; i<=(n5y+n3y+n1y´1) ; i++)460 {461 f o r ( i n t k =0; k<=(n1x+n2x´1) ; k++)462 {463464 i f ( i==n5y+n3y+n1y´1 && k !=0 && k !=( n1x+n2x´1) )465 {466 node_matrix [ i ] [ k ] . ae=( node_matrix [ i ] [ k ] . lambda_est ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l ) /( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+ node_matrix [ iÐâ
] [ k +1] . c a r a _ h o r i t z o n t a l /2) ;467 node_matrix [ i ] [ k ] . as=( node_matrix [ i ] [ k ] . lambda_sud ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l ) /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+ node_matrix [ iÐâ
´1] [ k ] . c a r a _ v e r t i c a l /2) ;468 node_matrix [ i ] [ k ] . an =0;469 node_matrix [ i ] [ k ] . aw=( node_matrix [ i ] [ k ] . lambda_oest ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l ) /( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+ node_matrix [ iÐâ
] [ k´1] . c a r a _ h o r i t z o n t a l /2) ;470 node_matrix [ i ] [ k ] . bp=( node_matrix [ i ] [ k ] . rho ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l ∗ node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l ∗ node_matrix [ i ] [ k ] .Ðâ
cp ∗ node_matrix [ i ] [ k ] . Tn ) /( delta_t )+Q∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l ;471 node_matrix [ i ] [ k ] . ap=( node_matrix [ i ] [ k ] . rho ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l ∗ node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l ∗ node_matrix [ i ] [ k ] .Ðâ
cp ) /( delta_t )+node_matrix [ i ] [ k ] . ae+node_matrix [ i ] [ k ] . aw+node_matrixÐâ
[ i ] [ k ] . an+node_matrix [ i ] [ k ] . as ;472 }473474 e l s e i f ( k==0 && i !=( n5y+n3y+n1y´1) && i !=0)475 {476 node_matrix [ i ] [ k ] . ae=( node_matrix [ i ] [ k ] . lambda_est ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l ) /( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+ node_matrix [ iÐâ
] [ k +1] . c a r a _ h o r i t z o n t a l /2) ;477 node_matrix [ i ] [ k ] . as=( node_matrix [ i ] [ k ] . lambda_sud ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l ) /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+ node_matrix [ iÐâ
´1] [ k ] . c a r a _ v e r t i c a l /2) ;478 node_matrix [ i ] [ k ] . an=( node_matrix [ i ] [ k ] . lambda_nord ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l ) /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+ node_matrix [ iÐâ
+1] [ k ] . c a r a _ v e r t i c a l /2) ;479 node_matrix [ i ] [ k ] . aw =0;480 node_matrix [ i ] [ k ] . bp=( node_matrix [ i ] [ k ] . rho ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l ∗ node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l ∗ node_matrix [ i ] [ k ] .Ðâ
cp ∗ node_matrix [ i ] [ k ] . Tn ) /( delta_t )+Tg ∗ alfa_g ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l ;481 node_matrix [ i ] [ k ] . ap=( node_matrix [ i ] [ k ] . rho ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l ∗ node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l ∗ node_matrix [ i ] [ k ] .Ðâ
cp ) /( delta_t )+node_matrix [ i ] [ k ] . ae+node_matrix [ i ] [ k ] . aw+node_matrixÐâ
[ i ] [ k ] . an+node_matrix [ i ] [ k ] . as+alfa_g ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l ;482 }483484 e l s e i f ( k==0 && i==n5y+n3y+n1y´1)485 {486 node_matrix [ i ] [ k ] . ae=( node_matrix [ i ] [ k ] . lambda_est ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l ) /( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+ node_matrix [ iÐâ
] [ k +1] . c a r a _ h o r i t z o n t a l /2) ;487 node_matrix [ i ] [ k ] . as=( node_matrix [ i ] [ k ] . lambda_sud ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l ) /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+ node_matrix [ iÐâ
´1] [ k ] . c a r a _ v e r t i c a l /2) ;488 node_matrix [ i ] [ k ] . an =0;489 node_matrix [ i ] [ k ] . aw =0;490 node_matrix [ i ] [ k ] . bp=( node_matrix [ i ] [ k ] . rho ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l ∗ node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l ∗ node_matrix [ i ] [ k ] .Ðâ
8
cp ∗ node_matrix [ i ] [ k ] . Tn ) /( delta_t )+Tg ∗ alfa_g ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l+Q∗ node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l ;491 node_matrix [ i ] [ k ] . ap=( node_matrix [ i ] [ k ] . rho ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l ∗ node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l ∗ node_matrix [ i ] [ k ] .Ðâ
cp ) /( delta_t )+node_matrix [ i ] [ k ] . ae+node_matrix [ i ] [ k ] . aw+node_matrixÐâ
[ i ] [ k ] . an+node_matrix [ i ] [ k ] . as+alfa_g ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l ;492 }493494 e l s e i f ( i==0)495 {496 node_matrix [ i ] [ k ] . ae =0;497 node_matrix [ i ] [ k ] . as =0;498 node_matrix [ i ] [ k ] . an =0;499 node_matrix [ i ] [ k ] . aw =0;500 node_matrix [ i ] [ k ] . bp =273+23;501 node_matrix [ i ] [ k ] . ap =1;502 }503504 e l s e i f ( k==(n1x+n2x´1) )505 {506 node_matrix [ i ] [ k ] . ae =0;507 node_matrix [ i ] [ k ] . as =0;508 node_matrix [ i ] [ k ] . an =0;509 node_matrix [ i ] [ k ] . aw =0;510 node_matrix [ i ] [ k ] . bp =(8+0.005∗ t ) +273;511 node_matrix [ i ] [ k ] . ap =1;512 }513514 e l s e515 {516 node_matrix [ i ] [ k ] . ae=( node_matrix [ i ] [ k ] . lambda_est ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l ) /( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+ node_matrix [ iÐâ
] [ k +1] . c a r a _ h o r i t z o n t a l /2) ;517 node_matrix [ i ] [ k ] . as=( node_matrix [ i ] [ k ] . lambda_sud ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l ) /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+ node_matrix [ iÐâ
´1] [ k ] . c a r a _ v e r t i c a l /2) ;518 node_matrix [ i ] [ k ] . an=( node_matrix [ i ] [ k ] . lambda_nord ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l ) /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+ node_matrix [ iÐâ
+1] [ k ] . c a r a _ v e r t i c a l /2) ;519 node_matrix [ i ] [ k ] . aw=( node_matrix [ i ] [ k ] . lambda_oest ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l ) /( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+ node_matrix [ iÐâ
] [ k´1] . c a r a _ h o r i t z o n t a l /2) ;520 node_matrix [ i ] [ k ] . bp=( node_matrix [ i ] [ k ] . rho ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l ∗ node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l ∗ node_matrix [ i ] [ k ] .Ðâ
cp ∗ node_matrix [ i ] [ k ] . Tn ) /( delta_t ) ;521 node_matrix [ i ] [ k ] . ap=( node_matrix [ i ] [ k ] . rho ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l ∗ node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l ∗ node_matrix [ i ] [ k ] .Ðâ
cp ) /( delta_t )+node_matrix [ i ] [ k ] . ae+node_matrix [ i ] [ k ] . aw+node_matrixÐâ
[ i ] [ k ] . an+node_matrix [ i ] [ k ] . as ;522 }523 }524 }525526 whi le ( error>sigma )527 {528 f o r ( i n t i =0; i<=(n5y+n3y+n1y´1) ; i++)529 {530 f o r ( i n t k =0; k<=(n1x+n2x´1) ; k++)531 {532 i f ( i==(n5y+n3y+n1y´1) && k !=0 && k !=( n1x+n2x´1) )533 {534 node_matrix [ i ] [ k ] . T1=( node_matrix [ i ] [ k ] . ae ∗ node_matrix [ i ] [ k +1] . T1+Ðâ
node_matrix [ i ] [ k ] . aw ∗ node_matrix [ i ] [ k´1] . T1+node_matrix [ i ] [ k ] .Ðâ
as ∗ node_matrix [ i´1] [ k ] . T1+node_matrix [ i ] [ k ] . bp ) /( node_matrix [ iÐâ
] [ k ] . ap ) ;535 }536537 e l s e i f ( k==0 && i !=( n5y+n3y+n1y´1) && i !=0)538 {539 node_matrix [ i ] [ k ] . T1=( node_matrix [ i ] [ k ] . ae ∗ node_matrix [ i ] [ k +1] . T1+Ðâ
node_matrix [ i ] [ k ] . as ∗ node_matrix [ i´1] [ k ] . T1+node_matrix [ i ] [ k ] .Ðâ
an ∗ node_matrix [ i +1] [ k ] . T1+node_matrix [ i ] [ k ] . bp ) /( node_matrix [ iÐâ
] [ k ] . ap ) ;540 }541542 e l s e i f ( k==0 && i==n5y+n3y+n1y´1)
9
543 {544 node_matrix [ i ] [ k ] . T1=( node_matrix [ i ] [ k ] . ae ∗ node_matrix [ i ] [ k +1] . T1+Ðâ
node_matrix [ i ] [ k ] . as ∗ node_matrix [ i´1] [ k ] . T1+node_matrix [ i ] [ k ] .Ðâ
bp ) /( node_matrix [ i ] [ k ] . ap ) ;545 }546547 e l s e i f ( i==0)548 {549 node_matrix [ i ] [ k ] . T1=node_matrix [ i ] [ k ] . bp ;550 }551552 e l s e i f ( k==(n1x+n2x´1) )553 {554 node_matrix [ i ] [ k ] . T1=node_matrix [ i ] [ k ] . bp ;555 }556557 e l s e558 {559 node_matrix [ i ] [ k ] . T1=( node_matrix [ i ] [ k ] . ae ∗ node_matrix [ i ] [ k +1] . T1+Ðâ
node_matrix [ i ] [ k ] . aw ∗ node_matrix [ i ] [ k´1] . T1+node_matrix [ i ] [ k ] . asÐâ
∗ node_matrix [ i´1] [ k ] . T1+node_matrix [ i ] [ k ] . an ∗ node_matrix [ i +1] [ kÐâ
] . T1+node_matrix [ i ] [ k ] . bp ) /( node_matrix [ i ] [ k ] . ap ) ;560 }561 }562 }563564 e r r o r _ i t e r a t i o n =0;565566 f o r ( i n t i =0; i<=(n5y+n3y+n1y´1) ; i++)567 {568 f o r ( i n t k =0; k<=(n1x+n2x´1) ; k++)569 {570 i f ( fabs ( node_matrix [ i ] [ k ] . T1´node_matrix [ i ] [ k ] . T0 )>e r r o r _ i t e r a t i o nÐâ
)571 {572 e r r o r _ i t e r a t i o n=fabs ( node_matrix [ i ] [ k ] . T1´node_matrix [ i ] [ k ] . T0 )Ðâ
;573 }574 }575 }576577 error=e r r o r _ i t e r a t i o n ;578579 f o r ( i n t i =0; i<=(n5y+n3y+n1y´1) ; i++)580 {581 f o r ( i n t k =0; k<=(n1x+n2x´1) ; k++)582 {583 node_matrix [ i ] [ k ] . T0=node_matrix [ i ] [ k ] . T1 ;584 }585 }586 }587588 f o r ( i n t i =0; i<=(n5y+n3y+n1y´1) ; i++)589 {590 f o r ( i n t k =0; k<=(n1x+n2x´1) ; k++)591 {592 node_matrix [ i ] [ k ] . Tn=node_matrix [ i ] [ k ] . T1 ;593 node_matrix [ i ] [ k ] . T0=node_matrix [ i ] [ k ] . T1 ;594 }595 }596597 f o r ( i n t i =0; i<=(n5y+n3y+n1y´1) ; i++)598 {599 f o r ( i n t k =0; k<=(n1x+n2x´1) ; k++)600 {601 i f ( round ( node_matrix [ i ] [ k ] . y_point ∗1000)==559 && round ( node_matrix [ i ] [ k ] .Ðâ
612 t=t+delta_t ;613614 }615616 cout<<" Closing f i l e " ;617 file . close ( ) ;618619 ofstream file3 ;620 file3 . open ( " heat . t x t " ) ;621 i f ( file3 . is_open ( ) )622 {623 cout<<" F i l e opened s u c c e s s f u l l y \n" ;624 }625626 e l s e627628 {629 cout<<" Error saving data \n" ;630 }631632 cout<<" Saving data \n" ;633 file3<<"TITLE = \"HEAT CONDUCTION PROBLEM: 4 MATERIALS WALL\" " ;634 file3<<" \n" ;635 file3<<"VARIABLES = \"X\" , \"Y\" , \"Temp\" " ;636 file3<<" \n" ;637 file3<<"ZONE=\"Domain\" , I=" ;638 file3<<n1x+n2x ;639 file3<<" , " ;640 file3<<"J= " ;641 file3<<n1y+n5y+n3y ;642 file3<<" \n" ;643644 f o r ( i n t i =0; i<=(n5y+n3y+n1y´1) ; i++){645646 f o r ( i n t k =0; k<=(n1x+n2x´1) ; k++){647648 file3<<node_matrix [ i ] [ k ] . x_point ;649 file3<<" , " ;650 file3<<node_matrix [ i ] [ k ] . y_point ;651 file3<<" , " ;652 file3<<node_matrix [ i ] [ k ] . T1´273;653 file3<<" , " ;654 file3<<" \n" ;655 }656657 }658659 cout<<" Closing f i l e " ;660 file3 . close ( ) ;661 }
11
2 Potential flow around a rotating and non-rotating cylin-der code
1 #inc lude <iostream>2 #inc lude <iomanip>3 #inc lude <math . h>4 #inc lude <fstream>5 #d e f i n e nodes_x1 106 #d e f i n e nodes_x2 2007 #d e f i n e nodes_x3 108 #d e f i n e nodes_y1 109 #d e f i n e nodes_y2 200
10 #d e f i n e nodes_y3 1011 us ing namespace std ;1213 double radius =1, x=10∗ radius , y=10∗ radius , x_center=x /2 , y_center=y /2 , dx1 , dy1 , dx2 , Ðâ
error_circulation_sup , error_circulation_inf , e r r o r _ c i r c u l a t i o n _ m i g ;15 double p s i _ c i l i n d r e _ s u p=y∗V0 , p s i _ c i l i n d r e _ i n f =0, psi_cilindre , error_psi=1e´10;1617 s t r u c t node {18 double x_point , y_point , cp , rho , cara_vertical , cara_horitzontal , ae , as , an , aw , Ðâ
ap , psi_estimated , psi , vye , vxn , vyw , vxs ;19 double rhoe , rhon , rhow , rhos , vxp , vyp , v , coord , comp ;20 } ;2122 node node_matrix [ nodes_y1+nodes_y2+nodes_y3 ] [ nodes_x1+nodes_x2+nodes_x3 ] ;2324 void m e s h _ g e n e r a t i o n ( node node_matrix [ nodes_y1+nodes_y2+nodes_y3 ] [ nodes_x1+nodes_x2+Ðâ
&dy3 , double x_center , double y_center , double radius , double x , double y ) ;25 void d e n s i t y _ c a l c u l a t i o n ( node node_matrix [ nodes_y1+nodes_y2+nodes_y3 ] [ nodes_x1+Ðâ
nodes_x2+nodes_x3 ] , double rho0 ) ;26 void c o e f f i c i e n t _ c a l c u l a t i o n ( node node_matrix [ nodes_y1+nodes_y2+nodes_y3 ] [ nodes_x1+Ðâ
y_center ) ;28 void v e l o c i t y _ a n d _ c p ( node node_matrix [ nodes_y1+nodes_y2+nodes_y3 ] [ nodes_x1+nodes_x2+Ðâ
nodes_x3 ] ) ;2930 main ( )31 {3233 cout<<" Generating mesh . . . \n" ;34 m e s h _ g e n e r a t i o n ( node_matrix , dx1 , dx2 , dx3 , dy1 , dy2 , dy3 , x_center , y_center , radius , Ðâ
x , y ) ;35 cout<<" C a l c u l a t i n g c o e f f i c i e n t s . . . \ n" ;36 d e n s i t y _ c a l c u l a t i o n ( node_matrix , rho0 ) ;37 c o e f f i c i e n t _ c a l c u l a t i o n ( node_matrix , rho0 ) ;38 cout<<" So lv ing system . . . \ n" ;3940 // ITERATING USING BISECTION METHOD TO FIND THE VALUE OF PSI OF THE CYLINDER4142 ps i_c ili nd re=p s i _ c i l i n d r e _ s u p ;43 solver ( node_matrix , psi_cilindre , error_iteration , error , error_circulation , rho0 , Ðâ
sigma , V0 , x_center , y_center ) ;44 e r r o r _ c i r c u l a t i o n _ s u p=e r r o r _ c i r c u l a t i o n ;45 ps i_c ili nd re=p s i _ c i l i n d r e _ i n f ;46 solver ( node_matrix , psi_cilindre , error_iteration , error , error_circulation , rho0 , Ðâ
sigma , V0 , x_center , y_center ) ;47 e r r o r _ c i r c u l a t i o n _ i n f=e r r o r _ c i r c u l a t i o n ;4849 whi le ( psi_cilindre_sup´psi_cilindre_inf >error_psi )5051 {52 ps i_c ili nd re =( p s i _ c i l i n d r e _ s u p+p s i _ c i l i n d r e _ i n f ) / 2 ;53 solver ( node_matrix , psi_cilindre , error_iteration , error , error_circulation , Ðâ
rho0 , sigma , V0 , x_center , y_center ) ;54 e r r o r _ c i r c u l a t i o n _ m i g=e r r o r _ c i r c u l a t i o n ;5556 i f ( signbit ( e r r o r _ c i r c u l a t i o n _ i n f )==signbit ( e r r o r _ c i r c u l a t i o n _ m i g ) )
12
57 {58 p s i _ c i l i n d r e _ i n f=ps i_c ili ndr e ;59 e r r o r _ c i r c u l a t i o n _ i n f=e r r o r _ c i r c u l a t i o n _ m i g ;60 }6162 e l s e63 {64 p s i _ c i l i n d r e _ s u p=ps i_c ili ndr e ;65 e r r o r _ c i r c u l a t i o n _ s u p=e r r o r _ c i r c u l a t i o n _ m i g ;66 }67 }6869 cout<<" C a l c u l a t i n g v e l o c i t i e s and CP. . . \ n" ;70 v e l o c i t y _ a n d _ c p ( node_matrix ) ;71 ofstream file2 ;72 file2 . open ( " p o t e n t i a l 3 . t x t " ) ;73 i f ( file2 . is_open ( ) )74 {75 cout<<" F i l e 1 opened s u c c e s s f u l l y \n" ;76 }7778 e l s e79 {80 cout<<" Error saving data \n" ;81 }8283 cout<<" Saving data \n" ;84 file2<<"TITLE = \"POTENTIAL FLOW\" " ;85 file2<<" \n" ;86 file2<<"VARIABLES = \"X\" , \"Y\" , \" Stream Function \" , \"Vx\" , \"Vy\" , \ " |V| \ " " ;87 file2<<" \n" ;88 file2<<"ZONE=\"Domain\" , I=" ;89 file2<<nodes_x1+nodes_x2+nodes_x3 ;90 file2<<" , " ;91 file2<<"J= " ;92 file2<<nodes_y1+nodes_y2+nodes_y3 ;93 file2<<" \n" ;9495 f o r ( i n t i =0; i<=(nodes_y1+nodes_y2+nodes_y3 ´1) ; i++){9697 f o r ( i n t k =0; k<=(nodes_x1+nodes_x2+nodes_x3 ´1) ; k++){9899 file2<<node_matrix [ i ] [ k ] . x_point ;
100 file2<<" " ;101 file2<<node_matrix [ i ] [ k ] . y_point ;102 file2<<" " ;103 file2<<node_matrix [ i ] [ k ] . psi ;104 file2<<" " ;105 file2<<node_matrix [ i ] [ k ] . vxp ;106 file2<<" " ;107 file2<<node_matrix [ i ] [ k ] . vyp ;108 file2<<" " ;109 file2<<node_matrix [ i ] [ k ] . v ;110 file2<<" \n" ;111 }112 }113114 cout<<" Closing f i l e 1 \n" ;115 file2 . close ( ) ;116117 ofstream file ;118 file . open ( " c p c a l c u l a t i o n . t x t " ) ;119 i f ( file . is_open ( ) )120 {121 cout<<" F i l e 2 opened s u c c e s s f u l l y \n" ;122 }123124 e l s e125126 {127 cout<<" Error saving data \n" ;128 }129130 cout<<" Saving data \n" ;131 file<<"TITLE = \"CP CALCULATION\" " ;132 file<<" \n" ;133 file<<"VARIABLES = \"THETA\" , \"CP\" " ;
13
134 file<<" \n" ;135 file<<"ZONE=\"Domain\" , I=" ;136 file<<nodes_x1+nodes_x2+nodes_x3 ;137 file<<" , " ;138 file<<"J= " ;139 file<<nodes_y1+nodes_y2+nodes_y3 ;140 file<<" \n" ;141142 f o r ( i n t i =0; i<=(nodes_y1+nodes_y2+nodes_y3 ´1) ; i++){143144 f o r ( i n t k =0; k<=(nodes_x1+nodes_x2+nodes_x3 ´1) ; k++){145146 i f ( node_matrix [ i ] [ k ] . cp !=0)147 {148 file<<node_matrix [ i ] [ k ] . coord ;149 file<<" , " ;150 file<<node_matrix [ i ] [ k ] . cp ;151 file<<" " ;152 file<<" \n" ;153 }154 }155 }156157 cout<<" Closing f i l e 2" ;158 file . close ( ) ;159160 }161162163 void m e s h _ g e n e r a t i o n ( node node_matrix [ nodes_y1+nodes_y2+nodes_y3 ] [ nodes_x1+nodes_x2+Ðâ
&dy3 , double x_center , double y_center , double radius , double x , double y )164165 {166167 dx1=(x_center ´1.5∗ radius ) / nodes_x1 ;168 dx2 =(3∗ radius ) / nodes_x2 ;169 dx3=(x´x_center ´1.5∗ radius ) / nodes_x3 ;170 dy1=(y_center ´1.5∗ radius ) / nodes_y1 ;171 dy2 =(3∗ radius ) / nodes_y2 ;172 dy3=(y´y_center ´1.5∗ radius ) / nodes_y3 ;173174 f o r ( i n t i =0; i<=nodes_y1+nodes_y2+nodes_y3 ´1; i++)175 {176 f o r ( i n t k =0; k<=nodes_x1+nodes_x2+nodes_x3 ´1; k++)177 {178 i f ( k==0)179 {180 node_matrix [ i ] [ k ] . x_point=dx1 / 2 ;181 node_matrix [ i ] [ k ] . rho=rho0 ;182 node_matrix [ i ] [ k ] . p s i _ e s t i m a t e d =10;183 node_matrix [ i ] [ k ] . psi =10;184 node_matrix [ i ] [ k ] . cp =0;185 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx1 ;186 node_matrix [ i ] [ k ] . comp =0;187 }188189 e l s e i f ( k>0 && k<=nodes_x1 ´1)190 {191192 node_matrix [ i ] [ k ] . x_point=node_matrix [ i ] [ k´1] . x_point+dx1 ;193 node_matrix [ i ] [ k ] . rho=rho0 ;194 node_matrix [ i ] [ k ] . p s i _ e s t i m a t e d =10;195 node_matrix [ i ] [ k ] . psi =10;196 node_matrix [ i ] [ k ] . cp =0;197 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx1 ;198 node_matrix [ i ] [ k ] . comp =0;199 }200201 e l s e i f ( k==nodes_x1 )202 {203204 node_matrix [ i ] [ k ] . x_point=x_center ´1.5∗ radius+dx2 / 2 ;205 node_matrix [ i ] [ k ] . rho=rho0 ;206 node_matrix [ i ] [ k ] . p s i _ e s t i m a t e d =10;207 node_matrix [ i ] [ k ] . psi =10;208 node_matrix [ i ] [ k ] . cp =0;
14
209 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx2 ;210 node_matrix [ i ] [ k ] . comp =0;211 }212213 e l s e i f ( k>nodes_x1 && k<=nodes_x1+nodes_x2 ´1)214 {215 node_matrix [ i ] [ k ] . x_point=node_matrix [ i ] [ k´1] . x_point+dx2 ;216 node_matrix [ i ] [ k ] . rho=rho0 ;217 node_matrix [ i ] [ k ] . p s i _ e s t i m a t e d =10;218 node_matrix [ i ] [ k ] . psi =10;219 node_matrix [ i ] [ k ] . cp =0;220 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx2 ;221 node_matrix [ i ] [ k ] . comp =0;222 }223224 e l s e i f ( k==nodes_x1+nodes_x2 )225 {226 node_matrix [ i ] [ k ] . x_point=x_center +1.5∗ radius+dx3 / 2 ;227 node_matrix [ i ] [ k ] . rho=rho0 ;228 node_matrix [ i ] [ k ] . p s i _ e s t i m a t e d =10;229 node_matrix [ i ] [ k ] . psi =10;230 node_matrix [ i ] [ k ] . cp =0;231 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx3 ;232 node_matrix [ i ] [ k ] . comp =0;233 }234235 e l s e236 {237 node_matrix [ i ] [ k ] . x_point=node_matrix [ i ] [ k´1] . x_point+dx3 ;238 node_matrix [ i ] [ k ] . rho=rho0 ;239 node_matrix [ i ] [ k ] . p s i _ e s t i m a t e d =10;240 node_matrix [ i ] [ k ] . psi =10;241 node_matrix [ i ] [ k ] . cp =0;242 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx3 ;243 node_matrix [ i ] [ k ] . comp =0;244 }245246 i f ( i==0)247 {248 node_matrix [ i ] [ k ] . y_point=dy1 / 2 ;249 node_matrix [ i ] [ k ] . rho=rho0 ;250 node_matrix [ i ] [ k ] . p s i _ e s t i m a t e d =10;251 node_matrix [ i ] [ k ] . psi =10;252 node_matrix [ i ] [ k ] . cp =0;253 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy1 ;254 node_matrix [ i ] [ k ] . comp =0;255 }256257 e l s e i f ( i>0 && i<=nodes_y1 ´1)258 {259 node_matrix [ i ] [ k ] . y_point=node_matrix [ i´1] [ k ] . y_point+dy1 ;260 node_matrix [ i ] [ k ] . rho=rho0 ;261 node_matrix [ i ] [ k ] . p s i _ e s t i m a t e d =10;262 node_matrix [ i ] [ k ] . psi =10;263 node_matrix [ i ] [ k ] . cp =0;264 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy1 ;265 node_matrix [ i ] [ k ] . comp =0;266 }267268 e l s e i f ( i==nodes_y1 )269 {270 node_matrix [ i ] [ k ] . y_point=y_center ´1.5∗ radius+dy2 / 2 ;271 node_matrix [ i ] [ k ] . rho=rho0 ;272 node_matrix [ i ] [ k ] . p s i _ e s t i m a t e d =10;273 node_matrix [ i ] [ k ] . psi =10;274 node_matrix [ i ] [ k ] . cp =0;275 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy2 ;276 node_matrix [ i ] [ k ] . comp =0;277 }278279 e l s e i f ( i>nodes_y1 && i<=nodes_y1+nodes_y2 ´1)280 {281282 node_matrix [ i ] [ k ] . y_point=node_matrix [ i´1] [ k ] . y_point+dy2 ;283 node_matrix [ i ] [ k ] . rho=rho0 ;284 node_matrix [ i ] [ k ] . p s i _ e s t i m a t e d =10;285 node_matrix [ i ] [ k ] . psi =10;
15
286 node_matrix [ i ] [ k ] . cp =0;287 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy2 ;288 node_matrix [ i ] [ k ] . comp =0;289 }290291 e l s e i f ( i==nodes_y1+nodes_y2 )292 {293294 node_matrix [ i ] [ k ] . y_point=y_center +1.5∗ radius+dy3 / 2 ;295 node_matrix [ i ] [ k ] . rho=rho0 ;296 node_matrix [ i ] [ k ] . p s i _ e s t i m a t e d =10;297 node_matrix [ i ] [ k ] . psi =10;298 node_matrix [ i ] [ k ] . cp =0;299 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy3 ;300 node_matrix [ i ] [ k ] . comp =0;301 }302303 e l s e304 {305306 node_matrix [ i ] [ k ] . y_point=node_matrix [ i´1] [ k ] . y_point+dy3 ;307 node_matrix [ i ] [ k ] . rho=rho0 ;308 node_matrix [ i ] [ k ] . p s i _ e s t i m a t e d =10;309 node_matrix [ i ] [ k ] . psi =10;310 node_matrix [ i ] [ k ] . cp =0;311 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy3 ;312 node_matrix [ i ] [ k ] . comp =0;313 }314 }315 }316317318 f o r ( i n t i =0; i<=nodes_y1+nodes_y2+nodes_y3 ´1; i++)319 {320 f o r ( i n t k =0; k<=nodes_x1+nodes_x2+nodes_x3 ´1; k++)321 {322323 i f ( sqrt ( pow ( node_matrix [ i ] [ k ] . x_point´x /2 ,2)+pow ( node_matrix [ i ] [ k ] .Ðâ
y_point´y /2 ,2) )<=radius )324 {325 node_matrix [ i ] [ k ] . rho =0;326 }327 }328 }329330 f o r ( i n t i =0; i<=nodes_y1+nodes_y2+nodes_y3 ´1; i++)331 {332 f o r ( i n t k =0; k<=nodes_x1+nodes_x2+nodes_x3 ´1; k++)333 {334335 i f ( sqrt ( pow ( node_matrix [ i ] [ k ] . x_point´x /2 ,2)+pow ( node_matrix [ i ] [ k ] .Ðâ
y_point´y /2 ,2) )<=(radius ) )336 {337 node_matrix [ i ] [ k ] . comp =1;338 }339 }340 }341 }342343 void d e n s i t y _ c a l c u l a t i o n ( node node_matrix [ nodes_y1+nodes_y2+nodes_y3 ] [ nodes_x1+Ðâ
nodes_x2+nodes_x3 ] , double rho0 )344 {345 f o r ( i n t i =0; i<=nodes_y1+nodes_y2+nodes_y3 ´1; i++)346 {347 f o r ( i n t k =0; k<=nodes_x1+nodes_x2+nodes_x3 ´1; k++)348 {349350 i f ( k==0 && i !=( nodes_y1+nodes_y2+nodes_y3 ´1) && i !=0)351 {352 node_matrix [ i ] [ k ] . rhow=rho0 / node_matrix [ i ] [ k ] . rho ;353 node_matrix [ i ] [ k ] . rhon=( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+Ðâ
node_matrix [ i +1] [ k ] . c a r a _ v e r t i c a l /2) /( node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l /(2∗ rho0 / node_matrix [ i ] [ k ] . rho )+node_matrix [ i +1] [ kÐâ
] . c a r a _ v e r t i c a l /(2∗ rho0 / node_matrix [ i +1] [ k ] . rho ) ) ;354 node_matrix [ i ] [ k ] . rhos=( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+Ðâ
node_matrix [ i´1] [ k ] . c a r a _ v e r t i c a l /2) /( node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l /(2∗ rho0 / node_matrix [ i ] [ k ] . rho )+node_matrix [ i´1] [ kÐâ
16
] . c a r a _ v e r t i c a l /(2∗ rho0 / node_matrix [ i´1] [ k ] . rho ) ) ;355 node_matrix [ i ] [ k ] . rhoe=( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+Ðâ
node_matrix [ i ] [ k +1] . c a r a _ h o r i t z o n t a l /2) /( node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l /(2∗ rho0 / node_matrix [ i ] [ k ] . rho )+node_matrix [ i ] [Ðâ
k +1] . c a r a _ h o r i t z o n t a l /(2∗ rho0 / node_matrix [ i ] [ k +1] . rho ) ) ;356 }357358 e l s e i f ( k==(nodes_x1+nodes_x2+nodes_x3 ´1) && i !=( nodes_y1+nodes_y2+Ðâ
nodes_y3 ´1) && i !=0)359 {360 node_matrix [ i ] [ k ] . rhow=( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+Ðâ
node_matrix [ i ] [ k´1] . c a r a _ h o r i t z o n t a l /2) /( node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l /(2∗ rho0 / node_matrix [ i ] [ k ] . rho )+node_matrix [ i ] [Ðâ
k´1] . c a r a _ h o r i t z o n t a l /(2∗ rho0 / node_matrix [ i ] [ k´1] . rho ) ) ;361 node_matrix [ i ] [ k ] . rhon=( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+Ðâ
node_matrix [ i +1] [ k ] . c a r a _ v e r t i c a l /2) /( node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l /(2∗ rho0 / node_matrix [ i ] [ k ] . rho )+node_matrix [ i +1] [ kÐâ
] . c a r a _ v e r t i c a l /(2∗ rho0 / node_matrix [ i +1] [ k ] . rho ) ) ;362 node_matrix [ i ] [ k ] . rhos=( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+Ðâ
node_matrix [ i´1] [ k ] . c a r a _ v e r t i c a l /2) /( node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l /(2∗ rho0 / node_matrix [ i ] [ k ] . rho )+node_matrix [ i´1] [ kÐâ
] . c a r a _ v e r t i c a l /(2∗ rho0 / node_matrix [ i´1] [ k ] . rho ) ) ;363 node_matrix [ i ] [ k ] . rhoe=rho0 / node_matrix [ i ] [ k ] . rho ;364 }365366 e l s e i f ( i==(nodes_y1+nodes_y2+nodes_y3 ´1) && k !=0 && k !=( nodes_x1+Ðâ
nodes_x2+nodes_x3 ´1) )367 {368 node_matrix [ i ] [ k ] . rhow=( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+Ðâ
node_matrix [ i ] [ k´1] . c a r a _ h o r i t z o n t a l /2) /( node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l /(2∗ rho0 / node_matrix [ i ] [ k ] . rho )+node_matrix [ i ] [Ðâ
k´1] . c a r a _ h o r i t z o n t a l /(2∗ rho0 / node_matrix [ i ] [ k´1] . rho ) ) ;369 node_matrix [ i ] [ k ] . rhon=rho0 / node_matrix [ i ] [ k ] . rho ;370 node_matrix [ i ] [ k ] . rhos=( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+Ðâ
node_matrix [ i´1] [ k ] . c a r a _ v e r t i c a l /2) /( node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l /(2∗ rho0 / node_matrix [ i ] [ k ] . rho )+node_matrix [ i´1] [ kÐâ
] . c a r a _ v e r t i c a l /(2∗ rho0 / node_matrix [ i´1] [ k ] . rho ) ) ;371 node_matrix [ i ] [ k ] . rhoe=( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+Ðâ
node_matrix [ i ] [ k +1] . c a r a _ h o r i t z o n t a l /2) /( node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l /(2∗ rho0 / node_matrix [ i ] [ k ] . rho )+node_matrix [ i ] [Ðâ
k +1] . c a r a _ h o r i t z o n t a l /(2∗ rho0 / node_matrix [ i ] [ k +1] . rho ) ) ;372 }373374 e l s e i f ( i==0 && k !=0 && k !=( nodes_x1+nodes_x2+nodes_x3 ´1) )375 {376377 node_matrix [ i ] [ k ] . rhow=( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+Ðâ
node_matrix [ i ] [ k´1] . c a r a _ h o r i t z o n t a l /2) /( node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l /(2∗ rho0 / node_matrix [ i ] [ k ] . rho )+node_matrix [ i ] [Ðâ
k´1] . c a r a _ h o r i t z o n t a l /(2∗ rho0 / node_matrix [ i ] [ k´1] . rho ) ) ;378 node_matrix [ i ] [ k ] . rhon=( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+Ðâ
node_matrix [ i +1] [ k ] . c a r a _ v e r t i c a l /2) /( node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l /(2∗ rho0 / node_matrix [ i ] [ k ] . rho )+node_matrix [ i +1] [ kÐâ
] . c a r a _ v e r t i c a l /(2∗ rho0 / node_matrix [ i +1] [ k ] . rho ) ) ;379 node_matrix [ i ] [ k ] . rhos=rho0 / node_matrix [ i ] [ k ] . rho ;380 node_matrix [ i ] [ k ] . rhoe=( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+Ðâ
node_matrix [ i ] [ k +1] . c a r a _ h o r i t z o n t a l /2) /( node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l /(2∗ rho0 / node_matrix [ i ] [ k ] . rho )+node_matrix [ i ] [Ðâ
k +1] . c a r a _ h o r i t z o n t a l /(2∗ rho0 / node_matrix [ i ] [ k +1] . rho ) ) ;381 }382383 e l s e i f ( i==0 && k==0)384 {385 node_matrix [ i ] [ k ] . rhow=rho0 / node_matrix [ i ] [ k ] . rho ;386 node_matrix [ i ] [ k ] . rhon=( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+Ðâ
node_matrix [ i +1] [ k ] . c a r a _ v e r t i c a l /2) /( node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l /(2∗ rho0 / node_matrix [ i ] [ k ] . rho )+node_matrix [ i +1] [ kÐâ
] . c a r a _ v e r t i c a l /(2∗ rho0 / node_matrix [ i +1] [ k ] . rho ) ) ;387 node_matrix [ i ] [ k ] . rhos=rho0 / node_matrix [ i ] [ k ] . rho ;388 node_matrix [ i ] [ k ] . rhoe=( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+Ðâ
node_matrix [ i ] [ k +1] . c a r a _ h o r i t z o n t a l /2) /( node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l /(2∗ rho0 / node_matrix [ i ] [ k ] . rho )+node_matrix [ i ] [Ðâ
k +1] . c a r a _ h o r i t z o n t a l /(2∗ rho0 / node_matrix [ i ] [ k +1] . rho ) ) ;389 }390391 e l s e i f ( i==0 && k==(nodes_x1+nodes_x2+nodes_x3 ´1) )392 {
17
393 node_matrix [ i ] [ k ] . rhow=( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+Ðâ
node_matrix [ i ] [ k´1] . c a r a _ h o r i t z o n t a l /2) /( node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l /(2∗ rho0 / node_matrix [ i ] [ k ] . rho )+node_matrix [ i ] [Ðâ
k´1] . c a r a _ h o r i t z o n t a l /(2∗ rho0 / node_matrix [ i ] [ k´1] . rho ) ) ; ;394 node_matrix [ i ] [ k ] . rhon=( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+Ðâ
node_matrix [ i +1] [ k ] . c a r a _ v e r t i c a l /2) /( node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l /(2∗ rho0 / node_matrix [ i ] [ k ] . rho )+node_matrix [ i +1] [ kÐâ
] . c a r a _ v e r t i c a l /(2∗ rho0 / node_matrix [ i +1] [ k ] . rho ) ) ;395 node_matrix [ i ] [ k ] . rhos=rho0 / node_matrix [ i ] [ k ] . rho ;396 node_matrix [ i ] [ k ] . rhoe=rho0 / node_matrix [ i ] [ k ] . rho ;397 }398399 e l s e i f ( i==(nodes_y1+nodes_y2+nodes_y3 ´1) && k==0)400 {401 node_matrix [ i ] [ k ] . rhow=rho0 / node_matrix [ i ] [ k ] . rho ;402 node_matrix [ i ] [ k ] . rhon=rho0 / node_matrix [ i ] [ k ] . rho ;403 node_matrix [ i ] [ k ] . rhos=( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+Ðâ
node_matrix [ i´1] [ k ] . c a r a _ v e r t i c a l /2) /( node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l /(2∗ rho0 / node_matrix [ i ] [ k ] . rho )+node_matrix [ i´1] [ kÐâ
] . c a r a _ v e r t i c a l /(2∗ rho0 / node_matrix [ i´1] [ k ] . rho ) ) ;404 node_matrix [ i ] [ k ] . rhoe=( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+Ðâ
node_matrix [ i ] [ k +1] . c a r a _ h o r i t z o n t a l /2) /( node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l /(2∗ rho0 / node_matrix [ i ] [ k ] . rho )+node_matrix [ i ] [Ðâ
k +1] . c a r a _ h o r i t z o n t a l /(2∗ rho0 / node_matrix [ i ] [ k +1] . rho ) ) ;405 }406407 e l s e i f ( i==(nodes_y1+nodes_y2+nodes_y3 ´1) && k==(nodes_x1+nodes_x2+Ðâ
nodes_x3 ´1) )408 {409 node_matrix [ i ] [ k ] . rhow=( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+Ðâ
node_matrix [ i ] [ k´1] . c a r a _ h o r i t z o n t a l /2) /( node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l /(2∗ rho0 / node_matrix [ i ] [ k ] . rho )+node_matrix [ i ] [Ðâ
k´1] . c a r a _ h o r i t z o n t a l /(2∗ rho0 / node_matrix [ i ] [ k´1] . rho ) ) ;410 node_matrix [ i ] [ k ] . rhon=rho0 / node_matrix [ i ] [ k ] . rho ;411 node_matrix [ i ] [ k ] . rhos=( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+Ðâ
node_matrix [ i´1] [ k ] . c a r a _ v e r t i c a l /2) /( node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l /(2∗ rho0 / node_matrix [ i ] [ k ] . rho )+node_matrix [ i´1] [ kÐâ
] . c a r a _ v e r t i c a l /(2∗ rho0 / node_matrix [ i´1] [ k ] . rho ) ) ;412 node_matrix [ i ] [ k ] . rhoe=rho0 / node_matrix [ i ] [ k ] . rho ;413 }414415 e l s e416 {417 node_matrix [ i ] [ k ] . rhow=( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+Ðâ
node_matrix [ i ] [ k´1] . c a r a _ h o r i t z o n t a l /2) /( node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l /(2∗ rho0 / node_matrix [ i ] [ k ] . rho )+node_matrix [ i ] [Ðâ
k´1] . c a r a _ h o r i t z o n t a l /(2∗ rho0 / node_matrix [ i ] [ k´1] . rho ) ) ;418 node_matrix [ i ] [ k ] . rhon=( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+Ðâ
node_matrix [ i +1] [ k ] . c a r a _ v e r t i c a l /2) /( node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l /(2∗ rho0 / node_matrix [ i ] [ k ] . rho )+node_matrix [ i +1] [ kÐâ
] . c a r a _ v e r t i c a l /(2∗ rho0 / node_matrix [ i +1] [ k ] . rho ) ) ;419 node_matrix [ i ] [ k ] . rhos=( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+Ðâ
node_matrix [ i´1] [ k ] . c a r a _ v e r t i c a l /2) /( node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l /(2∗ rho0 / node_matrix [ i ] [ k ] . rho )+node_matrix [ i´1] [ kÐâ
] . c a r a _ v e r t i c a l /(2∗ rho0 / node_matrix [ i´1] [ k ] . rho ) ) ;420 node_matrix [ i ] [ k ] . rhoe=( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+Ðâ
node_matrix [ i ] [ k +1] . c a r a _ h o r i t z o n t a l /2) /( node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l /(2∗ rho0 / node_matrix [ i ] [ k ] . rho )+node_matrix [ i ] [Ðâ
k +1] . c a r a _ h o r i t z o n t a l /(2∗ rho0 / node_matrix [ i ] [ k +1] . rho ) ) ;421 }422 }423 }424425 f o r ( i n t i =0; i<=nodes_y1+nodes_y2+nodes_y3 ´1; i++)426 {427 f o r ( i n t k =0; k<=nodes_x1+nodes_x2+nodes_x3 ´1; k++)428 {429430 i f ( node_matrix [ i ] [ k ] . rhow >10000)431 {432 node_matrix [ i ] [ k ] . rhow =0;433 }434435 i f ( node_matrix [ i ] [ k ] . rhoe >10000)436 {437 node_matrix [ i ] [ k ] . rhoe =0;438 }
18
439440 i f ( node_matrix [ i ] [ k ] . rhon >10000)441 {442 node_matrix [ i ] [ k ] . rhon =0;443 }444445 i f ( node_matrix [ i ] [ k ] . rhos >10000)446 {447 node_matrix [ i ] [ k ] . rhos =0;448 }449 }450 }451 }452453 void c o e f f i c i e n t _ c a l c u l a t i o n ( node node_matrix [ nodes_y1+nodes_y2+nodes_y3 ] [ nodes_x1+Ðâ
nodes_x2+nodes_x3 ] , double rho0 )454455 {456457 f o r ( i n t i =0; i<=nodes_y1+nodes_y2+nodes_y3 ´1; i++)458 {459 f o r ( i n t k =0; k<=nodes_x1+nodes_x2+nodes_x3 ´1; k++)460 {461462 i f ( k==0 && i !=0 && i !=( nodes_y1+nodes_y2+nodes_y3 ´1) )463 {464 node_matrix [ i ] [ k ] . ae=node_matrix [ i ] [ k ] . rhoe ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l /( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+ node_matrix [ i ] [Ðâ
k +1] . c a r a _ h o r i t z o n t a l /2) ;465 node_matrix [ i ] [ k ] . aw =0;466 node_matrix [ i ] [ k ] . an=node_matrix [ i ] [ k ] . rhon ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+ node_matrix [ iÐâ
+1] [ k ] . c a r a _ v e r t i c a l /2) ;467 node_matrix [ i ] [ k ] . as=node_matrix [ i ] [ k ] . rhos ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+ node_matrix [ iÐâ
´1] [ k ] . c a r a _ v e r t i c a l /2) ;468 node_matrix [ i ] [ k ] . ap=node_matrix [ i ] [ k ] . ae+node_matrix [ i ] [ k ] . aw+Ðâ
node_matrix [ i ] [ k ] . an+node_matrix [ i ] [ k ] . as ;469 }470471 e l s e i f ( k==0 && i==(nodes_y1+nodes_y2+nodes_y3 ´1) )472 {473 node_matrix [ i ] [ k ] . ae=node_matrix [ i ] [ k ] . rhoe ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l /( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+ node_matrix [ i ] [Ðâ
k +1] . c a r a _ h o r i t z o n t a l /2) ;474 node_matrix [ i ] [ k ] . aw =0;475 node_matrix [ i ] [ k ] . an =0;476 node_matrix [ i ] [ k ] . as=node_matrix [ i ] [ k ] . rhos ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+ node_matrix [ iÐâ
´1] [ k ] . c a r a _ v e r t i c a l /2) ;477 node_matrix [ i ] [ k ] . ap=node_matrix [ i ] [ k ] . ae+node_matrix [ i ] [ k ] . aw+Ðâ
node_matrix [ i ] [ k ] . an+node_matrix [ i ] [ k ] . as ;478 }479480 e l s e i f ( k==0 && i==0)481 {482 node_matrix [ i ] [ k ] . ae=node_matrix [ i ] [ k ] . rhoe ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l /( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+ node_matrix [ i ] [Ðâ
k +1] . c a r a _ h o r i t z o n t a l /2) ;483 node_matrix [ i ] [ k ] . aw =0;484 node_matrix [ i ] [ k ] . an=node_matrix [ i ] [ k ] . rhon ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+ node_matrix [ iÐâ
+1] [ k ] . c a r a _ v e r t i c a l /2) ;485 node_matrix [ i ] [ k ] . as =0;486 node_matrix [ i ] [ k ] . ap=node_matrix [ i ] [ k ] . ae+node_matrix [ i ] [ k ] . aw+Ðâ
node_matrix [ i ] [ k ] . an+node_matrix [ i ] [ k ] . as ;487 }488489 e l s e i f ( k==(nodes_x1+nodes_x2+nodes_x3 ´1) && i !=0 && i !=( nodes_y1+nodes_y2Ðâ
+nodes_y3 ´1) )490 {491 node_matrix [ i ] [ k ] . ae =0;492 node_matrix [ i ] [ k ] . aw=node_matrix [ i ] [ k ] . rhow ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l /( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+ node_matrix [ i ] [Ðâ
k´1] . c a r a _ h o r i t z o n t a l /2) ;493 node_matrix [ i ] [ k ] . an=node_matrix [ i ] [ k ] . rhon ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+ node_matrix [ iÐâ
19
+1] [ k ] . c a r a _ v e r t i c a l /2) ;494 node_matrix [ i ] [ k ] . as=node_matrix [ i ] [ k ] . rhos ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+ node_matrix [ iÐâ
´1] [ k ] . c a r a _ v e r t i c a l /2) ;495 node_matrix [ i ] [ k ] . ap=node_matrix [ i ] [ k ] . ae+node_matrix [ i ] [ k ] . aw+Ðâ
node_matrix [ i ] [ k ] . an+node_matrix [ i ] [ k ] . as ;496 }497498 e l s e i f ( k==(nodes_x1+nodes_x2+nodes_x3 ´1) && i==0)499 {500 node_matrix [ i ] [ k ] . ae =0;501 node_matrix [ i ] [ k ] . aw=node_matrix [ i ] [ k ] . rhow ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l /( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+ node_matrix [ i ] [Ðâ
k´1] . c a r a _ h o r i t z o n t a l /2) ;502 node_matrix [ i ] [ k ] . an=node_matrix [ i ] [ k ] . rhon ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+ node_matrix [ iÐâ
+1] [ k ] . c a r a _ v e r t i c a l /2) ;503 node_matrix [ i ] [ k ] . as =0;504 node_matrix [ i ] [ k ] . ap=node_matrix [ i ] [ k ] . ae+node_matrix [ i ] [ k ] . aw+Ðâ
node_matrix [ i ] [ k ] . an+node_matrix [ i ] [ k ] . as ;505 }506507 e l s e i f ( k==(nodes_x1+nodes_x2+nodes_x3 ´1) && i==(nodes_y1+nodes_y2+Ðâ
nodes_y3 ´1) )508 {509 node_matrix [ i ] [ k ] . ae =0;510 node_matrix [ i ] [ k ] . aw=node_matrix [ i ] [ k ] . rhow ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l /( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+ node_matrix [ i ] [Ðâ
k´1] . c a r a _ h o r i t z o n t a l /2) ;511 node_matrix [ i ] [ k ] . an =0;512 node_matrix [ i ] [ k ] . as=node_matrix [ i ] [ k ] . rhos ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+ node_matrix [ iÐâ
´1] [ k ] . c a r a _ v e r t i c a l /2) ;513 node_matrix [ i ] [ k ] . ap=node_matrix [ i ] [ k ] . ae+node_matrix [ i ] [ k ] . aw+Ðâ
node_matrix [ i ] [ k ] . an+node_matrix [ i ] [ k ] . as ;514 }515516 e l s e i f ( i==(nodes_y1+nodes_y2+nodes_y3 ´1) && k !=0 && k !=( nodes_x1+nodes_x2Ðâ
+nodes_x3 ´1) )517 {518 node_matrix [ i ] [ k ] . ae=node_matrix [ i ] [ k ] . rhoe ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l /( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+ node_matrix [ i ] [Ðâ
k +1] . c a r a _ h o r i t z o n t a l /2) ;519 node_matrix [ i ] [ k ] . aw=node_matrix [ i ] [ k ] . rhow ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l /( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+ node_matrix [ i ] [Ðâ
k´1] . c a r a _ h o r i t z o n t a l /2) ;520 node_matrix [ i ] [ k ] . an =0;521 node_matrix [ i ] [ k ] . as=node_matrix [ i ] [ k ] . rhos ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+ node_matrix [ iÐâ
´1] [ k ] . c a r a _ v e r t i c a l /2) ;522 node_matrix [ i ] [ k ] . ap=node_matrix [ i ] [ k ] . ae+node_matrix [ i ] [ k ] . aw+Ðâ
node_matrix [ i ] [ k ] . an+node_matrix [ i ] [ k ] . as ;523 }524525 e l s e i f ( i==0 && k !=0 && k !=( nodes_x1+nodes_x2+nodes_x3 ´1) )526 {527 node_matrix [ i ] [ k ] . ae=node_matrix [ i ] [ k ] . rhoe ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l /( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+ node_matrix [ i ] [Ðâ
k +1] . c a r a _ h o r i t z o n t a l /2) ;528 node_matrix [ i ] [ k ] . aw=node_matrix [ i ] [ k ] . rhow ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l /( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+ node_matrix [ i ] [Ðâ
k´1] . c a r a _ h o r i t z o n t a l /2) ;529 node_matrix [ i ] [ k ] . an=node_matrix [ i ] [ k ] . rhon ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+ node_matrix [ iÐâ
+1] [ k ] . c a r a _ v e r t i c a l /2) ;530 node_matrix [ i ] [ k ] . as =0;531 node_matrix [ i ] [ k ] . ap=node_matrix [ i ] [ k ] . ae+node_matrix [ i ] [ k ] . aw+Ðâ
node_matrix [ i ] [ k ] . an+node_matrix [ i ] [ k ] . as ;532 }533534 e l s e535 {536 node_matrix [ i ] [ k ] . ae=node_matrix [ i ] [ k ] . rhoe ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l /( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+ node_matrix [ i ] [Ðâ
k +1] . c a r a _ h o r i t z o n t a l /2) ;537 node_matrix [ i ] [ k ] . aw=node_matrix [ i ] [ k ] . rhow ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l /( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+ node_matrix [ i ] [Ðâ
20
k´1] . c a r a _ h o r i t z o n t a l /2) ;538 node_matrix [ i ] [ k ] . an=node_matrix [ i ] [ k ] . rhon ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+ node_matrix [ iÐâ
+1] [ k ] . c a r a _ v e r t i c a l /2) ;539 node_matrix [ i ] [ k ] . as=node_matrix [ i ] [ k ] . rhos ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+ node_matrix [ iÐâ
´1] [ k ] . c a r a _ v e r t i c a l /2) ;540 node_matrix [ i ] [ k ] . ap=node_matrix [ i ] [ k ] . ae+node_matrix [ i ] [ k ] . aw+Ðâ
node_matrix [ i ] [ k ] . an+node_matrix [ i ] [ k ] . as ;541 }542 }543 }544 }545546 void solver ( node node_matrix [ nodes_y1+nodes_y2+nodes_y3 ] [ nodes_x1+nodes_x2+nodes_x3 ] , Ðâ
y_center )547 {548549 error =10;550551 whi le ( error>sigma )552553 {554 f o r ( i n t i =0; i<=nodes_y1+nodes_y2+nodes_y3 ´1; i++)555 {556 f o r ( i n t k =0; k<=nodes_x1+nodes_x2+nodes_x3 ´1; k++)557 {558559 i f ( k==0)560 {561 node_matrix [ i ] [ k ] . psi=node_matrix [ i ] [ k ] . y_point ∗ V0 ;562 }563564 e l s e i f ( k==(nodes_x1+nodes_x2+nodes_x3 ´1) )565 {566 node_matrix [ i ] [ k ] . psi=node_matrix [ i ] [ 0 ] . psi ;567 }568569 e l s e i f ( i==0 && k !=0 && k !=( nodes_x1+nodes_x3 ´1) )570 {571 node_matrix [ i ] [ k ] . psi=node_matrix [ i ] [ k ] . y_point ∗ V0 ;572 }573574 e l s e i f ( i==(nodes_y1+nodes_y2+nodes_y3 ´1) && k !=0 && k !=( nodes_x1+nodes_x2Ðâ
+nodes_x3 ´1) )575 {576 node_matrix [ i ] [ k ] . psi=node_matrix [ i ] [ k ] . y_point ∗ V0 ;577 }578579 e l s e i f ( node_matrix [ i ] [ k ] . rho==0)580 {581 node_matrix [ i ] [ k ] . psi=ps i_c ili nd re ;582 }583584 e l s e585 {586 node_matrix [ i ] [ k ] . psi=( node_matrix [ i ] [ k ] . ae ∗ node_matrix [ i ] [ k +1] . psi+Ðâ
node_matrix [ i ] [ k ] . aw ∗ node_matrix [ i ] [ k´1] . psi+node_matrix [ i ] [ k ] . an ∗Ðâ
node_matrix [ i +1] [ k ] . psi+node_matrix [ i ] [ k ] . as ∗ node_matrix [ i´1] [ k ] .Ðâ
psi ) / node_matrix [ i ] [ k ] . ap ;587 }588 }589 }590591592 e r r o r _ i t e r a t i o n =0;593594 f o r ( i n t i =0; i<=(nodes_y1+nodes_y2+nodes_y3 ´1) ; i++)595 {596 f o r ( i n t k =0; k<=(nodes_x1+nodes_x2+nodes_x3 ´1) ; k++)597 {598 i f ( fabs ( node_matrix [ i ] [ k ] . psi´node_matrix [ i ] [ k ] . p s i _ e s t i m a t e d )>Ðâ
e r r o r _ i t e r a t i o n )599600 {
21
601602 e r r o r _ i t e r a t i o n=fabs ( node_matrix [ i ] [ k ] . psi´node_matrix [ i ] [ k ] .Ðâ
p s i _ e s t i m a t e d ) ;603 }604 }605 }606607 error=e r r o r _ i t e r a t i o n ;608609 f o r ( i n t i =0; i<=(nodes_y1+nodes_y2+nodes_y3 ´1) ; i++)610 {611 f o r ( i n t k =0; k<=(nodes_x1+nodes_x2+nodes_x3 ´1) ; k++)612 {613 node_matrix [ i ] [ k ] . p s i _ e s t i m a t e d=node_matrix [ i ] [ k ] . psi ;614 }615 }616617 }618619 //CHECK THE VELUE OF THE CIRCULATION620621 e r r o r _ c i r c u l a t i o n =0;622623624 f o r ( i n t k=nodes_x1 ; k<=nodes_x1+nodes_x2 ´1; k++)625 {626 e r r o r _ c i r c u l a t i o n=e r r o r _ c i r c u l a t i o n+node_matrix [ nodes_y1 ] [ k ] . rhos ∗( node_matrix [Ðâ
nodes_y1 ] [ k ] . psi´node_matrix [ nodes_y1 ´1] [ k ] . psi ) /( node_matrix [ nodes_y1 ] [ k ] .Ðâ
c a r a _ v e r t i c a l /2+ node_matrix [ nodes_y1 ´1] [ k ] . c a r a _ v e r t i c a l /2) ∗ node_matrix [Ðâ
nodes_y1 ] [ k ] . c a r a _ h o r i t z o n t a l ;627 }628629 f o r ( i n t k=nodes_x1 ; k<=nodes_x1+nodes_x2 ´1; k++)630 {631 e r r o r _ c i r c u l a t i o n=error_circulation´node_matrix [ nodes_y1+nodes_y2 ´1] [ k ] . rhon ∗(Ðâ
node_matrix [ nodes_y1+nodes_y2 ] [ k ] . psi´node_matrix [ nodes_y1+nodes_y2 ´1] [ k ] . psi )Ðâ
/( node_matrix [ nodes_y1+nodes_y2 ] [ k ] . c a r a _ v e r t i c a l /2+ node_matrix [ nodes_y1+Ðâ
nodes_y2 ´1] [ k ] . c a r a _ v e r t i c a l /2) ∗ node_matrix [ nodes_y1+nodes_y2 ´1] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l ;632 }633634 f o r ( i n t i=nodes_y1 ; i<=nodes_y1+nodes_y2 ´1; i++)635 {636 e r r o r _ c i r c u l a t i o n=e r r o r _ c i r c u l a t i o n+node_matrix [ i ] [ nodes_x1 ] . rhow ∗( node_matrix [ i ] [Ðâ
c a r a _ h o r i t z o n t a l /2+ node_matrix [ i ] [ nodes_x1 ´1] . c a r a _ h o r i t z o n t a l /2) ∗ node_matrix [ iÐâ
] [ nodes_x1 ] . c a r a _ v e r t i c a l ;637 }638639 f o r ( i n t i=nodes_y1 ; i<=nodes_y1+nodes_y2 ´1; i++)640 {641 e r r o r _ c i r c u l a t i o n=error_circulation´node_matrix [ i ] [ nodes_x1+nodes_x2 ´1] . rhoe ∗(Ðâ
node_matrix [ i ] [ nodes_x1+nodes_x2 ] . psi´node_matrix [ i ] [ nodes_x1+nodes_x2 ´1] . psi )Ðâ
/( node_matrix [ i ] [ nodes_x1+nodes_x2 ] . c a r a _ h o r i t z o n t a l /2+ node_matrix [ i ] [ nodes_x1+Ðâ
nodes_x2 ´1] . c a r a _ h o r i t z o n t a l /2) ∗ node_matrix [ i ] [ nodes_x1+nodes_x2 ´1] .Ðâ
c a r a _ v e r t i c a l ;642 }643644 cout<<error_circulation <<" \n" ;645 e r r o r _ c i r c u l a t i o n=e r r o r _ c i r c u l a t i o n +125.663706144; //Imposed c i r c u l a t i o n added646647 }648649 void v e l o c i t y _ a n d _ c p ( node node_matrix [ nodes_y1+nodes_y2+nodes_y3 ] [ nodes_x1+nodes_x2+Ðâ
nodes_x3 ] )650 {651652 f o r ( i n t i =0; i<=nodes_y1+nodes_y2+nodes_y3 ´1; i++)653 {654 f o r ( i n t k =0; k<=nodes_x1+nodes_x2+nodes_x3 ´1; k++)655 {656 i f ( k==0 && i !=0 && i !=( nodes_y1+nodes_y2+nodes_y3 ´1) )657 {658 node_matrix [ i ] [ k ] . vyw =0;659 node_matrix [ i ] [ k ] . vxs=( node_matrix [ i ] [ k ] . rhos ) ∗( node_matrix [ i ] [ k ] .Ðâ
psi´node_matrix [ i´1] [ k ] . psi ) /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a lÐâ
/2+ node_matrix [ i´1] [ k ] . c a r a _ v e r t i c a l /2) ;
22
660 node_matrix [ i ] [ k ] . vxn=( node_matrix [ i ] [ k ] . rhon ) ∗( node_matrix [ i +1] [ kÐâ
] . psi´node_matrix [ i ] [ k ] . psi ) /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a lÐâ
/2+ node_matrix [ i +1] [ k ] . c a r a _ v e r t i c a l /2) ;661 node_matrix [ i ] [ k ] . vye =0;662 }663664 e l s e i f ( k==0 && i==(nodes_y1+nodes_y2+nodes_y3 ´1) )665 {666 node_matrix [ i ] [ k ] . vyw =0;667 node_matrix [ i ] [ k ] . vxs=( node_matrix [ i ] [ k ] . rhos ) ∗( node_matrix [ i ] [ k ] . psi´Ðâ
node_matrix [ i´1] [ k ] . psi ) /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+Ðâ
node_matrix [ i´1] [ k ] . c a r a _ v e r t i c a l /2) ;668 node_matrix [ i ] [ k ] . vxn=( node_matrix [ i ] [ k ] . rhon ) ∗( y∗V0´node_matrix [ i ] [ k ] .Ðâ
psi ) /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2) ;669 node_matrix [ i ] [ k ] . vye =0;670 }671672 e l s e i f ( k==0 && i==0)673 {674 node_matrix [ i ] [ k ] . vyw =0;675 node_matrix [ i ] [ k ] . vxn=( node_matrix [ i ] [ k ] . rhon ) ∗( node_matrix [ i +1] [ k ] . psiÐâ
´node_matrix [ i ] [ k ] . psi ) /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+Ðâ
node_matrix [ i +1] [ k ] . c a r a _ v e r t i c a l /2) ;676 node_matrix [ i ] [ k ] . vxs=( node_matrix [ i ] [ k ] . rhos ) ∗( node_matrix [ i ] [ k ] . psi )Ðâ
/( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2) ;677 node_matrix [ i ] [ k ] . vye =0;678 }679680 e l s e i f ( k==(nodes_x1+nodes_x2+nodes_x3 ´1) && i !=0 && i !=( nodes_y1+nodes_y2Ðâ
+nodes_y3 ´1) )681 {682683 node_matrix [ i ] [ k ] . vxs=( node_matrix [ i ] [ k ] . rhos ) ∗( node_matrix [ i ] [ k ] . psi´Ðâ
node_matrix [ i´1] [ k ] . psi ) /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+Ðâ
node_matrix [ i´1] [ k ] . c a r a _ v e r t i c a l /2) ;684 node_matrix [ i ] [ k ] . vxn=( node_matrix [ i ] [ k ] . rhon ) ∗( node_matrix [ i +1] [ k ] . psiÐâ
´node_matrix [ i ] [ k ] . psi ) /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+Ðâ
node_matrix [ i +1] [ k ] . c a r a _ v e r t i c a l /2) ;685 node_matrix [ i ] [ k ] . vyw =0;686 node_matrix [ i ] [ k ] . vye =0;687 }688689 e l s e i f ( k==(nodes_x1+nodes_x2+nodes_x3 ´1) && i==0)690 {691692 node_matrix [ i ] [ k ] . vxn=( node_matrix [ i ] [ k ] . rhon ) ∗( node_matrix [ i +1] [ k ] . psiÐâ
´node_matrix [ i ] [ k ] . psi ) /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+Ðâ
node_matrix [ i +1] [ k ] . c a r a _ v e r t i c a l /2) ;693 node_matrix [ i ] [ k ] . vxs=( node_matrix [ i ] [ k ] . rhos ) ∗( node_matrix [ i ] [ k ] . psi )Ðâ
/( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2) ;694 node_matrix [ i ] [ k ] . vyw =0;695 node_matrix [ i ] [ k ] . vye =0;696 }697698 e l s e i f ( k==(nodes_x1+nodes_x2+nodes_x3 ´1) && i==(nodes_y1+nodes_y2+Ðâ
nodes_y3 ´1) )699 {700 node_matrix [ i ] [ k ] . vxs=( node_matrix [ i ] [ k ] . rhos ) ∗( node_matrix [ i ] [ k ] . psi´Ðâ
node_matrix [ i´1] [ k ] . psi ) /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+Ðâ
node_matrix [ i´1] [ k ] . c a r a _ v e r t i c a l /2) ;701 node_matrix [ i ] [ k ] . vxn=( node_matrix [ i ] [ k ] . rhon ) ∗( y∗V0´node_matrix [ i ] [ k ] .Ðâ
psi ) /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2) ; ;702 node_matrix [ i ] [ k ] . vyw =0;703 node_matrix [ i ] [ k ] . vye =0;704 }705706 e l s e i f ( i==(nodes_y1+nodes_y2+nodes_y3 ´1) && k !=0 && k !=( nodes_x1+nodes_x2Ðâ
+nodes_x3 ´1) )707 {708 node_matrix [ i ] [ k ] . vyw=(´node_matrix [ i ] [ k ] . rhow ) ∗( node_matrix [ i ] [ k ] . psi´Ðâ
node_matrix [ i ] [ k´1] . psi ) /( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+Ðâ
node_matrix [ i ] [ k´1] . c a r a _ h o r i t z o n t a l /2) ;709 node_matrix [ i ] [ k ] . vxs=( node_matrix [ i ] [ k ] . rhos ) ∗( node_matrix [ i ] [ k ] . psi´Ðâ
node_matrix [ i´1] [ k ] . psi ) /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+Ðâ
node_matrix [ i´1] [ k ] . c a r a _ v e r t i c a l /2) ;710 node_matrix [ i ] [ k ] . vxn=( node_matrix [ i ] [ k ] . rhon ) ∗( y∗V0´node_matrix [ i ] [ k ] .Ðâ
psi ) /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2) ;
23
711 node_matrix [ i ] [ k ] . vye=(´node_matrix [ i ] [ k ] . rhoe ) ∗( node_matrix [ i ] [ k +1] .Ðâ
psi´node_matrix [ i ] [ k ] . psi ) /( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+Ðâ
node_matrix [ i ] [ k +1] . c a r a _ h o r i t z o n t a l /2) ;712 }713714 e l s e i f ( i==0 && k !=0 && k !=( nodes_x1+nodes_x2+nodes_x3 ´1) )715 {716 node_matrix [ i ] [ k ] . vyw=(´node_matrix [ i ] [ k ] . rhow ) ∗( node_matrix [ i ] [ k ] . psi´Ðâ
node_matrix [ i ] [ k´1] . psi ) /( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+Ðâ
node_matrix [ i ] [ k´1] . c a r a _ h o r i t z o n t a l /2) ;717 node_matrix [ i ] [ k ] . vxn=( node_matrix [ i ] [ k ] . rhon ) ∗( node_matrix [ i +1] [ k ] . psiÐâ
´node_matrix [ i ] [ k ] . psi ) /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+Ðâ
node_matrix [ i +1] [ k ] . c a r a _ v e r t i c a l /2) ;718 node_matrix [ i ] [ k ] . vxs=( node_matrix [ i ] [ k ] . rhos ) ∗( node_matrix [ i ] [ k ] . psi )Ðâ
/( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2) ;719 node_matrix [ i ] [ k ] . vye=(´node_matrix [ i ] [ k ] . rhoe ) ∗( node_matrix [ i ] [ k +1] .Ðâ
psi´node_matrix [ i ] [ k ] . psi ) /( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+Ðâ
node_matrix [ i ] [ k +1] . c a r a _ h o r i t z o n t a l /2) ;720 }721722 e l s e723 {724 node_matrix [ i ] [ k ] . vyw=(´node_matrix [ i ] [ k ] . rhow ) ∗( node_matrix [ i ] [ k ] . psi´Ðâ
node_matrix [ i ] [ k´1] . psi ) /( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+Ðâ
node_matrix [ i ] [ k´1] . c a r a _ h o r i t z o n t a l /2) ;725 node_matrix [ i ] [ k ] . vxs=( node_matrix [ i ] [ k ] . rhos ) ∗( node_matrix [ i ] [ k ] . psi´Ðâ
node_matrix [ i´1] [ k ] . psi ) /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+Ðâ
node_matrix [ i´1] [ k ] . c a r a _ v e r t i c a l /2) ;726 node_matrix [ i ] [ k ] . vxn=( node_matrix [ i ] [ k ] . rhon ) ∗( node_matrix [ i +1] [ k ] . psiÐâ
´node_matrix [ i ] [ k ] . psi ) /( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2+Ðâ
node_matrix [ i +1] [ k ] . c a r a _ v e r t i c a l /2) ;727 node_matrix [ i ] [ k ] . vye=(´node_matrix [ i ] [ k ] . rhoe ) ∗( node_matrix [ i ] [ k +1] .Ðâ
psi´node_matrix [ i ] [ k ] . psi ) /( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2+Ðâ
node_matrix [ i ] [ k +1] . c a r a _ h o r i t z o n t a l /2) ;728 }729 }730 }731732 // VELOCITY MODULUS AT EACH NODE CALCULATION733734 f o r ( i n t i =0; i<=nodes_y1+nodes_y2+nodes_y3 ´1; i++)735 {736 f o r ( i n t k =0; k<=nodes_x1+nodes_x2+nodes_x3 ´1; k++)737 {738 i f ( node_matrix [ i ] [ k ] . rho==0)739 {740 node_matrix [ i ] [ k ] . vxp =0;741 node_matrix [ i ] [ k ] . vyp =0;742 }743744 e l s e745 {746 node_matrix [ i ] [ k ] . vxp=( node_matrix [ i ] [ k ] . vxs+node_matrix [ i ] [ k ] . vxn ) / 2 ;747 node_matrix [ i ] [ k ] . vyp=( node_matrix [ i ] [ k ] . vye+node_matrix [ i ] [ k ] . vyw ) / 2 ;748 }749750 node_matrix [ i ] [ k ] . v=sqrt ( pow ( node_matrix [ i ] [ k ] . vxp , 2 )+pow ( node_matrix [ i ] [ kÐâ
] . vyp , 2 ) ) ;751 }752 }753754 // CP c a l c u l a t i o n755756 f o r ( i n t i=nodes_y1 ´1; i<=nodes_y1+nodes_y2 ´1; i++)757 {758 f o r ( i n t k=nodes_x1 ´1; k<=nodes_x1+nodes_x2 ´1; k++)759 {760 i f ( node_matrix [ i ] [ k ] . comp==0)761 {762 i f ( ( node_matrix [ i +1] [ k ] . comp==1) | | ( node_matrix [ i´1] [ k ] . comp==1) | | (Ðâ
node_matrix [ i ] [ k +1] . comp==1) | | ( node_matrix [ i ] [ k´1] . comp==1))763 {764 i f ( ( node_matrix [ i ] [ k ] . x_point´x /2)>=0 && ( node_matrix [ i ] [ k ] .Ðâ
y_point´y /2)>=0)765 {766 node_matrix [ i ] [ k ] . cp=1́ pow ( node_matrix [ i ] [ k ] . v /10 ,2) ;
24
767 node_matrix [ i ] [ k ] . coord=atan2 ( ( node_matrix [ i ] [ k ] . y_point´y /2) , (Ðâ
node_matrix [ i ] [ k ] . x_point´x /2) ) ;768 }769770 e l s e i f ( ( node_matrix [ i ] [ k ] . x_point´x /2)<=0 && ( node_matrix [ i ] [ k ] .Ðâ
y_point´y /2)>=0)771 {772 node_matrix [ i ] [ k ] . cp=1́ pow ( node_matrix [ i ] [ k ] . v /10 ,2) ;773 node_matrix [ i ] [ k ] . coord=atan2 ( ( node_matrix [ i ] [ k ] . y_point´y /2) , (Ðâ
node_matrix [ i ] [ k ] . x_point´x /2) ) ;774 }775776 e l s e i f ( ( node_matrix [ i ] [ k ] . x_point´x /2)<=0 && ( node_matrix [ i ] [ k ] .Ðâ
y_point´y /2)<=0)777 {778 node_matrix [ i ] [ k ] . cp=1́ pow ( node_matrix [ i ] [ k ] . v /10 ,2) ;779 node_matrix [ i ] [ k ] . coord =2∗3.14159265359+ atan2 ( ( node_matrix [ i ] [ kÐâ
] . y_point´y /2) , ( node_matrix [ i ] [ k ] . x_point´x /2) ) ;780 }781782 e l s e i f ( ( node_matrix [ i ] [ k ] . x_point´x /2)>=0 && ( node_matrix [ i ] [ k ] .Ðâ
y_point´y /2)<=0)783 {784 node_matrix [ i ] [ k ] . cp=1́ pow ( node_matrix [ i ] [ k ] . v /10 ,2) ;785 node_matrix [ i ] [ k ] . coord =2∗3.14159265359+ atan2 ( ( node_matrix [ i ] [ kÐâ
12 #inc lude <iostream>3 #inc lude <iomanip>4 #inc lude <math . h>5 #inc lude <fstream>6 #d e f i n e nodes_x 1007 #d e f i n e nodes_y 10089 us ing namespace std ;
1011 double x =2;12 double y =1;13 double dx , dy ;14 double rho0 =100;15 double V0 =10;16 double sigma =0.00000001;17 double error ;18 double e r r o r _ i t e r a t i o n ;19 double gamma =1;20 i n t p r o b l e m _ i n d e x ;21 i n t c o n v e c t i o n _ i n d e x ;2223 s t r u c t node {24 double x_point , y_point , rho , vxe , vxw , vyn , vys , cara_vertical , cara_horitzontal , Ðâ
phi , phi_estimated , ae , as , an , aw , ap , Pe , Pw , Pn , Ps ;25 double me , ms , mn , mw , De , Dn , Ds , Dw , fe , fn , fw , fs , Xd , Xp , Xc , Xe , PHI , PHIU , Ðâ
PHIC , PHID ;26 } ;2728 node node_matrix [ nodes_y +1] [ nodes_x +1] ;29 void m e s h _ g e n e r a t i o n ( node node_matrix [ nodes_y +1] [ nodes_x +1] , double &dx , double &dy , Ðâ
double x , double y , i n t problem_index , double V0 ) ;30 void m a s s _ f l o w _ p e c l e t ( node node_matrix [ nodes_y +1] [ nodes_x +1] , double &dx , double &dy , Ðâ
double x , double y , i n t problem_index , double gamma , i n t c o n v e c t i o n _ i n d e x ) ;31 void scheme ( i n t convection_index , node node_matrix [ nodes_y +1] [ nodes_x +1]) ;32 void c o e f f i c i e n t s _ c a l c u l a t i o n ( node node_matrix [ nodes_y +1] [ nodes_x +1]) ;33 void solver ( node node_matrix [ nodes_y +1] [ nodes_x +1] , double &error , double Ðâ
error_iteration , double sigma , i n t p r o b l e m _ i n d e x ) ;3435 main ( )36 {37 cout<<"TYPE THE NUMBER OF THE PROBLEM YOU WANT TO SOLVE \n" ;38 cout<<" 1. Unidimensional f low with a unidimensional v a r i a t i o n of the v a r i a b l e s o l v e d inÐâ
the same d i r e c t i o n "<<" \n" ;39 cout<<" of the f low \n" ;40 cout<<" 2. Unidimensional f low with a unidimensional v a r i a t i o n of the v a r i a b l e s o l v e d inÐâ
the perpendicu lar "<<" \n" ;41 cout<<" d i r e c t i o n of the f low \n" ;42 cout<<" 3. Diagonal f low \n" ;43 cout<<" 4. Smith´Hutton case \n" ;44 cin>>p r o b l e m _ i n d e x ;45 cout<<"TYPE THE NUMBER TO SELECT THE SCHEME YOU WANT TO USE TO SOLVE THE CONVECTIVE Ðâ
TERM \n" ;46 cout<<" 1. UDS \n" ;47 cout<<" 2. CDS \n" ;48 cout<<" 3. EDS \n" ;49 cin>>c o n v e c t i o n _ i n d e x ;5051 cout<<"́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ "<<" \n" ;52 cout<<" rho/gamma="<<rho0 / gamma<<" \n" ;53 cout<<"Pe="<<rho0 ∗ V0 ∗y/ gamma<<" \n" ;54 cout<<"́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ "<<" \n" ;5556 m e s h _ g e n e r a t i o n ( node_matrix , dx , dy , x , y , problem_index , V0 ) ;57 m a s s _ f l o w _ p e c l e t ( node_matrix , dx , dy , x , y , problem_index , gamma , c o n v e c t i o n _ i n d e x ) ;58 scheme ( convection_index , node_matrix ) ;59 c o e f f i c i e n t s _ c a l c u l a t i o n ( node_matrix ) ;60 solver ( node_matrix , error , error_iteration , sigma , p r o b l e m _ i n d e x ) ;6162 ofstream file2 ;
26
63 file2 . open ( " conv_dif . t x t " ) ;64 i f ( file2 . is_open ( ) )65 {66 cout<<" F i l e opened s u c c e s s f u l l y \n" ;67 }6869 e l s e70 {71 cout<<" Error saving data , c l o s e Excel \n" ;72 exit ( 1 ) ;73 }7475 cout<<" Saving data \n" ;76 file2<<"TITLE = \"CONVECTION_DIFFUSION\" " ;77 file2<<" \n" ;78 file2<<"VARIABLES = \"X\" , \"Y\" , \"PHI\" " ;79 file2<<" \n" ;80 file2<<"ZONE=\"Domain\" , I=" ;81 file2<<nodes_x +1;82 file2<<" , " ;83 file2<<"J= " ;84 file2<<nodes_y +1;85 file2<<" \n" ;8687 f o r ( i n t i =0; i<=nodes_y ; i++)88 {89 f o r ( i n t k =0; k<=(nodes_x ) ; k++)90 {9192 file2<<node_matrix [ i ] [ k ] . x_point ;93 file2<<" " ;94 file2<<node_matrix [ i ] [ k ] . y_point ;95 file2<<" " ;96 file2<<node_matrix [ i ] [ k ] . phi ;97 file2<<" " ;98 file2<<" \n" ;99 }
100 }101102 cout<<" Closing f i l e " ;103 file2 . close ( ) ;104105 }106107 void m e s h _ g e n e r a t i o n ( node node_matrix [ nodes_y +1] [ nodes_x +1] , double &dx , double &dy , Ðâ
double x , double y , i n t problem_index , double V0 )108 {109 dx=x/ nodes_x ;110 dy=y/ nodes_y ;111112 f o r ( i n t i =0; i<=nodes_y ; i++)113 {114 f o r ( i n t k =0; k<=nodes_x ; k++)115 {116 i f ( k==0)117 {118 node_matrix [ i ] [ k ] . x_point =´1;119 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx / 2 ;120 node_matrix [ i ] [ k ] . phi =40;121 node_matrix [ i ] [ k ] . p h i _ e s t i m a t e d =100;122 }123124 e l s e i f ( k==nodes_x )125 {126 node_matrix [ i ] [ k ] . x_point=node_matrix [ i ] [ k´1] . x_point+dx ;127 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx / 2 ;128 node_matrix [ i ] [ k ] . phi =40;129 node_matrix [ i ] [ k ] . p h i _ e s t i m a t e d =100;130 }131132 e l s e133 {134 node_matrix [ i ] [ k ] . x_point=node_matrix [ i ] [ k´1] . x_point+dx ;135 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx ;136 node_matrix [ i ] [ k ] . phi =40;137 node_matrix [ i ] [ k ] . p h i _ e s t i m a t e d =100;138 }
27
139140 i f ( i==0)141 {142 node_matrix [ i ] [ k ] . y_point =0;143 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy / 2 ;144 }145146 e l s e i f ( i==nodes_y )147 {148 node_matrix [ i ] [ k ] . y_point=node_matrix [ i´1] [ k ] . y_point+dy ;149 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy / 2 ;150 }151152 e l s e153 {154 node_matrix [ i ] [ k ] . y_point=node_matrix [ i´1] [ k ] . y_point+dy ;155 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy ;156157 }158159 i f ( k==0)160 {161 node_matrix [ i ] [ k ] . x_point =´1;162 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx / 2 ;163 node_matrix [ i ] [ k ] . phi =40;164 node_matrix [ i ] [ k ] . p h i _ e s t i m a t e d =100;165 }166167 e l s e i f ( k==nodes_x )168 {169 node_matrix [ i ] [ k ] . x_point=node_matrix [ i ] [ k´1] . x_point+dx ;170 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx / 2 ;171 node_matrix [ i ] [ k ] . phi =40;172 node_matrix [ i ] [ k ] . p h i _ e s t i m a t e d =100;173 }174175 e l s e176 {177178 node_matrix [ i ] [ k ] . x_point=node_matrix [ i ] [ k´1] . x_point+dx ;179 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx ;180 node_matrix [ i ] [ k ] . phi =40;181 node_matrix [ i ] [ k ] . p h i _ e s t i m a t e d =100;182 }183184 i f ( i==0)185 {186 node_matrix [ i ] [ k ] . y_point =0;187 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy / 2 ;188 }189190 e l s e i f ( i==nodes_y )191 {192 node_matrix [ i ] [ k ] . y_point=node_matrix [ i´1] [ k ] . y_point+dy ;193 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy / 2 ;194 }195196 e l s e197 {198 node_matrix [ i ] [ k ] . y_point=node_matrix [ i´1] [ k ] . y_point+dy ;199 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy ;200 }201202203 // INITIAL VELOCITY MAP204205 i f ( p r o b l e m _ i n d e x==1)206 {207 node_matrix [ i ] [ k ] . vxe=V0 ;208 node_matrix [ i ] [ k ] . vxw=V0 ;209 node_matrix [ i ] [ k ] . vyn =0;210 node_matrix [ i ] [ k ] . vys =0;211 }212213 e l s e i f ( p r o b l e m _ i n d e x==2)214 {215 node_matrix [ i ] [ k ] . vxe =0;
28
216 node_matrix [ i ] [ k ] . vxw =0;217 node_matrix [ i ] [ k ] . vyn=́ V0 ;218 node_matrix [ i ] [ k ] . vys=́ V0 ;219 }220221222 e l s e i f ( p r o b l e m _ i n d e x==3)223 {224 node_matrix [ i ] [ k ] . vxe=V0 ∗ cos (3 .14159265359/4) ;225 node_matrix [ i ] [ k ] . vxw=V0 ∗ cos (3 .14159265359/4) ;226 node_matrix [ i ] [ k ] . vyn=V0 ∗ sin (3 .14159265359/4) ;227 node_matrix [ i ] [ k ] . vys=V0 ∗ sin (3 .14159265359/4) ;228 }229230 e l s e i f ( p r o b l e m _ i n d e x==4)231 {232 i f ( k==0)233 {234 node_matrix [ i ] [ k ] . vxw=2∗ node_matrix [ i ] [ k ] . y_point ∗(1´pow (Ðâ
node_matrix [ i ] [ k ] . x_point , 2 ) ) ;235 }236237 e l s e i f ( k==nodes_x )238 {239 node_matrix [ i ] [ k ] . vxe=2∗ node_matrix [ i ] [ k ] . y_point ∗(1´pow (Ðâ
node_matrix [ i ] [ k ] . x_point , 2 ) ) ;240 }241242 e l s e243 {244 node_matrix [ i ] [ k ] . vxe=2∗ node_matrix [ i ] [ k ] . y_point ∗(1´pow ( node_matrix [ iÐâ
] [ k ] . x_point+node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2 ,2) ) ;245 node_matrix [ i ] [ k ] . vxw=2∗ node_matrix [ i ] [ k ] . y_point ∗(1´pow ( node_matrix [ iÐâ
] [ k ] . x_point´node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2 ,2) ) ;246 }247248 i f ( i==0)249 {250 node_matrix [ i ] [ k ] . vys=´2∗node_matrix [ i ] [ k ] . x_point ∗(1´pow (Ðâ
node_matrix [ i ] [ k ] . y_point , 2 ) ) ;251 }252253 e l s e i f ( i==nodes_y )254 {255 node_matrix [ i ] [ k ] . vyn=´2∗node_matrix [ i ] [ k ] . x_point ∗(1´pow (Ðâ
node_matrix [ i ] [ k ] . y_point , 2 ) ) ;256 }257258 e l s e259 {260 node_matrix [ i ] [ k ] . vyn=´2∗node_matrix [ i ] [ k ] . x_point ∗(1´pow ( node_matrix [ iÐâ
] [ k ] . y_point+node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2 ,2) ) ;261 node_matrix [ i ] [ k ] . vys=´2∗node_matrix [ i ] [ k ] . x_point ∗(1´pow ( node_matrix [ iÐâ
] [ k ] . y_point´node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2 ,2) ) ;262 }263264 }265 }266 }267 }268269 void m a s s _ f l o w _ p e c l e t ( node node_matrix [ nodes_y +1] [ nodes_x +1] , double &dx , double &dy , Ðâ
double x , double y , i n t problem_index , double gamma , i n t c o n v e c t i o n _ i n d e x )270 {271272 f o r ( i n t i =0; i<=nodes_y ; i++)273 {274 f o r ( i n t k =0; k<=nodes_x ; k++)275 {276 node_matrix [ i ] [ k ] . Pe=rho0 ∗ node_matrix [ i ] [ k ] . vxe ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l / gamma ;277 node_matrix [ i ] [ k ] . Pw=rho0 ∗ node_matrix [ i ] [ k ] . vxw ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l / gamma ;278 node_matrix [ i ] [ k ] . Ps=rho0 ∗ node_matrix [ i ] [ k ] . vys ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l / gamma ;279 node_matrix [ i ] [ k ] . Pn=rho0 ∗ node_matrix [ i ] [ k ] . vyn ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l / gamma ;
29
280281 i f ( node_matrix [ i ] [ k ] . Pe <0.001)282 {283 node_matrix [ i ] [ k ] . Pe =0.01;284 }285286 i f ( node_matrix [ i ] [ k ] . Pn <0.001)287 {288 node_matrix [ i ] [ k ] . Pn =0.01;289 }290291 i f ( node_matrix [ i ] [ k ] . Pw <0.001)292 {293 node_matrix [ i ] [ k ] . Pw =0.01;294 }295296 i f ( node_matrix [ i ] [ k ] . Ps <0.001)297 {298 node_matrix [ i ] [ k ] . Ps =0.01;299 }300301 node_matrix [ i ] [ k ] . me=rho0 ∗ node_matrix [ i ] [ k ] . vxe ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l ;302 node_matrix [ i ] [ k ] . mw=rho0 ∗ node_matrix [ i ] [ k ] . vxw ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l ;303 node_matrix [ i ] [ k ] . mn=rho0 ∗ node_matrix [ i ] [ k ] . vyn ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l ;304 node_matrix [ i ] [ k ] . ms=rho0 ∗ node_matrix [ i ] [ k ] . vys ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l ;305306 node_matrix [ i ] [ k ] . De=gamma ∗ node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l / node_matrix [Ðâ
i ] [ k ] . c a r a _ h o r i t z o n t a l ;307 node_matrix [ i ] [ k ] . Dw=gamma ∗ node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l / node_matrix [Ðâ
i ] [ k ] . c a r a _ h o r i t z o n t a l ;308 node_matrix [ i ] [ k ] . Dn=gamma ∗ node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /Ðâ
node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l ;309 node_matrix [ i ] [ k ] . Ds=gamma ∗ node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /Ðâ
node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l ;310 }311 }312 }313314 void scheme ( i n t convection_index , node node_matrix [ nodes_y +1] [ nodes_x +1])315 {316317 f o r ( i n t i =0; i<=nodes_y ; i++)318 {319 f o r ( i n t k =0; k<=nodes_x ; k++)320 {321 // UPWIND SCHEME322 i f ( c o n v e c t i o n _ i n d e x==1)323 {324 i f ( node_matrix [ i ] [ k ] . me >=0)325 {326 node_matrix [ i ] [ k ] . fe =0;327 }328329 e l s e330 {331 node_matrix [ i ] [ k ] . fe =1;332 }333334 i f ( node_matrix [ i ] [ k ] . mw <=0)335 {336 node_matrix [ i ] [ k ] . fw =0;337 }338339 e l s e340 {341 node_matrix [ i ] [ k ] . fw =1;342 }343344 i f ( node_matrix [ i ] [ k ] . mn >=0)345 {346 node_matrix [ i ] [ k ] . fn =0;347 }348
30
349 e l s e350 {351 node_matrix [ i ] [ k ] . fn =1;352 }353354 i f ( node_matrix [ i ] [ k ] . ms <=0)355 {356 node_matrix [ i ] [ k ] . fs =0;357 }358359 e l s e360 {361 node_matrix [ i ] [ k ] . fs =1;362 }363 }364365 // CENTRAL DIFFERENCE SCHEME366 e l s e i f ( c o n v e c t i o n _ i n d e x==2)367 {368 node_matrix [ i ] [ k ] . fe=( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2) /(Ðâ
node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l ) ;369 node_matrix [ i ] [ k ] . fw=( node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /2) /(Ðâ
node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l ) ;370 node_matrix [ i ] [ k ] . fn=( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2) /(Ðâ
node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l ) ;371 node_matrix [ i ] [ k ] . fs=( node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2) /(Ðâ
node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l ) ;372 }373374 // EXPONENTIAL DIFFERENCE SCHEME375 e l s e i f ( c o n v e c t i o n _ i n d e x==3)376 {377 node_matrix [ i ] [ k ] . fe=(exp ( node_matrix [ i ] [ k ] . Pe ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l /(2∗ node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l ) )´1) /(Ðâ
exp ( node_matrix [ i ] [ k ] . Pe )´1) ;378 node_matrix [ i ] [ k ] . fw=(exp(´node_matrix [ i ] [ k ] . Pw ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l /(2∗ node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l ) )´1) /(Ðâ
exp(´node_matrix [ i ] [ k ] . Pw )´1) ;379 node_matrix [ i ] [ k ] . fn=(exp ( node_matrix [ i ] [ k ] . Pn ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l /(2∗ node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l ) )´1) /( exp (Ðâ
node_matrix [ i ] [ k ] . Pn )´1) ;380 node_matrix [ i ] [ k ] . fs=(exp(´node_matrix [ i ] [ k ] . Ps ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l /(2∗ node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l ) )´1) /( exp(´Ðâ
node_matrix [ i ] [ k ] . Ps )´1) ;381 }382 }383 }384385 }386387 void c o e f f i c i e n t s _ c a l c u l a t i o n ( node node_matrix [ nodes_y +1] [ nodes_x +1])388 {389 f o r ( i n t i =0; i<=nodes_y ; i++)390 {391 f o r ( i n t k =0; k<=nodes_x ; k++)392 {393 i f ( k==0 && i !=0 && i !=( nodes_y ) )394 {395 node_matrix [ i ] [ k ] . ae=node_matrix [ i ] [ k ] . De´node_matrix [ i ] [ k ] . me ∗Ðâ
node_matrix [ i ] [ k ] . fe ;396 node_matrix [ i ] [ k ] . aw =0;397 node_matrix [ i ] [ k ] . an=node_matrix [ i ] [ k ] . Dn´node_matrix [ i ] [ k ] . mn ∗Ðâ
node_matrix [ i ] [ k ] . fn ;398 node_matrix [ i ] [ k ] . as=node_matrix [ i ] [ k ] . Ds+node_matrix [ i ] [ k ] . ms ∗Ðâ
node_matrix [ i ] [ k ] . fs ;399 node_matrix [ i ] [ k ] . ap=node_matrix [ i ] [ k ] . ae+node_matrix [ i ] [ k ] . an+Ðâ
node_matrix [ i ] [ k ] . aw+node_matrix [ i ] [ k ] . as ;400 }401402 e l s e i f ( k==0 && i==(nodes_y ) )403 {404 node_matrix [ i ] [ k ] . ae=node_matrix [ i ] [ k ] . De´node_matrix [ i ] [ k ] . me ∗Ðâ
node_matrix [ i ] [ k ] . fe ;405 node_matrix [ i ] [ k ] . aw =0;406 node_matrix [ i ] [ k ] . an =0;407 node_matrix [ i ] [ k ] . as=node_matrix [ i ] [ k ] . Ds+node_matrix [ i ] [ k ] . ms ∗Ðâ
node_matrix [ i ] [ k ] . fs ;
31
408 node_matrix [ i ] [ k ] . ap=node_matrix [ i ] [ k ] . ae+node_matrix [ i ] [ k ] . an+Ðâ
node_matrix [ i ] [ k ] . aw+node_matrix [ i ] [ k ] . as ;409 }410411 e l s e i f ( k==0 && i==0)412 {413 node_matrix [ i ] [ k ] . ae=node_matrix [ i ] [ k ] . De´node_matrix [ i ] [ k ] . me ∗Ðâ
node_matrix [ i ] [ k ] . fe ;414 node_matrix [ i ] [ k ] . aw =0;415 node_matrix [ i ] [ k ] . an=node_matrix [ i ] [ k ] . Dn´node_matrix [ i ] [ k ] . mn ∗Ðâ
node_matrix [ i ] [ k ] . fn ;416 node_matrix [ i ] [ k ] . as =0;417 node_matrix [ i ] [ k ] . ap=node_matrix [ i ] [ k ] . ae+node_matrix [ i ] [ k ] . an+Ðâ
node_matrix [ i ] [ k ] . aw+node_matrix [ i ] [ k ] . as ;418 }419420 e l s e i f ( k==(nodes_x ) && i !=0 && i !=( nodes_y ) )421 {422 node_matrix [ i ] [ k ] . ae =0;423 node_matrix [ i ] [ k ] . aw=node_matrix [ i ] [ k ] . Dw+node_matrix [ i ] [ k ] . mw ∗Ðâ
node_matrix [ i ] [ k ] . fw ;424 node_matrix [ i ] [ k ] . an=node_matrix [ i ] [ k ] . Dn´node_matrix [ i ] [ k ] . mn ∗Ðâ
node_matrix [ i ] [ k ] . fn ;425 node_matrix [ i ] [ k ] . as=node_matrix [ i ] [ k ] . Ds+node_matrix [ i ] [ k ] . ms ∗Ðâ
node_matrix [ i ] [ k ] . fs ;426 node_matrix [ i ] [ k ] . ap=node_matrix [ i ] [ k ] . ae+node_matrix [ i ] [ k ] . an+Ðâ
node_matrix [ i ] [ k ] . aw+node_matrix [ i ] [ k ] . as ;427 }428429 e l s e i f ( k==(nodes_x ) && i==0)430431 {432 node_matrix [ i ] [ k ] . ae =0;433 node_matrix [ i ] [ k ] . aw=node_matrix [ i ] [ k ] . Dw+node_matrix [ i ] [ k ] . mw ∗Ðâ
node_matrix [ i ] [ k ] . fw ;434 node_matrix [ i ] [ k ] . an=node_matrix [ i ] [ k ] . Dn´node_matrix [ i ] [ k ] . mn ∗Ðâ
node_matrix [ i ] [ k ] . fn ;435 node_matrix [ i ] [ k ] . as =0;436 node_matrix [ i ] [ k ] . ap=node_matrix [ i ] [ k ] . ae+node_matrix [ i ] [ k ] . an+Ðâ
node_matrix [ i ] [ k ] . aw+node_matrix [ i ] [ k ] . as ;437 }438439 e l s e i f ( k==(nodes_x ) && i==(nodes_y ) )440 {441 node_matrix [ i ] [ k ] . ae =0;442 node_matrix [ i ] [ k ] . aw=node_matrix [ i ] [ k ] . Dw+node_matrix [ i ] [ k ] . mw ∗Ðâ
node_matrix [ i ] [ k ] . fw ;443 node_matrix [ i ] [ k ] . an =0;444 node_matrix [ i ] [ k ] . as=node_matrix [ i ] [ k ] . Ds+node_matrix [ i ] [ k ] . ms ∗Ðâ
node_matrix [ i ] [ k ] . fs ;445 node_matrix [ i ] [ k ] . ap=node_matrix [ i ] [ k ] . ae+node_matrix [ i ] [ k ] . an+Ðâ
node_matrix [ i ] [ k ] . aw+node_matrix [ i ] [ k ] . as ;446 }447448 e l s e i f ( i==(nodes_y ) && k !=0 && k !=( nodes_x ) )449 {450 node_matrix [ i ] [ k ] . ae=node_matrix [ i ] [ k ] . De´node_matrix [ i ] [ k ] . me ∗Ðâ
node_matrix [ i ] [ k ] . fe ;451 node_matrix [ i ] [ k ] . aw=node_matrix [ i ] [ k ] . Dw+node_matrix [ i ] [ k ] . mw ∗Ðâ
node_matrix [ i ] [ k ] . fw ;452 node_matrix [ i ] [ k ] . an =0;453 node_matrix [ i ] [ k ] . as=node_matrix [ i ] [ k ] . Ds+node_matrix [ i ] [ k ] . ms ∗Ðâ
node_matrix [ i ] [ k ] . fs ;454 node_matrix [ i ] [ k ] . ap=node_matrix [ i ] [ k ] . ae+node_matrix [ i ] [ k ] . an+Ðâ
node_matrix [ i ] [ k ] . aw+node_matrix [ i ] [ k ] . as ;455 }456457 e l s e i f ( i==0 && k !=0 && k !=( nodes_x ) )458 {459 node_matrix [ i ] [ k ] . ae=node_matrix [ i ] [ k ] . De´node_matrix [ i ] [ k ] . me ∗Ðâ
node_matrix [ i ] [ k ] . fe ;460 node_matrix [ i ] [ k ] . aw=node_matrix [ i ] [ k ] . Dw+node_matrix [ i ] [ k ] . mw ∗Ðâ
node_matrix [ i ] [ k ] . fw ;461 node_matrix [ i ] [ k ] . an=node_matrix [ i ] [ k ] . Dn´node_matrix [ i ] [ k ] . mn ∗Ðâ
node_matrix [ i ] [ k ] . fn ;462 node_matrix [ i ] [ k ] . as =0;
32
463 node_matrix [ i ] [ k ] . ap=node_matrix [ i ] [ k ] . ae+node_matrix [ i ] [ k ] . an+Ðâ
node_matrix [ i ] [ k ] . aw+node_matrix [ i ] [ k ] . as ;464 }465466 e l s e467 {468 node_matrix [ i ] [ k ] . ae=node_matrix [ i ] [ k ] . De´node_matrix [ i ] [ k ] . me ∗Ðâ
node_matrix [ i ] [ k ] . fe ;469 node_matrix [ i ] [ k ] . aw=node_matrix [ i ] [ k ] . Dw+node_matrix [ i ] [ k ] . mw ∗Ðâ
node_matrix [ i ] [ k ] . fw ;470 node_matrix [ i ] [ k ] . an=node_matrix [ i ] [ k ] . Dn´node_matrix [ i ] [ k ] . mn ∗Ðâ
node_matrix [ i ] [ k ] . fn ;471 node_matrix [ i ] [ k ] . as=node_matrix [ i ] [ k ] . Ds+node_matrix [ i ] [ k ] . ms ∗Ðâ
node_matrix [ i ] [ k ] . fs ;472 node_matrix [ i ] [ k ] . ap=node_matrix [ i ] [ k ] . ae+node_matrix [ i ] [ k ] . an+Ðâ
node_matrix [ i ] [ k ] . aw+node_matrix [ i ] [ k ] . as ;473 }474 }475 }476 }477478 void solver ( node node_matrix [ nodes_y +1] [ nodes_x +1] , double &error , double Ðâ
error_iteration , double sigma , i n t p r o b l e m _ i n d e x )479 {480481 error =10;482483 whi le ( error>sigma )484 {485 f o r ( i n t i =0; i<=nodes_y ; i++)486 {487 f o r ( i n t k =0; k<=nodes_x ; k++)488 {489 i f ( k==0 && i !=0 && i !=( nodes_y ) )490 {491 i f ( p r o b l e m _ i n d e x==1 | | p r o b l e m _ i n d e x==2 | | p r o b l e m _ i n d e x==3)492 {493 node_matrix [ i ] [ k ] . phi =1;494 }495496 e l s e i f ( p r o b l e m _ i n d e x==4)497 {498 node_matrix [ i ] [ k ] . phi=1́ tanh (1 0) ;499 }500 }501502 e l s e i f ( k==0 && i==(nodes_y ) )503 {504 i f ( p r o b l e m _ i n d e x==1 | | p r o b l e m _ i n d e x==2 | | p r o b l e m _ i n d e x==3)505 {506 node_matrix [ i ] [ k ] . phi =1;507 }508509 e l s e i f ( p r o b l e m _ i n d e x==4)510 {511 node_matrix [ i ] [ k ] . phi=1́ tanh (1 0) ;512 }513 }514515 e l s e i f ( k==0 && i==0)516 {517 i f ( p r o b l e m _ i n d e x==1 | | p r o b l e m _ i n d e x==2 | | p r o b l e m _ i n d e x==3)518 {519 node_matrix [ i ] [ k ] . phi =1;520 }521522 e l s e i f ( p r o b l e m _ i n d e x==4)523 {524 node_matrix [ i ] [ k ] . phi=1+tanh (10∗(2∗ node_matrix [ i ] [ k ] . x_point +1) ) ;525 }526 }527528 e l s e i f ( k==(nodes_x ) && i !=0 && i !=( nodes_y ) )529 {530 i f ( p r o b l e m _ i n d e x==1 | | p r o b l e m _ i n d e x==2 | | p r o b l e m _ i n d e x==3)531 {532 node_matrix [ i ] [ k ] . phi =200;
33
533 }534535 e l s e i f ( p r o b l e m _ i n d e x==4)536 {537 node_matrix [ i ] [ k ] . phi=1́ tanh (1 0) ;538 }539 }540541 e l s e i f ( k==(nodes_x ) && i==0)542 {543 i f ( p r o b l e m _ i n d e x==1 | | p r o b l e m _ i n d e x==2 | | p r o b l e m _ i n d e x==3)544 {545 node_matrix [ i ] [ k ] . phi =200;546 }547548 e l s e i f ( p r o b l e m _ i n d e x==4)549 {550 node_matrix [ i ] [ k ] . phi=node_matrix [ i +1] [ k ] . phi ;551 }552 }553554 e l s e i f ( k==(nodes_x ) && i==(nodes_y ) )555 {556 i f ( p r o b l e m _ i n d e x==1 | | p r o b l e m _ i n d e x==2 | | p r o b l e m _ i n d e x==3)557 {558 node_matrix [ i ] [ k ] . phi =200;559 }560561 e l s e i f ( p r o b l e m _ i n d e x==4)562 {563 node_matrix [ i ] [ k ] . phi=1́ tanh (1 0) ;564 }565 }566567 e l s e i f ( i==(nodes_y ) && k !=0 && k !=( nodes_x ) )568 {569 i f ( p r o b l e m _ i n d e x==1 | | p r o b l e m _ i n d e x==2 )570 {571 node_matrix [ i ] [ k ] . phi=node_matrix [ i´1] [ k ] . phi ;572 }573574 e l s e i f ( p r o b l e m _ i n d e x==3)575 {576 node_matrix [ i ] [ k ] . phi =1;577 }578579 e l s e i f ( p r o b l e m _ i n d e x==4)580 {581 node_matrix [ i ] [ k ] . phi=1́ tanh (1 0) ;582 }583 }584585 e l s e i f ( i==0 && k !=0 && k !=( nodes_x ) )586 {587 i f ( p r o b l e m _ i n d e x==1 | | p r o b l e m _ i n d e x==2 )588 {589 node_matrix [ i ] [ k ] . phi=node_matrix [ i +1] [ k ] . phi ;590 }591592 e l s e i f ( p r o b l e m _ i n d e x==3)593594 {595 node_matrix [ i ] [ k ] . phi =200;596 }597598 e l s e i f ( p r o b l e m _ i n d e x==4)599600 {601 i f ( k<=(nodes_x +1) /2)602603 {604 node_matrix [ i ] [ k ] . phi=1+tanh (10∗(2∗ node_matrix [ i ] [ k ] . x_point +1)Ðâ
) ;605 }606607 e l s e608 {
34
609 node_matrix [ i ] [ k ] . phi=node_matrix [ i +1] [ k ] . phi ;610 }611 }612 }613614 e l s e615 {616 node_matrix [ i ] [ k ] . phi=( node_matrix [ i ] [ k ] . aw ∗ node_matrix [ i ] [ k´1] . phi+Ðâ
node_matrix [ i ] [ k ] . ae ∗ node_matrix [ i ] [ k +1] . phi+node_matrix [ i ] [ k ] . an ∗Ðâ
node_matrix [ i +1] [ k ] . phi+node_matrix [ i ] [ k ] . as ∗ node_matrix [ i´1] [ k ] . phi ) /(Ðâ
node_matrix [ i ] [ k ] . ap ) ;617 }618 }619 }620621622 e r r o r _ i t e r a t i o n =0;623624 f o r ( i n t i =0; i<=(nodes_y ) ; i++)625 {626 f o r ( i n t k =0; k<=(nodes_x ) ; k++)627 {628 i f ( fabs ( node_matrix [ i ] [ k ] . phi´node_matrix [ i ] [ k ] . p h i _ e s t i m a t e d )>Ðâ
e r r o r _ i t e r a t i o n )629 {630 e r r o r _ i t e r a t i o n=fabs ( node_matrix [ i ] [ k ] . phi´node_matrix [ i ] [ k ] .Ðâ
p h i _ e s t i m a t e d ) ;631 }632 }633 }634635 error=e r r o r _ i t e r a t i o n ;636637 f o r ( i n t i =0; i<=(nodes_y ) ; i++)638 {639 f o r ( i n t k =0; k<=(nodes_x ) ; k++)640 {641 node_matrix [ i ] [ k ] . p h i _ e s t i m a t e d=node_matrix [ i ] [ k ] . phi ;642 }643 }644 }645646 }
35
3.2 QUICK & SUDS with non-dimensional values (Deferred correctionapproach)
1 #inc lude <iostream>2 #inc lude <iomanip>3 #inc lude <math . h>4 #inc lude <fstream>5 #d e f i n e nodes_x 1006 #d e f i n e nodes_y 10078 us ing namespace std ;9
10 double x =2;11 double y =2;12 double dx , dy ;13 double rho0 =1000000;14 double V0 =1;15 double sigma =0.00001;16 double error ;17 double e r r o r _ i t e r a t i o n ;18 double gamma =1;19 i n t p r o b l e m _ i n d e x ;20 i n t c o n v e c t i o n _ i n d e x ;2122 s t r u c t node {23 double x_point , y_point , rho , vxe , vxw , vyn , vys , cara_vertical , cara_horitzontal , Ðâ
phi , phi_estimated , ae , as , an , aw , ap , bp , Pe , Pw , Pn , Ps , me , ms , mn , mw , De ,Ðâ
PHICE , PHICN , PHICS , PHICW , PHIeHRS , PHIwHRS , PHInHRS , PHIsHRS ;26 } ;2728 node node_matrix [ nodes_y +1] [ nodes_x +1] ;29 void m e s h _ g e n e r a t i o n ( node node_matrix [ nodes_y +1] [ nodes_x +1] , double &dx , double &dy , Ðâ
double x , double y , i n t problem_index , double V0 ) ;30 void m a s s _ f l o w _ p e c l e t ( node node_matrix [ nodes_y +1] [ nodes_x +1] , double &dx , double &dy , Ðâ
double x , double y , i n t problem_index , double gamma , i n t c o n v e c t i o n _ i n d e x ) ;31 void n o n _ d i m e n s i o n a l _ v a l u e s ( i n t convection_index , node node_matrix [ nodes_y +1] [ nodes_xÐâ
+1]) ;32 void c o e f f i c i e n t s _ c a l c u l a t i o n ( node node_matrix [ nodes_y +1] [ nodes_x +1] , i n t Ðâ
p r o b l e m _ i n d e x ) ;33 void solver ( node node_matrix [ nodes_y +1] [ nodes_x +1] , double &error , double Ðâ
error_iteration , double sigma , i n t p r o b l e m _ i n d e x ) ;3435 main ( )36 {3738 cout<<"TYPE THE NUMBER OF THE PROBLEM YOU WANT TO SOLVE \n" ;39 cout<<" 1. Unidimensional f low with a unidimensional v a r i a t i o n of the v a r i a b l e s o l v e d inÐâ
the same d i r e c t i o n "<<" \n" ;40 cout<<" of the f low \n" ;41 cout<<" 2. Diagonal f l o x \n" ;42 cout<<" 3. Smith_hutton case \n" ;43 cin>>p r o b l e m _ i n d e x ;44 cout<<"TYPE THE HIGHER ORDER SCHEME YOU WANT TO USE \n" ;45 cout<<" 1. SUDS"<<" \n" ;46 cout<<" 2. QUICK"<<" \n" ;47 cin>>c o n v e c t i o n _ i n d e x ;4849 cout<<"́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ "<<" \n" ;50 cout<<" rho/gamma="<<rho0 / gamma<<" \n" ;51 cout<<"Pe="<<rho0 ∗ V0 ∗y/ gamma<<" \n" ;5253 cout<<"́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ ´́ "<<" \n" ;5455 m e s h _ g e n e r a t i o n ( node_matrix , dx , dy , x , y , problem_index , V0 ) ;56 m a s s _ f l o w _ p e c l e t ( node_matrix , dx , dy , x , y , problem_index , gamma , c o n v e c t i o n _ i n d e x ) ;57 c o e f f i c i e n t s _ c a l c u l a t i o n ( node_matrix , p r o b l e m _ i n d e x ) ;58 solver ( node_matrix , error , error_iteration , sigma , p r o b l e m _ i n d e x ) ;5960 ofstream file2 ;
36
61 file2 . open ( " conv_dif . t x t " ) ;62 i f ( file2 . is_open ( ) )63 {64 cout<<" F i l e opened s u c c e s s f u l l y \n" ;65 }6667 e l s e68 {69 cout<<" Error saving data , c l o s e Excel \n" ;70 exit ( 1 ) ;71 }7273 cout<<" Saving data \n" ;74 file2<<"TITLE = \"CONVECTION_DIFFUSION\" " ;75 file2<<" \n" ;76 file2<<"VARIABLES = \"X\" , \"Y\" , \"PHI\" " ;77 file2<<" \n" ;78 file2<<"ZONE=\"Domain\" , I=" ;79 file2<<nodes_x +1;80 file2<<" , " ;81 file2<<"J= " ;82 file2<<nodes_y +1;83 file2<<" \n" ;8485 f o r ( i n t i =0; i<=nodes_y ; i++)86 {87 f o r ( i n t k =0; k<=nodes_x ; k++)88 {8990 file2<<node_matrix [ i ] [ k ] . x_point ;91 file2<<" " ;92 file2<<node_matrix [ i ] [ k ] . y_point ;93 file2<<" " ;94 file2<<node_matrix [ i ] [ k ] . phi ;95 file2<<" " ;96 file2<<" \n" ;97 }98 }99
100 cout<<" Closing f i l e " ;101 file2 . close ( ) ;102 }103104 void m e s h _ g e n e r a t i o n ( node node_matrix [ nodes_y +1] [ nodes_x +1] , double &dx , double &dy , Ðâ
double x , double y , i n t problem_index , double V0 )105 {106 dx=x/ nodes_x ;107 dy=y/ nodes_y ;108109 f o r ( i n t i =0; i<=nodes_y ; i++)110 {111 f o r ( i n t k =0; k<=nodes_x ; k++)112 {113 i f ( k==0)114 {115 node_matrix [ i ] [ k ] . x_point =´1;116 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx / 2 ;117 node_matrix [ i ] [ k ] . phi =40;118 node_matrix [ i ] [ k ] . p h i _ e s t i m a t e d =100;119 }120121 e l s e i f ( k==nodes_x )122 {123 node_matrix [ i ] [ k ] . x_point=node_matrix [ i ] [ k´1] . x_point+dx ;124 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx / 2 ;125 node_matrix [ i ] [ k ] . phi =40;126 node_matrix [ i ] [ k ] . p h i _ e s t i m a t e d =100;127 }128129 e l s e130 {131 node_matrix [ i ] [ k ] . x_point=node_matrix [ i ] [ k´1] . x_point+dx ;132 node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l=dx ;133 node_matrix [ i ] [ k ] . phi =40;134 node_matrix [ i ] [ k ] . p h i _ e s t i m a t e d =100;135 }136
37
137 i f ( i==0)138 {139 node_matrix [ i ] [ k ] . y_point =0;140 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy / 2 ;141 }142143 e l s e i f ( i==nodes_y )144 {145 node_matrix [ i ] [ k ] . y_point=node_matrix [ i´1] [ k ] . y_point+dy ;146 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy / 2 ;147 }148149 e l s e150 {151 node_matrix [ i ] [ k ] . y_point=node_matrix [ i´1] [ k ] . y_point+dy ;152 node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l=dy ;153 }154155 // INITIAL VELOCITY MAP156157 i f ( p r o b l e m _ i n d e x==1)158 {159 node_matrix [ i ] [ k ] . vxe=V0 ;160 node_matrix [ i ] [ k ] . vxw=V0 ;161 node_matrix [ i ] [ k ] . vyn =0;162 node_matrix [ i ] [ k ] . vys =0;163 }164165 e l s e i f ( p r o b l e m _ i n d e x==2)166 {167 node_matrix [ i ] [ k ] . vxe=V0 ∗ cos (3 .14159265359/4) ;168 node_matrix [ i ] [ k ] . vxw=V0 ∗ cos (3 .14159265359/4) ;169 node_matrix [ i ] [ k ] . vyn=V0 ∗ sin (3 .14159265359/4) ;170 node_matrix [ i ] [ k ] . vys=V0 ∗ sin (3 .14159265359/4) ;171 }172173 e l s e i f ( p r o b l e m _ i n d e x==3)174 {175 i f ( k==0)176 {177 node_matrix [ i ] [ k ] . vxw=2∗ node_matrix [ i ] [ k ] . y_point ∗(1´pow (Ðâ
node_matrix [ i ] [ k ] . x_point , 2 ) ) ;178 }179180 e l s e i f ( k==nodes_x )181 {182 node_matrix [ i ] [ k ] . vxe=2∗ node_matrix [ i ] [ k ] . y_point ∗(1´pow (Ðâ
node_matrix [ i ] [ k ] . x_point , 2 ) ) ;183 }184185 e l s e186 {187 node_matrix [ i ] [ k ] . vxe=2∗ node_matrix [ i ] [ k ] . y_point ∗(1´pow (Ðâ
node_matrix [ i ] [ k ] . x_point+node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a lÐâ
/2 ,2) ) ;188 node_matrix [ i ] [ k ] . vxw=2∗ node_matrix [ i ] [ k ] . y_point ∗(1´pow (Ðâ
node_matrix [ i ] [ k ] . x_point´node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a lÐâ
/2 ,2) ) ;189 }190191 i f ( i==0)192 {193 node_matrix [ i ] [ k ] . vys=´2∗node_matrix [ i ] [ k ] . x_point ∗(1´pow (Ðâ
node_matrix [ i ] [ k ] . y_point , 2 ) ) ;194 }195196 e l s e i f ( i==nodes_y )197 {198 node_matrix [ i ] [ k ] . vyn=´2∗node_matrix [ i ] [ k ] . x_point ∗(1´pow (Ðâ
node_matrix [ i ] [ k ] . y_point , 2 ) ) ;199 }200201 e l s e202 {203 node_matrix [ i ] [ k ] . vyn=´2∗node_matrix [ i ] [ k ] . x_point ∗(1´pow (Ðâ
node_matrix [ i ] [ k ] . y_point+node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2 ,2) )Ðâ
;
38
204 node_matrix [ i ] [ k ] . vys=´2∗node_matrix [ i ] [ k ] . x_point ∗(1´pow (Ðâ
node_matrix [ i ] [ k ] . y_point´node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /2 ,2) )Ðâ
;205 }206 }207 }208 }209 }210211212 void m a s s _ f l o w _ p e c l e t ( node node_matrix [ nodes_y +1] [ nodes_x +1] , double &dx , double &dy , Ðâ
double x , double y , i n t problem_index , double gamma , i n t c o n v e c t i o n _ i n d e x )213 {214 f o r ( i n t i =1; i<=nodes_y ´1; i++)215 {216 f o r ( i n t k =1; k<=nodes_x ´1; k++)217 {218 node_matrix [ i ] [ k ] . Pe=rho0 ∗ node_matrix [ i ] [ k ] . vxe ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l / gamma ;219 node_matrix [ i ] [ k ] . Pw=rho0 ∗ node_matrix [ i ] [ k ] . vxw ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l / gamma ;220 node_matrix [ i ] [ k ] . Ps=rho0 ∗ node_matrix [ i ] [ k ] . vys ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l / gamma ;221 node_matrix [ i ] [ k ] . Pn=rho0 ∗ node_matrix [ i ] [ k ] . vyn ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l / gamma ;222223 node_matrix [ i ] [ k ] . me=rho0 ∗ node_matrix [ i ] [ k ] . vxe ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l ;224 node_matrix [ i ] [ k ] . mw=rho0 ∗ node_matrix [ i ] [ k ] . vxw ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l ;225 node_matrix [ i ] [ k ] . mn=rho0 ∗ node_matrix [ i ] [ k ] . vyn ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l ;226 node_matrix [ i ] [ k ] . ms=rho0 ∗ node_matrix [ i ] [ k ] . vys ∗ node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l ;227228 node_matrix [ i ] [ k ] . Dw=gamma ∗ node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /( node_matrixÐâ
[ i ] [ k ] . c a r a _ h o r i t z o n t a l ) ;229 node_matrix [ i ] [ k ] . De=gamma ∗ node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l /( node_matrixÐâ
[ i ] [ k ] . c a r a _ h o r i t z o n t a l ) ;230 node_matrix [ i ] [ k ] . Ds=gamma ∗ node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /(Ðâ
node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l ) ;231 node_matrix [ i ] [ k ] . Dn=gamma ∗ node_matrix [ i ] [ k ] . c a r a _ h o r i t z o n t a l /(Ðâ
node_matrix [ i ] [ k ] . c a r a _ v e r t i c a l ) ;232 }233 }234 }235236 void n o n _ d i m e n s i o n a l _ v a l u e s ( i n t convection_index , node node_matrix [ nodes_y +1] [ nodes_xÐâ
+1])237 {238239 f o r ( i n t i =1; i<=nodes_y ´1; i++)240 {241 f o r ( i n t k =1; k<=nodes_x ´1; k++)242 {243 i f ( node_matrix [ i ] [ k ] . me >=0)244 {245 node_matrix [ i ] [ k ] . Xde=node_matrix [ i ] [ k +1] . x_point ;246 node_matrix [ i ] [ k ] . Xce=node_matrix [ i ] [ k ] . x_point ;247 node_matrix [ i ] [ k ] . Xue=node_matrix [ i ] [ k´1] . x_point ;248 node_matrix [ i ] [ k ] . PHIDe=node_matrix [ i ] [ k +1] . phi ;249 node_matrix [ i ] [ k ] . PHICe=node_matrix [ i ] [ k ] . phi ;250 node_matrix [ i ] [ k ] . PHIUe=node_matrix [ i ] [ k´1] . phi ;251 }252253 e l s e254 {255 i f ( k==nodes_x ´1)256 {257 node_matrix [ i ] [ k ] . Xde=node_matrix [ i ] [ k ] . x_point ;258 node_matrix [ i ] [ k ] . Xce=node_matrix [ i ] [ k +1] . x_point ;259 node_matrix [ i ] [ k ] . Xue=node_matrix [ i ] [ k +1] . x_point ;260 node_matrix [ i ] [ k ] . PHIDe=node_matrix [ i ] [ k ] . phi ;261 node_matrix [ i ] [ k ] . PHICe=node_matrix [ i ] [ k +1] . phi ;262 node_matrix [ i ] [ k ] . PHIUe=node_matrix [ i ] [ k +1] . phi ;263 }264
39
265 e l s e266 {267 node_matrix [ i ] [ k ] . Xde=node_matrix [ i ] [ k ] . x_point ;268 node_matrix [ i ] [ k ] . Xce=node_matrix [ i ] [ k +1] . x_point ;269 node_matrix [ i ] [ k ] . Xue=node_matrix [ i ] [ k +2] . x_point ;270 node_matrix [ i ] [ k ] . PHIDe=node_matrix [ i ] [ k ] . phi ;271 node_matrix [ i ] [ k ] . PHICe=node_matrix [ i ] [ k +1] . phi ;272 node_matrix [ i ] [ k ] . PHIUe=node_matrix [ i ] [ k +2] . phi ;273 }274 }275276 i f ( node_matrix [ i ] [ k ] . mw >=0)277 {278279 i f ( k==1)280 {281 node_matrix [ i ] [ k ] . Xdw=node_matrix [ i ] [ k ] . x_point ;282 node_matrix [ i ] [ k ] . Xcw=node_matrix [ i ] [ k´1] . x_point ;283 node_matrix [ i ] [ k ] . Xuw=node_matrix [ i ] [ k´1] . x_point ;284 node_matrix [ i ] [ k ] . PHIDw=node_matrix [ i ] [ k ] . phi ;285 node_matrix [ i ] [ k ] . PHICw=node_matrix [ i ] [ k´1] . phi ;286 node_matrix [ i ] [ k ] . PHIUw=node_matrix [ i ] [ k´1] . phi ;287 }288289 e l s e290 {291 node_matrix [ i ] [ k ] . Xdw=node_matrix [ i ] [ k ] . x_point ;292 node_matrix [ i ] [ k ] . Xcw=node_matrix [ i ] [ k´1] . x_point ;293 node_matrix [ i ] [ k ] . Xuw=node_matrix [ i ] [ k´2] . x_point ;294 node_matrix [ i ] [ k ] . PHIDw=node_matrix [ i ] [ k ] . phi ;295 node_matrix [ i ] [ k ] . PHICw=node_matrix [ i ] [ k´1] . phi ;296 node_matrix [ i ] [ k ] . PHIUw=node_matrix [ i ] [ k´2] . phi ;297 }298 }299300 e l s e301 {302 node_matrix [ i ] [ k ] . Xdw=node_matrix [ i ] [ k´1] . x_point ;303 node_matrix [ i ] [ k ] . Xcw=node_matrix [ i ] [ k ] . x_point ;304 node_matrix [ i ] [ k ] . Xuw=node_matrix [ i ] [ k +1] . x_point ;305 node_matrix [ i ] [ k ] . PHIDw=node_matrix [ i ] [ k´1] . phi ;306 node_matrix [ i ] [ k ] . PHICw=node_matrix [ i ] [ k ] . phi ;307 node_matrix [ i ] [ k ] . PHIUw=node_matrix [ i ] [ k +1] . phi ;308 }309310 i f ( node_matrix [ i ] [ k ] . mn >=0)311 {312 node_matrix [ i ] [ k ] . Xdn=node_matrix [ i +1] [ k ] . y_point ;313 node_matrix [ i ] [ k ] . Xcn=node_matrix [ i ] [ k ] . y_point ;314 node_matrix [ i ] [ k ] . Xun=node_matrix [ i´1] [ k ] . y_point ;315 node_matrix [ i ] [ k ] . PHIDn=node_matrix [ i +1] [ k ] . phi ;316 node_matrix [ i ] [ k ] . PHICn=node_matrix [ i ] [ k ] . phi ;317 node_matrix [ i ] [ k ] . PHIUn=node_matrix [ i´1] [ k ] . phi ;318 }319320 e l s e321 {322 i f ( i==nodes_y ´1)323 {324 node_matrix [ i ] [ k ] . Xdn=node_matrix [ i ] [ k ] . y_point ;325 node_matrix [ i ] [ k ] . Xcn=node_matrix [ i +1] [ k ] . y_point ;326 node_matrix [ i ] [ k ] . Xun=node_matrix [ i +1] [ k ] . y_point ;327 node_matrix [ i ] [ k ] . PHIDn=node_matrix [ i ] [ k ] . phi ;328 node_matrix [ i ] [ k ] . PHICn=node_matrix [ i +1] [ k ] . phi ;329 node_matrix [ i ] [ k ] . PHIUn=node_matrix [ i +1] [ k ] . phi ;330 }331332 e l s e333 {334 node_matrix [ i ] [ k ] . Xdn=node_matrix [ i ] [ k ] . y_point ;335 node_matrix [ i ] [ k ] . Xcn=node_matrix [ i +1] [ k ] . y_point ;336 node_matrix [ i ] [ k ] . Xun=node_matrix [ i +2] [ k ] . y_point ;337 node_matrix [ i ] [ k ] . PHIDn=node_matrix [ i ] [ k ] . phi ;338 node_matrix [ i ] [ k ] . PHICn=node_matrix [ i +1] [ k ] . phi ;339 node_matrix [ i ] [ k ] . PHIUn=node_matrix [ i +2] [ k ] . phi ;340 }341 }
40
342343 i f ( node_matrix [ i ] [ k ] . ms >=0)344 {345 i f ( i==1)346 {347 node_matrix [ i ] [ k ] . Xds=node_matrix [ i ] [ k ] . y_point ;348 node_matrix [ i ] [ k ] . Xcs=node_matrix [ i´1] [ k ] . y_point ;349 node_matrix [ i ] [ k ] . Xus=node_matrix [ i´1] [ k ] . y_point ;350 node_matrix [ i ] [ k ] . PHIDs=node_matrix [ i ] [ k ] . phi ;351 node_matrix [ i ] [ k ] . PHICs=node_matrix [ i´1] [ k ] . phi ;352 node_matrix [ i ] [ k ] . PHIUs=node_matrix [ i´1] [ k ] . phi ;353 }354355 e l s e356 {357 node_matrix [ i ] [ k ] . Xds=node_matrix [ i ] [ k ] . y_point ;358 node_matrix [ i ] [ k ] . Xcs=node_matrix [ i´1] [ k ] . y_point ;359 node_matrix [ i ] [ k ] . Xus=node_matrix [ i´2] [ k ] . y_point ;360 node_matrix [ i ] [ k ] . PHIDs=node_matrix [ i ] [ k ] . phi ;361 node_matrix [ i ] [ k ] . PHICs=node_matrix [ i´1] [ k ] . phi ;362 node_matrix [ i ] [ k ] . PHIUs=node_matrix [ i´2] [ k ] . phi ;363 }364 }365366 e l s e367 {368 node_matrix [ i ] [ k ] . Xds=node_matrix [ i´1] [ k ] . y_point ;369 node_matrix [ i ] [ k ] . Xcs=node_matrix [ i ] [ k ] . y_point ;370 node_matrix [ i ] [ k ] . Xus=node_matrix [ i +1] [ k ] . y_point ;371 node_matrix [ i ] [ k ] . PHIDs=node_matrix [ i´1] [ k ] . phi ;372 node_matrix [ i ] [ k ] . PHICs=node_matrix [ i ] [ k ] . phi ;373 node_matrix [ i ] [ k ] . PHIUs=node_matrix [ i +1] [ k ] . phi ;374 }375 }376 }377378 f o r ( i n t i =1; i<=nodes_y ´1; i++)379 {380 f o r ( i n t k =1; k<=nodes_x ´1; k++)381 {382383 node_matrix [ i ] [ k ] . Xe=( node_matrix [ i ] [ k ] . x_point+node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l /2´node_matrix [ i ] [ k ] . Xue ) /( node_matrix [ i ] [ k ] . Xde´Ðâ
node_matrix [ i ] [ k ] . Xue ) ;384 node_matrix [ i ] [ k ] . Xw=( node_matrix [ i ] [ k ] . x_point´node_matrix [ i ] [ k ] .Ðâ
c a r a _ h o r i t z o n t a l /2´node_matrix [ i ] [ k ] . Xuw ) /( node_matrix [ i ] [ k ] . Xdw´Ðâ
node_matrix [ i ] [ k ] . Xuw ) ;385 node_matrix [ i ] [ k ] . Xn=( node_matrix [ i ] [ k ] . y_point+node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l /2´node_matrix [ i ] [ k ] . Xun ) /( node_matrix [ i ] [ k ] . Xdn´Ðâ
node_matrix [ i ] [ k ] . Xun ) ;386 node_matrix [ i ] [ k ] . Xs=( node_matrix [ i ] [ k ] . y_point´node_matrix [ i ] [ k ] .Ðâ
c a r a _ v e r t i c a l /2´node_matrix [ i ] [ k ] . Xus ) /( node_matrix [ i ] [ k ] . Xds´Ðâ
node_matrix [ i ] [ k ] . Xus ) ;387388 node_matrix [ i ] [ k ] . Xce_adim =( node_matrix [ i ] [ k ] . Xce´node_matrix [ i ] [ k ] . XueÐâ
) /( node_matrix [ i ] [ k ] . Xde´node_matrix [ i ] [ k ] . Xue ) ;389 node_matrix [ i ] [ k ] . Xcw_adim =( node_matrix [ i ] [ k ] . Xcw´node_matrix [ i ] [ k ] . XuwÐâ
) /( node_matrix [ i ] [ k ] . Xdw´node_matrix [ i ] [ k ] . Xuw ) ;390 node_matrix [ i ] [ k ] . Xcn_adim =( node_matrix [ i ] [ k ] . Xcn´node_matrix [ i ] [ k ] . XunÐâ
) /( node_matrix [ i ] [ k ] . Xdn´node_matrix [ i ] [ k ] . Xun ) ;391 node_matrix [ i ] [ k ] . Xcs_adim =( node_matrix [ i ] [ k ] . Xcs´node_matrix [ i ] [ k ] . XusÐâ
) /( node_matrix [ i ] [ k ] . Xds´node_matrix [ i ] [ k ] . Xus ) ;392393394 i f ( isnan ( ( node_matrix [ i ] [ k ] . PHICe´node_matrix [ i ] [ k ] . PHIUe ) /(Ðâ
node_matrix [ i ] [ k ] . PHIDe´node_matrix [ i ] [ k ] . PHIUe ) ) | | isinf ( (Ðâ
node_matrix [ i ] [ k ] . PHICe´node_matrix [ i ] [ k ] . PHIUe ) /( node_matrix [ i ] [ kÐâ
] . PHIDe´node_matrix [ i ] [ k ] . PHIUe ) ) )395 {396397 node_matrix [ i ] [ k ] . PHICE =0;398 }399400 e l s e401 {402 node_matrix [ i ] [ k ] . PHICE =( node_matrix [ i ] [ k ] . PHICe´node_matrix [ i ] [ k ] .Ðâ
PHIUe ) /( node_matrix [ i ] [ k ] . PHIDe´node_matrix [ i ] [ k ] . PHIUe ) ;
41
403 }404405 i f ( isnan ( ( node_matrix [ i ] [ k ] . PHICw´node_matrix [ i ] [ k ] . PHIUw ) /(Ðâ
node_matrix [ i ] [ k ] . PHIDw´node_matrix [ i ] [ k ] . PHIUw ) ) | | isinf ( (Ðâ
node_matrix [ i ] [ k ] . PHICw´node_matrix [ i ] [ k ] . PHIUw ) /( node_matrix [ i ] [ kÐâ
] . PHIDw´node_matrix [ i ] [ k ] . PHIUw ) ) )406 {407 node_matrix [ i ] [ k ] . PHICW =0;408 }409410 e l s e411 {412 node_matrix [ i ] [ k ] . PHICW =( node_matrix [ i ] [ k ] . PHICw´node_matrix [ i ] [ k ] .Ðâ
PHIUw ) /( node_matrix [ i ] [ k ] . PHIDw´node_matrix [ i ] [ k ] . PHIUw ) ;413 }414415 i f ( isnan ( ( node_matrix [ i ] [ k ] . PHICn´node_matrix [ i ] [ k ] . PHIUn ) /(Ðâ
node_matrix [ i ] [ k ] . PHIDn´node_matrix [ i ] [ k ] . PHIUn ) ) | | isinf ( (Ðâ
node_matrix [ i ] [ k ] . PHICn´node_matrix [ i ] [ k ] . PHIUn ) /( node_matrix [ i ] [ kÐâ
] . PHIDn´node_matrix [ i ] [ k ] . PHIUn ) ) )416 {417 node_matrix [ i ] [ k ] . PHICN =0;418 }419420 e l s e421 {422 node_matrix [ i ] [ k ] . PHICN =( node_matrix [ i ] [ k ] . PHICn´node_matrix [ i ] [ k ] .Ðâ
PHIUn ) /( node_matrix [ i ] [ k ] . PHIDn´node_matrix [ i ] [ k ] . PHIUn ) ;423 }424425 i f ( isnan ( ( node_matrix [ i ] [ k ] . PHICs´node_matrix [ i ] [ k ] . PHIUs ) /(Ðâ
node_matrix [ i ] [ k ] . PHIDs´node_matrix [ i ] [ k ] . PHIUs ) ) | | isinf ( (Ðâ
node_matrix [ i ] [ k ] . PHICs´node_matrix [ i ] [ k ] . PHIUs ) /( node_matrix [ i ] [ kÐâ
] . PHIDs´node_matrix [ i ] [ k ] . PHIUs ) ) )426 {427 node_matrix [ i ] [ k ] . PHICS =0;428 }429430 e l s e431 {432 node_matrix [ i ] [ k ] . PHICS =( node_matrix [ i ] [ k ] . PHICs´node_matrix [ i ] [ k ] .Ðâ
PHIUs ) /( node_matrix [ i ] [ k ] . PHIDs´node_matrix [ i ] [ k ] . PHIUs ) ;433 }434 }435 }436437 f o r ( i n t i =1; i<=nodes_y ´1; i++)438 {439 f o r ( i n t k =1; k<=nodes_x ´1; k++)440 {441 i f ( node_matrix [ i ] [ k ] . vys >=0)442 {443 node_matrix [ i ] [ k ] . PHIsUPWIND=node_matrix [ i´1] [ k ] . phi ;444 }445446 e l s e447 {448 node_matrix [ i ] [ k ] . PHIsUPWIND=node_matrix [ i ] [ k ] . phi ;449 }450451 i f ( node_matrix [ i ] [ k ] . vyn >=0)452 {453 node_matrix [ i ] [ k ] . PHInUPWIND=node_matrix [ i ] [ k ] . phi ;454 }455456 e l s e457 {458 node_matrix [ i ] [ k ] . PHInUPWIND=node_matrix [ i +1] [ k ] . phi ;459 }460461 i f ( node_matrix [ i ] [ k ] . Xcn_adim==0)462 {463 node_matrix [ i ] [ k ] . PHInHRS=node_matrix [ i ] [ k ] . PHInUPWIND ;464 }465466 e l s e467 {
42
468 i f ( c o n v e c t i o n _ i n d e x==1)469 {470 node_matrix [ i ] [ k ] . PHInHRS=node_matrix [ i ] [ k ] . PHIUn +(Ðâ
node_matrix [ i ] [ k ] . PHIDn´node_matrix [ i ] [ k ] . PHIUn ) ∗(Ðâ
node_matrix [ i ] [ k ] . Xn / node_matrix [ i ] [ k ] . Xcn_adim ∗Ðâ
node_matrix [ i ] [ k ] . PHICN ) ;471 }472473 e l s e i f ( c o n v e c t i o n _ i n d e x==2)474 {475 node_matrix [ i ] [ k ] . PHInHRS=node_matrix [ i ] [ k ] . PHIUn +(Ðâ
node_matrix [ i ] [ k ] . PHIDn´node_matrix [ i ] [ k ] . PHIUn ) ∗(Ðâ
node_matrix [ i ] [ k ] . Xn+( node_matrix [ i ] [ k ] . Xn ∗( node_matrixÐâ
[ i ] [ k ] . Xn´1) ) /( node_matrix [ i ] [ k ] . Xcn_adim ∗( node_matrix [Ðâ
i ] [ k ] . Xcn_adim ´1) ) ∗( node_matrix [ i ] [ k ] . PHICN´node_matrixÐâ
[ i ] [ k ] . Xcn_adim ) ) ;476 }477 }478479 i f ( node_matrix [ i ] [ k ] . Xcs_adim==0)480 {481 node_matrix [ i ] [ k ] . PHIsHRS=node_matrix [ i ] [ k ] . PHIsUPWIND ;482 }483484 e l s e485 {486 i f ( c o n v e c t i o n _ i n d e x==1)487 {488 node_matrix [ i ] [ k ] . PHIsHRS=node_matrix [ i ] [ k ] . PHIUs +(Ðâ
node_matrix [ i ] [ k ] . PHIDs´node_matrix [ i ] [ k ] . PHIUs ) ∗(Ðâ
node_matrix [ i ] [ k ] . Xs / node_matrix [ i ] [ k ] . Xcs_adim ∗Ðâ
node_matrix [ i ] [ k ] . PHICS ) ;489 }490491 e l s e i f ( c o n v e c t i o n _ i n d e x==2)492 {493 node_matrix [ i ] [ k ] . PHIsHRS=node_matrix [ i ] [ k ] . PHIUs +( node_matrix [Ðâ
i ] [ k ] . PHIDs´node_matrix [ i ] [ k ] . PHIUs ) ∗( node_matrix [ i ] [ k ] . XsÐâ
+( node_matrix [ i ] [ k ] . Xs ∗( node_matrix [ i ] [ k ] . Xs´1) ) /(Ðâ
node_matrix [ i ] [ k ] . Xcs_adim ∗( node_matrix [ i ] [ k ] . Xcs_adim ´1) )Ðâ
∗( node_matrix [ i ] [ k ] . PHICS´node_matrix [ i ] [ k ] . Xcs_adim ) ) ;494 }495 }496497 i f ( node_matrix [ i ] [ k ] . vxe >=0)498 {499 node_matrix [ i ] [ k ] . PHIeUPWIND=node_matrix [ i ] [ k ] . phi ;500 }501502 e l s e503 {504 node_matrix [ i ] [ k ] . PHIeUPWIND=node_matrix [ i ] [ k +1] . phi ;505 }506507 i f ( node_matrix [ i ] [ k ] . vxw >=0)508 {509 node_matrix [ i ] [ k ] . PHIwUPWIND=node_matrix [ i ] [ k´1] . phi ;510 }511512 e l s e513 {514 node_matrix [ i ] [ k ] . PHIwUPWIND=node_matrix [ i ] [ k ] . phi ;515 }516517 i f ( node_matrix [ i ] [ k ] . Xcw_adim==0)518 {519 node_matrix [ i ] [ k ] . PHIwHRS=node_matrix [ i ] [ k ] . PHIwUPWIND ;520 }521522 e l s e523 {524 i f ( c o n v e c t i o n _ i n d e x==1)525 {526 node_matrix [ i ] [ k ] . PHIwHRS=node_matrix [ i ] [ k ] . PHIUw +( node_matrix [Ðâ
i ] [ k ] . PHIDw´node_matrix [ i ] [ k ] . PHIUw ) ∗( node_matrix [ i ] [ k ] . Xw /Ðâ
node_matrix [ i ] [ k ] . Xcw_adim ∗ node_matrix [ i ] [ k ] . PHICW ) ;527 }
43
528529 e l s e i f ( c o n v e c t i o n _ i n d e x==2)530 {531 node_matrix [ i ] [ k ] . PHIwHRS=node_matrix [ i ] [ k ] . PHIUw +( node_matrix [Ðâ
i ] [ k ] . PHIDw´node_matrix [ i ] [ k ] . PHIUw ) ∗( node_matrix [ i ] [ k ] . XwÐâ
+( node_matrix [ i ] [ k ] . Xw ∗( node_matrix [ i ] [ k ] . Xw´1) ) /(Ðâ
node_matrix [ i ] [ k ] . Xcw_adim ∗( node_matrix [ i ] [ k ] . Xcw_adim ´1) )Ðâ
∗( node_matrix [ i ] [ k ] . PHICW´node_matrix [ i ] [ k ] . Xcw_adim ) ) ;532 }533 }534535 i f ( node_matrix [ i ] [ k ] . Xce_adim==0)536 {537 node_matrix [ i ] [ k ] . PHIeHRS=node_matrix [ i ] [ k ] . PHIeUPWIND ;538 }539540 e l s e541 {542 i f ( c o n v e c t i o n _ i n d e x==1)543 {544 node_matrix [ i ] [ k ] . PHIeHRS=node_matrix [ i ] [ k ] . PHIUe +( node_matrix [Ðâ
i ] [ k ] . PHIDe´node_matrix [ i ] [ k ] . PHIUe ) ∗( node_matrix [ i ] [ k ] . Xe /Ðâ
node_matrix [ i ] [ k ] . Xce_adim ∗ node_matrix [ i ] [ k ] . PHICE ) ;545 }546547 e l s e i f ( c o n v e c t i o n _ i n d e x==2)548 {549 node_matrix [ i ] [ k ] . PHIeHRS=node_matrix [ i ] [ k ] . PHIUe +( node_matrix [Ðâ
i ] [ k ] . PHIDe´node_matrix [ i ] [ k ] . PHIUe ) ∗( node_matrix [ i ] [ k ] . XeÐâ
+( node_matrix [ i ] [ k ] . Xe ∗( node_matrix [ i ] [ k ] . Xe´1) ) /(Ðâ
node_matrix [ i ] [ k ] . Xce_adim ∗( node_matrix [ i ] [ k ] . Xce_adim ´1) )Ðâ
∗( node_matrix [ i ] [ k ] . PHICE´node_matrix [ i ] [ k ] . Xce_adim ) ) ;550 }551 }552 }553 }554 }555556557 void c o e f f i c i e n t s _ c a l c u l a t i o n ( node node_matrix [ nodes_y +1] [ nodes_x +1] , i n t Ðâ
p r o b l e m _ i n d e x )558 {559 n o n _ d i m e n s i o n a l _ v a l u e s ( convection_index , node_matrix ) ;560561 f o r ( i n t i =0; i<=nodes_y ; i++)562 {563 f o r ( i n t k =0; k<=nodes_x ; k++)564 {565 i f ( k==0)566 {567 node_matrix [ i ] [ k ] . ae =0;568 node_matrix [ i ] [ k ] . aw =0;569 node_matrix [ i ] [ k ] . an =0;570 node_matrix [ i ] [ k ] . as =0;571 node_matrix [ i ] [ k ] . ap =1;572573 i f ( p r o b l e m _ i n d e x==1)574 {575 node_matrix [ i ] [ k ] . bp =1;576 }577578 e l s e i f ( p r o b l e m _ i n d e x==2)579 {580 node_matrix [ i ] [ k ] . bp =1;581 }582583 e l s e i f ( p r o b l e m _ i n d e x==3)584 {585 node_matrix [ i ] [ k ] . bp=1́ tanh (1 0) ;586 }587 }588589 e l s e i f ( k==nodes_x )590 {591 node_matrix [ i ] [ k ] . ae =0;592 node_matrix [ i ] [ k ] . aw =0;593 node_matrix [ i ] [ k ] . an =0;
44
594 node_matrix [ i ] [ k ] . as =0;595 node_matrix [ i ] [ k ] . ap =1;596597 i f ( p r o b l e m _ i n d e x==1)598 {599 node_matrix [ i ] [ k ] . bp =200;600 }601602 e l s e i f ( p r o b l e m _ i n d e x==2)603 {604 node_matrix [ i ] [ k ] . bp =200;605 }606607 e l s e i f ( p r o b l e m _ i n d e x==3)608 {609 node_matrix [ i ] [ k ] . bp=1́ tanh (1 0) ;610 }611 }612613 e l s e i f ( i==0 && k !=0 && k != nodes_x )614 {615 node_matrix [ i ] [ k ] . ae =0;616 node_matrix [ i ] [ k ] . aw =0;617 node_matrix [ i ] [ k ] . an =0;618 node_matrix [ i ] [ k ] . as =0;619 node_matrix [ i ] [ k ] . ap =1;620621 i f ( p r o b l e m _ i n d e x==1)622 {623 node_matrix [ i ] [ k ] . bp=node_matrix [ i +1] [ k ] . phi ;624 }625626 e l s e i f ( p r o b l e m _ i n d e x==2)627 {628 node_matrix [ i ] [ k ] . bp =200;629 }630631 e l s e i f ( p r o b l e m _ i n d e x==3)632 {633 i f ( k<=(nodes_x +1) /2)634 {635 node_matrix [ i ] [ k ] . bp=1+tanh (10∗(2∗ node_matrix [ i ] [ k ] . x_pointÐâ
+1) ) ;636 }637638 e l s e639 {640 node_matrix [ i ] [ k ] . bp=node_matrix [ i +1] [ k ] . phi ;641 }642 }643 }644645 e l s e i f ( i==nodes_y && k !=0 && k != nodes_x )646 {647 node_matrix [ i ] [ k ] . ae =0;648 node_matrix [ i ] [ k ] . aw =0;649 node_matrix [ i ] [ k ] . an =0;650 node_matrix [ i ] [ k ] . as =0;651 node_matrix [ i ] [ k ] . ap =1;652653 i f ( p r o b l e m _ i n d e x==1)654 {655 node_matrix [ i ] [ k ] . bp=node_matrix [ i´1] [ k ] . phi ;656 }657658 e l s e i f ( p r o b l e m _ i n d e x==2)659 {660 node_matrix [ i ] [ k ] . bp =1;661 }662663 e l s e i f ( p r o b l e m _ i n d e x==3)664 {665 node_matrix [ i ] [ k ] . bp=1́ tanh (1 0) ;666 }667 }668669 e l s e
45
670 {671 node_matrix [ i ] [ k ] . ae=node_matrix [ i ] [ k ] . De´( node_matrix [ i ] [ k ] . me´fabs (Ðâ
node_matrix [ i ] [ k ] . me ) ) / 2 ;672 node_matrix [ i ] [ k ] . aw=node_matrix [ i ] [ k ] . Dw+( node_matrix [ i ] [ k ] . mw+fabs (Ðâ
node_matrix [ i ] [ k ] . mw ) ) / 2 ;673 node_matrix [ i ] [ k ] . an=node_matrix [ i ] [ k ] . Dn´( node_matrix [ i ] [ k ] . mn´fabs (Ðâ
node_matrix [ i ] [ k ] . mn ) ) / 2 ;674 node_matrix [ i ] [ k ] . as=node_matrix [ i ] [ k ] . Ds+( node_matrix [ i ] [ k ] . ms+fabs (Ðâ
node_matrix [ i ] [ k ] . ms ) ) / 2 ;675 node_matrix [ i ] [ k ] . ap=node_matrix [ i ] [ k ] . ae+node_matrix [ i ] [ k ] . an+Ðâ
node_matrix [ i ] [ k ] . aw+node_matrix [ i ] [ k ] . as ;676 node_matrix [ i ] [ k ] . bp=́ node_matrix [ i ] [ k ] . me ∗( node_matrix [ i ] [ k ] . PHIeHRS´Ðâ
node_matrix [ i ] [ k ] . PHIeUPWIND )+node_matrix [ i ] [ k ] . mw ∗( node_matrix [ i ] [Ðâ
k ] . PHIwHRS´node_matrix [ i ] [ k ] . PHIwUPWIND )´node_matrix [ i ] [ k ] . mn ∗(Ðâ
node_matrix [ i ] [ k ] . PHInHRS´node_matrix [ i ] [ k ] . PHInUPWIND )+node_matrixÐâ
[ i ] [ k ] . ms ∗( node_matrix [ i ] [ k ] . PHIsHRS´node_matrix [ i ] [ k ] . PHIsUPWIND ) ;677 }678 }679 }680 }681682 void solver ( node node_matrix [ nodes_y +1] [ nodes_x +1] , double &error , double Ðâ
error_iteration , double sigma , i n t p r o b l e m _ i n d e x )683 {684685 error =10;686687 whi le ( error>sigma )688 {689 c o e f f i c i e n t s _ c a l c u l a t i o n ( node_matrix , p r o b l e m _ i n d e x ) ;690691 f o r ( i n t i =0; i<=nodes_y ; i++)692 {693 f o r ( i n t k =0; k<=nodes_x ; k++)694 {695 i f ( i==0 | | i==nodes_y | | k==0 | | k==nodes_x )696 {697 node_matrix [ i ] [ k ] . phi=node_matrix [ i ] [ k ] . bp ;698 }699700 e l s e701 {702 node_matrix [ i ] [ k ] . phi=( node_matrix [ i ] [ k ] . aw ∗ node_matrix [ i ] [ k´1] . phi+Ðâ
node_matrix [ i ] [ k ] . ae ∗ node_matrix [ i ] [ k +1] . phi+node_matrix [ i ] [ k ] . an ∗Ðâ
node_matrix [ i +1] [ k ] . phi+node_matrix [ i ] [ k ] . as ∗ node_matrix [ i´1] [ k ] .Ðâ
phi+node_matrix [ i ] [ k ] . bp ) /( node_matrix [ i ] [ k ] . ap ) ;703 }704 }705 }706707708 e r r o r _ i t e r a t i o n =0;709710 f o r ( i n t i =0; i<=(nodes_y ) ; i++)711 {712 f o r ( i n t k =0; k<=(nodes_x ) ; k++)713 {714715 i f ( fabs ( node_matrix [ i ] [ k ] . phi´node_matrix [ i ] [ k ] . p h i _ e s t i m a t e d )>Ðâ
e r r o r _ i t e r a t i o n )716 {717 e r r o r _ i t e r a t i o n=fabs ( node_matrix [ i ] [ k ] . phi´node_matrix [ i ] [ k ] .Ðâ
p h i _ e s t i m a t e d ) ;718 }719 }720 }721722 error=e r r o r _ i t e r a t i o n ;723724 f o r ( i n t i =0; i<=nodes_y ; i++)725 {726 f o r ( i n t k =0; k<=nodes_x ; k++)727 {728 node_matrix [ i ] [ k ] . p h i _ e s t i m a t e d=node_matrix [ i ] [ k ] . phi ;729 }730 }731
1 #inc lude <iostream>2 #inc lude <math . h>3 #i n c l u d e <s t d i o . h>4 #i n c l u d e <vector >5 #inc lude <fstream>6 #d e f i n e nodes_x 1007 #d e f i n e nodes_y 10089 us ing namespace std ;
1011 double x =1.0;12 double y =1.0;13 double time =0;14 double rho0 =3200;15 double mu =1;16 double D =1;17 double Delta_t ;18 double dx , dy ;19 double error ;20 double e r r o r _ i t e r a t i o n ;21 i n t c o n v e c t i o n _ i n d e x ;22 double s i g m a _ v e l o c i t y =0.0000001;23 vector<double> X ( nodes_x +1) ;24 vector<double> Y ( nodes_y +1) ;25 vector<double> x_point ( nodes_x +2) ;26 vector<double> y_point ( nodes_x +2) ;27 double U0 [ nodes_y +2] [ nodes_x +1] , U1 [ nodes_y +2] [ nodes_x +1] , Up [ nodes_y +2] [ nodes_x +1] , V0Ðâ
Rn_y [ nodes_y +1] [ nodes_x +2] , Rn_y_ant [ nodes_y +1] [ nodes_x +2] ,30 m a x _ d i f f _ v e l o c i t y _ x =0, m a x _ d i f f _ v e l o c i t y _ y =0, max_diff =10;3132 void m e s h _ g e n e r a t i o n ( double &Delta_t , vector<double>& X , vector<double>& Y , vector<Ðâ
nodes_x +1] ,55 double& Delta_t , double&time ) ;5657 void v e l _ m e a n _ c a l c ( double V1 [ nodes_y +1] [ nodes_x +2] , double U1 [ nodes_y +2] [ nodes_x +1] , Ðâ
double vel [ nodes_y +2] [ nodes_x +2]) ;585960 main ( )61 {62 cout<<" Generating mesh . . . "<<" \n" ;63 m e s h _ g e n e r a t i o n ( Delta_t , X , Y , x_point , y_point , dx , dy , x , y , rho0 , mu , D ) ;64 cout<<" I n i t i a l v e l o c i t y and pressure map . . . "<<" \n" ;65 initial_map ( X , Y , x_point , y_point , U0 , U1 , V0 , V1 , P0 , P1 ) ;66 cout<<"Type the number of the convect ive scheme you want to use : "<<" \n" ;67 cout<<" 1. UDS"<<" \n" ;68 cout<<" 2. QUICK"<<" \n" ;69 cout<<" 3. SMART"<<" \n" ;70 cin>>c o n v e c t i o n _ i n d e x ;71 cout<<" So lv ing . . . "<<" \n" ;7273 whi le ( max_diff>s i g m a _ v e l o c i t y )74 {75 cout<<max_diff<<" \n" ;76 R u _ c a l c u l a t i o n ( X , Y , x_point , y_point , dx , dy , x , y , rho0 , mu , U0 , V0 , Rn_x , Rn_x_ant , Ðâ
time , Delta_t , c o n v e c t i o n _ i n d e x ) ;7778 R v _ c a l c u l a t i o n ( X , Y , x_point , y_point , dx , dy , x , y , rho0 , mu , U0 , V0 , Rn_y , Rn_y_antÐâ
, time , Delta_t , c o n v e c t i o n _ i n d e x ) ;7980 p r e s s u r e _ s o l v e r ( X , Y , x_point , y_point , Vp , P0 , P1 , ae , aw , an , as , ap , bp , Up , Ðâ
Delta_t ) ;8182 v e l o c i t y _ c a l c u l a t i o n ( X , Y , x_point , y_point , Vp , P0 , P1 , ae , aw , an , as , ap , bp , Up , Ðâ
Delta_t ) ;8384 d e l t a _ t _ c a l c u l a t i o n ( X , Y , x_point , y_point , V1 , U1 , Delta_t , time ) ;8586 f o r ( i n t i =0; i<=nodes_y +1; i++)87 {88 f o r ( i n t k =0; k<=nodes_x ; k++)89 {90 i f ( fabs ( U1 [ i ] [ k ]´U0 [ i ] [ k ] )>m a x _ d i f f _ v e l o c i t y _ x )91 {92 m a x _ d i f f _ v e l o c i t y _ x=fabs ( U1 [ i ] [ k ]´U0 [ i ] [ k ] ) ;93 }94 }95 }9697 f o r ( i n t i =0; i<=nodes_y ; i++)98 {99 f o r ( i n t k =0; k<=nodes_x +1; k++)
100 {101 i f ( fabs ( V1 [ i ] [ k ]´V0 [ i ] [ k ] )>m a x _ d i f f _ v e l o c i t y _ y )102 {103 m a x _ d i f f _ v e l o c i t y _ y=fabs ( V1 [ i ] [ k ]´V0 [ i ] [ k ] ) ;104 }105 }106 }107108109 i f ( max_diff_velocity_y <m a x _ d i f f _ v e l o c i t y _ x )110 {111 max_diff=m a x _ d i f f _ v e l o c i t y _ x ;112 }113114 e l s e
49
115116 {117 max_diff=m a x _ d i f f _ v e l o c i t y _ y ;118 }119120121 f o r ( i n t i =1; i<=nodes_y ; i++)122 {123 f o r ( i n t k =1; k<=nodes_x ´1; k++)124 {125 U0 [ i ] [ k ]= U1 [ i ] [ k ] ;126 }127 }128129 f o r ( i n t i =0; i<=nodes_y ; i++)130 {131 f o r ( i n t k =0; k<=nodes_x +1; k++)132 {133 V0 [ i ] [ k ]= V1 [ i ] [ k ] ;134 }135 }136 m a x _ d i f f _ v e l o c i t y _ y =0;137 m a x _ d i f f _ v e l o c i t y _ x =0;138 }139140 v e l _ m e a n _ c a l c ( V1 , U1 , vel ) ;141 cout<<" Saving r e s u l t s . . . "<<" \n" ;142 ofstream file1 ;143 file1 . open ( "FSM_HRS_U. dat " ) ;144 i f ( file1 . is_open ( ) )145 {146 cout<<" F i l e opened s u c c e s s f u l l y \n" ;147 }148149 e l s e150 {151 cout<<" Error saving data , c l o s e Excel \n" ;152 exit ( 1 ) ;153 }154155 cout<<" Saving data \n" ;156 file1<<"TITLE = \"FRACTIONAL STEP METHOD\" " ;157 file1<<" \n" ;158 file1<<"VARIABLES = \"X\" , \"Y\" , \"U\" " ;159 file1<<" \n" ;160 file1<<"ZONE=\"Domain\" , I=" ;161 file1<<nodes_x +1;162 file1<<" , " ;163 file1<<"J= " ;164 file1<<nodes_y +2;165 file1<<" \n" ;166167 f o r ( i n t i =0; i<=nodes_y +1; i++)168 {169 f o r ( i n t k =0; k<=nodes_x ; k++)170 {171 file1<<X [ k ] ;172 file1<<" " ;173 file1<<y_point [ i ] ;174 file1<<" " ;175 file1<<U1 [ i ] [ k ] ;176 file1<<" " ;177 file1<<" \n" ;178 }179 }180181 ofstream file2 ;182 file2 . open ( "FSM_HRS_V. dat " ) ;183 i f ( file2 . is_open ( ) )184 {185 cout<<" F i l e opened s u c c e s s f u l l y \n" ;186 }187188 e l s e189 {190 cout<<" Error saving data , c l o s e Excel \n" ;191 exit ( 1 ) ;
50
192 }193194 cout<<" Saving data \n" ;195 file2<<"TITLE = \"FRACTIONAL STEP METHOD\" " ;196 file2<<" \n" ;197 file2<<"VARIABLES = \"X\" , \"Y\" , \"V\" " ;198 file2<<" \n" ;199 file2<<"ZONE=\"Domain\" , I=" ;200 file2<<nodes_x +2;201 file2<<" , " ;202 file2<<"J= " ;203 file2<<nodes_y +1;204 file2<<" \n" ;205206 f o r ( i n t i =0; i<=nodes_y ; i++)207 {208 f o r ( i n t k =0; k<=nodes_x +1; k++)209 {210 file2<<x_point [ k ] ;211 file2<<" " ;212 file2<<Y [ i ] ;213 file2<<" " ;214 file2<<V1 [ i ] [ k ] ;215 file2<<" " ;216 file2<<" \n" ;217 }218 }219220 ofstream file3 ;221 file3 . open ( "FSM_HRS_Velocity_modulus . dat " ) ;222 i f ( file3 . is_open ( ) )223 {224 cout<<" F i l e opened s u c c e s s f u l l y \n" ;225 }226227 e l s e228 {229 cout<<" Error saving data , c l o s e Excel \n" ;230 exit ( 1 ) ;231 }232233 cout<<" Saving data \n" ;234 file3<<"TITLE = \"FRACTIONAL STEP METHOD\" " ;235 file3<<" \n" ;236 file3<<"VARIABLES = \"X\" , \"Y\" , \ " |U| \ " " ;237 file3<<" \n" ;238 file3<<"ZONE=\"Domain\" , I=" ;239 file3<<nodes_x +2;240 file3<<" , " ;241 file3<<"J= " ;242 file3<<nodes_y +2;243 file3<<" \n" ;244245246 f o r ( i n t i =0; i<=nodes_y +1; i++)247 {248 f o r ( i n t k =0; k<=nodes_x +1; k++)249 {250 file3<<x_point [ k ] ;251 file3<<" " ;252 file3<<y_point [ i ] ;253 file3<<" " ;254 file3<<vel [ i ] [ k ] ;255 file3<<" " ;256 file3<<" \n" ;257 }258 }259260 ofstream file4 ;261 file4 . open ( "FSM_HRS_P. dat " ) ;262 i f ( file4 . is_open ( ) )263 {264 cout<<" F i l e opened s u c c e s s f u l l y \n" ;265 }266267 e l s e268 {
51
269 cout<<" Error saving data , c l o s e Excel \n" ;270 exit ( 1 ) ;271 }272273 cout<<" Saving data \n" ;274 file4<<"TITLE = \"FRACTIONAL STEP METHOD\" " ;275 file4<<" \n" ;276 file4<<"VARIABLES = \"X\" , \"Y\" , \"P\" " ;277 file4<<" \n" ;278 file4<<"ZONE=\"Domain\" , I=" ;279 file4<<nodes_x +2;280 file4<<" , " ;281 file4<<"J= " ;282 file4<<nodes_y +2;283 file4<<" \n" ;284285286 f o r ( i n t i =0; i<=nodes_y +1; i++)287 {288 f o r ( i n t k =0; k<=nodes_x +1; k++)289 {290 file4<<x_point [ k ] ;291 file4<<" " ;292 file4<<y_point [ i ] ;293 file4<<" " ;294 file4<<P1 [ i ] [ k ] ;295 file4<<" " ;296 file4<<" \n" ;297 }298 }299 }300301 void m e s h _ g e n e r a t i o n ( double &Delta_t , vector<double>& X , vector<double>& Y , vector<Ðâ
double>& x_point , vector<double>& y_point , double &dx , double &dy , double x ,302 double y , double rho0 , double mu , double D )303304 {305 double min_delta_x =100 , min_delta_y =100 , Delta_x_min , L =1.0 , l =0.1;306 i n t nx1 =20, nx2 =50, nx3 =30;307 double dx1 , dx2 , dx3 , dy1 , dy2 , dy3 ;308 dx1 =0.1/ nx1 ;309 dx2 =0.8/ nx2 ;310 dx3 =0.1/ nx3 ;311 dy1=dx1 ;312 dy2=dx2 ;313 dy3=dx3 ;314315 X [ 0 ] = 0 ;316 f o r ( i n t k =1; k<=nx1 ; k++)317 {318 X [ k ]=X [ k´1]+dx1 ;319 }320321 f o r ( i n t k=nx1 +1; k<=(nx1+nx2 ) ; k++)322 {323 X [ k ]=X [ k´1]+dx2 ;324 }325326 f o r ( i n t k=nx1+nx2 +1; k<=(nx1+nx2+nx3 ) ; k++)327 {328 X [ k ]=X [ k´1]+dx3 ;329 }330331 Y [ 0 ] = 0 ;332 f o r ( i n t i =1; i<=nx1 ; i++)333 {334 Y [ i ]=Y [ i´1]+dy1 ;335 }336337 f o r ( i n t i=nx1 +1; i<=(nx1+nx2 ) ; i++)338 {339 Y [ i ]=Y [ i´1]+dy2 ;340 }341342 f o r ( i n t i=nx1+nx2 +1; i<=(nx1+nx2+nx3 ) ; i++)343 {344 Y [ i ]=Y [ i´1]+dy3 ;
52
345 }346347 x_point [ 0 ] = 0 ;348 f o r ( i n t k =1; k<=nodes_x ; k++)349 {350 x_point [ k ]=( X [ k ]+X [ k´1]) / 2 . 0 ;351 }352 x_point [ nodes_x +1]=x ;353354 y_point [ 0 ] = 0 ;355 f o r ( i n t i =1; i<=nodes_y ; i++)356 {357 y_point [ i ]=( Y [ i ]+Y [ i´1]) / 2 . 0 ;358 }359 y_point [ nodes_y +1]=y ;360361362 i f ( dy1<dy2 )363 {364 Delta_x_min=dy1 ;365 }366367 e l s e368 {369 Delta_x_min=dy2 ;370 }371372 i f ( dy3<Delta_x_min )373 {374 Delta_x_min=dy3 ;375 }376377 Delta_t =0.2∗ rho0 ∗ pow ( Delta_x_min , 2 ) / mu ;378379 }380381 void initial_map ( vector<double>& X , vector<double>& Y , vector<double>& x_point , vectorÐâ
nodes_x +2] , double P1 [ nodes_y +2] [ nodes_x +2])383384 {385386 f o r ( i n t i =0; i<=nodes_y +1; i++)387 {388 f o r ( i n t k =0; k<=nodes_x +1; k++)389 {390 P0 [ i ] [ k ]=0;391 P1 [ i ] [ k ]=0;392 }393 }394395 f o r ( i n t i =0; i<=nodes_y +1; i++)396 {397 f o r ( i n t k =0; k<=nodes_x ; k++)398 {399 i f ( i==nodes_y +1)400 {401 U0 [ i ] [ k ]=1;402 U1 [ i ] [ k ]=1;403 }404405 e l s e406 {407 U0 [ i ] [ k ]=0;408 U1 [ i ] [ k ]=0;409 }410 }411 }412413 f o r ( i n t i =0; i<=nodes_y ; i++)414 {415 f o r ( i n t k =0; k<=nodes_x +1; k++)416 {417 V0 [ i ] [ k ]=0;418 V1 [ i ] [ k ]=0;
double Xf , double phi_upwind )425 {426 r e t u r n phi_upwind ;427 }428429 double SMART ( double Xd , double Xu , double Xc , double Phid , double Phiu , double Phic , Ðâ
double Xf , double phi_upwind )430 {431 double phif , xf , xc , phic ;432433 phic=(Phic´Phiu ) /( Phid´Phiu ) ;434 xf=(Xf´Xu ) /( Xd´Xu ) ;435 xc=(Xc´Xu ) /( Xd´Xu ) ;436437 i f ( phic>=0 && phic<=xc /3)438 {439 phif=́ xf ∗(1´3∗ xc+2∗xf ) /( xc ∗( xc´1) ) ∗ phic ;440 }441442 e l s e i f ( phic>xc /3 && phic<=xc / xf ∗(1+xf´xc ) )443 {444 phif=(xf ∗( xf´xc ) ) /(1´xc )+(xf ∗( xf´1) ) /( xc ∗( xc´1) ) ∗ phic ;445 }446447 e l s e i f ( phic>xc / xf ∗(1+xf´xc ) && phic <1)448 {449 phif =1.0;450 }451452 e l s e453 {454 phif=phic ;455 }456457 i f ( isnan ( phic ) | | isinf ( phic ) )458 {459 r e t u r n phi_upwind ;460 }461462 e l s e463 {464 r e t u r n Phiu+(Phid´Phiu ) ∗ phif ;465 }466 }467468 double QUICK ( double Xd , double Xu , double Xc , double Phid , double Phiu , double Phic , Ðâ
double Xf , double phi_upwind )469 {470 double phif , xf , xc , phic ;471472 phic=(Phic´Phiu ) /( Phid´Phiu ) ;473 xf=(Xf´Xu ) /( Xd´Xu ) ;474 xc=(Xc´Xu ) /( Xd´Xu ) ;475476 phif=xf+(xf ∗( xf´1) ) /( xc ∗( xc´1) ) ∗( phic´xc ) ;477478 i f ( isnan ( phic ) | | isinf ( phic ) )479 {480 r e t u r n phi_upwind ;481 }482483 e l s e484 {485 r e t u r n Phiu+(Phid´Phiu ) ∗ phif ;486 }487 }488489 void R u _ c a l c u l a t i o n ( vector<double>& X , vector<double>& Y , vector<double>& x_point , Ðâ
vector<double>& y_point , double &dx , double &dy , double x , double y , double rho0 , Ðâ
i n t c o n v e c t i o n _ i n d e x )491492 {493 double me , mw , mn , ms , xd , xu , xc , phic , phid , phiu , PHIeHRS , PHIwHRS , PHInHRS , Ðâ
PHIsHRS ;494495 f o r ( i n t i =1; i<=nodes_y ; i++)496 {497 f o r ( i n t k =1; k<=nodes_x ´1; k++)498 {499 me =0.5∗( rho0 ∗ U0 [ i ] [ k+1]+rho0 ∗ U0 [ i ] [ k ] ) ∗( Y [ i ]´Y [ i´1]) ;500 mw =0.5∗( rho0 ∗ U0 [ i ] [ k´1]+rho0 ∗ U0 [ i ] [ k ] ) ∗( Y [ i ]´Y [ i´1]) ;501 mn=rho0 ∗ V0 [ i ] [ k ] ∗ ( X [ k ]´ x_point [ k ] )+rho0 ∗ V0 [ i ] [ k +1]∗( x_point [ k+1]´X [ k ] ) ;502 ms=rho0 ∗ V0 [ i´1] [ k ] ∗ ( X [ k ]´ x_point [ k ] )+rho0 ∗ V0 [ i´1] [ k +1]∗( x_point [ k+1]´X [ k ] ) ;503504 i f ( me >=0)505 {506 i f ( k==nodes_x ´1)507 {508 PHIeHRS=U0 [ i ] [ k +1] ;509 }510511 e l s e512 {513 i f ( c o n v e c t i o n _ i n d e x==1)514 {515 PHIeHRS=UPWIND ( X [ k +1] , X [ k´1] , X [ k ] , U0 [ i ] [ k +1] , U0 [ i ] [ k´1] , Ðâ
U0 [ i ] [ k ] , x_point [ k +1] , U0 [ i ] [ k ] ) ;516 }517518 e l s e i f ( c o n v e c t i o n _ i n d e x==2)519 {520 PHIeHRS=QUICK ( X [ k +1] , X [ k´1] , X [ k ] , U0 [ i ] [ k +1] , U0 [ i ] [ k´1] , U0Ðâ
[ i ] [ k ] , x_point [ k +1] , U0 [ i ] [ k ] ) ;521 }522523 e l s e i f ( c o n v e c t i o n _ i n d e x==3)524 {525 PHIeHRS=SMART ( X [ k +1] , X [ k´1] , X [ k ] , U0 [ i ] [ k +1] , U0 [ i ] [ k´1] , U0Ðâ
[ i ] [ k ] , x_point [ k +1] , U0 [ i ] [ k ] ) ;526 }527528 e l s e529 {530 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;531 exit ( 0 ) ;532 }533 }534 }535536 e l s e537 {538 i f ( k==nodes_x ´1)539 {540 PHIeHRS=U0 [ i ] [ k +1] ;541 }542543 e l s e544 {545 i f ( c o n v e c t i o n _ i n d e x==1)546 {547 PHIeHRS=UPWIND ( X [ k ] , X [ k +2] , X [ k +1] , U0 [ i ] [ k ] , U0 [ i ] [ k +2] , U0 [Ðâ
i ] [ k +1] , x_point [ k +1] , U0 [ i ] [ k +1]) ;548 }549550 e l s e i f ( c o n v e c t i o n _ i n d e x==2)551 {552 PHIeHRS=QUICK ( X [ k ] , X [ k +2] , X [ k +1] , U0 [ i ] [ k ] , U0 [ i ] [ k +2] , U0 [ iÐâ
] [ k +1] , x_point [ k +1] , U0 [ i ] [ k +1]) ;553 }554555 e l s e i f ( c o n v e c t i o n _ i n d e x==3)556 {557 PHIeHRS=SMART ( X [ k ] , X [ k +2] , X [ k +1] , U0 [ i ] [ k ] , U0 [ i ] [ k +2] , U0 [ iÐâ
] [ k +1] , x_point [ k +1] , U0 [ i ] [ k +1]) ;
55
558 }559560 e l s e561 {562 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;563 exit ( 0 ) ;564 }565 }566 }567568 i f ( mw >=0)569 {570 i f ( k==1)571 {572 PHIwHRS=U0 [ i ] [ k´1] ;573 }574575 e l s e576 {577 i f ( c o n v e c t i o n _ i n d e x==1)578 {579 PHIwHRS=UPWIND ( X [ k ] , X [ k´2] , X [ k´1] , U0 [ i ] [ k ] , U0 [ i ] [ k´2] , U0 [Ðâ
i ] [ k´1] , x_point [ k ] , U0 [ i ] [ k´1]) ;580 }581582 e l s e i f ( c o n v e c t i o n _ i n d e x==2)583 {584 PHIwHRS=QUICK ( X [ k ] , X [ k´2] , X [ k´1] , U0 [ i ] [ k ] , U0 [ i ] [ k´2] , U0 [ iÐâ
] [ k´1] , x_point [ k ] , U0 [ i ] [ k´1]) ;585 }586587 e l s e i f ( c o n v e c t i o n _ i n d e x==3)588 {589 PHIwHRS=SMART ( X [ k ] , X [ k´2] , X [ k´1] , U0 [ i ] [ k ] , U0 [ i ] [ k´2] , U0 [ iÐâ
] [ k´1] , x_point [ k ] , U0 [ i ] [ k´1]) ;590 }591592 e l s e593 {594 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;595 exit ( 0 ) ;596 }597 }598 }599600 e l s e601 {602 i f ( k==1)603 {604 PHIwHRS=U0 [ i ] [ k´1] ;605 }606607 e l s e608 {609 i f ( c o n v e c t i o n _ i n d e x==1)610 {611 PHIwHRS=UPWIND ( X [ k´1] , X [ k +1] , X [ k ] , U0 [ i ] [ k´1] , U0 [ i ] [ k +1] , U0Ðâ
[ i ] [ k ] , x_point [ k ] , U0 [ i ] [ k ] ) ;612 }613614 e l s e i f ( c o n v e c t i o n _ i n d e x==2)615 {616 PHIwHRS=QUICK ( X [ k´1] , X [ k +1] , X [ k ] , U0 [ i ] [ k´1] , U0 [ i ] [ k +1] , U0Ðâ
[ i ] [ k ] , x_point [ k ] , U0 [ i ] [ k ] ) ;617 }618619 e l s e i f ( c o n v e c t i o n _ i n d e x==3)620 {621 PHIwHRS=SMART ( X [ k´1] , X [ k +1] , X [ k ] , U0 [ i ] [ k´1] , U0 [ i ] [ k +1] , U0Ðâ
[ i ] [ k ] , x_point [ k ] , U0 [ i ] [ k ] ) ;622 }623624 e l s e625626 {627 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;628 exit ( 0 ) ;
56
629 }630 }631 }632633 i f ( mn >=0)634 {635 i f ( i==nodes_y )636 {637 PHInHRS=U0 [ i +1] [ k ] ;638 }639640 e l s e641 {642 i f ( c o n v e c t i o n _ i n d e x==1)643 {644 PHInHRS=UPWIND ( y_point [ i +1] , y_point [ i´1] , y_point [ i ] , U0 [ iÐâ
+1] [ k ] , U0 [ i´1] [ k ] , U0 [ i ] [ k ] , Y [ i ] , U0 [ i ] [ k ] ) ;645 }646647 e l s e i f ( c o n v e c t i o n _ i n d e x==2)648 {649 PHInHRS=QUICK ( y_point [ i +1] , y_point [ i´1] , y_point [ i ] , U0 [ i +1] [Ðâ
k ] , U0 [ i´1] [ k ] , U0 [ i ] [ k ] , Y [ i ] , U0 [ i ] [ k ] ) ;650 }651652 e l s e i f ( c o n v e c t i o n _ i n d e x==3)653 {654 PHInHRS=SMART ( y_point [ i +1] , y_point [ i´1] , y_point [ i ] , U0 [ i +1] [Ðâ
k ] , U0 [ i´1] [ k ] , U0 [ i ] [ k ] , Y [ i ] , U0 [ i ] [ k ] ) ;655 }656657 e l s e658 {659 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;660 exit ( 0 ) ;661 }662 }663 }664665 e l s e666 {667 i f ( i==nodes_y )668 {669 PHInHRS=U0 [ i +1] [ k ] ;670 }671672 e l s e673 {674 i f ( c o n v e c t i o n _ i n d e x==1)675 {676 PHInHRS=UPWIND ( y_point [ i ] , y_point [ i +2] , y_point [ i +1] , U0 [ i ] [ kÐâ
] , U0 [ i +2] [ k ] , U0 [ i +1] [ k ] , Y [ i ] , U0 [ i +1] [ k ] ) ;677 }678679 e l s e i f ( c o n v e c t i o n _ i n d e x==2)680 {681 PHInHRS=QUICK ( y_point [ i ] , y_point [ i +2] , y_point [ i +1] , U0 [ i ] [ kÐâ
] , U0 [ i +2] [ k ] , U0 [ i +1] [ k ] , Y [ i ] , U0 [ i +1] [ k ] ) ;682 }683684 e l s e i f ( c o n v e c t i o n _ i n d e x==3)685 {686 PHInHRS=SMART ( y_point [ i ] , y_point [ i +2] , y_point [ i +1] , U0 [ i ] [ kÐâ
] , U0 [ i +2] [ k ] , U0 [ i +1] [ k ] , Y [ i ] , U0 [ i +1] [ k ] ) ;687 }688689 e l s e690 {691 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;692 exit ( 0 ) ;693 }694 }695 }696697 i f ( ms >=0)698 {699 i f ( i==1)
57
700701 {702 PHIsHRS=U0 [ i´1] [ k ] ;703 }704705 e l s e706 {707 i f ( c o n v e c t i o n _ i n d e x==1)708 {709 PHIsHRS=UPWIND ( y_point [ i ] , y_point [ i´2] , y_point [ i´1] , U0 [ i ] [ kÐâ
] , U0 [ i´2] [ k ] , U0 [ i´1] [ k ] , Y [ i´1] , U0 [ i´1] [ k ] ) ;710 }711712 e l s e i f ( c o n v e c t i o n _ i n d e x==2)713 {714 PHIsHRS=QUICK ( y_point [ i ] , y_point [ i´2] , y_point [ i´1] , U0 [ i ] [ kÐâ
] , U0 [ i´2] [ k ] , U0 [ i´1] [ k ] , Y [ i´1] , U0 [ i´1] [ k ] ) ;715 }716717 e l s e i f ( c o n v e c t i o n _ i n d e x==3)718 {719 PHIsHRS=SMART ( y_point [ i ] , y_point [ i´2] , y_point [ i´1] , U0 [ i ] [ kÐâ
] , U0 [ i´2] [ k ] , U0 [ i´1] [ k ] , Y [ i´1] , U0 [ i´1] [ k ] ) ;720 }721722 e l s e723 {724 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;725 exit ( 0 ) ;726 }727 }728 }729730 e l s e731732 {733 i f ( i==1)734 {735 PHIsHRS=U0 [ i´1] [ k ] ;736 }737738 e l s e739 {740 i f ( c o n v e c t i o n _ i n d e x==1)741 {742 PHIsHRS=UPWIND ( y_point [ i´1] , y_point [ i +1] , y_point [ i ] , U0 [ iÐâ
´1] [ k ] , U0 [ i +1] [ k ] , U0 [ i ] [ k ] , Y [ i´1] , U0 [ i ] [ k ] ) ;743 }744745 e l s e i f ( c o n v e c t i o n _ i n d e x==2)746 {747 PHIsHRS=QUICK ( y_point [ i´1] , y_point [ i +1] , y_point [ i ] , U0 [ i´1] [Ðâ
k ] , U0 [ i +1] [ k ] , U0 [ i ] [ k ] , Y [ i´1] , U0 [ i ] [ k ] ) ;748 }749750 e l s e i f ( c o n v e c t i o n _ i n d e x==3)751 {752 PHIsHRS=SMART ( y_point [ i´1] , y_point [ i +1] , y_point [ i ] , U0 [ i´1] [Ðâ
k ] , U0 [ i +1] [ k ] , U0 [ i ] [ k ] , Y [ i´1] , U0 [ i ] [ k ] ) ;753 }754755 e l s e756 {757 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;758 exit ( 0 ) ;759 }760 }761 }762763 i f ( time==0)764 {765 Rn_x_ant [ i ] [ k ]=0;766 }767768 e l s e769 {770 Rn_x_ant [ i ] [ k ]= Rn_x [ i ] [ k ] ;
58
771 }772773 Rn_x [ i ] [ k ]=(´( me ∗ PHIeHRS´mw ∗ PHIwHRS+mn ∗ PHInHRS´ms ∗ PHIsHRS )+mu ∗ ( ( U0 [ i ] [ k+1]´Ðâ
U0 [ i ] [ k ] ) /( X [ k+1]´X [ k ] ) ∗( Y [ i ]´Y [ i´1])´(U0 [ i ] [ k ]´U0 [ i ] [ k´1]) /( X [ k ]´X [ kÐâ
´1]) ∗( Y [ i ]´Y [ i´1])+774 ( U0 [ i +1] [ k ]´U0 [ i ] [ k ] ) /( y_point [ i+1]´y_point [ i ] ) ∗( x_point [ k+1]´x_point [ k ] )´775 ( U0 [ i ] [ k ]´U0 [ i´1] [ k ] ) /( y_point [ i ]´ y_point [ i´1]) ∗( x_point [ k+1]´x_point [ k ] ) ) )Ðâ
/ ( ( x_point [ k+1]´x_point [ k ] ) ∗( Y [ i ]´Y [ i´1]) ) ;776777 Up [ i ] [ k ]= U0 [ i ] [ k ]+ Delta_t / rho0 ∗(3/2∗ Rn_x [ i ] [ k ]´1/2∗ Rn_x_ant [ i ] [ k ] ) ;778 }779 }780 }781782 void R v _ c a l c u l a t i o n ( vector<double>& X , vector<double>& Y , vector<double>& x_point , Ðâ
vector<double>& y_point , double &dx , double &dy , double x , double y , double rho0 , Ðâ
i n t c o n v e c t i o n _ i n d e x )784785 {786 double me , mw , mn , ms , xd , xu , xc , phic , phid , phiu , PHIeHRS , PHIwHRS , PHInHRS , Ðâ
PHIsHRS ;787788 f o r ( i n t i =1; i<=nodes_y ´1; i++)789 {790 f o r ( i n t k =1; k<=nodes_x ; k++)791 {792 mn =0.5∗( rho0 ∗ V0 [ i +1] [ k ]+ rho0 ∗ V0 [ i ] [ k ] ) ∗( X [ k ]´X [ k´1]) ;793 ms =0.5∗( rho0 ∗ V0 [ i´1] [ k ]+ rho0 ∗ V0 [ i ] [ k ] ) ∗( X [ k ]´X [ k´1]) ;794 me=rho0 ∗ U0 [ i ] [ k ] ∗ ( Y [ i ]´ y_point [ i ] )+rho0 ∗ U0 [ i +1] [ k ] ∗ ( y_point [ i+1]´Y [ i ] ) ;795 mw=rho0 ∗ U0 [ i ] [ k´1]∗( Y [ i ]´ y_point [ i ] )+rho0 ∗ U0 [ i +1] [ k´1]∗( y_point [ i+1]´Y [ i ] ) ;796797798 i f ( me >=0)799 {800 i f ( k==nodes_x )801 {802 PHIeHRS=V0 [ i ] [ k +1] ;803 }804805 e l s e806 {807 i f ( c o n v e c t i o n _ i n d e x==1)808 {809 PHIeHRS=UPWIND ( x_point [ k +1] , x_point [ k´1] , x_point [ k ] , V0 [ i ] [ kÐâ
+1] , V0 [ i ] [ k´1] , V0 [ i ] [ k ] , X [ k ] , V0 [ i ] [ k ] ) ;810 }811812 e l s e i f ( c o n v e c t i o n _ i n d e x==2)813 {814 PHIeHRS=QUICK ( x_point [ k +1] , x_point [ k´1] , x_point [ k ] , V0 [ i ] [ kÐâ
+1] , V0 [ i ] [ k´1] , V0 [ i ] [ k ] , X [ k ] , V0 [ i ] [ k ] ) ;815 }816817 e l s e i f ( c o n v e c t i o n _ i n d e x==3)818 {819 PHIeHRS=SMART ( x_point [ k +1] , x_point [ k´1] , x_point [ k ] , V0 [ i ] [ kÐâ
+1] , V0 [ i ] [ k´1] , V0 [ i ] [ k ] , X [ k ] , V0 [ i ] [ k ] ) ;820 }821822 e l s e823 {824 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;825 exit ( 0 ) ;826 }827 }828 }829830 e l s e831 {832 i f ( k==nodes_x )833 {834 PHIeHRS=V0 [ i ] [ k +1] ;835 }836
59
837 e l s e838 {839 i f ( c o n v e c t i o n _ i n d e x==1)840 {841 PHIeHRS=UPWIND ( x_point [ k ] , x_point [ k +2] , x_point [ k +1] , V0 [ i ] [ kÐâ
] , V0 [ i ] [ k +2] , V0 [ i ] [ k +1] , X [ k ] , V0 [ i ] [ k +1]) ;842 }843844 e l s e i f ( c o n v e c t i o n _ i n d e x==2)845 {846 PHIeHRS=QUICK ( x_point [ k ] , x_point [ k +2] , x_point [ k +1] , V0 [ i ] [ kÐâ
] , V0 [ i ] [ k +2] , V0 [ i ] [ k +1] , X [ k ] , V0 [ i ] [ k +1]) ;847 }848849 e l s e i f ( c o n v e c t i o n _ i n d e x==3)850 {851 PHIeHRS=SMART ( x_point [ k ] , x_point [ k +2] , x_point [ k +1] , V0 [ i ] [ kÐâ
] , V0 [ i ] [ k +2] , V0 [ i ] [ k +1] , X [ k ] , V0 [ i ] [ k +1]) ;852 }853854 e l s e855 {856 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;857 exit ( 0 ) ;858 }859 }860 }861862 i f ( mw >=0)863 {864 i f ( k==1)865 {866 PHIwHRS=V0 [ i ] [ k´1] ;867 }868869 e l s e870 {871 i f ( c o n v e c t i o n _ i n d e x==1)872 {873 PHIwHRS=UPWIND ( x_point [ k ] , x_point [ k´2] , x_point [ k´1] , V0 [ i ] [ kÐâ
] , V0 [ i ] [ k´2] , V0 [ i ] [ k´1] , X [ k´1] , V0 [ i ] [ k´1]) ;874 }875876 e l s e i f ( c o n v e c t i o n _ i n d e x==2)877 {878 PHIwHRS=QUICK ( x_point [ k ] , x_point [ k´2] , x_point [ k´1] , V0 [ i ] [ k ] ,Ðâ
V0 [ i ] [ k´2] , V0 [ i ] [ k´1] , X [ k´1] , V0 [ i ] [ k´1]) ;879 }880881 e l s e i f ( c o n v e c t i o n _ i n d e x==3)882 {883 PHIwHRS=SMART ( x_point [ k ] , x_point [ k´2] , x_point [ k´1] , V0 [ i ] [ k ] ,Ðâ
V0 [ i ] [ k´2] , V0 [ i ] [ k´1] , X [ k´1] , V0 [ i ] [ k´1]) ;884 }885886 e l s e887 {888 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;889 exit ( 0 ) ;890 }891 }892 }893894 e l s e895 {896 i f ( k==1)897 {898 PHIwHRS=V0 [ i ] [ k´1] ;899 }900901 e l s e902 {903 i f ( c o n v e c t i o n _ i n d e x==1)904 {905 PHIwHRS=UPWIND ( x_point [ k´1] , x_point [ k +1] , x_point [ k ] , V0 [ i ] [ kÐâ
´1] , V0 [ i ] [ k +1] , V0 [ i ] [ k ] , X [ k´1] , V0 [ i ] [ k ] ) ;906 }
60
907908 e l s e i f ( c o n v e c t i o n _ i n d e x==2)909 {910 PHIwHRS=QUICK ( x_point [ k´1] , x_point [ k +1] , x_point [ k ] , V0 [ i ] [ kÐâ
´1] , V0 [ i ] [ k +1] , V0 [ i ] [ k ] , X [ k´1] , V0 [ i ] [ k ] ) ;911 }912913 e l s e i f ( c o n v e c t i o n _ i n d e x==3)914 {915 PHIwHRS=SMART ( x_point [ k´1] , x_point [ k +1] , x_point [ k ] , V0 [ i ] [ kÐâ
´1] , V0 [ i ] [ k +1] , V0 [ i ] [ k ] , X [ k´1] , V0 [ i ] [ k ] ) ;916 }917918 e l s e919 {920 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;921 exit ( 0 ) ;922 }923 }924 }925926 i f ( mn >=0)927 {928 i f ( i==nodes_y )929 {930 PHInHRS=V0 [ i +1] [ k ] ;931 }932933 e l s e934 {935 i f ( c o n v e c t i o n _ i n d e x==1)936 {937 PHInHRS=UPWIND ( Y [ i +1] , Y [ i´1] , Y [ i ] , V0 [ i +1] [ k ] , V0 [ i´1] [ k ] , Ðâ
V0 [ i ] [ k ] , y_point [ i +1] , V0 [ i ] [ k ] ) ;938 }939940 e l s e i f ( c o n v e c t i o n _ i n d e x==2)941 {942 PHInHRS=QUICK ( Y [ i +1] , Y [ i´1] , Y [ i ] , V0 [ i +1] [ k ] , V0 [ i´1] [ k ] , V0Ðâ
[ i ] [ k ] , y_point [ i +1] , V0 [ i ] [ k ] ) ;943 }944945 e l s e i f ( c o n v e c t i o n _ i n d e x==3)946 {947 PHInHRS=SMART ( Y [ i +1] , Y [ i´1] , Y [ i ] , V0 [ i +1] [ k ] , V0 [ i´1] [ k ] , V0Ðâ
[ i ] [ k ] , y_point [ i +1] , V0 [ i ] [ k ] ) ;948 }949950 e l s e951 {952 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;953 exit ( 0 ) ;954 }955 }956 }957958 e l s e959 {960 i f ( i==nodes_y )961 {962 PHInHRS=V0 [ i +1] [ k ] ;963 }964965 e l s e966 {967 i f ( c o n v e c t i o n _ i n d e x==1)968 {969 PHInHRS=UPWIND ( Y [ i ] , Y [ i +2] , Y [ i +1] , V0 [ i ] [ k ] , V0 [ i +2] [ k ] , V0 [Ðâ
i +1] [ k ] , y_point [ i +1] , V0 [ i +1] [ k ] ) ;970 }971972 e l s e i f ( c o n v e c t i o n _ i n d e x==2)973 {974 PHInHRS=QUICK ( Y [ i ] , Y [ i +2] , Y [ i +1] , V0 [ i ] [ k ] , V0 [ i +2] [ k ] , V0 [ iÐâ
+1] [ k ] , y_point [ i +1] , V0 [ i +1] [ k ] ) ;975 }976
61
977 e l s e i f ( c o n v e c t i o n _ i n d e x==3)978 {979 PHInHRS=SMART ( Y [ i ] , Y [ i +2] , Y [ i +1] , V0 [ i ] [ k ] , V0 [ i +2] [ k ] , V0 [ iÐâ
+1] [ k ] , y_point [ i +1] , V0 [ i +1] [ k ] ) ;980 }981982 e l s e983 {984 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;985 exit ( 0 ) ;986 }987 }988 }989990 i f ( ms >=0)991 {992 i f ( i==0)993 {994 PHIsHRS=V0 [ i´1] [ k ] ;995 }996997 e l s e998 {999 i f ( c o n v e c t i o n _ i n d e x==1)
1000 {1001 PHIsHRS=UPWIND ( Y [ i ] , Y [ i´2] , Y [ i´1] , V0 [ i ] [ k ] , V0 [ i´2] [ k ] , V0 [Ðâ
i´1] [ k ] , y_point [ i ] , V0 [ i´1] [ k ] ) ;1002 }10031004 e l s e i f ( c o n v e c t i o n _ i n d e x==2)1005 {1006 PHIsHRS=QUICK ( Y [ i ] , Y [ i´2] , Y [ i´1] , V0 [ i ] [ k ] , V0 [ i´2] [ k ] , V0 [ iÐâ
´1] [ k ] , y_point [ i ] , V0 [ i´1] [ k ] ) ;1007 }10081009 e l s e i f ( c o n v e c t i o n _ i n d e x==3)1010 {1011 PHIsHRS=SMART ( Y [ i ] , Y [ i´2] , Y [ i´1] , V0 [ i ] [ k ] , V0 [ i´2] [ k ] , V0 [ iÐâ
´1] [ k ] , y_point [ i ] , V0 [ i´1] [ k ] ) ;1012 }10131014 e l s e1015 {1016 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;1017 exit ( 0 ) ;1018 }1019 }1020 }10211022 e l s e1023 {1024 i f ( i==0)1025 {1026 PHIsHRS=V0 [ i´1] [ k ] ;1027 }10281029 e l s e1030 {1031 i f ( c o n v e c t i o n _ i n d e x==1)1032 {1033 PHIsHRS=UPWIND ( Y [ i´1] , Y [ i +1] , Y [ i ] , V0 [ i´1] [ k ] , V0 [ i +1] [ k ] , Ðâ
V0 [ i ] [ k ] , y_point [ i ] , V0 [ i ] [ k ] ) ;1034 }10351036 e l s e i f ( c o n v e c t i o n _ i n d e x==2)1037 {1038 PHIsHRS=QUICK ( Y [ i´1] , Y [ i +1] , Y [ i ] , V0 [ i´1] [ k ] , V0 [ i +1] [ k ] , V0Ðâ
[ i ] [ k ] , y_point [ i ] , V0 [ i ] [ k ] ) ;1039 }10401041 e l s e i f ( c o n v e c t i o n _ i n d e x==3)1042 {1043 PHIsHRS=SMART ( Y [ i´1] , Y [ i +1] , Y [ i ] , V0 [ i´1] [ k ] , V0 [ i +1] [ k ] , V0Ðâ
[ i ] [ k ] , y_point [ i ] , V0 [ i ] [ k ] ) ;1044 }10451046 e l s e
62
1047 {1048 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;1049 exit ( 0 ) ;1050 }10511052 }1053 }1054 i f ( time==0)1055 {1056 Rn_y_ant [ i ] [ k ]=0;1057 }10581059 e l s e1060 {1061 Rn_y_ant [ i ] [ k ]= Rn_y [ i ] [ k ] ;1062 }10631064 Rn_y [ i ] [ k ]=(´( me ∗ PHIeHRS´mw ∗ PHIwHRS+mn ∗ PHInHRS´ms ∗ PHIsHRS )+mu ∗ ( ( V0 [ i ] [ kÐâ
+1]´V0 [ i ] [ k ] ) /( x_point [ k+1]´x_point [ k ] ) ∗( y_point [ i+1]´y_point [ i ] )´1065 ( V0 [ i ] [ k ]´V0 [ i ] [ k´1]) /( x_point [ k ]´ x_point [ k´1]) ∗( y_point [ i+1]´y_point [ iÐâ
] ) +(V0 [ i +1] [ k ]´V0 [ i ] [ k ] ) /( Y [ i+1]´Y [ i ] ) ∗( X [ k ]´X [ k´1])´1066 ( V0 [ i ] [ k ]´V0 [ i´1] [ k ] ) /( Y [ i ]´Y [ i´1]) ∗( X [ k ]´X [ k´1]) ) ) / ( ( X [ k ]´X [ k´1]) ∗(Ðâ
y_point [ i+1]´y_point [ i ] ) ) ;10671068 Vp [ i ] [ k ]= V0 [ i ] [ k ]+ Delta_t / rho0 ∗(3/2∗ Rn_y [ i ] [ k ]´1/2∗ Rn_y_ant [ i ] [ k ] ) ;1069 }1070 }10711072 }10731074 void p r e s s u r e _ s o l v e r ( vector<double> X , vector<double> Y , vector<double> x_point , Ðâ
nodes_x +2] , double an [ nodes_y +2] [ nodes_x +2] , double as [ nodes_y +2] [ nodes_x +2] ,1076 double ap [ nodes_y +2] [ nodes_x +2] , double bp [ nodes_y +2] [ nodes_x +2] , double Up [ nodes_y +2] [Ðâ
nodes_x +1] , double Delta_t )10771078 {1079 double error =100;1080 double ff =1;1081 double e r r o r _ i t e r a t i o n ;1082 double sigma =0.0001;10831084 f o r ( i n t i =0; i<=nodes_y +1; i++)1085 {1086 f o r ( i n t k =0; k<=nodes_x +1; k++)1087 {10881089 ae [ i ] [ k ]=( Y [ i ]´Y [ i´1]) /( x_point [ k+1]´x_point [ k ] ) ;1090 aw [ i ] [ k ]=( Y [ i ]´Y [ i´1]) /( x_point [ k ]´ x_point [ k´1]) ;1091 an [ i ] [ k ]=( X [ k ]´X [ k´1]) /( y_point [ i+1]´y_point [ i ] ) ;1092 as [ i ] [ k ]=( X [ k ]´X [ k´1]) /( y_point [ i ]´ y_point [ i´1]) ;1093 bp [ i ] [ k ]=´1/ Delta_t ∗( rho0 ∗ Up [ i ] [ k ] ∗ ( Y [ i ]´Y [ i´1])1094 ´rho0 ∗ Up [ i ] [ k´1]∗( Y [ i ]´Y [ i´1])1095 +rho0 ∗ Vp [ i ] [ k ] ∗ ( X [ k ]´X [ k´1])1096 ´rho0 ∗ Vp [ i´1] [ k ] ∗ ( X [ k ]´X [ k´1]) ) ;1097 ap [ i ] [ k ]= ae [ i ] [ k ]+ aw [ i ] [ k ]+ an [ i ] [ k ]+ as [ i ] [ k ] ;1098 }1099 }11001101 whi le ( error>sigma )1102 {1103 f o r ( i n t i =0; i<=nodes_y +1; i++)1104 {1105 f o r ( i n t k =0; k<=nodes_x +1; k++)1106 {11071108 i f ( i==0)1109 {1110 P1 [ i ] [ k ]= P1 [ i +1] [ k ] ;1111 }11121113 e l s e i f ( i==nodes_y +1)1114 {1115 P1 [ i ] [ k ]= P1 [ i´1] [ k ] ;1116 }
63
11171118 e l s e i f ( k==0)1119 {1120 P1 [ i ] [ k ]= P1 [ i ] [ k +1] ;1121 }11221123 e l s e i f ( k==nodes_x +1)1124 {1125 P1 [ i ] [ k ]= P1 [ i ] [ k´1] ;1126 }11271128 e l s e i f ( k==2 && i==2)1129 {1130 P1 [ i ] [ k ]=0;1131 }11321133 e l s e1134 {1135 P1 [ i ] [ k ]= ff ∗( ae [ i ] [ k ] ∗ P1 [ i ] [ k+1]+aw [ i ] [ k ] ∗ P1 [ i ] [ k´1]1136 +an [ i ] [ k ] ∗ P1 [ i +1] [ k ]+ as [ i ] [ k ] ∗ P1 [ i´1] [ k ]1137 +bp [ i ] [ k ] ) /( ap [ i ] [ k ] ) +(1´ff ) ∗ P0 [ i ] [ k ] ;1138 }1139 }1140 }11411142 e r r o r _ i t e r a t i o n =0;11431144 f o r ( i n t i =0; i<=(nodes_y +1) ; i++)1145 {1146 f o r ( i n t k =0; k<=(nodes_x +1) ; k++)1147 {1148 i f ( fabs ( P1 [ i ] [ k ]´P0 [ i ] [ k ] )>e r r o r _ i t e r a t i o n )1149 {1150 e r r o r _ i t e r a t i o n=fabs ( P1 [ i ] [ k ]´P0 [ i ] [ k ] ) ;1151 }1152 }1153 }11541155 error=e r r o r _ i t e r a t i o n ;11561157 f o r ( i n t i =0; i<=nodes_y +1; i++)1158 {1159 f o r ( i n t k =0; k<=nodes_x +1; k++)1160 {1161 P0 [ i ] [ k ]= P1 [ i ] [ k ] ;1162 }1163 }1164 }1165 }11661167 void v e l o c i t y _ c a l c u l a t i o n ( vector <double> X , vector<double> Y , vector<double> x_point ,Ðâ
nodes_x +2] , double an [ nodes_y +2] [ nodes_x +2] , double as [ nodes_y +2] [ nodes_x +2] ,1169 double ap [ nodes_y +2] [ nodes_x +2] , double bp [ nodes_y +2] [ nodes_x +2] , double Up [ nodes_y +2] [Ðâ
nodes_x +1] , double Delta_t )1170 {1171 f o r ( i n t i =1; i<=nodes_y ; i++)1172 {1173 f o r ( i n t k =1; k<=nodes_x ´1; k++)1174 {1175 U1 [ i ] [ k ]= Up [ i ] [ k ]´ Delta_t / rho0 ∗( P1 [ i ] [ k+1]´P1 [ i ] [ k ] ) /( x_point [ k+1]´x_point [Ðâ
k ] ) ;1176 }1177 }11781179 f o r ( i n t i =1; i<=nodes_y ´1; i++)1180 {1181 f o r ( i n t k =1; k<=nodes_x ; k++)1182 {1183 V1 [ i ] [ k ]= Vp [ i ] [ k ]´ Delta_t / rho0 ∗( P1 [ i +1] [ k ]´P1 [ i ] [ k ] ) /( y_point [ i+1]´y_point [Ðâ
i ] ) ;1184 }1185 }1186 }1187
64
1188 void d e l t a _ t _ c a l c u l a t i o n ( vector<double> X , vector<double> Y , vector<double> x_point , Ðâ
nodes_x +1] ,1189 double& Delta_t , double&time )1190 {11911192 double d e l t a _ t c _ m i n _ x =100;1193 double d e l t a _ t c _ m i n _ y =100;1194 double de lta _tc _mi n ;11951196 f o r ( i n t i =1; i<=nodes_y ; i++)1197 {1198 f o r ( i n t k =1; k<=nodes_x ´1; k++)1199 {1200 i f ( 0 . 3 5 ∗ ( x_point [ k+1]´x_point [ k ] ) / fabs ( U1 [ i ] [ k ] )<d e l t a _ t c _ m i n _ x )1201 {12021203 d e l t a _ t c _ m i n _ x =0.35∗( x_point [ k+1]´x_point [ k ] ) / fabs ( U1 [ i ] [ k ] ) ;1204 }1205 }1206 }12071208 f o r ( i n t i =1; i<=nodes_y ´1; i++)1209 {1210 f o r ( i n t k =1; k<=nodes_x ; k++)1211 {1212 i f ( 0 . 3 5 ∗ ( y_point [ i+1]´y_point [ i ] ) / fabs ( V1 [ i ] [ k ] )<d e l t a _ t c _ m i n _ y )1213 {1214 d e l t a _ t c _ m i n _ y =0.35∗( y_point [ i+1]´y_point [ i ] ) / fabs ( V1 [ i ] [ k ] ) ;1215 }1216 }1217 }12181219 i f ( delta_tc_min_x <d e l t a _ t c _ m i n _ y )1220 {1221 de lta _tc _m in=d e l t a _ t c _ m i n _ x ;1222 }12231224 e l s e1225 {1226 de lta _tc _m in=d e l t a _ t c _ m i n _ y ;1227 }12281229 i f ( delta_tc_min <Delta_t )1230 {1231 Delta_t=de lta _tc _m in ;1232 }12331234 time=time+Delta_t ;1235 }12361237 void v e l _ m e a n _ c a l c ( double V1 [ nodes_y +1] [ nodes_x +2] , double U1 [ nodes_y +2] [ nodes_x +1] , Ðâ
double vel [ nodes_y +2] [ nodes_x +2])12381239 {1240 f o r ( i n t i =0; i<=nodes_y +1; i++)1241 {1242 f o r ( i n t k =0; k<=nodes_x +1; k++)1243 {1244 i f ( i==0)1245 {1246 vel [ i ] [ k ]= U1 [ i ] [ k ] ;1247 }12481249 e l s e i f ( i==nodes_y +1)1250 {1251 vel [ i ] [ k ]= U1 [ i ] [ k ] ;1252 }12531254 e l s e i f ( k==0)1255 {1256 vel [ i ] [ k ]= V1 [ i ] [ k ] ;1257 }12581259 e l s e i f ( k==nodes_x +1)1260 {1261 vel [ i ] [ k ]= V1 [ i ] [ k ] ;
65
1262 }12631264 e l s e1265 {1266 vel [ i ] [ k ]= sqrt ( pow ( 0 . 5 ∗ ( U1 [ i ] [ k ]+ U1 [ i ] [ k´1]) , 2 )+pow ( 0 . 5 ∗ ( V1 [ i´1] [ k ]+ V1 [Ðâ
i ] [ k ] ) , 2 ) ) ;1267 }1268 }1269 }1270 }
66
5 Laminar flow around a square cylinder
1 #inc lude <iostream>2 #inc lude <math . h>3 #inc lude <sstream>4 #i n c l u d e <s t d i o . h>5 #i n c l u d e <vector >6 #inc lude <fstream>7 #d e f i n e nodes_x 1408 #d e f i n e nodes_y 1409
10 us ing namespace std ;1112 double x =1.0;13 double y =1.0;14 double time =0;15 double Re =100;16 double rho0 =1;17 bool steady=f a l s e ;18 double D =1;19 double mu=(rho0 ∗D ) / Re ;20 double Delta_t ;21 double dx , dy ;22 double error ;23 double e r r o r _ i t e r a t i o n ;24 i n t c o n v e c t i o n _ i n d e x ;25 double s i g m a _ v e l o c i t y =0.000001;26 vector<double> X ( nodes_x +1) ;27 vector<double> Y ( nodes_y +1) ;28 vector <double> Cd (70000) ;29 vector <double> Cl (70000) ;30 vector <double> TIME (70000) ;31 vector<double> x_point ( nodes_x +2) ;32 vector<double> y_point ( nodes_x +2) ;33 double U0 [ nodes_y +2] [ nodes_x +1] , U1 [ nodes_y +2] [ nodes_x +1] , Up [ nodes_y +2] [ nodes_x +1] , Ðâ
nodes_x +2] , m a x _ d i f f _ v e l o c i t y _ x =0, m a x _ d i f f _ v e l o c i t y _ y =0, max_diff =10;37 double mu_ex [ nodes_y +2] [ nodes_x +1] , mu_wx [ nodes_y +2] [ nodes_x +1] , mu_nx [ nodes_y +2] [Ðâ
nodes_x +2] , V_mean [ nodes_y +2] [ nodes_x +2] , m e a n _ v e l o c i t y [ nodes_y +2] [ nodes_x +2] ;39 double iterations =0, dPE , dPe , deE , mup , mue ;4041 void m e s h _ g e n e r a t i o n ( double &Delta_t , vector<double>& X , vector<double>& Y , vector<Ðâ
double>& x_point , vector<double>& y_point , double &dx , double &dy ,42 double x , double y , double rho0 , double mu , double D ) ;4344 void v i s c o s i t y _ m a p ( vector<double>& X , vector<double>& Y , vector<double>& x_point , Ðâ
nodes_x +2] , double D , double mu ) ;4546 void v i s c o s i t y _ f a c e s _ c a l c u l a t i o n ( vector<double>& X , vector<double>& Y , vector<double>& Ðâ
x_point , vector<double>& y_point , double x , double y , double mu_x [ nodes_y +2] [Ðâ
nodes_y +2] [ nodes_x +1]) ;6061 void R v _ c a l c u l a t i o n ( vector<double>& X , vector<double>& Y , vector<double>& x_point ,62 vector<double>& y_point , double &dx , double &dy , double x , double y , double rho0 , Ðâ
nodes_y +1] [ nodes_x +2] , double mu_sy [ nodes_y +1] [ nodes_x +2]) ;6667 void p r e s s u r e _ s o l v e r ( vector<double> X , vector<double> Y , vector<double> x_point ,68 vector<double> y_point , double Vp [ nodes_y +1] [ nodes_x +2] , double P0 [ nodes_y +2] [ nodes_xÐâ
nodes_x +2] , double as [ nodes_y +2] [ nodes_x +2] ,70 double ap [ nodes_y +2] [ nodes_x +2] , double bp [ nodes_y +2] [ nodes_x +2] , double Up [ nodes_y +2] [Ðâ
nodes_x +1] , double Delta_t ) ;7172 void v e l o c i t y _ c a l c u l a t i o n ( vector <double> X , vector<double> Y , vector<double> x_point ,73 vector<double> y_point , double Vp [ nodes_y +1] [ nodes_x +2] , double P0 [ nodes_y +2] [ nodes_xÐâ
nodes_x +2] , double as [ nodes_y +2] [ nodes_x +2] ,75 double ap [ nodes_y +2] [ nodes_x +2] , double bp [ nodes_y +2] [ nodes_x +2] , double Up [ nodes_y +2] [Ðâ
nodes_x +1] , double Delta_t , bool& steady , double time , double Re ) ;7677 void d e l t a _ t _ c a l c u l a t i o n ( vector<double> X , vector<double> Y , vector<double> x_point ,78 vector<double> y_point , double V1 [ nodes_y +1] [ nodes_x +2] , double U1 [ nodes_y +2] [ nodes_xÐâ
+1] , double& Delta_t , double&time ) ;7980 void f o r c e s _ c a l c u l a t i o n ( vector<double> X , vector<double> Y , vector<double> x_point ,81 vector<double> y_point , double V1 [ nodes_y +1] [ nodes_x +2] , double U1 [ nodes_y +2] [ nodes_xÐâ
iterations , double mu , double D ) ;8384 void v e l _ m e a n _ c a l c ( double V1 [ nodes_y +1] [ nodes_x +2] , double U1 [ nodes_y +2] [ nodes_x +1] , Ðâ
x_point ) ;868788 main ( )89 {9091 cout<<" Generating mesh . . . "<<" \n" ;92 m e s h _ g e n e r a t i o n ( Delta_t , X , Y , x_point , y_point , dx , dy , x , y , rho0 , mu , D ) ;93 cout<<" I n i t i a l v e l o c i t y and pressure map . . . "<<" \n" ;94 initial_map ( X , Y , x_point , y_point , U0 , U1 , V0 , V1 , P0 , P1 ) ;95 v i s c o s i t y _ m a p ( X , Y , x_point , y_point , mu_x , mu_y , D , mu ) ;96 v i s c o s i t y _ f a c e s _ c a l c u l a t i o n ( X , Y , x_point , y_point , x , y , mu_x , mu_ex , mu_wx , mu_nx ,Ðâ
mu_sx , mu_y , mu_ey , mu_wy , mu_ny , mu_sy ) ;97 cout<<"Type the number of the convect ive scheme you want to use : "<<" \n" ;98 cout<<" 1. UDS"<<" \n" ;99 cout<<" 2. QUICK"<<" \n" ;
100 cout<<" 3. SMART"<<" \n" ;101 cin>>c o n v e c t i o n _ i n d e x ;102 cout<<" So lv ing . . . "<<" \n" ;103104 whi le ( max_diff>s i g m a _ v e l o c i t y && steady==f a l s e )105 {106 iterations=iterations +1;107 cout<<max_diff<<" , "<<time<<" \n" ;108 TIME [ iterations ]= time ;109 R u _ c a l c u l a t i o n ( X , Y , x_point , y_point , dx , dy , x , y , rho0 , mu , U0 , V0 , Rn_x , Ðâ
Rn_x_ant , time , Delta_t , convection_index , mu_x , mu_ex , mu_wx , mu_nx , mu_sx ) ;110 R v _ c a l c u l a t i o n ( X , Y , x_point , y_point , dx , dy , x , y , rho0 , mu , U0 , V0 , Rn_y , Ðâ
111 p r e s s u r e _ s o l v e r ( X , Y , x_point , y_point , Vp , P0 , P1 , ae , aw , an , as , ap , bp , Up , Ðâ
Delta_t ) ;112 v e l o c i t y _ c a l c u l a t i o n ( X , Y , x_point , y_point , Vp , P0 , P1 , ae , aw , an , as , ap , bp , Ðâ
Up , Delta_t , steady , time , Re ) ;113 f o r c e s _ c a l c u l a t i o n ( X , Y , x_point , y_point , V1 , U1 , P1 , Cd , Cl , iterations , mu , D ) ;114 d e l t a _ t _ c a l c u l a t i o n ( X , Y , x_point , y_point , V1 , U1 , Delta_t , time ) ;115116 f o r ( i n t i =0; i<=nodes_y +1; i++)117 {118 f o r ( i n t k =0; k<=nodes_x ; k++)119 {120 i f ( fabs ( U1 [ i ] [ k ]´U0 [ i ] [ k ] )>m a x _ d i f f _ v e l o c i t y _ x )121 {122 m a x _ d i f f _ v e l o c i t y _ x=fabs ( U1 [ i ] [ k ]´U0 [ i ] [ k ] ) ;123 }124 }125 }126127128 f o r ( i n t i =0; i<=nodes_y ; i++)129 {130 f o r ( i n t k =0; k<=nodes_x +1; k++)131 {132 i f ( fabs ( V1 [ i ] [ k ]´V0 [ i ] [ k ] )>m a x _ d i f f _ v e l o c i t y _ y )133 {134 m a x _ d i f f _ v e l o c i t y _ y=fabs ( V1 [ i ] [ k ]´V0 [ i ] [ k ] ) ;135 }136 }137138 }139140141 i f ( max_diff_velocity_y <m a x _ d i f f _ v e l o c i t y _ x )142 {143 max_diff=m a x _ d i f f _ v e l o c i t y _ x ;144 }145146 e l s e147 {148 max_diff=m a x _ d i f f _ v e l o c i t y _ y ;149 }150151152 f o r ( i n t i =0; i<=nodes_y +1; i++)153 {154 f o r ( i n t k =0; k<=nodes_x ; k++)155 {156 U0 [ i ] [ k ]= U1 [ i ] [ k ] ;157 }158 }159160 f o r ( i n t i =0; i<=nodes_y ; i++)161 {162 f o r ( i n t k =0; k<=nodes_x +1; k++)163 {164 V0 [ i ] [ k ]= V1 [ i ] [ k ] ;165 }166 }167168 m a x _ d i f f _ v e l o c i t y _ y =0;169 m a x _ d i f f _ v e l o c i t y _ x =0;170 v e l _ m e a n _ c a l c ( V1 , U1 , U_mean , V_mean , D , y_point , x_point ) ;171 }172173 cout<<" Saving r e s u l t s . . . "<<" \n" ;174175 ofstream file1 ;176 file1 . open ( " Flow_around_square_cylinder_U . dat " ) ;177 i f ( file1 . is_open ( ) )178 {179 cout<<" F i l e opened s u c c e s s f u l l y \n" ;180 }181182 e l s e183 {184 cout<<" Error saving data , c l o s e Excel \n" ;185 exit ( 1 ) ;
69
186 }187188 cout<<" Saving data \n" ;189 file1<<"TITLE = \"FLOW AROUND SQUARE CYLINDER\" " ;190 file1<<" \n" ;191 file1<<"VARIABLES = \"X\" , \"Y\" , \"U\" " ;192 file1<<" \n" ;193 file1<<"ZONE=\"Domain\" , I=" ;194 file1<<nodes_x +1;195 file1<<" , " ;196 file1<<"J= " ;197 file1<<nodes_y +2;198 file1<<" \n" ;199200 f o r ( i n t i =0; i<=nodes_y +1; i++)201 {202 f o r ( i n t k =0; k<=nodes_x ; k++)203 {204 file1<<X [ k ] ;205 file1<<" " ;206 file1<<y_point [ i ] ;207 file1<<" " ;208 file1<<U1 [ i ] [ k ] ;209 file1<<" " ;210 file1<<" \n" ;211 }212 }213214 ofstream file2 ;215 file2 . open ( " Flow_around_square_cylinder_V . dat " ) ;216 i f ( file2 . is_open ( ) )217 {218 cout<<" F i l e opened s u c c e s s f u l l y \n" ;219 }220221 e l s e222 {223 cout<<" Error saving data , c l o s e Excel \n" ;224 exit ( 1 ) ;225 }226227 cout<<" Saving data \n" ;228 file2<<"TITLE = \"FLOW AROUND SQUARE CYLINDER V\" " ;229 file2<<" \n" ;230 file2<<"VARIABLES = \"X\" , \"Y\" , \"V\" " ;231 file2<<" \n" ;232 file2<<"ZONE=\"Domain\" , I=" ;233 file2<<nodes_x +2;234 file2<<" , " ;235 file2<<"J= " ;236 file2<<nodes_y +1;237 file2<<" \n" ;238239 f o r ( i n t i =0; i<=nodes_y ; i++)240 {241 f o r ( i n t k =0; k<=nodes_x +1; k++)242 {243 file2<<x_point [ k ] ;244 file2<<" " ;245 file2<<Y [ i ] ;246 file2<<" " ;247 file2<<V1 [ i ] [ k ] ;248 file2<<" " ;249 file2<<" \n" ;250 }251 }252253254 ofstream file3 ;255 file3 . open ( "FLOW AROUND SQUARE CYLINDER V_mean. dat " ) ;256 i f ( file3 . is_open ( ) )257 {258 cout<<" F i l e opened s u c c e s s f u l l y \n" ;259 }260261 e l s e262 {
70
263 cout<<" Error saving data , c l o s e Excel \n" ;264 exit ( 1 ) ;265 }266267 cout<<" Saving data \n" ;268 file3<<"TITLE = \"FLOW AROUND SQUARE CYLINDER\" " ;269 file3<<" \n" ;270271 f o r ( i n t i =0; i<=nodes_y +1; i++)272 {273 f o r ( i n t k =0; k<=nodes_x +1; k++)274 {275 file3<<V_mean [ i ] [ k ] ;276 file3<<" " ;277 }278 file3<<" \n" ;279 }280281 ofstream file4 ;282 file4 . open ( "FLOW AROUND SQUARE CYLINDER U_mean. dat " ) ;283 i f ( file4 . is_open ( ) )284 {285 cout<<" F i l e opened s u c c e s s f u l l y \n" ;286 }287288 e l s e289 {290 cout<<" Error saving data , c l o s e Excel \n" ;291 exit ( 1 ) ;292 }293294 cout<<" Saving data \n" ;295 file4<<"TITLE = \"FLOW AROUND SQUARE CYLINDER\" " ;296 file2<<" \n" ;297298 f o r ( i n t i =0; i<=nodes_y +1; i++)299 {300 f o r ( i n t k =0; k<=nodes_x +1; k++)301 {302 file4<<U_mean [ i ] [ k ] ; ;303 file4<<" " ;304 }305 file4<<" \n" ;306 }307308 ofstream file5 ;309 file5 . open ( "FLOW AROUND SQUARE CYLINDER x . dat " ) ;310 i f ( file5 . is_open ( ) )311 {312 cout<<" F i l e opened s u c c e s s f u l l y \n" ;313 }314315 e l s e316 {317 cout<<" Error saving data , c l o s e Excel \n" ;318 exit ( 1 ) ;319 }320321 cout<<" Saving data \n" ;322 file5<<"TITLE = \"FLOW AROUND SQUARE CYLINDER\" " ;323 file5<<" \n" ;324325 f o r ( i n t i =0; i<=nodes_y +1; i++)326 {327 file5<<y_point [ i]<<" " ;328 }329330 file5<<" \n" ;331332 f o r ( i n t k =0; k<=nodes_x +1; k++)333 {334 file5<<x_point [ k]<<" " ;335 }336337 ofstream file6 ;338 file6 . open ( "FLOW AROUND SQUARE CYLINDER Cd_Cl . dat " ) ;339 i f ( file6 . is_open ( ) )
71
340 {341 cout<<" F i l e opened s u c c e s s f u l l y \n" ;342 }343344 e l s e345 {346 cout<<" Error saving data , c l o s e Excel \n" ;347 exit ( 1 ) ;348 }349350 cout<<" Saving data \n" ;351 file6<<"TITLE = \"FLOW AROUND SQUARE CYLINDER\" " ;352 file6<<" \n" ;353 file6<<"VARIABLES = \"Cd\" , \" Cl \" , \"Time\" " ;354 file6<<" \n" ;355356357 f o r ( i n t i =0; i <=70000; i++)358 {359 file6<<Cd [ i]<<" , " ;360 file6<<Cl [ i]<<" , " ;361 file6<<TIME [ i ] ;362 file6<<" \n" ;363364 }365366367 ofstream file7 ;368 file7 . open ( " Flow_around_square_cylinder_mean_velocity . dat " ) ;369 i f ( file7 . is_open ( ) )370 {371 cout<<" F i l e opened s u c c e s s f u l l y \n" ;372 }373374 e l s e375 {376 cout<<" Error saving data , c l o s e Excel \n" ;377 exit ( 1 ) ;378 }379380 cout<<" Saving data \n" ;381 file7<<"TITLE = \"FLOW AROUND SQUARE CYLINDER\" " ;382 file7<<" \n" ;383 file7<<"VARIABLES = \"X\" , \"Y\" , \"U\" " ;384 file7<<" \n" ;385 file7<<"ZONE=\"Domain\" , I=" ;386 file7<<nodes_x +2;387 file7<<" , " ;388 file7<<"J= " ;389 file7<<nodes_y +2;390 file7<<" \n" ;391392393 f o r ( i n t i =0; i<=nodes_y +1; i++)394 {395 f o r ( i n t k =0; k<=nodes_x +1; k++)396 {397398 file7<<x_point [ k ] ;399 file7<<" " ;400 file7<<y_point [ i ] ;401 file7<<" " ;402 file7<<m e a n _ v e l o c i t y [ i ] [ k ] ;403 file7<<" " ;404 file7<<" \n" ;405 }406407 }408409 }410411 void m e s h _ g e n e r a t i o n ( double &Delta_t , vector<double>& X , vector<double>& Y , vector<Ðâ
y , double rho0 , double mu , double D )412 {413 double min_delta_x =100;414 double min_delta_y =100;
72
415 double Delta_x_min ;416 double L =30.0 , l =12.5 , H =8.0;417 double nx1 =20, nx2 =80, nx3 =40;418 double dx1 , dx2 , dx3 , dy1 , dy2 , dy3 ;419 dx1=(l´D ) / nx1 ;420 dx2 =2.0∗ D/ nx2 ;421 dx3=(L´l´D ) / nx3 ;422 dy1=(H /2.0´D ) / nx1 ;423 dy2 =2.0∗ D/ nx2 ;424 dy3=(H/2´D ) / nx3 ;425426 X [0]=´l ;427 f o r ( i n t k =1; k<=(nx1 ) ; k++)428 {429 X [ k ]=X [ k´1]+dx1 ;430 }431432 f o r ( i n t k=nx1 +1; k<=(nx1+nx2 ) ; k++)433 {434 X [ k ]=X [ k´1]+dx2 ;435 }436437 f o r ( i n t k=nx1+nx2 +1; k<=(nx1+nx2+nx3 ) ; k++)438 {439 X [ k ]=X [ k´1]+dx3 ;440 }441442 Y [0]=´H / 2 . 0 ;443 f o r ( i n t i =1; i<=(nx1 ) ; i++)444 {445 Y [ i ]=Y [ i´1]+dy1 ;446 }447448 f o r ( i n t i=nx1 +1; i<=(nx1+nx2 ) ; i++)449 {450 Y [ i ]=Y [ i´1]+dy2 ;451 }452453 f o r ( i n t i=nx1+nx2 +1; i<=(nx1+nx2+nx3 ) ; i++)454 {455 Y [ i ]=Y [ i´1]+dy3 ;456 }457458 x_point [0]=´l ;459 f o r ( i n t k =1; k<=nodes_x ; k++)460 {461 x_point [ k ]=( X [ k ]+X [ k´1]) / 2 . 0 ;462 }463 x_point [ nodes_x +1]=L´l ;464465 y_point [0]=´H / 2 ;466467 f o r ( i n t i =1; i<=nodes_y ; i++)468 {469 y_point [ i ]=( Y [ i ]+Y [ i´1]) / 2 . 0 ;470 }471 y_point [ nodes_y +1]=H / 2 ;472473 Delta_t =0.2∗ rho0 ∗ pow ( dy2 , 2 ) / mu ;474 }475476477478 void v i s c o s i t y _ m a p ( vector<double>& X , vector<double>& Y , vector<double>& x_point , Ðâ
nodes_x +2] , double D , double mu )479 {480 f o r ( i n t i =0; i<=nodes_y +1; i++)481 {482 f o r ( i n t k =0; k<=nodes_x ; k++)483 {484 i f ( fabs ( X [ k ] )<=D /2.0+1e´2 && fabs ( y_point [ i ] )<=D /2.0+1e´2)485 {486 mu_x [ i ] [ k ]=1 e30 ;487 }488489 e l s e
73
490 {491 mu_x [ i ] [ k ]= mu ;492 }493 }494 }495496 f o r ( i n t i =0; i<=nodes_y ; i++)497 {498 f o r ( i n t k =0; k<=nodes_x +1; k++)499 {500 i f ( fabs ( x_point [ k ] )<=D /2.0+1e´2 && fabs ( Y [ i ] )<=D /2.0+1e´2)501 {502 mu_y [ i ] [ k ]=1 e30 ;503 }504505 e l s e506 {507 mu_y [ i ] [ k ]= mu ;508 }509 }510 }511 }512513 double h a r m o n i c _ m e a n ( double dPE , double dPe , double deE , double mup , double mue )514 {515 r e t u r n dPE /( dPe / mup+deE / mue ) ;516 }517518 void v i s c o s i t y _ f a c e s _ c a l c u l a t i o n ( vector<double>& X , vector<double>& Y , vector<double>& Ðâ
nodes_y +1] [ nodes_x +2] ,522 double mu_ny [ nodes_y +1] [ nodes_x +2] , double mu_sy [ nodes_y +1] [ nodes_x +2])523 {524525 f o r ( i n t i =1; i<=nodes_y ; i++)526 {527 f o r ( i n t k =1; k<=nodes_x ´1; k++)528 {529 mu_ex [ i ] [ k ]= h a r m o n i c _ m e a n ( X [ k+1]´X [ k ] , x_point [ k+1]´X [ k ] , X [ k+1]´Ðâ
x_point [ k +1] , mu_x [ i ] [ k ] , mu_x [ i ] [ k +1]) ;530 mu_wx [ i ] [ k ]= h a r m o n i c _ m e a n ( X [ k ]´X [ k´1] , X [ k ]´ x_point [ k ] , x_point [ k ]´X [ kÐâ
´1] , mu_x [ i ] [ k ] , mu_x [ i ] [ k´1]) ;531 mu_nx [ i ] [ k ]= h a r m o n i c _ m e a n ( y_point [ i+1]´y_point [ i ] , y_point [ i+1]´Y [ i ] , Ðâ
Y [ i ]´ y_point [ i ] , mu_x [ i ] [ k ] , mu_x [ i +1] [ k ] ) ;532 mu_sx [ i ] [ k ]= h a r m o n i c _ m e a n ( y_point [ i ]´ y_point [ i´1] , y_point [ i ]´Y [ i´1] , YÐâ
[ i´1]´y_point [ i´1] , mu_x [ i ] [ k ] , mu_x [ i´1] [ k ] ) ;533 }534 }535536 f o r ( i n t i =1; i<=nodes_y ´1; i++)537 {538 f o r ( i n t k =1; k<=nodes_x ; k++)539 {540 mu_ey [ i ] [ k ]= h a r m o n i c _ m e a n ( x_point [ k+1]´x_point [ k ] , X [ k ]´ x_point [ k ] , Ðâ
x_point [ k+1]´X [ k ] , mu_y [ i ] [ k ] , mu_y [ i ] [ k +1]) ;541 mu_wy [ i ] [ k ]= h a r m o n i c _ m e a n ( x_point [ k ]´ x_point [ k´1] , x_point [ k ]´X [ k´1] , XÐâ
[ k´1]´x_point [ k´1] , mu_y [ i ] [ k ] , mu_y [ i ] [ k´1]) ;542 mu_ny [ i ] [ k ]= h a r m o n i c _ m e a n ( Y [ i+1]´Y [ i ] , y_point [ i+1]´Y [ i ] , Y [ i+1]´Ðâ
y_point [ i +1] , mu_y [ i ] [ k ] , mu_y [ i +1] [ k ] ) ;543 mu_sy [ i ] [ k ]= h a r m o n i c _ m e a n ( Y [ i ]´Y [ i´1] , Y [ i ]´ y_point [ i ] , y_point [ i ]´Y [ iÐâ
´1] , mu_y [ i ] [ k ] , mu_y [ i´1] [ k ] ) ;544 }545 }546 }547548549 void initial_map ( vector<double>& X , vector<double>& Y , vector<double>& x_point , vectorÐâ
553 f o r ( i n t i =0; i<=nodes_y +1; i++)554 {555 f o r ( i n t k =0; k<=nodes_x +1; k++)556 {557 i f ( k==nodes_x +1)558 {559 P0 [ i ] [ k ]=0;560 P1 [ i ] [ k ]=0;561 }562563 e l s e564 {565 P0 [ i ] [ k ]=0;566 P1 [ i ] [ k ]=0;567 }568 }569 }570571 f o r ( i n t i =0; i<=nodes_y +1; i++)572 {573 f o r ( i n t k =0; k<=nodes_x ; k++)574 {575 i f ( k==0)576 {577 U0 [ i ] [ k ]=4/ powf ( 8 . 0 , 2 . 0 ) ∗( powf ( 4 . 0 , 2 . 0 )´powf ( y_point [ i ] , 2 . 0 ) ) ;578 U1 [ i ] [ k ]=1;579 }580581 e l s e582 {583 U0 [ i ] [ k ]=0;584 U1 [ i ] [ k ]=0;585 }586 }587 }588589 f o r ( i n t i =0; i<=nodes_y ; i++)590 {591 f o r ( i n t k =0; k<=nodes_x +1; k++)592 {593 V0 [ i ] [ k ]=0;594 V1 [ i ] [ k ]=0;595 }596 }597 }598599 double UPWIND ( double Xd , double Xu , double Xc , double Phid , double Phiu , double Phic , Ðâ
double Xf , double phi_upwind )600 {601 r e t u r n phi_upwind ;602 }603604 double SMART ( double Xd , double Xu , double Xc , double Phid , double Phiu , double Phic , Ðâ
double Xf , double phi_upwind )605 {606 double phif , xf , xc , phic ;607608 phic=(Phic´Phiu ) /( Phid´Phiu ) ;609 xf=(Xf´Xu ) /( Xd´Xu ) ;610 xc=(Xc´Xu ) /( Xd´Xu ) ;611612 i f ( phic>=0 && phic<=xc /3)613 {614 phif=́ xf ∗(1´3∗ xc+2∗xf ) /( xc ∗( xc´1) ) ∗ phic ;615 }616617 e l s e i f ( phic>xc /3 && phic<=xc / xf ∗(1+xf´xc ) )618 {619 phif=(xf ∗( xf´xc ) ) /(1´xc )+(xf ∗( xf´1) ) /( xc ∗( xc´1) ) ∗ phic ;620 }621622 e l s e i f ( phic>xc / xf ∗(1+xf´xc ) && phic <1)623 {624 phif =1.0;625 }626627 e l s e
75
628 {629 phif=phic ;630 }631632 i f ( isnan ( phic ) | | isinf ( phic ) )633 {634 r e t u r n phi_upwind ;635 }636637 e l s e638 {639 r e t u r n Phiu+(Phid´Phiu ) ∗ phif ;640 }641642 }643644 double QUICK ( double Xd , double Xu , double Xc , double Phid , double Phiu , double Phic , Ðâ
double Xf , double phi_upwind )645 {646 double phif , xf , xc , phic ;647648 phic=(Phic´Phiu ) /( Phid´Phiu ) ;649 xf=(Xf´Xu ) /( Xd´Xu ) ;650 xc=(Xc´Xu ) /( Xd´Xu ) ;651652 phif=xf+(xf ∗( xf´1) ) /( xc ∗( xc´1) ) ∗( phic´xc ) ;653654 i f ( isnan ( phic ) | | isinf ( phic ) )655 {656 r e t u r n phi_upwind ;657 }658659 e l s e660 {661 r e t u r n Phiu+(Phid´Phiu ) ∗ phif ;662 }663 }664665 void R u _ c a l c u l a t i o n ( vector<double>& X , vector<double>& Y , vector<double>& x_point ,666 vector<double>& y_point , double &dx , double &dy , double x , double y , double rho0 , Ðâ
PHIsHRS ;673674 f o r ( i n t i =0; i<=nodes_y +1; i++)675 {676 f o r ( i n t k =0; k<=nodes_x ; k++)677 {678 me =0.5∗( rho0 ∗ U0 [ i ] [ k+1]+rho0 ∗ U0 [ i ] [ k ] ) ∗( Y [ i ]´Y [ i´1]) ;679 mw =0.5∗( rho0 ∗ U0 [ i ] [ k´1]+rho0 ∗ U0 [ i ] [ k ] ) ∗( Y [ i ]´Y [ i´1]) ;680 mn=rho0 ∗ V0 [ i ] [ k ] ∗ ( X [ k ]´ x_point [ k ] )+rho0 ∗ V0 [ i ] [ k +1]∗( x_point [ k+1]´X [ k ] ) ;681 ms=rho0 ∗ V0 [ i´1] [ k ] ∗ ( X [ k ]´ x_point [ k ] )+rho0 ∗ V0 [ i´1] [ k +1]∗( x_point [ k+1]´X [ k ] ) ;682683 i f ( me >=0)684 {685 i f ( k==nodes_x ´1)686 {687 PHIeHRS=U0 [ i ] [ k +1] ;688 }689690 e l s e691 {692 i f ( c o n v e c t i o n _ i n d e x==1)693 {694 PHIeHRS=UPWIND ( X [ k +1] , X [ k´1] , X [ k ] , U0 [ i ] [ k +1] , U0 [ i ] [ k´1] , Ðâ
U0 [ i ] [ k ] , x_point [ k +1] , U0 [ i ] [ k ] ) ;695 }696
76
697 e l s e i f ( c o n v e c t i o n _ i n d e x==2)698 {699 PHIeHRS=QUICK ( X [ k +1] , X [ k´1] , X [ k ] , U0 [ i ] [ k +1] , U0 [ i ] [ k´1] , U0Ðâ
[ i ] [ k ] , x_point [ k +1] , U0 [ i ] [ k ] ) ;700 }701702 e l s e i f ( c o n v e c t i o n _ i n d e x==3)703 {704 PHIeHRS=SMART ( X [ k +1] , X [ k´1] , X [ k ] , U0 [ i ] [ k +1] , U0 [ i ] [ k´1] , U0Ðâ
[ i ] [ k ] , x_point [ k +1] , U0 [ i ] [ k ] ) ;705 }706707 e l s e708 {709 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;710 exit ( 0 ) ;711 }712 }713 }714715 e l s e716 {717 i f ( k==nodes_x ´1)718 {719 PHIeHRS=U0 [ i ] [ k +1] ;720 }721722 e l s e723 {724 i f ( c o n v e c t i o n _ i n d e x==1)725 {726 PHIeHRS=UPWIND ( X [ k ] , X [ k +2] , X [ k +1] , U0 [ i ] [ k ] , U0 [ i ] [ k +2] , U0 [Ðâ
i ] [ k +1] , x_point [ k +1] , U0 [ i ] [ k +1]) ;727 }728729 e l s e i f ( c o n v e c t i o n _ i n d e x==2)730 {731 PHIeHRS=QUICK ( X [ k ] , X [ k +2] , X [ k +1] , U0 [ i ] [ k ] , U0 [ i ] [ k +2] , U0 [ iÐâ
] [ k +1] , x_point [ k +1] , U0 [ i ] [ k +1]) ;732 }733734 e l s e i f ( c o n v e c t i o n _ i n d e x==3)735 {736 PHIeHRS=SMART ( X [ k ] , X [ k +2] , X [ k +1] , U0 [ i ] [ k ] , U0 [ i ] [ k +2] , U0 [ iÐâ
] [ k +1] , x_point [ k +1] , U0 [ i ] [ k +1]) ;737 }738739 e l s e740 {741 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;742 exit ( 0 ) ;743 }744 }745 }746747 i f ( mw >=0)748 {749 i f ( k==1)750 {751 PHIwHRS=U0 [ i ] [ k´1] ;752 }753754 e l s e755 {756 i f ( c o n v e c t i o n _ i n d e x==1)757 {758 PHIwHRS=UPWIND ( X [ k ] , X [ k´2] , X [ k´1] , U0 [ i ] [ k ] , U0 [ i ] [ k´2] , U0 [Ðâ
i ] [ k´1] , x_point [ k ] , U0 [ i ] [ k´1]) ;759 }760761 e l s e i f ( c o n v e c t i o n _ i n d e x==2)762 {763 PHIwHRS=QUICK ( X [ k ] , X [ k´2] , X [ k´1] , U0 [ i ] [ k ] , U0 [ i ] [ k´2] , U0 [ iÐâ
] [ k´1] , x_point [ k ] , U0 [ i ] [ k´1]) ;764 }765766 e l s e i f ( c o n v e c t i o n _ i n d e x==3)
77
767 {768 PHIwHRS=SMART ( X [ k ] , X [ k´2] , X [ k´1] , U0 [ i ] [ k ] , U0 [ i ] [ k´2] , U0 [ iÐâ
] [ k´1] , x_point [ k ] , U0 [ i ] [ k´1]) ;769 }770771 e l s e772 {773 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;774 exit ( 0 ) ;775 }776 }777 }778779 e l s e780 {781 i f ( k==1)782 {783 PHIwHRS=U0 [ i ] [ k´1] ;784 }785786 e l s e787 {788 i f ( c o n v e c t i o n _ i n d e x==1)789 {790 PHIwHRS=UPWIND ( X [ k´1] , X [ k +1] , X [ k ] , U0 [ i ] [ k´1] , U0 [ i ] [ k +1] , U0Ðâ
[ i ] [ k ] , x_point [ k ] , U0 [ i ] [ k ] ) ;791 }792793 e l s e i f ( c o n v e c t i o n _ i n d e x==2)794 {795 PHIwHRS=QUICK ( X [ k´1] , X [ k +1] , X [ k ] , U0 [ i ] [ k´1] , U0 [ i ] [ k +1] , U0Ðâ
[ i ] [ k ] , x_point [ k ] , U0 [ i ] [ k ] ) ;796 }797798 e l s e i f ( c o n v e c t i o n _ i n d e x==3)799 {800 PHIwHRS=SMART ( X [ k´1] , X [ k +1] , X [ k ] , U0 [ i ] [ k´1] , U0 [ i ] [ k +1] , U0Ðâ
[ i ] [ k ] , x_point [ k ] , U0 [ i ] [ k ] ) ;801 }802803 e l s e804 {805 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;806 exit ( 0 ) ;807 }808 }809 }810811 i f ( mn >=0)812 {813 i f ( i==nodes_y )814 {815 PHInHRS=U0 [ i +1] [ k ] ;816 }817818 e l s e819 {820 i f ( c o n v e c t i o n _ i n d e x==1)821 {822 PHInHRS=UPWIND ( y_point [ i +1] , y_point [ i´1] , y_point [ i ] , U0 [ iÐâ
+1] [ k ] , U0 [ i´1] [ k ] , U0 [ i ] [ k ] , Y [ i ] , U0 [ i ] [ k ] ) ;823 }824825 e l s e i f ( c o n v e c t i o n _ i n d e x==2)826 {827 PHInHRS=QUICK ( y_point [ i +1] , y_point [ i´1] , y_point [ i ] , U0 [ i +1] [Ðâ
k ] , U0 [ i´1] [ k ] , U0 [ i ] [ k ] , Y [ i ] , U0 [ i ] [ k ] ) ;828 }829830 e l s e i f ( c o n v e c t i o n _ i n d e x==3)831 {832 PHInHRS=SMART ( y_point [ i +1] , y_point [ i´1] , y_point [ i ] , U0 [ i +1] [Ðâ
k ] , U0 [ i´1] [ k ] , U0 [ i ] [ k ] , Y [ i ] , U0 [ i ] [ k ] ) ;833 }834835 e l s e836 {
78
837 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;838 exit ( 0 ) ;839 }840 }841 }842843 e l s e844 {845 i f ( i==nodes_y )846 {847 PHInHRS=U0 [ i +1] [ k ] ;848 }849850 e l s e851 {852 i f ( c o n v e c t i o n _ i n d e x==1)853 {854 PHInHRS=UPWIND ( y_point [ i ] , y_point [ i +2] , y_point [ i +1] , U0 [ i ] [ kÐâ
] , U0 [ i +2] [ k ] , U0 [ i +1] [ k ] , Y [ i ] , U0 [ i +1] [ k ] ) ;855 }856857 e l s e i f ( c o n v e c t i o n _ i n d e x==2)858 {859 PHInHRS=QUICK ( y_point [ i ] , y_point [ i +2] , y_point [ i +1] , U0 [ i ] [ kÐâ
] , U0 [ i +2] [ k ] , U0 [ i +1] [ k ] , Y [ i ] , U0 [ i +1] [ k ] ) ;860 }861862 e l s e i f ( c o n v e c t i o n _ i n d e x==3)863 {864 PHInHRS=SMART ( y_point [ i ] , y_point [ i +2] , y_point [ i +1] , U0 [ i ] [ kÐâ
] , U0 [ i +2] [ k ] , U0 [ i +1] [ k ] , Y [ i ] , U0 [ i +1] [ k ] ) ;865 }866867 e l s e868 {869 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;870 exit ( 0 ) ;871 }872 }873 }874875 i f ( ms >=0)876 {877 i f ( i==1)878 {879 PHIsHRS=U0 [ i´1] [ k ] ;880 }881882 e l s e883 {884 i f ( c o n v e c t i o n _ i n d e x==1)885 {886 PHIsHRS=UPWIND ( y_point [ i ] , y_point [ i´2] , y_point [ i´1] , U0 [ i ] [ kÐâ
] , U0 [ i´2] [ k ] , U0 [ i´1] [ k ] , Y [ i´1] , U0 [ i´1] [ k ] ) ;887 }888889 e l s e i f ( c o n v e c t i o n _ i n d e x==2)890 {891 PHIsHRS=QUICK ( y_point [ i ] , y_point [ i´2] , y_point [ i´1] , U0 [ i ] [ kÐâ
] , U0 [ i´2] [ k ] , U0 [ i´1] [ k ] , Y [ i´1] , U0 [ i´1] [ k ] ) ;892 }893894 e l s e i f ( c o n v e c t i o n _ i n d e x==3)895 {896 PHIsHRS=SMART ( y_point [ i ] , y_point [ i´2] , y_point [ i´1] , U0 [ i ] [ kÐâ
] , U0 [ i´2] [ k ] , U0 [ i´1] [ k ] , Y [ i´1] , U0 [ i´1] [ k ] ) ;897 }898899 e l s e900 {901 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;902 exit ( 0 ) ;903 }904 }905 }906907 e l s e
79
908 {909 i f ( i==1)910 {911 PHIsHRS=U0 [ i´1] [ k ] ;912 }913914 e l s e915 {916 i f ( c o n v e c t i o n _ i n d e x==1)917 {918 PHIsHRS=UPWIND ( y_point [ i´1] , y_point [ i +1] , y_point [ i ] , U0 [ iÐâ
´1] [ k ] , U0 [ i +1] [ k ] , U0 [ i ] [ k ] , Y [ i´1] , U0 [ i ] [ k ] ) ;919 }920921 e l s e i f ( c o n v e c t i o n _ i n d e x==2)922 {923 PHIsHRS=QUICK ( y_point [ i´1] , y_point [ i +1] , y_point [ i ] , U0 [ i´1] [Ðâ
k ] , U0 [ i +1] [ k ] , U0 [ i ] [ k ] , Y [ i´1] , U0 [ i ] [ k ] ) ;924 }925926 e l s e i f ( c o n v e c t i o n _ i n d e x==3)927 {928 PHIsHRS=SMART ( y_point [ i´1] , y_point [ i +1] , y_point [ i ] , U0 [ i´1] [Ðâ
k ] , U0 [ i +1] [ k ] , U0 [ i ] [ k ] , Y [ i´1] , U0 [ i ] [ k ] ) ;929 }930931 e l s e932 {933 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;934 exit ( 0 ) ;935 }936 }937 }938939 i f ( time==0)940 {941 Rn_x_ant [ i ] [ k ]=0;942 }943944 e l s e945 {946 Rn_x_ant [ i ] [ k ]= Rn_x [ i ] [ k ] ;947 }948949 Rn_x [ i ] [ k ]=(´( me ∗ PHIeHRS´mw ∗ PHIwHRS+mn ∗ PHInHRS´ms ∗ PHIsHRS )+( mu_ex [ i ] [ k ] ∗ ( U0Ðâ
[ i ] [ k+1]´U0 [ i ] [ k ] ) /( X [ k+1]´X [ k ] ) ∗( Y [ i ]´Y [ i´1])´mu_wx [ i ] [ k ] ∗ ( U0 [ i ] [ k ]´U0Ðâ
[ i ] [ k´1]) /( X [ k ]´X [ k´1]) ∗( Y [ i ]´Y [ i´1])+950 mu_nx [ i ] [ k ] ∗ ( U0 [ i +1] [ k ]´U0 [ i ] [ k ] ) /( y_point [ i+1]´y_point [ i ] ) ∗( x_point [ k+1]´Ðâ
x_point [ k ] )´951 mu_sx [ i ] [ k ] ∗ ( U0 [ i ] [ k ]´U0 [ i´1] [ k ] ) /( y_point [ i ]´ y_point [ i´1]) ∗( x_point [ k+1]´Ðâ
x_point [ k ] ) ) ) / ( ( x_point [ k+1]´x_point [ k ] ) ∗( Y [ i ]´Y [ i´1]) ) ;952953 i f ( k==0)954 {955 Up [ i ] [ k ]=4/ powf ( 8 . 0 , 2 . 0 ) ∗( powf ( 4 . 0 , 2 . 0 )´powf ( y_point [ i ] , 2 . 0 ) ) ;956 }957958 e l s e i f ( k==nodes_x )959 {960 Up [ i ] [ k ]= Up [ i ] [ k´1] ;961 }962963 e l s e i f ( i==0)964 {965 Up [ i ] [ k ]=0;966 }967968 e l s e i f ( i==nodes_y +1)969 {970 Up [ i ] [ k ]=0;971 }972973 e l s e i f ( fabs ( X [ k ] )<=D /2.0+1e´2 && fabs ( y_point [ i ] )<=D /2.0+1e´2)974 {975 Up [ i ] [ k ]=0;976 }977
80
978 e l s e979 {980 Up [ i ] [ k ]= U0 [ i ] [ k ]+ Delta_t / rho0 ∗(3/2∗ Rn_x [ i ] [ k ]´1/2∗ Rn_x_ant [ i ] [ k ] ) ;981 }982 }983 }984 }985986 void R v _ c a l c u l a t i o n ( vector<double>& X , vector<double>& Y , vector<double>& x_point ,987 vector<double>& y_point , double &dx , double &dy , double x , double y , double rho0 , Ðâ
PHIsHRS ;994995 f o r ( i n t i =0; i<=nodes_y ; i++)996 {997 f o r ( i n t k =0; k<=nodes_x +1; k++)998 {999
1000 mn =0.5∗( rho0 ∗ V0 [ i +1] [ k ]+ rho0 ∗ V0 [ i ] [ k ] ) ∗( X [ k ]´X [ k´1]) ;1001 ms =0.5∗( rho0 ∗ V0 [ i´1] [ k ]+ rho0 ∗ V0 [ i ] [ k ] ) ∗( X [ k ]´X [ k´1]) ;1002 me=rho0 ∗ U0 [ i ] [ k ] ∗ ( Y [ i ]´ y_point [ i ] )+rho0 ∗ U0 [ i +1] [ k ] ∗ ( y_point [ i+1]´Y [ i ] ) ;1003 mw=rho0 ∗ U0 [ i ] [ k´1]∗( Y [ i ]´ y_point [ i ] )+rho0 ∗ U0 [ i +1] [ k´1]∗( y_point [ i+1]´Y [ i ] ) ;10041005 i f ( me >=0)1006 {1007 i f ( k==nodes_x )1008 {1009 PHIeHRS=V0 [ i ] [ k +1] ;1010 }10111012 e l s e1013 {1014 i f ( c o n v e c t i o n _ i n d e x==1)1015 {1016 PHIeHRS=UPWIND ( x_point [ k +1] , x_point [ k´1] , x_point [ k ] , V0 [ i ] [ kÐâ
+1] , V0 [ i ] [ k´1] , V0 [ i ] [ k ] , X [ k ] , V0 [ i ] [ k ] ) ;1017 }10181019 e l s e i f ( c o n v e c t i o n _ i n d e x==2)1020 {1021 PHIeHRS=QUICK ( x_point [ k +1] , x_point [ k´1] , x_point [ k ] , V0 [ i ] [ kÐâ
+1] , V0 [ i ] [ k´1] , V0 [ i ] [ k ] , X [ k ] , V0 [ i ] [ k ] ) ;1022 }10231024 e l s e i f ( c o n v e c t i o n _ i n d e x==3)1025 {1026 PHIeHRS=SMART ( x_point [ k +1] , x_point [ k´1] , x_point [ k ] , V0 [ i ] [ kÐâ
+1] , V0 [ i ] [ k´1] , V0 [ i ] [ k ] , X [ k ] , V0 [ i ] [ k ] ) ;1027 }10281029 e l s e1030 {1031 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;1032 exit ( 0 ) ;1033 }1034 }1035 }10361037 e l s e1038 {1039 i f ( k==nodes_x )1040 {1041 PHIeHRS=V0 [ i ] [ k +1] ;1042 }10431044 e l s e1045 {1046 i f ( c o n v e c t i o n _ i n d e x==1)1047 {
81
1048 PHIeHRS=UPWIND ( x_point [ k ] , x_point [ k +2] , x_point [ k +1] , V0 [ i ] [ kÐâ
] , V0 [ i ] [ k +2] , V0 [ i ] [ k +1] , X [ k ] , V0 [ i ] [ k +1]) ;1049 }10501051 e l s e i f ( c o n v e c t i o n _ i n d e x==2)1052 {1053 PHIeHRS=QUICK ( x_point [ k ] , x_point [ k +2] , x_point [ k +1] , V0 [ i ] [ kÐâ
] , V0 [ i ] [ k +2] , V0 [ i ] [ k +1] , X [ k ] , V0 [ i ] [ k +1]) ;1054 }10551056 e l s e i f ( c o n v e c t i o n _ i n d e x==3)1057 {1058 PHIeHRS=SMART ( x_point [ k ] , x_point [ k +2] , x_point [ k +1] , V0 [ i ] [ kÐâ
] , V0 [ i ] [ k +2] , V0 [ i ] [ k +1] , X [ k ] , V0 [ i ] [ k +1]) ;1059 }10601061 e l s e1062 {1063 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;1064 exit ( 0 ) ;1065 }1066 }1067 }10681069 i f ( mw >=0)1070 {1071 i f ( k==1)1072 {1073 PHIwHRS=V0 [ i ] [ k´1] ;1074 }10751076 e l s e1077 {1078 i f ( c o n v e c t i o n _ i n d e x==1)1079 {1080 PHIwHRS=UPWIND ( x_point [ k ] , x_point [ k´2] , x_point [ k´1] , V0 [ i ] [ kÐâ
] , V0 [ i ] [ k´2] , V0 [ i ] [ k´1] , X [ k´1] , V0 [ i ] [ k´1]) ;1081 }10821083 e l s e i f ( c o n v e c t i o n _ i n d e x==2)1084 {1085 PHIwHRS=QUICK ( x_point [ k ] , x_point [ k´2] , x_point [ k´1] , V0 [ i ] [ k ] ,Ðâ
V0 [ i ] [ k´2] , V0 [ i ] [ k´1] , X [ k´1] , V0 [ i ] [ k´1]) ;1086 }10871088 e l s e i f ( c o n v e c t i o n _ i n d e x==3)1089 {1090 PHIwHRS=SMART ( x_point [ k ] , x_point [ k´2] , x_point [ k´1] , V0 [ i ] [ k ] ,Ðâ
V0 [ i ] [ k´2] , V0 [ i ] [ k´1] , X [ k´1] , V0 [ i ] [ k´1]) ;1091 }10921093 e l s e1094 {1095 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;1096 exit ( 0 ) ;1097 }1098 }1099 }11001101 e l s e1102 {1103 i f ( k==1)1104 {1105 PHIwHRS=V0 [ i ] [ k´1] ;1106 }11071108 e l s e1109 {1110 i f ( c o n v e c t i o n _ i n d e x==1)1111 {1112 PHIwHRS=UPWIND ( x_point [ k´1] , x_point [ k +1] , x_point [ k ] , V0 [ i ] [ kÐâ
´1] , V0 [ i ] [ k +1] , V0 [ i ] [ k ] , X [ k´1] , V0 [ i ] [ k ] ) ;1113 }11141115 e l s e i f ( c o n v e c t i o n _ i n d e x==2)1116 {
82
1117 PHIwHRS=QUICK ( x_point [ k´1] , x_point [ k +1] , x_point [ k ] , V0 [ i ] [ kÐâ
´1] , V0 [ i ] [ k +1] , V0 [ i ] [ k ] , X [ k´1] , V0 [ i ] [ k ] ) ;1118 }11191120 e l s e i f ( c o n v e c t i o n _ i n d e x==3)1121 {1122 PHIwHRS=SMART ( x_point [ k´1] , x_point [ k +1] , x_point [ k ] , V0 [ i ] [ kÐâ
´1] , V0 [ i ] [ k +1] , V0 [ i ] [ k ] , X [ k´1] , V0 [ i ] [ k ] ) ;1123 }11241125 e l s e1126 {1127 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;1128 exit ( 0 ) ;1129 }1130 }1131 }11321133 i f ( mn >=0)1134 {11351136 i f ( i==nodes_y )1137 {1138 PHInHRS=V0 [ i +1] [ k ] ;1139 }11401141 e l s e1142 {1143 i f ( c o n v e c t i o n _ i n d e x==1)1144 {1145 PHInHRS=UPWIND ( Y [ i +1] , Y [ i´1] , Y [ i ] , V0 [ i +1] [ k ] , V0 [ i´1] [ k ] , Ðâ
V0 [ i ] [ k ] , y_point [ i +1] , V0 [ i ] [ k ] ) ;1146 }11471148 e l s e i f ( c o n v e c t i o n _ i n d e x==2)1149 {1150 PHInHRS=QUICK ( Y [ i +1] , Y [ i´1] , Y [ i ] , V0 [ i +1] [ k ] , V0 [ i´1] [ k ] , V0Ðâ
[ i ] [ k ] , y_point [ i +1] , V0 [ i ] [ k ] ) ;1151 }11521153 e l s e i f ( c o n v e c t i o n _ i n d e x==3)1154 {1155 PHInHRS=SMART ( Y [ i +1] , Y [ i´1] , Y [ i ] , V0 [ i +1] [ k ] , V0 [ i´1] [ k ] , V0Ðâ
[ i ] [ k ] , y_point [ i +1] , V0 [ i ] [ k ] ) ;1156 }11571158 e l s e1159 {1160 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;1161 exit ( 0 ) ;1162 }1163 }1164 }11651166 e l s e1167 {1168 i f ( i==nodes_y )1169 {1170 PHInHRS=V0 [ i +1] [ k ] ;1171 }11721173 e l s e1174 {1175 i f ( c o n v e c t i o n _ i n d e x==1)1176 {1177 PHInHRS=UPWIND ( Y [ i ] , Y [ i +2] , Y [ i +1] , V0 [ i ] [ k ] , V0 [ i +2] [ k ] , V0 [Ðâ
i +1] [ k ] , y_point [ i +1] , V0 [ i +1] [ k ] ) ;1178 }11791180 e l s e i f ( c o n v e c t i o n _ i n d e x==2)1181 {1182 PHInHRS=QUICK ( Y [ i ] , Y [ i +2] , Y [ i +1] , V0 [ i ] [ k ] , V0 [ i +2] [ k ] , V0 [ iÐâ
+1] [ k ] , y_point [ i +1] , V0 [ i +1] [ k ] ) ;1183 }11841185 e l s e i f ( c o n v e c t i o n _ i n d e x==3)1186 {
83
1187 PHInHRS=SMART ( Y [ i ] , Y [ i +2] , Y [ i +1] , V0 [ i ] [ k ] , V0 [ i +2] [ k ] , V0 [ iÐâ
+1] [ k ] , y_point [ i +1] , V0 [ i +1] [ k ] ) ;1188 }11891190 e l s e1191 {1192 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;1193 exit ( 0 ) ;1194 }1195 }1196 }11971198 i f ( ms >=0)1199 {1200 i f ( i==0)1201 {1202 PHIsHRS=V0 [ i´1] [ k ] ;1203 }12041205 e l s e1206 {1207 i f ( c o n v e c t i o n _ i n d e x==1)1208 {1209 PHIsHRS=UPWIND ( Y [ i ] , Y [ i´2] , Y [ i´1] , V0 [ i ] [ k ] , V0 [ i´2] [ k ] , V0 [Ðâ
i´1] [ k ] , y_point [ i ] , V0 [ i´1] [ k ] ) ;1210 }12111212 e l s e i f ( c o n v e c t i o n _ i n d e x==2)1213 {1214 PHIsHRS=QUICK ( Y [ i ] , Y [ i´2] , Y [ i´1] , V0 [ i ] [ k ] , V0 [ i´2] [ k ] , V0 [ iÐâ
´1] [ k ] , y_point [ i ] , V0 [ i´1] [ k ] ) ;1215 }12161217 e l s e i f ( c o n v e c t i o n _ i n d e x==3)1218 {1219 PHIsHRS=SMART ( Y [ i ] , Y [ i´2] , Y [ i´1] , V0 [ i ] [ k ] , V0 [ i´2] [ k ] , V0 [ iÐâ
´1] [ k ] , y_point [ i ] , V0 [ i´1] [ k ] ) ;1220 }12211222 e l s e1223 {1224 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;1225 exit ( 0 ) ;1226 }1227 }1228 }12291230 e l s e1231 {1232 i f ( i==0)1233 {1234 PHIsHRS=V0 [ i´1] [ k ] ;1235 }12361237 e l s e1238 {1239 i f ( c o n v e c t i o n _ i n d e x==1)1240 {1241 PHIsHRS=UPWIND ( Y [ i´1] , Y [ i +1] , Y [ i ] , V0 [ i´1] [ k ] , V0 [ i +1] [ k ] , Ðâ
V0 [ i ] [ k ] , y_point [ i ] , V0 [ i ] [ k ] ) ;1242 }12431244 e l s e i f ( c o n v e c t i o n _ i n d e x==2)1245 {1246 PHIsHRS=QUICK ( Y [ i´1] , Y [ i +1] , Y [ i ] , V0 [ i´1] [ k ] , V0 [ i +1] [ k ] , V0Ðâ
[ i ] [ k ] , y_point [ i ] , V0 [ i ] [ k ] ) ;1247 }12481249 e l s e i f ( c o n v e c t i o n _ i n d e x==3)1250 {1251 PHIsHRS=SMART ( Y [ i´1] , Y [ i +1] , Y [ i ] , V0 [ i´1] [ k ] , V0 [ i +1] [ k ] , V0Ðâ
[ i ] [ k ] , y_point [ i ] , V0 [ i ] [ k ] ) ;1252 }12531254 e l s e1255 {1256 cout<<" Incorrect convection scheme s e l e c t e d . Restart program " ;
84
1257 exit ( 0 ) ;1258 }1259 }1260 }12611262 i f ( time==0)1263 {1264 Rn_y_ant [ i ] [ k ]=0;1265 }12661267 e l s e1268 {1269 Rn_y_ant [ i ] [ k ]= Rn_y [ i ] [ k ] ;1270 }12711272 Rn_y [ i ] [ k ]=(´( me ∗ PHIeHRS´mw ∗ PHIwHRS+mn ∗ PHInHRS´ms ∗ PHIsHRS )+( mu_ey [ i ] [ k ] ∗ ( V0Ðâ
[ i ] [ k+1]´V0 [ i ] [ k ] ) /( x_point [ k+1]´x_point [ k ] ) ∗( y_point [ i+1]´y_point [ i ] )´1273 mu_wy [ i ] [ k ] ∗ ( V0 [ i ] [ k ]´V0 [ i ] [ k´1]) /( x_point [ k ]´ x_point [ k´1]) ∗( y_point [ i+1]´Ðâ
y_point [ i ] )+mu_ny [ i ] [ k ] ∗ ( V0 [ i +1] [ k ]´V0 [ i ] [ k ] ) /( Y [ i+1]´Y [ i ] ) ∗( X [ k ]´X [ kÐâ
´1])´1274 mu_sy [ i ] [ k ] ∗ ( V0 [ i ] [ k ]´V0 [ i´1] [ k ] ) /( Y [ i ]´Y [ i´1]) ∗( X [ k ]´X [ k´1]) ) ) / ( ( X [ k ]´X [ kÐâ
´1]) ∗( y_point [ i+1]´y_point [ i ] ) ) ;12751276 i f ( k==0)1277 {1278 Vp [ i ] [ k ]=0;1279 }12801281 e l s e i f ( k==nodes_x +1)1282 {1283 Vp [ i ] [ k ]= Vp [ i ] [ k´1] ;1284 }12851286 e l s e i f ( i==0)1287 {1288 Vp [ i ] [ k ]=0;1289 }12901291 e l s e i f ( i==nodes_y )1292 {1293 Vp [ i ] [ k ]=0;1294 }12951296 e l s e i f ( fabs ( x_point [ k ] )<=D /2.0+1e´2 && fabs ( Y [ i ] )<=D /2.0+1e´2)1297 {1298 Vp [ i ] [ k ]=0;1299 }13001301 e l s e1302 {1303 Vp [ i ] [ k ]= V0 [ i ] [ k ]+ Delta_t / rho0 ∗(3/2∗ Rn_y [ i ] [ k ]´1/2∗ Rn_y_ant [ i ] [ k ] ) ;1304 }1305 }1306 }13071308 }130913101311 void p r e s s u r e _ s o l v e r ( vector<double> X , vector<double> Y , vector<double> x_point ,1312 vector<double> y_point , double Vp [ nodes_y +1] [ nodes_x +2] , double P0 [ nodes_y +2] [ nodes_xÐâ
nodes_x +2] , double as [ nodes_y +2] [ nodes_x +2] ,1314 double ap [ nodes_y +2] [ nodes_x +2] , double bp [ nodes_y +2] [ nodes_x +2] , double Up [ nodes_y +2] [Ðâ
nodes_x +1] , double Delta_t )1315 {1316 double error =100;1317 double ff =1;1318 double e r r o r _ i t e r a t i o n ;1319 double sigma =0.000001;13201321 f o r ( i n t i =0; i<=nodes_y +1; i++)1322 {1323 f o r ( i n t k =0; k<=nodes_x +1; k++)1324 {1325 ae [ i ] [ k ]=( Y [ i ]´Y [ i´1]) /( x_point [ k+1]´x_point [ k ] ) ;1326 aw [ i ] [ k ]=( Y [ i ]´Y [ i´1]) /( x_point [ k ]´ x_point [ k´1]) ;
85
1327 an [ i ] [ k ]=( X [ k ]´X [ k´1]) /( y_point [ i+1]´y_point [ i ] ) ;1328 as [ i ] [ k ]=( X [ k ]´X [ k´1]) /( y_point [ i ]´ y_point [ i´1]) ;1329 bp [ i ] [ k ]=´1/ Delta_t ∗( rho0 ∗ Up [ i ] [ k ] ∗ ( Y [ i ]´Y [ i´1])1330 ´rho0 ∗ Up [ i ] [ k´1]∗( Y [ i ]´Y [ i´1])1331 +rho0 ∗ Vp [ i ] [ k ] ∗ ( X [ k ]´X [ k´1])1332 ´rho0 ∗ Vp [ i´1] [ k ] ∗ ( X [ k ]´X [ k´1]) ) ;1333 ap [ i ] [ k ]= ae [ i ] [ k ]+ aw [ i ] [ k ]+ an [ i ] [ k ]+ as [ i ] [ k ] ;1334 }1335 }13361337 whi le ( error>sigma )1338 {1339 f o r ( i n t i =0; i<=nodes_y +1; i++)1340 {1341 f o r ( i n t k =0; k<=nodes_x +1; k++)1342 {13431344 i f ( i==0)1345 {1346 P1 [ i ] [ k ]= P1 [ i +1] [ k ] ;1347 }13481349 e l s e i f ( i==nodes_y +1)1350 {1351 P1 [ i ] [ k ]= P1 [ i´1] [ k ] ;1352 }13531354 e l s e i f ( k==0)1355 {1356 P1 [ i ] [ k ]= P1 [ i ] [ k +1] ;1357 }13581359 e l s e i f ( k==nodes_x +1)1360 {1361 P1 [ i ] [ k ]=0;1362 }13631364 e l s e1365 {1366 P1 [ i ] [ k ]= ff ∗( ae [ i ] [ k ] ∗ P1 [ i ] [ k+1]+aw [ i ] [ k ] ∗ P1 [ i ] [ k´1]1367 +an [ i ] [ k ] ∗ P1 [ i +1] [ k ]+ as [ i ] [ k ] ∗ P1 [ i´1] [ k ]1368 +bp [ i ] [ k ] ) /( ap [ i ] [ k ] ) +(1´ff ) ∗ P0 [ i ] [ k ] ;1369 }1370 }1371 }13721373 e r r o r _ i t e r a t i o n =0;13741375 f o r ( i n t i =0; i<=(nodes_y +1) ; i++)1376 {1377 f o r ( i n t k =0; k<=(nodes_x +1) ; k++)1378 {1379 i f ( fabs ( P1 [ i ] [ k ]´P0 [ i ] [ k ] )>e r r o r _ i t e r a t i o n )1380 {1381 e r r o r _ i t e r a t i o n=fabs ( P1 [ i ] [ k ]´P0 [ i ] [ k ] ) ;1382 }1383 }1384 }13851386 error=e r r o r _ i t e r a t i o n ;13871388 f o r ( i n t i =0; i<=nodes_y +1; i++)1389 {1390 f o r ( i n t k =0; k<=nodes_x +1; k++)1391 {1392 P0 [ i ] [ k ]= P1 [ i ] [ k ] ;1393 }1394 }1395 }1396 }13971398 void v e l o c i t y _ c a l c u l a t i o n ( vector <double> X , vector<double> Y , vector<double> x_point ,1399 vector<double> y_point , double Vp [ nodes_y +1] [ nodes_x +2] , double P0 [ nodes_y +2] [ nodes_xÐâ
1401 double ap [ nodes_y +2] [ nodes_x +2] , double bp [ nodes_y +2] [ nodes_x +2] , double Up [ nodes_y +2] [Ðâ
nodes_x +1] , double Delta_t , bool&steady , double time , double Re )1402 {1403 f o r ( i n t i =0; i<=nodes_y +1; i++)1404 {1405 f o r ( i n t k =0; k<=nodes_x ; k++)1406 {1407 i f ( k==0)1408 {1409 U1 [ i ] [ k ]=4/ powf ( 8 . 0 , 2 . 0 ) ∗( powf ( 4 . 0 , 2 . 0 )´powf ( y_point [ i ] , 2 . 0 ) ) ;1410 }14111412 e l s e i f ( k==nodes_x )1413 {1414 U1 [ i ] [ k ]= U1 [ i ] [ k´1] ;1415 }14161417 e l s e i f ( i==0)1418 {1419 U1 [ i ] [ k ]=0;1420 }14211422 e l s e i f ( i==nodes_y +1)1423 {1424 U1 [ i ] [ k ]=0;1425 }14261427 e l s e i f ( fabs ( X [ k ] )<=D /2.0+1e´2 && fabs ( y_point [ i ] )<=D /2.0+1e´2)1428 {1429 U1 [ i ] [ k ]=0;1430 }14311432 e l s e1433 {1434 U1 [ i ] [ k ]= Up [ i ] [ k ]´ Delta_t / rho0 ∗( P1 [ i ] [ k+1]´P1 [ i ] [ k ] ) /( x_point [ k+1]´Ðâ
x_point [ k ] ) ;1435 }1436 }1437 }14381439 f o r ( i n t i =0; i<=nodes_y ; i++)1440 {1441 f o r ( i n t k =0; k<=nodes_x +1; k++)1442 {14431444 i f ( k==0)1445 {1446 V1 [ i ] [ k ]=0;1447 }14481449 e l s e i f ( k==nodes_x +1)1450 {1451 V1 [ i ] [ k ]= V1 [ i ] [ k´1] ;1452 }14531454 e l s e i f ( i==0)1455 {1456 V1 [ i ] [ k ]=0;1457 }14581459 e l s e i f ( i==nodes_y )1460 {1461 V1 [ i ] [ k ]=0;1462 }14631464 e l s e i f ( fabs ( x_point [ k ] )<=D /2.0+1e´2 && fabs ( Y [ i ] )<=D /2.0+1e´2)1465 {1466 V1 [ i ] [ k ]=0;1467 }14681469 e l s e1470 {1471 V1 [ i ] [ k ]= Vp [ i ] [ k ]´ Delta_t / rho0 ∗( P1 [ i +1] [ k ]´P1 [ i ] [ k ] ) /( y_point [ i+1]´Ðâ
y_point [ i ] ) ;1472 }1473 }1474 }
87
14751476 i f ( Re >50 && time >200)1477 {1478 steady=tru e ;1479 cout<<"now"<<" \n" ;1480 }1481 }148214831484 void d e l t a _ t _ c a l c u l a t i o n ( vector<double> X , vector<double> Y , vector<double> x_point ,1485 vector<double> y_point , double V1 [ nodes_y +1] [ nodes_x +2] , double U1 [ nodes_y +2] [ nodes_xÐâ
+1] , double& Delta_t , double&time )1486 {14871488 double d e l t a _ t c _ m i n _ x =100;1489 double d e l t a _ t c _ m i n _ y =100;1490 double de lta _tc _mi n ;14911492 f o r ( i n t i =1; i<=nodes_y ; i++)1493 {1494 f o r ( i n t k =1; k<=nodes_x ´1; k++)1495 {1496 i f ( 0 . 3 5 ∗ ( x_point [ k+1]´x_point [ k ] ) / fabs ( U1 [ i ] [ k ] )<d e l t a _ t c _ m i n _ x )1497 {1498 d e l t a _ t c _ m i n _ x =0.35∗( x_point [ k+1]´x_point [ k ] ) / fabs ( U1 [ i ] [ k ] ) ;1499 }1500 }1501 }15021503 f o r ( i n t i =1; i<=nodes_y ´1; i++)1504 {1505 f o r ( i n t k =1; k<=nodes_x ; k++)1506 {1507 i f ( 0 . 3 5 ∗ ( y_point [ i+1]´y_point [ i ] ) / fabs ( V1 [ i ] [ k ] )<d e l t a _ t c _ m i n _ y )1508 {1509 d e l t a _ t c _ m i n _ y =0.35∗( y_point [ i+1]´y_point [ i ] ) / fabs ( V1 [ i ] [ k ] ) ;1510 }1511 }1512 }15131514 i f ( delta_tc_min_x <d e l t a _ t c _ m i n _ y )1515 {1516 de lta _tc _m in=d e l t a _ t c _ m i n _ x ;1517 }15181519 e l s e1520 {1521 de lta _tc _m in=d e l t a _ t c _ m i n _ y ;1522 }15231524 i f ( delta_tc_min <Delta_t )1525 {1526 Delta_t=de lta _tc _m in ;1527 }15281529 time=time+Delta_t ;1530 }15311532 void f o r c e s _ c a l c u l a t i o n ( vector<double> X , vector<double> Y , vector<double> x_point ,1533 vector<double> y_point , double V1 [ nodes_y +1] [ nodes_x +2] , double U1 [ nodes_y +2] [ nodes_xÐâ
iterations , double mu , double D )1535 {15361537 double p r e s s u r e _ f o r c e s _ c d =0;1538 double v i s c o u s _ f o r c e s _ c d =0;1539 double p r e s s u r e _ f o r c e s _ c l =0;1540 double v i s c o u s _ f o r c e s _ c l =0;15411542 f o r ( i n t i =1; i<=nodes_y ´1; i++)1543 {1544 f o r ( i n t k =1; k<=nodes_x ´1; k++)1545 {15461547 i f ( fabs ( y_point [ i´1])<=D /2 .0 && fabs ( y_point [ i ] )>D /2 .0 && fabs ( X [ k ] )<=DÐâ
/ 2 . 0 )
88
1548 {1549 v i s c o u s _ f o r c e s _ c d=v i s c o u s _ f o r c e s _ c d+mu ∗( U1 [ i ] [ k ] ) /( y_point [ i ]´Y [ i´1]) ∗(Ðâ
x_point [ k+1]´x_point [ k ] ) ;1550 }15511552 i f ( fabs ( y_point [ i +1])<=D /2 .0 && fabs ( y_point [ i ] )>D /2 .0 && fabs ( X [ k ] )<=DÐâ
/ 2 . 0 )1553 {1554 v i s c o u s _ f o r c e s _ c d=v i s c o u s _ f o r c e s _ c d+mu ∗( U1 [ i ] [ k ] ) /( y_point [ i ]´Y [ i´1]) ∗(Ðâ
x_point [ k+1]´x_point [ k ] ) ;1555 }1556 }1557 }15581559 f o r ( i n t i =1; i<=nodes_y ´1; i++)1560 {1561 f o r ( i n t k =1; k<=nodes_x ´1; k++)1562 {15631564 i f ( fabs ( x_point [ k +1])<=D /2 .0 && fabs ( y_point [ i ] )<=D /2 .0 && fabs ( x_point [ k ] )Ðâ
>D / 2 . 0 )1565 {1566 p r e s s u r e _ f o r c e s _ c d=p r e s s u r e _ f o r c e s _ c d+P1 [ i ] [ k ] ∗ ( Y [ i ]´Y [ i´1]) ;1567 }15681569 i f ( fabs ( x_point [ k´1])<=D /2 .0 && fabs ( y_point [ i ] )<=D /2 .0 && fabs ( x_point [ k ] )Ðâ
>D / 2 . 0 )1570 {1571 p r e s s u r e _ f o r c e s _ c d=pressure_forces_cd´P1 [ i ] [ k ] ∗ ( Y [ i ]´Y [ i´1]) ;1572 }1573 }1574 }15751576 f o r ( i n t i =1; i<=nodes_y ´1; i++)1577 {1578 f o r ( i n t k =1; k<=nodes_x ´1; k++)1579 {15801581 i f ( fabs ( x_point [ k´1])<=D /2 .0 && fabs ( x_point [ k ] )>D /2 .0 && fabs ( Y [ i ] )<=DÐâ
/ 2 . 0 )1582 {1583 v i s c o u s _ f o r c e s _ c l=v i s c o u s _ f o r c e s _ c l+mu ∗( V1 [ i ] [ k ] ) /( x_point [ k ]´X [ k´1]) ∗(Ðâ
y_point [ i+1]´y_point [ i ] ) ;1584 }15851586 i f ( fabs ( x_point [ k +1])<=D /2 .0 && fabs ( x_point [ k ] )>D /2 .0 && fabs ( Y [ i ] )<=DÐâ
/ 2 . 0 )1587 {1588 v i s c o u s _ f o r c e s _ c l=v i s c o u s _ f o r c e s _ c l+mu ∗( V1 [ i ] [ k ] ) /( x_point [ k ]´X [ k´1]) ∗(Ðâ
y_point [ i+1]´y_point [ i ] ) ;1589 }1590 }1591 }15921593 f o r ( i n t i =1; i<=nodes_y ´1; i++)1594 {1595 f o r ( i n t k =1; k<=nodes_x ´1; k++)1596 {15971598 i f ( fabs ( y_point [ i +1])<=D /2 .0 && fabs ( x_point [ k ] )<=D /2 .0 && fabs ( y_point [ i ] )Ðâ
>D / 2 . 0 )1599 {1600 p r e s s u r e _ f o r c e s _ c l=p r e s s u r e _ f o r c e s _ c l+P1 [ i ] [ k ] ∗ ( X [ k ]´X [ k´1]) ;1601 }16021603 i f ( fabs ( y_point [ i´1])<=D /2 .0 && fabs ( x_point [ k ] )<=D /2 .0 && fabs ( y_point [ i ] )Ðâ
>D / 2 . 0 )1604 {1605 p r e s s u r e _ f o r c e s _ c l=pressure_forces_cl´P1 [ i ] [ k ] ∗ ( X [ k ]´X [ k´1]) ;1606 }1607 }1608 }16091610 Cd [ iterations ]=2∗( v i s c o u s _ f o r c e s _ c d+p r e s s u r e _ f o r c e s _ c d ) ;1611 Cl [ iterations ]=2∗( v i s c o u s _ f o r c e s _ c l+p r e s s u r e _ f o r c e s _ c l ) ;16121613 }
89
16141615 void v e l _ m e a n _ c a l c ( double V1 [ nodes_y +1] [ nodes_x +2] , double U1 [ nodes_y +2] [ nodes_x +1] , Ðâ
x_point )1617 {1618 f o r ( i n t i =0; i<=nodes_y +1; i++)1619 {1620 f o r ( i n t k =0; k<=nodes_x +1; k++)1621 {1622 i f ( i==0)1623 {1624 U_mean [ i ] [ k ]=0;1625 }16261627 e l s e i f ( i==nodes_y +1)1628 {1629 U_mean [ i ] [ k ]=0;1630 }16311632 e l s e i f ( k==0)1633 {1634 U_mean [ i ] [ k ]=4/ powf ( 8 . 0 , 2 . 0 ) ∗( powf ( 4 . 0 , 2 . 0 )´powf ( y_point [ i ] , 2 . 0 ) ) ; ;1635 }16361637 e l s e i f ( k==nodes_x +1)1638 {1639 U_mean [ i ] [ k ]= U1 [ i ] [ k´1] ;1640 }16411642 e l s e i f ( fabs ( x_point [ k ] )<=D /2 .0 && fabs ( y_point [ i ] )<=D / 2 . 0 )1643 {1644 U_mean [ i ] [ k ]=0;1645 }16461647 e l s e1648 {1649 U_mean [ i ] [ k ]=0 .5∗ ( U1 [ i ] [ k ]+ U1 [ i ] [ k´1]) ;1650 }1651 }1652 }16531654 f o r ( i n t i =0; i<=nodes_y +1; i++)1655 {1656 f o r ( i n t k =0; k<=nodes_x +1; k++)1657 {1658 i f ( i==0)1659 {1660 V_mean [ i ] [ k ]=0;1661 }16621663 e l s e i f ( i==nodes_y +1)1664 {1665 V_mean [ i ] [ k ]=0;1666 }16671668 e l s e i f ( k==0)1669 {1670 V_mean [ i ] [ k ]=0;1671 }16721673 e l s e i f ( k==nodes_x +1)1674 {1675 V_mean [ i ] [ k ]= V1 [ i ] [ k ] ;1676 }16771678 e l s e i f ( fabs ( x_point [ k ] )<=D /2 .0 && fabs ( y_point [ i ] )<=D / 2 . 0 )1679 {1680 V_mean [ i ] [ k ]=0;1681 }16821683 e l s e1684 {1685 V_mean [ i ] [ k ]=0 .5∗ ( V1 [ i ] [ k ]+ V1 [ i´1] [ k ] ) ;1686 }1687 }1688 }
90
16891690 f o r ( i n t i =0; i<=nodes_y +1; i++)1691 {1692 f o r ( i n t k =0; k<=nodes_x +1; k++)1693 {1694 m e a n _ v e l o c i t y [ i ] [ k ]= sqrt ( pow ( U_mean [ i ] [ k ] , 2 )+pow ( V_mean [ i ] [ k ] , 2 ) ) ;1695 }1696 }16971698 // This part i s only used to make an animation of the vortex shedding in paraview16991700 // str ingstream ss ;1701 // ofstream f i l e ;1702 // ss <<"Flow_around_square_cylinder_mean_velocity"<<i t e r a t i o n s <<".dat " ;1703 // f i l e . open ( ss . s t r () . c_str () ) ;1704 // i f ( f i l e . is_open () )1705 //{1706 // cout <<"F i l e opened s u c c e s s f u l l y \n " ;1707 //}1708 //1709 // e l s e1710 //1711 //{1712 // cout <<"Error saving data , c l o s e Excel \n " ;1713 // e x i t (1) ;1714 //}1715 //1716 // cout <<"Saving data \n " ;1717 // f i l e <<"TITLE = \"FLOW AROUND SQUARE CYLINDER\ " " ;1718 // f i l e <<"\n " ;1719 // f i l e <<"VARIABLES = \"X\" , \"Y\" , \"U\ " " ;1720 // f i l e <<"\n " ;1721 // f i l e <<"ZONE=\"Domain\" , I =";1722 // f i l e <<nodes_x+2;1723 // f i l e <<",";1724 // f i l e <<"J= " ;1725 // f i l e <<nodes_y+2;1726 // f i l e <<"\n " ;1727 //1728 //1729 // f o r ( i n t i =0; i<=nodes_y+1; i++)1730 //{1731 //1732 // f o r ( i n t k=0; k<=nodes_x+1; k++){1733 //1734 //1735 //1736 // f i l e <<x_point [ k ] ;1737 // f i l e <<" " ;1738 // f i l e <<y_point [ i ] ;1739 // f i l e <<" " ;1740 // f i l e <<mean_velocity [ i ] [ k ] ;1741 // f i l e <<" " ;1742 // f i l e <<"\n " ;1743 //1744 //1745 // }1746 //1747 //}1748 }