-- FreeFem++ v4.6 (Thu Apr 2 15:47:38 CEST 2020 - git v4.6) Load: lg_fem lg_mesh lg_mesh3 eigenvalue 1 : // channel_navier_stokes.edp 2 : // 3 : // Discussion: 4 : // 5 : // Solve the Navier-Stokes equations. 6 : // 7 : // Location: 8 : // 9 : // http://people.sc.fsu.edu/~jburkardt/freefem_src/channel_navier_stokes/channel_navier_stokes.edp 10 : // 11 : // Modified: 12 : // 13 : // 20 June 2015 14 : // 15 : // Author: 16 : // 17 : // Florian De Vuyst 18 : // 19 : // Reference: 20 : // 21 : // Numerical modeling of transport problems using freefem++ software - 22 : // with examples in biology, CFD, traffic flow and energy transfer, 23 : // HAL id: cel-00842234 24 : // https://cel.archives-ouvertes.fr/cel-00842234 25 : // 26 : cout << "\n"; 27 : cout << "channel_navier_stokes:\n"; 28 : cout << " FreeFem++ version\n"; 29 : cout << " Simulate flow in a channel with a circular obst ... : ruction,\n"; 30 : cout << " using the Navier-Stokes equations.\n"; 31 : 32 : real Re = 600.0; 33 : real nu = 1.0 / Re; 34 : real Lx = 12.0; 35 : real Ly = 5.0; 36 : real dt = 0.5; 37 : // 38 : // Set the border. 39 : // 40 : border c1 ( t=0,1) {x=t*Lx; y=0;} 41 : border c2 ( t=0,1) {x=Lx; y=t*Ly;} 42 : border c3 ( t=1,0) {x=t*Lx; y=Ly;} 43 : border c4 ( t=1,0) {x=0; y=t*Ly;} 44 : border c5 ( t=2*pi,0) {x=4+0.2*cos(t); y=Ly/2+0.2*sin(t);} 45 : border c6 ( t=0,1) {x=5+Lx/2*t; y=Ly/2+0.4;} 46 : border c7 ( t=0,1) {x=5+Lx/2*t; y=Ly/2-0.4;} 47 : // 48 : // Create the mesh. 49 : // 50 : mesh Th = buildmesh 51 : ( 52 : c1(80)+c2(40)+c3(80)+c4(20)+c5(60)+c6(100)+c7(100) 53 : ); 54 : plot ( Th, ps = "channel_navier_stokes_mesh.ps" ); 55 : // 56 : // Define the finite element spaces for velocity and pressure. 57 : // 58 : fespace Uh(Th, P2); 59 : fespace Vh(Th, P1); 60 : Uh u; 61 : Uh v; 62 : Uh uh; 63 : Uh vh; 64 : Uh uold; 65 : Uh vold; 66 : Vh p; 67 : Vh ph; 68 : Vh uplot; 69 : Vh vplot; 70 : Vh vort; 71 : // 72 : // Set up the steady Stokes equations. 73 : // 74 : real eps = 1.0e-10; 75 : 76 : problem steadystokes([u,v,p], [uh,vh,ph]) = 77 : int2d(Th) ( nu*dx(u)*dx(uh) + nu*dy(u)*dy(uh) ) 78 : + int2d(Th) (nu*dx(v)*dx(vh) + nu*dy(v)*dy(vh) ) 79 : - int2d(Th) (p*dx(uh)) 80 : - int2d(Th) (p*dy(vh)) 81 : - int1d(Th, c2) (nu*dx(u)*N.x*uh+nu*dy(u)*N.y*uh) 82 : - int1d(Th, c2) (nu*dx(v)*N.x*vh+nu*dy(v)*N.y*vh) 83 : + int2d(Th) (dx(u)*ph + dy(v)*ph) 84 : + int2d(Th) (eps*p*ph) 85 : + on ( c1, c3, c5, u=0.0, v=0.0 ) 86 : + on ( c4, u=4.0 * y/Ly * (1.0-y/Ly), v=0 ); 87 : // 88 : // Solve the steady Stokes equations. 89 : // 90 : steadystokes; 91 : // 92 : // Plot the velocity and vorticity fields. 93 : // 94 : uplot = u; 95 : vplot = v; 96 : plot ( Th, [uplot,vplot], nbiso=40, value=1, 97 : ps = "channel_navier_stokes_velocity_0.ps" ); 98 : vort = dy ( u ) - dx ( v ); 99 : plot ( vort, nbiso=60, fill=0, ps="channel_navier_stokes_vorticity_0.ps" ); 100 : // 101 : // Set up the unsteady Navier−Stokes equations. 102 : // 103 : int it = 0; 104 : uold = u; 105 : vold = v; 106 : 107 : problem ChannelNavierStokes ( [u,v,p], [uh,vh,ph], init=it, solver = sparsesolver ) = 108 : int2d(Th) (u*uh/dt) 109 : - int2d(Th) (convect([uold,vold], -dt, uold)*uh/dt) 110 : + int2d(Th) (v*vh/dt) 111 : - int2d(Th) (convect([uold,vold], -dt, vold)*vh/dt) 112 : + int2d(Th) ( nu*dx(u)*dx(uh) + nu*dy(u)*dy(uh) ) 113 : + int2d(Th) (nu*dx(v)*dx(vh) + nu*dy(v)*dy(vh) ) 114 : - int2d(Th) (p*dx(uh)) 115 : - int2d(Th) (p*dy(vh)) 116 : - int1d(Th, c2) (nu*dx(u)*N.x*uh+nu*dy(u)*N.y*uh) 117 : - int1d(Th, c2) (nu*dx(v)*N.x*vh+nu*dy(v)*N.y*vh) 118 : + int2d(Th) (dx(u)*ph + dy(v)*ph) 119 : + int2d(Th) (eps*p*ph) 120 : + on ( c1, c3, c5, u=0, v=0) 121 : + on ( c4, u=4.0 * y/Ly * (1-y/Ly), v=0); 122 : // 123 : // Carry out 20 iterations, possibly adapting the mesh. 124 : // 125 : for ( it = 1; it <= 20; it++ ) 126 : { 127 : for ( int subit = 0; subit < 5; subit++ ) 128 : { 129 : ChannelNavierStokes; 130 : // 131 : // Possibility of adapting the mesh. 132 : // 133 : // Th = adaptmesh(Th, [u,v]); 134 : // u = u; 135 : // v = v; 136 : 137 : uold = u; 138 : vold = v; 139 : } 140 : // 141 : // Display the velocity and vorticity. 142 : // 143 : uplot = u; 144 : vplot = v; 145 : vort = dy ( u ) - dx ( v ); 146 : plot ( Th, [uplot, vplot], nbiso=60 ); 147 : plot ( vort, nbiso=60, fill=0 ); 148 : // 149 : // Plot the velocity and vorticity in files. 150 : // 151 : if ( ( it % 5 ) == 0 ) 152 : { 153 : uplot = u; 154 : vplot = v; 155 : plot ( Th, [uplot, vplot], nbiso=60, 156 : ps="channel_navier_stokes_velocity_"+it+".ps" ); 157 : vort = dy ( u ) - dx ( v ); 158 : plot(vort, nbiso=60, fill=0, ps="channel_navier_stokes_vorticity_"+it+".ps" ); 159 : } 160 : } 161 : // 162 : // Terminate. 163 : // 164 : cout << "\n"; 165 : cout << "channel_navier_stokes:\n"; 166 : cout << " Normal end of execution.\n"; 167 : 168 : sizestack + 1024 =8560 ( 7536 ) channel_navier_stokes: FreeFem++ version Simulate flow in a channel with a circular obstruction, using the Navier-Stokes equations. -- mesh: Nb of Triangles = 16814, Nb of Vertices 8547 -- Solve : min -3.46506e-34 max 1.02772 min -0.251782 max 0.251782 min -0.00431818 max 0.0166723 -- Solve : min -0.072762 max 1.01277 min -0.293224 max 0.293101 min -0.194529 max 0.115449 -- Solve : min -0.0920132 max 1.0002 min -0.386463 max 0.386738 min -0.172368 max 0.235142 -- Solve : min -0.100641 max 1.00032 min -0.446173 max 0.446516 min -0.181362 max 0.314836 -- Solve : min -0.125447 max 1.02675 min -0.479687 max 0.480008 min -0.187343 max 0.35652 -- Solve : min -0.154102 max 1.07478 min -0.498363 max 0.498621 min -0.191156 max 0.377983 -- Solve : min -0.177626 max 1.10252 min -0.509193 max 0.509376 min -0.194174 max 0.389551 -- Solve : min -0.197403 max 1.11903 min -0.515716 max 0.515882 min -0.196182 max 0.396294 -- Solve : min -0.21392 max 1.12855 min -0.519301 max 0.519366 min -0.196842 max 0.400287 -- Solve : min -0.228479 max 1.13254 min -0.521052 max 0.521114 min -0.196332 max 0.402503 -- Solve : min -0.240838 max 1.13427 min -0.521841 max 0.521943 min -0.195397 max 0.403931 -- Solve : min -0.25148 max 1.13455 min -0.522062 max 0.522216 min -0.194037 max 0.404898 -- Solve : min -0.259728 max 1.13389 min -0.521951 max 0.522148 min -0.192507 max 0.405501 -- Solve : min -0.265727 max 1.13269 min -0.521659 max 0.521867 min -0.190994 max 0.405801 -- Solve : min -0.270173 max 1.13119 min -0.521274 max 0.521463 min -0.189714 max 0.40576 -- Solve : min -0.273238 max 1.1297 min -0.520842 max 0.520994 min -0.188702 max 0.40543 -- Solve : min -0.275393 max 1.12816 min -0.520387 max 0.520501 min -0.187908 max 0.404922 -- Solve : min -0.276295 max 1.12662 min -0.519925 max 0.520015 min -0.187462 max 0.404114 -- Solve : min -0.276553 max 1.12509 min -0.519461 max 0.519554 min -0.187605 max 0.402817 -- Solve : min -0.276313 max 1.12361 min -0.519001 max 0.519132 min -0.188495 max 0.40087 -- Solve : min -0.275631 max 1.12217 min -0.518548 max 0.518751 min -0.190063 max 0.398358 -- Solve : min -0.274602 max 1.12094 min -0.518111 max 0.518407 min -0.191902 max 0.395638 -- Solve : min -0.273439 max 1.1198 min -0.517704 max 0.518088 min -0.193546 max 0.393203 -- Solve : min -0.272084 max 1.1187 min -0.517336 max 0.517777 min -0.194789 max 0.391045 -- Solve : min -0.270819 max 1.11761 min -0.517015 max 0.517466 min -0.195637 max 0.389323 -- Solve : min -0.269398 max 1.11654 min -0.516745 max 0.517154 min -0.196127 max 0.387963 -- Solve : min -0.268034 max 1.11572 min -0.516525 max 0.516843 min -0.196375 max 0.386883 -- Solve : min -0.266604 max 1.11495 min -0.516329 max 0.516545 min -0.196479 max 0.386011 -- Solve : min -0.265089 max 1.11417 min -0.516138 max 0.516275 min -0.196523 max 0.385307 -- Solve : min -0.263618 max 1.11337 min -0.515934 max 0.516046 min -0.196531 max 0.38476 -- Solve : min -0.262565 max 1.11253 min -0.515709 max 0.515865 min -0.196469 max 0.384382 -- Solve : min -0.261661 max 1.1119 min -0.515463 max 0.515728 min -0.196285 max 0.38419 -- Solve : min -0.260627 max 1.11141 min -0.515211 max 0.51562 min -0.195917 max 0.384193 -- Solve : min -0.259419 max 1.1109 min -0.514977 max 0.515514 min -0.195308 max 0.384399 -- Solve : min -0.25829 max 1.11031 min -0.514786 max 0.515383 min -0.194414 max 0.384757 -- Solve : min -0.257495 max 1.10963 min -0.514654 max 0.515209 min -0.19326 max 0.385263 -- Solve : min -0.256975 max 1.10889 min -0.514585 max 0.514986 min -0.191921 max 0.385879 -- Solve : min -0.256435 max 1.10863 min -0.514557 max 0.514735 min -0.19053 max 0.386574 -- Solve : min -0.255392 max 1.10831 min -0.514534 max 0.51449 min -0.189189 max 0.387323 -- Solve : min -0.25403 max 1.10786 min -0.514474 max 0.514296 min -0.188048 max 0.388098 -- Solve : min -0.253036 max 1.10723 min -0.51434 max 0.514186 min -0.187139 max 0.388884 -- Solve : min -0.252774 max 1.10662 min -0.514125 max 0.514169 min -0.186408 max 0.389671 -- Solve : min -0.252726 max 1.10662 min -0.51385 max 0.514223 min -0.18575 max 0.39044 -- Solve : min -0.251871 max 1.10657 min -0.513564 max 0.514298 min -0.185019 max 0.391174 -- Solve : min -0.249606 max 1.10633 min -0.513333 max 0.514327 min -0.184078 max 0.391858 -- Solve : min -0.248264 max 1.10581 min -0.513218 max 0.514251 min -0.182854 max 0.392511 -- Solve : min -0.24711 max 1.10502 min -0.513244 max 0.514044 min -0.181368 max 0.393129 -- Solve : min -0.248502 max 1.10476 min -0.513393 max 0.513722 min -0.179797 max 0.393693 -- Solve : min -0.248555 max 1.10507 min -0.513603 max 0.513352 min -0.179481 max 0.394239 -- Solve : min -0.245702 max 1.10512 min -0.513773 max 0.513029 min -0.179118 max 0.394593 -- Solve : min -0.247153 max 1.10475 min -0.513806 max 0.512858 min -0.178307 max 0.394918 -- Solve : min -0.245866 max 1.10391 min -0.513634 max 0.512907 min -0.177625 max 0.395235 -- Solve : min -0.242993 max 1.10364 min -0.51326 max 0.513174 min -0.178336 max 0.39553 -- Solve : min -0.242412 max 1.10454 min -0.512757 max 0.513589 min -0.179157 max 0.395736 -- Solve : min -0.24043 max 1.10519 min -0.512274 max 0.514006 min -0.179718 max 0.395796 -- Solve : min -0.240351 max 1.10526 min -0.511981 max 0.514256 min -0.17962 max 0.395769 -- Solve : min -0.236828 max 1.10456 min -0.512025 max 0.514199 min -0.178602 max 0.395779 -- Solve : min -0.232209 max 1.10319 min -0.512452 max 0.513787 min -0.176849 max 0.395855 -- Solve : min -0.229185 max 1.10481 min -0.513193 max 0.513099 min -0.178278 max 0.395857 -- Solve : min -0.229098 max 1.10659 min -0.514042 max 0.512346 min -0.180244 max 0.395637 -- Solve : min -0.228232 max 1.10754 min -0.514715 max 0.511821 min -0.18131 max 0.395268 -- Solve : min -0.220937 max 1.10727 min -0.51495 max 0.511801 min -0.180978 max 0.394889 -- Solve : min -0.210609 max 1.10579 min -0.51458 max 0.512461 min -0.179807 max 0.394768 -- Solve : min -0.208007 max 1.1076 min -0.513654 max 0.513764 min -0.184 max 0.394826 -- Solve : min -0.207374 max 1.11153 min -0.512467 max 0.51543 min -0.188282 max 0.394542 -- Solve : min -0.203537 max 1.11442 min -0.511524 max 0.516965 min -0.191559 max 0.393725 -- Solve : min -0.189321 max 1.11532 min -0.511402 max 0.517807 min -0.192633 max 0.392745 -- Solve : min -0.184984 max 1.11399 min -0.512531 max 0.517542 min -0.190661 max 0.39233 -- Solve : min -0.188981 max 1.11612 min -0.51498 max 0.51614 min -0.193438 max 0.392449 -- Solve : min -0.181869 max 1.12396 min -0.518223 max 0.514103 min -0.2013 max 0.392489 -- Solve : min -0.164928 max 1.12984 min -0.521189 max 0.512451 min -0.207393 max 0.391527 -- Solve : min -0.170859 max 1.13175 min -0.522683 max 0.512418 min -0.210225 max 0.389223 -- Solve : min -0.175471 max 1.1291 min -0.521884 max 0.514867 min -0.207115 max 0.387968 -- Solve : min -0.171259 max 1.13502 min -0.518985 max 0.519606 min -0.218272 max 0.38829 -- Solve : min -0.158669 max 1.14727 min -0.515431 max 0.525158 min -0.229921 max 0.389306 -- Solve : min -0.167475 max 1.15409 min -0.513527 max 0.529166 min -0.23583 max 0.389121 -- Solve : min -0.173961 max 1.15279 min -0.515247 max 0.529578 min -0.235427 max 0.384723 -- Solve : min -0.168664 max 1.14666 min -0.520979 max 0.525979 min -0.238852 max 0.381932 -- Solve : min -0.162939 max 1.16458 min -0.528803 max 0.520265 min -0.260934 max 0.38272 -- Solve : min -0.175185 max 1.1761 min -0.535125 max 0.515919 min -0.270917 max 0.384603 -- Solve : min -0.182252 max 1.17608 min -0.53671 max 0.516203 min -0.265526 max 0.38606 -- Solve : min -0.173398 max 1.16518 min -0.53264 max 0.522037 min -0.255381 max 0.379178 -- Solve : min -0.169413 max 1.17718 min -0.525058 max 0.531195 min -0.282121 max 0.375888 -- Solve : min -0.184385 max 1.19215 min -0.518421 max 0.53916 min -0.296599 max 0.377095 -- Solve : min -0.19244 max 1.1929 min -0.517034 max 0.54171 min -0.290054 max 0.380272 -- Solve : min -0.181556 max 1.17983 min -0.522375 max 0.537577 min -0.26938 max 0.381219 -- Solve : min -0.175 max 1.18374 min -0.532106 max 0.528965 min -0.295669 max 0.372649 -- Solve : min -0.191884 max 1.20086 min -0.541227 max 0.520761 min -0.316527 max 0.371109 -- Solve : min -0.200969 max 1.20304 min -0.544775 max 0.517898 min -0.312512 max 0.373548 -- Solve : min -0.187767 max 1.19016 min -0.540933 max 0.522389 min -0.287388 max 0.378098 -- Solve : min -0.177194 max 1.18619 min -0.531856 max 0.532005 min -0.293647 max 0.374012 -- Solve : min -0.194828 max 1.20498 min -0.522557 max 0.541645 min -0.320662 max 0.36858 -- Solve : min -0.202822 max 1.20885 min -0.518393 max 0.546035 min -0.319967 max 0.369876 -- Solve : min -0.193488 max 1.19617 min -0.521894 max 0.542865 min -0.295714 max 0.374531 -- Solve : min -0.179959 max 1.18519 min -0.531187 max 0.533989 min -0.294538 max 0.374112 -- Solve : min -0.195658 max 1.2052 min -0.541317 max 0.524196 min -0.32425 max 0.368509 -- Solve : min -0.205258 max 1.21103 min -0.546615 max 0.519024 min -0.326509 max 0.369465 -- Solve : min -0.196417 max 1.20002 min -0.544256 max 0.521513 min -0.304471 max 0.373512 -- Solve : min -0.179868 max 1.18361 min -0.535669 max 0.530238 min -0.288519 max 0.374537 -- Solve : min -0.192906 max 1.20464 min -0.525458 max 0.540458 min -0.319134 max 0.369642 -- Solve : min -0.206167 max 1.21236 min -0.519371 max 0.54647 min -0.324127 max 0.37042 channel_navier_stokes: Normal end of execution. times: compile 0.007221s, execution 90.7159s, mpirank:0 CodeAlloc : nb ptr 4343, size :524904 mpirank: 0 Ok: Normal End