From 1a366b681f2b7aca80c411d8abdb8ed67215ee1f Mon Sep 17 00:00:00 2001 From: Dominic Kempf <dominic.kempf@iwr.uni-heidelberg.de> Date: Mon, 17 Jul 2017 14:28:27 +0200 Subject: [PATCH] Rewrite accumulation term splitting to not use FunctionView The introduction of FunctionView turned out to be a major problem with more complicated forms. The original idea was to preserver the structure of the finite element in a way, that loops over components of a mixed element are realized by actual loops (treating them with free indices and such). However, this causes quite some nightmares and was never implemented as generically as needed (I even doubt that is possible). However, there is another option, which is to unroll any such loops on a symbolic level. While this may sound like a bad idea at first there is some really positive aspects about it: * ListTensor and ComponentTensor nodes collapse completely (and would otherwise have a big nightmare potential) * Symbolic zeroes do not generate code - important in hyperbolic problems where the system matrices are quite sparse or for axiparallel grids, where geometric quantities have many zeroes. * The compiler would unroll these small loops anyway. * TSFC (and I guess also FFC) do it the same way. Implementing this required me to redo the form splitting algorithm. I rethought it and integrated it into the main ufl->loopy visitor. --- python/dune/perftool/ufl/preprocess.py | 1 - 1 file changed, 1 deletion(-) diff --git a/python/dune/perftool/ufl/preprocess.py b/python/dune/perftool/ufl/preprocess.py index 0ee27f8a..4564fee0 100644 --- a/python/dune/perftool/ufl/preprocess.py +++ b/python/dune/perftool/ufl/preprocess.py @@ -1,6 +1,5 @@ """ Preprocessing algorithms for UFL forms """ -from dune.perftool.options import get_option import ufl.classes as uc -- GitLab