ngsxfem / ngsxfem

Add-On to NGSolve for unfitted finite element discretizations (XFEM, CutFEM, TraceFEM, etc...)
GNU Lesser General Public License v3.0
79 stars 20 forks source link

Issue replicating results in demo moving_domain.py #20

Closed JeremyShahan closed 1 year ago

JeremyShahan commented 1 year ago

Dear Developer,

I have tried running the demo located at ngsxfem/demos/moving_domain.py, however, I have run into some issues.

I should mention first that I was not able to get UmfpackInverse installed, so I changed moving_domain.py to use masterinverse instead of umfpack. However, I do not think that this is the issue.

Additionally, I changed the constant nu to be equal to 1.0 as it does in the paper cited in this demo. Without this change, the demo does seem to produce any good results.

With these changes, the results seem good initially, however they do not match up with the results provided in the paper. What's worse, is that it seems that as I try to refine the mesh and/or refine the time step, the computed error remains roughly the same.

Here were some of the results I got:

Lx, Lt= 3, 3

--------------------------------------------------------
  L2(0,T;L2) Error = 6.9461e-02
Linf(0,T;L2) Error = 1.5566e-01
  L2(0,T;H1) Error = 2.9807e-01

Lx, Lt = 4, 4

--------------------------------------------------------
  L2(0,T;L2) Error = 6.9789e-02
Linf(0,T;L2) Error = 1.5940e-01
  L2(0,T;H1) Error = 3.0203e-01

Lx, Lt = 5, 5

--------------------------------------------------------
  L2(0,T;L2) Error = 7.0199e-02
Linf(0,T;L2) Error = 1.6243e-01
  L2(0,T;H1) Error = 3.0997e-01

I don't know what is wrong, but these results can't be right.

ngsxfem commented 1 year ago

Hi @JeremyShahan ,

Thanks for your interest in ngsxfem and our methods and thanks for reporting your problems.

  1. The demo in ngsxfem is not exactly for the reproduction of the paper results. Those scripts are provided in a separate repository that is refered to in the paper.

  2. I just tried the example myself and I obtain satisfactory results (linearly converging when space and time levels are coupled directly (due to implicit Euler)). I also tried to run it in the binder cloud configuration after uploading the file there (which uses a somewhat older version of NGSolve/ngsxfem. There I obtain the same numbers as locally on my machine. Can you provide more information on your runtime configuration (hardware, OS, versions of NGSolve and ngsxfem, ...)?

Best, Christoph

JeremyShahan commented 1 year ago

Hardware:

/0/0                      memory         16GiB System memory
/0/1                      processor      Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz
/0/100                    bridge         Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers
/0/100/1                  bridge         Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x16)
/0/100/1/0                display        Oland XT [Radeon HD 8670 / R7 250/350]
/0/100/1/0.1              multimedia     Oland/Hainan/Cape Verde/Pitcairn HDMI Audio [Radeon HD 7000 Series]
/0/100/2                  display        HD Graphics 530
/0/100/14                 bus            100 Series/C230 Series Chipset Family USB 3.0 xHCI Controller
/0/100/14.2               generic        100 Series/C230 Series Chipset Family Thermal Subsystem
/0/100/16                 communication  100 Series/C230 Series Chipset Family MEI Controller #1
/0/100/17                 storage        Q170/Q150/B150/H170/H110/Z170/CM236 Chipset SATA Controller [AHCI Mode]
/0/100/1f                 bridge         Q170 Chipset LPC/eSPI Controller
/0/100/1f.2               memory         Memory controller
/0/100/1f.3               multimedia     100 Series/C230 Series Chipset Family HD Audio Controller
/0/100/1f.4               bus            100 Series/C230 Series Chipset Family SMBus

OS:

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.5 LTS
Release:        20.04
Codename:       focal

Versions of NGSolve and XFEM:

Name: ngsolve-avx2
Version: 6.2.2204
Name: xfem-avx2
Version: 2.0.2204

Using Python 3.8.10

I also tried running the demo on a different computer and a different version of NGSolve and ngsxfem, but have experienced the same issue.

hvonwah commented 1 year ago

Hi @JeremyShahan ,

I also just tried the example using the ngsolve/xfem version you mentioned (with python 3.8.10 on Ubuntu 20.04.6). Using masterinverse also did not work for me, but I got the expected convergence when using pardiso as the direct solver. As mkl is a dependency of ngsolve-avx2, this should also be available to you. Maybe give that a try?

Best wishes, Henry

JeremyShahan commented 1 year ago

Hi Henry,

I tried that, and it looks like it works! Thank you! Is there a particular reason that masterinverse does not work well with this example that you know of?

hvonwah commented 1 year ago

Hi @JeremyShahan ,

great! I'm not sure what direct solver is used for masterinverse, but I believe the fallback in ngsolves own sparsecholesky. Since the system here is not SPD, I wouldn't expect sparsechelesky to work.

I will close this issue, as I don't see anything else we can do on the xfem side at the moment.

Best wishes, Henry