hpfem / hermes-legacy Goto Github PK
View Code? Open in Web Editor NEWhp-FEM library
Home Page: http://hpfem.org/
hp-FEM library
Home Page: http://hpfem.org/
Methods like project_global
or the constructor of Adapt
may determine the norm used for projections from space->get_type()
.
Currently the buildbots are set for h1d, h2d and h3d separately. The build script has to be updated to reflect that now it has to be tested using the unified hermes repository.
We lost it by accident when merging master with the change branch.
It needs to be copied from there and commented out, until it is updated to the latest api.
One needs to setup webhooks from github. I have done this for sympy already and it works great.
So we will push things to github, and then spilka will receive the webhook and pull the latest changes (rebuilding docs, notifying the buildbot and so on...).
They sometimes work, sometimes fail and the implementation is a bit hackish. This needs to be fixed.
Comments
solin July 27, 2010 | link | edit | delete
Zhonghua made an improvement so that the error in parallel testing disappeared. But he still needs to get rid of dumping data into files during these tests.
As we found out with Pavel, the tutorial example 22 does not give correct solution. It does however, if the time step is shortened to 0.1. It does not work here in hpfem/master in the same way as it does not work in step-1.
99% tests passed, 3 tests failed out of 231
Label Time Summary:
long = 9181.28 sec
Total Test time (real) = 9535.61 sec
The following tests FAILED:
209 - output-vtk-sln-5 (Failed)
211 - output-vtk-vec-sln-5 (Failed)
212 - output-vtk-3sln-5 (Failed)
Errors while running CTest
make: *** [test] Error 8
Test 209 has a lot of output in the log file. Is there a way to attach a gzipped file??
Thanks,
-osman
We need to determine whether the caching from H2D is better
than the one in H3D and if so, change the H3D case to the H2D one.
Also edge integration orders are treated differently in H2D and H3D.
As discussed in this patch:
http://github.com/mhanus/hermes/commit/51454e11e7363d9e92ce654d6ecfa94fda3ac41a
there is a leak in BaseView:
void BaseView::update_solution()
this method used to delete the coeffs vector, but doesn't anymore, so it's leaking.
I have cloned the whole hermes repo. 1d and 2d built w/o problems.
1D, all tests pass. in 2D, some of the tests failed :
58-64 , 96,98, 105-110
But 3D is refusing to build at all:
osman@osman-desktop:~/HERMES/hermes/hermes3d$ cmake . -- Will build versions: real;complex -- Will build with element types: tetra;hex -- A library with BLAS API found. -- A library with LAPACK API found. -- Found Judy: /usr/lib/libJudy.so -- A library with BLAS API found. -- Found UMFPACK: /usr/lib/libumfpack.so -- Configuring done -- Generating done -- Build files have been written to: /home/osman/HERMES/hermes/hermes3d osman@osman-desktop:~/HERMES/hermes/hermes3d$ osman@osman-desktop:~/HERMES/hermes/hermes3d$ make [ 24%] Built target hermes3d-cplx-debug [ 48%] Built target hermes3d-debug [ 49%] Built target adapt-h1-simple [ 50%] Built target projection [ 51%] Built target adapt-smooth [ 53%] Built target calc-tetra-h1 [ 54%] Built target calc-tetra-h1-dirichlet [ 55%] Built target calc-tetra-h1-neumann [ 56%] Built target calc-tetra-h1-newton [ 59%] Built target calc-hex-h1 [ 60%] Built target calc-hex-h1-dirichlet [ 62%] Built target calc-hex-h1-neumann [ 63%] Built target calc-hex-h1-newton [ 65%] Built target calc-hex-h1-unsym [ 67%] Built target calc-hex-h1-sys [ 68%] Built target calc-hex-h1-sys-dirichlet [ 69%] Built target calc-hex-h1-sys-coupled [ 70%] Built target calc-hex-hcurl [ 70%] Building CXX object tests/calc/hex-hcurl-cplx/CMakeFiles/calc-hex-hcurl-cplx.dir/hex-hcurl-cplx.cpp.o /home/osman/HERMES/hermes/hermes3d/tests/calc/hex-hcurl-cplx/hex-hcurl-cplx.cpp: In function ‘int main(int, char**)’: /home/osman/HERMES/hermes/hermes3d/tests/calc/hex-hcurl-cplx/hex-hcurl-cplx.cpp:157: error: no matching function for call to ‘LinearProblem::LinearProblem(WeakForm*)’ /home/osman/HERMES/hermes/hermes3d/src/linear_problem.h:34: note: candidates are: LinearProblem::LinearProblem(WeakForm*, Tuple) /home/osman/HERMES/hermes/hermes3d/src/linear_problem.h:32: note: LinearProblem::LinearProblem(const LinearProblem&) make[2]: *** [tests/calc/hex-hcurl-cplx/CMakeFiles/calc-hex-hcurl-cplx.dir/hex-hcurl-cplx.cpp.o] Error 1 make[1]: *** [tests/calc/hex-hcurl-cplx/CMakeFiles/calc-hex-hcurl-cplx.dir/all] Error 2 make: *** [all] Error 2
Anything I need to do to make it build?
Thanks in advance
-osman
Plus the treatment of matrix solvers should be unified across H1D, H2D and H3D.
Currently, project_global() uses UMFpack as the only possible solver. However,
projection matrices are SPD and thus we must allow the emplyment of iterative
solvers. Same as we do, for example, in the function solve_linear() or solve_linear_adapt().
This is a bug that Milan fixed in H2D and we still have it in H3D:
In the current master, I am getting:
[ 82%] Building CXX object examples/euler/CMakeFiles/euler.dir/main.cpp.o In file included from /home/ondrej/repos/hermes/hermes2d/examples/euler/main.cpp:1: /home/ondrej/repos/hermes/hermes2d/examples/euler/forms.cpp:7:1: warning: "kappa" redefined In file included from /home/ondrej/repos/hermes/hermes2d/examples/euler/forms.cpp:2, from /home/ondrej/repos/hermes/hermes2d/examples/euler/main.cpp:1: /home/ondrej/repos/hermes/hermes2d/examples/euler/params.h:8:1: warning: this is the location of the previous definition /home/ondrej/repos/hermes/hermes2d/examples/euler/main.cpp:15: error: expected unqualified-id before numeric constant /home/ondrej/repos/hermes/hermes2d/examples/euler/main.cpp:17: error: expected unqualified-id before numeric constant make[2]: *** [examples/euler/CMakeFiles/euler.dir/main.cpp.o] Error 1 make[1]: *** [examples/euler/CMakeFiles/euler.dir/all] Error 2 make: *** [all] Error 2
This is caused by this code:
double TAU = 1E-4; double R = 300; // Gas constant double c_v = 700; // The specific heat capacity at constant volume double t = 0;
because the forms.cpp define:
#define R H2D_PARAM_R #define c_v H2D_PARAM_c_v #define kappa H2D_PARAM_kappa
So it has to be changed a bit.
We need to merge the "change" branch at Pavel's github.
(1) Examples: * 22: Converted but do not work correctly yet. * 24; Converted but still do not work yet. * 40 - 44: Trilinos. Not converted yet. (2) Benchmarks: * neutronics-heat-conduction-adapt : Converted but do not work. * neutronics-heat-conduction: Converted but do not work correctly yet (3) Regular examples to be converted or fixed: * neutronics-4-group * neutronics-4-group-adapt * newton-np-timedep-adapt-system * ns-bearing * ns-timedep-adapt * ns-two-phase The following example do not have tests or the tests do not work (1) Examples: * 24: do not work yet. * 40 - 44: Trilinos. (2) Benchmarks: * neutronics-heat-conduction * neutronics-heat-conduction-adapt * nist-7 (3) Regular examples: * neutronics-4-group * newton-np-timedep-adapt-system (not work yet) * ns-bearing * ns-timedep-adapt * ns-two-phase * optimal-meshes * quantum-billiard * richards * richards-tracy-adapt
smooth-iso
smooth-aniso-xy
smooth-aniso-yz
smooth-aniso-xz
smooth-aniso-x
smooth-aniso-y
smooth-aniso-z
ScalarView does not display correctly piecewise-constant solution on a very refined mesh. BaseView also behaves quite strange when displaying L2 shapes on such a mesh - sometimes it does display the correct function, sometimes it displays nonsense, sometimes it doesn't display anything.
There are some pictures from the example linear-advection-dg-adapt at
http://www.dropbox.com/gallery/538117/4/hermes/hermes2d/examples/linear-advection-dg-adapt?h=5ba6e2
to illustrate this issue. The pictures were created just by pressing the right arrow key in BaseView until the 8th function was displayed, and then going back by pressing the left arrow key (nothing else). Last picture in the gallery is the solution itself.
Here are the outputs from "make test":
96/128 Test #96: example-neutronics-4-group ....................***Failed 18.66 sec Start 97: example-neutronics-4-group-adapt-projection 97/128 Test #97: example-neutronics-4-group-adapt-projection ... Passed 331.91 sec Start 98: example-np 98/128 Test #98: example-np ....................................***Failed 0.96 sec ... Start 107: example-richards-seepage-adapt 107/128 Test #107: example-richards-seepage-adapt ................***Exception: SegFault 0.39 sec Start 108: example-ns-bearing 108/128 Test #108: example-ns-bearing ............................ Passed 33.42 sec Start 109: example-ns-two-phase 109/128 Test #109: example-ns-two-phase ..........................***Exception: SegFault 3.85 sec Start 110: example-ns-timedep-adapt 110/128 Test #110: example-ns-timedep-adapt ......................***Failed 38.08 sec ... 96% tests passed, 5 tests failed out of 128 Label Time Summary: slow = 9654.50 sec Total Test time (real) = 9747.93 sec The following tests FAILED: 96 - example-neutronics-4-group (Failed) 98 - example-np (Failed) 107 - example-richards-seepage-adapt (SEGFAULT) 109 - example-ns-two-phase (SEGFAULT) 110 - example-ns-timedep-adapt (Failed) Errors while running CTest make: *** [test] Error 8 Test 96 Log: 96/128 Test: example-neutronics-4-group Command: "/home/osman/HERMES/hermes/hermes2d/tests/examples/neutronics-4-group/example-neutronics-4-group" Directory: /home/osman/HERMES/hermes/hermes2d/tests/examples/neutronics-4-group "example-neutronics-4-group" start time: Sep 08 17:52 EDT Output: ---------------------------------------------------------- ------------------------------------------------- This application uses Hermes2D Hermes2D is a C++ library for rapid development of adaptive FEM and hp-FEM solvers developed by the hp-FEM group at UNR and distributed under the GPL license. For more details visit http://hpfem.org/. ------------------------------------------------- ^[[34m^[[1mI Setting initial conditions.^[[0m ^[[34m^[[1mI ndof = 11380.^[[0m ^[[34m^[[1mI ------------ Power iteration 0:^[[0m ^[[34m^[[1mI ------------ Power iteration 1:^[[0m ^[[34m^[[1mI ------------ Power iteration 2:^[[0m ^[[34m^[[1mI ------------ Power iteration 3:^[[0m ^[[34m^[[1mI ------------ Power iteration 4:^[[0m ^[[34m^[[1mI ------------ Power iteration 5:^[[0m ^[[34m^[[1mI ------------ Power iteration 6:^[[0m ^[[34m^[[1mI ------------ Power iteration 7:^[[0m ^[[34m^[[1mI ------------ Power iteration 8:^[[0m ^[[34m^[[1mI ------------ Power iteration 9:^[[0m ^[[34m^[[1mI ------------ Power iteration 10:^[[0m ^[[34m^[[1mI ------------ Power iteration 11:^[[0m ^[[34m^[[1mI Number of iterations: 12^[[0m ^[[34m^[[1mI Peak flux in group 1: 0.736222, at (1.665339,5.445262)^[[0m ^[[34m^[[1mI Peak flux in group 2: 1.618549, at (1.764661,5.445262)^[[0m ^[[34m^[[1mI Peak flux in group 3: 0.239935, at (1.764661,5.445262)^[[0m ^[[34m^[[1mI Peak flux in group 4: 3.306784, at (1.151700,5.494142)^[[0m ^[[34m^[[1mI Core eigenvalue: 1.152000^[[0m Failure! Test time = 18.66 sec ---------------------------------------------------------- Test 98 Log: 98/128 Testing: example-np 98/128 Test: example-np Command: "/home/osman/HERMES/hermes/hermes2d/tests/examples/newton-np-timedep-adapt-system/example-np" Directory: /home/osman/HERMES/hermes/hermes2d/tests/examples/newton-np-timedep-adapt-system "example-np" start time: Sep 08 17:58 EDT Output: ---------------------------------------------------------- ------------------------------------------------- This application uses Hermes2D Hermes2D is a C++ library for rapid development of adaptive FEM and hp-FEM solvers developed by the hp-FEM group at UNR and distributed under the GPL license. For more details visit http://hpfem.org/. ------------------------------------------------- ^[[34m^[[1mI ---- Time step 1:^[[0m ^[[34m^[[1mI Projecting coarse mesh solution to obtain initial vector on new fine mesh.^[[0m ^[[34m^[[1mI Solving on coarse mesh:^[[0m ^[[34m^[[1mI ---- Newton iter 1, ndof 48, res. l2 norm 2.80399e-05^[[0m ^[[34m^[[1mI ---- Adaptivity step 1:^[[0m ^[[34m^[[1mI Projecting coarse mesh solution to obtain initial vector on new fine mesh.^[[0m ^[[34m^[[1mI Solving on fine mesh.^[[0m ^[[34m^[[1mI ---- Newton iter 1, ndof 288, res. l2 norm 2.29489e-05^[[0m ^[[34m^[[1mI Calculating error.^[[0m ^[[34m^[[1mI ndof[0]: 28, ref_ndof[0]: 153, err_est_rel[0]: 2.27376e-06%^[[0m ^[[34m^[[1mI ndof[1]: 20, ref_ndof[1]: 135, err_est_rel[1]: 4.65764e-13%^[[0m ^[[34m^[[1mI ndof: 48, ref_ndof: 288, err_est_rel_total: 5.30635e-07%^[[0m ^[[31mE Mismatched numbers of projected functions and solutions in project_global().^[[0m Test time = 0.96 sec ---------------------------------------------------------- Test Failed. "example-np" end time: Sep 08 17:58 EDT "example-np" time elapsed: 00:00:00 ---------------------------------------------------------- Test 107 Log: 107/128 Testing: example-richards-seepage-adapt 107/128 Test: example-richards-seepage-adapt Command: "/home/osman/HERMES/hermes/hermes2d/tests/examples/richards-seepage-adapt/example-richards-seepage-adapt" Directory: /home/osman/HERMES/hermes/hermes2d/tests/examples/richards-seepage-adapt "example-richards-seepage-adapt" start time: Sep 08 18:04 EDT Output: ---------------------------------------------------------- ------------------------------------------------- This application uses Hermes2D Hermes2D is a C++ library for rapid development of adaptive FEM and hp-FEM solvers developed by the hp-FEM group at UNR and distributed under the GPL license. For more details visit http://hpfem.org/. ------------------------------------------------- Test time = 0.39 sec ---------------------------------------------------------- Test Failed. "example-richards-seepage-adapt" end time: Sep 08 18:04 EDT "example-richards-seepage-adapt" time elapsed: 00:00:00 ---------------------------------------------------------- Test 109 Log: 109/128 Testing: example-ns-two-phase 109/128 Test: example-ns-two-phase Command: "/home/osman/HERMES/hermes/hermes2d/tests/examples/ns-two-phase/example-ns-two-phase" Directory: /home/osman/HERMES/hermes/hermes2d/tests/examples/ns-two-phase "example-ns-two-phase" start time: Sep 08 18:04 EDT Output: ---------------------------------------------------------- ------------------------------------------------- This application uses Hermes2D Hermes2D is a C++ library for rapid development of adaptive FEM and hp-FEM solvers developed by the hp-FEM group at UNR and distributed under the GPL license. For more details visit http://hpfem.org/. ------------------------------------------------- Test time = 3.85 sec ---------------------------------------------------------- Test Failed. "example-ns-two-phase" end time: Sep 08 18:04 EDT "example-ns-two-phase" time elapsed: 00:00:03 ---------------------------------------------------------- Test 110 log: 110/128 Testing: example-ns-timedep-adapt 110/128 Test: example-ns-timedep-adapt Command: "/home/osman/HERMES/hermes/hermes2d/tests/examples/ns-timedep-adapt/example-ns-timedep-adapt" Directory: /home/osman/HERMES/hermes/hermes2d/tests/examples/ns-timedep-adapt "example-ns-timedep-adapt" start time: Sep 08 18:04 EDT Output: ---------------------------------------------------------- ------------------------------------------------- This application uses Hermes2D Hermes2D is a C++ library for rapid development of adaptive FEM and hp-FEM solvers developed by the hp-FEM group at UNR and distributed under the GPL license. For more details visit http://hpfem.org/. ------------------------------------------------- ^[[34m^[[1mI ndof = 2922.^[[0m ^[[34m^[[1mI Setting initial conditions.^[[0m ^[[34m^[[1mI ---- Time step 1:^[[0m ^[[34m^[[1mI Projecting to obtain coefficient vector on coarse mesh.^[[0m ^[[33mW Element #333 is too distorted (iro ~ 12).^[[0m ^[[33mW Element #359 is too distorted (iro ~ 10).^[[0m ^[[33mW Element #385 is too distorted (iro ~ 10).^[[0m ^[[33mW Element #384 is too distorted (iro ~ 10).^[[0m ^[[33mW Element #28 is too distorted (iro ~ 12).^[[0m ^[[33mW Element #31 is too distorted (iro ~ 12).^[[0m ^[[33mW Element #307 is too distorted (iro ~ 10).^[[0m ^[[33mW Element #306 is too distorted (iro ~ 10).^[[0m ^[[33mW Element #280 is too distorted (iro ~ 10).^[[0m ^[[33mW Element #254 is too distorted (iro ~ 12).^[[0m ^[[34m^[[1mI Projecting coarse mesh solution to obtain initial vector on new fine mesh.^[[0m ^[[34m^[[1mI Solving on coarse mesh:^[[0m ^[[34m^[[1mI ---- Newton iter 1, ndof 2922, res. l2 norm 0^[[0m ^[[34m^[[1mI ---- Adaptivity step 1:^[[0m ^[[34m^[[1mI Projecting coarse mesh solution to obtain initial vector on new fine mesh.^[[0m ^[[34m^[[1mI Solving on fine mesh.^[[0m ^[[34m^[[1mI ---- Newton iter 1, ndof 27634, res. l2 norm 0^[[0m ^[[34m^[[1mI Calculating error.^[[0m ^[[34m^[[1mI ndof[0]: 937, ref_ndof[0]: 9101, err_est_rel[0]: -nan%^[[0m ^[[34m^[[1mI ndof[1]: 937, ref_ndof[1]: 9101, err_est_rel[1]: -nan%^[[0m ^[[34m^[[1mI ndof[2]: 1048, ref_ndof[2]: 9432, err_est_rel[2]: -nan%^[[0m ^[[34m^[[1mI ndof: 2922, ref_ndof: 27634, err_est_rel_total: -nan%^[[0m ^[[34m^[[1mI Adapting the coarse mesh.^[[0m ^[[35mD Element (id:398, comp:1) not changed^[[0m ^[[35mD Element (id:399, comp:1) not changed^[[0m ^[[35mD Element (id:400, comp:1) not changed^[[0m ^[[35mD Element (id:401, comp:1) not changed^[[0m ^[[35mD Element (id:402, comp:1) not changed^[[0m ^[[35mD Element (id:403, comp:1) not changed^[[0m ^[[35mD Element (id:404, comp:1) not changed^[[0m ^[[35mD Element (id:405, comp:1) not changed^[[0m ^[[35mD Element (id:19, comp:2) not changed^[[0m ^[[35mD Element (id:24, comp:2) not changed^[[0m ^[[35mD Element (id:28, comp:2) not changed^[[0m ^[[35mD Element (id:31, comp:2) not changed^[[0m ^[[35mD Element (id:36, comp:2) not changed^[[0m ^[[35mD Element (id:43, comp:2) not changed^[[0m ^[[35mD Element (id:52, comp:2) not changed^[[0m ^[[35mD Element (id:53, comp:2) not changed^[[0m ^[[35mD Element (id:56, comp:2) not changed^[[0m ^[[35mD Element (id:57, comp:2) not changed^[[0m ^[[35mD Element (id:60, comp:2) not changed^[[0m ^[[35mD Element (id:61, comp:2) not changed^[[0m ^[[35mD Element (id:64, comp:2) not changed^[[0m ^[[35mD Element (id:65, comp:2) not changed^[[0m ^[[35mD Element (id:66, comp:2) not changed^[[0m ^[[35mD Element (id:67, comp:2) not changed^[[0m ^[[35mD Element (id:367, comp:1) not changed^[[0m ^[[35mD Element (id:369, comp:1) not changed^[[0m ^[[35mD Element (id:371, comp:1) not changed^[[0m ^[[35mD Element (id:373, comp:1) not changed^[[0m ^[[35mD Element (id:375, comp:1) not changed^[[0m .... a lot of these .......... ^[[35mD Element (id:36, comp:1) not changed^[[0m ^[[35mD Element (id:43, comp:1) not changed^[[0m ^[[35mD Element (id:52, comp:1) not changed^[[0m ^[[35mD Element (id:53, comp:1) not changed^[[0m ^[[33mW None of the elements selected for refinement could be refined. Adaptivity step not successful, returning 'true'.^[[0m ^[[34m^[[1mI Projecting reference solution on new coarse mesh.^[[0m ^[[31mE Mismatched numbers of projected functions and solutions in project_global().^[[0m Test time = 38.08 sec ---------------------------------------------------------- Test Failed. "example-ns-timedep-adapt" end time: Sep 08 18:05 EDT "example-ns-timedep-adapt" time elapsed: 00:00:38
16066,1 51%
This will be of help probably:
I have created a new github account for it and set it to send the notifications to the h2d list. However, it doesn't seem to send any changes (yet), so we need to keep debugging this. The account name is:
milan@milan-laptop:~/Dokumenty/FEM/hermes/hermes2d/tutorial/02-space$ ./space ------------------------------------------------- This application uses Hermes2D Hermes2D is a C++ library for rapid development of adaptive FEM and hp-FEM solvers developed by the hp-FEM group at UNR and distributed under the GPL license. For more details visit http://hpfem.org/. ------------------------------------------------- *** glibc detected *** ./space: free(): invalid next size (fast): 0x0000000000f07ef0 *** ======= Backtrace: ========= /lib/libc.so.6[0x7fbabe6622f6] /lib/libc.so.6(cfree+0x6c)[0x7fbabe666c6c] /home/milan/Dokumenty/FEM/hermes/hermes2d/src/libhermes2d-real-debug.so(_ZN8BaseView15update_solutionEv+0x192)[0x7fbac08800c4] /home/milan/Dokumenty/FEM/hermes/hermes2d/src/libhermes2d-real-debug.so(_ZN8BaseView4showEP5Spacedi+0x100)[0x7fbac087fe54] ./space(main+0x11a)[0x40233e] /lib/libc.so.6(__libc_start_main+0xfd)[0x7fbabe60aabd] ./space[0x402169] ======= Memory map: ======== 00400000-00404000 r-xp 00000000 08:05 810794 /home/milan/Dokumenty/FEM/hermes/hermes2d/tutorial/02-space/space 00603000-00604000 r--p 00003000 08:05 810794 /home/milan/Dokumenty/FEM/hermes/hermes2d/tutorial/02-space/space 00604000-00605000 rw-p 00004000 08:05 810794 /home/milan/Dokumenty/FEM/hermes/hermes2d/tutorial/02-space/space 00e98000-01736000 rw-p 00000000 00:00 0 [heap] 7fbab4000000-7fbab4021000 rw-p 00000000 00:00 0 7fbab4021000-7fbab8000000 ---p 00000000 00:00 0 7fbaba224000-7fbaba244000 rw-s 1ef902000 00:0e 2313 /dev/dri/card0 7fbaba244000-7fbaba245000 rw-s 1ef8e5000 00:0e 2313 /dev/dri/card0 7fbaba245000-7fbabaa95000 rw-p 00000000 00:00 0 7fbabaa95000-7fbabaa9e000 r-xp 00000000 08:05 3957 /usr/lib/libdrm_intel.so.1.0.0 7fbabaa9e000-7fbabac9d000 ---p 00009000 08:05 3957 /usr/lib/libdrm_intel.so.1.0.0 7fbabac9d000-7fbabac9e000 r--p 00008000 08:05 3957 /usr/lib/libdrm_intel.so.1.0.0 7fbabac9e000-7fbabac9f000 rw-p 00009000 08:05 3957 /usr/lib/libdrm_intel.so.1.0.0 7fbabac9f000-7fbabacc5000 r-xp 00000000 08:05 7524 /lib/libexpat.so.1.5.2 7fbabacc5000-7fbabaec5000 ---p 00026000 08:05 7524 /lib/libexpat.so.1.5.2 7fbabaec5000-7fbabaec7000 r--p 00026000 08:05 7524 /lib/libexpat.so.1.5.2 7fbabaec7000-7fbabaec8000 rw-p 00028000 08:05 7524 /lib/libexpat.so.1.5.2 7fbabaec8000-7fbabb189000 r-xp 00000000 08:05 134082 /usr/lib/dri/i965_dri.so 7fbabb189000-7fbabb388000 ---p 002c1000 08:05 134082 /usr/lib/dri/i965_dri.so 7fbabb388000-7fbabb394000 r--p 002c0000 08:05 134082 /usr/lib/dri/i965_dri.so 7fbabb394000-7fbabb397000 rw-p 002cc000 08:05 134082 /usr/lib/dri/i965_dri.so 7fbabb397000-7fbabb3a7000 rw-p 00000000 00:00 0 7fbabb3a7000-7fbabb3a8000 ---p 00000000 00:00 0 7fbabb3a8000-7fbabbeab000 rw-p 00000000 00:00 0 7fbabbeab000-7fbabbeae000 r-xp 00000000 08:05 669 /lib/libuuid.so.1.3.0 7fbabbeae000-7fbabc0ae000 ---p 00003000 08:05 669 /lib/libuuid.so.1.3.0 7fbabc0ae000-7fbabc0af000 r--p 00003000 08:05 669 /lib/libuuid.so.1.3.0 7fbabc0af000-7fbabc0b0000 rw-p 00004000 08:05 669 /lib/libuuid.so.1.3.0 7fbabc0b0000-7fbabc0c7000 r-xp 00000000 08:05 3683 /usr/lib/libICE.so.6.3.0 7fbabc0c7000-7fbabc2c6000 ---p 00017000 08:05 3683 /usr/lib/libICE.so.6.3.0 7fbabc2c6000-7fbabc2c7000 r--p 00016000 08:05 3683 /usr/lib/libICE.so.6.3.0 7fbabc2c7000-7fbabc2c8000 rw-p 00017000 08:05 3683 /usr/lib/libICE.so.6.3.0 7fbabc2c8000-7fbabc2cb000 rw-p 00000000 00:00 0 7fbabc2cb000-7fbabc2d0000 r-xp 00000000 08:05 3731 /usr/lib/libXdmcp.so.6.0.0 7fbabc2d0000-7fbabc4cf000 ---p 00005000 08:05 3731 /usr/lib/libXdmcp.so.6.0.0 7fbabc4cf000-7fbabc4d0000 rw-p 00004000 08:05 3731 /usr/lib/libXdmcp.so.6.0.0 7fbabc4d0000-7fbabc4d8000 r-xp 00000000 08:05 3712 /usr/lib/libSM.so.6.0.0 7fbabc4d8000-7fbabc6d7000 ---p 00008000 08:05 3712 /usr/lib/libSM.so.6.0.0 7fbabc6d7000-7fbabc6d8000 r--p 00007000 08:05 3712 /usr/lib/libSM.so.6.0.0 7fbabc6d8000-7fbabc6d9000 rw-p 00008000 08:05 3712 /usr/lib/libSM.so.6.0.0 7fbabc6d9000-7fbabc738000 r-xp 00000000 08:05 3759 /usr/lib/libXt.so.6.0.0 7fbabc738000-7fbabc938000 ---p 0005f000 08:05 3759 /usr/lib/libXt.so.6.0.0 7fbabc938000-7fbabc939000 r--p 0005f000 08:05 3759 /usr/lib/libXt.so.6.0.0 7fbabc939000-7fbabc93e000 rw-p 00060000 08:05 3759 /usr/lib/libXt.so.6.0.0 7fbabc93e000-7fbabc93f000 rw-p 00000000 00:00 0 7fbabc93f000-7fbabc95a000 r-xp 00000000 08:05 4751 /usr/lib/libxcb.so.1.1.0 7fbabc95a000-7fbabcb59000 ---p 0001b000 08:05 4751 /usr/lib/libxcb.so.1.1.0 7fbabcb59000-7fbabcb5a000 r--p 0001a000 08:05 4751 /usr/lib/libxcb.so.1.1.0 7fbabcb5a000-7fbabcb5b000 rw-p 0001b000 08:05 4751 /usr/lib/libxcb.so.1.1.0 7fbabcb5b000-7fbabcb5d000 r-xp 00000000 08:05 3720 /usr/lib/libXau.so.6.0.0 7fbabcb5d000-7fbabcd5c000 ---p 00002000 08:05 3720 /usr/lib/libXau.so.6.0.0 7fbabcd5c000-7fbabcd5d000 r--p 00001000 08:05 3720 /usr/lib/libXau.so.6.0.0 7fbabcd5d000-7fbabcd5e000 rw-p 00002000 08:05 3720 /usr/lib/libXau.so.6.0.0 7fbabcd5e000-7fbabcd68000 r-xp 00000000 08:05 3955 /usr/lib/libdrm.so.2.4.0 7fbabcd68000-7fbabcf67000 ---p 0000a000 08:05 3955 /usr/lib/libdrm.so.2.4.0 7fbabcf67000-7fbabcf68000 r--p 00009000 08:05 3955 /usr/lib/libdrm.so.2.4.0 7fbabcf68000-7fbabcf69000 rw-p 0000a000 08:05 3955 /usr/lib/libdrm.so.2.4.0 7fbabcf69000-7fbabcf6e000 r-xp 00000000 08:05 3735 /usr/lib/libXfixes.so.3.1.0 7fbabcf6e000-7fbabd16d000 ---p 00005000 08:05 3735 /usr/lib/libXfixes.so.3.1.0 7fbabd16d000-7fbabd16e000 r--p 00004000 08:05 3735 /usr/lib/libXfixes.so.3.1.0 7fbabd16e000-7fbabd16f000 rw-p 00005000 08:05 3735 /usr/lib/libXfixes.so.3.1.0Aborted
Use of matrices, vectors and solvers needs to be unified across all Hermeses. If current Hermes3D structures are going to be chosen as a basis for the unification, there are several things to note:
Method
virtual void add(int m, int n, scalar **mat, int *rows, int *cols);
(called add_block in Hermes2D) should be moved to the basic class Matrix as in H2D. This will lower the amount of duplicate code, since only the single-element "add" functions really differ across the various matrix classes.
PardisoMatrix and UMFPackMatrix, respectively, should be renamed to CSRMatrix and CSCMatrix, respectively, since this is a standard format to store sparse matrices and may be used by other solvers that might be implemented in future.
Moreover, since the only difference between these two matrix classes is only in the "add" method, a common superclass CSMatrix (or CompressedSparseMatrix) may be defined for them (itself being derived from SparseMatrix), yet again to minimize code duplication.
There should be a possibility to interchange storage formats of already created matrices, e.g. to allow dynamically changing available direct and iterative solvers based on size of the problem.
There should be a possibility to assemble the matrix using the simple coordinate format because of its efficiency to small/moderate-size problems.
Please feel free to add anything else you find important.
-this issue has been observed on windows
We should avoid having separate methods such as get_c_array() and get_c_array_cplc(),
get() and get_cplx() etc. This makes the code complicated.
Linearizer is used in H2D to approximate adaptively a higher-order
FEM solution using piecewise-linear functions. This is extremely useful for
the visualization of higher-order FEM solutions. In H3D we do not have
this yet, and thus the visualization of higher-order FEM solutions is very
crude. For example, a quadratic brick is only split into eight linear parts.
We need to implement it as soon as possible.
This is the stacktrace of example elasticity-cubit-tet.
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Abort caught. Printing stacktrace:
Traceback (most recent call last):
File unknown, in _start()
File unknown, in _libc_start_main()
File "/home/pavel/hermes/hermes3d/examples/elasticity-cubit-tet/main.cpp", line 79, in main()
H1Space xdisp(&mesh, bc_types_x, essential_bc_values, Ord3(P_INIT));
File "/home/pavel/hermes/hermes3d/src/space/h1.cpp", line 60, in H1Space()
this->assign_dofs();
File "/home/pavel/hermes/hermes3d/src/space/space.cpp", line 2213, in Space::assign_dofs(int, int)
update_constraints();
File "/home/pavel/hermes/hermes3d/src/space/space.cpp", line 2322, in Space::update_constraints()
uc_dep(eid);
File "/home/pavel/hermes/hermes3d/src/space/space.cpp", line 2289, in Space::uc_dep(unsigned int)
uc_element(eid);
File "/home/pavel/hermes/hermes3d/src/space/space.cpp", line 2152, in Space::uc_element(unsigned int)
calc_edge_boundary_projection(e, edge[iedge]);
File "/home/pavel/hermes/hermes3d/src/space/h1.cpp", line 221, in H1Space::calc_edge_boundary_projection(Element, int)
double _proj_mat = new_matrix(num_fns, num_fns);
File "/home/pavel/hermes/hermes3d/src/../../hermes_common/solver/../matrix.h", line 33, in double* new_matrix(int, int)
T *vec = (T *) new char[sizeof(T ) * m + sizeof(T) * m * n];
File unknown, in operator new[](unsigned int)
File unknown, in operator new(unsigned int)
File unknown, in __cxa_throw()
File unknown, in std::terminate()
File unknown, in std::set_unexpected(void ()())
File unknown, in __gnu_cxx::__verbose_terminate_handler()
File unknown, in abort()
File unknown, in raise()
File unknown, address: 0xffffffffffffe422
File unknown, address: 0xffffffffffffe400
File "/home/pavel/hermes/hermes_common/Teuchos_stacktrace.cpp", line 457, in (anonymous namespace)::loc_abort_callback_print_stack(int)
Teuchos::show_stacktrace();
File "/home/pavel/hermes/hermes_common/Teuchos_stacktrace.cpp", line 486, in Teuchos::show_stacktrace()
std::cout << Teuchos::get_stacktrace();
File "/home/pavel/hermes/hermes_common/Teuchos_stacktrace.cpp", line 474, in Teuchos::get_stacktrace()
STACKTRACE_ARRAY_SIZE);
The VonMises filter in H2D is used to visualize stresses in
linear elasticity. We need to port it to H3D as soon as possible.
This is necessary to make sure that nonlinear forms are treated correctly.
We need this both in H2D and H3D.
When trilinos is enabled, this test fails to build:
[ 72%] Building CXX object tests/view/zoom-to-fit/CMakeFiles/zoom-to-fit.dir/main.cpp.o In file included from /home/ondrej/repos/hermes2d/tests/view/zoom-to-fit/main.cpp:2: /home/ondrej/repos/hermes2d/src/views/view_support.h:61: error: ‘view’ was not declared in this scope /home/ondrej/repos/hermes2d/src/views/view_support.h:61: error: expected primary-expression before ‘int’ /home/ondrej/repos/hermes2d/src/views/view_support.h:61: error: expected primary-expression before ‘int’ /home/ondrej/repos/hermes2d/src/views/view_support.h:61: error: expected primary-expression before ‘int’ /home/ondrej/repos/hermes2d/src/views/view_support.h:61: error: expected primary-expression before ‘int’ /home/ondrej/repos/hermes2d/src/views/view_support.h:61: error: expected primary-expression before ‘const’ /home/ondrej/repos/hermes2d/src/views/view_support.h:61: error: initializer expression list treated as compound expression
The error is mysterious to me. The view_support.h header file seems to be fine, as it compiles with some other cpp files. Only this test fails to build, so I assume that something is wrong with it. I have disabled it for now.
currently, the git update-server-info is apparently not run at spilka, so that then "git clone" works incorrectly. This needs to be investigated and fixed.
This was reported here:
http://groups.google.com/group/hermes2d/t/986ab02d7b6008a0
See these two pdf files for introduction why this is pretty much necessary for any moderate/large size project:
http://www.cs.sandia.gov/~rabartl/TeuchosMemoryManagementSAND.pdf
http://trilinos.sandia.gov/RefCountPtrBeginnersGuideSAND.pdf
In this example, the eigenvalues are first calculated on the coarse mesh, and then
projected onto the globally refined mesh and used as an initial condition for the power
method there. However, the convergence on the fine mesh is surprizingly slow,
most likely this is not correct.
We need to subclass the ScalarView and use mayavi to do all the plotting. The same for MeshView and other things.
Then we can save things to images, offline, over ssh, and there will be no freeglut problems. It will be an optional way for the users, so it will live alongside the current plotting machinery.
It will build with femhub for example.
Comments
certik July 24, 2010 | link | edit | delete
Pavel: For starters we should enable saving Solutions and Spaces, because this
is all the ScalarView and MeshView need. Then you can fetch the saved data
from anywhere and visualize them on your local computer.
Actually we already have (some) Solution::save(),
Solution::load(), and Mesh::save() and Mesh::load(). So
we need to implement Space::save() and Space::load().
We should do this with Michal soon since we need it
urgently.
H2D should have the same VTK output functionality as H3D. The Views
we have in H2D and not in H3D will become optional.
They are already almost the same, but few methods of the FeProblem
class are not in DiscreteProblem yet.
Currently Hermes2D only can assemble into the CooMatrix. This is very fast, but extremely memory consuming. On the other hand, we know the sparse structure of the matrix, and then assembling takes much less memory. We have to have both options in Hermes, so that the user can choose.
certik July 27, 2010 | link | edit | delete
Also we should make some tests to see how much more memory you need for CooMatrix after assembly, and how much less memory you need for the CSRMatrix that results after converting it. So that we have some numbers. Is it 2x less, 10x less, 100x less? I have no clue.
solin July 27, 2010 | link | edit | delete
People say that CooMatrix can easily take 20x more.
certik July 27, 2010 | link | edit | delete
20x would be quite a lot. Let's see.
In linear elasticity it is useful to see how the domain
would actually deform based on computed displacements.
This is done in such a way that displacements are
multiplied with a sufficiently large scaling factor (say
104) and added to all mesh vertices during solution
output. We have this functionality in H2D and in 3D
it will be really cool.
ondrej@crow:~/repos/hermes/hermes3d/examples(master)$ make [ 84%] Built target hermes3d-debug [ 88%] Building CXX object examples/elastostatics/CMakeFiles/elastostatics.dir/main.cpp.o /home/ondrej/repos/hermes/hermes3d/examples/elastostatics/main.cpp: In function ‘int main(int, char**)’: /home/ondrej/repos/hermes/hermes3d/examples/elastostatics/main.cpp:143: error: no matching function for call to ‘LinearProblem::LinearProblem(WeakForm*)’ /home/ondrej/repos/hermes/hermes3d/src/linear_problem.h:34: note: candidates are: LinearProblem::LinearProblem(WeakForm*, Tuple) /home/ondrej/repos/hermes/hermes3d/src/linear_problem.h:32: note: LinearProblem::LinearProblem(const LinearProblem&) make[2]: *** [examples/elastostatics/CMakeFiles/elastostatics.dir/main.cpp.o] Error 1 make[1]: *** [examples/elastostatics/CMakeFiles/elastostatics.dir/all] Error 2 make: *** [all] Error 2
Unfortunately this was there from the beginning of this hermes repository, so it's hard to figure out which patch broke it.
after this patch was pushed in:
http://github.com/hpfem/hermes/commit/9cbd5612d3c6b1b2aae634d21a93c068322ed447
I am getting warnings in hermes_common:
/home/ondrej/repos/hermes/hermes2d/hermes_common/matrix.cpp: In member function ‘virtual void CooMatrix::print()’: /home/ondrej/repos/hermes/hermes2d/hermes_common/matrix.cpp:477: warning: format ‘%u’ expects type ‘unsigned int’, but argument 2 has type ‘long unsigned int’ /home/ondrej/repos/hermes/hermes2d/hermes_common/matrix.cpp:477: warning: format ‘%u’ expects type ‘unsigned int’, but argument 3 has type ‘long unsigned int’ /home/ondrej/repos/hermes/hermes2d/hermes_common/matrix.cpp:490: warning: format ‘%u’ expects type ‘unsigned int’, but argument 2 has type ‘long unsigned int’ /home/ondrej/repos/hermes/hermes2d/hermes_common/matrix.cpp:490: warning: format ‘%u’ expects type ‘unsigned int’, but argument 3 has type ‘long unsigned int’
if I revert that patch, I am not getting any warnings. For Pavel, it's exactly the opposite.
I suspect it's 32bit vs 64bit issue and it has to be resolved in a way, so that it works for everybody.
This was described here:
http://groups.google.com/group/hermes2d/browse_thread/thread/410d9d2c0f47e1fe/
Comments
certik July 29, 2010 | link | edit | delete
Here are step by step instructions how to merge all our 3 repos and retaining the git history:
http://help.github.com/subtree-merge/
Which I would highly suggest to use.
The test will be in Python, so I need to fix and enable Python tests.
Since phaml uses triangles, the first step is to have a C++
function, that (quickly) retrieves the fekete points on a reference
triangle.
Steps to do:
Find how fekete points are defined for triangles. Search this list
(Pavel mentioned something already), find the definitions, and so on.
I think that phaml doesn't use very high order, I think 10 or 20,
so it's ok to get the points up to 10 or 20. If you cannot find exact
numbers, I think there are some approximate fekete points available
somewhere
create a C++ function that retrieves all (x, y) pairs of fekete
points on a triangle for a given order
create a C++ function that transforms them to a physical triangle
from the reference domain
write a function, that uses Lagrange interpolation (?) or some
other method to evaluate the solution at any point in the physical
triangle, given the values in fekete poitns
Once we have 4) and 5), we can retrieve the solution from phaml and
plot it in femhub.
Pavel's comments:
- Find how fekete points are defined for triangles. Search this list
(Pavel mentioned something already), find the definitions, and so on.
See the end of the attached paper. We will need to transform
them to our reference triangle where our shape functions are defined,
see below.
I think that phaml doesn't use very high order, I think 10 or 20,
so it's ok to get the points up to 10 or 20. If you cannot find exact
numbers, I think there are some approximate fekete points available
somewherecreate a C++ function that retrieves all (x, y) pairs of fekete
points on a triangle for a given ordercreate a C++ function that transforms them to a physical triangle
from the reference domain
This we covered in the numerical methods II course.
- write a function, that uses Lagrange interpolation (?) or some
other method to evaluate the solution at any point in the physical
triangle, given the values in fekete poitns
The interpolation polynomials on Fekete points are not easy to construct
explicitly. Therefore I would just take some good basis, for example
the same we use in H2D on triangles, express the unknown polynomial
as a linear combination of these basis functions with unknown
coefficients, and calculate these coefficients from the fact that
we know the function values at the Fekete points. This yields a small
matrix problem per element that can be solved quickly.
Thanks for working on this!
Pavel
We should always prefer spaces over tabs. There are plenty of tabs in H3D, for instance, that we should convert.
We need to see whether this file is needed in H3D and
remove it if possible. The same file is temporarily in H2D
as well (it was copied because it was needed by matrix
solvers that have been imported from H3D to H2D), and
we should delete it as well.
David Andrs did some work in this direction already, but then he quit.
We need to finish this.
Each complex matrix problem CZ = F where C = Ai + B can be transformed into a (twice as large) real problem whose matrix is
|A -B}
{B A|
This is necessary for problems where part is real and part complex, such
as induction heating by time-harmonic currents etc.
Also remove copy_common and make sure things build. It should be enough to prepend .. into all paths referencing things from hermes_common.
I would like to get Python like stacktraces (filenames, line numbers, plus the line itself) in the Python format, whenever something happens in C++, like an exception is being raised, or segfault happens.
Comments
certik July 24, 2010 | link | edit | delete
I posted a solution here:
http://github.com/certik/cpp_stacktrace
$ ./compile $ ./b Obtained 6 stack frames. backtrace-symbols.c:371 show_backtrace() b.c:7 g() b.c:12 f() b.c:18 main() libc-start.c:252 __libc_start_main() start.S:116 _start()
It prints filenames and line numbers, as well as the name of the function. So that's all that is needed, but unfortunately it only compiles using gcc, not g++ so far. Hopefully it will not be difficult to fix.
certik July 25, 2010 | link | edit | delete
I fixed it, here is an example from hermes:
Traceback (most recent call last): File "/build/buildd/eglibc-2.10.1/csu/../sysdeps/x86_64/elf/start.S", line 113, in _start File "/build/buildd/eglibc-2.10.1/csu/libc-start.c", line 220, in __libc_start_main File "/home/ondrej/repos/hermes2d/benchmarks/bessel/main.cpp", line 140, in main rs.assemble(); File "/home/ondrej/repos/hermes2d/src/refsystem.cpp", line 178, in RefSystem::assemble(bool) if (this->linear == true) LinSystem::assemble(rhsonly); File "/home/ondrej/repos/hermes2d/src/linsystem.cpp", line 618, in LinSystem::assemble(bool) bi = eval_form(jfv, NULL, fu, fv, &refmap[n], &refmap[m]) * an->coef[j] * am->coef[i]; File "/home/ondrej/repos/hermes2d/src/linsystem.cpp", line 837, in LinSystem::eval_form(WeakForm::JacFormVol*, Solution**, PrecalcShapeset*, PrecalcShapeset*, RefMap*, RefMap*) show_backtrace(); File "/home/ondrej/repos/cpp_stacktrace/backtrace-symbols.c", line 420, in show_backtrace() size = backtrace (array, 10);
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.