Top Banner
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
92

Numericalstudyofthe Navier-Stokesequationsusingthe ...

Mar 27, 2022

Download

Documents

dariahiddleston
Welcome message from author
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
Page 1: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 2: Numericalstudyofthe Navier-Stokesequationsusingthe ...

Contents1 2D Heat conduction code 2

2 Potential flow around a rotating and non-rotating cylinder code 12

3 Convection-Diffussion equation code 263.1 UDS, CDS & EDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.2 QUICK & SUDS with non-dimensional values (Deferred correction approach) . . . 36

4 Incompressibe Navier-Stokes equations: Lid-driven cavity code 48

5 Laminar flow around a square cylinder 67

1

Page 3: Numericalstudyofthe Navier-Stokesequationsusingthe ...

1 2D Heat conduction 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 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

Page 4: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 5: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 6: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 7: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 8: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 9: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 10: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 11: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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 ] .Ðâ

x_point ∗1000) ==650)602 {603 file<<t ;604 file<<" , " ;605 file <<(node_matrix [ i ] [ k ] . T1´273) ;606 file<<" \n" ;607 }608 }609 }610611 error =10;

10

Page 12: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 13: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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 , Ðâ

dy2 , dx3 , dy3 , rho0 =1.225 , P0 =101325 , T0 =293;14 double V0 =10, sigma =0.0000001 , error , error_iteration , error_circulation , Ðâ

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+Ðâ

nodes_x3 ] , double &dx1 , double &dx2 , double &dx3 , double &dy1 , double &dy2 , double Ðâ

&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+Ðâ

nodes_x2+nodes_x3 ] , double rho0 ) ;27 void solver ( node node_matrix [ nodes_y1+nodes_y2+nodes_y3 ] [ nodes_x1+nodes_x2+nodes_x3 ] , Ðâ

double &psi_cilindre , double error_iteration , double error , double &Ðâ

error_circulation , double rho0 , double sigma , double V0 , double x_center , double Ðâ

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

Page 14: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 15: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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+Ðâ

nodes_x3 ] , double &dx1 , double &dx2 , double &dx3 , double &dy1 , double &dy2 , double Ðâ

&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

Page 16: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 17: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 18: Numericalstudyofthe Navier-Stokesequationsusingthe ...

] . 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

Page 19: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 20: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 21: Numericalstudyofthe Navier-Stokesequationsusingthe ...

+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

Page 22: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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 ] , Ðâ

double &psi_cilindre , double error_iteration , double error , double &Ðâ

error_circulation , double rho0 , double sigma , double V0 , double x_center , double Ðâ

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

Page 23: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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 ] [Ðâ

nodes_x1 ] . psi´node_matrix [ i ] [ nodes_x1 ´1] . psi ) /( node_matrix [ i ] [ nodes_x1 ] .Ðâ

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

Page 24: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 25: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 26: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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Ðâ

] . y_point´y /2) , ( node_matrix [ i ] [ k ] . x_point´x /2) ) ;786 }787 }788 }789 }790 }791 }

25

Page 27: Numericalstudyofthe Navier-Stokesequationsusingthe ...

3 Convection-Diffussion equation code3.1 UDS, CDS & EDS

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

Page 28: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 29: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 30: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 31: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 32: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 33: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 34: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 35: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 36: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 37: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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 ,Ðâ

Dn , Ds , Dw , fe , fn ;24 double fw , fs , Xde , Xce_adim , Xce , Xue , PHIeUPWIND , PHIUe , PHICe , PHIDe , Xdw , Ðâ

Xcw_adim , Xcw , Xuw , PHIwUPWIND , PHIUw , PHICw , PHIDw , Xdn , Xcn_adim , Xcn , Xun , Ðâ

PHInUPWIND , PHIUn , PHICn , PHIDn ;25 double Xds , Xcs_adim , Xcs , Xus , PHIsUPWIND , PHIUs , PHICs , PHIDs , Xe , Xw , Xn , Xs , Ðâ

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

Page 38: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 39: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 40: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 41: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 42: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 43: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 44: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 45: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 46: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 47: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

46

Page 48: Numericalstudyofthe Navier-Stokesequationsusingthe ...

732 }733734 }

47

Page 49: Numericalstudyofthe Navier-Stokesequationsusingthe ...

4 Incompressibe Navier-Stokes equations: Lid-driven cav-ity code

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Ðâ

[ nodes_y +1] [ nodes_x +2] , V1 [ nodes_y +1] [ nodes_x +2] , Vp [ nodes_y +1] [ nodes_x +2] , P0 [Ðâ

nodes_y +2] [ nodes_x +2] ,28 P1 [ nodes_y +2] [ nodes_x +2] , vel [ nodes_y +2] [ nodes_x +2] , ae [ nodes_y +2] [ nodes_x +2] , aw [Ðâ

nodes_y +2] [ nodes_x +2] , an [ nodes_y +2] [ nodes_x +2] , as [ nodes_y +2] [ nodes_x +2] , bp [Ðâ

nodes_y +2] [ nodes_x +2] ,29 ap [ nodes_y +2] [ nodes_x +2] , Rn_x [ nodes_y +2] [ nodes_x +1] , Rn_x_ant [ nodes_y +2] [ nodes_x +1] , Ðâ

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<Ðâ

double>& x_point , vector<double>& y_point , double &dx , double &dy , double x , doubleÐâ

y ,33 double rho0 , double mu , double D ) ;3435 void initial_map ( vector<double>& X , vector<double>& Y , vector<double>& x_point , vectorÐâ

<double>& y_point , double U0 [ nodes_y +2] [ nodes_x +1] , double U1 [ nodes_y +2] [ nodes_xÐâ

+1] ,36 double V0 [ nodes_y +1] [ nodes_x +2] , double V1 [ nodes_y +1] [ nodes_x +2] , double P0 [ nodes_y +2] [Ðâ

nodes_x +2] , double P1 [ nodes_y +2] [ nodes_x +2]) ;3738 double SMART ( double Xd , double Xu , double Xc , double Phid , double Phiu , double Phic , Ðâ

double Xf , double phi_upwind ) ;3940 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 , Ðâ

double mu ,41 double U0 [ nodes_y +2] [ nodes_x +1] , double V0 [ nodes_y +1] [ nodes_x +2] , double Rn_x [ nodes_yÐâ

+2] [ nodes_x +1] , double Rn_x_ant [ nodes_y +2] [ nodes_x +1] , double time , double Delta_t ,Ðâ

i n t c o n v e c t i o n _ i n d e x ) ;4243 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 , Ðâ

double mu ,44 double U0 [ nodes_y +2] [ nodes_x +1] , double V0 [ nodes_y +1] [ nodes_x +2] , double Rn_y [ nodes_yÐâ

+1] [ nodes_x +2] , double Rn_y_ant [ nodes_y +1] [ nodes_x +2] , double time , double Delta_t ,Ðâ

i n t c o n v e c t i o n _ i n d e x ) ;4546 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 , Ðâ

vector<double> y_point , double Vp [ nodes_y +1] [ nodes_x +2] , double P0 [ nodes_y +2] [Ðâ

nodes_x +2] ,47 double P1 [ nodes_y +2] [ nodes_x +2] , double ae [ nodes_y +2] [ nodes_x +2] , double aw [ nodes_y +2] [Ðâ

nodes_x +2] , double an [ nodes_y +2] [ nodes_x +2] , double as [ nodes_y +2] [ nodes_x +2] ,48 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 ) ;

48

Page 50: Numericalstudyofthe Navier-Stokesequationsusingthe ...

4950 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 ,Ðâ

vector<double> y_point , double Vp [ nodes_y +1] [ nodes_x +2] , double P0 [ nodes_y +2] [Ðâ

nodes_x +2] ,51 double P1 [ nodes_y +2] [ nodes_x +2] , double ae [ nodes_y +2] [ nodes_x +2] , double aw [ nodes_y +2] [Ðâ

nodes_x +2] , double an [ nodes_y +2] [ nodes_x +2] , double as [ nodes_y +2] [ nodes_x +2] ,52 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 ) ;5354 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 , Ðâ

vector<double> y_point , double V1 [ nodes_y +1] [ nodes_x +2] , double U1 [ nodes_y +2] [Ðâ

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

Page 51: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 52: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 53: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 54: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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Ðâ

<double>& y_point , double U0 [ nodes_y +2] [ nodes_x +1] , double U1 [ nodes_y +2] [ nodes_xÐâ

+1] ,382 double V0 [ nodes_y +1] [ nodes_x +2] , double V1 [ nodes_y +1] [ nodes_x +2] , double P0 [ nodes_y +2] [Ðâ

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;

53

Page 55: Numericalstudyofthe Navier-Stokesequationsusingthe ...

419420 }421 }422 }423424 double UPWIND ( double Xd , double Xu , double Xc , double Phid , double Phiu , double Phic , Ðâ

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 , Ðâ

double mu ,

54

Page 56: Numericalstudyofthe Navier-Stokesequationsusingthe ...

490 double U0 [ nodes_y +2] [ nodes_x +1] , double V0 [ nodes_y +1] [ nodes_x +2] , double Rn_x [ nodes_yÐâ

+2] [ nodes_x +1] , double Rn_x_ant [ nodes_y +2] [ nodes_x +1] , double time , double Delta_t ,Ðâ

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

Page 57: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 58: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 59: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 60: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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 , Ðâ

double mu ,783 double U0 [ nodes_y +2] [ nodes_x +1] , double V0 [ nodes_y +1] [ nodes_x +2] , double Rn_y [ nodes_yÐâ

+1] [ nodes_x +2] , double Rn_y_ant [ nodes_y +1] [ nodes_x +2] , double time , double Delta_t ,Ðâ

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

Page 61: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 62: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 63: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 64: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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 , Ðâ

vector<double> y_point , double Vp [ nodes_y +1] [ nodes_x +2] , double P0 [ nodes_y +2] [Ðâ

nodes_x +2] ,1075 double P1 [ nodes_y +2] [ nodes_x +2] , double ae [ nodes_y +2] [ nodes_x +2] , double aw [ nodes_y +2] [Ðâ

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

Page 65: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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 ,Ðâ

vector<double> y_point , double Vp [ nodes_y +1] [ nodes_x +2] , double P0 [ nodes_y +2] [Ðâ

nodes_x +2] ,1168 double P1 [ nodes_y +2] [ nodes_x +2] , double ae [ nodes_y +2] [ nodes_x +2] , double aw [ nodes_y +2] [Ðâ

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

Page 66: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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 , Ðâ

vector<double> y_point , double V1 [ nodes_y +1] [ nodes_x +2] , double U1 [ nodes_y +2] [Ðâ

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

Page 67: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 68: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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] , Ðâ

mu_x [ nodes_y +2] [ nodes_x +1] , V0 [ nodes_y +1] [ nodes_x +2] , V1 [ nodes_y +1] [ nodes_x +2] ;34 double Vp [ nodes_y +1] [ nodes_x +2] , mu_y [ nodes_y +1] [ nodes_x +2] , P0 [ nodes_y +2] [ nodes_x +2] , Ðâ

P1 [ nodes_y +2] [ nodes_x +2] , U_mean [ nodes_y +2] [ nodes_x +2] , ae [ nodes_y +2] [ nodes_x +2] ;35 double aw [ nodes_y +2] [ nodes_x +2] , an [ nodes_y +2] [ nodes_x +2] , as [ nodes_y +2] [ nodes_x +2] , bpÐâ

[ nodes_y +2] [ nodes_x +2] , ap [ nodes_y +2] [ nodes_x +2] , Rn_x [ nodes_y +2] [ nodes_x +1] ;36 double Rn_x_ant [ nodes_y +2] [ nodes_x +1] , Rn_y [ nodes_y +1] [ nodes_x +2] , Rn_y_ant [ nodes_y +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 +1] , mu_sx [ nodes_y +2] [ nodes_x +1] , mu_ey [ nodes_y +1] [ nodes_x +2] ;38 double mu_wy [ nodes_y +1] [ nodes_x +2] , mu_ny [ nodes_y +1] [ nodes_x +2] , mu_sy [ nodes_y +1] [Ðâ

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 , Ðâ

vector<double>& y_point , double mu_x [ nodes_y +2] [ nodes_x +1] , double mu_y [ nodes_y +1] [Ðâ

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_x +1] ,47 double mu_ex [ nodes_y +2] [ nodes_x +1] , double mu_wx [ nodes_y +2] [ nodes_x +1] , double mu_nx [Ðâ

nodes_y +2] [ nodes_x +1] , double mu_sx [ nodes_y +2] [ nodes_x +1] , double mu_y [ nodes_y +1] [Ðâ

nodes_x +2] ,48 double mu_ey [ nodes_y +1] [ nodes_x +2] , double mu_wy [ nodes_y +1] [ nodes_x +2] , double mu_ny [Ðâ

nodes_y +1] [ nodes_x +2] , double mu_sy [ nodes_y +1] [ nodes_x +2]) ;4950 void initial_map ( vector<double>& X , vector<double>& Y , vector<double>& x_point , vectorÐâ

<double>& y_point , double U0 [ nodes_y +2] [ nodes_x +1] ,51 double U1 [ nodes_y +2] [ nodes_x +1] , double V0 [ nodes_y +1] [ nodes_x +2] , double V1 [ nodes_y +1] [Ðâ

nodes_x +2] , double P0 [ nodes_y +2] [ nodes_x +2] , double P1 [ nodes_y +2] [ nodes_x +2]) ;5253 double SMART ( double Xd , double Xu , double Xc , double Phid , double Phiu , double Phic , Ðâ

double Xf , double phi_upwind ) ;5455 void R u _ c a l c u l a t i o n ( vector<double>& X , vector<double>& Y , vector<double>& x_point ,

67

Page 69: Numericalstudyofthe Navier-Stokesequationsusingthe ...

56 vector<double>& y_point , double &dx , double &dy , double x , double y , double rho0 , Ðâ

double mu ,57 double U0 [ nodes_y +2] [ nodes_x +1] , double V0 [ nodes_y +1] [ nodes_x +2] , double Rn_x [ nodes_yÐâ

+2] [ nodes_x +1] ,58 double Rn_x_ant [ nodes_y +2] [ nodes_x +1] , double time , double Delta_t , i n t Ðâ

convection_index , double mu_x [ nodes_y +2] [ nodes_x +1] , double mu_ex [ nodes_y +2] [Ðâ

nodes_x +1] ,59 double mu_wx [ nodes_y +2] [ nodes_x +1] , double mu_nx [ nodes_y +2] [ nodes_x +1] , double mu_sx [Ðâ

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 , Ðâ

double mu ,63 double U0 [ nodes_y +2] [ nodes_x +1] , double V0 [ nodes_y +1] [ nodes_x +2] ,64 double Rn_y [ nodes_y +1] [ nodes_x +2] , double Rn_y_ant [ nodes_y +1] [ nodes_x +2] , double time , Ðâ

double Delta_t , i n t convection_index , double mu_y [ nodes_y +1] [ nodes_x +2] ,65 double mu_ey [ nodes_y +1] [ nodes_x +2] , double mu_wy [ nodes_y +1] [ nodes_x +2] , double mu_ny [Ðâ

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Ðâ

+2] , double P1 [ nodes_y +2] [ nodes_x +2] ,69 double ae [ nodes_y +2] [ nodes_x +2] , double aw [ nodes_y +2] [ nodes_x +2] , double an [ nodes_y +2] [Ðâ

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Ðâ

+2] , double P1 [ nodes_y +2] [ nodes_x +2] ,74 double ae [ nodes_y +2] [ nodes_x +2] , double aw [ nodes_y +2] [ nodes_x +2] , double an [ nodes_y +2] [Ðâ

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Ðâ

+1] ,82 double P1 [ nodes_y +2] [ nodes_x +2] , vector <double>&Cd , vector <double>&Cl , double Ðâ

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] , Ðâ

double U_mean [ nodes_y +2] [ nodes_x +2] ,85 double V_mean [ nodes_y +2] [ nodes_x +2] , double D , vector<double> y_point , vector<double> Ðâ

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 , Ðâ

Rn_y_ant , time , Delta_t , convection_index , mu_y , mu_ey , mu_wy , mu_ny , mu_sy ) ;

68

Page 70: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 71: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 72: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 73: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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<Ðâ

double>& x_point , vector<double>& y_point , double &dx , double &dy , double x , doubleÐâ

y , double rho0 , double mu , double D )412 {413 double min_delta_x =100;414 double min_delta_y =100;

72

Page 74: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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 , Ðâ

vector<double>& y_point , double mu_x [ nodes_y +2] [ nodes_x +1] , double mu_y [ nodes_y +1] [Ðâ

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

Page 75: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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>& Ðâ

x_point ,519 vector<double>& y_point , double x , double y , double mu_x [ nodes_y +2] [ nodes_x +1] , double Ðâ

mu_ex [ nodes_y +2] [ nodes_x +1] ,520 double mu_wx [ nodes_y +2] [ nodes_x +1] , double mu_nx [ nodes_y +2] [ nodes_x +1] , double mu_sx [Ðâ

nodes_y +2] [ nodes_x +1] ,521 double mu_y [ nodes_y +1] [ nodes_x +2] , double mu_ey [ nodes_y +1] [ nodes_x +2] , double mu_wy [Ðâ

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Ðâ

<double>& y_point , double U0 [ nodes_y +2] [ nodes_x +1] ,550 double U1 [ nodes_y +2] [ nodes_x +1] , double V0 [ nodes_y +1] [ nodes_x +2] , double V1 [ nodes_y +1] [Ðâ

nodes_x +2] , double P0 [ nodes_y +2] [ nodes_x +2] , double P1 [ nodes_y +2] [ nodes_x +2])551 {552

74

Page 76: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 77: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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 , Ðâ

double mu ,667 double U0 [ nodes_y +2] [ nodes_x +1] , double V0 [ nodes_y +1] [ nodes_x +2] , double Rn_x [ nodes_yÐâ

+2] [ nodes_x +1] ,668 double Rn_x_ant [ nodes_y +2] [ nodes_x +1] , double time , double Delta_t , i n t Ðâ

convection_index , double mu_x [ nodes_y +2] [ nodes_x +1] , double mu_ex [ nodes_y +2] [Ðâ

nodes_x +1] ,669 double mu_wx [ nodes_y +2] [ nodes_x +1] , double mu_nx [ nodes_y +2] [ nodes_x +1] , double mu_sx [Ðâ

nodes_y +2] [ nodes_x +1])670671 {672 double me , mw , mn , ms , xd , xu , xc , phic , phid , phiu , PHIeHRS , PHIwHRS , PHInHRS , Ðâ

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

Page 78: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 79: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 80: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 81: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 82: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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 , Ðâ

double mu ,988 double U0 [ nodes_y +2] [ nodes_x +1] , double V0 [ nodes_y +1] [ nodes_x +2] ,989 double Rn_y [ nodes_y +1] [ nodes_x +2] , double Rn_y_ant [ nodes_y +1] [ nodes_x +2] , double time , Ðâ

double Delta_t , i n t convection_index , double mu_y [ nodes_y +1] [ nodes_x +2] ,990 double mu_ey [ nodes_y +1] [ nodes_x +2] , double mu_wy [ nodes_y +1] [ nodes_x +2] , double mu_ny [Ðâ

nodes_y +1] [ nodes_x +2] , double mu_sy [ nodes_y +1] [ nodes_x +2])991992 {993 double me , mw , mn , ms , xd , xu , xc , phic , phid , phiu , PHIeHRS , PHIwHRS , PHInHRS , Ðâ

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

Page 83: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 84: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 85: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 86: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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Ðâ

+2] , double P1 [ nodes_y +2] [ nodes_x +2] ,1313 double ae [ nodes_y +2] [ nodes_x +2] , double aw [ nodes_y +2] [ nodes_x +2] , double an [ nodes_y +2] [Ðâ

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

Page 87: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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Ðâ

+2] , double P1 [ nodes_y +2] [ nodes_x +2] ,1400 double ae [ nodes_y +2] [ nodes_x +2] , double aw [ nodes_y +2] [ nodes_x +2] , double an [ nodes_y +2] [Ðâ

nodes_x +2] , double as [ nodes_y +2] [ nodes_x +2] ,

86

Page 88: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 89: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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Ðâ

+1] ,1534 double P1 [ nodes_y +2] [ nodes_x +2] , vector <double>&Cd , vector <double>&Cl , double Ðâ

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

Page 90: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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

Page 91: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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] , Ðâ

double U_mean [ nodes_y +2] [ nodes_x +2] ,1616 double V_mean [ nodes_y +2] [ nodes_x +2] , double D , vector<double> y_point , vector<double> Ðâ

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

Page 92: Numericalstudyofthe Navier-Stokesequationsusingthe ...

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 }

91