Subject: Re: [FFC-dev] [DOLFIN-dev] long type for constants

From: Reza Farrahi Moghaddam <[email-masked]>
Date: Sat, 26 Apr 2008 07:45:02 -0700 (PDT)

Here are the two lines in the header file which cause that error.
I can manually bypass these errors by adding "LL" to the end of all integer values in these two line.
The header file is also attached.
Reza
    // Compute element tensor
    A[0] = 14629058957.1625*G0_0_0_0_0_0_0 - 2925812906.735*G1_0_0_0_0_0_0 - 558466236.0275*G2_0_0_0_0_0_0 - 14629058957.1625*G3_0_0_0_0_0_0 + 2925812906.735*G4_0_0_0_0_0_0 + 558466236.0275*G5_0_0_0_0_0_0 + 280363028.233182*G6_0_0_0_0 - 93454378.3687879*G7_0_0_0_0 - 8918383.04439399*G8_0_0_0_0 - 14629053380.65*G9_0_0_0_0_0_0 + 2925810676.13*G10_0_0_0_0_0_0 + 558462890.12*G11_0_0_0_0_0_0 + 14629053380.65*G12_0_0_0_0_0_0 - 2925810676.13*G13_0_0_0_0_0_0 - 558462890.12*G14_0_0_0_0_0_0 - 280362921.36*G15_0_0_0_0 + 93454307.1199999*G16_0_0_0_0 + 8918347.41999999*G17_0_0_0_0 + 995018.760969999*G18_0_0 - 177990266.82*G19_0_0_0_0 + 177990266.82*G20_0_0_0_0 + 1114248.1262*G21_0_0_0 - 530594.35*G22_0_0_0 - 583653.776199999*G23_0_0_0 + 132891660*G24_0_0_0_0_0 - 101329890.75*G25_0_0_0_0_0 - 134552805.75*G26_0_0_0_0_0 + 101329890.75*G27_0_0_0_0_0 + 1661145.75*G28_0_0_0_0_0 - 132891660*G29_0_0_0_0_0 + 134552805.75*G30_0_0_0_0_0 - 1661145.75*G31_0_0_0_0_0 -
 106.873182*G32_0_0_0_0 + 71.2487879999999*G33_0_0_0_0 + 35.624394*G34_0_0_0_0 - 5576.5125*G35_0_0_0_0_0_0 + 2230.605*G36_0_0_0_0_0_0 + 3345.9075*G37_0_0_0_0_0_0 + 5576.5125*G38_0_0_0_0_0_0 - 2230.605*G39_0_0_0_0_0_0 - 3345.9075*G40_0_0_0_0_0_0 - 11144779814.4*G41_0_0_0_0_0_0 + 213732223831*G42_0_0_0_0_0_0_0_0 - 174456373500*G43_0_0_0_0_0_0_0_0 - 30533174833*G44_0_0_0_0_0_0_0_0 - 8742675497.99999*G45_0_0_0_0_0_0_0_0 - 213732223831*G46_0_0_0_0_0_0_0_0 + 174456373500*G47_0_0_0_0_0_0_0_0 + 30533174833*G48_0_0_0_0_0_0_0_0 + 8742675497.99999*G49_0_0_0_0_0_0_0_0 + 2964340087.5*G50_0_0_0_0_0_0_0 - 468053712.5*G51_0_0_0_0_0_0_0 - 2496286375*G52_0_0_0_0_0_0_0 - 2964340087.5*G53_0_0_0_0_0_0_0 + 468053712.5*G54_0_0_0_0_0_0_0 + 2496286375*G55_0_0_0_0_0_0_0 + 11144779814.4*G56_0_0_0_0_0_0 - 3120357900*G57_0_0_0_0_0_0_0 + 520059650*G58_0_0_0_0_0_0_0 + 2600298250*G59_0_0_0_0_0_0_0 + 3120357900*G60_0_0_0_0_0_0_0 - 520059650*G61_0_0_0_0_0_0_0 -
 2600298250*G62_0_0_0_0_0_0_0 - 31561769.25*G63_0_0_0_0_0 + 33222915*G64_0_0_0_0_0 + 156017812.5*G65_0_0_0_0_0_0_0 - 52005937.5*G66_0_0_0_0_0_0_0 - 104011875*G67_0_0_0_0_0_0_0 - 156017812.5*G68_0_0_0_0_0_0_0 + 52005937.5*G69_0_0_0_0_0_0_0 + 104011875*G70_0_0_0_0_0_0_0 + 31561769.25*G71_0_0_0_0_0 - 33222915*G72_0_0_0_0_0;

and
   // Compute element tensor
    A[0] = -995018.760969999*G47_0_0_0 + 947545.037399999*G48_0_0_0 - 93454342.7443939*G49_0_0_0_0_0 + 88995133.4099999*G50_0_0_0_0_0 + 4459209.334394*G51_0_0_0_0_0 + 93454307.1199999*G52_0_0_0_0_0 - 88995133.4099999*G53_0_0_0_0_0 - 4459173.71*G54_0_0_0_0_0 - 557124.0631*G55_0_0_0_0 + 557124.0631*G56_0_0_0_0 + 93454342.7443939*G57_0_0_0_0_0 - 4459209.334394*G58_0_0_0_0_0 - 93454307.1199999*G59_0_0_0_0_0 + 4459173.71*G60_0_0_0_0_0 + 530594.35*G61_0_0_0_0 - 530594.35*G62_0_0_0_0 - 2925811791.4325*G63_0_0_0_0_0_0_0 + 2786194953.6*G64_0_0_0_0_0_0_0 + 139616837.8325*G65_0_0_0_0_0_0_0 + 2925810676.13*G66_0_0_0_0_0_0_0 - 2786194953.6*G67_0_0_0_0_0_0_0 - 139615722.53*G68_0_0_0_0_0_0_0 - 33222915*G69_0_0_0_0_0_0 + 33222915*G70_0_0_0_0_0_0 + 2925811791.4325*G71_0_0_0_0_0_0_0 - 139616837.8325*G72_0_0_0_0_0_0_0 - 2925810676.13*G73_0_0_0_0_0_0_0 + 139615722.53*G74_0_0_0_0_0_0_0 - 30533174833*G75_0_0_0_0_0_0_0_0_0 + 29076062250*G76_0_0_0_0_0_0_0_0_0 +
 1457112583*G77_0_0_0_0_0_0_0_0_0 + 30533174833*G78_0_0_0_0_0_0_0_0_0 - 29076062250*G79_0_0_0_0_0_0_0_0_0 - 1457112583*G80_0_0_0_0_0_0_0_0_0 - 494056681.25*G81_0_0_0_0_0_0_0_0 + 494056681.25*G82_0_0_0_0_0_0_0_0 + 520059650*G83_0_0_0_0_0_0_0_0 - 520059650*G84_0_0_0_0_0_0_0_0 - 26002968.75*G85_0_0_0_0_0_0_0_0 + 26002968.75*G86_0_0_0_0_0_0_0_0 + 1115.3025*G87_0_0_0_0_0_0_0 - 1115.3025*G88_0_0_0_0_0_0_0 + 35.624394*G89_0_0_0_0_0 - 35.624394*G90_0_0_0_0_0 + 47473.72357*G91_0_0_0 + 26529.7131*G92_0_0_0_0 - 26529.7131*G93_0_0_0_0;
----- Original Message ----
From: Anders Logg <[email-masked]>
To: [email-masked]; dolfin mailing list <[email-masked]>
Sent: Saturday, April 26, 2008 3:26:17 AM
Subject: Re: [DOLFIN-dev] [FFC-dev] long type for constants

Can you attach the relevant portions of the header file?

-- 
Anders

On Fri, Apr 25, 2008 at 02:50:59PM -0700, Reza Farrahi Moghaddam wrote:
> The problem with boost and enableDemos is resolved.
> 
> Now, I have a problem with compiled form file. The form file is attached. When
> linking the program, there are some errors about integer costants which are
> large for "long" type. The log is presented below.
> 
> Is it possible to change the type of constants from "long" to "long long"?
> 
>  
> 
> Reza
> 
>  
> 
> P.S. The errors will disappear when the last function "sigmma" is removed and a
> fixed value for sigmaa is used.
> 
>  
> 
> [rfarahi@alteran cpp]$ scons
> scons: Reading SConscript files ...
> scons: done reading SConscript files.
> scons: Building targets ...
> c++ -o main.o -c -Wall -pipe -ansi -g -O2 -fno-strict-aliasing -pthread -DDEBUG
> -DNDEBUG -DPACKAGE_VERSION=0.7.2 -DHAS_UMFPACK=1 -DHAS_GTS=1 -I/usr/local/
> include -I/usr/local/include/libxml2 -I/home/rfarahi/math/dolfin-hg/linux-opt/
> include -I/usr/local/lib/python2.5/site-packages/numpy/core/include -I/home/
> rfarahi/math/UMFPACK/Include -I/home/rfarahi/math/AMD/Include -I/home/rfarahi/
> math/UFconfig -I/usr/local/include/python2.5 -I/usr/include/boost-1_35 -I/usr/
> include/glib-2.0 -I/usr/lib/glib-2.0/include main.cpp
> In file included from main.cpp:31:
> NonlinearPoissonparam.h:5854: error: integer constant is too large for "long"
> type
> NonlinearPoissonparam.h:5854: error: integer constant is too large for "long"
> type
> NonlinearPoissonparam.h:5854: error: integer constant is too large for "long"
> type
> NonlinearPoissonparam.h:5854: error: integer constant is too large for "long"
> type
> NonlinearPoissonparam.h:5854: error: integer constant is too large for "long"
> type
> NonlinearPoissonparam.h:5854: error: integer constant is too large for "long"
> type
> NonlinearPoissonparam.h:5854: error: integer constant is too large for "long"
> type
> NonlinearPoissonparam.h:5854: error: integer constant is too large for "long"
> type
> NonlinearPoissonparam.h:5854: error: integer constant is too large for "long"
> type
> NonlinearPoissonparam.h:5854: error: integer constant is too large for "long"
> type
> NonlinearPoissonparam.h:5854: error: integer constant is too large for "long"
> type
> NonlinearPoissonparam.h:5854: error: integer constant is too large for "long"
> type
> NonlinearPoissonparam.h:5854: error: integer constant is too large for "long"
> type
> NonlinearPoissonparam.h:5854: error: integer constant is too large for "long"
> type
> NonlinearPoissonparam.h:5854: error: integer constant is too large for "long"
> type
> NonlinearPoissonparam.h:5854: error: integer constant is too large for "long"
> type
> NonlinearPoissonparam.h:5854: error: integer constant is too large for "long"
> type
> NonlinearPoissonparam.h:5854: error: integer constant is too large for "long"
> type
> NonlinearPoissonparam.h:12543: error: integer constant is too large for "long"
> type
> NonlinearPoissonparam.h:12543: error: integer constant is too large for "long"
> type
> NonlinearPoissonparam.h:12543: error: integer constant is too large for "long"
> type
> NonlinearPoissonparam.h:12543: error: integer constant is too large for "long"
> type
> NonlinearPoissonparam.h:12543: error: integer constant is too large for "long"
> type
> NonlinearPoissonparam.h:12543: error: integer constant is too large for "long"
> type
> NonlinearPoissonparam.h:12543: error: integer constant is too large for "long"
> type
> NonlinearPoissonparam.h:12543: error: integer constant is too large for "long"
> type
> scons: *** [main.o] Error 1
> scons: building terminated because of errors.
> 
> 
> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
> All new Yahoo! Mail - Get a sneak peak at messages with a handy reading pane.

> _______________________________________________
> FFC-dev mailing list
> [email-masked]
> http://www.fenics.org/mailman/listinfo/ffc-dev

_______________________________________________
DOLFIN-dev mailing list
[email-masked]
http://www.fenics.org/mailman/listinfo/dolfin-dev

      __________________________________________________________________
Looking for the perfect gift? Give the gift of Flickr! 

http://www.flickr.com/gift/

---

From: "Garth N. Wells" <[email-masked]>
Date: Sat, 26 Apr 2008 16:38:40 +0100

For very complex forms, try using the quadrature option. Kristian has 
recently committed some optimisations for quadrature which have improved 
the efficiency.

Garth

Reza Farrahi Moghaddam wrote:
>     A[0] = 14629058957.1625*G0_0_0_0_0_0_0 - 
> 2925812906.735*G1_0_0_0_0_0_0 - 558466236.0275*G2_0_0_0_0_0_0 - 
> 14629058957.1625*G3_0_0_0_0_0_0 + 2925812906.735*G4_0_0_0_0_0_0 + 
> 558466236.0275*G5_0_0_0_0_0_0 + 280363028.233182*G6_0_0_0_0 - 
> 93454378.3687879*G7_0_0_0_0 - 8918383.04439399*G8_0_0_0_0 - 
> 14629053380.65*G9_0_0_0_0_0_0 + 2925810676.13*G10_0_0_0_0_0_0 + 
> 558462890.12*G11_0_0_0_0_0_0 + 14629053380.65*G12_0_0_0_0_0_0 - 
> 2925810676.13*G13_0_0_0_0_0_0 - 558462890.12*G14_0_0_0_0_0_0 - 
> 280362921.36*G15_0_0_0_0 + 93454307.1199999*G16_0_0_0_0 + 
> 8918347.41999999*G17_0_0_0_0 + 995018.760969999*G18_0_0 - 
> 177990266.82*G19_0_0_0_0 + 177990266.82*G20_0_0_0_0 + 
> 1114248.1262*G21_0_0_0 - 530594.35*G22_0_0_0 - 
> 583653.776199999*G23_0_0_0 + 132891660*G24_0_0_0_0_0 - 
> 101329890.75*G25_0_0_0_0_0 - 134552805.75*G26_0_0_0_0_0 + 
> 101329890.75*G27_0_0_0_0_0 + 1661145.75*G28_0_0_0_0_0 - 
> 132891660*G29_0_0_0_0_0 + 134552805.75*G30_0_0_0_0_0 - 
> 1661145.75*G31_0_0_0_0_0 - 106.873182*G32_0_0_0_0 + 
> 71.2487879999999*G33_0_0_0_0 + 35.624394*G34_0_0_0_0 - 
> 5576.5125*G35_0_0_0_0_0_0 + 2230.605*G36_0_0_0_0_0_0 + 
> 3345.9075*G37_0_0_0_0_0_0 + 5576.5125*G38_0_0_0_0_0_0 - 
> 2230.605*G39_0_0_0_0_0_0 - 3345.9075*G40_0_0_0_0_0_0 - 
> 11144779814.4*G41_0_0_0_0_0_0 + 213732223831*G42_0_0_0_0_0_0_0_0 - 
> 174456373500*G43_0_0_0_0_0_0_0_0 - 30533174833*G44_0_0_0_0_0_0_0_0 - 
> 8742675497.99999*G45_0_0_0_0_0_0_0_0 - 213732223831*G46_0_0_0_0_0_0_0_0 
> + 174456373500*G47_0_0_0_0_0_0_0_0 + 30533174833*G48_0_0_0_0_0_0_0_0 + 
> 8742675497.99999*G49_0_0_0_0_0_0_0_0 + 2964340087.5*G50_0_0_0_0_0_0_0 - 
> 468053712.5*G51_0_0_0_0_0_0_0 - 2496286375*G52_0_0_0_0_0_0_0 - 
> 2964340087.5*G53_0_0_0_0_0_0_0 + 468053712.5*G54_0_0_0_0_0_0_0 + 
> 2496286375*G55_0_0_0_0_0_0_0 + 11144779814.4*G56_0_0_0_0_0_0 - 
> 3120357900*G57_0_0_0_0_0_0_0 + 520059650*G58_0_0_0_0_0_0_0 + 
> 2600298250*G59_0_0_0_0_0_0_0 + 3120357900*G60_0_0_0_0_0_0_0 - 
> 520059650*G61_0_0_0_0_0_0_0 - 2600298250*G62_0_0_0_0_0_0_0 - 
> 31561769.25*G63_0_0_0_0_0 + 33222915*G64_0_0_0_0_0 + 
> 156017812.5*G65_0_0_0_0_0_0_0 - 52005937.5*G66_0_0_0_0_0_0_0 - 
> 104011875*G67_0_0_0_0_0_0_0 - 156017812.5*G68_0_0_0_0_0_0_0 + 
> 52005937.5*G69_0_0_0_0_0_0_0 + 104011875*G70_0_0_0_0_0_0_0 + 
> 31561769.25*G71_0_0_0_0_0 - 33222915*G72_0_0_0_0_0;
> 
> and
>  
>     A[0] = -995018.760969999*G47_0_0_0 + 947545.037399999*G48_0_0_0 - 
> 93454342.7443939*G49_0_0_0_0_0 + 88995133.4099999*G50_0_0_0_0_0 + 
> 4459209.334394*G51_0_0_0_0_0 + 93454307.1199999*G52_0_0_0_0_0 - 
> 88995133.4099999*G53_0_0_0_0_0 - 4459173.71*G54_0_0_0_0_0 - 
> 557124.0631*G55_0_0_0_0 + 557124.0631*G56_0_0_0_0 + 
> 93454342.7443939*G57_0_0_0_0_0 - 4459209.334394*G58_0_0_0_0_0 - 
> 93454307.1199999*G59_0_0_0_0_0 + 4459173.71*G60_0_0_0_0_0 + 
> 530594.35*G61_0_0_0_0 - 530594.35*G62_0_0_0_0 - 
> 2925811791.4325*G63_0_0_0_0_0_0_0 + 2786194953.6*G64_0_0_0_0_0_0_0 + 
> 139616837.8325*G65_0_0_0_0_0_0_0 + 2925810676.13*G66_0_0_0_0_0_0_0 - 
> 2786194953.6*G67_0_0_0_0_0_0_0 - 139615722.53*G68_0_0_0_0_0_0_0 - 
> 33222915*G69_0_0_0_0_0_0 + 33222915*G70_0_0_0_0_0_0 + 
> 2925811791.4325*G71_0_0_0_0_0_0_0 - 139616837.8325*G72_0_0_0_0_0_0_0 - 
> 2925810676.13*G73_0_0_0_0_0_0_0 + 139615722.53*G74_0_0_0_0_0_0_0 - 
> 30533174833*G75_0_0_0_0_0_0_0_0_0 + 29076062250*G76_0_0_0_0_0_0_0_0_0 + 
> 1457112583*G77_0_0_0_0_0_0_0_0_0 + 30533174833*G78_0_0_0_0_0_0_0_0_0 - 
> 29076062250*G79_0_0_0_0_0_0_0_0_0 - 1457112583*G80_0_0_0_0_0_0_0_0_0 - 
> 494056681.25*G81_0_0_0_0_0_0_0_0 + 494056681.25*G82_0_0_0_0_0_0_0_0 + 
> 520059650*G83_0_0_0_0_0_0_0_0 - 520059650*G84_0_0_0_0_0_0_0_0 - 
> 26002968.75*G85_0_0_0_0_0_0_0_0 + 26002968.75*G86_0_0_0_0_0_0_0_0 + 
> 1115.3025*G87_0_0_0_0_0_0_0 - 1115.3025*G88_0_0_0_0_0_0_0 + 
> 35.624394*G89_0_0_0_0_0 - 35.624394*G90_0_0_0_0_0 + 
> 47473.72357*G91_0_0_0 + 26529.7131*G92_0_0_0_0 - 26529.7131*G93_0_0_0_0;
>  
>  > include -I/usr/local/include/libxml2 
> -I/home/rfarahi/math/dolfin-hg/linux-opt/
>  > [email-masked] <mailto:[email-masked]>
> [email-masked] <mailto:[email-masked]>
> ------------------------------------------------------------------------
> Ask a question on any topic and get answers from real people. *Go to 
> Yahoo! Answers.* <http://ca.answers.yahoo.com>
> 
> 
> ------------------------------------------------------------------------
>

---

From: Anders Logg <[email-masked]>
Date: Mon, 28 Apr 2008 09:38:30 +0200

> The header file is also attached.

There shouldn't really be any integer values in the generated code.

Can you try experimenting with changing lines 176-177 in

    src/ffc/compiler/format/ufcformat.py

in the FFC source code? The "floating point" format string controls
how floats are written to the generated code. Now, they are written as

    "%<n>g"

where <n> is the number of digits of precision. See if it works better
for you by changing from "g" to "e".

Then I can change in FFC.

-- 
Anders

>     A[0] = 14629058957.1625*G0_0_0_0_0_0_0 - 2925812906.735*G1_0_0_0_0_0_0 -
> 558466236.0275*G2_0_0_0_0_0_0 - 14629058957.1625*G3_0_0_0_0_0_0 +
> 2925812906.735*G4_0_0_0_0_0_0 + 558466236.0275*G5_0_0_0_0_0_0 +
> 280363028.233182*G6_0_0_0_0 - 93454378.3687879*G7_0_0_0_0 -
> 8918383.04439399*G8_0_0_0_0 - 14629053380.65*G9_0_0_0_0_0_0 +
> 2925810676.13*G10_0_0_0_0_0_0 + 558462890.12*G11_0_0_0_0_0_0 +
> 14629053380.65*G12_0_0_0_0_0_0 - 2925810676.13*G13_0_0_0_0_0_0 -
> 558462890.12*G14_0_0_0_0_0_0 - 280362921.36*G15_0_0_0_0 +
> 93454307.1199999*G16_0_0_0_0 + 8918347.41999999*G17_0_0_0_0 +
> 995018.760969999*G18_0_0 - 177990266.82*G19_0_0_0_0 + 177990266.82*G20_0_0_0_0
> + 1114248.1262*G21_0_0_0 - 530594.35*G22_0_0_0 - 583653.776199999*G23_0_0_0 +
> 132891660*G24_0_0_0_0_0 - 101329890.75*G25_0_0_0_0_0 -
> 134552805.75*G26_0_0_0_0_0 + 101329890.75*G27_0_0_0_0_0 +
> 1661145.75*G28_0_0_0_0_0 - 132891660*G29_0_0_0_0_0 + 134552805.75*G30_0_0_0_0_0
> - 1661145.75*G31_0_0_0_0_0 - 106.873182*G32_0_0_0_0 +
> 8742675497.99999*G45_0_0_0_0_0_0_0_0 - 213732223831*G46_0_0_0_0_0_0_0_0 +
> 174456373500*G47_0_0_0_0_0_0_0_0 + 30533174833*G48_0_0_0_0_0_0_0_0 +
> 35.624394*G89_0_0_0_0_0 - 35.624394*G90_0_0_0_0_0 + 47473.72357*G91_0_0_0 +
> 26529.7131*G92_0_0_0_0 - 26529.7131*G93_0_0_0_0;
>  

> # Copyright (C) 2005 Garth N. Wells.
> # Licensed under the GNU LGPL Version 2.1.
> #
> # The linearised bilinear form a(v, U) and linear form L(v) for
> # the nonlinear equation 
> #
> # Compile this form with FFC: ffc NonlinearPoisson.form.
> # u is the solution, delta u is a variation for liniearization, and u0 is the input 
> 
> element = FiniteElement("Discontinuous Lagrange", "triangle", 0)
> 
> # sigmaa=.02;
> 
> # ac = 15.41;bc = 55.0;cc = 49.21;dc = 30.75;ec = 0.;fc = 98.22;
> # ac became 1541.0 based on assumption that there is a parameter of value of 0.1 in the argument.
> 
> # dac = -1691.25;dbc = 0.7254;dcc = 5402.1;ddc = 945.563;dec = 6040.53;dfc = 9647.17;
> 
> # ac = 1541.0;
> # bc = 550.0;
> # cc = 49.21;
> ac = 154.10;
> bc = 55.00;
> cc = 4.921;
> dc = 3075.0;
> ec = 0.;
> fc = 98.22;
> 
> # dac = -169125.0;
> # dbc = 07.254;
> # dcc = 5402.1;
> dac = -16912.50;
> dbc = 0.7254;
> dcc = 540.21;
> ddc = 9455630.0;
> dec = 604053.0;
> dfc = 9647.17;
> 
> v = TestFunction(element)
> deltau = TrialFunction(element)
> u = Function(element)
> u0 = Function(element)
> ub = Function(element)
> ub0 = Function(element)
> sigmaa = Function(element)
> 
> 
> 
> a = dx*(deltau*(2*cc*(dfc + (u - ub)*(ddc*(u - ub)*(u - ub)*(5*u - ub - 4*ub0) + dec*(3*u - ub - 2*ub0))) + 
>     2*dfc*(fc + ec*(2*u - u0 - ub) + (u - ub)*(dc*(3*u - 2*u0 - ub) + ac*(3*u - ub - 2*ub0)) + bc*(2*u - ub - ub0)) + 
>     dcc*(2*fc + ec*(3*u - 2*ub - ub0) + 2*dc*(u - ub)*(2*u - ub - ub0))*(u - ub0) + 
>     dbc*(u - ub0)*(fc*(3*u - 2*ub - ub0) + (u - ub)*(dc*(u - ub)*(5*u - 2*ub - 3*ub0) + ec*(4*u - 2*(ub + ub0)))) + 
>     (u - ub)*(2*ddc*(u - ub)*(u - ub)*(fc*(5*u - 4*u0 - ub) + (u - ub)*(ec*(6*u - 5*u0 - ub) + 
>           (u - ub)*(dc*(7*u - 6*u0 - ub) + ac*(7*u - ub - 6*ub0)) + bc*(6*u - ub - 5*ub0))) + 
>       2*dec*(fc*(3*u - 2*u0 - ub) + (u - ub)*(ec*(4*u - 3*u0 - ub) + (u - ub)*(dc*(5*u - 4*u0 - ub) + ac*(5*u - ub - 4*ub0)) + 
>           bc*(4*u - ub - 3*ub0))) + dac*(u - ub0)*((u - ub)*(ec*(5*u - 2*ub - 3*ub0) + 2*dc*(u - ub)*(3*u - ub - 2*ub0)) + 
>         fc*(4*u - 2*(ub + ub0)))))*v*sigmaa*sigmaa + 
>   2*(2*dfc*(fc*(u - u0) + (u - ub)*(ec*(u - u0) + (u - ub)*(dc*(u - u0) + ac*(u - ub0)) + bc*(u - ub0))) + 
>     (u - ub)*((u - ub)*(2*dec*(fc*(u - u0) + (u - ub)*(ec*(u - u0) + (u - ub)*(dc*(u - u0) + ac*(u - ub0)) + bc*(u - ub0))) + 
>         2*ddc*(u - ub)*(u - ub)*(fc*(u - u0) + (u - ub)*(ec*(u - u0) + (u - ub)*(dc*(u - u0) + ac*(u - ub0)) + bc*(u - ub0))) + 
>         dac*(fc + (ec + dc*(u - ub))*(u - ub))*(u - ub0)*(u - ub0)) + dbc*(fc + (ec + dc*(u - ub))*(u - ub))*(u - ub0)*(u - ub0)) + 
>     2*cc*(dfc + (dec + ddc*(u - ub)*(u - ub))*(u - ub)*(u - ub))*(u - ub0) + dcc*(fc + (ec + dc*(u - ub))*(u - ub))*(u - ub0)*(u - ub0))*v*
>    dot(grad(deltau), grad(u)) + 2*(fc + (ec + dc*(u - ub))*(u - ub))*(dfc + (dec + ddc*(u - ub)*(u - ub))*(u - ub)*(u - ub))*sigmaa*sigmaa*
>    dot(grad(deltau), grad(v)) + deltau*((2*cc*(dfc + (u - ub)*(ddc*(u - ub)*(u - ub)*(5*u - ub - 4*ub0) + dec*(3*u - ub - 2*ub0))) + 
>       2*dfc*(fc + ec*(2*u - u0 - ub) + (u - ub)*(dc*(3*u - 2*u0 - ub) + ac*(3*u - ub - 2*ub0)) + bc*(2*u - ub - ub0)) + 
>       dcc*(2*fc + ec*(3*u - 2*ub - ub0) + 2*dc*(u - ub)*(2*u - ub - ub0))*(u - ub0) + 
>       dbc*(u - ub0)*(fc*(3*u - 2*ub - ub0) + (u - ub)*(dc*(u - ub)*(5*u - 2*ub - 3*ub0) + ec*(4*u - 2*(ub + ub0)))) + 
>       (u - ub)*(2*ddc*(u - ub)*(u - ub)*(fc*(5*u - 4*u0 - ub) + (u - ub)*(ec*(6*u - 5*u0 - ub) + 
>             (u - ub)*(dc*(7*u - 6*u0 - ub) + ac*(7*u - ub - 6*ub0)) + bc*(6*u - ub - 5*ub0))) + 
>         2*dec*(fc*(3*u - 2*u0 - ub) + (u - ub)*(ec*(4*u - 3*u0 - ub) + (u - ub)*(dc*(5*u - 4*u0 - ub) + 
>               ac*(5*u - ub - 4*ub0)) + bc*(4*u - ub - 3*ub0))) + dac*(u - ub0)*
>          ((u - ub)*(ec*(5*u - 2*ub - 3*ub0) + 2*dc*(u - ub)*(3*u - ub - 2*ub0)) + fc*(4*u - 2*(ub + ub0)))))*v*
>      dot(grad(u), grad(u)) + 2*(dfc*(ec + 2*dc*(u - ub)) + (dec*(2*fc + (3*ec + 4*dc*(u - ub))*(u - ub)) + 
>         ddc*(4*fc + (5*ec + 6*dc*(u - ub))*(u - ub))*(u - ub)*(u - ub))*(u - ub))*sigmaa*sigmaa*dot(grad(u), grad(v))))
> 
> 
> L = dx*(-1.0*((2*dfc*(fc*(u - u0) + (u - ub)*(ec*(u - u0) + (u - ub)*(dc*(u - u0) + ac*(u - ub0)) + bc*(u - ub0))) + 
>     (u - ub)*((u - ub)*(2*dec*(fc*(u - u0) + (u - ub)*(ec*(u - u0) + (u - ub)*(dc*(u - u0) + ac*(u - ub0)) + bc*(u - ub0))) + 
>         2*ddc*(u - ub)*(u - ub)*(fc*(u - u0) + (u - ub)*(ec*(u - u0) + (u - ub)*(dc*(u - u0) + ac*(u - ub0)) + bc*(u - ub0))) + 
>         dac*(fc + (ec + dc*(u - ub))*(u - ub))*(u - ub0)*(u - ub0)) + dbc*(fc + (ec + dc*(u - ub))*(u - ub))*(u - ub0)*(u - ub0)) + 
>     2*cc*(dfc + (dec + ddc*(u - ub)*(u - ub))*(u - ub)*(u - ub))*(u - ub0) + dcc*(fc + (ec + dc*(u - ub))*(u - ub))*(u - ub0)*(u - ub0))*v*
>    dot(grad(u), grad(u)) + 
>   sigmaa*sigmaa*((2*dfc*(fc*(u - u0) + (u - ub)*(ec*(u - u0) + (u - ub)*(dc*(u - u0) + ac*(u - ub0)) + bc*(u - ub0))) + 
>       (u - ub)*((u - ub)*(2*dec*(fc*(u - u0) + (u - ub)*(ec*(u - u0) + (u - ub)*(dc*(u - u0) + ac*(u - ub0)) + bc*(u - ub0))) + 
>           2*ddc*(u - ub)*(u - ub)*(fc*(u - u0) + (u - ub)*(ec*(u - u0) + (u - ub)*(dc*(u - u0) + ac*(u - ub0)) + bc*(u - ub0))) + 
>           dac*(fc + (ec + dc*(u - ub))*(u - ub))*(u - ub0)*(u - ub0)) + dbc*(fc + (ec + dc*(u - ub))*(u - ub))*(u - ub0)*(u - ub0)) + 
>       2*cc*(dfc + (dec + ddc*(u - ub)*(u - ub))*(u - ub)*(u - ub))*(u - ub0) + dcc*(fc + (ec + dc*(u - ub))*(u - ub))*(u - ub0)*(u - ub0))*v + 
>     2*(fc + (ec + dc*(u - ub))*(u - ub))*(dfc + (dec + ddc*(u - ub)*(u - ub))*(u - ub)*(u - ub))*dot(grad(u), grad(v)))))
>