FreeFem / FreeFem-sources

FreeFEM source code
https://freefem.org/
Other
746 stars 187 forks source link

The test LapEigenBeltrami.edp fails #281

Closed yurivict closed 1 year ago

yurivict commented 1 year ago
PASS: WGM-sphere.edp
Killed
FAIL: LapEigenBeltrami.edp
PASS: LapEigenValueFuncComplex.edp
============================================================================
Testsuite summary for FreeFEM 4.13
============================================================================
# TOTAL: 17
# PASS:  16
# SKIP:  0
# XFAIL: 0
# FAIL:  1
# XPASS: 0
# ERROR: 0
============================================================================
See examples/eigen/test-suite.log
Please report to frederic.hecht@sorbonne-universite.fr
============================================================================
[yuri@yv /usr/ports/math/freefem++]$ cat ./work/FreeFem-sources-4.13/examples/examples/test-suite.log
====================================================
   FreeFEM 4.13: examples/examples/test-suite.log
====================================================

# TOTAL: 21
# PASS:  21
# SKIP:  0
# XFAIL: 0
# FAIL:  0
# XPASS: 0
# ERROR: 0

.. contents:: :depth: 2

PASS: NSprojection.edp
======================

-- FreeFem++ v4.13 (Sun Jun 18 02:27:01 PDT 2023 - git 12.3-eol-9051-gfbb38d40688a)
   file : ./NSprojection.edp
 Load: lg_fem lg_mesh lg_mesh3 eigenvalue 
    1 : /****************************************************************************/
    2 : /* This file is part of FreeFEM.                                            */
    3 : /*                                                                          */
    4 : /* FreeFEM is free software: you can redistribute it and/or modify          */
    5 : /* it under the terms of the GNU Lesser General Public License as           */
    6 : /* published by the Free Software Foundation, either version 3 of           */
    7 : /* the License, or (at your option) any later version.                      */
    8 : /*                                                                          */
    9 : /* FreeFEM is distributed in the hope that it will be useful,               */
   10 : /* but WITHOUT ANY WARRANTY; without even the implied warranty of           */
   11 : /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            */
   12 : /* GNU Lesser General Public License for more details.                      */
   13 : /*                                                                          */
   14 : /* You should have received a copy of the GNU Lesser General Public License */
   15 : /* along with FreeFEM. If not, see <http://www.gnu.org/licenses/>.          */
   16 : /****************************************************************************/
   17 : // Author: F. Hecht
   18 : // (jul. 2014)
   19 : 
   20 : verbosity=0;
   21 : 
   22 : // Parameters
   23 : int n = 1;
   24 : real nu = 0.0025; // Reynolds=200
   25 : real dt = 0.2;
   26 : real epsv = 1e-6, epsu = 1e-6, epsp = 1e-6;// Eps CG ..
   27 : 
   28 : // Mesh
   29 : border a0(t=1, 0){x=-2; y=t; label=1;} // inlet
   30 : border a1(t=-2, 0){x=t; y=0; label=2;}
   31 : border a2(t=0, -0.5){x=0; y=t; label=2;}
   32 : border a3(t=0, 1){x=18*t^1.2; y=-0.5; label=2;}
   33 : border a4(t=-0.5, 1){x=18; y=t; label=3;} // outlet
   34 : border a5(t=1, 0){x=-2+20*t; y=1; label=4;}
   35 : 
   36 : mesh Th = buildmesh(a0(3*n) + a1(20*n) + a2(10*n) + a3(150*n) + a4(5*n) + a5(100*n));
   37 : plot(Th);
   38 : 
   39 : // Fespace
   40 : fespace Vh(Th, P1);
   41 : Vh w, u = 0, v = 0, p = 0, q = 0;
   42 : 
   43 : // Definitions of Matrix dtMx and dtMy
   44 : matrix dtM1x, dtM1y;
   45 : 
   46 : macro  BuildMat()
   47 #   { /* for memory managenemt */
   48 #     varf vM(unused, v) = int2d(Th)(v) ;
   49 #     varf vdx(u, v) = int2d(Th)(v*dx(u)*dt) ;
   50 #     varf vdy(u, v) = int2d(Th)(v*dy(u)*dt) ;
   51 # 
   52 #     real[int] Mlump = vM(0, Vh);
   53 #     real[int] one(Vh.ndof); one = 1;
   54 #     real[int] M1 = one ./ Mlump;
   55 #     matrix dM1 = M1;
   56 #     matrix Mdx = vdx(Vh, Vh);
   57 #     matrix Mdy = vdy(Vh, Vh);
   58 #     dtM1x = dM1*Mdx;
   59 #     dtM1y = dM1*Mdy;
   60 #   }//
   61 : 
   62 : BuildMat
   47 @    /* for memory managenemt */
   48 @          
   49 @          
   50 @          
   51 @ 
   52 @         
   53 @         
   54 @          
   55 @        
   56 @         
   57 @         
   58 @       
   59 @       
   60 @   
   47 @   { /* for memory managenemt */
   48 @     varf vM(unused, v) = int2d(Th)(v) ;
   49 @     varf vdx(u, v) = int2d(Th)(v*dx(u)*dt) ;
   50 @     varf vdy(u, v) = int2d(Th)(v*dy(u)*dt) ;
   51 @ 
   52 @     real[int] Mlump = vM(0, Vh);
   53 @     real[int] one(Vh.ndof); one = 1;
   54 @     real[int] M1 = one ./ Mlump;
   55 @     matrix dM1 = M1;
   56 @     matrix Mdx = vdx(Vh, Vh);
   57 @     matrix Mdy = vdy(Vh, Vh);
   58 @     dtM1x = dM1*Mdx;
   59 @     dtM1y = dM1*Mdy;
   60 @   }
   63 : 
   64 : real err = 1, outflux = 1;
   65 : for(int n = 0; n < 200; n++) {
   66 :   Vh uold = u, vold = v, pold = p;
   67 : 
   68 :   solve pb4u(u, w, init=n, solver=CG, eps=epsu)
   69 :     = int2d(Th)(
   70 :       u*w/dt + nu*(dx(u)*dx(w) + dy(u)*dy(w))
   71 :     )
   72 :     - int2d(Th)(
   73 :       (convect([uold, vold], -dt, uold)/dt - dx(p))*w
   74 :     )
   75 :     + on(1, u=4*y*(1-y))
   76 :     + on(2, 4, u=0);
   77 :   plot(u);
   78 : 
   79 :   solve pb4v(v, w, init=n, solver=CG, eps=epsv)
   80 :     = int2d(Th)(
   81 :       v*w/dt + nu*(dx(v)*dx(w) + dy(v)*dy(w))
   82 :     )
   83 :     - int2d(Th)(
   84 :       (convect([uold, vold], -dt, vold)/dt - dy(p))*w
   85 :     )
   86 :     + on(1, 2, 3, 4, v=0);
   87 : 
   88 :   solve pb4p(q, w, solver=CG, init=n, eps=epsp)
   89 :     = int2d(Th)(dx(q)*dx(w) + dy(q)*dy(w))
   90 :     - int2d(Th)((dx(u) + dy(v))*w/dt)
   91 :     + on(3, q=0);
   92 : 
   93 :   // to have absolute epsilon in CG algorithm.
   94 :   epsv = -abs(epsv);
   95 :   epsu = -abs(epsu);
   96 :   epsp = -abs(epsp);
   97 : 
   98 :   p = pold-q;
   99 :   u[] += dtM1x*q[];
  100 :   v[] += dtM1y*q[];
  101 : 
  102 :   if(n%50 == 49) {
  103 :     Th = adaptmesh(Th, [u, v], q, err=0.06, nbvx=100000);
  104 :     plot(Th, wait=true);
  105 :     BuildMat
   47 @    /* for memory managenemt */
   48 @          
   49 @          
   50 @          
   51 @ 
   52 @         
   53 @         
   54 @          
   55 @        
   56 @         
   57 @         
   58 @       
   59 @       
   60 @   
   47 @   { /* for memory managenemt */
   48 @     varf vM(unused, v) = int2d(Th)(v) ;
   49 @     varf vdx(u, v) = int2d(Th)(v*dx(u)*dt) ;
   50 @     varf vdy(u, v) = int2d(Th)(v*dy(u)*dt) ;
   51 @ 
   52 @     real[int] Mlump = vM(0, Vh);
   53 @     real[int] one(Vh.ndof); one = 1;
   54 @     real[int] M1 = one ./ Mlump;
   55 @     matrix dM1 = M1;
   56 @     matrix Mdx = vdx(Vh, Vh);
   57 @     matrix Mdy = vdy(Vh, Vh);
   58 @     dtM1x = dM1*Mdx;
   59 @     dtM1y = dM1*Mdy;
   60 @   } // rebuild mat.
  106 :   }
  107 : 
  108 :   err = sqrt(int2d(Th)(square(u - uold) + square(v - vold))/Th.area);
  109 :   outflux = int1d(Th)([u, v]'*[N.x, N.y]) ;
  110 :   cout << " iter " << n << " Err L2 = " << err << " - Outflow = " << outflux << endl;
  111 :   if (err < 1e-3) break;
  112 : }
  113 : assert(abs(outflux) < 5e-3); // verification
  114 : plot(p, wait=1, ps="NSprojP.eps");
  115 : plot(u, wait=1, ps="NSprojU.eps");
  116 :  sizestack + 1024 =6128  ( 5104 )

 iter 0 Err L2 = 0.412902 - Outflow = -0.303129
 iter 1 Err L2 = 0.203848 - Outflow = 0.25514
 iter 2 Err L2 = 0.0828513 - Outflow = -0.0879878
 iter 3 Err L2 = 0.0353802 - Outflow = 0.0352278
 iter 4 Err L2 = 0.0184947 - Outflow = 0.0250374
 iter 5 Err L2 = 0.0142365 - Outflow = 0.00462888
 iter 6 Err L2 = 0.011481 - Outflow = 0.00298143
 iter 7 Err L2 = 0.00961447 - Outflow = 0.00280103
 iter 8 Err L2 = 0.00848338 - Outflow = 0.00114685
 iter 9 Err L2 = 0.00762045 - Outflow = 0.00046799
 iter 10 Err L2 = 0.0069597 - Outflow = -0.00207433
 iter 11 Err L2 = 0.00645347 - Outflow = -0.00452253
 iter 12 Err L2 = 0.00607247 - Outflow = -0.00540617
 iter 13 Err L2 = 0.00575801 - Outflow = -0.0060026
 iter 14 Err L2 = 0.00547642 - Outflow = -0.00680611
 iter 15 Err L2 = 0.00524095 - Outflow = -0.00732275
 iter 16 Err L2 = 0.00503866 - Outflow = -0.00721609
 iter 17 Err L2 = 0.00487029 - Outflow = -0.00691893
 iter 18 Err L2 = 0.0047311 - Outflow = -0.00669857
 iter 19 Err L2 = 0.00461417 - Outflow = -0.0063476
 iter 20 Err L2 = 0.00451849 - Outflow = -0.00601786
 iter 21 Err L2 = 0.00444014 - Outflow = -0.00582553
 iter 22 Err L2 = 0.0043725 - Outflow = -0.00568356
 iter 23 Err L2 = 0.00431084 - Outflow = -0.00560103
 iter 24 Err L2 = 0.0042535 - Outflow = -0.00549967
 iter 25 Err L2 = 0.0041974 - Outflow = -0.00532967
 iter 26 Err L2 = 0.00414085 - Outflow = -0.00516601
 iter 27 Err L2 = 0.00408237 - Outflow = -0.00506291
 iter 28 Err L2 = 0.00402155 - Outflow = -0.00499893
 iter 29 Err L2 = 0.00395778 - Outflow = -0.00498323
 iter 30 Err L2 = 0.00389187 - Outflow = -0.005003
 iter 31 Err L2 = 0.0038251 - Outflow = -0.00502778
 iter 32 Err L2 = 0.00375741 - Outflow = -0.00501784
 iter 33 Err L2 = 0.00368967 - Outflow = -0.00497462
 iter 34 Err L2 = 0.0036222 - Outflow = -0.00491197
 iter 35 Err L2 = 0.00355568 - Outflow = -0.00484293
 iter 36 Err L2 = 0.0034908 - Outflow = -0.00479213
 iter 37 Err L2 = 0.00342815 - Outflow = -0.00475741
 iter 38 Err L2 = 0.0033679 - Outflow = -0.00472618
 iter 39 Err L2 = 0.00330955 - Outflow = -0.00469497
 iter 40 Err L2 = 0.00325414 - Outflow = -0.0046723
 iter 41 Err L2 = 0.00320131 - Outflow = -0.00467018
 iter 42 Err L2 = 0.00315075 - Outflow = -0.00468732
 iter 43 Err L2 = 0.00310297 - Outflow = -0.00471984
 iter 44 Err L2 = 0.00305758 - Outflow = -0.00476346
 iter 45 Err L2 = 0.00301433 - Outflow = -0.0048073
 iter 46 Err L2 = 0.00297299 - Outflow = -0.00484051
 iter 47 Err L2 = 0.00293336 - Outflow = -0.00484355
 iter 48 Err L2 = 0.00289495 - Outflow = -0.00480636
 iter 49 Err L2 = 0.00285824 - Outflow = -0.00472795
 iter 50 Err L2 = 0.0499588 - Outflow = -0.0556909
 iter 51 Err L2 = 0.0217082 - Outflow = 0.0379043
 iter 52 Err L2 = 0.0108215 - Outflow = -0.0492108
 iter 53 Err L2 = 0.00709392 - Outflow = 0.0197364
 iter 54 Err L2 = 0.00617552 - Outflow = -0.0295312
 iter 55 Err L2 = 0.0055551 - Outflow = 0.0130352
 iter 56 Err L2 = 0.00492961 - Outflow = -0.0162876
 iter 57 Err L2 = 0.00444607 - Outflow = 0.00985108
 iter 58 Err L2 = 0.00404846 - Outflow = -0.00985084
 iter 59 Err L2 = 0.00375514 - Outflow = 0.0059031
 iter 60 Err L2 = 0.0035145 - Outflow = -0.00666384
 iter 61 Err L2 = 0.00333703 - Outflow = 0.00337263
 iter 62 Err L2 = 0.00319716 - Outflow = -0.00433745
 iter 63 Err L2 = 0.00308722 - Outflow = 0.00204394
 iter 64 Err L2 = 0.00299684 - Outflow = -0.00286126
 iter 65 Err L2 = 0.00292279 - Outflow = 0.00109487
 iter 66 Err L2 = 0.00285794 - Outflow = -0.00202589
 iter 67 Err L2 = 0.00280111 - Outflow = 0.000463294
 iter 68 Err L2 = 0.00274975 - Outflow = -0.00152742
 iter 69 Err L2 = 0.00270244 - Outflow = 2.94705e-05
 iter 70 Err L2 = 0.0026576 - Outflow = -0.00124921
 iter 71 Err L2 = 0.00261364 - Outflow = -0.000306453
 iter 72 Err L2 = 0.0025708 - Outflow = -0.00116906
 iter 73 Err L2 = 0.002529 - Outflow = -0.000621347
 iter 74 Err L2 = 0.00248795 - Outflow = -0.00120755
 iter 75 Err L2 = 0.00244754 - Outflow = -0.00087908
 iter 76 Err L2 = 0.00240772 - Outflow = -0.00126101
 iter 77 Err L2 = 0.00236849 - Outflow = -0.00105987
 iter 78 Err L2 = 0.00232979 - Outflow = -0.00131256
 iter 79 Err L2 = 0.00229132 - Outflow = -0.00119619
 iter 80 Err L2 = 0.00225343 - Outflow = -0.00137757
 iter 81 Err L2 = 0.00221589 - Outflow = -0.00131974
 iter 82 Err L2 = 0.00217908 - Outflow = -0.00144624
 iter 83 Err L2 = 0.00214297 - Outflow = -0.00141317
 iter 84 Err L2 = 0.00210752 - Outflow = -0.00149068
 iter 85 Err L2 = 0.0020727 - Outflow = -0.00146293
 iter 86 Err L2 = 0.00203848 - Outflow = -0.00150352
 iter 87 Err L2 = 0.00200485 - Outflow = -0.00148088
 iter 88 Err L2 = 0.00197161 - Outflow = -0.00150638
 iter 89 Err L2 = 0.00193877 - Outflow = -0.00149167
 iter 90 Err L2 = 0.00190634 - Outflow = -0.00150899
 iter 91 Err L2 = 0.00187437 - Outflow = -0.00150451
 iter 92 Err L2 = 0.00184289 - Outflow = -0.00152065
 iter 93 Err L2 = 0.00181193 - Outflow = -0.00152316
 iter 94 Err L2 = 0.00178155 - Outflow = -0.00153876
 iter 95 Err L2 = 0.00175173 - Outflow = -0.00155182
 iter 96 Err L2 = 0.00172248 - Outflow = -0.00157562
 iter 97 Err L2 = 0.00169394 - Outflow = -0.00159514
 iter 98 Err L2 = 0.00166616 - Outflow = -0.00162218
 iter 99 Err L2 = 0.00163943 - Outflow = -0.00155372
 iter 100 Err L2 = 0.00392459 - Outflow = -0.00224458
 iter 101 Err L2 = 0.00260769 - Outflow = 0.0023029
 iter 102 Err L2 = 0.00203308 - Outflow = -0.00475626
 iter 103 Err L2 = 0.00181612 - Outflow = -0.0012815
 iter 104 Err L2 = 0.00171272 - Outflow = -0.00386465
 iter 105 Err L2 = 0.00164805 - Outflow = -0.000919029
 iter 106 Err L2 = 0.00159813 - Outflow = -0.00208614
 iter 107 Err L2 = 0.00155472 - Outflow = -0.00067876
 iter 108 Err L2 = 0.00151903 - Outflow = -0.0018273
 iter 109 Err L2 = 0.00148806 - Outflow = -0.00124329
 iter 110 Err L2 = 0.00145997 - Outflow = -0.00188481
 iter 111 Err L2 = 0.0014334 - Outflow = -0.00136948
 iter 112 Err L2 = 0.00140851 - Outflow = -0.00155988
 iter 113 Err L2 = 0.00138505 - Outflow = -0.00112886
 iter 114 Err L2 = 0.00136303 - Outflow = -0.0011894
 iter 115 Err L2 = 0.00134202 - Outflow = -0.000969568
 iter 116 Err L2 = 0.00132178 - Outflow = -0.00110402
 iter 117 Err L2 = 0.00130219 - Outflow = -0.00109619
 iter 118 Err L2 = 0.00128323 - Outflow = -0.00127507
 iter 119 Err L2 = 0.00126485 - Outflow = -0.00133906
 iter 120 Err L2 = 0.00124701 - Outflow = -0.00147593
 iter 121 Err L2 = 0.00122962 - Outflow = -0.00150989
 iter 122 Err L2 = 0.00121265 - Outflow = -0.00155901
 iter 123 Err L2 = 0.00119604 - Outflow = -0.00153911
 iter 124 Err L2 = 0.00117975 - Outflow = -0.00152446
 iter 125 Err L2 = 0.00116384 - Outflow = -0.00147851
 iter 126 Err L2 = 0.00114829 - Outflow = -0.00144748
 iter 127 Err L2 = 0.00113311 - Outflow = -0.00140916
 iter 128 Err L2 = 0.00111824 - Outflow = -0.00138024
 iter 129 Err L2 = 0.00110372 - Outflow = -0.00134891
 iter 130 Err L2 = 0.00108953 - Outflow = -0.00132267
 iter 131 Err L2 = 0.00107564 - Outflow = -0.00128916
 iter 132 Err L2 = 0.00106203 - Outflow = -0.00125104
 iter 133 Err L2 = 0.00104873 - Outflow = -0.00120598
 iter 134 Err L2 = 0.00103567 - Outflow = -0.00115621
 iter 135 Err L2 = 0.00102285 - Outflow = -0.00109671
 iter 136 Err L2 = 0.00101025 - Outflow = -0.00103343
 iter 137 Err L2 = 0.000997824 - Outflow = -0.000963952

Version: 4.13 clang-15 FreeBSD 13.2

prj- commented 1 year ago

What's the issue?

yurivict commented 1 year ago

FAIL: LapEigenBeltrami.edp

prj- commented 1 year ago

Does that impact you?

yurivict commented 1 year ago

Tests are failing.

prj- commented 1 year ago

Does that impact your code?

yurivict commented 1 year ago

No, but tests should pass. Otherwise, if they are not important, tests should be removed.

prj- commented 1 year ago

You can remove them locally.